diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2022-06-11 06:11:59 +0000 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2022-07-21 19:04:00 +0000 |
commit | 07b749800c5cd4105d49ab46be5f0a2079dd709a (patch) | |
tree | 7e8d383f0314d05ddb254035e680839f93b34a83 /lld | |
parent | a1ec0d8bdccab1d28e009375209965017c872d3d (diff) | |
download | llvm-07b749800c5cd4105d49ab46be5f0a2079dd709a.zip llvm-07b749800c5cd4105d49ab46be5f0a2079dd709a.tar.gz llvm-07b749800c5cd4105d49ab46be5f0a2079dd709a.tar.bz2 |
[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 d0e1c2a550ef348aae036d0fe78cab6f038c420c 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
Diffstat (limited to 'lld')
-rw-r--r-- | lld/CMakeLists.txt | 4 | ||||
-rw-r--r-- | lld/cmake/modules/AddLLD.cmake | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/lld/CMakeLists.txt b/lld/CMakeLists.txt index ec11de7..dcc6496 100644 --- a/lld/CMakeLists.txt +++ b/lld/CMakeLists.txt @@ -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}) diff --git a/lld/cmake/modules/AddLLD.cmake b/lld/cmake/modules/AddLLD.cmake index dd2898c..d3924f7 100644 --- a/lld/cmake/modules/AddLLD.cmake +++ b/lld/cmake/modules/AddLLD.cmake @@ -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() |