[llvm] cmake: Avoid using if(TARGET x AND TARGET y) (PR #159707)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 19 03:00:05 PDT 2025
https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/159707
>From 21dcc5cc7ee52eb4e2e48031153f9946bfc97650 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
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 <Matthew.Arsenault at amd.com>
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()
More information about the llvm-commits
mailing list