|
|
@@ -0,0 +1,59 @@
|
|
|
+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)
|