From a14dbf23d5be83fbc56246c5227bb5e04c1f7a3d Mon Sep 17 00:00:00 2001
From: Andrew Udvare <audvare@gmail.com>
Date: Tue, 19 Jan 2021 03:26:05 -0500
Subject: [PATCH 1/4] Allow more system libs

---
 3rdparty/CMakeLists.txt                 | 36 ++++++++++++++++++-------
 Vulkan/CMakeLists.txt                   | 12 +++++++--
 rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp |  2 +-
 3 files changed, 38 insertions(+), 12 deletions(-)

diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt
index e8d2b2ad0..168fe0b18 100644
--- a/3rdparty/CMakeLists.txt
+++ b/3rdparty/CMakeLists.txt
@@ -1,4 +1,5 @@
 find_package(PkgConfig)
+include(CMakeDependentOption)
 include(ExternalProject)
 
 # Dummy target to use when lib isn't available
@@ -7,7 +8,7 @@ add_library(3rdparty_dummy_lib INTERFACE)
 
 # ZLib
 if (USE_SYSTEM_ZLIB)
-	find_package(ZLIB QUIET)
+	find_package(ZLIB REQUIRED)
 endif()
 
 if (NOT ZLIB_FOUND)
@@ -103,7 +104,11 @@ endif()
 
 
 # pugixml
-add_subdirectory(pugixml EXCLUDE_FROM_ALL)
+if(NOT USE_SYSTEM_PUGIXML)
+  add_subdirectory(pugixml EXCLUDE_FROM_ALL)
+else()
+  find_package(pugixml REQUIRED NO_MODULE)
+endif()
 
 
 # libusb
@@ -181,11 +186,15 @@ set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX_OLD})
 
 
 # xxHash
-set(XXHASH_BUNDLED_MODE ON)
-set(XXHASH_BUILD_XXHSUM OFF)
-set(BUILD_SHARED_LIBS OFF CACHE BOOL "Make xxHash build static libs")
-add_subdirectory(xxHash/cmake_unofficial EXCLUDE_FROM_ALL)
-target_include_directories(xxhash INTERFACE xxHash)
+if (NOT USE_SYSTEM_XXHASH)
+  set(XXHASH_BUNDLED_MODE ON)
+  set(XXHASH_BUILD_XXHSUM OFF)
+  set(BUILD_SHARED_LIBS OFF CACHE BOOL "Make xxHash build static libs")
+  add_subdirectory(xxHash/cmake_unofficial EXCLUDE_FROM_ALL)
+  target_include_directories(xxhash INTERFACE xxHash)
+else()
+  pkg_check_modules(XXHASH REQUIRED IMPORTED_TARGET GLOBAL libxxhash)
+endif()
 
 
 # cereal
@@ -486,9 +495,18 @@ endif()
 add_library(3rdparty::zlib ALIAS 3rdparty_zlib)
 add_library(3rdparty::7z ALIAS 3rdparty_7z)
 add_library(3rdparty::flatbuffers ALIAS 3rdparty_flatbuffers)
-add_library(3rdparty::pugixml ALIAS pugixml)
+if(USE_SYSTEM_PUGIXML)
+  set_target_properties(pugixml::pugixml PROPERTIES IMPORTED_GLOBAL TRUE)
+  add_library(3rdparty::pugixml ALIAS pugixml::pugixml)
+else()
+  add_library(3rdparty::pugixml ALIAS pugixml)
+endif()
 add_library(3rdparty::yaml-cpp ALIAS yaml-cpp)
-add_library(3rdparty::xxhash ALIAS xxhash)
+if(USE_SYSTEM_XXHASH)
+  add_library(3rdparty::xxhash ALIAS PkgConfig::XXHASH)
+else()
+  add_library(3rdparty::xxhash ALIAS xxhash)
+endif()
 add_library(3rdparty::hidapi ALIAS 3rdparty_hidapi)
 add_library(3rdparty::libpng ALIAS ${LIBPNG_TARGET})
 add_library(3rdparty::cereal ALIAS 3rdparty_cereal)
diff --git a/Vulkan/CMakeLists.txt b/Vulkan/CMakeLists.txt
index 16a029029..c5a1ca4d5 100644
--- a/Vulkan/CMakeLists.txt
+++ b/Vulkan/CMakeLists.txt
@@ -5,8 +5,16 @@ set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "Builds glslangValidator and spirv-re
 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 (NOT USE_SYSTEM_GLSLANG)
+  add_subdirectory(glslang)
+else()
+  find_library(GLSLANG_LIB glslang REQUIRED)
+endif()
 
 set(SKIP_SPIRV_TOOLS_INSTALL ON CACHE BOOL "Skip spirv-tools install" FORCE)
 set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/spirv-headers" CACHE STRING "spirv-headers path" FORCE)
-add_subdirectory(spirv-tools)
+if (NOT USE_SYSTEM_SPIRV_HEADERS)
+  add_subdirectory(spirv-tools)
+else()
+  find_package(SPIRV-Headers REQUIRED)
+endif()
diff --git a/rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp b/rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp
index f10ad0c6b..525603ddd 100644
--- a/rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp
+++ b/rpcs3/Emu/RSX/VK/VKCommonDecompiler.cpp
@@ -13,7 +13,7 @@
 #pragma clang diagnostic ignored "-Winconsistent-missing-override"
 #endif
 #endif
-#include "SPIRV/GlslangToSpv.h"
+#include <glslang/SPIRV/GlslangToSpv.h>
 #include "spirv-tools/optimizer.hpp"
 #ifdef _MSC_VER
 #pragma warning(pop)
-- 
2.30.1

