From: Jordan Justen <jordan.l.justen@intel.com>
Date: Wed, 27 Jun 2018 20:28:49 -0700
Subject: use debian glslang for renderdoc spirv driver

---
 renderdoc/CMakeLists.txt                           |  6 ++
 renderdoc/driver/gl/gl_shader_refl.cpp             |  2 +-
 renderdoc/driver/shaders/spirv/CMakeLists.txt      | 94 ++--------------------
 renderdoc/driver/shaders/spirv/spirv_common.cpp    |  2 +-
 renderdoc/driver/shaders/spirv/spirv_common.h      |  6 +-
 renderdoc/driver/shaders/spirv/spirv_compile.cpp   |  4 +-
 .../driver/shaders/spirv/spirv_disassemble.cpp     | 12 +--
 renderdoc/driver/shaders/spirv/spirv_editor.h      |  2 +-
 renderdoc/driver/shaders/spirv/spirv_stringise.cpp |  2 +-
 renderdoc/driver/vulkan/vk_debug.cpp               |  2 +-
 renderdoc/driver/vulkan/vk_info.cpp                |  2 +-
 renderdoc/driver/vulkan/vk_overlay.cpp             |  2 +-
 renderdoc/driver/vulkan/vk_postvs.cpp              |  4 +-
 13 files changed, 31 insertions(+), 109 deletions(-)

diff --git a/renderdoc/CMakeLists.txt b/renderdoc/CMakeLists.txt
index c4195a4..8295c83 100644
--- a/renderdoc/CMakeLists.txt
+++ b/renderdoc/CMakeLists.txt
@@ -395,6 +395,12 @@ endif()
 if(ENABLE_GL OR ENABLE_GLES OR ENABLE_VULKAN)
     add_subdirectory(driver/shaders/spirv)
     list(APPEND renderdoc_objects $<TARGET_OBJECTS:rdoc_spirv>)
+    list(APPEND RDOC_LIBRARIES
+         PRIVATE -lglslang
+         PRIVATE -lHLSL
+         PRIVATE -lOGLCompiler
+         PRIVATE -lOSDependent
+         PRIVATE -lSPIRV)
 endif()
 
 option(USE_INTERCEPTOR_LIB OFF)
diff --git a/renderdoc/driver/gl/gl_shader_refl.cpp b/renderdoc/driver/gl/gl_shader_refl.cpp
index e41f066..2dc0970 100644
--- a/renderdoc/driver/gl/gl_shader_refl.cpp
+++ b/renderdoc/driver/gl/gl_shader_refl.cpp
@@ -25,7 +25,7 @@
 #include "gl_shader_refl.h"
 #include <algorithm>
 #include <functional>
-#include "3rdparty/glslang/glslang/Public/ShaderLang.h"
+#include "glslang/Public/ShaderLang.h"
 #include "gl_driver.h"
 
 void sort(rdcarray<ShaderConstant> &vars)
