diff options
| author | James Jones <jajones@nvidia.com> | 2015-07-23 17:39:37 -0700 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2015-07-24 13:08:37 -0600 |
| commit | 3412d68d7d22895d3084ed54d7547595c88391df (patch) | |
| tree | bd5fee58073181e81d4abbcb39c7485e081dc90f | |
| parent | 10557bc9196f310d7e58fb67d0b234e341d2763a (diff) | |
| download | usermoji-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.txt | 11 | ||||
| -rw-r--r-- | loader/vk_loader_platform.h | 46 |
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: |
