From 6a6433bb117c4ff600eda48b4e00eb1380e7da15 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Mon, 9 May 2022 15:43:16 +0200
Subject: [PATCH] Added alternative way to get vulkan headers as submodule

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 .gitmodules             |  6 ++++++
 CMakeLists.txt          |  1 +
 config/lib/Vulkan.cmake | 21 ++++++++++++++++++++-
 lib/Vulkan-Headers      |  1 +
 lib/Vulkan-Hpp          |  1 +
 5 files changed, 29 insertions(+), 1 deletion(-)
 create mode 160000 lib/Vulkan-Headers
 create mode 160000 lib/Vulkan-Hpp

diff --git a/.gitmodules b/.gitmodules
index cc3bf1fc..ef5fa3cf 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -28,3 +28,9 @@
 [submodule "modules/upscaling/lib/FidelityFX-FSR"]
 	path = modules/upscaling/lib/FidelityFX-FSR
 	url = https://github.com/GPUOpen-Effects/FidelityFX-FSR.git
+[submodule "lib/Vulkan-Headers"]
+	path = lib/Vulkan-Headers
+	url = https://github.com/KhronosGroup/Vulkan-Headers.git
+[submodule "lib/Vulkan-Hpp"]
+	path = lib/Vulkan-Hpp
+	url = https://github.com/KhronosGroup/Vulkan-Hpp
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d65f3735..9c3f6df3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -98,6 +98,7 @@ endif()
 include(${vkcv_config}/Sources.cmake)
 
 message(STATUS "Framework:")
+message(" - Includes: [ ${vkcv_includes} ]")
 message(" - Libraries: [ ${vkcv_libraries} ]")
 message(" - Flags: [ ${vkcv_flags} ]")
 
diff --git a/config/lib/Vulkan.cmake b/config/lib/Vulkan.cmake
index e8fe4aee..5100d1b7 100644
--- a/config/lib/Vulkan.cmake
+++ b/config/lib/Vulkan.cmake
@@ -2,7 +2,26 @@
 find_package(Vulkan REQUIRED)
 
 if (Vulkan_FOUND)
-    list(APPEND vkcv_includes ${Vulkan_INCLUDE_DIR})
+    if (NOT EXISTS ${Vulkan_INCLUDE_DIR}/vulkan/vulkan.h)
+        use_git_submodule("${vkcv_lib_path}/Vulkan-Headers" vulkan_headers_status)
+        
+        if (${vulkan_headers_status})
+            list(APPEND vkcv_includes ${vkcv_lib}/Vulkan-Headers/include)
+        endif()
+    else()
+        list(APPEND vkcv_includes ${Vulkan_INCLUDE_DIR})
+    endif()
+
+    if (NOT EXISTS ${Vulkan_INCLUDE_DIR}/vulkan/vulkan.hpp)
+        use_git_submodule("${vkcv_lib_path}/Vulkan-Hpp" vulkan_hpp_status)
+    
+        if (${vulkan_hpp_status})
+            list(APPEND vkcv_includes ${vkcv_lib}/Vulkan-Hpp)
+        endif()
+    else()
+        list(APPEND vkcv_includes ${Vulkan_INCLUDE_DIR})
+    endif()
+    
     list(APPEND vkcv_libraries ${Vulkan_LIBRARIES})
 
     message(${vkcv_config_msg} " Vulkan  -   ")
diff --git a/lib/Vulkan-Headers b/lib/Vulkan-Headers
new file mode 160000
index 00000000..8ba8294c
--- /dev/null
+++ b/lib/Vulkan-Headers
@@ -0,0 +1 @@
+Subproject commit 8ba8294c86d0e99fcb457bedbd573dd678ccc9b3
diff --git a/lib/Vulkan-Hpp b/lib/Vulkan-Hpp
new file mode 160000
index 00000000..ae1b0c36
--- /dev/null
+++ b/lib/Vulkan-Hpp
@@ -0,0 +1 @@
+Subproject commit ae1b0c36df0943795cd621a37e7f7bfd00ac958a
-- 
GitLab