From 1b72868abf9b7e62cce2bd7c381fc56a63f63015 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sat, 2 Aug 2025 17:15:31 +0200 Subject: [PATCH] Add option to use system glslang Signed-off-by: Marcin Serwin --- 3rdparty/CMakeLists.txt | 3 --- 3rdparty/glslang/CMakeLists.txt | 30 +++++++++++++++++++-------- CMakeLists.txt | 1 + rpcs3/Emu/RSX/Program/SPIRVCommon.cpp | 6 +++--- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index 81a81cb204..41742bceeb 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -92,9 +92,6 @@ add_subdirectory(hidapi) # glslang add_subdirectory(glslang EXCLUDE_FROM_ALL) -add_library(3rdparty_glslang INTERFACE) -target_link_libraries(3rdparty_glslang INTERFACE SPIRV) - # yaml-cpp add_subdirectory(yaml-cpp) diff --git a/3rdparty/glslang/CMakeLists.txt b/3rdparty/glslang/CMakeLists.txt index 5b6aa8e962..c86d0b384c 100644 --- a/3rdparty/glslang/CMakeLists.txt +++ b/3rdparty/glslang/CMakeLists.txt @@ -1,11 +1,23 @@ #glslang -set(ENABLE_PCH OFF CACHE BOOL "Enables Precompiled header" FORCE) -set(BUILD_EXTERNAL OFF CACHE BOOL "Build external dependencies in /External" FORCE) -set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "Skip installation" FORCE) -set(ENABLE_SPVREMAPPER OFF CACHE BOOL "Enables building of SPVRemapper" FORCE) -set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "Builds glslangValidator and spirv-remap" FORCE) -set(ENABLE_HLSL OFF CACHE BOOL "Enables HLSL input support" FORCE) -set(ENABLE_OPT OFF CACHE BOOL "Enables spirv-opt capability if present" FORCE) -set(ENABLE_CTEST OFF CACHE BOOL "Enables testing" FORCE) -add_subdirectory(glslang) +if(USE_SYSTEM_GLSLANG) + message(STATUS "RPCS3: using shared glslang") + find_package(glslang REQUIRED GLOBAL) + add_library(3rdparty_glslang INTERFACE) + target_link_libraries(3rdparty_glslang INTERFACE glslang::SPIRV) + get_target_property(SPIRV_INCLUDE_DIRS glslang::SPIRV INTERFACE_INCLUDE_DIRECTORIES) + list(TRANSFORM SPIRV_INCLUDE_DIRS APPEND "/glslang") + target_include_directories(3rdparty_glslang INTERFACE ${SPIRV_INCLUDE_DIRS}) +else() + set(ENABLE_PCH OFF CACHE BOOL "Enables Precompiled header" FORCE) + set(BUILD_EXTERNAL OFF CACHE BOOL "Build external dependencies in /External" FORCE) + set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "Skip installation" FORCE) + set(ENABLE_SPVREMAPPER OFF CACHE BOOL "Enables building of SPVRemapper" FORCE) + set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "Builds glslangValidator and spirv-remap" FORCE) + set(ENABLE_HLSL OFF CACHE BOOL "Enables HLSL input support" FORCE) + set(ENABLE_OPT OFF CACHE BOOL "Enables spirv-opt capability if present" FORCE) + set(ENABLE_CTEST OFF CACHE BOOL "Enables testing" FORCE) + add_subdirectory(glslang) + add_library(3rdparty_glslang INTERFACE) + target_link_libraries(3rdparty_glslang INTERFACE SPIRV) +endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index ee6c96d980..02cc27b7fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,7 @@ option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON) option(USE_SYSTEM_FAUDIO "Prefer system FAudio instead of the builtin one" OFF) option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF) option(USE_SYSTEM_FLATBUFFERS "Prefer system flatbuffers instead of the builtin one" OFF) +option(USE_SYSTEM_GLSLANG "Prefer system glslang instead of the builtin one" OFF) option(USE_SYSTEM_LIBPNG "Prefer system libpng instead of the builtin one" OFF) option(USE_SYSTEM_LIBUSB "Prefer system libusb instead of the builtin one" OFF) option(USE_SYSTEM_MINIUPNPC "Prefer system MiniUPnPc instead of the builtin one" OFF) diff --git a/rpcs3/Emu/RSX/Program/SPIRVCommon.cpp b/rpcs3/Emu/RSX/Program/SPIRVCommon.cpp index 501c0e6b51..c32d3542f2 100644 --- a/rpcs3/Emu/RSX/Program/SPIRVCommon.cpp +++ b/rpcs3/Emu/RSX/Program/SPIRVCommon.cpp @@ -12,9 +12,9 @@ #pragma clang diagnostic ignored "-Winconsistent-missing-override" #endif #endif -#include "3rdparty/glslang/glslang/SPIRV/GlslangToSpv.h" -#include "3rdparty/glslang/glslang/glslang/Include/ResourceLimits.h" -#include "3rdparty/glslang/glslang/glslang/Public/ShaderLang.h" +#include +#include +#include #ifdef _MSC_VER #pragma warning(pop) #else