diff --git a/renderdoc/driver/shaders/spirv/CMakeLists.txt b/renderdoc/driver/shaders/spirv/CMakeLists.txt
index e01e52e..0ffc060 100644
--- a/renderdoc/driver/shaders/spirv/CMakeLists.txt
+++ b/renderdoc/driver/shaders/spirv/CMakeLists.txt
@@ -1,89 +1,3 @@
-set(glslang_dir ${RDOC_SOURCE_DIR}/3rdparty/glslang)
-set(glslang_sources
-    ${glslang_dir}/OGLCompilersDLL/InitializeDll.cpp
-    ${glslang_dir}/OGLCompilersDLL/InitializeDll.h
-    ${glslang_dir}/SPIRV/GlslangToSpv.cpp
-    ${glslang_dir}/SPIRV/GlslangToSpv.h
-    ${glslang_dir}/SPIRV/GLSL.std.450.h
-    ${glslang_dir}/SPIRV/GLSL.ext.AMD.h
-    ${glslang_dir}/SPIRV/GLSL.ext.EXT.h
-    ${glslang_dir}/SPIRV/GLSL.ext.KHR.h
-    ${glslang_dir}/SPIRV/GLSL.ext.NV.h
-    ${glslang_dir}/SPIRV/hex_float.h
-    ${glslang_dir}/SPIRV/InReadableOrder.cpp
-    ${glslang_dir}/SPIRV/Logger.cpp
-    ${glslang_dir}/SPIRV/Logger.h
-    ${glslang_dir}/SPIRV/SpvBuilder.cpp
-    ${glslang_dir}/SPIRV/SpvBuilder.h
-    ${glslang_dir}/SPIRV/SpvPostProcess.cpp
-    ${glslang_dir}/SPIRV/spvIR.h
-    ${glslang_dir}/glslang/GenericCodeGen/CodeGen.cpp
-    ${glslang_dir}/glslang/GenericCodeGen/Link.cpp
-    ${glslang_dir}/glslang/Include/arrays.h
-    ${glslang_dir}/glslang/Include/BaseTypes.h
-    ${glslang_dir}/glslang/Include/Common.h
-    ${glslang_dir}/glslang/Include/ConstantUnion.h
-    ${glslang_dir}/glslang/Include/InfoSink.h
-    ${glslang_dir}/glslang/Include/InitializeGlobals.h
-    ${glslang_dir}/glslang/Include/intermediate.h
-    ${glslang_dir}/glslang/Include/PoolAlloc.h
-    ${glslang_dir}/glslang/Include/ResourceLimits.h
-    ${glslang_dir}/glslang/Include/revision.h
-    ${glslang_dir}/glslang/Include/ShHandle.h
-    ${glslang_dir}/glslang/Include/Types.h
-    ${glslang_dir}/glslang/MachineIndependent/Constant.cpp
-    ${glslang_dir}/glslang/MachineIndependent/glslang_tab.cpp
-    ${glslang_dir}/glslang/MachineIndependent/glslang_tab.cpp.h
-    ${glslang_dir}/glslang/MachineIndependent/gl_types.h
-    ${glslang_dir}/glslang/MachineIndependent/iomapper.cpp
-    ${glslang_dir}/glslang/MachineIndependent/iomapper.h
-    ${glslang_dir}/glslang/MachineIndependent/gl_types.h
-    ${glslang_dir}/glslang/MachineIndependent/InfoSink.cpp
-    ${glslang_dir}/glslang/MachineIndependent/Initialize.cpp
-    ${glslang_dir}/glslang/MachineIndependent/Initialize.h
-    ${glslang_dir}/glslang/MachineIndependent/Intermediate.cpp
-    ${glslang_dir}/glslang/MachineIndependent/intermOut.cpp
-    ${glslang_dir}/glslang/MachineIndependent/IntermTraverse.cpp
-    ${glslang_dir}/glslang/MachineIndependent/limits.cpp
-    ${glslang_dir}/glslang/MachineIndependent/linkValidate.cpp
-    ${glslang_dir}/glslang/MachineIndependent/LiveTraverser.h
-    ${glslang_dir}/glslang/MachineIndependent/localintermediate.h
-    ${glslang_dir}/glslang/MachineIndependent/parseConst.cpp
-    ${glslang_dir}/glslang/MachineIndependent/ParseContextBase.cpp
-    ${glslang_dir}/glslang/MachineIndependent/ParseHelper.cpp
-    ${glslang_dir}/glslang/MachineIndependent/ParseHelper.h
-    ${glslang_dir}/glslang/MachineIndependent/PoolAlloc.cpp
-    ${glslang_dir}/glslang/MachineIndependent/propagateNoContraction.cpp
-    ${glslang_dir}/glslang/MachineIndependent/propagateNoContraction.h
-    ${glslang_dir}/glslang/MachineIndependent/preprocessor/PpAtom.cpp
-    ${glslang_dir}/glslang/MachineIndependent/preprocessor/PpContext.cpp
-    ${glslang_dir}/glslang/MachineIndependent/preprocessor/PpContext.h
-    ${glslang_dir}/glslang/MachineIndependent/preprocessor/Pp.cpp
-    ${glslang_dir}/glslang/MachineIndependent/preprocessor/PpScanner.cpp
-    ${glslang_dir}/glslang/MachineIndependent/preprocessor/PpTokens.cpp
-    ${glslang_dir}/glslang/MachineIndependent/preprocessor/PpTokens.h
-    ${glslang_dir}/glslang/MachineIndependent/reflection.cpp
-    ${glslang_dir}/glslang/MachineIndependent/reflection.h
-    ${glslang_dir}/glslang/MachineIndependent/RemoveTree.cpp
-    ${glslang_dir}/glslang/MachineIndependent/RemoveTree.h
-    ${glslang_dir}/glslang/MachineIndependent/ScanContext.h
-    ${glslang_dir}/glslang/MachineIndependent/Scan.cpp
-    ${glslang_dir}/glslang/MachineIndependent/Scan.h
-    ${glslang_dir}/glslang/MachineIndependent/ShaderLang.cpp
-    ${glslang_dir}/glslang/MachineIndependent/SymbolTable.cpp
-    ${glslang_dir}/glslang/MachineIndependent/SymbolTable.h
-    ${glslang_dir}/glslang/MachineIndependent/Versions.cpp
-    ${glslang_dir}/glslang/MachineIndependent/Versions.h
-    ${glslang_dir}/glslang/MachineIndependent/attribute.cpp
-    ${glslang_dir}/glslang/MachineIndependent/attribute.h
-    ${glslang_dir}/glslang/OSDependent/osinclude.h
-    ${glslang_dir}/glslang/Public/ShaderLang.h)
-
-if(UNIX)
-    list(APPEND glslang_sources
-        ${glslang_dir}/glslang/OSDependent/Unix/ossource.cpp)
-endif()
-
 set(sources
     spirv_common.cpp
     spirv_common.h
@@ -91,8 +5,7 @@ set(sources
     spirv_editor.cpp
     spirv_compile.cpp
     spirv_disassemble.cpp
-    spirv_stringise.cpp
-    ${glslang_sources})
+    spirv_stringise.cpp)
 
 add_definitions(-DAMD_EXTENSIONS)
 add_definitions(-DNV_EXTENSIONS)
