cmake_minimum_required(VERSION 3.20)
project(new-radar LANGUAGES C CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Output binaries to build/bin
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

# ── Find system packages ──────────────────────────────────────────────────────
find_package(OpenGL REQUIRED)
find_package(glfw3  REQUIRED)
find_package(Freetype REQUIRED)
find_package(GDAL   REQUIRED)

# PostgreSQL (libpq)
find_package(PostgreSQL REQUIRED)

# ── GLAD (bundled) ────────────────────────────────────────────────────────────
add_library(glad STATIC glad/src/glad.c)
target_include_directories(glad PUBLIC ${CMAKE_SOURCE_DIR}/include)

# ── Collect sources ───────────────────────────────────────────────────────────
file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS src/*.cpp)

# ── Main executable ───────────────────────────────────────────────────────────
add_executable(radar ${SOURCES})

target_include_directories(radar PRIVATE
    ${CMAKE_SOURCE_DIR}/include
    ${FREETYPE_INCLUDE_DIRS}
    ${GDAL_INCLUDE_DIRS}
    ${PostgreSQL_INCLUDE_DIRS}
)

target_link_libraries(radar PRIVATE
    glad
    OpenGL::GL
    glfw
    Freetype::Freetype
    ${GDAL_LIBRARIES}
    ${PostgreSQL_LIBRARIES}
    pthread
)

# ── Compiler flags ────────────────────────────────────────────────────────────
target_compile_options(radar PRIVATE
    -Wall
    -Wextra
    -Wpedantic
    $<$<CONFIG:Debug>:-g -O0>
    $<$<CONFIG:Release>:-O2>
)

# AMD Radeon 780M uses Mesa; no vendor-specific extensions
target_compile_definitions(radar PRIVATE
    GL_GLEXT_PROTOTYPES
)
