Browse Source

GNUInstallDirs: Move defaults from arguments to variables

Signed-off-by: Cristian Le <[email protected]>
Cristian Le 8 months ago
parent
commit
18e1341950
1 changed files with 64 additions and 19 deletions
  1. 64 19
      Modules/GNUInstallDirs.cmake

+ 64 - 19
Modules/GNUInstallDirs.cmake

@@ -166,8 +166,9 @@ function(_GNUInstallDirs_cache_convert_to_path var description)
 endfunction()
 
 # Create a cache variable with default for a path.
-function(_GNUInstallDirs_cache_path var default description)
+function(_GNUInstallDirs_cache_path var description)
   set(cmake_install_var "CMAKE_INSTALL_${var}")
+  set(default "${_GNUInstallDirs_${var}_DEFAULT}")
   set(full_description "${description}")
   if(NOT DEFINED ${cmake_install_var})
     set(${cmake_install_var} "${default}" CACHE PATH "${full_description}")
@@ -178,8 +179,9 @@ endfunction()
 # Create a cache variable with not default for a path, with a fallback
 # when unset; used for entries slaved to other entries such as
 # DATAROOTDIR.
-function(_GNUInstallDirs_cache_path_fallback var default description)
+function(_GNUInstallDirs_cache_path_fallback var description)
   set(cmake_install_var "CMAKE_INSTALL_${var}")
+  set(default "${_GNUInstallDirs_${var}_DEFAULT}")
   if(NOT ${cmake_install_var})
     set(${cmake_install_var} "" CACHE PATH "${description}")
     set(${cmake_install_var} "${default}")
@@ -191,6 +193,18 @@ endfunction()
 # Installation directories
 #
 
+# Set the standard default values before any special handling
+set(_GNUInstallDirs_BINDIR_DEFAULT "bin")
+set(_GNUInstallDirs_SBINDIR_DEFAULT "sbin")
+set(_GNUInstallDirs_LIBEXECDIR_DEFAULT "libexec")
+set(_GNUInstallDirs_SYSCONFDIR_DEFAULT "etc")
+set(_GNUInstallDirs_SHAREDSTATEDIR_DEFAULT "com")
+set(_GNUInstallDirs_LOCALSTATEDIR_DEFAULT "var")
+set(_GNUInstallDirs_LIBDIR_DEFAULT "lib")
+set(_GNUInstallDirs_INCLUDEDIR_DEFAULT "include")
+set(_GNUInstallDirs_OLDINCLUDEDIR_DEFAULT "/usr/include")
+set(_GNUInstallDirs_DATAROOTDIR_DEFAULT "share")
+
 # We check if the variable was manually set and not cached, in order to
 # allow projects to set the values as normal variables before including
 # GNUInstallDirs to avoid having the entries cached or user-editable. It
