set(PIM_ENABLED 1 BOOL PARENT_SCOPE) set(PIM_SRC_ROOT "${CMAKE_CURRENT_SOURCE_DIR}") set(PIM_BIN_ROOT "${CMAKE_CURRENT_BINARY_DIR}") set(PIM_LIBRARY_PATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) set(PIM_RUNTIME_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) set(PIM_INCLUDE_PATH ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) set(PIM_ONNX_MLIR_SRC_ROOT ${ONNX_MLIR_SRC_ROOT}) set(PIM_ONNX_MLIR_BIN_ROOT ${ONNX_MLIR_BIN_ROOT}) set(PIM_GENERATED_PATH_SHIM_TARGET "") get_filename_component(PIM_BIN_ROOT_NAME "${PIM_BIN_ROOT}" NAME) if (PIM_BIN_ROOT_NAME STREQUAL "raptor-external") get_filename_component(PIM_GENERATED_PATH_SHIM_ROOT "${PIM_BIN_ROOT}" DIRECTORY) set(PIM_GENERATED_PATH_SHIM_OUTPUTS) function(add_pim_generated_path_shim relative_path) set(real_file "${PIM_BIN_ROOT}/${relative_path}") set(shim_file "${PIM_GENERATED_PATH_SHIM_ROOT}/${relative_path}") get_filename_component(shim_dir "${shim_file}" DIRECTORY) add_custom_command( OUTPUT "${shim_file}" DEPENDS "${real_file}" COMMAND "${CMAKE_COMMAND}" -E make_directory "${shim_dir}" COMMAND "${CMAKE_COMMAND}" -E rm -f "${shim_file}" COMMAND "${CMAKE_COMMAND}" -E create_symlink "${real_file}" "${shim_file}" VERBATIM ) list(APPEND PIM_GENERATED_PATH_SHIM_OUTPUTS "${shim_file}") set(PIM_GENERATED_PATH_SHIM_OUTPUTS "${PIM_GENERATED_PATH_SHIM_OUTPUTS}" PARENT_SCOPE) endfunction() file(GLOB_RECURSE pim_generated_path_scan_sources CONFIGURE_DEPENDS "${PIM_SRC_ROOT}/*.cpp" "${PIM_SRC_ROOT}/*.hpp" ) set(pim_generated_path_shims) foreach (source_file IN LISTS pim_generated_path_scan_sources) file(READ "${source_file}" source_contents) string(REGEX MATCHALL "#include \"src/Accelerators/PIM/[^\"]+\\.inc\"" source_inc_matches "${source_contents}") foreach (inc_match IN LISTS source_inc_matches) string(REGEX REPLACE "^#include \"src/Accelerators/PIM/(.+)\"$" "\\1" relative_inc_path "${inc_match}") list(APPEND pim_generated_path_shims "${relative_inc_path}") endforeach () endforeach () list(REMOVE_DUPLICATES pim_generated_path_shims) foreach (relative_inc_path IN LISTS pim_generated_path_shims) add_pim_generated_path_shim("${relative_inc_path}") endforeach () add_custom_target(OMPimGeneratedPathShims DEPENDS ${PIM_GENERATED_PATH_SHIM_OUTPUTS}) set(PIM_GENERATED_PATH_SHIM_TARGET OMPimGeneratedPathShims) endif () set(PIM_PUBLIC_INCLUDE_DIRS ${ONNX_MLIR_SRC_ROOT}/include ${ONNX_MLIR_SRC_ROOT} ${PIM_ONNX_MLIR_SRC_ROOT} ${PIM_SRC_ROOT} ${PIM_BIN_ROOT} ${PIM_INCLUDE_PATH} ) set(PIM_COMPILER_INCLUDE_DIRS ${PIM_SRC_ROOT} ${PIM_BIN_ROOT} ${PIM_ONNX_MLIR_SRC_ROOT} ${PIM_ONNX_MLIR_BIN_ROOT} ) set(PIM_ACCEL_INCLUDE_DIRS ${PIM_ONNX_MLIR_SRC_ROOT} ${PIM_ONNX_MLIR_BIN_ROOT} ) set(PIM_GENERATED_INCLUDE_DIRS ${PIM_INCLUDE_PATH} ) function(add_pim_library name) add_onnx_mlir_library(${name} STATIC ${ARGN}) if (PIM_GENERATED_PATH_SHIM_TARGET) add_dependencies(${name} ${PIM_GENERATED_PATH_SHIM_TARGET}) endif () endfunction() add_subdirectory(Dialect) add_subdirectory(Common) add_subdirectory(Pass) add_subdirectory(Compiler) add_subdirectory(Conversion) add_pim_library(OMPIMAccel PimAccelerator.cpp EXCLUDE_FROM_OM_LIBS INCLUDE_DIRS PUBLIC ${PIM_PUBLIC_INCLUDE_DIRS} LINK_LIBS PUBLIC MLIRSCFDialect MLIRSCFTransforms onnx OMAccelerator OMPimCompilerUtils OMPimPasses OMONNXOps SpatialOps PimOps OMONNXToSpatial OMSpatialToGraphviz OMSpatialToPim OMPimCommon OMPimBufferization OMPimStaticMemoryCoalescing MLIRTensorInferTypeOpInterfaceImpl )