cmake: Allow overriding SYSCONFDIR for CMake build on unix.
authorAmbroz Bizjak <abizjak.pro@gmail.com>
Tue, 25 Jun 2019 08:53:21 +0000 (10:53 +0200)
committerLenny Komow <lenny@lunarg.com>
Tue, 2 Jul 2019 19:55:00 +0000 (13:55 -0600)
This adds a new CMake option SYSCONFDIR. If SYSCONFDIR is specified then it will be used via the SYSCONFDIR define, and /etc will not be automatically added via EXTRASYSCONFDIR. If SYSCONFDIR is not specified then the old logic will be used (CMAKE_INSTALL_FULL_SYSCONFDIR added via SYSCONFDIR, and /etc, if it's not the same, added via EXTRASYSCONFDIR).

CMakeLists.txt

index 9816a5a9780e828b4af05eff1befeb113af21497..07f3ab8d624e6de48e857cf803b436e2ef8edd99 100644 (file)
@@ -90,6 +90,12 @@ if(UNIX)
             STRING
             "Search path to use when XDG_DATA_DIRS is unset or empty or the current process is SUID/SGID. Default is freedesktop compliant."
         )
+    set(
+        SYSCONFDIR ""
+        CACHE
+            STRING
+            "System-wide search directory. If not set or empty, CMAKE_INSTALL_FULL_SYSCONFDIR and /etc are used."
+        )
 endif()
 
 if(UNIX AND NOT APPLE) # i.e.: Linux
@@ -185,11 +191,17 @@ set_target_properties(generate_helper_files PROPERTIES FOLDER ${LOADER_HELPER_FO
 if(UNIX)
     add_definitions(-DFALLBACK_CONFIG_DIRS="${FALLBACK_CONFIG_DIRS}")
     add_definitions(-DFALLBACK_DATA_DIRS="${FALLBACK_DATA_DIRS}")
-    add_definitions(-DSYSCONFDIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}")
 
-    # Make sure /etc is searched by the loader
-    if(NOT (CMAKE_INSTALL_FULL_SYSCONFDIR STREQUAL "/etc"))
-        add_definitions(-DEXTRASYSCONFDIR="/etc")
+    if(NOT (SYSCONFDIR STREQUAL ""))
+        # SYSCONFDIR is specified, use it and do not force /etc.
+        add_definitions(-DSYSCONFDIR="${SYSCONFDIR}")
+    else()
+        add_definitions(-DSYSCONFDIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}")
+
+        # Make sure /etc is searched by the loader
+        if(NOT (CMAKE_INSTALL_FULL_SYSCONFDIR STREQUAL "/etc"))
+            add_definitions(-DEXTRASYSCONFDIR="/etc")
+        endif()
     endif()
 endif()