diff --git a/CMakeLists.txt b/CMakeLists.txt index 38939f3a6c..7003596338 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,7 +75,9 @@ option(ENABLE_WIFI_SCAN "Enable WiFi scanning" OFF) option(YUZU_USE_BUNDLED_FFMPEG "Download/Build bundled FFmpeg" ${EXT_DEFAULT}) option(YUZU_USE_EXTERNAL_VULKAN_HEADERS "Use Vulkan-Headers from externals" ${EXT_DEFAULT}) option(YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES "Use Vulkan-Utility-Libraries from externals" ${EXT_DEFAULT}) -option(YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS "Use SPIRV-Tools from externals" ${EXT_DEFAULT}) + +# I hate Apple with a burning passion +CMAKE_DEPENDENT_OPTION(YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS "Use SPIRV-Tools from externals" ${EXT_DEFAULT} "NOT APPLE" ON) option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF) @@ -670,12 +672,6 @@ AddPackage( EXCLUDE_FROM_ALL ON ) -# TODO(crueter): Work around this -if (NOT YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS) - find_package(PkgConfig REQUIRED) - pkg_check_modules(SPIRV-Tools REQUIRED SPIRV-Tools) -endif() - # find SDL2 exports a bunch of variables that are needed, so its easier to do this outside of the YUZU_find_package if (ENABLE_SDL2) # this was hard to get right, but ultimately I decided to make it so that FORCE_DOWNLOAD_SDL2 also downloads the @@ -783,6 +779,8 @@ if (ENABLE_SDL2) find_package(SDL2) endif() +find_package(SPIRV-Tools) + if (ENABLE_QT) if (YUZU_USE_BUNDLED_QT) download_qt(6.8.3) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index f94098b6d0..f7d8638c5c 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -96,13 +96,14 @@ if (ENABLE_LIBUSB AND NOT TARGET libusb::usb) endif() # Sirit -# TODO(crueter): spirv-tools doesn't work w/ system set(SPIRV_WERROR OFF) AddPackage( NAME SPIRV-Headers REPO "KhronosGroup/SPIRV-Headers" SHA 4e209d3d7e HASH f48bbe18341ed55ea0fe280dbbbc0a44bf222278de6e716e143ca1e95ca320b06d4d23d6583fbf8d03e1428f3dac8fa00e5b82ddcd6b425e6236d85af09550a4 + # spirv-tools is stupid and doesn't know how to utilize system spirv headers + BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS} ) AddPackage( @@ -184,16 +185,18 @@ AddPackage( ) # SPIRV-Tools -if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS) - AddPackage( - NAME SPIRV-Tools - REPO "KhronosGroup/SPIRV-Tools" - SHA 40eb301f32 - HASH 58d0fb1047d69373cf24c73e6f78c73a72a6cca3b4df1d9f083b9dcc0962745ef154abf3dbe9b3623b835be20c6ec769431cf11733349f45e7568b3525f707aa - OPTIONS - "SPIRV_SKIP_EXECUTABLES ON" - ) -endif() +AddPackage( + NAME SPIRV-Tools + REPO "KhronosGroup/SPIRV-Tools" + SHA 40eb301f32 + HASH 58d0fb1047d69373cf24c73e6f78c73a72a6cca3b4df1d9f083b9dcc0962745ef154abf3dbe9b3623b835be20c6ec769431cf11733349f45e7568b3525f707aa + OPTIONS + "SPIRV_SKIP_EXECUTABLES ON" + "SPIRV_TOOLS_BUILD_STATIC ON" + BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_SPIRV_TOOLS} +) + +set(SPIRV-Tools_ADDED "${SPIRV-Tools_ADDED}" PARENT_SCOPE) # TZDB (Time Zone Database) add_subdirectory(nx_tzdb) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index eab506f194..a1c722a77c 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1184,7 +1184,6 @@ else() ) endif() -target_include_directories(core PRIVATE ${OPUS_INCLUDE_DIRS}) target_link_libraries(core PUBLIC common PRIVATE audio_core hid_core network video_core nx_tzdb tz) if (BOOST_NO_HEADERS) diff --git a/src/shader_recompiler/CMakeLists.txt b/src/shader_recompiler/CMakeLists.txt index 5d896db93d..fc4b0effa9 100644 --- a/src/shader_recompiler/CMakeLists.txt +++ b/src/shader_recompiler/CMakeLists.txt @@ -246,6 +246,8 @@ add_library(shader_recompiler STATIC ) +# This can actually cause issues e.g. with Apple +# but forcing external spirv-tools works there target_link_libraries(shader_recompiler PUBLIC common fmt::fmt sirit SPIRV-Tools-opt SPIRV-Tools SPIRV-Tools-link) if (MSVC)