cmake_minimum_required(VERSION 3.16)
project(shipheart_api LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)

find_package(Qt6 REQUIRED COMPONENTS Core HttpServer Sql)

# ---------------------------------------------------------------------------
# Version dynamique, injectée dans _version.h à CHAQUE build - même mécanisme
# que shipheart_qt (cf synthèse, format yymmdd_HHMMSS, ex: 260924_080910) :
# une cible personnalisée sans suivi de fichier est toujours considérée
# périmée par Ninja/Make et se ré-exécute avant chaque build, contrairement à
# string(TIMESTAMP ...) seul qui ne s'évalue qu'à la configuration du projet.
# ---------------------------------------------------------------------------
add_custom_target(generate_version ALL
    COMMAND ${CMAKE_COMMAND}
        -DOUTPUT_FILE=${CMAKE_CURRENT_SOURCE_DIR}/_version.h
        -P ${CMAKE_CURRENT_SOURCE_DIR}/generate_version.cmake
    COMMENT "Régénération de _version.h (horodatage)"
    BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/_version.h
)

add_executable(shipheart_api
    main.cpp
    # Header listé pour visibilité dans l'IDE (non obligatoire pour la compilation) :
    _version.h
)

add_dependencies(shipheart_api generate_version)

add_custom_command(TARGET shipheart_api POST_BUILD
    COMMAND ${CMAKE_COMMAND}
        -DEXE_PATH=$<TARGET_FILE:shipheart_api>
        -DSRC_DIR=${CMAKE_CURRENT_SOURCE_DIR}
        -P ${CMAKE_CURRENT_SOURCE_DIR}/archive_version.cmake
    COMMENT "Archivage d'une copie horodatée de l'exécutable"
)

target_link_libraries(shipheart_api PRIVATE
    Qt6::Core
    Qt6::HttpServer
    Qt6::Sql
)

install(TARGETS shipheart_api
    DESTINATION /home/koriolan/shipheart/versions/current
)
