Commit 2c99cf6b by Nicolas Capens Committed by Nicolas Capens

Canonicalize Vulkan ICD library names

Windows DLLs are not systematically prefixed with "lib". This change follows the implicit and explict expectations set out in: https://vulkan.lunarg.com/doc/view/1.0.21.0/windows/LoaderAndLayerInterface.html http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN49 Also make the vk_swiftshader target a dependency of vk-unittests so that building the latter also allows running it. Bug: b/139189696 Change-Id: I070871e63c5cefc3f80a6f441a1d5097c85b82b6 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/35630 Presubmit-Ready: Nicolas Capens <nicolascapens@google.com> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
parent bbd8c42d
......@@ -2039,48 +2039,47 @@ if(BUILD_VULKAN)
add_subdirectory(third_party/SPIRV-Tools)
endif()
add_library(libvk_swiftshader SHARED ${VULKAN_LIST})
set_target_properties(libvk_swiftshader PROPERTIES
add_library(vk_swiftshader SHARED ${VULKAN_LIST})
set_target_properties(vk_swiftshader PROPERTIES
INCLUDE_DIRECTORIES "${VULKAN_INCLUDE_DIR}"
FOLDER "Vulkan"
COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
COMPILE_DEFINITIONS "VK_EXPORT=;NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
PREFIX ""
)
if(WIN32)
set_property(TARGET libvk_swiftshader APPEND
set_property(TARGET vk_swiftshader APPEND
PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_WIN32_KHR")
elseif(LINUX)
if(X11)
set_property(TARGET libvk_swiftshader APPEND
set_property(TARGET vk_swiftshader APPEND
PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XLIB_KHR")
endif(X11)
if(XCB)
set_property(TARGET libvk_swiftshader APPEND
set_property(TARGET vk_swiftshader APPEND
PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XCB_KHR")
endif(XCB)
elseif(APPLE)
set_property(TARGET libvk_swiftshader APPEND
set_property(TARGET vk_swiftshader APPEND
PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_MACOS_MVK")
endif()
set_shared_library_export_map(libvk_swiftshader ${SOURCE_DIR}/Vulkan)
target_link_libraries(libvk_swiftshader ${Reactor} Yarn ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
set_shared_library_export_map(vk_swiftshader ${SOURCE_DIR}/Vulkan)
target_link_libraries(vk_swiftshader ${Reactor} Yarn ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
add_custom_command(
TARGET libvk_swiftshader
TARGET vk_swiftshader
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libvk_swiftshader>/translator
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> $<TARGET_FILE_DIR:libvk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:vk_swiftshader>/translator
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:vk_swiftshader> $<TARGET_FILE_DIR:vk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:vk_swiftshader> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
)
# The vk_swiftshader_icd.json manifest file will point to ICD_LIBRARY_PATH.
# Set ICD_LIBRARY_PATH to be a relative path similar to "./libvk_swiftshader.so", so both files can be moved.
# A relative path is relative to the manifest file.
# Note that the library name is always "libvk_swiftshader"; we do not use the platform-specific prefix.
set(ICD_LIBRARY_PATH "libvk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}")
set(ICD_LIBRARY_PATH "${CMAKE_SHARED_LIBRARY_PREFIX}vk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}")
if(WIN32)
# The path is output to a JSON file, which requires backslashes to be escaped.
set(ICD_LIBRARY_PATH ".\\\\${ICD_LIBRARY_PATH}")
......@@ -2255,6 +2254,8 @@ if(BUILD_TESTS AND BUILD_VULKAN)
)
add_executable(vk-unittests ${VK_UNITTESTS_LIST})
add_dependencies(vk-unittests vk_swiftshader)
set_target_properties(vk-unittests PROPERTIES
INCLUDE_DIRECTORIES "${VK_UNITTESTS_INCLUDE_DIR}"
FOLDER "Tests"
......
......@@ -61,19 +61,24 @@ bool Driver::loadSwiftShader()
#elif defined(NDEBUG)
#if defined(_WIN64)
return load("./build/Release_x64/vk_swiftshader.dll") ||
load("./build/Release/vk_swiftshader.dll") ||
load("./vk_swiftshader.dll");
#else
return load("./build/Release_Win32/vk_swiftshader.dll") ||
load("./build/Release/vk_swiftshader.dll") ||
load("./vk_swiftshader.dll");
#endif
load("./build/Release/libvk_swiftshader.dll") ||
#else
#if defined(_WIN64)
return load("./build/Debug_x64/vk_swiftshader.dll") ||
load("./build/Debug/vk_swiftshader.dll") ||
load("./vk_swiftshader.dll");
#else
return load("./build/Debug_Win32/vk_swiftshader.dll") ||
load("./build/Debug/vk_swiftshader.dll") ||
load("./vk_swiftshader.dll");
#endif
load("./build/Debug/libvk_swiftshader.dll") ||
#endif
load("./libvk_swiftshader.dll");
#elif OS_MAC
return load("./build/Darwin/libvk_swiftshader.dylib") ||
load("swiftshader/libvk_swiftshader.dylib") ||
......@@ -81,7 +86,7 @@ bool Driver::loadSwiftShader()
#elif OS_LINUX
return load("./build/Linux/libvk_swiftshader.so") ||
load("swiftshader/libvk_swiftshader.so") ||
load("libvk_swiftshader.so");
load("./libvk_swiftshader.so");
#elif OS_ANDROID || OS_FUCHSIA
return load("libvk_swiftshader.so");
#else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment