diff -up glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/CMakeLists.txt.dma glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/CMakeLists.txt
--- glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/CMakeLists.txt.dma	2021-11-13 00:42:16.000000000 +1000
+++ glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/CMakeLists.txt	2021-11-23 17:40:46.511754273 +1000
@@ -121,6 +121,13 @@ if(USE_CCACHE)
     endif()
 endif()
 
+# using pkg-config to configure include paths and link libraries
+include(FindPkgConfig)
+pkg_check_modules(SPIRV_TOOLS REQUIRED SPIRV-Tools>=2019.2.1)
+if(BUILD_SHARED_LIBS)
+    pkg_check_modules(SPIRV_TOOLS_SHARED REQUIRED SPIRV-Tools-shared>=2019.2.1)
+endif(BUILD_SHARED_LIBS)
+
 if(ENABLE_CTEST)
     include(CTest)
 endif()
@@ -307,11 +314,7 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMA
     add_subdirectory(External)
 endif()
 
-if(NOT TARGET SPIRV-Tools-opt)
-    set(ENABLE_OPT OFF)
-endif()
-
-if(ENABLE_OPT)
+if(${SPIRV_TOOLS_FOUND} EQUAL 1)
     message(STATUS "optimizer enabled")
     add_definitions(-DENABLE_OPT=1)
 else()
diff -up glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/External/CMakeLists.txt.dma glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/External/CMakeLists.txt
--- glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/External/CMakeLists.txt.dma	2021-11-13 00:42:16.000000000 +1000
+++ glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/External/CMakeLists.txt	2021-11-23 17:40:46.512754300 +1000
@@ -68,10 +68,3 @@ if(BUILD_TESTING)
     endif()
 endif()
 
-if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt)
-    if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools)
-        set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests")
-        add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools spirv-tools)
-    endif()
-endif()
-
diff -up glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/glslang/CMakeLists.txt.dma glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/glslang/CMakeLists.txt
--- glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/glslang/CMakeLists.txt.dma	2021-11-13 00:42:16.000000000 +1000
+++ glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/glslang/CMakeLists.txt	2021-11-23 17:40:46.513754326 +1000
@@ -211,6 +211,8 @@ if(ENABLE_GLSLANG_INSTALL)
                 EXPORT  glslangTargets
                 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
     endif()
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glslang.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc @ONLY)
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
 
     install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
 
diff -up glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/glslang/glslang.pc.cmake.in.dma glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/glslang/glslang.pc.cmake.in
--- glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/glslang/glslang.pc.cmake.in.dma	2021-11-23 17:40:46.513754326 +1000
+++ glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/glslang/glslang.pc.cmake.in	2021-11-23 17:40:46.513754326 +1000
@@ -0,0 +1,11 @@
+    prefix=@CMAKE_INSTALL_PREFIX@
+    exec_prefix=@CMAKE_INSTALL_PREFIX@
+    libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+    includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+    
+    Name: @PROJECT_NAME@
+    Description: OpenGL and OpenGL ES shader front end and validator
+    Requires:
+    Version: @VERSION@
+    Libs: -L${libdir} -lglslang -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper
+    Cflags: -I${includedir}
\ No newline at end of file
diff -up glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/CMakeLists.txt.dma glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/CMakeLists.txt
--- glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/CMakeLists.txt.dma	2021-11-13 00:42:16.000000000 +1000
+++ glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/CMakeLists.txt	2021-11-23 17:40:46.514754353 +1000
@@ -77,6 +77,10 @@ target_include_directories(SPIRV PUBLIC
 
 glslang_add_build_info_dependency(SPIRV)
 
+
+set(SPIRV_NAME spirv)
+set(SPIRV_VERSION 1.3)
+
 if (ENABLE_SPVREMAPPER)
     add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
     set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
@@ -90,15 +94,21 @@ if(WIN32 AND BUILD_SHARED_LIBS)
     endif()
 endif()
 
+target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS})
+target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_CFLAGS_OTHER})
+target_link_libraries(SPIRV ${SPIRV_TOOLS_LIBRARIES})
+if(BUILD_SHARED_LIBS)
+    target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS})
+    target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_CFLAGS_OTHER})
+    target_link_libraries(SPIRV ${SPIRV_TOOLS_SHARED_LIBRARIES})
+endif(BUILD_SHARED_LIBS)
+ 
 if(ENABLE_OPT)
     target_include_directories(SPIRV
         PRIVATE ${spirv-tools_SOURCE_DIR}/include
         PRIVATE ${spirv-tools_SOURCE_DIR}/source
     )
