From 4d923c546f2bbce959f75799100e49dc369343d0 Mon Sep 17 00:00:00 2001 From: Nick Klingensmith Date: Mon, 18 Mar 2024 00:17:30 -0700 Subject: [PATCH] Action fixes --- .github/workflows/build.yml | 23 ++++++------ skshaderc/CMakeLists.distribute.txt | 54 +++++++++++++++++++++++++++++ skshaderc/CMakeLists.txt | 7 ++-- 3 files changed, 70 insertions(+), 14 deletions(-) create mode 100644 skshaderc/CMakeLists.distribute.txt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ae9e3ec..739bd92 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,18 +35,19 @@ jobs: cmake --preset skshaderc_Win32_x64_Release cmake --build --preset skshaderc_Win32_x64_Release - mkdir bin/distribute/win32_x64 - copy bin/intermediate/Win32_x64/Release/skshaderc_exe.exe bin/distribute/win32_x64/skshaderc.exe + mkdir bin/distribute/tools/win32_x64 + copy bin/intermediate/Win32_x64/Release/skshaderc_exe.exe bin/distribute/tools/win32_x64/skshaderc.exe - copy sk_gpu.h bin/distribute/sk_gpu.h + copy sk_gpu.h bin/distribute/src/sk_gpu.h + copy skshaderc/CMakeLists.distribute.txt bin/distribute/CMakeLists.txt - name: Build Native Win32 Arm64 run: | cmake --preset skshaderc_Win32_Arm64_Release cmake --build --preset skshaderc_Win32_Arm64_Release - mkdir bin/distribute/win32_arm64 - copy bin/intermediate/Win32_Arm64/Release/skshaderc_exe.exe bin/distribute/win32_arm64/skshaderc.exe + mkdir bin/distribute/tools/win32_arm64 + copy bin/intermediate/Win32_Arm64/Release/skshaderc_exe.exe bin/distribute/tools/win32_arm64/skshaderc.exe - name: Upload Artifacts uses: actions/upload-artifact@v3 @@ -75,8 +76,8 @@ jobs: cmake --preset skshaderc_Linux_x64_Release cmake --build --preset skshaderc_Linux_x64_Release - mkdir -p bin/distribute/linux_x64 - cp bin/intermediate/Linux_x64_Release/skshaderc_exe bin/distribute/linux_x64/skshaderc + mkdir -p bin/distribute/tools/linux_x64 + cp bin/intermediate/Linux_x64_Release/skshaderc_exe bin/distribute/tools/linux_x64/skshaderc - name: Install Arm64 Prerequisites run: | @@ -91,8 +92,8 @@ jobs: cmake --preset skshaderc_Linux_Arm64_Release cmake --build --preset skshaderc_Linux_Arm64_Release - mkdir -p bin/distribute/linux_arm64 - cp bin/intermediate/Linux_ARM64_Release/skshaderc_exe bin/distribute/linux_arm64/skshaderc + mkdir -p bin/distribute/tools/linux_arm64 + cp bin/intermediate/Linux_ARM64_Release/skshaderc_exe bin/distribute/tools/linux_arm64/skshaderc - name: Upload Artifacts uses: actions/upload-artifact@v3 @@ -116,8 +117,8 @@ jobs: cmake --preset skshaderc_Mac_Release cmake --build --preset skshaderc_Mac_Release - mkdir -p bin/distribute/mac_arm64 - cp bin/intermediate/Mac_Release/skshaderc_exe bin/distribute/mac/skshaderc + mkdir -p bin/distribute/tools/mac + cp bin/intermediate/Mac_Release/skshaderc_exe bin/distribute/tools/mac/skshaderc - name: Upload Artifacts uses: actions/upload-artifact@v3 diff --git a/skshaderc/CMakeLists.distribute.txt b/skshaderc/CMakeLists.distribute.txt new file mode 100644 index 0000000..957eb80 --- /dev/null +++ b/skshaderc/CMakeLists.distribute.txt @@ -0,0 +1,54 @@ +cmake_minimum_required(VERSION 3.9.2) + +project(skshaderc VERSION 1.0 + DESCRIPTION "Shader compiler for sk_gpu.h" + LANGUAGES CXX) + +add_library(skshaderc INTERFACE) + +target_include_directories(skshaderc INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src) + +if (APPLE) + set(SKSHADERC_EXE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/tools/mac) +elif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows" AND (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "AMD64" OR CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")) + set(SKSHADERC_EXE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/tools/win32_x64) +elif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows" AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "ARM64") + set(SKSHADERC_EXE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/tools/win32_arm64) +elif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64") + set(SKSHADERC_EXE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/tools/linux_x64) +elif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64" OR CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm64")) + set(SKSHADERC_EXE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/tools/linux_arm64) +else() + message(FATAL_ERROR "No shader compiler available for this platform!") +endif + +macro(SKSHADERC_COMPILE_HEADERS LIST COMMAND_STRING OUT_LIST) + set(SKSHADERC_COMPILE_COMMANDS ${COMMAND_STRING}) + separate_arguments(SKSHADERC_COMPILE_COMMANDS) + + foreach(SHADER ${${LIST}}) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER}.h + COMMAND ${SKSHADERC_EXE_PATH} -h ${SKSHADERC_COMPILE_COMMANDS} ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER} + DEPENDS + ${SHADER} + ${SKSHADERC_EXE_PATH} + COMMENT "skshaderc -h ${COMMAND_STRING} ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER}") + list(APPEND ${OUT_LIST} ${SHADER}.h) + endforeach(SHADER) +endmacro() + +macro(SKSHADERC_COMPILE_ASSETS LIST COMMAND_STRING) + set(SKSHADERC_COMPILE_COMMANDS ${COMMAND_STRING}) + separate_arguments(SKSHADERC_COMPILE_COMMANDS) + + foreach(SHADER ${${LIST}}) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER}.sks + COMMAND ${SKSHADERC_EXE_PATH} ${SKSHADERC_COMPILE_COMMANDS} ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER} + DEPENDS + ${SHADER} + ${SKSHADERC_EXE_PATH} + COMMENT "skshaderc ${COMMAND_STRING} ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER}") + endforeach(SHADER) +endmacro() \ No newline at end of file diff --git a/skshaderc/CMakeLists.txt b/skshaderc/CMakeLists.txt index bdb68e1..ec57e4a 100644 --- a/skshaderc/CMakeLists.txt +++ b/skshaderc/CMakeLists.txt @@ -94,7 +94,8 @@ add_executable(skshaderc miniz.cpp miniz.h ) -set_target_properties(skshaderc PROPERTIES OUTPUT_NAME "skshaderc_exe") +set(SKSHADERC_EXE_NAME "skshaderc_exe") +set_target_properties(skshaderc PROPERTIES OUTPUT_NAME ${SKSHADERC_EXE_NAME}) target_link_libraries(skshaderc PRIVATE @@ -127,7 +128,7 @@ macro(SKSHADERC_COMPILE_HEADERS LIST COMMAND_STRING OUT_LIST) DEPENDS ${SHADER} ${SKSHADERC_EXE_PATH} - COMMENT "skshaderc -h ${COMMAND_STRING} ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER}") + COMMENT "${SKSHADERC_EXE_NAME} -h ${COMMAND_STRING} ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER}") list(APPEND ${OUT_LIST} ${SHADER}.h) endforeach(SHADER) endmacro() @@ -143,6 +144,6 @@ macro(SKSHADERC_COMPILE_ASSETS LIST COMMAND_STRING) DEPENDS ${SHADER} ${SKSHADERC_EXE_PATH} - COMMENT "skshaderc ${COMMAND_STRING} ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER}") + COMMENT "${SKSHADERC_EXE_NAME} ${COMMAND_STRING} ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER}") endforeach(SHADER) endmacro() \ No newline at end of file