| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- cmake_minimum_required(VERSION 3.20)
- file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" SVAPI_VERSION)
- string(STRIP "${SVAPI_VERSION}" SVAPI_VERSION)
- project(smartbotic-vectorapi VERSION ${SVAPI_VERSION} LANGUAGES CXX)
- set(CMAKE_CXX_STANDARD 20)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_CXX_EXTENSIONS OFF)
- set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
- if(NOT CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE)
- endif()
- option(BUILD_TESTS "Build tests" ON)
- option(BUILD_WEBUI "Build the React web UI via npm" ON)
- include(GNUInstallDirs)
- list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
- include(Dependencies)
- find_package(smartbotic-db-client REQUIRED)
- find_package(nlohmann_json REQUIRED)
- find_package(spdlog REQUIRED)
- find_package(OpenSSL REQUIRED)
- # Optional systemd (sd_notify)
- find_package(PkgConfig)
- if(PkgConfig_FOUND)
- pkg_check_modules(SYSTEMD IMPORTED_TARGET libsystemd)
- endif()
- # git commit for version banner
- execute_process(COMMAND git rev-parse --short HEAD
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE SVAPI_GIT_COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE
- ERROR_QUIET)
- if(NOT SVAPI_GIT_COMMIT)
- set(SVAPI_GIT_COMMIT "unknown")
- endif()
- configure_file(${CMAKE_SOURCE_DIR}/cmake/version.hpp.in
- ${CMAKE_BINARY_DIR}/generated/svapi/version.hpp @ONLY)
- add_subdirectory(src)
- if(BUILD_TESTS)
- enable_testing()
- add_subdirectory(tests)
- endif()
- if(BUILD_WEBUI)
- include(WebUI OPTIONAL) # provided by plan 2; absent is fine
- endif()
- # Install: config conffile, api docs
- install(FILES ${CMAKE_SOURCE_DIR}/config/config.json
- DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/smartbotic-vectorapi)
- install(FILES ${CMAKE_SOURCE_DIR}/api/openapi.json
- ${CMAKE_SOURCE_DIR}/api/llms.txt
- DESTINATION ${CMAKE_INSTALL_DATADIR}/smartbotic-vectorapi)
|