From 4d1f9056ecd15caf65391860c60e9e4ce8147f68 Mon Sep 17 00:00:00 2001 From: Manuel Drehwald Date: Mon, 5 May 2025 01:12:48 +0200 Subject: [PATCH 1/2] cleanup cxx call --- enzyme/Enzyme/CMakeLists.txt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/enzyme/Enzyme/CMakeLists.txt b/enzyme/Enzyme/CMakeLists.txt index b3565f2e0f0..2ef2c9a5881 100644 --- a/enzyme/Enzyme/CMakeLists.txt +++ b/enzyme/Enzyme/CMakeLists.txt @@ -152,16 +152,23 @@ if (${ENZYME_EXTERNAL_SHARED_LIB}) # This would be the desired way to link against LLVM components, # however this function is bugged and does not work with `all`, see: # https://github.com/llvm/llvm-project/issues/46347 - #llvm_map_components_to_libnames(llvm_libs all) + #llvm_map_components_to_libnames(llvm_libraries Passes) # Therefore, manually invoke llvm-config + if (EXISTS "${LLVM_TOOLS_BINARY_DIR}/llvm-config") + message(STATUS "Using llvm-config from ${LLVM_TOOLS_BINARY_DIR}") + else() + message(SEND_ERROR "llvm-config not found in ${LLVM_TOOLS_BINARY_DIR}") + endif() execute_process(COMMAND ${LLVM_TOOLS_BINARY_DIR}/llvm-config --libs all OUTPUT_VARIABLE llvm_libraries) string(STRIP "${llvm_libraries}" llvm_libraries) # In theory, adding --libs should also add all the -l flags, # but it isn't picked up correctly by clang, so we call target_link_libraries - set_target_properties(Enzyme-${LLVM_VERSION_MAJOR} PROPERTIES - LINK_FLAGS "`${LLVM_TOOLS_BINARY_DIR}/llvm-config --ldflags`") - target_link_libraries(Enzyme-${LLVM_VERSION_MAJOR} ${llvm_libraries}) + execute_process(COMMAND ${LLVM_TOOLS_BINARY_DIR}/llvm-config --ldflags + OUTPUT_VARIABLE llvm_ldflags) + string(STRIP "${llvm_ldflags}" llvm_ldflags) + set_target_properties(Enzyme-${LLVM_VERSION_MAJOR} PROPERTIES LINK_FLAGS ${llvm_ldflags}) + target_link_libraries(Enzyme-${LLVM_VERSION_MAJOR} PRIVATE ${llvm_libraries}) endif() install(TARGETS Enzyme-${LLVM_VERSION_MAJOR} EXPORT EnzymeTargets From bfb04330d460e43e51476a998fd7dd7a7d014ddc Mon Sep 17 00:00:00 2001 From: Manuel Drehwald Date: Mon, 5 May 2025 01:22:39 +0200 Subject: [PATCH 2/2] fix test --- enzyme/Enzyme/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/enzyme/Enzyme/CMakeLists.txt b/enzyme/Enzyme/CMakeLists.txt index 2ef2c9a5881..f7c162998c3 100644 --- a/enzyme/Enzyme/CMakeLists.txt +++ b/enzyme/Enzyme/CMakeLists.txt @@ -162,13 +162,18 @@ if (${ENZYME_EXTERNAL_SHARED_LIB}) execute_process(COMMAND ${LLVM_TOOLS_BINARY_DIR}/llvm-config --libs all OUTPUT_VARIABLE llvm_libraries) string(STRIP "${llvm_libraries}" llvm_libraries) + message(STATUS "Linking against LLVM libraries: ${llvm_libraries}") # In theory, adding --libs should also add all the -l flags, # but it isn't picked up correctly by clang, so we call target_link_libraries execute_process(COMMAND ${LLVM_TOOLS_BINARY_DIR}/llvm-config --ldflags OUTPUT_VARIABLE llvm_ldflags) string(STRIP "${llvm_ldflags}" llvm_ldflags) + message(STATUS "Linking against LLVM ldflags: ${llvm_ldflags}") set_target_properties(Enzyme-${LLVM_VERSION_MAJOR} PROPERTIES LINK_FLAGS ${llvm_ldflags}) target_link_libraries(Enzyme-${LLVM_VERSION_MAJOR} PRIVATE ${llvm_libraries}) + + llvm_map_components_to_libnames(llvm_librariess Passes Support) + target_link_libraries(Enzyme-${LLVM_VERSION_MAJOR} PRIVATE ${llvm_librariess}) endif() install(TARGETS Enzyme-${LLVM_VERSION_MAJOR} EXPORT EnzymeTargets