@@ -2,27 +2,37 @@ include(FetchContent)
22include (CheckIncludeFile )
33include (${LUNA_SOURCE_DIR } /cmake/utils.cmake )
44
5- function (findVulkan )
6- set (VOLK_PULL_IN_VULKAN OFF )
7- makePackageAvailable (https://github.com/zeux/volk.git vulkan-sdk-1.4.*.* Vulkan COMPONENTS volk )
8- set (VOLK_VERSION ${_LUNA_PACKAGE_LATEST_RELEASE_VERSION} )
9- if (NOT Vulkan_volk_FOUND)
10- makePackageAvailable (https://github.com/KhronosGroup/Vulkan-Headers.git vulkan-sdk-1.4.*.* Headers )
11- ensureVersionsMatch ("Volk" VOLK_VERSION "Vulkan Headers" _LUNA_PACKAGE_LATEST_RELEASE_VERSION )
12- else ()
13- add_library (volk::volk ALIAS Vulkan::volk )
14- endif ()
15-
5+ function (findDependencies )
166 disableOptions (SPIRV_REFLECT_EXECUTABLE SPIRV_REFLECT_INSTALL INSTALL_GTEST )
177 set (SPIRV_REFLECT_STATIC_LIB ON )
188 makePackageAvailable (https://github.com/KhronosGroup/SPIRV-Reflect.git vulkan-sdk-1.4.*.* SPIRV-Reflect )
19- ensureVersionsMatch ( "Volk" VOLK_VERSION "SPIRV-Reflect" _LUNA_PACKAGE_LATEST_RELEASE_VERSION )
9+ set (SPIRV_REFLECT_VERSION ${ _LUNA_PACKAGE_LATEST_RELEASE_VERSION} )
2010
2111 makePackageAvailable (https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git v3.*.* VulkanMemoryAllocator CONFIG )
2212
23- add_library (LunaDependencies INTERFACE )
24- target_link_libraries (LunaDependencies INTERFACE volk::volk GPUOpen::VulkanMemoryAllocator spirv-reflect-static )
25- target_compile_options (LunaDependencies INTERFACE $<$<BOOL :${LUNA_DEFINE_VK_NO_PROTOTYPES} >:$<IF :$<OR :$<COMPILE_LANG_AND_ID :C ,MSVC >,$<COMPILE_LANG_AND_ID :CXX ,MSVC >>,/DVK_NO_PROTOTYPES ,-DVK_NO_PROTOTYPES >>)
13+ find_package (Vulkan COMPONENTS volk QUIET )
14+ if (Vulkan_INCLUDE_DIRS STREQUAL "Vulkan_INCLUDE_DIR-NOTFOUND" ) # Unable to find Vulkan headers
15+ makePackageAvailable (https://github.com/KhronosGroup/Vulkan-Headers.git vulkan-sdk-1.4.*.* Headers )
16+ set (HEADERS_VERSION ${_LUNA_PACKAGE_LATEST_RELEASE_VERSION} )
17+ ensureVersionsMatch ("SPIRV-Reflect" SPIRV_REFLECT_VERSION "Vulkan headers" HEADERS_VERSION )
18+ set (Vulkan_INCLUDE_DIR ${VULKAN_HEADERS_SOURCE_DIR } /include)
19+ find_package (Vulkan COMPONENTS volk QUIET ) # This is kept to check if volk is installed on the system
20+ endif ()
21+ if (Vulkan_FOUND) # Able to find Volk
22+ add_library (_LunaInternalLibrary_volk INTERFACE )
23+ target_link_libraries (_LunaInternalLibrary_volk INTERFACE Vulkan::volk )
24+ add_library (volk::volk_headers ALIAS _LunaInternalLibrary_volk )
25+ else () # No Vulkan installation
26+ set (VOLK_HEADERS_ONLY ON )
27+ set (VULKAN_HEADERS_INSTALL_DIR ${Vulkan_INCLUDE_DIR} /../)
28+ makePackageAvailable (https://github.com/zeux/volk.git vulkan-sdk-1.4.*.* volk )
29+ set (VOLK_VERSION ${_LUNA_PACKAGE_LATEST_RELEASE_VERSION} )
30+ ensureVersionsMatch ("Volk" VOLK_VERSION "SPIRV-Reflect" SPIRV_REFLECT_VERSION )
31+ endif ()
32+
33+ add_library (_LunaInternalLibrary_Dependencies INTERFACE )
34+ target_link_libraries (_LunaInternalLibrary_Dependencies INTERFACE volk::volk_headers spirv-reflect-static GPUOpen::VulkanMemoryAllocator )
35+ target_compile_options (_LunaInternalLibrary_Dependencies INTERFACE $<$<BOOL :${LUNA_DEFINE_VK_NO_PROTOTYPES} >:$<IF :$<OR :$<COMPILE_LANG_AND_ID :C ,MSVC >,$<COMPILE_LANG_AND_ID :CXX ,MSVC >>,/DVK_NO_PROTOTYPES ,-DVK_NO_PROTOTYPES >>)
2636endfunction ()
2737
2838function (findSDL3 )
0 commit comments