From: Dor Askayo Date: Sat, 22 Oct 2016 19:20:29 +0000 (+0300) Subject: loader: fix duplicate detection of manifests when CMAKE_INSTALL_PREFIX is defined X-Git-Tag: upstream/1.1.92~2253 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1fc9abd7d70166f72b44f7ea554ae80472003ed2;p=platform%2Fupstream%2FVulkan-Tools.git loader: fix duplicate detection of manifests when CMAKE_INSTALL_PREFIX is defined 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 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 18c4051..34bbf9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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() diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h index 264a6a8..d13b645 100644 --- a/loader/vk_loader_platform.h +++ b/loader/vk_loader_platform.h @@ -57,40 +57,56 @@ #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