@@ -102,9 +15,12 @@ set_source_files_properties(${glslang_sources}
 
 if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
     set_source_files_properties(${glslang_dir}/glslang/MachineIndependent/reflection.cpp
-        PROPERTIES COMPILE_FLAGS "-Wno-implicit-fallthrough -Wno-ignored-qualifiers")
+        PROPERTIES COMPILE_FLAGS "-Wno-implicit-fallthrough -Wno-ignored-qualifiers -Wno-switch")
 endif()
 
+set_source_files_properties(spirv_stringise.cpp
+    PROPERTIES COMPILE_FLAGS "-Wno-switch")
+
 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
     set_property(SOURCE "${glslang_sources}"
         APPEND PROPERTY COMPILE_FLAGS "-Wno-unknown-warning-option -Wno-inconsistent-missing-override")
diff --git a/renderdoc/driver/shaders/spirv/spirv_common.cpp b/renderdoc/driver/shaders/spirv/spirv_common.cpp
index 8917b7e..889b7c5 100644
--- a/renderdoc/driver/shaders/spirv/spirv_common.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_common.cpp
@@ -28,7 +28,7 @@
 #undef min
 #undef max
 
-#include "3rdparty/glslang/glslang/Public/ShaderLang.h"
+#include "glslang/Public/ShaderLang.h"
 
 static bool inited = false;
 std::vector<glslang::TShader *> allocatedShaders;
diff --git a/renderdoc/driver/shaders/spirv/spirv_common.h b/renderdoc/driver/shaders/spirv/spirv_common.h
index 0785ba1..19d020d 100644
--- a/renderdoc/driver/shaders/spirv/spirv_common.h
+++ b/renderdoc/driver/shaders/spirv/spirv_common.h
@@ -28,8 +28,8 @@
 #include <string>
 #include <utility>
 #include <vector>
-#include "3rdparty/glslang/SPIRV/spirv.hpp"
-#include "3rdparty/glslang/glslang/Include/ResourceLimits.h"
+#include "SPIRV/spirv.hpp"
+#include "glslang/Include/ResourceLimits.h"
 #include "api/replay/renderdoc_replay.h"
 
 using std::string;
@@ -225,4 +225,4 @@ void glslangGetProgramResourceiv(glslang::TProgram *program, ReflectionInterface
                                  int32_t bufSize, int32_t *length, int32_t *params);
 
 const char *glslangGetProgramResourceName(glslang::TProgram *program,
-                                          ReflectionInterface programInterface, uint32_t index);
\ No newline at end of file
+                                          ReflectionInterface programInterface, uint32_t index);
diff --git a/renderdoc/driver/shaders/spirv/spirv_compile.cpp b/renderdoc/driver/shaders/spirv/spirv_compile.cpp
index f0ca673..c6b7136 100644
--- a/renderdoc/driver/shaders/spirv/spirv_compile.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_compile.cpp
@@ -28,8 +28,8 @@
 #undef min
 #undef max
 
