cmake_minimum_required(VERSION 3.28)
project(oatmeal)
set(CMAKE_CXX_STANDARD 23)

if((${CMAKE_BUILD_TYPE} STREQUAL "Debug") AND (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows"))
    set(BUILD_SHARED_LIBS ON)
else()
    set(BUILD_SHARED_LIBS OFF)
endif()

##### Dependencies #####s
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
option(ENABLE_CPP20_MODULE "Enable C++ 20 module support for Vulkan" OFF)

file(GLOB REQUIRED_CMAKE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/cmake/*.required.cmake")
foreach(cmake_file ${REQUIRED_CMAKE_FILES})
    include(${cmake_file})
endforeach()

file(GLOB CMAKE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/cmake/*.cmake")
foreach(cmake_file ${CMAKE_FILES})
    include(${cmake_file})
endforeach()

file(GLOB_RECURSE SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
file(GLOB_RECURSE HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h")
add_library(oatmeal ${SRC_FILES} ${HEADER_FILES})

target_include_directories(oatmeal PUBLIC
    "${glfw_SOURCE_DIR}/include"
    "${glm_SOURCE_DIR}"
    "${stb-cmake-wrapper_SOURCE_DIR}"
    "${ktx_SOURCE_DIR}/include"
    "${CMAKE_CURRENT_SOURCE_DIR}/src"
)

target_link_libraries(oatmeal PUBLIC
    glfw
    Vulkan::cppm
    glm
    stb::image
    ktx
)
