cmake_minimum_required(VERSION 3.14)
project(CMS
    VERSION 1.0.0
    DESCRIPTION "Centralized & Distributed Combat Mission Planning System"
    LANGUAGES CXX
)

# ── C++ Standard ──────────────────────────────────────────────────────────────
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# ── MSVC UTF-8 Support ────────────────────────────────────────────────────────
if (MSVC)
    add_compile_options(/utf-8)
endif()

# ── Project Include Directory ──────────────────────────────────────────────────
set(CMS_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")

# ── Main Executable ───────────────────────────────────────────────────────────
add_executable(cms_main
    src/main.cpp
    src/app.cpp
)
target_include_directories(cms_main PRIVATE ${CMS_INCLUDE_DIR})

# ── Test Executable ───────────────────────────────────────────────────────────
add_executable(cms_test
    tests/basic_test.cpp
    src/app.cpp
)
target_include_directories(cms_test PRIVATE ${CMS_INCLUDE_DIR})

# ── Compiler Warnings ─────────────────────────────────────────────────────────
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
    target_compile_options(cms_main PRIVATE -Wall -Wextra -Wpedantic)
    target_compile_options(cms_test  PRIVATE -Wall -Wextra -Wpedantic)
elseif (MSVC)
    target_compile_options(cms_main PRIVATE /W4)
    target_compile_options(cms_test  PRIVATE /W4)
endif()
