| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- 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/system/process.cpp
- src/system/shell.cpp
- src/files/files.cpp
- src/tasks/tasks.cpp
- src/schedule/schedule.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}")
- list(APPEND CMAKE_LIBRARY_PATH /usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib)
- # Prefer shared mysqlcppconn so we do not require linkable libmysqlclient at build time
- # (libmysqlcppconn.so already DT_NEEDED libmysqlclient.so.*).
- set(_ngs_saved_suffixes "${CMAKE_FIND_LIBRARY_SUFFIXES}")
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
- find_library(MYSQLCPPCONN_LIB NAMES mysqlcppconn)
- set(CMAKE_FIND_LIBRARY_SUFFIXES "${_ngs_saved_suffixes}")
- if(NOT MYSQLCPPCONN_LIB)
- find_library(MYSQLCPPCONN_LIB NAMES mysqlcppconn REQUIRED)
- endif()
- find_library(MYSQLCLIENT_LIB NAMES mysqlclient)
- find_library(YLIB_LIB NAMES ylib REQUIRED)
- find_library(HPSOCKET_LIB NAMES hpsocket REQUIRED)
- find_library(LEVELDB_LIB NAMES leveldb REQUIRED)
- find_library(SQLITE3_LIB NAMES sqlite3 REQUIRED)
- find_library(SSL_LIB NAMES ssl REQUIRED)
- find_library(CRYPTO_LIB NAMES crypto REQUIRED)
- find_library(Z_LIB NAMES z REQUIRED)
- find_library(X11_LIB NAMES X11 REQUIRED)
- find_library(CURL_LIB NAMES curl REQUIRED)
- set(NGS_LIBS
- ${YLIB_LIB}
- ${MYSQLCPPCONN_LIB}
- ${HPSOCKET_LIB}
- ${LEVELDB_LIB}
- ${SQLITE3_LIB}
- ${SSL_LIB}
- ${CRYPTO_LIB}
- ${Z_LIB}
- ${X11_LIB}
- ${CURL_LIB}
- pthread
- dl
- rt
- util
- stdc++fs
- )
- # Needed when linking a static libmysqlcppconn; optional for the shared .so case.
- if(MYSQLCLIENT_LIB)
- list(APPEND NGS_LIBS ${MYSQLCLIENT_LIB})
- elseif(MYSQLCPPCONN_LIB MATCHES "\\.(a)$")
- message(FATAL_ERROR
- "libmysqlcppconn is static but libmysqlclient was not found. "
- "Install libmysqlclient-dev (or ./build.sh deps).")
- endif()
- target_link_libraries(ngs PRIVATE ${NGS_LIBS})
- message(STATUS "mysqlcppconn: ${MYSQLCPPCONN_LIB}")
- if(MYSQLCLIENT_LIB)
- message(STATUS "mysqlclient: ${MYSQLCLIENT_LIB}")
- else()
- message(STATUS "mysqlclient: (not found, using shared mysqlcppconn runtime dep)")
- endif()
- 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 cmake pkg-config
- libpcre3-dev zlib1g-dev libssl-dev libsqlite3-dev
- libleveldb-dev libmysqlcppconn-dev libmysqlclient-dev
- libcurl4-openssl-dev curl tar
- COMMENT "Install apt build dependencies (ylib and HPSocket must be preinstalled)"
- VERBATIM
- )
|