Firstly, we we make an additional GNUInstallDirs-style variable. With
NixOS, for example, this is crucial as we want those to go in
`${dev}/lib/cmake` not `${out}/lib/cmake` as that would a cmake subdir
of the "regular" libdir, which is installed even when no one needs to do
any development.
Secondly, we make *Config.cmake robust to absolute package install
paths. We for NixOS will in fact be passing them absolute paths to make
the `${dev}` vs `${out}` distinction mentioned above, and the
GNUInstallDirs-style variables are suposed to support absolute paths in
general so it's good practice besides the NixOS use-case.
Thirdly, we make `${project}_INSTALL_PACKAGE_DIR` CACHE PATHs like other
install dirs are.
Reviewed By: sebastian-ne
Differential Revision: https://reviews.llvm.org/D117973
34 lines
1.5 KiB
CMake
34 lines
1.5 KiB
CMake
# Mimick `GNUInstallDirs` for one more install directory, the one where
|
|
# project's installed cmake subdirs go.
|
|
|
|
# These functions are internal functions vendored in from GNUInstallDirs (with
|
|
# new names), so we don't depend on unstable implementation details. They are
|
|
# also simplified to only handle the cases we need.
|
|
#
|
|
# The purpose would appear to be making `CACHE PATH` vars in a way that
|
|
# bypasses the legacy oddity that `-D<PATH>` gets canonicalized, despite
|
|
# non-canonical `CACHE PATH`s being perfectly valid.
|
|
|
|
macro(_GNUInstallPackageDir_cache_convert_to_path var description)
|
|
get_property(_GNUInstallPackageDir_cache_type CACHE ${var} PROPERTY TYPE)
|
|
if(_GNUInstallPackageDir_cache_type STREQUAL "UNINITIALIZED")
|
|
file(TO_CMAKE_PATH "${${var}}" _GNUInstallPackageDir_cmakepath)
|
|
set_property(CACHE ${var} PROPERTY TYPE PATH)
|
|
set_property(CACHE ${var} PROPERTY VALUE "${_GNUInstallPackageDir_cmakepath}")
|
|
set_property(CACHE ${var} PROPERTY HELPSTRING "${description}")
|
|
unset(_GNUInstallPackageDir_cmakepath)
|
|
endif()
|
|
unset(_GNUInstallPackageDir_cache_type)
|
|
endmacro()
|
|
|
|
# Create a cache variable with default for a path.
|
|
macro(_GNUInstallPackageDir_cache_path var default description)
|
|
if(NOT DEFINED ${var})
|
|
set(${var} "${default}" CACHE PATH "${description}")
|
|
endif()
|
|
_GNUInstallPackageDir_cache_convert_to_path("${var}" "${description}")
|
|
endmacro()
|
|
|
|
_GNUInstallPackageDir_cache_path(CMAKE_INSTALL_PACKAGEDIR "lib${LLVM_LIBDIR_SUFFIX}/cmake"
|
|
"Directories containing installed CMake modules (lib/cmake)")
|