• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1include(ExternalProject)
2include(ProcessorCount)
3ProcessorCount(PROCESSOR_COUNT_VAL)
4
5# IWKV benchmark
6add_executable(iwkv_benchmark iwkv_benchmark.c)
7target_link_libraries(iwkv_benchmark iowow_s)
8set_target_properties(iwkv_benchmark PROPERTIES COMPILE_FLAGS "-DIW_STATIC")
9
10enable_language(CXX)
11
12### LevelDB
13set(LEVELDB_SOURCE_DIR "${CMAKE_BINARY_DIR}/src/extern_leveldb")
14set(LEVELDB_BINARY_DIR "${LEVELDB_SOURCE_DIR}")
15ExternalProject_Add(
16 extern_leveldb
17 GIT_REPOSITORY https://github.com/google/leveldb.git
18 GIT_TAG v1.20
19 PREFIX ${CMAKE_BINARY_DIR}
20 BUILD_IN_SOURCE ON
21 GIT_PROGRESS ON
22 UPDATE_DISCONNECTED ON
23 BUILD_COMMAND make -j${PROCESSOR_COUNT_VAL}
24 CONFIGURE_COMMAND ""
25 INSTALL_COMMAND ""
26 LOG_DOWNLOAD ON
27 LOG_BUILD ON
28 BUILD_BYPRODUCTS "${LEVELDB_BINARY_DIR}/out-static/libleveldb.a"
29)
30add_library(libleveldb STATIC IMPORTED)
31set_target_properties(
32 libleveldb
33 PROPERTIES
34 IMPORTED_LOCATION "${LEVELDB_BINARY_DIR}/out-static/libleveldb.a"
35 IMPORTED_LINK_INTERFACE_LANGUAGES CXX
36)
37add_dependencies(libleveldb extern_leveldb)
38include_directories(AFTER "${LEVELDB_SOURCE_DIR}/include")
39### !LevelDB
40
41# LevelDB benchmark
42add_executable(leveldb_benchmark leveldb_benchmark.c)
43target_link_libraries(leveldb_benchmark libleveldb iowow_s)
44set_target_properties(leveldb_benchmark
45 PROPERTIES COMPILE_FLAGS "-DIW_STATIC"
46)
47
48# LMDB
49set(LMDB_SOURCE_DIR "${CMAKE_BINARY_DIR}/src/extern_lmdb")
50set(LMDB_BINARY_DIR "${LMDB_SOURCE_DIR}")
51ExternalProject_Add(
52 extern_lmdb
53 GIT_REPOSITORY https://github.com/LMDB/lmdb.git
54 GIT_TAG mdb.master
55 PREFIX ${CMAKE_BINARY_DIR}
56 BUILD_IN_SOURCE ON
57 GIT_PROGRESS ON
58 UPDATE_DISCONNECTED ON
59 BUILD_COMMAND make -C libraries/liblmdb
60 CONFIGURE_COMMAND ""
61 INSTALL_COMMAND ""
62 LOG_DOWNLOAD ON
63 LOG_BUILD ON
64 BUILD_BYPRODUCTS "${LMDB_BINARY_DIR}/libraries/liblmdb/liblmdb.a"
65)
66add_library(liblmdb STATIC IMPORTED)
67set_target_properties(
68 liblmdb
69 PROPERTIES
70 IMPORTED_LOCATION "${LMDB_BINARY_DIR}/libraries/liblmdb/liblmdb.a"
71)
72add_dependencies(liblmdb extern_lmdb)
73include_directories(AFTER "${LMDB_SOURCE_DIR}/libraries/liblmdb")
74
75# LMDB benchmark
76add_executable(lmdb_benchmark lmdb_benchmark.c)
77target_link_libraries(lmdb_benchmark liblmdb iowow_s)
78set_target_properties(lmdb_benchmark
79 PROPERTIES COMPILE_FLAGS "-DIW_STATIC"
80)
81
82# KyotoCabinet
83set(KYC_SOURCE_DIR "${CMAKE_BINARY_DIR}/src/extern_kyc")
84set(KYC_BINARY_DIR "${KYC_SOURCE_DIR}")
85ExternalProject_Add(
86 extern_kyc
87 URL https://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.77.tar.gz
88 PREFIX ${CMAKE_BINARY_DIR}
89 BUILD_IN_SOURCE ON
90 UPDATE_DISCONNECTED ON
91 BUILD_COMMAND make
92 CONFIGURE_COMMAND ./configure --disable-zlib --prefix=${CMAKE_BINARY_DIR}/src/extern_kyc/install
93 INSTALL_COMMAND make install
94 LOG_DOWNLOAD ON
95 LOG_BUILD OFF
96 LOG_CONFIGURE OFF
97 BUILD_BYPRODUCTS "${KYC_BINARY_DIR}/install/lib/libkyotocabinet.a"
98)
99add_library(libkyotocabinet STATIC IMPORTED)
100set_target_properties(
101 libkyotocabinet
102 PROPERTIES
103 IMPORTED_LOCATION "${KYC_BINARY_DIR}/install/lib/libkyotocabinet.a"
104 IMPORTED_LINK_INTERFACE_LANGUAGES CXX
105)
106add_dependencies(libkyotocabinet extern_kyc)
107include_directories(AFTER "${KYC_BINARY_DIR}/install/include")
108
109add_executable(kyc_benchmark kyc_benchmark.c)
110target_link_libraries(kyc_benchmark libkyotocabinet iowow_s)
111set_target_properties(kyc_benchmark
112 PROPERTIES COMPILE_FLAGS "-DIW_STATIC"
113)
114
115# TokyoCabinet
116set(TC_SOURCE_DIR "${CMAKE_BINARY_DIR}/src/extern_tc")
117set(TC_BINARY_DIR "${TC_SOURCE_DIR}")
118ExternalProject_Add(
119 extern_tc
120 URL https://fallabs.com/tokyocabinet/tokyocabinet-1.4.48.tar.gz
121 PREFIX ${CMAKE_BINARY_DIR}
122 BUILD_IN_SOURCE ON
123 UPDATE_DISCONNECTED ON
124 BUILD_COMMAND make
125 CONFIGURE_COMMAND ./configure --disable-bzip --disable-exlzo --disable-exlzma --disable-zlib --prefix=${CMAKE_BINARY_DIR}/src/extern_tc/install
126 INSTALL_COMMAND make install
127 LOG_DOWNLOAD ON
128 LOG_BUILD OFF
129 LOG_CONFIGURE OFF
130 BUILD_BYPRODUCTS "${TC_BINARY_DIR}/install/lib/libtokyocabinet.a"
131)
132add_library(libtokyocabinet STATIC IMPORTED)
133set_target_properties(
134 libtokyocabinet
135 PROPERTIES
136 IMPORTED_LOCATION "${TC_BINARY_DIR}/install/lib/libtokyocabinet.a"
137 IMPORTED_LINK_INTERFACE_LANGUAGES C
138)
139add_dependencies(libtokyocabinet extern_tc)
140include_directories(AFTER "${TC_BINARY_DIR}/install/include")
141
142add_executable(tc_benchmark tc_benchmark.c)
143target_link_libraries(tc_benchmark libtokyocabinet iowow_s)
144set_target_properties(tc_benchmark
145 PROPERTIES COMPILE_FLAGS "-DIW_STATIC"
146)
147
148# Wiredtiger
149set(WT_SOURCE_DIR "${CMAKE_BINARY_DIR}/src/extern_wt")
150set(WT_BINARY_DIR "${WT_SOURCE_DIR}")
151ExternalProject_Add(
152 extern_wt
153 GIT_REPOSITORY https://github.com/wiredtiger/wiredtiger.git
154 PREFIX ${WT_BINARY_DIR}
155 BUILD_IN_SOURCE ON
156 UPDATE_DISCONNECTED ON
157 CONFIGURE_COMMAND sh -c "test -f ${WT_BINARY_DIR}/install/include/wiredtiger.h || (./autogen.sh && ./configure --prefix=${WT_BINARY_DIR}/install)"
158 BUILD_COMMAND ""
159 INSTALL_COMMAND sh -c "test -f ${WT_BINARY_DIR}/install/include/wiredtiger.h || make install"
160 LOG_DOWNLOAD ON
161 LOG_BUILD OFF
162 LOG_CONFIGURE OFF
163 BUILD_BYPRODUCTS "${WT_BINARY_DIR}/install/lib/libwiredtiger.a"
164)
165add_library(libwiredtiger STATIC IMPORTED)
166set_target_properties(
167 libwiredtiger
168 PROPERTIES
169 IMPORTED_LOCATION "${WT_BINARY_DIR}/install/lib/libwiredtiger.a"
170 IMPORTED_LINK_INTERFACE_LANGUAGES C
171)
172add_dependencies(libwiredtiger extern_wt)
173include_directories(AFTER "${WT_BINARY_DIR}/install/include")
174
175add_executable(wiredtiger_benchmark wiredtiger_benchmark.c)
176target_link_libraries(wiredtiger_benchmark libwiredtiger iowow_s "-ldl")
177set_target_properties(wiredtiger_benchmark
178 PROPERTIES COMPILE_FLAGS "-DIW_STATIC"
179)
180
181# BDB 5.3
182find_library(BDB_LIBRARY NAMES db)
183if (BDB_LIBRARY)
184 add_executable(bdb_benchmark bdb_benchmark.c)
185 target_link_libraries(bdb_benchmark db iowow_s)
186endif()
187
188
189