-#include "3rdparty/glslang/SPIRV/GlslangToSpv.h"
-#include "3rdparty/glslang/glslang/Public/ShaderLang.h"
+#include "SPIRV/GlslangToSpv.h"
+#include "glslang/Public/ShaderLang.h"
 
 TBuiltInResource DefaultResources = {
     /*.maxLights =*/32,
diff --git a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp
index 5488255..8b1413e 100644
--- a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp
@@ -37,16 +37,16 @@ using std::make_pair;
 #undef min
 #undef max
 
-#include "3rdparty/glslang/SPIRV/GLSL.std.450.h"
-#include "3rdparty/glslang/SPIRV/spirv.hpp"
-#include "3rdparty/glslang/glslang/Public/ShaderLang.h"
+#include "SPIRV/GLSL.std.450.h"
+#include "SPIRV/spirv.hpp"
+#include "glslang/Public/ShaderLang.h"
 
 // need to manually put these headers in the spv namespace
 namespace spv
 {
-#include "3rdparty/glslang/SPIRV/GLSL.ext.AMD.h"
-#include "3rdparty/glslang/SPIRV/GLSL.ext.KHR.h"
-#include "3rdparty/glslang/SPIRV/GLSL.ext.NV.h"
+#include "SPIRV/GLSL.ext.AMD.h"
+#include "SPIRV/GLSL.ext.KHR.h"
+#include "SPIRV/GLSL.ext.NV.h"
 };
 
 // I'm not sure yet if this makes things clearer or worse. On the one hand
diff --git a/renderdoc/driver/shaders/spirv/spirv_editor.h b/renderdoc/driver/shaders/spirv/spirv_editor.h
index a41bfe9..f5b853c 100644
--- a/renderdoc/driver/shaders/spirv/spirv_editor.h
+++ b/renderdoc/driver/shaders/spirv/spirv_editor.h
@@ -29,7 +29,7 @@
 #include <set>
 #include <string>
 #include <vector>
-#include "3rdparty/glslang/SPIRV/spirv.hpp"
+#include "SPIRV/spirv.hpp"
 #include "api/replay/renderdoc_replay.h"
 
 class SPIRVOperation;
diff --git a/renderdoc/driver/shaders/spirv/spirv_stringise.cpp b/renderdoc/driver/shaders/spirv/spirv_stringise.cpp
index ec5b1c6..1f7973a 100644
--- a/renderdoc/driver/shaders/spirv/spirv_stringise.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_stringise.cpp
@@ -22,7 +22,7 @@
  * THE SOFTWARE.
  ******************************************************************************/
 
-#include "3rdparty/glslang/SPIRV/spirv.hpp"
+#include "SPIRV/spirv.hpp"
 #include "api/replay/renderdoc_replay.h"
 #include "common/common.h"
 
diff --git a/renderdoc/driver/vulkan/vk_debug.cpp b/renderdoc/driver/vulkan/vk_debug.cpp
index e45859e..c40891d 100644
--- a/renderdoc/driver/vulkan/vk_debug.cpp
+++ b/renderdoc/driver/vulkan/vk_debug.cpp
@@ -24,7 +24,7 @@
 
 #include "vk_debug.h"
 #include <float.h>
-#include "3rdparty/glslang/SPIRV/spirv.hpp"
+#include "SPIRV/spirv.hpp"
 #include "data/glsl_shaders.h"
 #include "driver/ihv/amd/amd_counters.h"
 #include "driver/ihv/amd/official/GPUPerfAPI/Include/GPUPerfAPI-VK.h"
diff --git a/renderdoc/driver/vulkan/vk_info.cpp b/renderdoc/driver/vulkan/vk_info.cpp
index c2a7497..ad165ab 100644
--- a/renderdoc/driver/vulkan/vk_info.cpp
+++ b/renderdoc/driver/vulkan/vk_info.cpp
@@ -23,7 +23,7 @@
  ******************************************************************************/
 
 #include "vk_info.h"
-#include "3rdparty/glslang/SPIRV/spirv.hpp"
+#include "SPIRV/spirv.hpp"
 
 void DescSetLayout::Init(VulkanResourceManager *resourceMan, VulkanCreationInfo &info,
                          const VkDescriptorSetLayoutCreateInfo *pCreateInfo)
diff --git a/renderdoc/driver/vulkan/vk_overlay.cpp b/renderdoc/driver/vulkan/vk_overlay.cpp
index 44820fd..10e29a1 100644
--- a/renderdoc/driver/vulkan/vk_overlay.cpp
+++ b/renderdoc/driver/vulkan/vk_overlay.cpp
@@ -23,7 +23,7 @@
  ******************************************************************************/
 
 #include <float.h>
-#include "3rdparty/glslang/SPIRV/spirv.hpp"
+#include "SPIRV/spirv.hpp"
 #include "data/glsl_shaders.h"
 #include "driver/shaders/spirv/spirv_common.h"
 #include "maths/camera.h"
diff --git a/renderdoc/driver/vulkan/vk_postvs.cpp b/renderdoc/driver/vulkan/vk_postvs.cpp
index 64e7415..9c2fa68 100644
--- a/renderdoc/driver/vulkan/vk_postvs.cpp
+++ b/renderdoc/driver/vulkan/vk_postvs.cpp
@@ -23,8 +23,8 @@
  ******************************************************************************/
 
 #include <float.h>
-#include "3rdparty/glslang/SPIRV/GLSL.std.450.h"
-#include "3rdparty/glslang/SPIRV/spirv.hpp"
+#include "SPIRV/GLSL.std.450.h"
+#include "SPIRV/spirv.hpp"
 #include "driver/shaders/spirv/spirv_common.h"
 #include "driver/shaders/spirv/spirv_editor.h"
 #include "vk_core.h"
