loader: fix duplicate detection of manifests when CMAKE_INSTALL_PREFIX is defined
authorDor Askayo <dor.askayo@gmail.com>
Sat, 22 Oct 2016 19:20:29 +0000 (22:20 +0300)
committerKarl Schultz <karl@lunarg.com>
Thu, 27 Oct 2016 22:32:50 +0000 (16:32 -0600)
This commit fixes GH-1084. (see the issue for more details)

Note that this adds /usr/local/etc and /usr/local/share to the
loader's search path for drivers and layers.

Change-Id: I2cf502cc7d905225c8d38383ea6f856a4daed3ea
Signed-off-by: Dor Askayo <dor.askayo@gmail.com>
CMakeLists.txt
loader/vk_loader_platform.h

index 18c4051..34bbf9a 100644 (file)
@@ -273,12 +273,18 @@ set (PYTHON_CMD ${PYTHON_EXECUTABLE})
 
 if(NOT WIN32)
     include(GNUInstallDirs)
+
     add_definitions(-DSYSCONFDIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}")
     add_definitions(-DDATADIR="${CMAKE_INSTALL_FULL_DATADIR}")
-    if (CMAKE_INSTALL_PREFIX STREQUAL "/usr/local")
-    elseif (CMAKE_INSTALL_PREFIX STREQUAL "")
-    else()
-        add_definitions(-DLOCALPREFIX="${CMAKE_INSTALL_PREFIX}")
+
+    # Make sure /etc is searched by the loader
+    if (NOT (CMAKE_INSTALL_FULL_SYSCONFDIR STREQUAL "/etc"))
+        add_definitions(-DEXTRASYSCONFDIR="/etc")
+    endif()
+
+    # Make sure /usr/share is searched by the loader
+    if (NOT (CMAKE_INSTALL_FULL_DATADIR STREQUAL "/usr/share"))
+        add_definitions(-DEXTRADATADIR="/usr/share")
     endif()
 endif()
 
index 264a6a8..d13b645 100644 (file)
 #define VULKAN_ILAYERCONF_DIR "implicit_layer.d"
 #define VULKAN_LAYER_DIR      "layer"
 
-#if defined(LOCALPREFIX)
-#define LOCAL_DRIVERS_INFO                                                     \
-    SYSCONFDIR VULKAN_DIR VULKAN_ICDCONF_DIR ":"                               \
-    DATADIR    VULKAN_DIR VULKAN_ICDCONF_DIR ":"
-#define LOCAL_ELAYERS_INFO                                                     \
-    SYSCONFDIR VULKAN_DIR VULKAN_ELAYERCONF_DIR ":"                            \
-    DATADIR    VULKAN_DIR VULKAN_ELAYERCONF_DIR ":"
-#define LOCAL_ILAYERS_INFO                                                     \
-    SYSCONFDIR VULKAN_DIR VULKAN_ILAYERCONF_DIR ":"                            \
-    DATADIR    VULKAN_DIR VULKAN_ILAYERCONF_DIR ":"
+#if defined(EXTRASYSCONFDIR)
+#define EXTRA_DRIVERS_SYSCONFDIR_INFO ":"                                      \
+    EXTRASYSCONFDIR VULKAN_DIR VULKAN_ICDCONF_DIR
+#define EXTRA_ELAYERS_SYSCONFDIR_INFO ":"                                      \
+    EXTRASYSCONFDIR VULKAN_DIR VULKAN_ELAYERCONF_DIR
+#define EXTRA_ILAYERS_SYSCONFDIR_INFO ":"                                      \
+    EXTRASYSCONFDIR VULKAN_DIR VULKAN_ILAYERCONF_DIR
 #else
-#define LOCAL_DRIVERS_INFO
-#define LOCAL_ELAYERS_INFO
-#define LOCAL_ILAYERS_INFO
+#define EXTRA_DRIVERS_SYSCONFDIR_INFO
+#define EXTRA_ELAYERS_SYSCONFDIR_INFO
+#define EXTRA_ILAYERS_SYSCONFDIR_INFO
+#endif
+
+#if defined(EXTRADATADIR)
+#define EXTRA_DRIVERS_DATADIR_INFO ":"                                         \
+    EXTRADATADIR VULKAN_DIR VULKAN_ICDCONF_DIR
+#define EXTRA_ELAYERS_DATADIR_INFO ":"                                         \
+    EXTRADATADIR VULKAN_DIR VULKAN_ELAYERCONF_DIR
+#define EXTRA_ILAYERS_DATADIR_INFO ":"                                         \
+    EXTRADATADIR VULKAN_DIR VULKAN_ILAYERCONF_DIR
+#else
+#define EXTRA_DRIVERS_DATADIR_INFO
+#define EXTRA_ELAYERS_DATADIR_INFO
+#define EXTRA_ILAYERS_DATADIR_INFO
 #endif
 
 #define DEFAULT_VK_DRIVERS_INFO                                                \
-    LOCAL_DRIVERS_INFO                                                         \
-    SYSCONFDIR VULKAN_DIR VULKAN_ICDCONF_DIR ":"                               \
-    DATADIR    VULKAN_DIR VULKAN_ICDCONF_DIR
-#define DEFAULT_VK_DRIVERS_PATH ""
+    SYSCONFDIR   VULKAN_DIR VULKAN_ICDCONF_DIR ":"                             \
+    DATADIR      VULKAN_DIR VULKAN_ICDCONF_DIR                                 \
+    EXTRA_DRIVERS_SYSCONFDIR_INFO                                              \
+    EXTRA_DRIVERS_DATADIR_INFO
 #define DEFAULT_VK_ELAYERS_INFO                                                \
-    LOCAL_ELAYERS_INFO                                                         \
-    SYSCONFDIR VULKAN_DIR VULKAN_ELAYERCONF_DIR ":"                            \
-    DATADIR    VULKAN_DIR VULKAN_ELAYERCONF_DIR
+    SYSCONFDIR   VULKAN_DIR VULKAN_ELAYERCONF_DIR ":"                          \
+    DATADIR      VULKAN_DIR VULKAN_ELAYERCONF_DIR                              \
+    EXTRA_ELAYERS_SYSCONFDIR_INFO                                              \
+    EXTRA_ELAYERS_DATADIR_INFO
 #define DEFAULT_VK_ILAYERS_INFO                                                \
-    LOCAL_ILAYERS_INFO                                                         \
-    SYSCONFDIR VULKAN_DIR VULKAN_ILAYERCONF_DIR ":"                            \
-    DATADIR    VULKAN_DIR VULKAN_ILAYERCONF_DIR
+    SYSCONFDIR   VULKAN_DIR VULKAN_ILAYERCONF_DIR ":"                          \
+    DATADIR      VULKAN_DIR VULKAN_ILAYERCONF_DIR                              \
+    EXTRA_ILAYERS_SYSCONFDIR_INFO                                              \
+    EXTRA_ILAYERS_DATADIR_INFO
+
+#define DEFAULT_VK_DRIVERS_PATH ""
 #define DEFAULT_VK_LAYERS_PATH ""
+
 #if !defined(LAYERS_SOURCE_PATH)
 #define LAYERS_SOURCE_PATH NULL
 #endif
 #define LAYERS_PATH_ENV "VK_LAYER_PATH"
+
 #define HOME_VK_DRIVERS_INFO VULKAN_DIR VULKAN_ICDCONF_DIR
 #define HOME_VK_ELAYERS_INFO VULKAN_DIR VULKAN_ELAYERCONF_DIR
 #define HOME_VK_ILAYERS_INFO VULKAN_DIR VULKAN_ILAYERCONF_DIR