cmake_minimum_required(VERSION 3.26)

option(LFT_ENABLE_EXAMPLES "Enable building examples" ON)

if (WIN32)
    set(VOLK_STATIC_DEFINES VK_USE_PLATFORM_WIN32_KHR)
elseif(UNIX)
    set(VOLK_STATIC_DEFINES VK_USE_PLATFORM_XCB_KHR)
endif()


# Please set default paths for vulkan and SDL2
set(VULKAN_PATH "$ENV{VULKAN_SDK}" CACHE STRING "Path to vulkan directory")
set(SDL2_PATH "$ENV{VULKAN_SDK}/cmake" CACHE STRING "Path to SDL2 directory")

list(APPEND CMAKE_PREFIX_PATH "$ENV{VULKAN_SDK}/cmake")

include(FetchContent)

FetchContent_Declare(
        VMA
        GIT_REPOSITORY https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
        GIT_TAG        master
        SOURCE_DIR     ./external/VulkanMemoryAllocator/
        GIT_SHALLOW 1
)

FetchContent_Declare(
        Catch2
        GIT_REPOSITORY https://github.com/catchorg/Catch2.git
        GIT_TAG v3.10.0
        FIND_PACKAGE_ARGS
)

FetchContent_MakeAvailable(VMA Catch2)

find_package(Catch2)

project(loft)

add_definitions(
        -DNOMINMAX=1
        -DVK_LAYERS_ENABLE=1
        -DLOFT_DEBUG=1
        -DLFT_DEBUG_LEVEL_3=1
        # Extensions
        -DVK_EXT_debug_utils
        -DVK_KHR_create_renderpass2
        -DVK_KHR_synchronization2
        -DVK_KHR_shader_non_semantic_info
)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(volk)
add_subdirectory(modules)

if(LFT_ENABLE_EXAMPLES)
	add_subdirectory(examples)
endif()

