

include(VulkanTools)

#Vulkan_generateFunctionsFile("${CMAKE_CURRENT_LIST_DIR}")

add_library(VulkanWrapper INTERFACE)

target_compile_definitions(VulkanWrapper
INTERFACE
    VK_NO_PROTOTYPES
)

target_sources(VulkanWrapper
INTERFACE
Generated/VulkanPP/AccelerationStructureKHR.cpp
Generated/VulkanPP/AccelerationStructureKHR.hpp
Generated/VulkanPP/AccelerationStructureNV.cpp
Generated/VulkanPP/AccelerationStructureNV.hpp
Generated/VulkanPP/Buffer.cpp
Generated/VulkanPP/Buffer.hpp
#Generated/VulkanPP/BufferCollectionFUCHSIA.cpp
#Generated/VulkanPP/BufferCollectionFUCHSIA.hpp
Generated/VulkanPP/BufferView.cpp
Generated/VulkanPP/BufferView.hpp
Generated/VulkanPP/CommandBuffer.cpp
Generated/VulkanPP/CommandBuffer.hpp
Generated/VulkanPP/CommandPool.cpp
Generated/VulkanPP/CommandPool.hpp
Generated/VulkanPP/CudaFunctionNV.cpp
Generated/VulkanPP/CudaFunctionNV.hpp
Generated/VulkanPP/CudaModuleNV.cpp
Generated/VulkanPP/CudaModuleNV.hpp
Generated/VulkanPP/CuFunctionNVX.cpp
Generated/VulkanPP/CuFunctionNVX.hpp
Generated/VulkanPP/CuModuleNVX.cpp
Generated/VulkanPP/CuModuleNVX.hpp
Generated/VulkanPP/DebugReportCallbackEXT.cpp
Generated/VulkanPP/DebugReportCallbackEXT.hpp
Generated/VulkanPP/DebugUtilsMessengerEXT.cpp
Generated/VulkanPP/DebugUtilsMessengerEXT.hpp
Generated/VulkanPP/DeferredOperationKHR.cpp
Generated/VulkanPP/DeferredOperationKHR.hpp
Generated/VulkanPP/DescriptorPool.cpp
Generated/VulkanPP/DescriptorPool.hpp
Generated/VulkanPP/DescriptorSet.cpp
Generated/VulkanPP/DescriptorSet.hpp
Generated/VulkanPP/DescriptorSetLayout.cpp
Generated/VulkanPP/DescriptorSetLayout.hpp
Generated/VulkanPP/DescriptorUpdateTemplate.cpp
Generated/VulkanPP/DescriptorUpdateTemplate.hpp
Generated/VulkanPP/Device.cpp
Generated/VulkanPP/Device.hpp
Generated/VulkanPP/DeviceMemory.cpp
Generated/VulkanPP/DeviceMemory.hpp
Generated/VulkanPP/DisplayKHR.cpp
Generated/VulkanPP/DisplayKHR.hpp
Generated/VulkanPP/DisplayModeKHR.cpp
Generated/VulkanPP/DisplayModeKHR.hpp
Generated/VulkanPP/Event.cpp
Generated/VulkanPP/Event.hpp
Generated/VulkanPP/ExternalComputeQueueNV.cpp
Generated/VulkanPP/ExternalComputeQueueNV.hpp
Generated/VulkanPP/Fence.cpp
Generated/VulkanPP/Fence.hpp
Generated/VulkanPP/Framebuffer.cpp
Generated/VulkanPP/Framebuffer.hpp
Generated/VulkanPP/Image.cpp
Generated/VulkanPP/Image.hpp
Generated/VulkanPP/ImageView.cpp
Generated/VulkanPP/ImageView.hpp
Generated/VulkanPP/IndirectCommandsLayoutEXT.cpp
Generated/VulkanPP/IndirectCommandsLayoutEXT.hpp
Generated/VulkanPP/IndirectCommandsLayoutNV.cpp
Generated/VulkanPP/IndirectCommandsLayoutNV.hpp
Generated/VulkanPP/IndirectExecutionSetEXT.cpp
Generated/VulkanPP/IndirectExecutionSetEXT.hpp
Generated/VulkanPP/Instance.cpp
Generated/VulkanPP/Instance.hpp
Generated/VulkanPP/MicromapEXT.cpp
Generated/VulkanPP/MicromapEXT.hpp
Generated/VulkanPP/OpticalFlowSessionNV.cpp
Generated/VulkanPP/OpticalFlowSessionNV.hpp
Generated/VulkanPP/PhysicalDevice.cpp
Generated/VulkanPP/PhysicalDevice.hpp
Generated/VulkanPP/Pipeline.cpp
Generated/VulkanPP/Pipeline.hpp
Generated/VulkanPP/PipelineCache.cpp
Generated/VulkanPP/PipelineCache.hpp
Generated/VulkanPP/PipelineLayout.cpp
Generated/VulkanPP/PipelineLayout.hpp
Generated/VulkanPP/PrivateDataSlot.cpp
Generated/VulkanPP/PrivateDataSlot.hpp
Generated/VulkanPP/QueryPool.cpp
Generated/VulkanPP/QueryPool.hpp
Generated/VulkanPP/Queue.cpp
Generated/VulkanPP/Queue.hpp
Generated/VulkanPP/RenderPass.cpp
Generated/VulkanPP/RenderPass.hpp
Generated/VulkanPP/Sampler.cpp
Generated/VulkanPP/Sampler.hpp
Generated/VulkanPP/SamplerYcbcrConversion.cpp
Generated/VulkanPP/SamplerYcbcrConversion.hpp
Generated/VulkanPP/Semaphore.cpp
Generated/VulkanPP/Semaphore.hpp
Generated/VulkanPP/ShaderEXT.cpp
Generated/VulkanPP/ShaderEXT.hpp
Generated/VulkanPP/ShaderModule.cpp
Generated/VulkanPP/ShaderModule.hpp
Generated/VulkanPP/SurfaceKHR.cpp
Generated/VulkanPP/SurfaceKHR.hpp
Generated/VulkanPP/SwapchainKHR.cpp
Generated/VulkanPP/SwapchainKHR.hpp
Generated/VulkanPP/ValidationCacheEXT.cpp
Generated/VulkanPP/ValidationCacheEXT.hpp
Generated/VulkanPP/VideoSessionKHR.cpp
Generated/VulkanPP/VideoSessionKHR.hpp
Generated/VulkanPP/VideoSessionParametersKHR.cpp
Generated/VulkanPP/VideoSessionParametersKHR.hpp
Generated/VulkanPP/VulkanFunctions.cpp
Generated/VulkanPP/VulkanFunctions.hpp

    IntrusivePtr.h
    RefCountedObject.h

    ${Vulkan_INCLUDE_DIR}/../Source/SPIRV-Reflect/spirv_reflect.h
    ${Vulkan_INCLUDE_DIR}/../Source/SPIRV-Reflect/spirv_reflect.c
)

target_include_directories(VulkanWrapper
INTERFACE
    ./
    Generated
    ${Vulkan_INCLUDE_DIR}/../Source/SPIRV-Reflect
)

target_link_libraries(VulkanWrapper
INTERFACE
    Vulkan::Vulkan
    glslang::glslang
)