diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c5a960d..fb72e27b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -156,23 +156,53 @@ if(WOWEE_ENABLE_AMD_FSR3_FRAMEGEN AND WOWEE_AMD_FFX_SDK_KITS_READY) set(WOWEE_AMD_FSR3_RUNTIME_BUILD_TYPE Release) endif() - add_custom_target(wowee_fsr3_official_runtime_build - COMMAND ${CMAKE_COMMAND} - -S ${WOWEE_AMD_FFX_SDK_KITS_DIR} - -B ${WOWEE_AMD_FSR3_RUNTIME_BUILD_DIR} - -DCMAKE_BUILD_TYPE=${WOWEE_AMD_FSR3_RUNTIME_BUILD_TYPE} - -DFFX_BUILD_VK=ON - -DFFX_BUILD_FRAMEGENERATION=ON - -DFFX_BUILD_UPSCALER=ON - COMMAND bash ${CMAKE_SOURCE_DIR}/tools/generate_ffx_sdk_vk_permutations.sh - ${CMAKE_SOURCE_DIR}/extern/FidelityFX-SDK - COMMAND ${CMAKE_COMMAND} - --build ${WOWEE_AMD_FSR3_RUNTIME_BUILD_DIR} - --config $ - --parallel - COMMENT "Building native AMD FSR3 runtime (Path A) from FidelityFX-SDK Kits" - VERBATIM + # Locate bash at configure time so the build-time COMMAND works on Windows + # (cmake custom commands run via cmd.exe on Windows, so bare 'bash' is not found). + find_program(BASH_EXECUTABLE bash + HINTS + /usr/bin + /bin + "${MSYS2_PATH}/usr/bin" + "$ENV{MSYS2_PATH}/usr/bin" + "C:/msys64/usr/bin" + "D:/msys64/usr/bin" ) + if(BASH_EXECUTABLE) + add_custom_target(wowee_fsr3_official_runtime_build + COMMAND ${CMAKE_COMMAND} + -S ${WOWEE_AMD_FFX_SDK_KITS_DIR} + -B ${WOWEE_AMD_FSR3_RUNTIME_BUILD_DIR} + -DCMAKE_BUILD_TYPE=${WOWEE_AMD_FSR3_RUNTIME_BUILD_TYPE} + -DFFX_BUILD_VK=ON + -DFFX_BUILD_FRAMEGENERATION=ON + -DFFX_BUILD_UPSCALER=ON + COMMAND ${BASH_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/generate_ffx_sdk_vk_permutations.sh + ${CMAKE_SOURCE_DIR}/extern/FidelityFX-SDK + COMMAND ${CMAKE_COMMAND} + --build ${WOWEE_AMD_FSR3_RUNTIME_BUILD_DIR} + --config $ + --parallel + COMMENT "Building native AMD FSR3 runtime (Path A) from FidelityFX-SDK Kits" + VERBATIM + ) + else() + message(STATUS "bash not found; VK permutation headers will not be auto-generated") + add_custom_target(wowee_fsr3_official_runtime_build + COMMAND ${CMAKE_COMMAND} + -S ${WOWEE_AMD_FFX_SDK_KITS_DIR} + -B ${WOWEE_AMD_FSR3_RUNTIME_BUILD_DIR} + -DCMAKE_BUILD_TYPE=${WOWEE_AMD_FSR3_RUNTIME_BUILD_TYPE} + -DFFX_BUILD_VK=ON + -DFFX_BUILD_FRAMEGENERATION=ON + -DFFX_BUILD_UPSCALER=ON + COMMAND ${CMAKE_COMMAND} + --build ${WOWEE_AMD_FSR3_RUNTIME_BUILD_DIR} + --config $ + --parallel + COMMENT "Building native AMD FSR3 runtime (Path A) from FidelityFX-SDK Kits (no permutation bootstrap)" + VERBATIM + ) + endif() add_custom_target(wowee_fsr3_official_runtime_copy COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} diff --git a/tools/generate_ffx_sdk_vk_permutations.sh b/tools/generate_ffx_sdk_vk_permutations.sh index f3dba149..78010d39 100755 --- a/tools/generate_ffx_sdk_vk_permutations.sh +++ b/tools/generate_ffx_sdk_vk_permutations.sh @@ -35,6 +35,13 @@ if [[ -z "${DXC:-}" ]]; then elif command -v dxc >/dev/null 2>&1; then export DXC="$(command -v dxc)" elif [[ "$(uname -s)" == "Linux" ]]; then + _arch="$(uname -m)" + if [[ "$_arch" == "aarch64" || "$_arch" == "arm64" ]]; then + echo "Linux aarch64: no official arm64 DXC release available." >&2 + echo "Install 'directx-shader-compiler' via apt or set DXC=/path/to/dxc to regenerate." >&2 + echo "Skipping VK permutation codegen (permutations may be pre-built in the SDK checkout)." + exit 0 + fi echo "DXC not found; downloading Linux DXC release to /tmp/dxc ..." tmp_json="$(mktemp)" curl -sS https://api.github.com/repos/microsoft/DirectXShaderCompiler/releases/latest > "$tmp_json"