cmake_minimum_required(VERSION 3.8)
|
|
project(dbserver)
|
|
include(FindPkgConfig)
|
pkg_check_modules (GLIB REQUIRED IMPORTED_TARGET glib-2.0)
|
pkg_check_modules (DBUS REQUIRED IMPORTED_TARGET dbus-1)
|
pkg_check_modules (SQLITE3 REQUIRED IMPORTED_TARGET sqlite3)
|
pkg_check_modules (JSON-C REQUIRED IMPORTED_TARGET json-c)
|
|
include_directories(
|
${PROJECT_SOURCE_DIR}/./)
|
|
link_directories(
|
${PROJECT_SOURCE_DIR}/./lib)
|
|
aux_source_directory(./ SRCS)
|
add_executable(${PROJECT_NAME}
|
${SRCS})
|
|
option(ENABLE_MINILOGGER "enbale minilogger" ON)
|
if (ENABLE_MINILOGGER)
|
find_package(MiniLogger REQUIRED)
|
add_definitions(-DENABLE_MINILOGGER)
|
target_link_libraries(${PROJECT_NAME} MiniLogger::MiniLogger)
|
endif()
|
|
option(SANITIZER_STATIC "compile with sanitizer (static library linker)" OFF)
|
if(SANITIZER_STATIC)
|
add_definitions(-fsanitize=address -static-libasan -g -ggdb -gdwarf -funwind-tables -rdynamic -O0)
|
add_definitions(-fno-stack-protector -fno-omit-frame-pointer -fsanitize-recover=address)
|
# add_definitions(-fsanitize=undefined)
|
target_link_libraries(${PROJECT_NAME} libasan.a dl m rt)
|
endif()
|
|
option(SANITIZER_DYNAMIC "compile with sanitizer (dynamic library linker)" OFF)
|
if(SANITIZER_DYNAMIC)
|
# NOTE: copy libasan.so with manual operation
|
add_definitions(-fsanitize=address -g -ggdb -gdwarf -funwind-tables -rdynamic -O0)
|
add_definitions(-fno-stack-protector -fno-omit-frame-pointer -fsanitize-recover=address)
|
# add_definitions(-fsanitize=undefined)
|
target_link_libraries(${PROJECT_NAME} asan)
|
endif()
|
|
target_link_libraries(${PROJECT_NAME}
|
PkgConfig::GLIB
|
PkgConfig::DBUS
|
PkgConfig::SQLITE3
|
PkgConfig::JSON-C
|
rkdb
|
gdbus
|
pthread
|
)
|
|
install(TARGETS ${PROJECT_NAME}
|
RUNTIME DESTINATION bin)
|
install(FILES dbusconfig/dbserver.conf
|
DESTINATION share/dbus-1/system.d)
|