mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-16 14:08:35 +08:00
GNUInstallDirs: Factor out helper for special absolute path logic
Factor out part of `GNUInstallDirs_get_absolute_install_dir` into a dedicated `_GNUInstallDirs_special_absolute` helper. Signed-off-by: Cristian Le <git@lecris.dev>
This commit is contained in:
@@ -263,6 +263,20 @@ function(_GNUInstallDirs_get_system_type_for_install out_var)
|
|||||||
return(PROPAGATE ${out_var})
|
return(PROPAGATE ${out_var})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# Special handler for `/`, `/usr`, `/opt/...` install prefixes
|
||||||
|
# Used for SYSCONFDIR, LOCALSTATEDIR and RUNSTATEDIR paths
|
||||||
|
function(_GNUInstallDirs_special_absolute out_var original_path install_prefix)
|
||||||
|
set(${out_var} "${original_path}")
|
||||||
|
|
||||||
|
if(install_prefix MATCHES "^/usr/?$")
|
||||||
|
set(${out_var} "/${original_path}")
|
||||||
|
elseif(install_prefix MATCHES "^/opt/" AND NOT install_prefix MATCHES "^/opt/homebrew/")
|
||||||
|
set(${out_var} "/${original_path}/${install_prefix}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
return(PROPAGATE ${out_var})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# Installation directories
|
# Installation directories
|
||||||
#
|
#
|
||||||
|
|
||||||
@@ -449,27 +463,23 @@ macro(GNUInstallDirs_get_absolute_install_dir absvar var)
|
|||||||
# - CMAKE_INSTALL_PREFIX == /
|
# - CMAKE_INSTALL_PREFIX == /
|
||||||
# - CMAKE_INSTALL_PREFIX == /usr
|
# - CMAKE_INSTALL_PREFIX == /usr
|
||||||
# - CMAKE_INSTALL_PREFIX == /opt/...
|
# - CMAKE_INSTALL_PREFIX == /opt/...
|
||||||
if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/")
|
if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
|
||||||
if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
|
_GNUInstallDirs_special_absolute(${absvar} "${${var}}" "${CMAKE_INSTALL_PREFIX}")
|
||||||
set(${absvar} "/${${var}}")
|
# If the CMAKE_INSTALL_PREFIX was not special, the output
|
||||||
else()
|
# is still not absolute, so use the default logic.
|
||||||
if (NOT "${${var}}" MATCHES "^usr/")
|
if(NOT IS_ABSOLUTE "${${absvar}}")
|
||||||
set(${var} "usr/${${var}}")
|
# Make sure we account for any trailing `/`
|
||||||
|
if(CMAKE_INSTALL_PREFIX MATCHES "/$")
|
||||||
|
set(${absvar} "${CMAKE_INSTALL_PREFIX}${${var}}")
|
||||||
|
else()
|
||||||
|
set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
||||||
endif()
|
endif()
|
||||||
set(${absvar} "/${${var}}")
|
|
||||||
endif()
|
endif()
|
||||||
elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
|
elseif("${CMAKE_INSTALL_PREFIX}" STREQUAL "/")
|
||||||
if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
|
if (NOT "${${var}}" MATCHES "^usr/")
|
||||||
set(${absvar} "/${${var}}")
|
set(${var} "usr/${${var}}")
|
||||||
else()
|
|
||||||
set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
|
||||||
endif()
|
|
||||||
elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/" AND NOT "${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/homebrew/")
|
|
||||||
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}}")
|
|
||||||
endif()
|
endif()
|
||||||
|
set(${absvar} "/${${var}}")
|
||||||
else()
|
else()
|
||||||
set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
||||||
endif()
|
endif()
|
||||||
|
Reference in New Issue
Block a user