forked from OSchip/llvm-project
[cmake] Don't export `LLVM_TOOLS_INSTALL_DIR` anymore
First of all, `LLVM_TOOLS_INSTALL_DIR` put there breaks our NixOS
builds, because `LLVM_TOOLS_INSTALL_DIR` defined the same as
`CMAKE_INSTALL_BINDIR` becomes an *absolute* path, and then when
downstream projects try to install there too this breaks because our
builds always install to fresh directories for isolation's sake.
Second of all, note that `LLVM_TOOLS_INSTALL_DIR` stands out against the
other specially crafted `LLVM_CONFIG_*` variables substituted in
`llvm/cmake/modules/LLVMConfig.cmake.in`.
@beanz added it in d0e1c2a550
to fix a
dangling reference in `AddLLVM`, but I am suspicious of how this
variable doesn't follow the pattern.
Those other ones are carefully made to be build-time vs install-time
variables depending on which `LLVMConfig.cmake` is being generated, are
carefully made relative as appropriate, etc. etc. For my NixOS use-case
they are also fine because they are never used as downstream install
variables, only for reading not writing.
To avoid the problems I face, and restore symmetry, I deleted the
exported and arranged to have many `${project}_TOOLS_INSTALL_DIR`s.
`AddLLVM` now instead expects each project to define its own, and they
do so based on `CMAKE_INSTALL_BINDIR`. `LLVMConfig` still exports
`LLVM_TOOLS_BINARY_DIR` which is the location for the tools defined in
the usual way, matching the other remaining exported variables.
For the `AddLLVM` changes, I tried to copy the existing pattern of
internal vs non-internal or for LLVM vs for downstream function/macro
names, but it would good to confirm I did that correctly.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D117977
This commit is contained in:
parent
fd3304ef85
commit
d5daa5c5b0
|
@ -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)
|
||||
|
|
|
@ -11,7 +11,7 @@ else()
|
|||
set(BOLT_DRIVER_DEPS "")
|
||||
endif()
|
||||
|
||||
add_llvm_tool(llvm-bolt
|
||||
add_bolt_tool(llvm-bolt
|
||||
llvm-bolt.cpp
|
||||
|
||||
DEPENDS
|
||||
|
@ -25,8 +25,8 @@ target_link_libraries(llvm-bolt
|
|||
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
|
||||
|
|
|
@ -5,7 +5,7 @@ set(LLVM_LINK_COMPONENTS
|
|||
Support
|
||||
)
|
||||
|
||||
add_llvm_tool(llvm-bolt-heatmap
|
||||
add_bolt_tool(llvm-bolt-heatmap
|
||||
heatmap.cpp
|
||||
)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
set(LLVM_LINK_COMPONENTS Support)
|
||||
|
||||
add_llvm_tool(merge-fdata
|
||||
add_bolt_tool(merge-fdata
|
||||
merge-fdata.cpp
|
||||
|
||||
DEPENDS
|
||||
|
|
|
@ -366,6 +366,10 @@ endif()
|
|||
# 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})
|
||||
|
||||
|
|
|
@ -173,9 +173,9 @@ macro(add_clang_tool name)
|
|||
endmacro()
|
||||
|
||||
macro(add_clang_symlink name dest)
|
||||
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)
|
||||
endmacro()
|
||||
|
||||
function(clang_target_link_libraries target type)
|
||||
|
|
|
@ -203,6 +203,11 @@ else()
|
|||
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)
|
||||
|
||||
|
|
|
@ -122,8 +122,8 @@ macro(add_flang_tool name)
|
|||
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()
|
||||
|
||||
|
|
|
@ -156,6 +156,10 @@ if(LLD_BUILT_STANDALONE)
|
|||
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})
|
||||
|
|
|
@ -60,7 +60,7 @@ macro(add_lld_tool name)
|
|||
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()
|
||||
|
|
|
@ -1275,7 +1275,7 @@ if(NOT LLVM_TOOLCHAIN_TOOLS)
|
|||
)
|
||||
endif()
|
||||
|
||||
macro(add_llvm_tool name)
|
||||
macro(llvm_add_tool project name)
|
||||
if( NOT LLVM_BUILD_TOOLS )
|
||||
set(EXCLUDE_FROM_ALL ON)
|
||||
endif()
|
||||
|
@ -1286,7 +1286,7 @@ macro(add_llvm_tool name)
|
|||
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)
|
||||
|
@ -1300,7 +1300,11 @@ macro(add_llvm_tool name)
|
|||
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
|
||||
endif()
|
||||
set_target_properties(${name} PROPERTIES FOLDER "Tools")
|
||||
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)
|
||||
|
@ -1999,7 +2003,7 @@ function(llvm_install_library_symlink name dest type)
|
|||
|
||||
endfunction()
|
||||
|
||||
function(llvm_install_symlink name dest)
|
||||
function(llvm_install_symlink project name dest)
|
||||
cmake_parse_arguments(ARG "ALWAYS_GENERATE" "COMPONENT" "" ${ARGN})
|
||||
foreach(path ${CMAKE_MODULE_PATH})
|
||||
if(EXISTS ${path}/LLVMInstallSymlink.cmake)
|
||||
|
@ -2022,7 +2026,7 @@ function(llvm_install_symlink name dest)
|
|||
set(full_dest ${dest}${CMAKE_EXECUTABLE_SUFFIX})
|
||||
|
||||
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)
|
||||
|
@ -2033,7 +2037,7 @@ function(llvm_install_symlink name dest)
|
|||
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)
|
||||
|
@ -2115,11 +2119,15 @@ function(add_llvm_tool_symlink link_name target)
|
|||
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()
|
||||
|
|
|
@ -131,7 +131,6 @@ list(REMOVE_DUPLICATES LLVM_CONFIG_LIBRARY_DIRS)
|
|||
|
||||
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)
|
||||
|
|
|
@ -121,7 +121,6 @@ set(LLVM_DEFINITIONS "@LLVM_DEFINITIONS@")
|
|||
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@)
|
||||
|
|
|
@ -196,7 +196,7 @@ macro(add_tablegen target project)
|
|||
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}
|
||||
|
|
|
@ -32,6 +32,10 @@ if(MLIR_STANDALONE_BUILD)
|
|||
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 )
|
||||
|
||||
|
|
|
@ -258,6 +258,10 @@ function(add_mlir_library name)
|
|||
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
|
||||
|
|
|
@ -5,7 +5,7 @@ set(LLVM_LINK_COMPONENTS
|
|||
native
|
||||
)
|
||||
|
||||
add_llvm_tool(mlir-cpu-runner
|
||||
add_mlir_tool(mlir-cpu-runner
|
||||
mlir-cpu-runner.cpp
|
||||
)
|
||||
llvm_update_compile_flags(mlir-cpu-runner)
|
||||
|
|
|
@ -4,7 +4,7 @@ set(LLVM_LINK_COMPONENTS
|
|||
)
|
||||
|
||||
# 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)
|
||||
|
|
|
@ -42,7 +42,7 @@ set(LIBS
|
|||
MLIRIR
|
||||
)
|
||||
|
||||
add_llvm_tool(mlir-lsp-server
|
||||
add_mlir_tool(mlir-lsp-server
|
||||
mlir-lsp-server.cpp
|
||||
|
||||
DEPENDS
|
||||
|
|
|
@ -64,7 +64,7 @@ add_mlir_library(MLIRMlirOptMain
|
|||
${LIBS}
|
||||
)
|
||||
|
||||
add_llvm_tool(mlir-opt
|
||||
add_mlir_tool(mlir-opt
|
||||
mlir-opt.cpp
|
||||
|
||||
DEPENDS
|
||||
|
|
|
@ -2,7 +2,7 @@ set(LIBS
|
|||
MLIRPdllLspServerLib
|
||||
)
|
||||
|
||||
add_llvm_tool(mlir-pdll-lsp-server
|
||||
add_mlir_tool(mlir-pdll-lsp-server
|
||||
mlir-pdll-lsp-server.cpp
|
||||
|
||||
DEPENDS
|
||||
|
|
|
@ -17,7 +17,7 @@ set(LIBS
|
|||
MLIRReduceLib
|
||||
)
|
||||
|
||||
add_llvm_tool(mlir-reduce
|
||||
add_mlir_tool(mlir-reduce
|
||||
mlir-reduce.cpp
|
||||
|
||||
DEPENDS
|
||||
|
|
|
@ -5,7 +5,7 @@ set(LLVM_LINK_COMPONENTS
|
|||
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
|
||||
)
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ set(LLVM_LINK_COMPONENTS
|
|||
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)
|
||||
|
|
|
@ -88,7 +88,7 @@ if (MLIR_ENABLE_VULKAN_RUNNER)
|
|||
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
|
||||
|
|
|
@ -2,7 +2,7 @@ set(LIBS
|
|||
TableGenLspServerLib
|
||||
)
|
||||
|
||||
add_llvm_tool(tblgen-lsp-server
|
||||
add_mlir_tool(tblgen-lsp-server
|
||||
tblgen-lsp-server.cpp
|
||||
|
||||
DEPENDS
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue