|
|
@@ -99,6 +99,23 @@
|
|
|
# `Filesystem Hierarchy Standard`_.
|
|
|
#
|
|
|
# .. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
|
|
|
+#
|
|
|
+# Macros
|
|
|
+# ^^^^^^
|
|
|
+#
|
|
|
+# .. command:: GNUInstallDirs_get_absolute_install_dir
|
|
|
+#
|
|
|
+# ::
|
|
|
+#
|
|
|
+# GNUInstallDirs_get_absolute_install_dir(absvar var)
|
|
|
+#
|
|
|
+# Set the given variable ``absvar`` to the absolute path contained
|
|
|
+# within the variable ``var``. This is to allow the computation of an
|
|
|
+# absolute path, accounting for all the special cases documented
|
|
|
+# 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.
|
|
|
|
|
|
#=============================================================================
|
|
|
# Copyright 2015 Alex Turbov <[email protected]>
|
|
|
@@ -300,55 +317,59 @@ mark_as_advanced(
|
|
|
CMAKE_INSTALL_DOCDIR
|
|
|
)
|
|
|
|
|
|
-# Result directories
|
|
|
-#
|
|
|
-foreach(dir
|
|
|
- BINDIR
|
|
|
- SBINDIR
|
|
|
- LIBEXECDIR
|
|
|
- SYSCONFDIR
|
|
|
- SHAREDSTATEDIR
|
|
|
- LOCALSTATEDIR
|
|
|
- LIBDIR
|
|
|
- INCLUDEDIR
|
|
|
- OLDINCLUDEDIR
|
|
|
- DATAROOTDIR
|
|
|
- DATADIR
|
|
|
- INFODIR
|
|
|
- LOCALEDIR
|
|
|
- MANDIR
|
|
|
- DOCDIR
|
|
|
- )
|
|
|
- if(NOT IS_ABSOLUTE "${CMAKE_INSTALL_${dir}}")
|
|
|
+macro(GNUInstallDirs_get_absolute_install_dir absvar var)
|
|
|
+ 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")
|
|
|
- set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}")
|
|
|
+ set(${absvar} "/${${var}}")
|
|
|
else()
|
|
|
- if (NOT "${CMAKE_INSTALL_${dir}}" MATCHES "^usr/")
|
|
|
- set(CMAKE_INSTALL_${dir} "usr/${CMAKE_INSTALL_${dir}}")
|
|
|
+ if (NOT "${${var}}" MATCHES "^usr/")
|
|
|
+ set(${var} "usr/${${var}}")
|
|
|
endif()
|
|
|
- set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}")
|
|
|
+ set(${absvar} "/${${var}}")
|
|
|
endif()
|
|
|
elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
|
|
|
if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR")
|
|
|
- set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}")
|
|
|
+ set(${absvar} "/${${var}}")
|
|
|
else()
|
|
|
- set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
|
|
|
+ set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
|
|
endif()
|
|
|
elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/.*")
|
|
|
if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR")
|
|
|
- set(CMAKE_INSTALL_FULL_${dir} "/${CMAKE_INSTALL_${dir}}${CMAKE_INSTALL_PREFIX}")
|
|
|
+ set(${absvar} "/${${var}}${CMAKE_INSTALL_PREFIX}")
|
|
|
else()
|
|
|
- set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
|
|
|
+ set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
|
|
endif()
|
|
|
else()
|
|
|
- set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
|
|
|
+ set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
|
|
endif()
|
|
|
else()
|
|
|
- set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
|
|
|
+ set(${absvar} "${${var}}")
|
|
|
endif()
|
|
|
+endmacro()
|
|
|
+
|
|
|
+# Result directories
|
|
|
+#
|
|
|
+foreach(dir
|
|
|
+ BINDIR
|
|
|
+ SBINDIR
|
|
|
+ LIBEXECDIR
|
|
|
+ SYSCONFDIR
|
|
|
+ SHAREDSTATEDIR
|
|
|
+ LOCALSTATEDIR
|
|
|
+ LIBDIR
|
|
|
+ INCLUDEDIR
|
|
|
+ OLDINCLUDEDIR
|
|
|
+ DATAROOTDIR
|
|
|
+ DATADIR
|
|
|
+ INFODIR
|
|
|
+ LOCALEDIR
|
|
|
+ MANDIR
|
|
|
+ DOCDIR
|
|
|
+ )
|
|
|
+ GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_${dir} CMAKE_INSTALL_${dir})
|
|
|
endforeach()
|