@@ -307,24 +321,24 @@ set(_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE IN
 unset(_libdir_set)
 unset(__LAST_LIBDIR_DEFAULT)
 
-_GNUInstallDirs_cache_path(BINDIR "bin"
+_GNUInstallDirs_cache_path(BINDIR
   "User executables (bin)")
-_GNUInstallDirs_cache_path(SBINDIR "sbin"
+_GNUInstallDirs_cache_path(SBINDIR
   "System admin executables (sbin)")
-_GNUInstallDirs_cache_path(LIBEXECDIR "libexec"
+_GNUInstallDirs_cache_path(LIBEXECDIR
   "Program executables (libexec)")
-_GNUInstallDirs_cache_path(SYSCONFDIR "etc"
+_GNUInstallDirs_cache_path(SYSCONFDIR
   "Read-only single-machine data (etc)")
-_GNUInstallDirs_cache_path(SHAREDSTATEDIR "com"
+_GNUInstallDirs_cache_path(SHAREDSTATEDIR
   "Modifiable architecture-independent data (com)")
-_GNUInstallDirs_cache_path(LOCALSTATEDIR "var"
+_GNUInstallDirs_cache_path(LOCALSTATEDIR
   "Modifiable single-machine data (var)")
 
-_GNUInstallDirs_cache_path(INCLUDEDIR "include"
+_GNUInstallDirs_cache_path(INCLUDEDIR
   "C header files (include)")
-_GNUInstallDirs_cache_path(OLDINCLUDEDIR "/usr/include"
+_GNUInstallDirs_cache_path(OLDINCLUDEDIR
   "C header files for non-gcc (/usr/include)")
-_GNUInstallDirs_cache_path(DATAROOTDIR "share"
+_GNUInstallDirs_cache_path(DATAROOTDIR
   "Read-only architecture-independent data root (share)")
 
 #-----------------------------------------------------------------------------
@@ -333,30 +347,61 @@ _GNUInstallDirs_cache_path(DATAROOTDIR "share"
 # not set explicitly.  This auto-updates the defaults as DATAROOTDIR changes.
 
 if(CMAKE_SYSTEM_NAME MATCHES "^(([^kF].*)?BSD|DragonFly)$")
-  _GNUInstallDirs_cache_path(INFODIR "info"
+  set(_GNUInstallDirs_INFODIR_DEFAULT "info")
+  _GNUInstallDirs_cache_path(INFODIR
     "Info documentation (info)")
 else()
-  _GNUInstallDirs_cache_path_fallback(INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info"
+  set(_GNUInstallDirs_INFODIR_DEFAULT "${CMAKE_INSTALL_DATAROOTDIR}/info")
+  _GNUInstallDirs_cache_path_fallback(INFODIR
     "Info documentation (DATAROOTDIR/info)")
 endif()
 
 if(CMAKE_SYSTEM_NAME MATCHES "^(([^k].*)?BSD|DragonFly)$" AND NOT CMAKE_SYSTEM_NAME MATCHES "^(FreeBSD)$")
-  _GNUInstallDirs_cache_path(MANDIR "man"
+  set(_GNUInstallDirs_MANDIR_DEFAULT "man")
+  _GNUInstallDirs_cache_path(MANDIR
     "Man documentation (man)")
 else()
-  _GNUInstallDirs_cache_path_fallback(MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man"
+  set(_GNUInstallDirs_MANDIR_DEFAULT "${CMAKE_INSTALL_DATAROOTDIR}/man")
+  _GNUInstallDirs_cache_path_fallback(MANDIR
     "Man documentation (DATAROOTDIR/man)")
 endif()
 
-_GNUInstallDirs_cache_path_fallback(DATADIR "${CMAKE_INSTALL_DATAROOTDIR}"
+set(_GNUInstallDirs_DATADIR_DEFAULT "${CMAKE_INSTALL_DATAROOTDIR}")
+set(_GNUInstallDirs_LOCALEDIR_DEFAULT "${CMAKE_INSTALL_DATAROOTDIR}/locale")
+set(_GNUInstallDirs_DOCDIR_DEFAULT "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
+set(_GNUInstallDirs_RUNSTATEDIR_DEFAULT "${CMAKE_INSTALL_LOCALSTATEDIR}/run")
+
+_GNUInstallDirs_cache_path_fallback(DATADIR
   "Read-only architecture-independent data (DATAROOTDIR)")
-_GNUInstallDirs_cache_path_fallback(LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale"
+_GNUInstallDirs_cache_path_fallback(LOCALEDIR
   "Locale-dependent data (DATAROOTDIR/locale)")
-_GNUInstallDirs_cache_path_fallback(DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}"
+_GNUInstallDirs_cache_path_fallback(DOCDIR
   "Documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
-_GNUInstallDirs_cache_path_fallback(RUNSTATEDIR "${CMAKE_INSTALL_LOCALSTATEDIR}/run"
+_GNUInstallDirs_cache_path_fallback(RUNSTATEDIR
   "Run-time variable data (LOCALSTATEDIR/run)")
 
+# Unset all the defaults used
+foreach(dir IN ITEMS
+    BINDIR
+    SBINDIR
+    LIBEXECDIR
+    SYSCONFDIR
+    SHAREDSTATEDIR
+    LOCALSTATEDIR
+    LIBDIR
+    INCLUDEDIR
+    OLDINCLUDEDIR
+    DATAROOTDIR
+    DATADIR
+    INFODIR
+    MANDIR
+    LOCALEDIR
+    DOCDIR
+    RUNSTATEDIR
+)
+  unset(_GNUInstallDirs_${dir}_DEFAULT)
+endforeach()
+
 #-----------------------------------------------------------------------------
 
 mark_as_advanced(