cmake_minimum_required(VERSION 3.28)
project(gamingcore CXX)

set(CMAKE_CXX_STANDARD 23)

set(SRC
    "src/Main.cpp"
)

if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
    set(LINK_OPTIONS "")
    set(LOG_LEVEL 2)
    set(DEFINITIONS CHECK_MEMORY)
else()
    set(DEFINITIONS ERROR_SIMULATOR CHECK_MEMORY DEBUG_VULKAN)
    set(LOG_LEVEL 4)
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
    include("cmake/gcc_warnings.cmake")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
    include("cmake/clang_warnings.cmake")
endif()
include("${CMAKE_INSTALL_PREFIX}/cmake/add_modules.cmake")

add_executable(table ${SRC})
target_compile_options(table PUBLIC
    ${WARNINGS}
    -fdiagnostics-color=always
)
target_compile_definitions(table
    PRIVATE LOG_LEVEL=${LOG_LEVEL}
    PUBLIC ${DEFINITIONS}
)
target_link_libraries(table PRIVATE core)
add_modules(
    TARGET table
    NAME core_modules
    PREFIX ${CMAKE_INSTALL_PREFIX}/
    FILES ${core_modules}
)
add_modules(
    TARGET table
    NAME table_private_modules
    FILES
    src/Module.cppm
)
target_link_directories(table
    PUBLIC ${CMAKE_INSTALL_PREFIX}/lib
)
