diff --git a/bolt/tools/CMakeLists.txt b/bolt/tools/CMakeLists.txt --- a/bolt/tools/CMakeLists.txt +++ b/bolt/tools/CMakeLists.txt @@ -1,3 +1,17 @@ +set(BOLT_TOOLS_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH + "Path for binary subdirectory (defaults to '${CMAKE_INSTALL_BINDIR}')") +mark_as_advanced(BOLT_TOOLS_INSTALL_DIR) + +# Move these macros to AddBolt if such a CMake module is ever created. + +macro(add_bolt_tool name) + llvm_add_tool(BOLT ${ARGV}) +endmacro() + +macro(add_bolt_tool_symlink name) + llvm_add_tool_symlink(BOLT ${ARGV}) +endmacro() + add_subdirectory(driver) add_subdirectory(llvm-bolt-fuzzer) add_subdirectory(merge-fdata) diff --git a/bolt/tools/driver/CMakeLists.txt b/bolt/tools/driver/CMakeLists.txt --- a/bolt/tools/driver/CMakeLists.txt +++ b/bolt/tools/driver/CMakeLists.txt @@ -11,7 +11,7 @@ set(BOLT_DRIVER_DEPS "") endif() -add_llvm_tool(llvm-bolt +add_bolt_tool(llvm-bolt llvm-bolt.cpp DEPENDS @@ -25,8 +25,8 @@ LLVMBOLTUtils ) -add_llvm_tool_symlink(perf2bolt llvm-bolt) -add_llvm_tool_symlink(llvm-boltdiff llvm-bolt) +add_bolt_tool_symlink(perf2bolt llvm-bolt) +add_bolt_tool_symlink(llvm-boltdiff llvm-bolt) set(BOLT_DEPENDS llvm-bolt diff --git a/bolt/tools/heatmap/CMakeLists.txt b/bolt/tools/heatmap/CMakeLists.txt --- a/bolt/tools/heatmap/CMakeLists.txt +++ b/bolt/tools/heatmap/CMakeLists.txt @@ -5,7 +5,7 @@ Support ) -add_llvm_tool(llvm-bolt-heatmap +add_bolt_tool(llvm-bolt-heatmap heatmap.cpp ) diff --git a/bolt/tools/merge-fdata/CMakeLists.txt b/bolt/tools/merge-fdata/CMakeLists.txt --- a/bolt/tools/merge-fdata/CMakeLists.txt +++ b/bolt/tools/merge-fdata/CMakeLists.txt @@ -1,6 +1,6 @@ set(LLVM_LINK_COMPONENTS Support) -add_llvm_tool(merge-fdata +add_bolt_tool(merge-fdata merge-fdata.cpp DEPENDS diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -366,6 +366,10 @@ # The libdir suffix must exactly match whatever LLVM's configuration used. set(CLANG_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}") +set(CLANG_TOOLS_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH + "Path for binary subdirectory (defaults to '${CMAKE_INSTALL_BINDIR}')") +mark_as_advanced(CLANG_TOOLS_INSTALL_DIR) + set(CLANG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(CLANG_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake --- a/clang/cmake/modules/AddClang.cmake +++ b/clang/cmake/modules/AddClang.cmake @@ -184,9 +184,9 @@ if(LLVM_TOOL_LLVM_DRIVER_BUILD AND ${dest} IN_LIST LLVM_DRIVER_TOOLS) set_property(GLOBAL APPEND PROPERTY LLVM_DRIVER_TOOL_SYMLINKS ${name}) else() - add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE) + llvm_add_tool_symlink(CLANG ${name} ${dest} ALWAYS_GENERATE) # Always generate install targets - llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE) + llvm_install_symlink(CLANG ${name} ${dest} ALWAYS_GENERATE) endif() endmacro() diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -203,6 +203,11 @@ include_directories(SYSTEM ${MLIR_INCLUDE_DIR}) include_directories(SYSTEM ${MLIR_TABLEGEN_OUTPUT_DIR}) endif() + +set(FLANG_TOOLS_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH + "Path for binary subdirectory (defaults to '${CMAKE_INSTALL_BINDIR}')") +mark_as_advanced(FLANG_TOOLS_INSTALL_DIR) + set(FLANG_INTRINSIC_MODULES_DIR ${CMAKE_BINARY_DIR}/include/flang) set(FLANG_INCLUDE_DIR ${FLANG_BINARY_DIR}/include) diff --git a/flang/cmake/modules/AddFlang.cmake b/flang/cmake/modules/AddFlang.cmake --- a/flang/cmake/modules/AddFlang.cmake +++ b/flang/cmake/modules/AddFlang.cmake @@ -122,8 +122,8 @@ endmacro() macro(add_flang_symlink name dest) - add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE) + llvm_add_tool_symlink(FLANG ${name} ${dest} ALWAYS_GENERATE) # Always generate install targets - llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE) + llvm_install_symlink(FLANG ${name} ${dest} ALWAYS_GENERATE) endmacro() diff --git a/lld/CMakeLists.txt b/lld/CMakeLists.txt --- a/lld/CMakeLists.txt +++ b/lld/CMakeLists.txt @@ -156,6 +156,10 @@ endif() endif() # standalone +set(LLD_TOOLS_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH + "Path for binary subdirectory (defaults to '${CMAKE_INSTALL_BINDIR}')") +mark_as_advanced(LLD_TOOLS_INSTALL_DIR) + set(LLD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(LLD_INCLUDE_DIR ${LLD_SOURCE_DIR}/include ) set(LLD_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/lld/cmake/modules/AddLLD.cmake b/lld/cmake/modules/AddLLD.cmake --- a/lld/cmake/modules/AddLLD.cmake +++ b/lld/cmake/modules/AddLLD.cmake @@ -60,7 +60,7 @@ endmacro() macro(add_lld_symlink name dest) - add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE) + llvm_add_tool_symlink(LLD ${name} ${dest} ALWAYS_GENERATE) # Always generate install targets - llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE) + llvm_install_symlink(LLD ${name} ${dest} ALWAYS_GENERATE) endmacro() diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -1281,7 +1281,7 @@ ) endif() -macro(add_llvm_tool name) +macro(llvm_add_tool project name) cmake_parse_arguments(ARG "DEPENDS;GENERATE_DRIVER" "" "" ${ARGN}) if( NOT LLVM_BUILD_TOOLS ) set(EXCLUDE_FROM_ALL ON) @@ -1297,7 +1297,7 @@ get_target_export_arg(${name} LLVM export_to_llvmexports) install(TARGETS ${name} ${export_to_llvmexports} - RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR} + RUNTIME DESTINATION ${${project}_TOOLS_INSTALL_DIR} COMPONENT ${name}) if (NOT LLVM_ENABLE_IDE) @@ -1312,7 +1312,11 @@ endif() set_target_properties(${name} PROPERTIES FOLDER "Tools") endif() -endmacro(add_llvm_tool name) +endmacro(llvm_add_tool project name) + +macro(add_llvm_tool name) + llvm_add_tool(LLVM ${ARGV}) +endmacro() macro(add_llvm_example name) @@ -2011,7 +2015,7 @@ endfunction() -function(llvm_install_symlink name dest) +function(llvm_install_symlink project name dest) get_property(LLVM_DRIVER_TOOLS GLOBAL PROPERTY LLVM_DRIVER_TOOLS) if(LLVM_TOOL_LLVM_DRIVER_BUILD AND ${dest} IN_LIST LLVM_DRIVER_TOOLS) set_property(GLOBAL APPEND PROPERTY LLVM_DRIVER_TOOL_SYMLINKS ${name}) @@ -2042,7 +2046,7 @@ endif() install(SCRIPT ${INSTALL_SYMLINK} - CODE "install_symlink(${full_name} ${full_dest} ${LLVM_TOOLS_INSTALL_DIR})" + CODE "install_symlink(${full_name} ${full_dest} ${${project}_TOOLS_INSTALL_DIR})" COMPONENT ${component}) if (NOT LLVM_ENABLE_IDE AND NOT ARG_ALWAYS_GENERATE) @@ -2053,7 +2057,7 @@ endif() endfunction() -function(add_llvm_tool_symlink link_name target) +function(llvm_add_tool_symlink project link_name target) cmake_parse_arguments(ARG "ALWAYS_GENERATE" "OUTPUT_DIR" "" ${ARGN}) get_property(LLVM_DRIVER_TOOLS GLOBAL PROPERTY LLVM_DRIVER_TOOLS) @@ -2135,11 +2139,15 @@ endif() if ((TOOL_IS_TOOLCHAIN OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY) AND LLVM_BUILD_TOOLS) - llvm_install_symlink(${link_name} ${target}) + llvm_install_symlink("${project}" ${link_name} ${target}) endif() endif() endfunction() +function(add_llvm_tool_symlink link_name target) + llvm_add_tool_symlink(LLVM ${ARGV}) +endfunction() + function(llvm_externalize_debuginfo name) if(NOT LLVM_EXTERNALIZE_DEBUGINFO) return() diff --git a/llvm/cmake/modules/CMakeLists.txt b/llvm/cmake/modules/CMakeLists.txt --- a/llvm/cmake/modules/CMakeLists.txt +++ b/llvm/cmake/modules/CMakeLists.txt @@ -131,7 +131,6 @@ set(LLVM_CONFIG_BINARY_DIR "\${LLVM_INSTALL_PREFIX}") extend_path(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}" "${LLVM_INSTALL_PACKAGE_DIR}") -extend_path(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}" "${LLVM_TOOLS_INSTALL_DIR}") # Generate a default location for lit if (LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS) diff --git a/llvm/cmake/modules/LLVMConfig.cmake.in b/llvm/cmake/modules/LLVMConfig.cmake.in --- a/llvm/cmake/modules/LLVMConfig.cmake.in +++ b/llvm/cmake/modules/LLVMConfig.cmake.in @@ -127,7 +127,6 @@ set(LLVM_BINARY_DIR "@LLVM_CONFIG_BINARY_DIR@") set(LLVM_CMAKE_DIR "@LLVM_CONFIG_CMAKE_DIR@") set(LLVM_TOOLS_BINARY_DIR "@LLVM_CONFIG_TOOLS_BINARY_DIR@") -set(LLVM_TOOLS_INSTALL_DIR "@LLVM_TOOLS_INSTALL_DIR@") set(LLVM_HAVE_OPT_VIEWER_MODULES @LLVM_HAVE_OPT_VIEWER_MODULES@) set(LLVM_CONFIGURATION_TYPES @CMAKE_CONFIGURATION_TYPES@) set(LLVM_ENABLE_SHARED_LIBS @BUILD_SHARED_LIBS@) diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake --- a/llvm/cmake/modules/TableGen.cmake +++ b/llvm/cmake/modules/TableGen.cmake @@ -196,7 +196,7 @@ install(TARGETS ${target} ${export_to_llvmexports} COMPONENT ${target} - RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR}) + RUNTIME DESTINATION "${${project}_TOOLS_INSTALL_DIR}") if(NOT LLVM_ENABLE_IDE) add_llvm_install_targets("install-${target}" DEPENDS ${target} diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt --- a/mlir/CMakeLists.txt +++ b/mlir/CMakeLists.txt @@ -32,6 +32,10 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin") endif() +set(MLIR_TOOLS_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH + "Path for binary subdirectory (defaults to '${CMAKE_INSTALL_BINDIR}')") +mark_as_advanced(MLIR_TOOLS_INSTALL_DIR) + set(MLIR_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR} ) set(MLIR_MAIN_INCLUDE_DIR ${MLIR_MAIN_SRC_DIR}/include ) diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake --- a/mlir/cmake/modules/AddMLIR.cmake +++ b/mlir/cmake/modules/AddMLIR.cmake @@ -351,6 +351,10 @@ endif() endfunction(add_mlir_library) +macro(add_mlir_tool name) + llvm_add_tool(MLIR ${ARGV}) +endmacro() + # Sets a variable with a transformed list of link libraries such individual # libraries will be dynamically excluded when evaluated on a final library # which defines an MLIR_AGGREGATE_EXCLUDE_LIBS which contains any of the diff --git a/mlir/tools/mlir-cpu-runner/CMakeLists.txt b/mlir/tools/mlir-cpu-runner/CMakeLists.txt --- a/mlir/tools/mlir-cpu-runner/CMakeLists.txt +++ b/mlir/tools/mlir-cpu-runner/CMakeLists.txt @@ -5,7 +5,7 @@ native ) -add_llvm_tool(mlir-cpu-runner +add_mlir_tool(mlir-cpu-runner mlir-cpu-runner.cpp ) llvm_update_compile_flags(mlir-cpu-runner) diff --git a/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt b/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt --- a/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt +++ b/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt @@ -4,7 +4,7 @@ ) # New mlir-linalg-ods-yaml-gen. -add_llvm_tool(mlir-linalg-ods-yaml-gen +add_mlir_tool(mlir-linalg-ods-yaml-gen mlir-linalg-ods-yaml-gen.cpp ) llvm_update_compile_flags(mlir-linalg-ods-yaml-gen) diff --git a/mlir/tools/mlir-lsp-server/CMakeLists.txt b/mlir/tools/mlir-lsp-server/CMakeLists.txt --- a/mlir/tools/mlir-lsp-server/CMakeLists.txt +++ b/mlir/tools/mlir-lsp-server/CMakeLists.txt @@ -42,7 +42,7 @@ MLIRIR ) -add_llvm_tool(mlir-lsp-server +add_mlir_tool(mlir-lsp-server mlir-lsp-server.cpp DEPENDS diff --git a/mlir/tools/mlir-opt/CMakeLists.txt b/mlir/tools/mlir-opt/CMakeLists.txt --- a/mlir/tools/mlir-opt/CMakeLists.txt +++ b/mlir/tools/mlir-opt/CMakeLists.txt @@ -65,7 +65,7 @@ ${LIBS} ) -add_llvm_tool(mlir-opt +add_mlir_tool(mlir-opt mlir-opt.cpp DEPENDS diff --git a/mlir/tools/mlir-pdll-lsp-server/CMakeLists.txt b/mlir/tools/mlir-pdll-lsp-server/CMakeLists.txt --- a/mlir/tools/mlir-pdll-lsp-server/CMakeLists.txt +++ b/mlir/tools/mlir-pdll-lsp-server/CMakeLists.txt @@ -2,7 +2,7 @@ MLIRPdllLspServerLib ) -add_llvm_tool(mlir-pdll-lsp-server +add_mlir_tool(mlir-pdll-lsp-server mlir-pdll-lsp-server.cpp DEPENDS diff --git a/mlir/tools/mlir-reduce/CMakeLists.txt b/mlir/tools/mlir-reduce/CMakeLists.txt --- a/mlir/tools/mlir-reduce/CMakeLists.txt +++ b/mlir/tools/mlir-reduce/CMakeLists.txt @@ -17,7 +17,7 @@ MLIRReduceLib ) -add_llvm_tool(mlir-reduce +add_mlir_tool(mlir-reduce mlir-reduce.cpp DEPENDS diff --git a/mlir/tools/mlir-spirv-cpu-runner/CMakeLists.txt b/mlir/tools/mlir-spirv-cpu-runner/CMakeLists.txt --- a/mlir/tools/mlir-spirv-cpu-runner/CMakeLists.txt +++ b/mlir/tools/mlir-spirv-cpu-runner/CMakeLists.txt @@ -5,7 +5,7 @@ if (MLIR_ENABLE_SPIRV_CPU_RUNNER) message(STATUS "Building SPIR-V CPU runner") - add_llvm_tool(mlir-spirv-cpu-runner + add_mlir_tool(mlir-spirv-cpu-runner mlir-spirv-cpu-runner.cpp ) diff --git a/mlir/tools/mlir-translate/CMakeLists.txt b/mlir/tools/mlir-translate/CMakeLists.txt --- a/mlir/tools/mlir-translate/CMakeLists.txt +++ b/mlir/tools/mlir-translate/CMakeLists.txt @@ -5,7 +5,7 @@ get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS) get_property(translation_libs GLOBAL PROPERTY MLIR_TRANSLATION_LIBS) -add_llvm_tool(mlir-translate +add_mlir_tool(mlir-translate mlir-translate.cpp ) llvm_update_compile_flags(mlir-translate) diff --git a/mlir/tools/mlir-vulkan-runner/CMakeLists.txt b/mlir/tools/mlir-vulkan-runner/CMakeLists.txt --- a/mlir/tools/mlir-vulkan-runner/CMakeLists.txt +++ b/mlir/tools/mlir-vulkan-runner/CMakeLists.txt @@ -88,7 +88,7 @@ LIST(APPEND targets_to_link "LLVM${t}") ENDFOREACH(t) - add_llvm_tool(mlir-vulkan-runner + add_mlir_tool(mlir-vulkan-runner mlir-vulkan-runner.cpp DEPENDS diff --git a/mlir/tools/tblgen-lsp-server/CMakeLists.txt b/mlir/tools/tblgen-lsp-server/CMakeLists.txt --- a/mlir/tools/tblgen-lsp-server/CMakeLists.txt +++ b/mlir/tools/tblgen-lsp-server/CMakeLists.txt @@ -2,7 +2,7 @@ TableGenLspServerLib ) -add_llvm_tool(tblgen-lsp-server +add_mlir_tool(tblgen-lsp-server tblgen-lsp-server.cpp DEPENDS diff --git a/openmp/libomptarget/tools/CMakeLists.txt b/openmp/libomptarget/tools/CMakeLists.txt --- a/openmp/libomptarget/tools/CMakeLists.txt +++ b/openmp/libomptarget/tools/CMakeLists.txt @@ -10,4 +10,18 @@ # ##===----------------------------------------------------------------------===## +set(OPENMP_TOOLS_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}" CACHE PATH + "Path for binary subdirectory (defaults to '${CMAKE_INSTALL_BINDIR}')") +mark_as_advanced(OPENMP_TOOLS_INSTALL_DIR) + +# Move these macros to AddOpenMP if such a CMake module is ever created. + +macro(add_openmp_tool name) + llvm_add_tool(OPENMP ${ARGV}) +endmacro() + +macro(add_openmp_tool_symlink name) + llvm_add_tool_symlink(OPENMP ${ARGV}) +endmacro() + add_subdirectory(deviceinfo) diff --git a/openmp/libomptarget/tools/deviceinfo/CMakeLists.txt b/openmp/libomptarget/tools/deviceinfo/CMakeLists.txt --- a/openmp/libomptarget/tools/deviceinfo/CMakeLists.txt +++ b/openmp/libomptarget/tools/deviceinfo/CMakeLists.txt @@ -12,7 +12,7 @@ libomptarget_say("Building the llvm-omp-device-info tool") -add_llvm_tool(llvm-omp-device-info llvm-omp-device-info.cpp) +add_openmp_tool(llvm-omp-device-info llvm-omp-device-info.cpp) llvm_update_compile_flags(llvm-omp-device-info)