-    target_link_libraries(SPIRV PRIVATE MachineIndependent SPIRV-Tools-opt)
-    target_include_directories(SPIRV PUBLIC
-        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
-        $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
+    target_link_libraries(SPIRV glslang)
 else()
     target_link_libraries(SPIRV PRIVATE MachineIndependent)
 endif()
@@ -133,6 +143,9 @@ if(ENABLE_GLSLANG_INSTALL)
     endif()
 
     install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+    # spirv.pc Configuration
+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/spirv.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc @ONLY)
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
 
     install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
 endif()
diff -up glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/spirv.pc.cmake.in.dma glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/spirv.pc.cmake.in
--- glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/spirv.pc.cmake.in.dma	2021-11-23 17:40:46.514754353 +1000
+++ glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/spirv.pc.cmake.in	2021-11-23 17:40:46.514754353 +1000
@@ -0,0 +1,11 @@
+    prefix=@CMAKE_INSTALL_PREFIX@
+    exec_prefix=@CMAKE_INSTALL_PREFIX@
+    libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+    includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+    
+    Name: @SPIRV_NAME@
+    Description: SPIR-V is a binary intermediate language for representing graphical-shader stages and compute kernels for multiple Khronos APIs, including OpenCL, OpenGL, and Vulkan
+    Requires:
+    Version: @SPIRV_VERSION@
+    Libs: -L${libdir} -lSPIRV
+    Cflags: -I${includedir}
\ No newline at end of file
diff -up glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/SpvTools.cpp.dma glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/SpvTools.cpp
--- glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/SpvTools.cpp.dma	2021-11-13 00:42:16.000000000 +1000
+++ glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/SPIRV/SpvTools.cpp	2021-11-23 17:40:46.515754380 +1000
@@ -43,7 +43,7 @@
 #include <iostream>
 
 #include "SpvTools.h"
-#include "spirv-tools/optimizer.hpp"
+#include <spirv-tools/optimizer.hpp>
 
 namespace glslang {
 
diff -up glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/StandAlone/CMakeLists.txt.dma glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/StandAlone/CMakeLists.txt
--- glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/StandAlone/CMakeLists.txt.dma	2021-11-23 17:40:36.884497081 +1000
+++ glslang-c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5/StandAlone/CMakeLists.txt	2021-11-23 17:40:46.515754380 +1000
@@ -72,6 +72,14 @@ if(ENABLE_SPVREMAPPER)
     set(LIBRARIES ${LIBRARIES} SPVRemapper)
 endif()
 
+if(BUILD_SHARED_LIBS)
+    set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_SHARED_LIBRARIES})
+    target_include_directories(glslangValidator PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS})
+else()
+    set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_LIBRARIES})
+    target_include_directories(glslangValidator PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS})
+endif(BUILD_SHARED_LIBS)
+
 if(WIN32)
     set(LIBRARIES ${LIBRARIES} psapi)
 elseif(UNIX)
@@ -81,9 +89,6 @@ elseif(UNIX)
 endif()
 
 target_link_libraries(glslangValidator ${LIBRARIES})
-target_include_directories(glslangValidator PUBLIC
-    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
-    $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
 
 if(ENABLE_OPT)
     target_include_directories(glslangValidator
