From 0164be613e2be5296ec3c131a4fddab8d2c8c133 Mon Sep 17 00:00:00 2001 From: ns6089 <61738816+ns6089@users.noreply.github.com> Date: Thu, 22 Aug 2024 16:14:33 +0300 Subject: [PATCH] feat(cmake): use symlink/junction for shaders in build dir (#3013) --- cmake/packaging/linux.cmake | 10 ++++++++-- cmake/packaging/windows.cmake | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/cmake/packaging/linux.cmake b/cmake/packaging/linux.cmake index 2fba033c0b9..56968d1e9e2 100644 --- a/cmake/packaging/linux.cmake +++ b/cmake/packaging/linux.cmake @@ -2,9 +2,15 @@ install(DIRECTORY "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/assets/" DESTINATION "${SUNSHINE_ASSETS_DIR}") -# copy assets to build directory, for running without install + +# copy assets (excluding shaders) to build directory, for running without install file(COPY "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/assets/" - DESTINATION "${CMAKE_BINARY_DIR}/assets") + DESTINATION "${CMAKE_BINARY_DIR}/assets" + PATTERN "shaders" EXCLUDE) +# use symbolic link for shaders directory +file(CREATE_LINK "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/assets/shaders" + "${CMAKE_BINARY_DIR}/assets/shaders" COPY_ON_ERROR SYMBOLIC) + if(${SUNSHINE_BUILD_APPIMAGE} OR ${SUNSHINE_BUILD_FLATPAK}) install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/misc/60-sunshine.rules" DESTINATION "${SUNSHINE_ASSETS_DIR}/udev/rules.d") diff --git a/cmake/packaging/windows.cmake b/cmake/packaging/windows.cmake index bbd497ee3a0..e17c971a3a0 100644 --- a/cmake/packaging/windows.cmake +++ b/cmake/packaging/windows.cmake @@ -39,9 +39,15 @@ install(DIRECTORY "${SUNSHINE_SOURCE_ASSETS_DIR}/windows/misc/gamepad/" install(DIRECTORY "${SUNSHINE_SOURCE_ASSETS_DIR}/windows/assets/" DESTINATION "${SUNSHINE_ASSETS_DIR}" COMPONENT assets) -# copy assets to build directory, for running without install + +# copy assets (excluding shaders) to build directory, for running without install file(COPY "${SUNSHINE_SOURCE_ASSETS_DIR}/windows/assets/" - DESTINATION "${CMAKE_BINARY_DIR}/assets") + DESTINATION "${CMAKE_BINARY_DIR}/assets" + PATTERN "shaders" EXCLUDE) +# use junction for shaders directory +file(TO_NATIVE_PATH "${SUNSHINE_SOURCE_ASSETS_DIR}/windows/assets/shaders" shaders_in_build_src_native) +file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/assets/shaders" shaders_in_build_dest_native) +execute_process(COMMAND cmd.exe /c mklink /J "${shaders_in_build_dest_native}" "${shaders_in_build_src_native}") # set(CPACK_NSIS_MUI_HEADERIMAGE "") # TODO: image should be 150x57 bmp set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}\\\\sunshine.ico")