mirror of
https://github.com/Kitware/CMake.git
synced 2026-03-11 12:00:48 -05:00
Merge topic 'GNUInstallDirs-dir'
a61007b3b0Tests: Add RunCMake.GNUInstallDirs case for get_absolute_install_dir229b5ee994GNUInstallDirs: Add dir argument to GNUInstallDirs_get_absolute_install_dir Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5450
This commit is contained in:
@@ -113,7 +113,7 @@ Macros
|
||||
|
||||
::
|
||||
|
||||
GNUInstallDirs_get_absolute_install_dir(absvar var)
|
||||
GNUInstallDirs_get_absolute_install_dir(absvar var dirname)
|
||||
|
||||
Set the given variable ``absvar`` to the absolute path contained
|
||||
within the variable ``var``. This is to allow the computation of an
|
||||
@@ -121,7 +121,8 @@ Macros
|
||||
above. While this macro is used to compute the various
|
||||
``CMAKE_INSTALL_FULL_<dir>`` variables, it is exposed publicly to
|
||||
allow users who create additional path variables to also compute
|
||||
absolute paths where necessary, using the same logic.
|
||||
absolute paths where necessary, using the same logic. ``dirname`` is
|
||||
the directory name to get, e.g. ``BINDIR``.
|
||||
#]=======================================================================]
|
||||
|
||||
cmake_policy(PUSH)
|
||||
@@ -334,13 +335,25 @@ mark_as_advanced(
|
||||
)
|
||||
|
||||
macro(GNUInstallDirs_get_absolute_install_dir absvar var)
|
||||
set(GGAID_extra_args ${ARGN})
|
||||
list(LENGTH GGAID_extra_args GGAID_extra_arg_count)
|
||||
if(GGAID_extra_arg_count GREATER 0)
|
||||
list(GET GGAID_extra_args 0 GGAID_dir)
|
||||
else()
|
||||
# Historical behaviour: use ${dir} from caller's scope
|
||||
set(GGAID_dir "${dir}")
|
||||
message(AUTHOR_WARNING
|
||||
"GNUInstallDirs_get_absolute_install_dir called without third argument. "
|
||||
"Using \${dir} from the caller's scope for compatibility with CMake 3.19 and below.")
|
||||
endif()
|
||||
|
||||
if(NOT IS_ABSOLUTE "${${var}}")
|
||||
# Handle special cases:
|
||||
# - CMAKE_INSTALL_PREFIX == /
|
||||
# - CMAKE_INSTALL_PREFIX == /usr
|
||||
# - CMAKE_INSTALL_PREFIX == /opt/...
|
||||
if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/")
|
||||
if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR")
|
||||
if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
|
||||
set(${absvar} "/${${var}}")
|
||||
else()
|
||||
if (NOT "${${var}}" MATCHES "^usr/")
|
||||
@@ -349,13 +362,13 @@ macro(GNUInstallDirs_get_absolute_install_dir absvar var)
|
||||
set(${absvar} "/${${var}}")
|
||||
endif()
|
||||
elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
|
||||
if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR")
|
||||
if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
|
||||
set(${absvar} "/${${var}}")
|
||||
else()
|
||||
set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
||||
endif()
|
||||
elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/.*")
|
||||
if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR")
|
||||
if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
|
||||
set(${absvar} "/${${var}}${CMAKE_INSTALL_PREFIX}")
|
||||
else()
|
||||
set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
||||
@@ -366,6 +379,10 @@ macro(GNUInstallDirs_get_absolute_install_dir absvar var)
|
||||
else()
|
||||
set(${absvar} "${${var}}")
|
||||
endif()
|
||||
|
||||
unset(GGAID_dir)
|
||||
unset(GGAID_extra_arg_count)
|
||||
unset(GGAID_extra_args)
|
||||
endmacro()
|
||||
|
||||
# Result directories
|
||||
@@ -388,7 +405,7 @@ foreach(dir
|
||||
MANDIR
|
||||
DOCDIR
|
||||
)
|
||||
GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_${dir} CMAKE_INSTALL_${dir})
|
||||
GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_${dir} CMAKE_INSTALL_${dir} ${dir})
|
||||
endforeach()
|
||||
|
||||
cmake_policy(POP)
|
||||
|
||||
12
Tests/RunCMake/GNUInstallDirs/GetAbs-stderr.txt
Normal file
12
Tests/RunCMake/GNUInstallDirs/GetAbs-stderr.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
^PROJ1_FULL_BINDIR='/usr/bin'
|
||||
CMake Warning \(dev\) at [^
|
||||
]*/Modules/GNUInstallDirs.cmake:[0-9]+ \(message\):
|
||||
GNUInstallDirs_get_absolute_install_dir called without third argument.
|
||||
Using \${dir} from the caller's scope for compatibility with CMake 3.19 and
|
||||
below.
|
||||
Call Stack \(most recent call first\):
|
||||
GetAbs.cmake:10 \(GNUInstallDirs_get_absolute_install_dir\)
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||
+
|
||||
PROJ2_FULL_BINDIR='/usr/bin'$
|
||||
11
Tests/RunCMake/GNUInstallDirs/GetAbs.cmake
Normal file
11
Tests/RunCMake/GNUInstallDirs/GetAbs.cmake
Normal file
@@ -0,0 +1,11 @@
|
||||
set(CMAKE_SIZEOF_VOID_P 8)
|
||||
set(CMAKE_LIBRARY_ARCHITECTURE "arch")
|
||||
set(CMAKE_INSTALL_PREFIX /usr)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
GNUInstallDirs_get_absolute_install_dir(PROJ1_FULL_BINDIR CMAKE_INSTALL_BINDIR BINDIR)
|
||||
message("PROJ1_FULL_BINDIR='${PROJ1_FULL_BINDIR}'")
|
||||
|
||||
set(dir BINDIR)
|
||||
GNUInstallDirs_get_absolute_install_dir(PROJ2_FULL_BINDIR CMAKE_INSTALL_BINDIR)
|
||||
message("PROJ2_FULL_BINDIR='${PROJ2_FULL_BINDIR}'")
|
||||
@@ -21,4 +21,5 @@ foreach(case
|
||||
unset(RunCMake-stderr-file)
|
||||
endforeach()
|
||||
|
||||
run_cmake(GetAbs)
|
||||
run_cmake(NoSystem)
|
||||
|
||||
Reference in New Issue
Block a user