aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Jones <jajones@nvidia.com>2015-07-23 17:39:37 -0700
committerJon Ashburn <jon@lunarg.com>2015-07-24 13:08:37 -0600
commit3412d68d7d22895d3084ed54d7547595c88391df (patch)
treebd5fee58073181e81d4abbcb39c7485e081dc90f
parent10557bc9196f310d7e58fb67d0b234e341d2763a (diff)
downloadusermoji-3412d68d7d22895d3084ed54d7547595c88391df.tar.xz
linux: Fix standard GNU path usage
The previous attempt at using GNU standard paths limited searching to the prefix where the loader was installed. What we really want though is to always search in /usr, also search in whatever local prefix the user installed at if it wasn't /usr, and use the standard GNU libdir, sysconfdir, and datadir under those prefixes. This change implements that behavior. Signed-off-by: James Jones <jajones@nvidia.com> Tested-by: Liam Middlebrook <lmiddlebrook@nvidia.com>
-rw-r--r--CMakeLists.txt11
-rw-r--r--loader/vk_loader_platform.h46
2 files changed, 45 insertions, 12 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 47816fe3..442876a3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -37,10 +37,13 @@ endif()
if(NOT WIN32)
include(GNUInstallDirs)
- add_definitions(-DLIBDIR="${CMAKE_INSTALL_FULL_LIBDIR}")
- add_definitions(-DSYSCONFDIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}")
- add_definitions(-DDATADIR="${CMAKE_INSTALL_FULL_DATADIR}")
-
+ add_definitions(-DLIBDIR="${CMAKE_INSTALL_LIBDIR}")
+ add_definitions(-DSYSCONFDIR="${CMAKE_INSTALL_SYSCONFDIR}")
+ add_definitions(-DDATADIR="${CMAKE_INSTALL_DATADIR}")
+ if (CMAKE_INSTALL_PREFIX STREQUAL "/usr")
+ else()
+ add_definitions(-DLOCALPREFIX="${CMAKE_INSTALL_PREFIX}")
+ endif()
if(NOT EXISTS ${LUNARGLASS_PREFIX})
message(FATAL_ERROR "Necessary LunarGLASS components do not exist: " ${LUNARGLASS_PREFIX})
endif()
diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
index f79a61d4..72c72bff 100644
--- a/loader/vk_loader_platform.h
+++ b/loader/vk_loader_platform.h
@@ -51,18 +51,48 @@
#define PATH_SEPERATOR ':'
#define DIRECTORY_SYMBOL '/'
+#define VULKAN_ICDCONF_DIR "/" "vulkan" "/" "icd.d"
+#define VULKAN_ICD_DIR "/" "vulkan" "/" "icd"
+#define VULKAN_ELAYERCONF_DIR "/" "vulkan" "/" "implicit_layer.d"
+#define VULKAN_ILAYERCONF_DIR "/" "vulkan" "/" "implicit_layer.d"
+#define VULKAN_LAYER_DIR "/" "vulkan" "/" "layer"
+
+#if defined(LOCALPREFIX)
+#define LOCAL_DRIVERS_INFO \
+ LOCALPREFIX "/" SYSCONFDIR VULKAN_ICDCONF_DIR ":" \
+ LOCALPREFIX "/" DATADIR VULKAN_ICDCONF_DIR ":"
+#define LOCAL_DRIVERS_PATH \
+ LOCALPREFIX "/" LIBDIR VULKAN_ICD_DIR ":"
+#define LOCAL_LAYERS_INFO \
+ LOCALPREFIX "/" SYSCONFDIR VULKAN_ELAYERCONF_DIR ":" \
+ LOCALPREFIX "/" SYSCONFDIR VULKAN_ILAYERCONF_DIR ":" \
+ LOCALPREFIX "/" DATADIR VULKAN_ELAYERCONF_DIR ":" \
+ LOCALPREFIX "/" DATADIR VULKAN_ILAYERCONF_DIR ":"
+#define LOCAL_LAYERS_PATH \
+ LOCALPREFIX "/" LIBDIR VULKAN_LAYER_DIR ":"
+#else
+#define LOCAL_DRIVERS_INFO
+#define LOCAL_DRIVERS_PATH
+#define LOCAL_LAYERS_INFO
+#define LOCAL_LAYERS_PATH
+#endif
+
#define DEFAULT_VK_DRIVERS_INFO \
- SYSCONFDIR "/vulkan/icd.d:" \
- DATADIR "/vulkan/icd.d"
+ LOCAL_DRIVERS_INFO \
+ "/usr/" SYSCONFDIR VULKAN_ICDCONF_DIR ":" \
+ "/usr/" DATADIR VULKAN_ICDCONF_DIR
#define DEFAULT_VK_DRIVERS_PATH \
- LIBDIR "/vulkan/icd"
+ LOCAL_DRIVERS_PATH \
+ "/usr/" LIBDIR VULKAN_ICD_DIR
#define DEFAULT_VK_LAYERS_INFO \
- SYSCONFDIR "/vulkan/explicit_layer.d:" \
- SYSCONFDIR "/vulkan/implicit_layer.d:" \
- DATADIR "/vulkan/explicit_layer.d:" \
- DATADIR "/vulkan/implicit_layer.d"
+ LOCAL_LAYERS_INFO \
+ "/usr/" SYSCONFDIR VULKAN_ELAYERCONF_DIR ":" \
+ "/usr/" SYSCONFDIR VULKAN_ILAYERCONF_DIR ":" \
+ "/usr/" DATADIR VULKAN_ELAYERCONF_DIR ":" \
+ "/usr/" DATADIR VULKAN_ILAYERCONF_DIR
#define DEFAULT_VK_LAYERS_PATH \
- LIBDIR "/vulkan/layer"
+ LOCAL_LAYERS_PATH \
+ "/usr/" LIBDIR VULKAN_LAYER_DIR
#define LAYERS_PATH_ENV "VK_LAYER_DIRS"
// C99: