github.com/igggame/nebulas-go@v2.1.0+incompatible/nbre/3rd_party/build_option_bak/CMakeLists.txt-rocksdb (about) 1 # Prerequisites for Windows: 2 # This cmake build is for Windows 64-bit only. 3 # 4 # Prerequisites: 5 # You must have at least Visual Studio 2015 Update 3. Start the Developer Command Prompt window that is a part of Visual Studio installation. 6 # Run the build commands from within the Developer Command Prompt window to have paths to the compiler and runtime libraries set. 7 # You must have git.exe in your %PATH% environment variable. 8 # 9 # To build Rocksdb for Windows is as easy as 1-2-3-4-5: 10 # 11 # 1. Update paths to third-party libraries in thirdparty.inc file 12 # 2. Create a new directory for build artifacts 13 # mkdir build 14 # cd build 15 # 3. Run cmake to generate project files for Windows, add more options to enable required third-party libraries. 16 # See thirdparty.inc for more information. 17 # sample command: cmake -G "Visual Studio 15 Win64" -DWITH_GFLAGS=1 -DWITH_SNAPPY=1 -DWITH_JEMALLOC=1 -DWITH_JNI=1 .. 18 # 4. Then build the project in debug mode (you may want to add /m[:<N>] flag to run msbuild in <N> parallel threads 19 # or simply /m to use all avail cores) 20 # msbuild rocksdb.sln 21 # 22 # rocksdb.sln build features exclusions of test only code in Release. If you build ALL_BUILD then everything 23 # will be attempted but test only code does not build in Release mode. 24 # 25 # 5. And release mode (/m[:<N>] is also supported) 26 # msbuild rocksdb.sln /p:Configuration=Release 27 # 28 # Linux: 29 # 30 # 1. Install a recent toolchain such as devtoolset-3 if you're on a older distro. C++11 required. 31 # 2. mkdir build; cd build 32 # 3. cmake .. 33 # 4. make -j 34 35 cmake_minimum_required(VERSION 2.8.12) 36 project(rocksdb) 37 enable_language(CXX) 38 enable_language(C) 39 enable_language(ASM) 40 add_definitions(-stdlib=libc++) 41 42 if(POLICY CMP0042) 43 cmake_policy(SET CMP0042 NEW) 44 endif() 45 46 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/modules/") 47 48 option(WITH_JEMALLOC "build with JeMalloc" OFF) 49 option(WITH_SNAPPY "build with SNAPPY" OFF) 50 option(WITH_LZ4 "build with lz4" OFF) 51 option(WITH_ZLIB "build with zlib" OFF) 52 option(WITH_ZSTD "build with zstd" OFF) 53 if(MSVC) 54 # Defaults currently different for GFLAGS. 55 # We will address find_package work a little later 56 option(WITH_GFLAGS "build with GFlags" OFF) 57 option(WITH_XPRESS "build with windows built in compression" OFF) 58 include(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty.inc) 59 else() 60 if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") 61 # FreeBSD has jemalloc as default malloc 62 # but it does not have all the jemalloc files in include/... 63 set(WITH_JEMALLOC ON) 64 else() 65 if(WITH_JEMALLOC) 66 find_package(JeMalloc REQUIRED) 67 add_definitions(-DROCKSDB_JEMALLOC -DJEMALLOC_NO_DEMANGLE) 68 include_directories(${JEMALLOC_INCLUDE_DIR}) 69 list(APPEND THIRDPARTY_LIBS ${JEMALLOC_LIBRARIES}) 70 endif() 71 endif() 72 73 # No config file for this 74 #option(WITH_GFLAGS "build with GFlags" ON) 75 #if(WITH_GFLAGS) 76 #find_package(gflags) 77 #if(gflags_FOUND) 78 #add_definitions(-DGFLAGS=1) 79 #include_directories(${gflags_INCLUDE_DIR}) 80 #list(APPEND THIRDPARTY_LIBS ${gflags_LIBRARIES}) 81 #endif() 82 #endif() 83 84 if(WITH_SNAPPY) 85 find_package(snappy REQUIRED) 86 add_definitions(-DSNAPPY) 87 include_directories(${SNAPPY_INCLUDE_DIR}) 88 list(APPEND THIRDPARTY_LIBS ${SNAPPY_LIBRARIES}) 89 endif() 90 91 if(WITH_ZLIB) 92 find_package(zlib REQUIRED) 93 add_definitions(-DZLIB) 94 include_directories(${ZLIB_INCLUDE_DIR}) 95 list(APPEND THIRDPARTY_LIBS ${ZLIB_LIBRARIES}) 96 endif() 97 98 option(WITH_BZ2 "build with bzip2" OFF) 99 if(WITH_BZ2) 100 find_package(bzip2 REQUIRED) 101 add_definitions(-DBZIP2) 102 include_directories(${BZIP2_INCLUDE_DIR}) 103 list(APPEND THIRDPARTY_LIBS ${BZIP2_LIBRARIES}) 104 endif() 105 106 if(WITH_LZ4) 107 find_package(lz4 REQUIRED) 108 add_definitions(-DLZ4) 109 include_directories(${LZ4_INCLUDE_DIR}) 110 list(APPEND THIRDPARTY_LIBS ${LZ4_LIBRARIES}) 111 endif() 112 113 if(WITH_ZSTD) 114 find_package(zstd REQUIRED) 115 add_definitions(-DZSTD) 116 include_directories(${ZSTD_INCLUDE_DIR}) 117 list(APPEND THIRDPARTY_LIBS ${ZSTD_LIBRARIES}) 118 endif() 119 endif() 120 121 string(TIMESTAMP GIT_DATE_TIME "%Y/%m/%d %H:%M:%S" UTC) 122 123 find_package(Git) 124 125 if(GIT_FOUND AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") 126 if(WIN32) 127 execute_process(COMMAND $ENV{COMSPEC} /C ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR} rev-parse HEAD OUTPUT_VARIABLE GIT_SHA) 128 else() 129 execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR} rev-parse HEAD OUTPUT_VARIABLE GIT_SHA) 130 endif() 131 else() 132 set(GIT_SHA 0) 133 endif() 134 135 string(REGEX REPLACE "[^0-9a-f]+" "" GIT_SHA "${GIT_SHA}") 136 137 138 # Read rocksdb version from version.h header file. 139 file(READ include/rocksdb/version.h version_header_file) 140 string(REGEX MATCH "#define ROCKSDB_MAJOR ([0-9]+)" _ ${version_header_file}) 141 set(ROCKSDB_VERSION_MAJOR ${CMAKE_MATCH_1}) 142 string(REGEX MATCH "#define ROCKSDB_MINOR ([0-9]+)" _ ${version_header_file}) 143 set(ROCKSDB_VERSION_MINOR ${CMAKE_MATCH_1}) 144 string(REGEX MATCH "#define ROCKSDB_PATCH ([0-9]+)" _ ${version_header_file}) 145 set(ROCKSDB_VERSION_PATCH ${CMAKE_MATCH_1}) 146 set(ROCKSDB_VERSION ${ROCKSDB_VERSION_MAJOR}.${ROCKSDB_VERSION_MINOR}.${ROCKSDB_VERSION_PATCH}) 147 148 149 option(WITH_MD_LIBRARY "build with MD" ON) 150 if(WIN32 AND MSVC) 151 if(WITH_MD_LIBRARY) 152 set(RUNTIME_LIBRARY "MD") 153 else() 154 set(RUNTIME_LIBRARY "MT") 155 endif() 156 endif() 157 158 set(BUILD_VERSION_CC ${CMAKE_BINARY_DIR}/build_version.cc) 159 configure_file(util/build_version.cc.in ${BUILD_VERSION_CC} @ONLY) 160 add_library(build_version OBJECT ${BUILD_VERSION_CC}) 161 target_include_directories(build_version PRIVATE 162 ${CMAKE_CURRENT_SOURCE_DIR}/util) 163 if(MSVC) 164 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi /nologo /EHsc /GS /Gd /GR /GF /fp:precise /Zc:wchar_t /Zc:forScope /errorReport:queue") 165 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FC /d2Zi+ /W4 /wd4127 /wd4800 /wd4996 /wd4351 /wd4100 /wd4204 /wd4324") 166 else() 167 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W -Wextra -Wall") 168 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing") 169 if(MINGW) 170 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-format") 171 endif() 172 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 173 if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") 174 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer") 175 include(CheckCXXCompilerFlag) 176 CHECK_CXX_COMPILER_FLAG("-momit-leaf-frame-pointer" HAVE_OMIT_LEAF_FRAME_POINTER) 177 if(HAVE_OMIT_LEAF_FRAME_POINTER) 178 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -momit-leaf-frame-pointer") 179 endif() 180 endif() 181 endif() 182 183 include(CheckCCompilerFlag) 184 if(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le") 185 CHECK_C_COMPILER_FLAG("-maltivec" HAS_ALTIVEC) 186 if(HAS_ALTIVEC) 187 message(STATUS " HAS_ALTIVEC yes") 188 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maltivec") 189 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maltivec") 190 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=power8") 191 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=power8") 192 endif(HAS_ALTIVEC) 193 endif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le") 194 195 option(PORTABLE "build a portable binary" OFF) 196 option(FORCE_SSE42 "force building with SSE4.2, even when PORTABLE=ON" OFF) 197 if(PORTABLE) 198 # MSVC does not need a separate compiler flag to enable SSE4.2; if nmmintrin.h 199 # is available, it is available by default. 200 if(FORCE_SSE42 AND NOT MSVC) 201 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -mpclmul") 202 endif() 203 else() 204 if(MSVC) 205 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2") 206 else() 207 if(NOT HAVE_POWER8) 208 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") 209 endif() 210 endif() 211 endif() 212 213 include(CheckCXXSourceCompiles) 214 if(NOT MSVC) 215 set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul") 216 endif() 217 CHECK_CXX_SOURCE_COMPILES(" 218 #include <cstdint> 219 #include <nmmintrin.h> 220 #include <wmmintrin.h> 221 int main() { 222 volatile uint32_t x = _mm_crc32_u32(0, 0); 223 const auto a = _mm_set_epi64x(0, 0); 224 const auto b = _mm_set_epi64x(0, 0); 225 const auto c = _mm_clmulepi64_si128(a, b, 0x00); 226 auto d = _mm_cvtsi128_si64(c); 227 } 228 " HAVE_SSE42) 229 unset(CMAKE_REQUIRED_FLAGS) 230 if(HAVE_SSE42) 231 add_definitions(-DHAVE_SSE42) 232 add_definitions(-DHAVE_PCLMUL) 233 elseif(FORCE_SSE42) 234 message(FATAL_ERROR "FORCE_SSE42=ON but unable to compile with SSE4.2 enabled") 235 endif() 236 237 CHECK_CXX_SOURCE_COMPILES(" 238 #if defined(_MSC_VER) && !defined(__thread) 239 #define __thread __declspec(thread) 240 #endif 241 int main() { 242 static __thread int tls; 243 } 244 " HAVE_THREAD_LOCAL) 245 if(HAVE_THREAD_LOCAL) 246 add_definitions(-DROCKSDB_SUPPORT_THREAD_LOCAL) 247 endif() 248 249 option(FAIL_ON_WARNINGS "Treat compile warnings as errors" ON) 250 if(FAIL_ON_WARNINGS) 251 if(MSVC) 252 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX") 253 else() # assume GCC 254 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") 255 endif() 256 endif() 257 258 option(WITH_ASAN "build with ASAN" OFF) 259 if(WITH_ASAN) 260 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") 261 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") 262 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") 263 if(WITH_JEMALLOC) 264 message(FATAL "ASAN does not work well with JeMalloc") 265 endif() 266 endif() 267 268 option(WITH_TSAN "build with TSAN" OFF) 269 if(WITH_TSAN) 270 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread -pie") 271 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fPIC") 272 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread -fPIC") 273 if(WITH_JEMALLOC) 274 message(FATAL "TSAN does not work well with JeMalloc") 275 endif() 276 endif() 277 278 option(WITH_UBSAN "build with UBSAN" OFF) 279 if(WITH_UBSAN) 280 add_definitions(-DROCKSDB_UBSAN_RUN) 281 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined") 282 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined") 283 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined") 284 if(WITH_JEMALLOC) 285 message(FATAL "UBSAN does not work well with JeMalloc") 286 endif() 287 endif() 288 289 option(WITH_NUMA "build with NUMA policy support" OFF) 290 if(WITH_NUMA) 291 find_package(NUMA REQUIRED) 292 add_definitions(-DNUMA) 293 include_directories(${NUMA_INCLUDE_DIR}) 294 list(APPEND THIRDPARTY_LIBS ${NUMA_LIBRARIES}) 295 endif() 296 297 option(WITH_TBB "build with Threading Building Blocks (TBB)" OFF) 298 if(WITH_TBB) 299 find_package(TBB REQUIRED) 300 add_definitions(-DTBB) 301 include_directories(${TBB_INCLUDE_DIR}) 302 list(APPEND THIRDPARTY_LIBS ${TBB_LIBRARIES}) 303 endif() 304 305 # Stall notifications eat some performance from inserts 306 option(DISABLE_STALL_NOTIF "Build with stall notifications" OFF) 307 if(DISABLE_STALL_NOTIF) 308 add_definitions(-DROCKSDB_DISABLE_STALL_NOTIFICATION) 309 endif() 310 311 312 if(DEFINED USE_RTTI) 313 if(USE_RTTI) 314 message(STATUS "Enabling RTTI") 315 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI") 316 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DROCKSDB_USE_RTTI") 317 else() 318 if(MSVC) 319 message(STATUS "Disabling RTTI in Release builds. Always on in Debug.") 320 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI") 321 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GR-") 322 else() 323 message(STATUS "Disabling RTTI in Release builds") 324 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-rtti") 325 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-rtti") 326 endif() 327 endif() 328 else() 329 message(STATUS "Enabling RTTI in Debug builds only (default)") 330 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI") 331 if(MSVC) 332 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GR-") 333 else() 334 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-rtti") 335 endif() 336 endif() 337 338 # Used to run CI build and tests so we can run faster 339 option(OPTDBG "Build optimized debug build with MSVC" OFF) 340 if(MSVC) 341 if(OPTDBG) 342 message(STATUS "Debug optimization is enabled") 343 set(CMAKE_CXX_FLAGS_DEBUG "/Oxt /${RUNTIME_LIBRARY}d") 344 else() 345 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /RTC1 /Gm /${RUNTIME_LIBRARY}d") 346 endif() 347 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oxt /Zp8 /Gm- /Gy /${RUNTIME_LIBRARY}") 348 349 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG") 350 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG") 351 endif() 352 353 if(CMAKE_COMPILER_IS_GNUCXX) 354 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-memcmp") 355 endif() 356 357 option(ROCKSDB_LITE "Build RocksDBLite version" OFF) 358 if(ROCKSDB_LITE) 359 add_definitions(-DROCKSDB_LITE) 360 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") 361 endif() 362 363 if(CMAKE_SYSTEM_NAME MATCHES "Cygwin") 364 add_definitions(-fno-builtin-memcmp -DCYGWIN) 365 elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin") 366 add_definitions(-DOS_MACOSX) 367 if(CMAKE_SYSTEM_PROCESSOR MATCHES arm) 368 add_definitions(-DIOS_CROSS_COMPILE -DROCKSDB_LITE) 369 # no debug info for IOS, that will make our library big 370 add_definitions(-DNDEBUG) 371 endif() 372 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") 373 add_definitions(-DOS_LINUX) 374 elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS") 375 add_definitions(-DOS_SOLARIS) 376 elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") 377 add_definitions(-DOS_FREEBSD) 378 elseif(CMAKE_SYSTEM_NAME MATCHES "NetBSD") 379 add_definitions(-DOS_NETBSD) 380 elseif(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") 381 add_definitions(-DOS_OPENBSD) 382 elseif(CMAKE_SYSTEM_NAME MATCHES "DragonFly") 383 add_definitions(-DOS_DRAGONFLYBSD) 384 elseif(CMAKE_SYSTEM_NAME MATCHES "Android") 385 add_definitions(-DOS_ANDROID) 386 elseif(CMAKE_SYSTEM_NAME MATCHES "Windows") 387 add_definitions(-DWIN32 -DOS_WIN -D_MBCS -DWIN64 -DNOMINMAX) 388 if(MINGW) 389 add_definitions(-D_WIN32_WINNT=_WIN32_WINNT_VISTA) 390 endif() 391 endif() 392 393 if(NOT WIN32) 394 add_definitions(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX) 395 endif() 396 397 option(WITH_FALLOCATE "build with fallocate" ON) 398 if(WITH_FALLOCATE) 399 CHECK_CXX_SOURCE_COMPILES(" 400 #include <fcntl.h> 401 #include <linux/falloc.h> 402 int main() { 403 int fd = open(\"/dev/null\", 0); 404 fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, 0, 1024); 405 } 406 " HAVE_FALLOCATE) 407 if(HAVE_FALLOCATE) 408 add_definitions(-DROCKSDB_FALLOCATE_PRESENT) 409 endif() 410 endif() 411 412 CHECK_CXX_SOURCE_COMPILES(" 413 #include <fcntl.h> 414 int main() { 415 int fd = open(\"/dev/null\", 0); 416 sync_file_range(fd, 0, 1024, SYNC_FILE_RANGE_WRITE); 417 } 418 " HAVE_SYNC_FILE_RANGE_WRITE) 419 if(HAVE_SYNC_FILE_RANGE_WRITE) 420 add_definitions(-DROCKSDB_RANGESYNC_PRESENT) 421 endif() 422 423 CHECK_CXX_SOURCE_COMPILES(" 424 #include <pthread.h> 425 int main() { 426 (void) PTHREAD_MUTEX_ADAPTIVE_NP; 427 } 428 " HAVE_PTHREAD_MUTEX_ADAPTIVE_NP) 429 if(HAVE_PTHREAD_MUTEX_ADAPTIVE_NP) 430 add_definitions(-DROCKSDB_PTHREAD_ADAPTIVE_MUTEX) 431 endif() 432 433 include(CheckCXXSymbolExists) 434 check_cxx_symbol_exists(malloc_usable_size malloc.h HAVE_MALLOC_USABLE_SIZE) 435 if(HAVE_MALLOC_USABLE_SIZE) 436 add_definitions(-DROCKSDB_MALLOC_USABLE_SIZE) 437 endif() 438 439 check_cxx_symbol_exists(sched_getcpu sched.h HAVE_SCHED_GETCPU) 440 if(HAVE_SCHED_GETCPU) 441 add_definitions(-DROCKSDB_SCHED_GETCPU_PRESENT) 442 endif() 443 444 include_directories(${PROJECT_SOURCE_DIR}) 445 include_directories(${PROJECT_SOURCE_DIR}/include) 446 include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/third-party/gtest-1.7.0/fused-src) 447 find_package(Threads REQUIRED) 448 449 add_subdirectory(third-party/gtest-1.7.0/fused-src/gtest) 450 451 # Main library source code 452 453 set(SOURCES 454 cache/clock_cache.cc 455 cache/lru_cache.cc 456 cache/sharded_cache.cc 457 db/builder.cc 458 db/c.cc 459 db/column_family.cc 460 db/compacted_db_impl.cc 461 db/compaction.cc 462 db/compaction_iterator.cc 463 db/compaction_job.cc 464 db/compaction_picker.cc 465 db/compaction_picker_universal.cc 466 db/convenience.cc 467 db/db_filesnapshot.cc 468 db/db_impl.cc 469 db/db_impl_write.cc 470 db/db_impl_compaction_flush.cc 471 db/db_impl_files.cc 472 db/db_impl_open.cc 473 db/db_impl_debug.cc 474 db/db_impl_experimental.cc 475 db/db_impl_readonly.cc 476 db/db_info_dumper.cc 477 db/db_iter.cc 478 db/dbformat.cc 479 db/error_handler.cc 480 db/event_helpers.cc 481 db/experimental.cc 482 db/external_sst_file_ingestion_job.cc 483 db/file_indexer.cc 484 db/flush_job.cc 485 db/flush_scheduler.cc 486 db/forward_iterator.cc 487 db/internal_stats.cc 488 db/logs_with_prep_tracker.cc 489 db/log_reader.cc 490 db/log_writer.cc 491 db/malloc_stats.cc 492 db/memtable.cc 493 db/memtable_list.cc 494 db/merge_helper.cc 495 db/merge_operator.cc 496 db/range_del_aggregator.cc 497 db/repair.cc 498 db/snapshot_impl.cc 499 db/table_cache.cc 500 db/table_properties_collector.cc 501 db/transaction_log_impl.cc 502 db/version_builder.cc 503 db/version_edit.cc 504 db/version_set.cc 505 db/wal_manager.cc 506 db/write_batch.cc 507 db/write_batch_base.cc 508 db/write_controller.cc 509 db/write_thread.cc 510 env/env.cc 511 env/env_chroot.cc 512 env/env_encryption.cc 513 env/env_hdfs.cc 514 env/mock_env.cc 515 memtable/alloc_tracker.cc 516 memtable/hash_cuckoo_rep.cc 517 memtable/hash_linklist_rep.cc 518 memtable/hash_skiplist_rep.cc 519 memtable/skiplistrep.cc 520 memtable/vectorrep.cc 521 memtable/write_buffer_manager.cc 522 monitoring/histogram.cc 523 monitoring/histogram_windowing.cc 524 monitoring/instrumented_mutex.cc 525 monitoring/iostats_context.cc 526 monitoring/perf_context.cc 527 monitoring/perf_level.cc 528 monitoring/statistics.cc 529 monitoring/thread_status_impl.cc 530 monitoring/thread_status_updater.cc 531 monitoring/thread_status_util.cc 532 monitoring/thread_status_util_debug.cc 533 options/cf_options.cc 534 options/db_options.cc 535 options/options.cc 536 options/options_helper.cc 537 options/options_parser.cc 538 options/options_sanity_check.cc 539 port/stack_trace.cc 540 table/adaptive_table_factory.cc 541 table/block.cc 542 table/block_based_filter_block.cc 543 table/block_based_table_builder.cc 544 table/block_based_table_factory.cc 545 table/block_based_table_reader.cc 546 table/block_builder.cc 547 table/block_fetcher.cc 548 table/block_prefix_index.cc 549 table/bloom_block.cc 550 table/cuckoo_table_builder.cc 551 table/cuckoo_table_factory.cc 552 table/cuckoo_table_reader.cc 553 table/flush_block_policy.cc 554 table/format.cc 555 table/full_filter_block.cc 556 table/get_context.cc 557 table/index_builder.cc 558 table/iterator.cc 559 table/merging_iterator.cc 560 table/meta_blocks.cc 561 table/partitioned_filter_block.cc 562 table/persistent_cache_helper.cc 563 table/plain_table_builder.cc 564 table/plain_table_factory.cc 565 table/plain_table_index.cc 566 table/plain_table_key_coding.cc 567 table/plain_table_reader.cc 568 table/sst_file_writer.cc 569 table/table_properties.cc 570 table/two_level_iterator.cc 571 tools/db_bench_tool.cc 572 tools/dump/db_dump_tool.cc 573 tools/ldb_cmd.cc 574 tools/ldb_tool.cc 575 tools/sst_dump_tool.cc 576 util/arena.cc 577 util/auto_roll_logger.cc 578 util/bloom.cc 579 util/coding.cc 580 util/compaction_job_stats_impl.cc 581 util/comparator.cc 582 util/compression_context_cache.cc 583 util/concurrent_arena.cc 584 util/crc32c.cc 585 util/delete_scheduler.cc 586 util/dynamic_bloom.cc 587 util/event_logger.cc 588 util/file_reader_writer.cc 589 util/file_util.cc 590 util/filename.cc 591 util/filter_policy.cc 592 util/hash.cc 593 util/log_buffer.cc 594 util/murmurhash.cc 595 util/random.cc 596 util/rate_limiter.cc 597 util/slice.cc 598 util/sst_file_manager_impl.cc 599 util/status.cc 600 util/status_message.cc 601 util/string_util.cc 602 util/sync_point.cc 603 util/sync_point_impl.cc 604 util/testutil.cc 605 util/thread_local.cc 606 util/threadpool_imp.cc 607 util/transaction_test_util.cc 608 util/xxhash.cc 609 utilities/backupable/backupable_db.cc 610 utilities/blob_db/blob_compaction_filter.cc 611 utilities/blob_db/blob_db.cc 612 utilities/blob_db/blob_db_impl.cc 613 utilities/blob_db/blob_dump_tool.cc 614 utilities/blob_db/blob_file.cc 615 utilities/blob_db/blob_log_reader.cc 616 utilities/blob_db/blob_log_writer.cc 617 utilities/blob_db/blob_log_format.cc 618 utilities/cassandra/cassandra_compaction_filter.cc 619 utilities/cassandra/format.cc 620 utilities/cassandra/merge_operator.cc 621 utilities/checkpoint/checkpoint_impl.cc 622 utilities/col_buf_decoder.cc 623 utilities/col_buf_encoder.cc 624 utilities/column_aware_encoding_util.cc 625 utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc 626 utilities/date_tiered/date_tiered_db_impl.cc 627 utilities/debug.cc 628 utilities/document/document_db.cc 629 utilities/document/json_document.cc 630 utilities/document/json_document_builder.cc 631 utilities/env_mirror.cc 632 utilities/env_timed.cc 633 utilities/geodb/geodb_impl.cc 634 utilities/leveldb_options/leveldb_options.cc 635 utilities/lua/rocks_lua_compaction_filter.cc 636 utilities/memory/memory_util.cc 637 utilities/merge_operators/bytesxor.cc 638 utilities/merge_operators/max.cc 639 utilities/merge_operators/put.cc 640 utilities/merge_operators/string_append/stringappend.cc 641 utilities/merge_operators/string_append/stringappend2.cc 642 utilities/merge_operators/uint64add.cc 643 utilities/option_change_migration/option_change_migration.cc 644 utilities/options/options_util.cc 645 utilities/persistent_cache/block_cache_tier.cc 646 utilities/persistent_cache/block_cache_tier_file.cc 647 utilities/persistent_cache/block_cache_tier_metadata.cc 648 utilities/persistent_cache/persistent_cache_tier.cc 649 utilities/persistent_cache/volatile_tier_impl.cc 650 utilities/redis/redis_lists.cc 651 utilities/simulator_cache/sim_cache.cc 652 utilities/spatialdb/spatial_db.cc 653 utilities/table_properties_collectors/compact_on_deletion_collector.cc 654 utilities/transactions/optimistic_transaction_db_impl.cc 655 utilities/transactions/optimistic_transaction.cc 656 utilities/transactions/pessimistic_transaction.cc 657 utilities/transactions/pessimistic_transaction_db.cc 658 utilities/transactions/snapshot_checker.cc 659 utilities/transactions/transaction_base.cc 660 utilities/transactions/transaction_db_mutex_impl.cc 661 utilities/transactions/transaction_lock_mgr.cc 662 utilities/transactions/transaction_util.cc 663 utilities/transactions/write_prepared_txn.cc 664 utilities/transactions/write_prepared_txn_db.cc 665 utilities/transactions/write_unprepared_txn.cc 666 utilities/transactions/write_unprepared_txn_db.cc 667 utilities/ttl/db_ttl_impl.cc 668 utilities/write_batch_with_index/write_batch_with_index.cc 669 utilities/write_batch_with_index/write_batch_with_index_internal.cc 670 $<TARGET_OBJECTS:build_version>) 671 672 if(HAVE_SSE42 AND NOT FORCE_SSE42) 673 if(NOT MSVC) 674 set_source_files_properties( 675 util/crc32c.cc 676 PROPERTIES COMPILE_FLAGS "-msse4.2 -mpclmul") 677 endif() 678 endif() 679 680 if(HAVE_POWER8) 681 list(APPEND SOURCES 682 util/crc32c_ppc.c 683 util/crc32c_ppc_asm.S) 684 endif(HAVE_POWER8) 685 686 if(WIN32) 687 list(APPEND SOURCES 688 port/win/io_win.cc 689 port/win/env_win.cc 690 port/win/env_default.cc 691 port/win/port_win.cc 692 port/win/win_logger.cc 693 port/win/win_thread.cc) 694 695 if(WITH_XPRESS) 696 list(APPEND SOURCES 697 port/win/xpress_win.cc) 698 endif() 699 700 if(WITH_JEMALLOC) 701 list(APPEND SOURCES 702 port/win/win_jemalloc.cc) 703 endif() 704 705 else() 706 list(APPEND SOURCES 707 port/port_posix.cc 708 env/env_posix.cc 709 env/io_posix.cc) 710 endif() 711 712 set(ROCKSDB_STATIC_LIB rocksdb${ARTIFACT_SUFFIX}) 713 set(ROCKSDB_SHARED_LIB rocksdb-shared${ARTIFACT_SUFFIX}) 714 set(ROCKSDB_IMPORT_LIB ${ROCKSDB_SHARED_LIB}) 715 716 option(WITH_LIBRADOS "Build with librados" OFF) 717 if(WITH_LIBRADOS) 718 list(APPEND SOURCES 719 utilities/env_librados.cc) 720 list(APPEND THIRDPARTY_LIBS rados) 721 endif() 722 723 if(WIN32) 724 set(SYSTEM_LIBS ${SYSTEM_LIBS} Shlwapi.lib Rpcrt4.lib) 725 set(LIBS ${ROCKSDB_STATIC_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) 726 else() 727 set(SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT}) 728 set(LIBS ${ROCKSDB_SHARED_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) 729 730 add_library(${ROCKSDB_SHARED_LIB} SHARED ${SOURCES}) 731 target_link_libraries(${ROCKSDB_SHARED_LIB} 732 ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) 733 set_target_properties(${ROCKSDB_SHARED_LIB} PROPERTIES 734 LINKER_LANGUAGE CXX 735 VERSION ${ROCKSDB_VERSION} 736 SOVERSION ${ROCKSDB_VERSION_MAJOR} 737 CXX_STANDARD 11 738 OUTPUT_NAME "rocksdb") 739 endif() 740 741 add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES}) 742 target_link_libraries(${ROCKSDB_STATIC_LIB} 743 ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) 744 745 if(WIN32) 746 add_library(${ROCKSDB_IMPORT_LIB} SHARED ${SOURCES}) 747 target_link_libraries(${ROCKSDB_IMPORT_LIB} 748 ${THIRDPARTY_LIBS} ${SYSTEM_LIBS}) 749 set_target_properties(${ROCKSDB_IMPORT_LIB} PROPERTIES 750 COMPILE_DEFINITIONS "ROCKSDB_DLL;ROCKSDB_LIBRARY_EXPORTS") 751 if(MSVC) 752 set_target_properties(${ROCKSDB_STATIC_LIB} PROPERTIES 753 COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${ROCKSDB_STATIC_LIB}.pdb") 754 set_target_properties(${ROCKSDB_IMPORT_LIB} PROPERTIES 755 COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/${ROCKSDB_IMPORT_LIB}.pdb") 756 endif() 757 endif() 758 759 option(WITH_JNI "build with JNI" OFF) 760 if(WITH_JNI OR JNI) 761 message(STATUS "JNI library is enabled") 762 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/java) 763 else() 764 message(STATUS "JNI library is disabled") 765 endif() 766 767 # Installation and packaging 768 if(WIN32) 769 option(ROCKSDB_INSTALL_ON_WINDOWS "Enable install target on Windows" OFF) 770 endif() 771 if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS) 772 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) 773 if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") 774 # Change default installation prefix on Linux to /usr 775 set(CMAKE_INSTALL_PREFIX /usr CACHE PATH "Install path prefix, prepended onto install directories." FORCE) 776 endif() 777 endif() 778 779 include(GNUInstallDirs) 780 include(CMakePackageConfigHelpers) 781 782 set(package_config_destination ${CMAKE_INSTALL_LIBDIR}/cmake/rocksdb) 783 784 configure_package_config_file( 785 ${CMAKE_CURRENT_LIST_DIR}/cmake/RocksDBConfig.cmake.in RocksDBConfig.cmake 786 INSTALL_DESTINATION ${package_config_destination} 787 ) 788 789 write_basic_package_version_file( 790 RocksDBConfigVersion.cmake 791 VERSION ${ROCKSDB_VERSION} 792 COMPATIBILITY SameMajorVersion 793 ) 794 795 install(DIRECTORY include/rocksdb COMPONENT devel DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") 796 797 install( 798 TARGETS ${ROCKSDB_STATIC_LIB} 799 EXPORT RocksDBTargets 800 COMPONENT devel 801 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" 802 INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" 803 ) 804 805 install( 806 TARGETS ${ROCKSDB_SHARED_LIB} 807 EXPORT RocksDBTargets 808 COMPONENT runtime 809 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" 810 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" 811 INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" 812 ) 813 814 install( 815 EXPORT RocksDBTargets 816 COMPONENT devel 817 DESTINATION ${package_config_destination} 818 NAMESPACE RocksDB:: 819 ) 820 821 install( 822 FILES 823 ${CMAKE_CURRENT_BINARY_DIR}/RocksDBConfig.cmake 824 ${CMAKE_CURRENT_BINARY_DIR}/RocksDBConfigVersion.cmake 825 COMPONENT devel 826 DESTINATION ${package_config_destination} 827 ) 828 endif() 829 830 option(WITH_TESTS "build with tests" ON) 831 if(WITH_TESTS) 832 set(TESTS 833 cache/cache_test.cc 834 cache/lru_cache_test.cc 835 db/column_family_test.cc 836 db/compact_files_test.cc 837 db/compaction_iterator_test.cc 838 db/compaction_job_stats_test.cc 839 db/compaction_job_test.cc 840 db/compaction_picker_test.cc 841 db/comparator_db_test.cc 842 db/corruption_test.cc 843 db/cuckoo_table_db_test.cc 844 db/db_basic_test.cc 845 db/db_blob_index_test.cc 846 db/db_block_cache_test.cc 847 db/db_bloom_filter_test.cc 848 db/db_compaction_filter_test.cc 849 db/db_compaction_test.cc 850 db/db_dynamic_level_test.cc 851 db/db_flush_test.cc 852 db/db_inplace_update_test.cc 853 db/db_io_failure_test.cc 854 db/db_iter_test.cc 855 db/db_iter_stress_test.cc 856 db/db_iterator_test.cc 857 db/db_log_iter_test.cc 858 db/db_memtable_test.cc 859 db/db_merge_operator_test.cc 860 db/db_options_test.cc 861 db/db_properties_test.cc 862 db/db_range_del_test.cc 863 db/db_sst_test.cc 864 db/db_statistics_test.cc 865 db/db_table_properties_test.cc 866 db/db_tailing_iter_test.cc 867 db/db_test.cc 868 db/db_test2.cc 869 db/db_universal_compaction_test.cc 870 db/db_wal_test.cc 871 db/db_write_test.cc 872 db/dbformat_test.cc 873 db/deletefile_test.cc 874 db/error_handler_test.cc 875 db/obsolete_files_test.cc 876 db/external_sst_file_basic_test.cc 877 db/external_sst_file_test.cc 878 db/fault_injection_test.cc 879 db/file_indexer_test.cc 880 db/filename_test.cc 881 db/flush_job_test.cc 882 db/listener_test.cc 883 db/log_test.cc 884 db/manual_compaction_test.cc 885 db/memtable_list_test.cc 886 db/merge_helper_test.cc 887 db/merge_test.cc 888 db/options_file_test.cc 889 db/perf_context_test.cc 890 db/plain_table_db_test.cc 891 db/prefix_test.cc 892 db/repair_test.cc 893 db/table_properties_collector_test.cc 894 db/version_builder_test.cc 895 db/version_edit_test.cc 896 db/version_set_test.cc 897 db/wal_manager_test.cc 898 db/write_batch_test.cc 899 db/write_callback_test.cc 900 db/write_controller_test.cc 901 env/env_basic_test.cc 902 env/env_test.cc 903 env/mock_env_test.cc 904 memtable/inlineskiplist_test.cc 905 memtable/skiplist_test.cc 906 memtable/write_buffer_manager_test.cc 907 monitoring/histogram_test.cc 908 monitoring/iostats_context_test.cc 909 monitoring/statistics_test.cc 910 options/options_settable_test.cc 911 options/options_test.cc 912 table/block_based_filter_block_test.cc 913 table/block_test.cc 914 table/cleanable_test.cc 915 table/cuckoo_table_builder_test.cc 916 table/cuckoo_table_reader_test.cc 917 table/full_filter_block_test.cc 918 table/merger_test.cc 919 table/table_test.cc 920 tools/ldb_cmd_test.cc 921 tools/reduce_levels_test.cc 922 tools/sst_dump_test.cc 923 util/arena_test.cc 924 util/auto_roll_logger_test.cc 925 util/autovector_test.cc 926 util/bloom_test.cc 927 util/coding_test.cc 928 util/crc32c_test.cc 929 util/delete_scheduler_test.cc 930 util/dynamic_bloom_test.cc 931 util/event_logger_test.cc 932 util/file_reader_writer_test.cc 933 util/filelock_test.cc 934 util/hash_test.cc 935 util/heap_test.cc 936 util/rate_limiter_test.cc 937 util/slice_transform_test.cc 938 util/timer_queue_test.cc 939 util/thread_list_test.cc 940 util/thread_local_test.cc 941 utilities/backupable/backupable_db_test.cc 942 utilities/blob_db/blob_db_test.cc 943 utilities/cassandra/cassandra_functional_test.cc 944 utilities/cassandra/cassandra_format_test.cc 945 utilities/cassandra/cassandra_row_merge_test.cc 946 utilities/cassandra/cassandra_serialize_test.cc 947 utilities/checkpoint/checkpoint_test.cc 948 utilities/column_aware_encoding_test.cc 949 utilities/date_tiered/date_tiered_test.cc 950 utilities/document/document_db_test.cc 951 utilities/document/json_document_test.cc 952 utilities/geodb/geodb_test.cc 953 utilities/lua/rocks_lua_test.cc 954 utilities/memory/memory_test.cc 955 utilities/merge_operators/string_append/stringappend_test.cc 956 utilities/object_registry_test.cc 957 utilities/option_change_migration/option_change_migration_test.cc 958 utilities/options/options_util_test.cc 959 utilities/persistent_cache/hash_table_test.cc 960 utilities/persistent_cache/persistent_cache_test.cc 961 utilities/redis/redis_lists_test.cc 962 utilities/spatialdb/spatial_db_test.cc 963 utilities/simulator_cache/sim_cache_test.cc 964 utilities/table_properties_collectors/compact_on_deletion_collector_test.cc 965 utilities/transactions/optimistic_transaction_test.cc 966 utilities/transactions/transaction_test.cc 967 utilities/transactions/write_prepared_transaction_test.cc 968 utilities/transactions/write_unprepared_transaction_test.cc 969 utilities/ttl/ttl_test.cc 970 utilities/write_batch_with_index/write_batch_with_index_test.cc 971 ) 972 if(WITH_LIBRADOS) 973 list(APPEND TESTS utilities/env_librados_test.cc) 974 endif() 975 976 set(BENCHMARKS 977 cache/cache_bench.cc 978 memtable/memtablerep_bench.cc 979 tools/db_bench.cc 980 table/table_reader_bench.cc 981 utilities/column_aware_encoding_exp.cc 982 utilities/persistent_cache/hash_table_bench.cc) 983 add_library(testharness OBJECT util/testharness.cc) 984 foreach(sourcefile ${BENCHMARKS}) 985 get_filename_component(exename ${sourcefile} NAME_WE) 986 add_executable(${exename}${ARTIFACT_SUFFIX} ${sourcefile} 987 $<TARGET_OBJECTS:testharness>) 988 target_link_libraries(${exename}${ARTIFACT_SUFFIX} gtest ${LIBS}) 989 endforeach(sourcefile ${BENCHMARKS}) 990 991 # For test util library that is build only in DEBUG mode 992 # and linked to tests. Add test only code that is not #ifdefed for Release here. 993 set(TESTUTIL_SOURCE 994 db/db_test_util.cc 995 monitoring/thread_status_updater_debug.cc 996 table/mock_table.cc 997 util/fault_injection_test_env.cc 998 utilities/cassandra/test_utils.cc 999 ) 1000 # test utilities are only build in debug 1001 enable_testing() 1002 add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}) 1003 set(TESTUTILLIB testutillib${ARTIFACT_SUFFIX}) 1004 add_library(${TESTUTILLIB} STATIC ${TESTUTIL_SOURCE}) 1005 if(MSVC) 1006 set_target_properties(${TESTUTILLIB} PROPERTIES COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/testutillib${ARTIFACT_SUFFIX}.pdb") 1007 endif() 1008 set_target_properties(${TESTUTILLIB} 1009 PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1 1010 EXCLUDE_FROM_DEFAULT_BUILD_MINRELEASE 1 1011 EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1 1012 ) 1013 1014 # Tests are excluded from Release builds 1015 set(TEST_EXES ${TESTS}) 1016 1017 foreach(sourcefile ${TEST_EXES}) 1018 get_filename_component(exename ${sourcefile} NAME_WE) 1019 add_executable(${CMAKE_PROJECT_NAME}_${exename}${ARTIFACT_SUFFIX} ${sourcefile} 1020 $<TARGET_OBJECTS:testharness>) 1021 set_target_properties(${CMAKE_PROJECT_NAME}_${exename}${ARTIFACT_SUFFIX} 1022 PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1 1023 EXCLUDE_FROM_DEFAULT_BUILD_MINRELEASE 1 1024 EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1 1025 OUTPUT_NAME ${exename}${ARTIFACT_SUFFIX} 1026 ) 1027 target_link_libraries(${CMAKE_PROJECT_NAME}_${exename}${ARTIFACT_SUFFIX} testutillib${ARTIFACT_SUFFIX} gtest ${LIBS}) 1028 if(NOT "${exename}" MATCHES "db_sanity_test") 1029 add_test(NAME ${exename} COMMAND ${exename}${ARTIFACT_SUFFIX}) 1030 add_dependencies(check ${CMAKE_PROJECT_NAME}_${exename}${ARTIFACT_SUFFIX}) 1031 endif() 1032 endforeach(sourcefile ${TEST_EXES}) 1033 1034 # C executables must link to a shared object 1035 set(C_TESTS db/c_test.c) 1036 set(C_TEST_EXES ${C_TESTS}) 1037 1038 foreach(sourcefile ${C_TEST_EXES}) 1039 string(REPLACE ".c" "" exename ${sourcefile}) 1040 string(REGEX REPLACE "^((.+)/)+" "" exename ${exename}) 1041 add_executable(${exename}${ARTIFACT_SUFFIX} ${sourcefile}) 1042 set_target_properties(${exename}${ARTIFACT_SUFFIX} 1043 PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_RELEASE 1 1044 EXCLUDE_FROM_DEFAULT_BUILD_MINRELEASE 1 1045 EXCLUDE_FROM_DEFAULT_BUILD_RELWITHDEBINFO 1 1046 ) 1047 target_link_libraries(${exename}${ARTIFACT_SUFFIX} ${ROCKSDB_IMPORT_LIB} testutillib${ARTIFACT_SUFFIX}) 1048 add_test(NAME ${exename} COMMAND ${exename}${ARTIFACT_SUFFIX}) 1049 add_dependencies(check ${exename}${ARTIFACT_SUFFIX}) 1050 endforeach(sourcefile ${C_TEST_EXES}) 1051 endif() 1052 1053 option(WITH_TOOLS "build with tools" ON) 1054 if(WITH_TOOLS) 1055 add_subdirectory(tools) 1056 endif()