cmake_minimum_required(VERSION 3.16)
project(ngs LANGUAGES CXX)

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

add_definitions(-DHPSOCKET_STATIC_LIB)

add_executable(ngs
    src/main.cpp
    src/utils.cpp
    src/api/api_server.cpp
    src/store/store.cpp
    src/system/metrics.cpp
    src/system/metrics_history.cpp
    src/files/files.cpp
    src/tasks/tasks.cpp
    src/software/software.cpp
    src/software/nginx/nginx.cpp
    src/software/fastweb/fastweb.cpp
    src/software/mysql/mysql.cpp
    src/software/redis/redis.cpp
    src/website/website.cpp
    src/ssl/acme.cpp
    src/auth/auth.cpp
    src/weblog/weblog.cpp
)

target_include_directories(ngs PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/src
    /usr/local/include
)

target_compile_options(ngs PRIVATE -Wall -Wextra)
target_compile_definitions(ngs PRIVATE NGS_SOURCE_DIR="${CMAKE_SOURCE_DIR}")

link_directories(/usr/local/lib /usr/lib/x86_64-linux-gnu)

target_link_libraries(ngs PRIVATE
    ylib
    hpsocket
    leveldb
    sqlite3
    ssl
    crypto
    z
    pthread
    dl
    rt
    stdc++fs
)

install(TARGETS ngs RUNTIME DESTINATION bin)

add_custom_target(install-deps
    COMMAND sudo apt-get update
    COMMAND sudo DEBIAN_FRONTEND=noninteractive apt-get install -y
            build-essential libpcre3-dev zlib1g-dev libssl-dev curl tar
            libleveldb-dev
    COMMENT "Install build dependencies"
    VERBATIM
)
