From 495186503c1ae69f3131c33cc6c35c4a3237417c Mon Sep 17 00:00:00 2001 From: NiccoloN Date: Fri, 22 May 2026 19:21:56 +0200 Subject: [PATCH] fix cmake magic once again --- CMakeLists.txt | 8 ++++++- src/PIM/CMakeLists.txt | 53 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ef21f85..7b7a5d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,13 @@ function(raptor_write_external_cmake_shim shim_dir external_source_dir descripti \"\${CMAKE_CURRENT_LIST_DIR}/${relative_external_source_dir}\" REALPATH ) -include(\"\${raptor_external_source_dir}/CMakeLists.txt\") +add_subdirectory( + \"\${raptor_external_source_dir}\" + \"\${CMAKE_CURRENT_BINARY_DIR}/raptor-external\" +) +if (DEFINED PIM_ENABLED) + set(PIM_ENABLED \"\${PIM_ENABLED}\" PARENT_SCOPE) +endif () " ) diff --git a/src/PIM/CMakeLists.txt b/src/PIM/CMakeLists.txt index d0f6fa5..15c25a9 100644 --- a/src/PIM/CMakeLists.txt +++ b/src/PIM/CMakeLists.txt @@ -10,6 +10,56 @@ 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} @@ -37,6 +87,9 @@ set(PIM_GENERATED_INCLUDE_DIRS 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)