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