

include(VulkanTools)

Vulkan_generateFunctionsFile("${CMAKE_CURRENT_LIST_DIR}")

add_library(VulkanWrapper INTERFACE)

target_compile_definitions(VulkanWrapper
INTERFACE
    VK_NO_PROTOTYPES
)

target_sources(VulkanWrapper
INTERFACE
    Application.cpp
    Application.h
    CMakeLists.txt
    DynamicLibrary.cpp
    DynamicLibrary.h
    FragmentShader_unknown.h
    FunctionTraits.h
    IntrusivePtr.h
    main.cpp
    RefCountedObject.h
    RenderWindow.h
    RenderWindowWindows.cpp
    ShaderCompiler.h
    TempFile.h
    VertexShader_unknown.h
    VulkanApplicationInfo.h
    VulkanBuffer.h
    VulkanCommon.h
    VulkanDynamicLibrary.h
    VulkanFunctions.h
    VulkanImageView.h
    VulkanInstance.cpp
    VulkanInstance.h
    VulkanLibrary.cpp
    VulkanLibrary.h
    VulkanLogicalDevice.cpp
    VulkanLogicalDevice.h
    VulkanMemory.h
    VulkanMemoryProperties.h
    VulkanPhysicalDevice.cpp
    VulkanPhysicalDevice.h
    VulkanQueueFamilyProperties.h
    VulkanSemaphore.h
    VulkanShaderModule.h
    VulkanSwapChain.h
    WindowWindows.h

    VulkanDeviceFunctions.h
    VulkanInstanceFunctions.h
    VulkanGlobalFunctions.h

    Vertex.h
    VulkanPipelineLayout.h
    VulkanPipelineLayout.cpp

    VulkanPipeline.h
    VulkanPipeline.cpp

    VulkanFrameBuffer.h
    VulkanFrameBuffer.cpp

    VulkanDescriptorSetLayout.h
    VulkanDescriptorSetLayout.cpp
    UboPerObjectData.h

    UniformBuffer.h

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

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

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