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)