From 21dcc5cc7ee52eb4e2e48031153f9946bfc97650 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Fri, 19 Sep 2025 15:17:49 +0900 Subject: [PATCH 1/2] cmake: Avoid using if(TARGET x AND TARGET y) This appears to not work, and the documentation only has examples with a single target checked at a time. --- llvm/benchmarks/CMakeLists.txt | 36 ++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/llvm/benchmarks/CMakeLists.txt b/llvm/benchmarks/CMakeLists.txt index 1d9bf6b244935..3df123f4a4070 100644 --- a/llvm/benchmarks/CMakeLists.txt +++ b/llvm/benchmarks/CMakeLists.txt @@ -14,29 +14,31 @@ add_benchmark(SandboxIRBench SandboxIRBench.cpp PARTIAL_SOURCES_INTENDED) add_benchmark(RuntimeLibcallsBench RuntimeLibcalls.cpp PARTIAL_SOURCES_INTENDED) if(NOT LLVM_TOOL_LLVM_DRIVER_BUILD) - # TODO: Check if the tools aer in LLVM_DISTRIBUTION_COMPONENTS with + # TODO: Check if the tools are in LLVM_DISTRIBUTION_COMPONENTS with # the driver build. Also support the driver build by invoking the # tools through llvm-driver - get_host_tool_path(llvm-nm LLVM_NM llvm_nm_exe llvm_nm_target) get_host_tool_path(llc LLC llc_exe llc_target) - if(TARGET ${llc_target} AND TARGET ${llvm_nm_target}) - # Extract the list of symbols in a random utility as sample data. - set(SYMBOL_TEST_DATA_FILE "sample_symbol_list.txt") - set(SYMBOL_TEST_DATA_SOURCE_BINARY ${llc_exe}) + if(TARGET ${llc_target}) + get_host_tool_path(llvm-nm LLVM_NM llvm_nm_exe llvm_nm_target) + if(TARGET ${llvm_nm_target}) + # Extract the list of symbols in a random utility as sample data. + set(SYMBOL_TEST_DATA_FILE "sample_symbol_list.txt") + set(SYMBOL_TEST_DATA_SOURCE_BINARY ${llc_exe}) - add_custom_command(OUTPUT ${SYMBOL_TEST_DATA_FILE} - COMMAND ${llvm_nm_exe} --no-demangle --no-sort - --format=just-symbols - ${SYMBOL_TEST_DATA_SOURCE_BINARY} > ${SYMBOL_TEST_DATA_FILE} - DEPENDS ${llvm_nm_target} ${llc_target}) + add_custom_command(OUTPUT ${SYMBOL_TEST_DATA_FILE} + COMMAND ${llvm_nm_exe} --no-demangle --no-sort + --format=just-symbols + ${SYMBOL_TEST_DATA_SOURCE_BINARY} > ${SYMBOL_TEST_DATA_FILE} + DEPENDS ${llvm_nm_target} ${llc_target}) - add_custom_target(generate-runtime-libcalls-sample-symbol-list - DEPENDS ${SYMBOL_TEST_DATA_FILE}) + add_custom_target(generate-runtime-libcalls-sample-symbol-list + DEPENDS ${SYMBOL_TEST_DATA_FILE}) - add_dependencies(RuntimeLibcallsBench - generate-runtime-libcalls-sample-symbol-list) - target_compile_definitions(RuntimeLibcallsBench PRIVATE - -DSYMBOL_TEST_DATA_FILE="${CMAKE_CURRENT_BINARY_DIR}/${SYMBOL_TEST_DATA_FILE}") + add_dependencies(RuntimeLibcallsBench + generate-runtime-libcalls-sample-symbol-list) + target_compile_definitions(RuntimeLibcallsBench PRIVATE + -DSYMBOL_TEST_DATA_FILE="${CMAKE_CURRENT_BINARY_DIR}/${SYMBOL_TEST_DATA_FILE}") + endif() endif() endif() From f6a90e3cd5f789deeddc265aba4d96755ad3e2e1 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Fri, 19 Sep 2025 18:57:33 +0900 Subject: [PATCH 2/2] Just check executables instead --- llvm/benchmarks/CMakeLists.txt | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/llvm/benchmarks/CMakeLists.txt b/llvm/benchmarks/CMakeLists.txt index 3df123f4a4070..57d49ed153749 100644 --- a/llvm/benchmarks/CMakeLists.txt +++ b/llvm/benchmarks/CMakeLists.txt @@ -17,28 +17,26 @@ if(NOT LLVM_TOOL_LLVM_DRIVER_BUILD) # TODO: Check if the tools are in LLVM_DISTRIBUTION_COMPONENTS with # the driver build. Also support the driver build by invoking the # tools through llvm-driver + get_host_tool_path(llvm-nm LLVM_NM llvm_nm_exe llvm_nm_target) get_host_tool_path(llc LLC llc_exe llc_target) - if(TARGET ${llc_target}) - get_host_tool_path(llvm-nm LLVM_NM llvm_nm_exe llvm_nm_target) - if(TARGET ${llvm_nm_target}) - # Extract the list of symbols in a random utility as sample data. - set(SYMBOL_TEST_DATA_FILE "sample_symbol_list.txt") - set(SYMBOL_TEST_DATA_SOURCE_BINARY ${llc_exe}) + if(${llc_exe} AND ${llvm_nm_exe}) + # Extract the list of symbols in a random utility as sample data. + set(SYMBOL_TEST_DATA_FILE "sample_symbol_list.txt") + set(SYMBOL_TEST_DATA_SOURCE_BINARY ${llc_exe}) - add_custom_command(OUTPUT ${SYMBOL_TEST_DATA_FILE} - COMMAND ${llvm_nm_exe} --no-demangle --no-sort - --format=just-symbols - ${SYMBOL_TEST_DATA_SOURCE_BINARY} > ${SYMBOL_TEST_DATA_FILE} - DEPENDS ${llvm_nm_target} ${llc_target}) + add_custom_command(OUTPUT ${SYMBOL_TEST_DATA_FILE} + COMMAND ${llvm_nm_exe} --no-demangle --no-sort + --format=just-symbols + ${SYMBOL_TEST_DATA_SOURCE_BINARY} > ${SYMBOL_TEST_DATA_FILE} + DEPENDS ${llvm_nm_target} ${llc_target}) - add_custom_target(generate-runtime-libcalls-sample-symbol-list - DEPENDS ${SYMBOL_TEST_DATA_FILE}) + add_custom_target(generate-runtime-libcalls-sample-symbol-list + DEPENDS ${SYMBOL_TEST_DATA_FILE}) - add_dependencies(RuntimeLibcallsBench - generate-runtime-libcalls-sample-symbol-list) - target_compile_definitions(RuntimeLibcallsBench PRIVATE - -DSYMBOL_TEST_DATA_FILE="${CMAKE_CURRENT_BINARY_DIR}/${SYMBOL_TEST_DATA_FILE}") - endif() + add_dependencies(RuntimeLibcallsBench + generate-runtime-libcalls-sample-symbol-list) + target_compile_definitions(RuntimeLibcallsBench PRIVATE + -DSYMBOL_TEST_DATA_FILE="${CMAKE_CURRENT_BINARY_DIR}/${SYMBOL_TEST_DATA_FILE}") endif() endif()