Currently when the build executes it copies things like .so files and
the vulkan .icd file to the CMAKE_CURRENT_SOURCE_DIR/out/<platform>
directory. This is fine in a normal swiftshader build but if you embed
swiftshader into another project this ends up being something like:
third_party/swiftshader/out/<platform> which is not what is desired.
This CL changes the files to get written to the CMAKE_BINARY_DIR. This
means it will go into the directory form which cmake was run. This means
for a build setup as per the README, build/<platform>.
This also allows generating different .icd and .so files for Release and
Debug if you setup different build directories.
Bug: b/
123752208
Change-Id: If2e8c70ca2d35351c02f7bbe56ff77a04d538373
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/27188
Presubmit-Ready: Ben Clayton <bclayton@google.com>
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libEGL>/translator
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> $<TARGET_FILE_DIR:libEGL>/translator/${LIB_PREFIX}EGL_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libEGL> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
)
endif()
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libGLESv2>/translator
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> $<TARGET_FILE_DIR:libGLESv2>/translator/${LIB_PREFIX}GLES_V2_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libGLESv2> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
)
endif()
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 ${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/
- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> ${CMAKE_CURRENT_SOURCE_DIR}/out/${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}/
)
configure_file(
"${VULKAN_DIR}/vk_swiftshader_icd.json.tmpl"
- "${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/vk_swiftshader_icd.json")
+ "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/vk_swiftshader_icd.json")
endif()
###########################################################
Testing OpenGL ES\r
-----------------\r
\r
-20. a) Assuming you already built SwiftShader, copy these two files:\r
+20. a) Assuming you already built SwiftShader in the `build` folder, copy these two files:\r
\r
`libEGL.dll`\\r
`libGLESv2.dll`\r
\r
From:\r
\r
- `<path to SwiftShader>\out\Release_x64` or\\r
- `<path to SwiftShader>\out\Debug_x64`\r
+ `<path to SwiftShader>\build\Release_x64` or\\r
+ `<path to SwiftShader>\build\Debug_x64`\r
\r
To:\r
\r
\r
20. b) Assuming you already built SwiftShader, copy and rename this file:\r
\r
- `<path to SwiftShader>\out\Release_x64\vk_swiftshader.dll` or\\r
- `<path to SwiftShader>\out\Debug_x64\vk_swiftshader.dll`\r
+ `<path to SwiftShader>\build\Release_x64\vk_swiftshader.dll` or\\r
+ `<path to SwiftShader>\build\Debug_x64\vk_swiftshader.dll`\r
\r
To:\r
\r
\r
We do this by setting the `VK_ICD_FILENAMES` environment variable to point to SwiftShader's `vk_swiftshader_icd.json` file. Replace (or `export`) `$SWIFTSHADER_ROOT` to the root checkout directory of SwiftShader, and type:\r
\r
- `export VK_ICD_FILENAMES=$SWIFTSHADER_ROOT/out/Linux/vk_swiftshader_icd.json`\r
+ `export VK_ICD_FILENAMES=$SWIFTSHADER_ROOT/build/Linux/vk_swiftshader_icd.json`\r
\r
6. Run the tests:\r
\r
{\r
"file_format_version": "1.0.0",\r
"ICD": {\r
- "library_path": "${CMAKE_CURRENT_SOURCE_DIR}/out/${CMAKE_SYSTEM_NAME}/${CMAKE_SHARED_LIBRARY_PREFIX}vk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}",\r
+ "library_path": "${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/${CMAKE_SHARED_LIBRARY_PREFIX}vk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}",\r
"api_version": "1.0.5"\r
}\r
-}
\ No newline at end of file
+}\r
{
#if OS_WINDOWS
# if defined(NDEBUG)
- return load("../../out/Release_x64/vk_swiftshader.dll");
+ return load("../../build/Release_x64/vk_swiftshader.dll");
# else
- return load("../../out/Debug_x64/vk_swiftshader.dll");
+ return load("../../build/Debug_x64/vk_swiftshader.dll");
# endif
#elif OS_MAC
- return load("./out/Darwin/libvk_swiftshader.dylib");
+ return load("./build/Darwin/libvk_swiftshader.dylib");
#elif OS_LINUX
- return load("./out/Linux/libvk_swiftshader.so");
+ return load("./build/Linux/libvk_swiftshader.so");
#else
# error Unimplemented platform
#endif