github.com/igggame/nebulas-go@v2.1.0+incompatible/nbre/3rd_party/build_option_bak/Makefile-rocksdb (about) 1 # Copyright (c) 2011 The LevelDB Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. See the AUTHORS file for names of contributors. 4 5 # Inherit some settings from environment variables, if available 6 7 #----------------------------------------------- 8 9 BASH_EXISTS := $(shell which bash) 10 SHELL := $(shell which bash) 11 12 CLEAN_FILES = # deliberately empty, so we can append below. 13 CFLAGS += ${EXTRA_CFLAGS} 14 CXXFLAGS += ${EXTRA_CXXFLAGS} 15 CXXFLAGS += -stdlib=libc++ 16 LDFLAGS += $(EXTRA_LDFLAGS) 17 LDFLAGS += -lc++ 18 MACHINE ?= $(shell uname -m) 19 ARFLAGS = ${EXTRA_ARFLAGS} rs 20 STRIPFLAGS = -S -x 21 22 # Transform parallel LOG output into something more readable. 23 perl_command = perl -n \ 24 -e '@a=split("\t",$$_,-1); $$t=$$a[8];' \ 25 -e '$$t =~ /.*if\s\[\[\s"(.*?\.[\w\/]+)/ and $$t=$$1;' \ 26 -e '$$t =~ s,^\./,,;' \ 27 -e '$$t =~ s, >.*,,; chomp $$t;' \ 28 -e '$$t =~ /.*--gtest_filter=(.*?\.[\w\/]+)/ and $$t=$$1;' \ 29 -e 'printf "%7.3f %s %s\n", $$a[3], $$a[6] == 0 ? "PASS" : "FAIL", $$t' 30 quoted_perl_command = $(subst ','\'',$(perl_command)) 31 32 # DEBUG_LEVEL can have three values: 33 # * DEBUG_LEVEL=2; this is the ultimate debug mode. It will compile rocksdb 34 # without any optimizations. To compile with level 2, issue `make dbg` 35 # * DEBUG_LEVEL=1; debug level 1 enables all assertions and debug code, but 36 # compiles rocksdb with -O2 optimizations. this is the default debug level. 37 # `make all` or `make <binary_target>` compile RocksDB with debug level 1. 38 # We use this debug level when developing RocksDB. 39 # * DEBUG_LEVEL=0; this is the debug level we use for release. If you're 40 # running rocksdb in production you most definitely want to compile RocksDB 41 # with debug level 0. To compile with level 0, run `make shared_lib`, 42 # `make install-shared`, `make static_lib`, `make install-static` or 43 # `make install` 44 45 # Set the default DEBUG_LEVEL to 1 46 DEBUG_LEVEL?=1 47 48 ifeq ($(MAKECMDGOALS),dbg) 49 DEBUG_LEVEL=2 50 endif 51 52 ifeq ($(MAKECMDGOALS),clean) 53 DEBUG_LEVEL=0 54 endif 55 56 ifeq ($(MAKECMDGOALS),release) 57 DEBUG_LEVEL=0 58 endif 59 60 ifeq ($(MAKECMDGOALS),shared_lib) 61 DEBUG_LEVEL=0 62 endif 63 64 ifeq ($(MAKECMDGOALS),install-shared) 65 DEBUG_LEVEL=0 66 endif 67 68 ifeq ($(MAKECMDGOALS),static_lib) 69 DEBUG_LEVEL=0 70 endif 71 72 ifeq ($(MAKECMDGOALS),install-static) 73 DEBUG_LEVEL=0 74 endif 75 76 ifeq ($(MAKECMDGOALS),install) 77 DEBUG_LEVEL=0 78 endif 79 80 ifeq ($(MAKECMDGOALS),rocksdbjavastatic) 81 ifneq ($(DEBUG_LEVEL),2) 82 DEBUG_LEVEL=0 83 endif 84 endif 85 86 ifeq ($(MAKECMDGOALS),rocksdbjavastaticrelease) 87 DEBUG_LEVEL=0 88 endif 89 90 ifeq ($(MAKECMDGOALS),rocksdbjavastaticreleasedocker) 91 DEBUG_LEVEL=0 92 endif 93 94 ifeq ($(MAKECMDGOALS),rocksdbjavastaticpublish) 95 DEBUG_LEVEL=0 96 endif 97 98 # compile with -O2 if debug level is not 2 99 ifneq ($(DEBUG_LEVEL), 2) 100 OPT += -O2 -fno-omit-frame-pointer 101 # Skip for archs that don't support -momit-leaf-frame-pointer 102 ifeq (,$(shell $(CXX) -fsyntax-only -momit-leaf-frame-pointer -xc /dev/null 2>&1)) 103 OPT += -momit-leaf-frame-pointer 104 endif 105 endif 106 107 ifeq (,$(shell $(CXX) -fsyntax-only -faligned-new -xc++ /dev/null 2>&1)) 108 CXXFLAGS += -faligned-new -DHAVE_ALIGNED_NEW 109 endif 110 111 ifeq (,$(shell $(CXX) -fsyntax-only -maltivec -xc /dev/null 2>&1)) 112 CXXFLAGS += -DHAS_ALTIVEC 113 CFLAGS += -DHAS_ALTIVEC 114 HAS_ALTIVEC=1 115 endif 116 117 ifeq (,$(shell $(CXX) -fsyntax-only -mcpu=power8 -xc /dev/null 2>&1)) 118 CXXFLAGS += -DHAVE_POWER8 119 CFLAGS += -DHAVE_POWER8 120 HAVE_POWER8=1 121 endif 122 123 # if we're compiling for release, compile without debug code (-DNDEBUG) 124 ifeq ($(DEBUG_LEVEL),0) 125 OPT += -DNDEBUG 126 127 ifneq ($(USE_RTTI), 1) 128 CXXFLAGS += -fno-rtti 129 else 130 CXXFLAGS += -DROCKSDB_USE_RTTI 131 endif 132 else 133 ifneq ($(USE_RTTI), 0) 134 CXXFLAGS += -DROCKSDB_USE_RTTI 135 else 136 CXXFLAGS += -fno-rtti 137 endif 138 139 $(warning Warning: Compiling in debug mode. Don't use the resulting binary in production) 140 endif 141 142 #----------------------------------------------- 143 include src.mk 144 145 AM_DEFAULT_VERBOSITY = 0 146 147 AM_V_GEN = $(am__v_GEN_$(V)) 148 am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) 149 am__v_GEN_0 = @echo " GEN " $@; 150 am__v_GEN_1 = 151 AM_V_at = $(am__v_at_$(V)) 152 am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) 153 am__v_at_0 = @ 154 am__v_at_1 = 155 156 AM_V_CC = $(am__v_CC_$(V)) 157 am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) 158 am__v_CC_0 = @echo " CC " $@; 159 am__v_CC_1 = 160 CCLD = $(CC) 161 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 162 AM_V_CCLD = $(am__v_CCLD_$(V)) 163 am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) 164 am__v_CCLD_0 = @echo " CCLD " $@; 165 am__v_CCLD_1 = 166 AM_V_AR = $(am__v_AR_$(V)) 167 am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) 168 am__v_AR_0 = @echo " AR " $@; 169 am__v_AR_1 = 170 171 ifdef ROCKSDB_USE_LIBRADOS 172 LIB_SOURCES += utilities/env_librados.cc 173 LDFLAGS += -lrados 174 endif 175 176 AM_LINK = $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) $(COVERAGEFLAGS) 177 # detect what platform we're building on 178 dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; export PORTABLE="$(PORTABLE)"; "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk")) 179 # this file is generated by the previous line to set build flags and sources 180 include make_config.mk 181 CLEAN_FILES += make_config.mk 182 183 missing_make_config_paths := $(shell \ 184 grep "\/\S*" -o $(CURDIR)/make_config.mk | \ 185 while read path; \ 186 do [ -e $$path ] || echo $$path; \ 187 done | sort | uniq) 188 189 $(foreach path, $(missing_make_config_paths), \ 190 $(warning Warning: $(path) dont exist)) 191 192 ifeq ($(PLATFORM), OS_AIX) 193 # no debug info 194 else ifneq ($(PLATFORM), IOS) 195 CFLAGS += -g 196 CXXFLAGS += -g 197 else 198 # no debug info for IOS, that will make our library big 199 OPT += -DNDEBUG 200 endif 201 202 ifeq ($(PLATFORM), OS_AIX) 203 ARFLAGS = -X64 rs 204 STRIPFLAGS = -X64 -x 205 endif 206 207 ifeq ($(PLATFORM), OS_SOLARIS) 208 PLATFORM_CXXFLAGS += -D _GLIBCXX_USE_C99 209 endif 210 ifneq ($(filter -DROCKSDB_LITE,$(OPT)),) 211 # found 212 CFLAGS += -fno-exceptions 213 CXXFLAGS += -fno-exceptions 214 # LUA is not supported under ROCKSDB_LITE 215 LUA_PATH = 216 endif 217 218 # ASAN doesn't work well with jemalloc. If we're compiling with ASAN, we should use regular malloc. 219 ifdef COMPILE_WITH_ASAN 220 DISABLE_JEMALLOC=1 221 EXEC_LDFLAGS += -fsanitize=address 222 PLATFORM_CCFLAGS += -fsanitize=address 223 PLATFORM_CXXFLAGS += -fsanitize=address 224 endif 225 226 # TSAN doesn't work well with jemalloc. If we're compiling with TSAN, we should use regular malloc. 227 ifdef COMPILE_WITH_TSAN 228 DISABLE_JEMALLOC=1 229 EXEC_LDFLAGS += -fsanitize=thread 230 PLATFORM_CCFLAGS += -fsanitize=thread -fPIC 231 PLATFORM_CXXFLAGS += -fsanitize=thread -fPIC 232 # Turn off -pg when enabling TSAN testing, because that induces 233 # a link failure. TODO: find the root cause 234 PROFILING_FLAGS = 235 # LUA is not supported under TSAN 236 LUA_PATH = 237 # Limit keys for crash test under TSAN to avoid error: 238 # "ThreadSanitizer: DenseSlabAllocator overflow. Dying." 239 CRASH_TEST_EXT_ARGS += --max_key=1000000 240 endif 241 242 # AIX doesn't work with -pg 243 ifeq ($(PLATFORM), OS_AIX) 244 PROFILING_FLAGS = 245 endif 246 247 # USAN doesn't work well with jemalloc. If we're compiling with USAN, we should use regular malloc. 248 ifdef COMPILE_WITH_UBSAN 249 DISABLE_JEMALLOC=1 250 # Suppress alignment warning because murmurhash relies on casting unaligned 251 # memory to integer. Fixing it may cause performance regression. 3-way crc32 252 # relies on it too, although it can be rewritten to eliminate with minimal 253 # performance regression. 254 EXEC_LDFLAGS += -fsanitize=undefined -fno-sanitize-recover=all 255 PLATFORM_CCFLAGS += -fsanitize=undefined -fno-sanitize-recover=all -DROCKSDB_UBSAN_RUN 256 PLATFORM_CXXFLAGS += -fsanitize=undefined -fno-sanitize-recover=all -DROCKSDB_UBSAN_RUN 257 endif 258 259 ifdef ROCKSDB_VALGRIND_RUN 260 PLATFORM_CCFLAGS += -DROCKSDB_VALGRIND_RUN 261 PLATFORM_CXXFLAGS += -DROCKSDB_VALGRIND_RUN 262 endif 263 264 ifndef DISABLE_JEMALLOC 265 ifdef JEMALLOC 266 PLATFORM_CXXFLAGS += -DROCKSDB_JEMALLOC -DJEMALLOC_NO_DEMANGLE 267 PLATFORM_CCFLAGS += -DROCKSDB_JEMALLOC -DJEMALLOC_NO_DEMANGLE 268 endif 269 ifdef WITH_JEMALLOC_FLAG 270 PLATFORM_LDFLAGS += -ljemalloc 271 JAVA_LDFLAGS += -ljemalloc 272 endif 273 EXEC_LDFLAGS := $(JEMALLOC_LIB) $(EXEC_LDFLAGS) 274 PLATFORM_CXXFLAGS += $(JEMALLOC_INCLUDE) 275 PLATFORM_CCFLAGS += $(JEMALLOC_INCLUDE) 276 endif 277 278 export GTEST_THROW_ON_FAILURE=1 279 export GTEST_HAS_EXCEPTIONS=1 280 GTEST_DIR = ./third-party/gtest-1.7.0/fused-src 281 # AIX: pre-defined system headers are surrounded by an extern "C" block 282 ifeq ($(PLATFORM), OS_AIX) 283 PLATFORM_CCFLAGS += -I$(GTEST_DIR) 284 PLATFORM_CXXFLAGS += -I$(GTEST_DIR) 285 else 286 PLATFORM_CCFLAGS += -isystem $(GTEST_DIR) 287 PLATFORM_CXXFLAGS += -isystem $(GTEST_DIR) 288 endif 289 290 # This (the first rule) must depend on "all". 291 default: all 292 293 WARNING_FLAGS = -W -Wextra -Wall -Wsign-compare -Wshadow \ 294 -Wunused-parameter 295 296 ifeq ($(PLATFORM), OS_OPENBSD) 297 WARNING_FLAGS += -Wno-unused-lambda-capture 298 endif 299 300 ifndef DISABLE_WARNING_AS_ERROR 301 WARNING_FLAGS += -Werror 302 endif 303 304 305 ifdef LUA_PATH 306 307 ifndef LUA_INCLUDE 308 LUA_INCLUDE=$(LUA_PATH)/include 309 endif 310 311 LUA_INCLUDE_FILE=$(LUA_INCLUDE)/lualib.h 312 313 ifeq ("$(wildcard $(LUA_INCLUDE_FILE))", "") 314 # LUA_INCLUDE_FILE does not exist 315 $(error Cannot find lualib.h under $(LUA_INCLUDE). Try to specify both LUA_PATH and LUA_INCLUDE manually) 316 endif 317 LUA_FLAGS = -I$(LUA_INCLUDE) -DLUA -DLUA_COMPAT_ALL 318 CFLAGS += $(LUA_FLAGS) 319 CXXFLAGS += $(LUA_FLAGS) 320 321 ifndef LUA_LIB 322 LUA_LIB = $(LUA_PATH)/lib/liblua.a 323 endif 324 ifeq ("$(wildcard $(LUA_LIB))", "") # LUA_LIB does not exist 325 $(error $(LUA_LIB) does not exist. Try to specify both LUA_PATH and LUA_LIB manually) 326 endif 327 LDFLAGS += $(LUA_LIB) 328 329 endif 330 331 ifeq ($(NO_THREEWAY_CRC32C), 1) 332 CXXFLAGS += -DNO_THREEWAY_CRC32C 333 endif 334 335 CFLAGS += $(WARNING_FLAGS) -I. -I./include $(PLATFORM_CCFLAGS) $(OPT) 336 CXXFLAGS += $(WARNING_FLAGS) -I. -I./include $(PLATFORM_CXXFLAGS) $(OPT) -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers 337 338 LDFLAGS += $(PLATFORM_LDFLAGS) 339 340 # If NO_UPDATE_BUILD_VERSION is set we don't update util/build_version.cc, but 341 # the file needs to already exist or else the build will fail 342 ifndef NO_UPDATE_BUILD_VERSION 343 date := $(shell date +%F) 344 ifdef FORCE_GIT_SHA 345 git_sha := $(FORCE_GIT_SHA) 346 else 347 git_sha := $(shell git rev-parse HEAD 2>/dev/null) 348 endif 349 gen_build_version = sed -e s/@@GIT_SHA@@/$(git_sha)/ -e s/@@GIT_DATE_TIME@@/$(date)/ util/build_version.cc.in 350 351 # Record the version of the source that we are compiling. 352 # We keep a record of the git revision in this file. It is then built 353 # as a regular source file as part of the compilation process. 354 # One can run "strings executable_filename | grep _build_" to find 355 # the version of the source that we used to build the executable file. 356 FORCE: 357 util/build_version.cc: FORCE 358 $(AM_V_GEN)rm -f $@-t 359 $(AM_V_at)$(gen_build_version) > $@-t 360 $(AM_V_at)if test -f $@; then \ 361 cmp -s $@-t $@ && rm -f $@-t || mv -f $@-t $@; \ 362 else mv -f $@-t $@; fi 363 endif 364 365 LIBOBJECTS = $(LIB_SOURCES:.cc=.o) 366 ifeq ($(HAVE_POWER8),1) 367 LIB_CC_OBJECTS = $(LIB_SOURCES:.cc=.o) 368 LIBOBJECTS += $(LIB_SOURCES_C:.c=.o) 369 LIBOBJECTS += $(LIB_SOURCES_ASM:.S=.o) 370 else 371 LIB_CC_OBJECTS = $(LIB_SOURCES:.cc=.o) 372 endif 373 374 LIBOBJECTS += $(TOOL_LIB_SOURCES:.cc=.o) 375 MOCKOBJECTS = $(MOCK_LIB_SOURCES:.cc=.o) 376 377 GTEST = $(GTEST_DIR)/gtest/gtest-all.o 378 TESTUTIL = ./util/testutil.o 379 TESTHARNESS = ./util/testharness.o $(TESTUTIL) $(MOCKOBJECTS) $(GTEST) 380 VALGRIND_ERROR = 2 381 VALGRIND_VER := $(join $(VALGRIND_VER),valgrind) 382 383 VALGRIND_OPTS = --error-exitcode=$(VALGRIND_ERROR) --leak-check=full 384 385 BENCHTOOLOBJECTS = $(BENCH_LIB_SOURCES:.cc=.o) $(LIBOBJECTS) $(TESTUTIL) 386 387 EXPOBJECTS = $(EXP_LIB_SOURCES:.cc=.o) $(LIBOBJECTS) $(TESTUTIL) 388 389 TESTS = \ 390 db_basic_test \ 391 db_encryption_test \ 392 db_test2 \ 393 external_sst_file_basic_test \ 394 auto_roll_logger_test \ 395 bloom_test \ 396 dynamic_bloom_test \ 397 c_test \ 398 checkpoint_test \ 399 crc32c_test \ 400 coding_test \ 401 inlineskiplist_test \ 402 env_basic_test \ 403 env_test \ 404 hash_test \ 405 thread_local_test \ 406 rate_limiter_test \ 407 perf_context_test \ 408 iostats_context_test \ 409 db_wal_test \ 410 db_block_cache_test \ 411 db_test \ 412 db_blob_index_test \ 413 db_bloom_filter_test \ 414 db_iter_test \ 415 db_iter_stress_test \ 416 db_log_iter_test \ 417 db_compaction_filter_test \ 418 db_compaction_test \ 419 db_dynamic_level_test \ 420 db_flush_test \ 421 db_inplace_update_test \ 422 db_iterator_test \ 423 db_memtable_test \ 424 db_merge_operator_test \ 425 db_options_test \ 426 db_range_del_test \ 427 db_sst_test \ 428 db_tailing_iter_test \ 429 db_io_failure_test \ 430 db_properties_test \ 431 db_table_properties_test \ 432 db_statistics_test \ 433 db_write_test \ 434 error_handler_test \ 435 autovector_test \ 436 blob_db_test \ 437 cleanable_test \ 438 column_family_test \ 439 table_properties_collector_test \ 440 arena_test \ 441 block_test \ 442 cache_test \ 443 corruption_test \ 444 slice_transform_test \ 445 dbformat_test \ 446 fault_injection_test \ 447 filelock_test \ 448 filename_test \ 449 file_reader_writer_test \ 450 block_based_filter_block_test \ 451 full_filter_block_test \ 452 partitioned_filter_block_test \ 453 hash_table_test \ 454 histogram_test \ 455 log_test \ 456 manual_compaction_test \ 457 mock_env_test \ 458 memtable_list_test \ 459 merge_helper_test \ 460 memory_test \ 461 merge_test \ 462 merger_test \ 463 util_merge_operators_test \ 464 options_file_test \ 465 redis_test \ 466 reduce_levels_test \ 467 plain_table_db_test \ 468 comparator_db_test \ 469 external_sst_file_test \ 470 prefix_test \ 471 skiplist_test \ 472 write_buffer_manager_test \ 473 stringappend_test \ 474 cassandra_format_test \ 475 cassandra_functional_test \ 476 cassandra_row_merge_test \ 477 cassandra_serialize_test \ 478 ttl_test \ 479 date_tiered_test \ 480 backupable_db_test \ 481 document_db_test \ 482 json_document_test \ 483 sim_cache_test \ 484 spatial_db_test \ 485 version_edit_test \ 486 version_set_test \ 487 compaction_picker_test \ 488 version_builder_test \ 489 file_indexer_test \ 490 write_batch_test \ 491 write_batch_with_index_test \ 492 write_controller_test\ 493 deletefile_test \ 494 obsolete_files_test \ 495 table_test \ 496 geodb_test \ 497 delete_scheduler_test \ 498 options_test \ 499 options_settable_test \ 500 options_util_test \ 501 event_logger_test \ 502 timer_queue_test \ 503 cuckoo_table_builder_test \ 504 cuckoo_table_reader_test \ 505 cuckoo_table_db_test \ 506 flush_job_test \ 507 wal_manager_test \ 508 listener_test \ 509 compaction_iterator_test \ 510 compaction_job_test \ 511 thread_list_test \ 512 sst_dump_test \ 513 column_aware_encoding_test \ 514 compact_files_test \ 515 optimistic_transaction_test \ 516 write_callback_test \ 517 heap_test \ 518 compact_on_deletion_collector_test \ 519 compaction_job_stats_test \ 520 option_change_migration_test \ 521 transaction_test \ 522 ldb_cmd_test \ 523 persistent_cache_test \ 524 statistics_test \ 525 lua_test \ 526 range_del_aggregator_test \ 527 lru_cache_test \ 528 object_registry_test \ 529 repair_test \ 530 env_timed_test \ 531 write_prepared_transaction_test \ 532 write_unprepared_transaction_test \ 533 db_universal_compaction_test \ 534 535 PARALLEL_TEST = \ 536 backupable_db_test \ 537 db_compaction_filter_test \ 538 db_compaction_test \ 539 db_merge_operator_test \ 540 db_sst_test \ 541 db_test \ 542 db_universal_compaction_test \ 543 db_wal_test \ 544 external_sst_file_test \ 545 fault_injection_test \ 546 inlineskiplist_test \ 547 manual_compaction_test \ 548 persistent_cache_test \ 549 table_test \ 550 transaction_test \ 551 write_prepared_transaction_test \ 552 write_unprepared_transaction_test \ 553 554 # options_settable_test doesn't pass with UBSAN as we use hack in the test 555 ifdef COMPILE_WITH_UBSAN 556 TESTS := $(shell echo $(TESTS) | sed 's/\boptions_settable_test\b//g') 557 endif 558 SUBSET := $(TESTS) 559 ifdef ROCKSDBTESTS_START 560 SUBSET := $(shell echo $(SUBSET) | sed 's/^.*$(ROCKSDBTESTS_START)/$(ROCKSDBTESTS_START)/') 561 endif 562 563 ifdef ROCKSDBTESTS_END 564 SUBSET := $(shell echo $(SUBSET) | sed 's/$(ROCKSDBTESTS_END).*//') 565 endif 566 567 TOOLS = \ 568 sst_dump \ 569 db_sanity_test \ 570 db_stress \ 571 write_stress \ 572 ldb \ 573 db_repl_stress \ 574 rocksdb_dump \ 575 rocksdb_undump \ 576 blob_dump \ 577 578 TEST_LIBS = \ 579 librocksdb_env_basic_test.a 580 581 # TODO: add back forward_iterator_bench, after making it build in all environemnts. 582 BENCHMARKS = db_bench table_reader_bench cache_bench memtablerep_bench column_aware_encoding_exp persistent_cache_bench 583 584 # if user didn't config LIBNAME, set the default 585 ifeq ($(LIBNAME),) 586 # we should only run rocksdb in production with DEBUG_LEVEL 0 587 ifeq ($(DEBUG_LEVEL),0) 588 LIBNAME=librocksdb 589 else 590 LIBNAME=librocksdb_debug 591 endif 592 endif 593 LIBRARY = ${LIBNAME}.a 594 TOOLS_LIBRARY = ${LIBNAME}_tools.a 595 596 ROCKSDB_MAJOR = $(shell egrep "ROCKSDB_MAJOR.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3) 597 ROCKSDB_MINOR = $(shell egrep "ROCKSDB_MINOR.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3) 598 ROCKSDB_PATCH = $(shell egrep "ROCKSDB_PATCH.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3) 599 600 default: all 601 602 #----------------------------------------------- 603 # Create platform independent shared libraries. 604 #----------------------------------------------- 605 ifneq ($(PLATFORM_SHARED_EXT),) 606 607 ifneq ($(PLATFORM_SHARED_VERSIONED),true) 608 SHARED1 = ${LIBNAME}.$(PLATFORM_SHARED_EXT) 609 SHARED2 = $(SHARED1) 610 SHARED3 = $(SHARED1) 611 SHARED4 = $(SHARED1) 612 SHARED = $(SHARED1) 613 else 614 SHARED_MAJOR = $(ROCKSDB_MAJOR) 615 SHARED_MINOR = $(ROCKSDB_MINOR) 616 SHARED_PATCH = $(ROCKSDB_PATCH) 617 SHARED1 = ${LIBNAME}.$(PLATFORM_SHARED_EXT) 618 ifeq ($(PLATFORM), OS_MACOSX) 619 SHARED_OSX = $(LIBNAME).$(SHARED_MAJOR) 620 SHARED2 = $(SHARED_OSX).$(PLATFORM_SHARED_EXT) 621 SHARED3 = $(SHARED_OSX).$(SHARED_MINOR).$(PLATFORM_SHARED_EXT) 622 SHARED4 = $(SHARED_OSX).$(SHARED_MINOR).$(SHARED_PATCH).$(PLATFORM_SHARED_EXT) 623 else 624 SHARED2 = $(SHARED1).$(SHARED_MAJOR) 625 SHARED3 = $(SHARED1).$(SHARED_MAJOR).$(SHARED_MINOR) 626 SHARED4 = $(SHARED1).$(SHARED_MAJOR).$(SHARED_MINOR).$(SHARED_PATCH) 627 endif 628 SHARED = $(SHARED1) $(SHARED2) $(SHARED3) $(SHARED4) 629 $(SHARED1): $(SHARED4) 630 ln -fs $(SHARED4) $(SHARED1) 631 $(SHARED2): $(SHARED4) 632 ln -fs $(SHARED4) $(SHARED2) 633 $(SHARED3): $(SHARED4) 634 ln -fs $(SHARED4) $(SHARED3) 635 endif 636 ifeq ($(HAVE_POWER8),1) 637 SHARED_C_OBJECTS = $(LIB_SOURCES_C:.c=.o) 638 SHARED_ASM_OBJECTS = $(LIB_SOURCES_ASM:.S=.o) 639 SHARED_C_LIBOBJECTS = $(patsubst %.o,shared-objects/%.o,$(SHARED_C_OBJECTS)) 640 SHARED_ASM_LIBOBJECTS = $(patsubst %.o,shared-objects/%.o,$(SHARED_ASM_OBJECTS)) 641 shared_libobjects = $(patsubst %,shared-objects/%,$(LIB_CC_OBJECTS)) 642 else 643 shared_libobjects = $(patsubst %,shared-objects/%,$(LIBOBJECTS)) 644 endif 645 646 CLEAN_FILES += shared-objects 647 shared_all_libobjects = $(shared_libobjects) 648 649 ifeq ($(HAVE_POWER8),1) 650 shared-ppc-objects = $(SHARED_C_LIBOBJECTS) $(SHARED_ASM_LIBOBJECTS) 651 652 shared-objects/util/crc32c_ppc.o: util/crc32c_ppc.c 653 $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ 654 655 shared-objects/util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S 656 $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ 657 endif 658 $(shared_libobjects): shared-objects/%.o: %.cc 659 $(AM_V_CC)mkdir -p $(@D) && $(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) -c $< -o $@ 660 661 ifeq ($(HAVE_POWER8),1) 662 shared_all_libobjects = $(shared_libobjects) $(shared-ppc-objects) 663 endif 664 $(SHARED4): $(shared_all_libobjects) 665 $(CXX) $(PLATFORM_SHARED_LDFLAGS)$(SHARED3) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(shared_all_libobjects) $(LDFLAGS) -o $@ 666 667 endif # PLATFORM_SHARED_EXT 668 669 .PHONY: blackbox_crash_test check clean coverage crash_test ldb_tests package \ 670 release tags valgrind_check whitebox_crash_test format static_lib shared_lib all \ 671 dbg rocksdbjavastatic rocksdbjava install install-static install-shared uninstall \ 672 analyze tools tools_lib 673 674 675 all: $(LIBRARY) $(BENCHMARKS) tools tools_lib test_libs $(TESTS) 676 677 all_but_some_tests: $(LIBRARY) $(BENCHMARKS) tools tools_lib test_libs $(SUBSET) 678 679 static_lib: $(LIBRARY) 680 681 shared_lib: $(SHARED) 682 683 tools: $(TOOLS) 684 685 tools_lib: $(TOOLS_LIBRARY) 686 687 test_libs: $(TEST_LIBS) 688 689 dbg: $(LIBRARY) $(BENCHMARKS) tools $(TESTS) 690 691 # creates static library and programs 692 release: 693 $(MAKE) clean 694 DEBUG_LEVEL=0 $(MAKE) static_lib tools db_bench 695 696 coverage: 697 $(MAKE) clean 698 COVERAGEFLAGS="-fprofile-arcs -ftest-coverage" LDFLAGS+="-lgcov" $(MAKE) J=1 all check 699 cd coverage && ./coverage_test.sh 700 # Delete intermediate files 701 $(FIND) . -type f -regex ".*\.\(\(gcda\)\|\(gcno\)\)" -exec rm {} \; 702 703 ifneq (,$(filter check parallel_check,$(MAKECMDGOALS)),) 704 # Use /dev/shm if it has the sticky bit set (otherwise, /tmp), 705 # and create a randomly-named rocksdb.XXXX directory therein. 706 # We'll use that directory in the "make check" rules. 707 ifeq ($(TMPD),) 708 TMPDIR := $(shell echo $${TMPDIR:-/tmp}) 709 TMPD := $(shell f=/dev/shm; test -k $$f || f=$(TMPDIR); \ 710 perl -le 'use File::Temp "tempdir";' \ 711 -e 'print tempdir("'$$f'/rocksdb.XXXX", CLEANUP => 0)') 712 endif 713 endif 714 715 # Run all tests in parallel, accumulating per-test logs in t/log-*. 716 # 717 # Each t/run-* file is a tiny generated bourne shell script that invokes one of 718 # sub-tests. Why use a file for this? Because that makes the invocation of 719 # parallel below simpler, which in turn makes the parsing of parallel's 720 # LOG simpler (the latter is for live monitoring as parallel 721 # tests run). 722 # 723 # Test names are extracted by running tests with --gtest_list_tests. 724 # This filter removes the "#"-introduced comments, and expands to 725 # fully-qualified names by changing input like this: 726 # 727 # DBTest. 728 # Empty 729 # WriteEmptyBatch 730 # MultiThreaded/MultiThreadedDBTest. 731 # MultiThreaded/0 # GetParam() = 0 732 # MultiThreaded/1 # GetParam() = 1 733 # 734 # into this: 735 # 736 # DBTest.Empty 737 # DBTest.WriteEmptyBatch 738 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/0 739 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/1 740 # 741 742 parallel_tests = $(patsubst %,parallel_%,$(PARALLEL_TEST)) 743 .PHONY: gen_parallel_tests $(parallel_tests) 744 $(parallel_tests): $(PARALLEL_TEST) 745 $(AM_V_at)TEST_BINARY=$(patsubst parallel_%,%,$@); \ 746 TEST_NAMES=` \ 747 ./$$TEST_BINARY --gtest_list_tests \ 748 | perl -n \ 749 -e 's/ *\#.*//;' \ 750 -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \ 751 -e 'print qq! $$p$$2!'`; \ 752 for TEST_NAME in $$TEST_NAMES; do \ 753 TEST_SCRIPT=t/run-$$TEST_BINARY-$${TEST_NAME//\//-}; \ 754 echo " GEN " $$TEST_SCRIPT; \ 755 printf '%s\n' \ 756 '#!/bin/sh' \ 757 "d=\$(TMPD)$$TEST_SCRIPT" \ 758 'mkdir -p $$d' \ 759 "TEST_TMPDIR=\$$d $(DRIVER) ./$$TEST_BINARY --gtest_filter=$$TEST_NAME" \ 760 > $$TEST_SCRIPT; \ 761 chmod a=rx $$TEST_SCRIPT; \ 762 done 763 764 gen_parallel_tests: 765 $(AM_V_at)mkdir -p t 766 $(AM_V_at)rm -f t/run-* 767 $(MAKE) $(parallel_tests) 768 769 # Reorder input lines (which are one per test) so that the 770 # longest-running tests appear first in the output. 771 # Do this by prefixing each selected name with its duration, 772 # sort the resulting names, and remove the leading numbers. 773 # FIXME: the "100" we prepend is a fake time, for now. 774 # FIXME: squirrel away timings from each run and use them 775 # (when present) on subsequent runs to order these tests. 776 # 777 # Without this reordering, these two tests would happen to start only 778 # after almost all other tests had completed, thus adding 100 seconds 779 # to the duration of parallel "make check". That's the difference 780 # between 4 minutes (old) and 2m20s (new). 781 # 782 # 152.120 PASS t/DBTest.FileCreationRandomFailure 783 # 107.816 PASS t/DBTest.EncodeDecompressedBlockSizeTest 784 # 785 slow_test_regexp = \ 786 ^.*SnapshotConcurrentAccessTest.*$$|^t/run-table_test-HarnessTest.Randomized$$|^t/run-db_test-.*(?:FileCreationRandomFailure|EncodeDecompressedBlockSizeTest)$$|^.*RecoverFromCorruptedWALWithoutFlush$$ 787 prioritize_long_running_tests = \ 788 perl -pe 's,($(slow_test_regexp)),100 $$1,' \ 789 | sort -k1,1gr \ 790 | sed 's/^[.0-9]* //' 791 792 # "make check" uses 793 # Run with "make J=1 check" to disable parallelism in "make check". 794 # Run with "make J=200% check" to run two parallel jobs per core. 795 # The default is to run one job per core (J=100%). 796 # See "man parallel" for its "-j ..." option. 797 J ?= 100% 798 799 # Use this regexp to select the subset of tests whose names match. 800 tests-regexp = . 801 802 t_run = $(wildcard t/run-*) 803 .PHONY: check_0 804 check_0: 805 $(AM_V_GEN)export TEST_TMPDIR=$(TMPD); \ 806 printf '%s\n' '' \ 807 'To monitor subtest <duration,pass/fail,name>,' \ 808 ' run "make watch-log" in a separate window' ''; \ 809 test -t 1 && eta=--eta || eta=; \ 810 { \ 811 printf './%s\n' $(filter-out $(PARALLEL_TEST),$(TESTS)); \ 812 printf '%s\n' $(t_run); \ 813 } \ 814 | $(prioritize_long_running_tests) \ 815 | grep -E '$(tests-regexp)' \ 816 | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG $$eta --gnu '{} >& t/log-{/}' 817 818 valgrind-blacklist-regexp = InlineSkipTest.ConcurrentInsert|TransactionStressTest.DeadlockStress|DBCompactionTest.SuggestCompactRangeNoTwoLevel0Compactions|BackupableDBTest.RateLimiting|DBTest.CloseSpeedup|DBTest.ThreadStatusFlush|DBTest.RateLimitingTest|DBTest.EncodeDecompressedBlockSizeTest|FaultInjectionTest.UninstalledCompaction|HarnessTest.Randomized|ExternalSSTFileTest.CompactDuringAddFileRandom|ExternalSSTFileTest.IngestFileWithGlobalSeqnoRandomized|MySQLStyleTransactionTest.TransactionStressTest 819 820 .PHONY: valgrind_check_0 821 valgrind_check_0: 822 $(AM_V_GEN)export TEST_TMPDIR=$(TMPD); \ 823 printf '%s\n' '' \ 824 'To monitor subtest <duration,pass/fail,name>,' \ 825 ' run "make watch-log" in a separate window' ''; \ 826 test -t 1 && eta=--eta || eta=; \ 827 { \ 828 printf './%s\n' $(filter-out $(PARALLEL_TEST) %skiplist_test options_settable_test, $(TESTS)); \ 829 printf '%s\n' $(t_run); \ 830 } \ 831 | $(prioritize_long_running_tests) \ 832 | grep -E '$(tests-regexp)' \ 833 | grep -E -v '$(valgrind-blacklist-regexp)' \ 834 | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG $$eta --gnu \ 835 '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) ' \ 836 '>& t/valgrind_log-{/}' 837 838 CLEAN_FILES += t LOG $(TMPD) 839 840 # When running parallel "make check", you can monitor its progress 841 # from another window. 842 # Run "make watch_LOG" to show the duration,PASS/FAIL,name of parallel 843 # tests as they are being run. We sort them so that longer-running ones 844 # appear at the top of the list and any failing tests remain at the top 845 # regardless of their duration. As with any use of "watch", hit ^C to 846 # interrupt. 847 watch-log: 848 $(WATCH) --interval=0 'sort -k7,7nr -k4,4gr LOG|$(quoted_perl_command)' 849 850 # If J != 1 and GNU parallel is installed, run the tests in parallel, 851 # via the check_0 rule above. Otherwise, run them sequentially. 852 check: all 853 $(MAKE) gen_parallel_tests 854 $(AM_V_GEN)if test "$(J)" != 1 \ 855 && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ 856 grep -q 'GNU Parallel'; \ 857 then \ 858 $(MAKE) T="$$t" TMPD=$(TMPD) check_0; \ 859 else \ 860 for t in $(TESTS); do \ 861 echo "===== Running $$t"; ./$$t || exit 1; done; \ 862 fi 863 rm -rf $(TMPD) 864 ifneq ($(PLATFORM), OS_AIX) 865 ifeq ($(filter -DROCKSDB_LITE,$(OPT)),) 866 python tools/ldb_test.py 867 sh tools/rocksdb_dump_test.sh 868 endif 869 endif 870 871 # TODO add ldb_tests 872 check_some: $(SUBSET) 873 for t in $(SUBSET); do echo "===== Running $$t"; ./$$t || exit 1; done 874 875 .PHONY: ldb_tests 876 ldb_tests: ldb 877 python tools/ldb_test.py 878 879 crash_test: whitebox_crash_test blackbox_crash_test 880 881 blackbox_crash_test: db_stress 882 python -u tools/db_crashtest.py --simple blackbox $(CRASH_TEST_EXT_ARGS) 883 python -u tools/db_crashtest.py blackbox $(CRASH_TEST_EXT_ARGS) 884 885 ifeq ($(CRASH_TEST_KILL_ODD),) 886 CRASH_TEST_KILL_ODD=888887 887 endif 888 889 whitebox_crash_test: db_stress 890 python -u tools/db_crashtest.py --simple whitebox --random_kill_odd \ 891 $(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS) 892 python -u tools/db_crashtest.py whitebox --random_kill_odd \ 893 $(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS) 894 895 asan_check: 896 $(MAKE) clean 897 COMPILE_WITH_ASAN=1 $(MAKE) check -j32 898 $(MAKE) clean 899 900 asan_crash_test: 901 $(MAKE) clean 902 COMPILE_WITH_ASAN=1 $(MAKE) crash_test 903 $(MAKE) clean 904 905 ubsan_check: 906 $(MAKE) clean 907 COMPILE_WITH_UBSAN=1 $(MAKE) check -j32 908 $(MAKE) clean 909 910 ubsan_crash_test: 911 $(MAKE) clean 912 COMPILE_WITH_UBSAN=1 $(MAKE) crash_test 913 $(MAKE) clean 914 915 valgrind_test: 916 ROCKSDB_VALGRIND_RUN=1 DISABLE_JEMALLOC=1 $(MAKE) valgrind_check 917 918 valgrind_check: $(TESTS) 919 $(MAKE) DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" gen_parallel_tests 920 $(AM_V_GEN)if test "$(J)" != 1 \ 921 && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ 922 grep -q 'GNU Parallel'; \ 923 then \ 924 $(MAKE) TMPD=$(TMPD) \ 925 DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0; \ 926 else \ 927 for t in $(filter-out %skiplist_test options_settable_test,$(TESTS)); do \ 928 $(VALGRIND_VER) $(VALGRIND_OPTS) ./$$t; \ 929 ret_code=$$?; \ 930 if [ $$ret_code -ne 0 ]; then \ 931 exit $$ret_code; \ 932 fi; \ 933 done; \ 934 fi 935 936 937 ifneq ($(PAR_TEST),) 938 parloop: 939 ret_bad=0; \ 940 for t in $(PAR_TEST); do \ 941 echo "===== Running $$t in parallel $(NUM_PAR)";\ 942 if [ $(db_test) -eq 1 ]; then \ 943 seq $(J) | v="$$t" build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{}; export TEST_TMPDIR=$$s;' \ 944 'timeout 2m ./db_test --gtest_filter=$$v >> $$s/log-{} 2>1'; \ 945 else\ 946 seq $(J) | v="./$$t" build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{};' \ 947 'export TEST_TMPDIR=$$s; timeout 10m $$v >> $$s/log-{} 2>1'; \ 948 fi; \ 949 ret_code=$$?; \ 950 if [ $$ret_code -ne 0 ]; then \ 951 ret_bad=$$ret_code; \ 952 echo $$t exited with $$ret_code; \ 953 fi; \ 954 done; \ 955 exit $$ret_bad; 956 endif 957 958 test_names = \ 959 ./db_test --gtest_list_tests \ 960 | perl -n \ 961 -e 's/ *\#.*//;' \ 962 -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \ 963 -e 'print qq! $$p$$2!' 964 965 parallel_check: $(TESTS) 966 $(AM_V_GEN)if test "$(J)" > 1 \ 967 && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \ 968 grep -q 'GNU Parallel'; \ 969 then \ 970 echo Running in parallel $(J); \ 971 else \ 972 echo "Need to have GNU Parallel and J > 1"; exit 1; \ 973 fi; \ 974 ret_bad=0; \ 975 echo $(J);\ 976 echo Test Dir: $(TMPD); \ 977 seq $(J) | build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{}; rm -rf $$s; mkdir $$s'; \ 978 $(MAKE) PAR_TEST="$(shell $(test_names))" TMPD=$(TMPD) \ 979 J=$(J) db_test=1 parloop; \ 980 $(MAKE) PAR_TEST="$(filter-out db_test, $(TESTS))" \ 981 TMPD=$(TMPD) J=$(J) db_test=0 parloop; 982 983 analyze: clean 984 $(CLANG_SCAN_BUILD) --use-analyzer=$(CLANG_ANALYZER) \ 985 --use-c++=$(CXX) --use-cc=$(CC) --status-bugs \ 986 -o $(CURDIR)/scan_build_report \ 987 $(MAKE) dbg 988 989 CLEAN_FILES += unity.cc 990 unity.cc: Makefile 991 rm -f $@ $@-t 992 for source_file in $(LIB_SOURCES); do \ 993 echo "#include \"$$source_file\"" >> $@-t; \ 994 done 995 chmod a=r $@-t 996 mv $@-t $@ 997 998 unity.a: unity.o 999 $(AM_V_AR)rm -f $@ 1000 $(AM_V_at)$(AR) $(ARFLAGS) $@ unity.o 1001 1002 # try compiling db_test with unity 1003 unity_test: db/db_test.o db/db_test_util.o $(TESTHARNESS) unity.a 1004 $(AM_LINK) 1005 ./unity_test 1006 1007 rocksdb.h rocksdb.cc: build_tools/amalgamate.py Makefile $(LIB_SOURCES) unity.cc 1008 build_tools/amalgamate.py -I. -i./include unity.cc -x include/rocksdb/c.h -H rocksdb.h -o rocksdb.cc 1009 1010 clean: 1011 rm -f $(BENCHMARKS) $(TOOLS) $(TESTS) $(LIBRARY) $(SHARED) 1012 rm -rf $(CLEAN_FILES) ios-x86 ios-arm scan_build_report 1013 $(FIND) . -name "*.[oda]" -exec rm -f {} \; 1014 $(FIND) . -type f -regex ".*\.\(\(gcda\)\|\(gcno\)\)" -exec rm {} \; 1015 rm -rf bzip2* snappy* zlib* lz4* zstd* 1016 cd java; $(MAKE) clean 1017 1018 tags: 1019 ctags -R . 1020 cscope -b `$(FIND) . -name '*.cc'` `$(FIND) . -name '*.h'` `$(FIND) . -name '*.c'` 1021 ctags -e -R -o etags * 1022 1023 format: 1024 build_tools/format-diff.sh 1025 1026 package: 1027 bash build_tools/make_package.sh $(SHARED_MAJOR).$(SHARED_MINOR) 1028 1029 # --------------------------------------------------------------------------- 1030 # Unit tests and tools 1031 # --------------------------------------------------------------------------- 1032 $(LIBRARY): $(LIBOBJECTS) 1033 $(AM_V_AR)rm -f $@ 1034 $(AM_V_at)$(AR) $(ARFLAGS) $@ $(LIBOBJECTS) 1035 1036 $(TOOLS_LIBRARY): $(BENCH_LIB_SOURCES:.cc=.o) $(TOOL_LIB_SOURCES:.cc=.o) $(LIB_SOURCES:.cc=.o) $(TESTUTIL) 1037 $(AM_V_AR)rm -f $@ 1038 $(AM_V_at)$(AR) $(ARFLAGS) $@ $^ 1039 1040 librocksdb_env_basic_test.a: env/env_basic_test.o $(LIBOBJECTS) $(TESTHARNESS) 1041 $(AM_V_AR)rm -f $@ 1042 $(AM_V_at)$(AR) $(ARFLAGS) $@ $^ 1043 1044 db_bench: tools/db_bench.o $(BENCHTOOLOBJECTS) 1045 $(AM_LINK) 1046 1047 cache_bench: cache/cache_bench.o $(LIBOBJECTS) $(TESTUTIL) 1048 $(AM_LINK) 1049 1050 persistent_cache_bench: utilities/persistent_cache/persistent_cache_bench.o $(LIBOBJECTS) $(TESTUTIL) 1051 $(AM_LINK) 1052 1053 memtablerep_bench: memtable/memtablerep_bench.o $(LIBOBJECTS) $(TESTUTIL) 1054 $(AM_LINK) 1055 1056 db_stress: tools/db_stress.o $(LIBOBJECTS) $(TESTUTIL) 1057 $(AM_LINK) 1058 1059 write_stress: tools/write_stress.o $(LIBOBJECTS) $(TESTUTIL) 1060 $(AM_LINK) 1061 1062 db_sanity_test: tools/db_sanity_test.o $(LIBOBJECTS) $(TESTUTIL) 1063 $(AM_LINK) 1064 1065 db_repl_stress: tools/db_repl_stress.o $(LIBOBJECTS) $(TESTUTIL) 1066 $(AM_LINK) 1067 1068 arena_test: util/arena_test.o $(LIBOBJECTS) $(TESTHARNESS) 1069 $(AM_LINK) 1070 1071 autovector_test: util/autovector_test.o $(LIBOBJECTS) $(TESTHARNESS) 1072 $(AM_LINK) 1073 1074 column_family_test: db/column_family_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1075 $(AM_LINK) 1076 1077 table_properties_collector_test: db/table_properties_collector_test.o $(LIBOBJECTS) $(TESTHARNESS) 1078 $(AM_LINK) 1079 1080 bloom_test: util/bloom_test.o $(LIBOBJECTS) $(TESTHARNESS) 1081 $(AM_LINK) 1082 1083 dynamic_bloom_test: util/dynamic_bloom_test.o $(LIBOBJECTS) $(TESTHARNESS) 1084 $(AM_LINK) 1085 1086 c_test: db/c_test.o $(LIBOBJECTS) $(TESTHARNESS) 1087 $(AM_LINK) 1088 1089 cache_test: cache/cache_test.o $(LIBOBJECTS) $(TESTHARNESS) 1090 $(AM_LINK) 1091 1092 coding_test: util/coding_test.o $(LIBOBJECTS) $(TESTHARNESS) 1093 $(AM_LINK) 1094 1095 hash_test: util/hash_test.o $(LIBOBJECTS) $(TESTHARNESS) 1096 $(AM_LINK) 1097 1098 option_change_migration_test: utilities/option_change_migration/option_change_migration_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1099 $(AM_LINK) 1100 1101 stringappend_test: utilities/merge_operators/string_append/stringappend_test.o $(LIBOBJECTS) $(TESTHARNESS) 1102 $(AM_LINK) 1103 1104 cassandra_format_test: utilities/cassandra/cassandra_format_test.o utilities/cassandra/test_utils.o $(LIBOBJECTS) $(TESTHARNESS) 1105 $(AM_LINK) 1106 1107 cassandra_functional_test: utilities/cassandra/cassandra_functional_test.o utilities/cassandra/test_utils.o $(LIBOBJECTS) $(TESTHARNESS) 1108 $(AM_LINK) 1109 1110 cassandra_row_merge_test: utilities/cassandra/cassandra_row_merge_test.o utilities/cassandra/test_utils.o $(LIBOBJECTS) $(TESTHARNESS) 1111 $(AM_LINK) 1112 1113 cassandra_serialize_test: utilities/cassandra/cassandra_serialize_test.o $(LIBOBJECTS) $(TESTHARNESS) 1114 $(AM_LINK) 1115 1116 redis_test: utilities/redis/redis_lists_test.o $(LIBOBJECTS) $(TESTHARNESS) 1117 $(AM_LINK) 1118 1119 hash_table_test: utilities/persistent_cache/hash_table_test.o $(LIBOBJECTS) $(TESTHARNESS) 1120 $(AM_LINK) 1121 1122 histogram_test: monitoring/histogram_test.o $(LIBOBJECTS) $(TESTHARNESS) 1123 $(AM_LINK) 1124 1125 thread_local_test: util/thread_local_test.o $(LIBOBJECTS) $(TESTHARNESS) 1126 $(AM_LINK) 1127 1128 corruption_test: db/corruption_test.o $(LIBOBJECTS) $(TESTHARNESS) 1129 $(AM_LINK) 1130 1131 crc32c_test: util/crc32c_test.o $(LIBOBJECTS) $(TESTHARNESS) 1132 $(AM_LINK) 1133 1134 slice_transform_test: util/slice_transform_test.o $(LIBOBJECTS) $(TESTHARNESS) 1135 $(AM_LINK) 1136 1137 db_basic_test: db/db_basic_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1138 $(AM_LINK) 1139 1140 db_encryption_test: db/db_encryption_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1141 $(AM_LINK) 1142 1143 db_test: db/db_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1144 $(AM_LINK) 1145 1146 db_test2: db/db_test2.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1147 $(AM_LINK) 1148 1149 db_blob_index_test: db/db_blob_index_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1150 $(AM_LINK) 1151 1152 db_block_cache_test: db/db_block_cache_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1153 $(AM_LINK) 1154 1155 db_bloom_filter_test: db/db_bloom_filter_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1156 $(AM_LINK) 1157 1158 db_log_iter_test: db/db_log_iter_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1159 $(AM_LINK) 1160 1161 db_compaction_filter_test: db/db_compaction_filter_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1162 $(AM_LINK) 1163 1164 db_compaction_test: db/db_compaction_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1165 $(AM_LINK) 1166 1167 db_dynamic_level_test: db/db_dynamic_level_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1168 $(AM_LINK) 1169 1170 db_flush_test: db/db_flush_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1171 $(AM_LINK) 1172 1173 db_inplace_update_test: db/db_inplace_update_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1174 $(AM_LINK) 1175 1176 db_iterator_test: db/db_iterator_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1177 $(AM_LINK) 1178 1179 db_memtable_test: db/db_memtable_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1180 $(AM_LINK) 1181 1182 db_merge_operator_test: db/db_merge_operator_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1183 $(AM_LINK) 1184 1185 db_options_test: db/db_options_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1186 $(AM_LINK) 1187 1188 db_range_del_test: db/db_range_del_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1189 $(AM_LINK) 1190 1191 db_sst_test: db/db_sst_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1192 $(AM_LINK) 1193 1194 db_statistics_test: db/db_statistics_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1195 $(AM_LINK) 1196 1197 db_write_test: db/db_write_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1198 $(AM_LINK) 1199 1200 error_handler_test: db/error_handler_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1201 $(AM_LINK) 1202 1203 external_sst_file_basic_test: db/external_sst_file_basic_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1204 $(AM_LINK) 1205 1206 external_sst_file_test: db/external_sst_file_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1207 $(AM_LINK) 1208 1209 db_tailing_iter_test: db/db_tailing_iter_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1210 $(AM_LINK) 1211 1212 db_iter_test: db/db_iter_test.o $(LIBOBJECTS) $(TESTHARNESS) 1213 $(AM_LINK) 1214 1215 db_iter_stress_test: db/db_iter_stress_test.o $(LIBOBJECTS) $(TESTHARNESS) 1216 $(AM_LINK) 1217 1218 db_universal_compaction_test: db/db_universal_compaction_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1219 $(AM_LINK) 1220 1221 db_wal_test: db/db_wal_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1222 $(AM_LINK) 1223 1224 db_io_failure_test: db/db_io_failure_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1225 $(AM_LINK) 1226 1227 db_properties_test: db/db_properties_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1228 $(AM_LINK) 1229 1230 db_table_properties_test: db/db_table_properties_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1231 $(AM_LINK) 1232 1233 log_write_bench: util/log_write_bench.o $(LIBOBJECTS) $(TESTHARNESS) 1234 $(AM_LINK) $(PROFILING_FLAGS) 1235 1236 plain_table_db_test: db/plain_table_db_test.o $(LIBOBJECTS) $(TESTHARNESS) 1237 $(AM_LINK) 1238 1239 comparator_db_test: db/comparator_db_test.o $(LIBOBJECTS) $(TESTHARNESS) 1240 $(AM_LINK) 1241 1242 table_reader_bench: table/table_reader_bench.o $(LIBOBJECTS) $(TESTHARNESS) 1243 $(AM_LINK) $(PROFILING_FLAGS) 1244 1245 perf_context_test: db/perf_context_test.o $(LIBOBJECTS) $(TESTHARNESS) 1246 $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) 1247 1248 prefix_test: db/prefix_test.o $(LIBOBJECTS) $(TESTHARNESS) 1249 $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) 1250 1251 backupable_db_test: utilities/backupable/backupable_db_test.o $(LIBOBJECTS) $(TESTHARNESS) 1252 $(AM_LINK) 1253 1254 checkpoint_test: utilities/checkpoint/checkpoint_test.o $(LIBOBJECTS) $(TESTHARNESS) 1255 $(AM_LINK) 1256 1257 document_db_test: utilities/document/document_db_test.o $(LIBOBJECTS) $(TESTHARNESS) 1258 $(AM_LINK) 1259 1260 json_document_test: utilities/document/json_document_test.o $(LIBOBJECTS) $(TESTHARNESS) 1261 $(AM_LINK) 1262 1263 sim_cache_test: utilities/simulator_cache/sim_cache_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1264 $(AM_LINK) 1265 1266 spatial_db_test: utilities/spatialdb/spatial_db_test.o $(LIBOBJECTS) $(TESTHARNESS) 1267 $(AM_LINK) 1268 1269 env_mirror_test: utilities/env_mirror_test.o $(LIBOBJECTS) $(TESTHARNESS) 1270 $(AM_LINK) 1271 1272 env_timed_test: utilities/env_timed_test.o $(LIBOBJECTS) $(TESTHARNESS) 1273 $(AM_LINK) 1274 1275 ifdef ROCKSDB_USE_LIBRADOS 1276 env_librados_test: utilities/env_librados_test.o $(LIBOBJECTS) $(TESTHARNESS) 1277 $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) $(COVERAGEFLAGS) 1278 endif 1279 1280 object_registry_test: utilities/object_registry_test.o $(LIBOBJECTS) $(TESTHARNESS) 1281 $(AM_LINK) 1282 1283 ttl_test: utilities/ttl/ttl_test.o $(LIBOBJECTS) $(TESTHARNESS) 1284 $(AM_LINK) 1285 1286 date_tiered_test: utilities/date_tiered/date_tiered_test.o $(LIBOBJECTS) $(TESTHARNESS) 1287 $(AM_LINK) 1288 1289 write_batch_with_index_test: utilities/write_batch_with_index/write_batch_with_index_test.o $(LIBOBJECTS) $(TESTHARNESS) 1290 $(AM_LINK) 1291 1292 flush_job_test: db/flush_job_test.o $(LIBOBJECTS) $(TESTHARNESS) 1293 $(AM_LINK) 1294 1295 compaction_iterator_test: db/compaction_iterator_test.o $(LIBOBJECTS) $(TESTHARNESS) 1296 $(AM_LINK) 1297 1298 compaction_job_test: db/compaction_job_test.o $(LIBOBJECTS) $(TESTHARNESS) 1299 $(AM_LINK) 1300 1301 compaction_job_stats_test: db/compaction_job_stats_test.o $(LIBOBJECTS) $(TESTHARNESS) 1302 $(AM_LINK) 1303 1304 compact_on_deletion_collector_test: utilities/table_properties_collectors/compact_on_deletion_collector_test.o $(LIBOBJECTS) $(TESTHARNESS) 1305 $(AM_LINK) 1306 1307 wal_manager_test: db/wal_manager_test.o $(LIBOBJECTS) $(TESTHARNESS) 1308 $(AM_LINK) 1309 1310 dbformat_test: db/dbformat_test.o $(LIBOBJECTS) $(TESTHARNESS) 1311 $(AM_LINK) 1312 1313 env_basic_test: env/env_basic_test.o $(LIBOBJECTS) $(TESTHARNESS) 1314 $(AM_LINK) 1315 1316 env_test: env/env_test.o $(LIBOBJECTS) $(TESTHARNESS) 1317 $(AM_LINK) 1318 1319 fault_injection_test: db/fault_injection_test.o $(LIBOBJECTS) $(TESTHARNESS) 1320 $(AM_LINK) 1321 1322 rate_limiter_test: util/rate_limiter_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1323 $(AM_LINK) 1324 1325 delete_scheduler_test: util/delete_scheduler_test.o $(LIBOBJECTS) $(TESTHARNESS) 1326 $(AM_LINK) 1327 1328 filename_test: db/filename_test.o $(LIBOBJECTS) $(TESTHARNESS) 1329 $(AM_LINK) 1330 1331 file_reader_writer_test: util/file_reader_writer_test.o $(LIBOBJECTS) $(TESTHARNESS) 1332 $(AM_LINK) 1333 1334 block_based_filter_block_test: table/block_based_filter_block_test.o $(LIBOBJECTS) $(TESTHARNESS) 1335 $(AM_LINK) 1336 1337 full_filter_block_test: table/full_filter_block_test.o $(LIBOBJECTS) $(TESTHARNESS) 1338 $(AM_LINK) 1339 1340 partitioned_filter_block_test: table/partitioned_filter_block_test.o $(LIBOBJECTS) $(TESTHARNESS) 1341 $(AM_LINK) 1342 1343 log_test: db/log_test.o $(LIBOBJECTS) $(TESTHARNESS) 1344 $(AM_LINK) 1345 1346 cleanable_test: table/cleanable_test.o $(LIBOBJECTS) $(TESTHARNESS) 1347 $(AM_LINK) 1348 1349 table_test: table/table_test.o $(LIBOBJECTS) $(TESTHARNESS) 1350 $(AM_LINK) 1351 1352 block_test: table/block_test.o $(LIBOBJECTS) $(TESTHARNESS) 1353 $(AM_LINK) 1354 1355 inlineskiplist_test: memtable/inlineskiplist_test.o $(LIBOBJECTS) $(TESTHARNESS) 1356 $(AM_LINK) 1357 1358 skiplist_test: memtable/skiplist_test.o $(LIBOBJECTS) $(TESTHARNESS) 1359 $(AM_LINK) 1360 1361 write_buffer_manager_test: memtable/write_buffer_manager_test.o $(LIBOBJECTS) $(TESTHARNESS) 1362 $(AM_LINK) 1363 1364 version_edit_test: db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS) 1365 $(AM_LINK) 1366 1367 version_set_test: db/version_set_test.o $(LIBOBJECTS) $(TESTHARNESS) 1368 $(AM_LINK) 1369 1370 compaction_picker_test: db/compaction_picker_test.o $(LIBOBJECTS) $(TESTHARNESS) 1371 $(AM_LINK) 1372 1373 version_builder_test: db/version_builder_test.o $(LIBOBJECTS) $(TESTHARNESS) 1374 $(AM_LINK) 1375 1376 file_indexer_test: db/file_indexer_test.o $(LIBOBJECTS) $(TESTHARNESS) 1377 $(AM_LINK) 1378 1379 reduce_levels_test: tools/reduce_levels_test.o $(LIBOBJECTS) $(TESTHARNESS) 1380 $(AM_LINK) 1381 1382 write_batch_test: db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS) 1383 $(AM_LINK) 1384 1385 write_controller_test: db/write_controller_test.o $(LIBOBJECTS) $(TESTHARNESS) 1386 $(AM_LINK) 1387 1388 merge_helper_test: db/merge_helper_test.o $(LIBOBJECTS) $(TESTHARNESS) 1389 $(AM_LINK) 1390 1391 memory_test: utilities/memory/memory_test.o $(LIBOBJECTS) $(TESTHARNESS) 1392 $(AM_LINK) 1393 1394 merge_test: db/merge_test.o $(LIBOBJECTS) $(TESTHARNESS) 1395 $(AM_LINK) 1396 1397 merger_test: table/merger_test.o $(LIBOBJECTS) $(TESTHARNESS) 1398 $(AM_LINK) 1399 1400 util_merge_operators_test: utilities/util_merge_operators_test.o $(LIBOBJECTS) $(TESTHARNESS) 1401 $(AM_LINK) 1402 1403 options_file_test: db/options_file_test.o $(LIBOBJECTS) $(TESTHARNESS) 1404 $(AM_LINK) 1405 1406 deletefile_test: db/deletefile_test.o $(LIBOBJECTS) $(TESTHARNESS) 1407 $(AM_LINK) 1408 1409 obsolete_files_test: db/obsolete_files_test.o $(LIBOBJECTS) $(TESTHARNESS) 1410 $(AM_LINK) 1411 1412 geodb_test: utilities/geodb/geodb_test.o $(LIBOBJECTS) $(TESTHARNESS) 1413 $(AM_LINK) 1414 1415 rocksdb_dump: tools/dump/rocksdb_dump.o $(LIBOBJECTS) 1416 $(AM_LINK) 1417 1418 rocksdb_undump: tools/dump/rocksdb_undump.o $(LIBOBJECTS) 1419 $(AM_LINK) 1420 1421 cuckoo_table_builder_test: table/cuckoo_table_builder_test.o $(LIBOBJECTS) $(TESTHARNESS) 1422 $(AM_LINK) 1423 1424 cuckoo_table_reader_test: table/cuckoo_table_reader_test.o $(LIBOBJECTS) $(TESTHARNESS) 1425 $(AM_LINK) 1426 1427 cuckoo_table_db_test: db/cuckoo_table_db_test.o $(LIBOBJECTS) $(TESTHARNESS) 1428 $(AM_LINK) 1429 1430 listener_test: db/listener_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1431 $(AM_LINK) 1432 1433 thread_list_test: util/thread_list_test.o $(LIBOBJECTS) $(TESTHARNESS) 1434 $(AM_LINK) 1435 1436 compact_files_test: db/compact_files_test.o $(LIBOBJECTS) $(TESTHARNESS) 1437 $(AM_LINK) 1438 1439 options_test: options/options_test.o $(LIBOBJECTS) $(TESTHARNESS) 1440 $(AM_LINK) 1441 1442 options_settable_test: options/options_settable_test.o $(LIBOBJECTS) $(TESTHARNESS) 1443 $(AM_LINK) 1444 1445 options_util_test: utilities/options/options_util_test.o $(LIBOBJECTS) $(TESTHARNESS) 1446 $(AM_LINK) 1447 1448 db_bench_tool_test: tools/db_bench_tool_test.o $(BENCHTOOLOBJECTS) $(TESTHARNESS) 1449 $(AM_LINK) 1450 1451 event_logger_test: util/event_logger_test.o $(LIBOBJECTS) $(TESTHARNESS) 1452 $(AM_LINK) 1453 1454 timer_queue_test: util/timer_queue_test.o $(LIBOBJECTS) $(TESTHARNESS) 1455 $(AM_LINK) 1456 1457 sst_dump_test: tools/sst_dump_test.o $(LIBOBJECTS) $(TESTHARNESS) 1458 $(AM_LINK) 1459 1460 column_aware_encoding_test: utilities/column_aware_encoding_test.o $(TESTHARNESS) $(EXPOBJECTS) 1461 $(AM_LINK) 1462 1463 optimistic_transaction_test: utilities/transactions/optimistic_transaction_test.o $(LIBOBJECTS) $(TESTHARNESS) 1464 $(AM_LINK) 1465 1466 mock_env_test : env/mock_env_test.o $(LIBOBJECTS) $(TESTHARNESS) 1467 $(AM_LINK) 1468 1469 manual_compaction_test: db/manual_compaction_test.o $(LIBOBJECTS) $(TESTHARNESS) 1470 $(AM_LINK) 1471 1472 filelock_test: util/filelock_test.o $(LIBOBJECTS) $(TESTHARNESS) 1473 $(AM_LINK) 1474 1475 auto_roll_logger_test: util/auto_roll_logger_test.o $(LIBOBJECTS) $(TESTHARNESS) 1476 $(AM_LINK) 1477 1478 memtable_list_test: db/memtable_list_test.o $(LIBOBJECTS) $(TESTHARNESS) 1479 $(AM_LINK) 1480 1481 write_callback_test: db/write_callback_test.o $(LIBOBJECTS) $(TESTHARNESS) 1482 $(AM_LINK) 1483 1484 heap_test: util/heap_test.o $(GTEST) 1485 $(AM_LINK) 1486 1487 transaction_test: utilities/transactions/transaction_test.o $(LIBOBJECTS) $(TESTHARNESS) 1488 $(AM_LINK) 1489 1490 write_prepared_transaction_test: utilities/transactions/write_prepared_transaction_test.o $(LIBOBJECTS) $(TESTHARNESS) 1491 $(AM_LINK) 1492 1493 write_unprepared_transaction_test: utilities/transactions/write_unprepared_transaction_test.o $(LIBOBJECTS) $(TESTHARNESS) 1494 $(AM_LINK) 1495 1496 sst_dump: tools/sst_dump.o $(LIBOBJECTS) 1497 $(AM_LINK) 1498 1499 blob_dump: tools/blob_dump.o $(LIBOBJECTS) 1500 $(AM_LINK) 1501 1502 column_aware_encoding_exp: utilities/column_aware_encoding_exp.o $(EXPOBJECTS) 1503 $(AM_LINK) 1504 1505 repair_test: db/repair_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1506 $(AM_LINK) 1507 1508 ldb_cmd_test: tools/ldb_cmd_test.o $(LIBOBJECTS) $(TESTHARNESS) 1509 $(AM_LINK) 1510 1511 ldb: tools/ldb.o $(LIBOBJECTS) 1512 $(AM_LINK) 1513 1514 iostats_context_test: monitoring/iostats_context_test.o $(LIBOBJECTS) $(TESTHARNESS) 1515 $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) 1516 1517 persistent_cache_test: utilities/persistent_cache/persistent_cache_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1518 $(AM_LINK) 1519 1520 statistics_test: monitoring/statistics_test.o $(LIBOBJECTS) $(TESTHARNESS) 1521 $(AM_LINK) 1522 1523 lru_cache_test: cache/lru_cache_test.o $(LIBOBJECTS) $(TESTHARNESS) 1524 $(AM_LINK) 1525 1526 lua_test: utilities/lua/rocks_lua_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1527 $(AM_LINK) 1528 1529 range_del_aggregator_test: db/range_del_aggregator_test.o db/db_test_util.o $(LIBOBJECTS) $(TESTHARNESS) 1530 $(AM_LINK) 1531 1532 blob_db_test: utilities/blob_db/blob_db_test.o $(LIBOBJECTS) $(TESTHARNESS) 1533 $(AM_LINK) 1534 1535 #------------------------------------------------- 1536 # make install related stuff 1537 INSTALL_PATH ?= /usr/local 1538 1539 uninstall: 1540 rm -rf $(INSTALL_PATH)/include/rocksdb \ 1541 $(INSTALL_PATH)/lib/$(LIBRARY) \ 1542 $(INSTALL_PATH)/lib/$(SHARED4) \ 1543 $(INSTALL_PATH)/lib/$(SHARED3) \ 1544 $(INSTALL_PATH)/lib/$(SHARED2) \ 1545 $(INSTALL_PATH)/lib/$(SHARED1) 1546 1547 install-headers: 1548 install -d $(INSTALL_PATH)/lib 1549 for header_dir in `$(FIND) "include/rocksdb" -type d`; do \ 1550 install -d $(INSTALL_PATH)/$$header_dir; \ 1551 done 1552 for header in `$(FIND) "include/rocksdb" -type f -name *.h`; do \ 1553 install -C -m 644 $$header $(INSTALL_PATH)/$$header; \ 1554 done 1555 1556 install-static: install-headers $(LIBRARY) 1557 install -C -m 755 $(LIBRARY) $(INSTALL_PATH)/lib 1558 1559 install-shared: install-headers $(SHARED4) 1560 install -C -m 755 $(SHARED4) $(INSTALL_PATH)/lib && \ 1561 ln -fs $(SHARED4) $(INSTALL_PATH)/lib/$(SHARED3) && \ 1562 ln -fs $(SHARED4) $(INSTALL_PATH)/lib/$(SHARED2) && \ 1563 ln -fs $(SHARED4) $(INSTALL_PATH)/lib/$(SHARED1) 1564 1565 # install static by default + install shared if it exists 1566 install: install-static 1567 [ -e $(SHARED4) ] && $(MAKE) install-shared || : 1568 1569 #------------------------------------------------- 1570 1571 1572 # --------------------------------------------------------------------------- 1573 # Jni stuff 1574 # --------------------------------------------------------------------------- 1575 1576 JAVA_INCLUDE = -I$(JAVA_HOME)/include/ -I$(JAVA_HOME)/include/linux 1577 ifeq ($(PLATFORM), OS_SOLARIS) 1578 ARCH := $(shell isainfo -b) 1579 else ifeq ($(PLATFORM), OS_OPENBSD) 1580 ifneq (,$(filter $(MACHINE), amd64 arm64 sparc64)) 1581 ARCH := 64 1582 else 1583 ARCH := 32 1584 endif 1585 else 1586 ARCH := $(shell getconf LONG_BIT) 1587 endif 1588 1589 ifeq (,$(findstring ppc,$(MACHINE))) 1590 ROCKSDBJNILIB = librocksdbjni-linux$(ARCH).so 1591 else 1592 ROCKSDBJNILIB = librocksdbjni-linux-$(MACHINE).so 1593 endif 1594 ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-linux$(ARCH).jar 1595 ROCKSDB_JAR_ALL = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH).jar 1596 ROCKSDB_JAVADOCS_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-javadoc.jar 1597 ROCKSDB_SOURCES_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-sources.jar 1598 SHA256_CMD = sha256sum 1599 1600 ZLIB_VER ?= 1.2.11 1601 ZLIB_SHA256 ?= c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 1602 ZLIB_DOWNLOAD_BASE ?= http://zlib.net 1603 BZIP2_VER ?= 1.0.6 1604 BZIP2_SHA256 ?= a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd 1605 BZIP2_DOWNLOAD_BASE ?= https://web.archive.org/web/20180624184835/http://www.bzip.org 1606 SNAPPY_VER ?= 1.1.4 1607 SNAPPY_SHA256 ?= 134bfe122fd25599bb807bb8130e7ba6d9bdb851e0b16efcb83ac4f5d0b70057 1608 SNAPPY_DOWNLOAD_BASE ?= https://github.com/google/snappy/releases/download 1609 LZ4_VER ?= 1.8.0 1610 LZ4_SHA256 ?= 2ca482ea7a9bb103603108b5a7510b7592b90158c151ff50a28f1ca8389fccf6 1611 LZ4_DOWNLOAD_BASE ?= https://github.com/lz4/lz4/archive 1612 ZSTD_VER ?= 1.3.3 1613 ZSTD_SHA256 ?= a77c47153ee7de02626c5b2a097005786b71688be61e9fb81806a011f90b297b 1614 ZSTD_DOWNLOAD_BASE ?= https://github.com/facebook/zstd/archive 1615 CURL_SSL_OPTS ?= --tlsv1 1616 1617 ifeq ($(PLATFORM), OS_MACOSX) 1618 ROCKSDBJNILIB = librocksdbjni-osx.jnilib 1619 ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-osx.jar 1620 SHA256_CMD = openssl sha256 -r 1621 ifneq ("$(wildcard $(JAVA_HOME)/include/darwin)","") 1622 JAVA_INCLUDE = -I$(JAVA_HOME)/include -I $(JAVA_HOME)/include/darwin 1623 else 1624 JAVA_INCLUDE = -I/System/Library/Frameworks/JavaVM.framework/Headers/ 1625 endif 1626 endif 1627 ifeq ($(PLATFORM), OS_FREEBSD) 1628 JAVA_INCLUDE = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/freebsd 1629 ROCKSDBJNILIB = librocksdbjni-freebsd$(ARCH).so 1630 ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-freebsd$(ARCH).jar 1631 endif 1632 ifeq ($(PLATFORM), OS_SOLARIS) 1633 ROCKSDBJNILIB = librocksdbjni-solaris$(ARCH).so 1634 ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-solaris$(ARCH).jar 1635 JAVA_INCLUDE = -I$(JAVA_HOME)/include/ -I$(JAVA_HOME)/include/solaris 1636 SHA256_CMD = digest -a sha256 1637 endif 1638 ifeq ($(PLATFORM), OS_AIX) 1639 JAVA_INCLUDE = -I$(JAVA_HOME)/include/ -I$(JAVA_HOME)/include/aix 1640 ROCKSDBJNILIB = librocksdbjni-aix.so 1641 EXTRACT_SOURCES = gunzip < TAR_GZ | tar xvf - 1642 SNAPPY_MAKE_TARGET = libsnappy.la 1643 endif 1644 ifeq ($(PLATFORM), OS_OPENBSD) 1645 JAVA_INCLUDE = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/openbsd 1646 ROCKSDBJNILIB = librocksdbjni-openbsd$(ARCH).so 1647 ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-openbsd$(ARCH).jar 1648 endif 1649 1650 libz.a: 1651 -rm -rf zlib-$(ZLIB_VER) 1652 curl -O -L ${ZLIB_DOWNLOAD_BASE}/zlib-$(ZLIB_VER).tar.gz 1653 ZLIB_SHA256_ACTUAL=`$(SHA256_CMD) zlib-$(ZLIB_VER).tar.gz | cut -d ' ' -f 1`; \ 1654 if [ "$(ZLIB_SHA256)" != "$$ZLIB_SHA256_ACTUAL" ]; then \ 1655 echo zlib-$(ZLIB_VER).tar.gz checksum mismatch, expected=\"$(ZLIB_SHA256)\" actual=\"$$ZLIB_SHA256_ACTUAL\"; \ 1656 exit 1; \ 1657 fi 1658 tar xvzf zlib-$(ZLIB_VER).tar.gz 1659 cd zlib-$(ZLIB_VER) && CFLAGS='-fPIC ${EXTRA_CFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' ./configure --static && $(MAKE) 1660 cp zlib-$(ZLIB_VER)/libz.a . 1661 1662 libbz2.a: 1663 -rm -rf bzip2-$(BZIP2_VER) 1664 curl -O -L ${BZIP2_DOWNLOAD_BASE}/$(BZIP2_VER)/bzip2-$(BZIP2_VER).tar.gz 1665 BZIP2_SHA256_ACTUAL=`$(SHA256_CMD) bzip2-$(BZIP2_VER).tar.gz | cut -d ' ' -f 1`; \ 1666 if [ "$(BZIP2_SHA256)" != "$$BZIP2_SHA256_ACTUAL" ]; then \ 1667 echo bzip2-$(BZIP2_VER).tar.gz checksum mismatch, expected=\"$(BZIP2_SHA256)\" actual=\"$$BZIP2_SHA256_ACTUAL\"; \ 1668 exit 1; \ 1669 fi 1670 tar xvzf bzip2-$(BZIP2_VER).tar.gz 1671 cd bzip2-$(BZIP2_VER) && $(MAKE) CFLAGS='-fPIC -O2 -g -D_FILE_OFFSET_BITS=64 ${EXTRA_CFLAGS}' AR='ar ${EXTRA_ARFLAGS}' 1672 cp bzip2-$(BZIP2_VER)/libbz2.a . 1673 1674 libsnappy.a: 1675 -rm -rf snappy-$(SNAPPY_VER) 1676 curl -O -L ${CURL_SSL_OPTS} ${SNAPPY_DOWNLOAD_BASE}/$(SNAPPY_VER)/snappy-$(SNAPPY_VER).tar.gz 1677 SNAPPY_SHA256_ACTUAL=`$(SHA256_CMD) snappy-$(SNAPPY_VER).tar.gz | cut -d ' ' -f 1`; \ 1678 if [ "$(SNAPPY_SHA256)" != "$$SNAPPY_SHA256_ACTUAL" ]; then \ 1679 echo snappy-$(SNAPPY_VER).tar.gz checksum mismatch, expected=\"$(SNAPPY_SHA256)\" actual=\"$$SNAPPY_SHA256_ACTUAL\"; \ 1680 exit 1; \ 1681 fi 1682 tar xvzf snappy-$(SNAPPY_VER).tar.gz 1683 cd snappy-$(SNAPPY_VER) && CFLAGS='${EXTRA_CFLAGS}' CXXFLAGS='${EXTRA_CXXFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' ./configure --with-pic --enable-static --disable-shared 1684 cd snappy-$(SNAPPY_VER) && $(MAKE) ${SNAPPY_MAKE_TARGET} 1685 cp snappy-$(SNAPPY_VER)/.libs/libsnappy.a . 1686 1687 liblz4.a: 1688 -rm -rf lz4-$(LZ4_VER) 1689 curl -O -L ${CURL_SSL_OPTS} ${LZ4_DOWNLOAD_BASE}/v$(LZ4_VER).tar.gz 1690 mv v$(LZ4_VER).tar.gz lz4-$(LZ4_VER).tar.gz 1691 LZ4_SHA256_ACTUAL=`$(SHA256_CMD) lz4-$(LZ4_VER).tar.gz | cut -d ' ' -f 1`; \ 1692 if [ "$(LZ4_SHA256)" != "$$LZ4_SHA256_ACTUAL" ]; then \ 1693 echo lz4-$(LZ4_VER).tar.gz checksum mismatch, expected=\"$(LZ4_SHA256)\" actual=\"$$LZ4_SHA256_ACTUAL\"; \ 1694 exit 1; \ 1695 fi 1696 tar xvzf lz4-$(LZ4_VER).tar.gz 1697 cd lz4-$(LZ4_VER)/lib && $(MAKE) CFLAGS='-fPIC -O2 ${EXTRA_CFLAGS}' all 1698 cp lz4-$(LZ4_VER)/lib/liblz4.a . 1699 1700 libzstd.a: 1701 -rm -rf zstd-$(ZSTD_VER) 1702 curl -O -L ${CURL_SSL_OPTS} ${ZSTD_DOWNLOAD_BASE}/v$(ZSTD_VER).tar.gz 1703 mv v$(ZSTD_VER).tar.gz zstd-$(ZSTD_VER).tar.gz 1704 ZSTD_SHA256_ACTUAL=`$(SHA256_CMD) zstd-$(ZSTD_VER).tar.gz | cut -d ' ' -f 1`; \ 1705 if [ "$(ZSTD_SHA256)" != "$$ZSTD_SHA256_ACTUAL" ]; then \ 1706 echo zstd-$(ZSTD_VER).tar.gz checksum mismatch, expected=\"$(ZSTD_SHA256)\" actual=\"$$ZSTD_SHA256_ACTUAL\"; \ 1707 exit 1; \ 1708 fi 1709 tar xvzf zstd-$(ZSTD_VER).tar.gz 1710 cd zstd-$(ZSTD_VER)/lib && DESTDIR=. PREFIX= $(MAKE) CFLAGS='-fPIC -O2 ${EXTRA_CFLAGS}' install 1711 cp zstd-$(ZSTD_VER)/lib/libzstd.a . 1712 1713 # A version of each $(LIBOBJECTS) compiled with -fPIC and a fixed set of static compression libraries 1714 java_static_libobjects = $(patsubst %,jls/%,$(LIB_CC_OBJECTS)) 1715 CLEAN_FILES += jls 1716 java_static_all_libobjects = $(java_static_libobjects) 1717 1718 ifneq ($(ROCKSDB_JAVA_NO_COMPRESSION), 1) 1719 JAVA_COMPRESSIONS = libz.a libbz2.a libsnappy.a liblz4.a libzstd.a 1720 endif 1721 1722 JAVA_STATIC_FLAGS = -DZLIB -DBZIP2 -DSNAPPY -DLZ4 -DZSTD 1723 JAVA_STATIC_INCLUDES = -I./zlib-$(ZLIB_VER) -I./bzip2-$(BZIP2_VER) -I./snappy-$(SNAPPY_VER) -I./lz4-$(LZ4_VER)/lib -I./zstd-$(ZSTD_VER)/lib/include 1724 1725 ifeq ($(HAVE_POWER8),1) 1726 JAVA_STATIC_C_LIBOBJECTS = $(patsubst %.c.o,jls/%.c.o,$(LIB_SOURCES_C:.c=.o)) 1727 JAVA_STATIC_ASM_LIBOBJECTS = $(patsubst %.S.o,jls/%.S.o,$(LIB_SOURCES_ASM:.S=.o)) 1728 1729 java_static_ppc_libobjects = $(JAVA_STATIC_C_LIBOBJECTS) $(JAVA_STATIC_ASM_LIBOBJECTS) 1730 1731 jls/util/crc32c_ppc.o: util/crc32c_ppc.c 1732 $(AM_V_CC)$(CC) $(CFLAGS) $(JAVA_STATIC_FLAGS) $(JAVA_STATIC_INCLUDES) -c $< -o $@ 1733 1734 jls/util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S 1735 $(AM_V_CC)$(CC) $(CFLAGS) $(JAVA_STATIC_FLAGS) $(JAVA_STATIC_INCLUDES) -c $< -o $@ 1736 1737 java_static_all_libobjects += $(java_static_ppc_libobjects) 1738 endif 1739 1740 $(java_static_libobjects): jls/%.o: %.cc $(JAVA_COMPRESSIONS) 1741 $(AM_V_CC)mkdir -p $(@D) && $(CXX) $(CXXFLAGS) $(JAVA_STATIC_FLAGS) $(JAVA_STATIC_INCLUDES) -fPIC -c $< -o $@ $(COVERAGEFLAGS) 1742 1743 rocksdbjavastatic: $(java_static_all_libobjects) 1744 cd java;$(MAKE) javalib; 1745 rm -f ./java/target/$(ROCKSDBJNILIB) 1746 $(CXX) $(CXXFLAGS) -I./java/. $(JAVA_INCLUDE) -shared -fPIC \ 1747 -o ./java/target/$(ROCKSDBJNILIB) $(JNI_NATIVE_SOURCES) \ 1748 $(java_static_all_libobjects) $(COVERAGEFLAGS) \ 1749 $(JAVA_COMPRESSIONS) $(JAVA_STATIC_LDFLAGS) 1750 cd java/target;if [ "$(DEBUG_LEVEL)" == "0" ]; then \ 1751 strip $(STRIPFLAGS) $(ROCKSDBJNILIB); \ 1752 fi 1753 cd java;jar -cf target/$(ROCKSDB_JAR) HISTORY*.md 1754 cd java/target;jar -uf $(ROCKSDB_JAR) $(ROCKSDBJNILIB) 1755 cd java/target/classes;jar -uf ../$(ROCKSDB_JAR) org/rocksdb/*.class org/rocksdb/util/*.class 1756 cd java/target/apidocs;jar -cf ../$(ROCKSDB_JAVADOCS_JAR) * 1757 cd java/src/main/java;jar -cf ../../../target/$(ROCKSDB_SOURCES_JAR) org 1758 1759 rocksdbjavastaticrelease: rocksdbjavastatic 1760 cd java/crossbuild && vagrant destroy -f && vagrant up linux32 && vagrant halt linux32 && vagrant up linux64 && vagrant halt linux64 1761 cd java;jar -cf target/$(ROCKSDB_JAR_ALL) HISTORY*.md 1762 cd java/target;jar -uf $(ROCKSDB_JAR_ALL) librocksdbjni-*.so librocksdbjni-*.jnilib 1763 cd java/target/classes;jar -uf ../$(ROCKSDB_JAR_ALL) org/rocksdb/*.class org/rocksdb/util/*.class 1764 1765 rocksdbjavastaticreleasedocker: rocksdbjavastatic 1766 DOCKER_LINUX_X64_CONTAINER=`docker ps -aqf name=rocksdb_linux_x64-be`; \ 1767 if [ -z "$$DOCKER_LINUX_X64_CONTAINER" ]; then \ 1768 docker container create --attach stdin --attach stdout --attach stderr --volume `pwd`:/rocksdb-host --name rocksdb_linux_x64-be evolvedbinary/rocksjava:centos6_x64-be /rocksdb-host/java/crossbuild/docker-build-linux-centos.sh; \ 1769 fi 1770 docker start -a rocksdb_linux_x64-be 1771 DOCKER_LINUX_X86_CONTAINER=`docker ps -aqf name=rocksdb_linux_x86-be`; \ 1772 if [ -z "$$DOCKER_LINUX_X86_CONTAINER" ]; then \ 1773 docker container create --attach stdin --attach stdout --attach stderr --volume `pwd`:/rocksdb-host --name rocksdb_linux_x86-be evolvedbinary/rocksjava:centos6_x86-be /rocksdb-host/java/crossbuild/docker-build-linux-centos.sh; \ 1774 fi 1775 docker start -a rocksdb_linux_x86-be 1776 cd java;jar -cf target/$(ROCKSDB_JAR_ALL) HISTORY*.md 1777 cd java/target;jar -uf $(ROCKSDB_JAR_ALL) librocksdbjni-*.so librocksdbjni-*.jnilib 1778 cd java/target/classes;jar -uf ../$(ROCKSDB_JAR_ALL) org/rocksdb/*.class org/rocksdb/util/*.class 1779 1780 rocksdbjavastaticdockerppc64le: 1781 mkdir -p java/target 1782 DOCKER_LINUX_PPC64LE_CONTAINER=`docker ps -aqf name=rocksdb_linux_ppc64le-be`; \ 1783 if [ -z "$$DOCKER_LINUX_PPC64LE_CONTAINER" ]; then \ 1784 docker container create --attach stdin --attach stdout --attach stderr --volume `pwd`:/rocksdb-host --name rocksdb_linux_ppc64le-be evolvedbinary/rocksjava:centos7_ppc64le-be /rocksdb-host/java/crossbuild/docker-build-linux-centos.sh; \ 1785 fi 1786 docker start -a rocksdb_linux_ppc64le-be 1787 1788 rocksdbjavastaticpublish: rocksdbjavastaticrelease rocksdbjavastaticpublishcentral 1789 1790 rocksdbjavastaticpublishdocker: rocksdbjavastaticreleasedocker rocksdbjavastaticpublishcentral 1791 1792 rocksdbjavastaticpublishcentral: 1793 mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-javadoc.jar -Dclassifier=javadoc 1794 mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-sources.jar -Dclassifier=sources 1795 mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-linux64.jar -Dclassifier=linux64 1796 mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-linux32.jar -Dclassifier=linux32 1797 mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-osx.jar -Dclassifier=osx 1798 mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-win64.jar -Dclassifier=win64 1799 mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH).jar 1800 1801 # A version of each $(LIBOBJECTS) compiled with -fPIC 1802 ifeq ($(HAVE_POWER8),1) 1803 JAVA_CC_OBJECTS = $(SHARED_CC_OBJECTS) 1804 JAVA_C_OBJECTS = $(SHARED_C_OBJECTS) 1805 JAVA_ASM_OBJECTS = $(SHARED_ASM_OBJECTS) 1806 1807 JAVA_C_LIBOBJECTS = $(patsubst %.c.o,jl/%.c.o,$(JAVA_C_OBJECTS)) 1808 JAVA_ASM_LIBOBJECTS = $(patsubst %.S.o,jl/%.S.o,$(JAVA_ASM_OBJECTS)) 1809 endif 1810 1811 java_libobjects = $(patsubst %,jl/%,$(LIB_CC_OBJECTS)) 1812 CLEAN_FILES += jl 1813 java_all_libobjects = $(java_libobjects) 1814 1815 ifeq ($(HAVE_POWER8),1) 1816 java_ppc_libobjects = $(JAVA_C_LIBOBJECTS) $(JAVA_ASM_LIBOBJECTS) 1817 1818 jl/crc32c_ppc.o: util/crc32c_ppc.c 1819 $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ 1820 1821 jl/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S 1822 $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ 1823 java_all_libobjects += $(java_ppc_libobjects) 1824 endif 1825 1826 $(java_libobjects): jl/%.o: %.cc 1827 $(AM_V_CC)mkdir -p $(@D) && $(CXX) $(CXXFLAGS) -fPIC -c $< -o $@ $(COVERAGEFLAGS) 1828 1829 1830 1831 rocksdbjava: $(java_all_libobjects) 1832 $(AM_V_GEN)cd java;$(MAKE) javalib; 1833 $(AM_V_at)rm -f ./java/target/$(ROCKSDBJNILIB) 1834 $(AM_V_at)$(CXX) $(CXXFLAGS) -I./java/. $(JAVA_INCLUDE) -shared -fPIC -o ./java/target/$(ROCKSDBJNILIB) $(JNI_NATIVE_SOURCES) $(java_all_libobjects) $(JAVA_LDFLAGS) $(COVERAGEFLAGS) 1835 $(AM_V_at)cd java;jar -cf target/$(ROCKSDB_JAR) HISTORY*.md 1836 $(AM_V_at)cd java/target;jar -uf $(ROCKSDB_JAR) $(ROCKSDBJNILIB) 1837 $(AM_V_at)cd java/target/classes;jar -uf ../$(ROCKSDB_JAR) org/rocksdb/*.class org/rocksdb/util/*.class 1838 1839 jclean: 1840 cd java;$(MAKE) clean; 1841 1842 jtest_compile: rocksdbjava 1843 cd java;$(MAKE) java_test 1844 1845 jtest_run: 1846 cd java;$(MAKE) run_test 1847 1848 jtest: rocksdbjava 1849 cd java;$(MAKE) sample;$(MAKE) test; 1850 1851 jdb_bench: 1852 cd java;$(MAKE) db_bench; 1853 1854 commit_prereq: build_tools/rocksdb-lego-determinator \ 1855 build_tools/precommit_checker.py 1856 J=$(J) build_tools/precommit_checker.py unit unit_481 clang_unit release release_481 clang_release tsan asan ubsan lite unit_non_shm 1857 $(MAKE) clean && $(MAKE) jclean && $(MAKE) rocksdbjava; 1858 1859 # --------------------------------------------------------------------------- 1860 # Platform-specific compilation 1861 # --------------------------------------------------------------------------- 1862 1863 ifeq ($(PLATFORM), IOS) 1864 # For iOS, create universal object files to be used on both the simulator and 1865 # a device. 1866 PLATFORMSROOT=/Applications/Xcode.app/Contents/Developer/Platforms 1867 SIMULATORROOT=$(PLATFORMSROOT)/iPhoneSimulator.platform/Developer 1868 DEVICEROOT=$(PLATFORMSROOT)/iPhoneOS.platform/Developer 1869 IOSVERSION=$(shell defaults read $(PLATFORMSROOT)/iPhoneOS.platform/version CFBundleShortVersionString) 1870 1871 .cc.o: 1872 mkdir -p ios-x86/$(dir $@) 1873 $(CXX) $(CXXFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 -arch x86_64 -c $< -o ios-x86/$@ 1874 mkdir -p ios-arm/$(dir $@) 1875 xcrun -sdk iphoneos $(CXX) $(CXXFLAGS) -isysroot $(DEVICEROOT)/SDKs/iPhoneOS$(IOSVERSION).sdk -arch armv6 -arch armv7 -arch armv7s -arch arm64 -c $< -o ios-arm/$@ 1876 lipo ios-x86/$@ ios-arm/$@ -create -output $@ 1877 1878 .c.o: 1879 mkdir -p ios-x86/$(dir $@) 1880 $(CC) $(CFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 -arch x86_64 -c $< -o ios-x86/$@ 1881 mkdir -p ios-arm/$(dir $@) 1882 xcrun -sdk iphoneos $(CC) $(CFLAGS) -isysroot $(DEVICEROOT)/SDKs/iPhoneOS$(IOSVERSION).sdk -arch armv6 -arch armv7 -arch armv7s -arch arm64 -c $< -o ios-arm/$@ 1883 lipo ios-x86/$@ ios-arm/$@ -create -output $@ 1884 1885 else 1886 ifeq ($(HAVE_POWER8),1) 1887 util/crc32c_ppc.o: util/crc32c_ppc.c 1888 $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ 1889 1890 util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S 1891 $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ 1892 endif 1893 .cc.o: 1894 $(AM_V_CC)$(CXX) $(CXXFLAGS) -c $< -o $@ $(COVERAGEFLAGS) 1895 1896 .c.o: 1897 $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ 1898 endif 1899 # --------------------------------------------------------------------------- 1900 # Source files dependencies detection 1901 # --------------------------------------------------------------------------- 1902 1903 all_sources = $(LIB_SOURCES) $(MAIN_SOURCES) $(MOCK_LIB_SOURCES) $(TOOL_LIB_SOURCES) $(BENCH_LIB_SOURCES) $(TEST_LIB_SOURCES) $(EXP_LIB_SOURCES) 1904 DEPFILES = $(all_sources:.cc=.cc.d) 1905 1906 # Add proper dependency support so changing a .h file forces a .cc file to 1907 # rebuild. 1908 1909 # The .d file indicates .cc file's dependencies on .h files. We generate such 1910 # dependency by g++'s -MM option, whose output is a make dependency rule. 1911 %.cc.d: %.cc 1912 @$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \ 1913 -MM -MT'$@' -MT'$(<:.cc=.o)' "$<" -o '$@' 1914 1915 ifeq ($(HAVE_POWER8),1) 1916 DEPFILES_C = $(LIB_SOURCES_C:.c=.c.d) 1917 DEPFILES_ASM = $(LIB_SOURCES_ASM:.S=.S.d) 1918 1919 %.c.d: %.c 1920 @$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \ 1921 -MM -MT'$@' -MT'$(<:.c=.o)' "$<" -o '$@' 1922 1923 %.S.d: %.S 1924 @$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \ 1925 -MM -MT'$@' -MT'$(<:.S=.o)' "$<" -o '$@' 1926 1927 $(DEPFILES_C): %.c.d 1928 1929 $(DEPFILES_ASM): %.S.d 1930 depend: $(DEPFILES) $(DEPFILES_C) $(DEPFILES_ASM) 1931 else 1932 depend: $(DEPFILES) 1933 endif 1934 1935 # if the make goal is either "clean" or "format", we shouldn't 1936 # try to import the *.d files. 1937 # TODO(kailiu) The unfamiliarity of Make's conditions leads to the ugly 1938 # working solution. 1939 ifneq ($(MAKECMDGOALS),clean) 1940 ifneq ($(MAKECMDGOALS),format) 1941 ifneq ($(MAKECMDGOALS),jclean) 1942 ifneq ($(MAKECMDGOALS),jtest) 1943 ifneq ($(MAKECMDGOALS),package) 1944 ifneq ($(MAKECMDGOALS),analyze) 1945 -include $(DEPFILES) 1946 endif 1947 endif 1948 endif 1949 endif 1950 endif 1951 endif