mirror of
https://github.com/uroni/hs5.git
synced 2025-10-26 11:17:18 +00:00
114 lines
3.3 KiB
CMake
114 lines
3.3 KiB
CMake
cmake_minimum_required(VERSION 3.21)
|
|
project(hs5 VERSION 0.1.0 LANGUAGES CXX C)
|
|
set(PACKAGE_VERSION "0.1.0")
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
add_custom_target(sqlgen)
|
|
add_custom_command(
|
|
TARGET sqlgen
|
|
COMMAND "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin/sqlite-cpp-sqlgen" "template.db" "DbDao.cpp"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}"
|
|
)
|
|
|
|
set(APIGEN_SCHEMAS
|
|
AddUserParams
|
|
LoginParams
|
|
LoginResp
|
|
HapiError
|
|
AddUserResp
|
|
ListParams
|
|
ListResp
|
|
)
|
|
|
|
add_custom_target(apigen)
|
|
foreach(SCHEMA ${APIGEN_SCHEMAS})
|
|
add_custom_command(
|
|
TARGET apigen
|
|
COMMAND "echo" "Generating ${SCHEMA}..."
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}"
|
|
)
|
|
add_custom_command(
|
|
TARGET apigen
|
|
COMMAND "quicktype" "-s" "schema" "schemas/${SCHEMA}.json" "-o" "apigen/${SCHEMA}.cpp" "--include-location" "global-include" "--type-style" "pascal-case" "--member-style" "camel-case" "--enumerator-style" "camel-case" "--no-boost" "--source-style" "multi-source" "--namespace" "Api" "--code-format" "with-struct"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}"
|
|
)
|
|
add_custom_command(TARGET apigen
|
|
COMMAND ${CMAKE_COMMAND} -E rename
|
|
"apigen/Generators.hpp"
|
|
"apigen/Generators${SCHEMA}.hpp"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}")
|
|
endforeach()
|
|
|
|
set(SCHEMA_SOURCES "")
|
|
foreach(SCHEMA ${APIGEN_SCHEMAS})
|
|
if(EXISTS "apigen/${SCHEMA}.cpp")
|
|
list(APPEND SCHEMA_SOURCES "apigen/${SCHEMA}.cpp")
|
|
endif()
|
|
endforeach()
|
|
|
|
# Get the current git revision
|
|
execute_process(
|
|
COMMAND git rev-parse --short HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_REVISION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# Configure config.h
|
|
configure_file(
|
|
${CMAKE_SOURCE_DIR}/config.h.in
|
|
${CMAKE_BINARY_DIR}/config.h
|
|
@ONLY
|
|
)
|
|
|
|
add_executable(hs5
|
|
lmdb/midl.cpp
|
|
lmdb/mdb.c
|
|
lmdb/cppmidl.cpp
|
|
main.cpp
|
|
s3handler.cpp
|
|
SingleFileStorage.cpp
|
|
data.cpp
|
|
os_functions.cpp
|
|
utils.cpp
|
|
crypt.cpp
|
|
File.cpp
|
|
Buckets.cpp
|
|
DbDao.cpp
|
|
Policy.cpp
|
|
Auth.cpp
|
|
ApiHandler.cpp
|
|
Session.cpp
|
|
cmd.cpp
|
|
StaticHandler.cpp
|
|
wwwgen/www_files.cpp
|
|
${SCHEMA_SOURCES})
|
|
|
|
# Include the generated config.h
|
|
target_include_directories(hs5 PRIVATE ${CMAKE_BINARY_DIR})
|
|
|
|
#set(GCC_COVERAGE_COMPILE_FLAGS "-fcoroutines")
|
|
|
|
add_definitions(${GCC_COVERAGE_COMPILE_FLAGS})
|
|
|
|
find_package(fmt CONFIG REQUIRED)
|
|
find_package(folly CONFIG REQUIRED)
|
|
find_package(proxygen CONFIG REQUIRED)
|
|
find_package(zstd CONFIG REQUIRED)
|
|
find_package(expat CONFIG REQUIRED)
|
|
find_package(unofficial-sodium CONFIG REQUIRED)
|
|
find_package(sqlite-cpp-sqlgen CONFIG REQUIRED)
|
|
find_package(nlohmann_json CONFIG REQUIRED)
|
|
find_path(TCLAP_INCLUDE_DIRS "tclap/Arg.h")
|
|
target_include_directories(hs5 PRIVATE ${TCLAP_INCLUDE_DIRS})
|
|
target_link_libraries(hs5 PRIVATE $<IF:$<TARGET_EXISTS:zstd::libzstd_shared>,zstd::libzstd_shared,zstd::libzstd_static> Folly::folly Folly::folly_deps Folly::follybenchmark Folly::folly_test_util
|
|
proxygen::proxygen proxygen::proxygencurl proxygen::proxygenhttpserver expat::expat unofficial-sodium::sodium SqliteCppGen::SqliteCppGen nlohmann_json::nlohmann_json fmt::fmt)
|
|
|
|
|
|
add_compile_options(-fsanitize=address)
|
|
add_link_options(-fsanitize=address)
|
|
|
|
target_compile_features(hs5 PUBLIC cxx_std_20)
|
|
|