hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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)