find_package(VulkanHeaders REQUIRED)
find_package(VulkanLoader REQUIRED)
# find_package(vulkan-validationlayers)
find_package(glfw3 REQUIRED)
find_package(freetype REQUIRED)
find_package(stb REQUIRED)
find_package(SDL3 REQUIRED)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -g")

add_library(graphics SHARED)

target_include_directories(graphics PRIVATE
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/third_party/include/
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}
${stb_INCLUDE_DIR}
${freetype_INCLUDE_DIR}
)

target_sources(graphics PRIVATE
src/vma_port.cpp
src/window.c
src/vulkan_base.c
src/vulkan_commands.c
src/rse_graphics.c
src/math.c
src/mesh_controller.c
src/vulkan_buffers.c
src/vulkan_commons.c
src/vulkan_image.c
src/vulkan_render_pass.c
src/vulkan_swapchain.c
src/text_renderer.c
src/pipeline_builder.c
src/descriptor_builder.c
)

target_link_libraries(graphics PUBLIC
    utilities
    vulkan-headers::vulkan-headers
    Vulkan::Loader
    #   vulkan-validationlayers::vulkan-validationlayers
    glfw
    Freetype::Freetype
    stb::stb
    sdl::sdl
)
