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: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9a518af..370ba96 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2039,48 +2039,47 @@
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 @@
)
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"
diff --git a/src/Vulkan/libvk_swiftshader.def b/src/Vulkan/vk_swiftshader.def
similarity index 100%
rename from src/Vulkan/libvk_swiftshader.def
rename to src/Vulkan/vk_swiftshader.def
diff --git a/src/Vulkan/libvk_swiftshader.exports b/src/Vulkan/vk_swiftshader.exports
similarity index 100%
rename from src/Vulkan/libvk_swiftshader.exports
rename to src/Vulkan/vk_swiftshader.exports
diff --git a/src/Vulkan/libvk_swiftshader.lds b/src/Vulkan/vk_swiftshader.lds
similarity index 100%
rename from src/Vulkan/libvk_swiftshader.lds
rename to src/Vulkan/vk_swiftshader.lds
diff --git a/tests/VulkanUnitTests/Driver.cpp b/tests/VulkanUnitTests/Driver.cpp
index e216d74..047e394 100644
--- a/tests/VulkanUnitTests/Driver.cpp
+++ b/tests/VulkanUnitTests/Driver.cpp
@@ -61,19 +61,24 @@
#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 @@
#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