-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
81 lines (69 loc) · 2.57 KB
/
CMakeLists.txt
File metadata and controls
81 lines (69 loc) · 2.57 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
cmake_minimum_required(VERSION 3.10)
project(kvarkDB LANGUAGES C)
# ===== Compiler Options =====
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "-Wall -Wextra -Werror -pedantic")
# ===== Required Dependencies =====
find_package(PkgConfig REQUIRED)
pkg_check_modules(LZ4 REQUIRED liblz4)
pkg_check_modules(ZSTD REQUIRED libzstd)
pkg_check_modules(SNAPPY REQUIRED snappy)
find_package(Threads REQUIRED)
# ===== Main Library =====
add_library(kvarkdb STATIC
src/wal.c
src/bloomfilter.c
src/compress.c
src/fnv_hash.c
src/skiplist.c
src/memtable.c
src/sstable.c
src/kvarkdb.c
)
target_include_directories(kvarkdb PUBLIC
${LZ4_INCLUDE_DIRS}
${ZSTD_INCLUDE_DIRS}
${SNAPPY_INCLUDE_DIRS}
)
target_link_libraries(kvarkdb PUBLIC
${LZ4_LIBRARIES}
${ZSTD_LIBRARIES}
${SNAPPY_LIBRARIES}
Threads::Threads
)
# ===== REPL Binary =====
add_executable(kvarkdb_repl src/main.c src/repl.c)
target_link_libraries(kvarkdb_repl PRIVATE kvarkdb)
# ===== Tests =====
add_executable(wal_tests test/wal__tests.c)
add_executable(compress_tests test/compress__tests.c)
add_executable(bloomfilter_tests test/bloomfilter__tests.c)
add_executable(skiplist_tests test/skiplist__tests.c)
add_executable(memtable_tests test/memtable__tests.c)
add_executable(sstable_tests test/sstable__tests.c)
add_executable(kvarkdb_tests test/kvardkdb__tests.c)
add_executable(compaction_tests test/compaction__tests.c)
add_executable(wal_integration_tests test/wal_integration__tests.c)
target_link_libraries(wal_tests PRIVATE kvarkdb)
target_link_libraries(compress_tests PRIVATE kvarkdb)
target_link_libraries(bloomfilter_tests PRIVATE kvarkdb)
target_link_libraries(skiplist_tests PRIVATE kvarkdb)
target_link_libraries(memtable_tests PRIVATE kvarkdb)
target_link_libraries(sstable_tests PRIVATE kvarkdb)
target_link_libraries(kvarkdb_tests PRIVATE kvarkdb)
target_link_libraries(compaction_tests PRIVATE kvarkdb)
target_link_libraries(wal_integration_tests PRIVATE kvarkdb)
# ===== Testing Support =====
enable_testing()
add_test(NAME WalTests COMMAND wal_tests)
add_test(NAME CompressTests COMMAND compress_tests)
add_test(NAME BloomfilterTests COMMAND bloomfilter_tests)
add_test(NAME SkiplistTests COMMAND skiplist_tests)
add_test(NAME MemtableTests COMMAND memtable_tests)
add_test(NAME SstableTests COMMAND sstable_tests)
add_test(NAME KvarkdbTests COMMAND kvarkdb_tests)
add_test(NAME CompactionTests COMMAND compaction_tests)
add_test(NAME WalIntegrationTests COMMAND wal_integration_tests)
# ===== Installation =====
install(TARGETS kvarkdb DESTINATION lib)
install(FILES src/wal.h DESTINATION include)