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) ...@@ -2039,48 +2039,47 @@ if(BUILD_VULKAN)
add_subdirectory(third_party/SPIRV-Tools) add_subdirectory(third_party/SPIRV-Tools)
endif() endif()
add_library(libvk_swiftshader SHARED ${VULKAN_LIST}) add_library(vk_swiftshader SHARED ${VULKAN_LIST})
set_target_properties(libvk_swiftshader PROPERTIES
set_target_properties(vk_swiftshader PROPERTIES
INCLUDE_DIRECTORIES "${VULKAN_INCLUDE_DIR}" INCLUDE_DIRECTORIES "${VULKAN_INCLUDE_DIR}"
FOLDER "Vulkan" FOLDER "Vulkan"
COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}" COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
COMPILE_DEFINITIONS "VK_EXPORT=;NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>" COMPILE_DEFINITIONS "VK_EXPORT=;NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
PREFIX ""
) )
if(WIN32) if(WIN32)
set_property(TARGET libvk_swiftshader APPEND set_property(TARGET vk_swiftshader APPEND
PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_WIN32_KHR") PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_WIN32_KHR")
elseif(LINUX) elseif(LINUX)
if(X11) if(X11)
set_property(TARGET libvk_swiftshader APPEND set_property(TARGET vk_swiftshader APPEND
PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XLIB_KHR") PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XLIB_KHR")
endif(X11) endif(X11)
if(XCB) if(XCB)
set_property(TARGET libvk_swiftshader APPEND set_property(TARGET vk_swiftshader APPEND
PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XCB_KHR") PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XCB_KHR")
endif(XCB) endif(XCB)
elseif(APPLE) elseif(APPLE)
set_property(TARGET libvk_swiftshader APPEND set_property(TARGET vk_swiftshader APPEND
PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_MACOS_MVK") PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_MACOS_MVK")
endif() endif()
set_shared_library_export_map(libvk_swiftshader ${SOURCE_DIR}/Vulkan) set_shared_library_export_map(vk_swiftshader ${SOURCE_DIR}/Vulkan)
target_link_libraries(libvk_swiftshader ${Reactor} Yarn ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt) target_link_libraries(vk_swiftshader ${Reactor} Yarn ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
add_custom_command( add_custom_command(
TARGET libvk_swiftshader TARGET vk_swiftshader
POST_BUILD POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libvk_swiftshader>/translator COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:vk_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 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 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. # 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. # 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. # 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 "${CMAKE_SHARED_LIBRARY_PREFIX}vk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}")
set(ICD_LIBRARY_PATH "libvk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}")
if(WIN32) if(WIN32)
# The path is output to a JSON file, which requires backslashes to be escaped. # The path is output to a JSON file, which requires backslashes to be escaped.
set(ICD_LIBRARY_PATH ".\\\\${ICD_LIBRARY_PATH}") set(ICD_LIBRARY_PATH ".\\\\${ICD_LIBRARY_PATH}")
...@@ -2255,6 +2254,8 @@ if(BUILD_TESTS AND BUILD_VULKAN) ...@@ -2255,6 +2254,8 @@ if(BUILD_TESTS AND BUILD_VULKAN)
) )
add_executable(vk-unittests ${VK_UNITTESTS_LIST}) add_executable(vk-unittests ${VK_UNITTESTS_LIST})
add_dependencies(vk-unittests vk_swiftshader)
set_target_properties(vk-unittests PROPERTIES set_target_properties(vk-unittests PROPERTIES
INCLUDE_DIRECTORIES "${VK_UNITTESTS_INCLUDE_DIR}" INCLUDE_DIRECTORIES "${VK_UNITTESTS_INCLUDE_DIR}"
FOLDER "Tests" FOLDER "Tests"
......
...@@ -61,19 +61,24 @@ bool Driver::loadSwiftShader() ...@@ -61,19 +61,24 @@ bool Driver::loadSwiftShader()
#elif defined(NDEBUG) #elif defined(NDEBUG)
#if defined(_WIN64) #if defined(_WIN64)
return load("./build/Release_x64/vk_swiftshader.dll") || return load("./build/Release_x64/vk_swiftshader.dll") ||
load("./build/Release/vk_swiftshader.dll") ||
load("./vk_swiftshader.dll");
#else #else
return load("./build/Release_Win32/vk_swiftshader.dll") || return load("./build/Release_Win32/vk_swiftshader.dll") ||
load("./build/Release/vk_swiftshader.dll") ||
load("./vk_swiftshader.dll");
#endif #endif
load("./build/Release/libvk_swiftshader.dll") ||
#else #else
#if defined(_WIN64) #if defined(_WIN64)
return load("./build/Debug_x64/vk_swiftshader.dll") || return load("./build/Debug_x64/vk_swiftshader.dll") ||
load("./build/Debug/vk_swiftshader.dll") ||
load("./vk_swiftshader.dll");
#else #else
return load("./build/Debug_Win32/vk_swiftshader.dll") || return load("./build/Debug_Win32/vk_swiftshader.dll") ||
load("./build/Debug/vk_swiftshader.dll") ||
load("./vk_swiftshader.dll");
#endif #endif
load("./build/Debug/libvk_swiftshader.dll") ||
#endif #endif
load("./libvk_swiftshader.dll");
#elif OS_MAC #elif OS_MAC
return load("./build/Darwin/libvk_swiftshader.dylib") || return load("./build/Darwin/libvk_swiftshader.dylib") ||
load("swiftshader/libvk_swiftshader.dylib") || load("swiftshader/libvk_swiftshader.dylib") ||
...@@ -81,7 +86,7 @@ bool Driver::loadSwiftShader() ...@@ -81,7 +86,7 @@ bool Driver::loadSwiftShader()
#elif OS_LINUX #elif OS_LINUX
return load("./build/Linux/libvk_swiftshader.so") || return load("./build/Linux/libvk_swiftshader.so") ||
load("swiftshader/libvk_swiftshader.so") || load("swiftshader/libvk_swiftshader.so") ||
load("libvk_swiftshader.so"); load("./libvk_swiftshader.so");
#elif OS_ANDROID || OS_FUCHSIA #elif OS_ANDROID || OS_FUCHSIA
return load("libvk_swiftshader.so"); return load("libvk_swiftshader.so");
#else #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