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.
5 # Inherit some settings from environment variables, if available
7 #-----------------------------------------------
9 BASH_EXISTS
:= $(shell which bash
)
10 SHELL
:= $(shell which bash
)
12 CLEAN_FILES
= # deliberately empty, so we can append below.
13 CFLAGS
+= ${EXTRA_CFLAGS}
14 CXXFLAGS
+= ${EXTRA_CXXFLAGS}
15 LDFLAGS
+= $(EXTRA_LDFLAGS
)
16 MACHINE ?
= $(shell uname
-m
)
17 ARFLAGS
= ${EXTRA_ARFLAGS} rs
20 # Transform parallel LOG output into something more readable.
21 perl_command
= perl
-n \
22 -e
'@a=split("\t",$$_,-1); $$t=$$a[8];' \
23 -e
'$$t =~ /.*if\s\[\[\s"(.*?\.[\w\/]+)/ and $$t=$$1;' \
24 -e
'$$t =~ s,^\./,,;' \
25 -e
'$$t =~ s, >.*,,; chomp $$t;' \
26 -e
'$$t =~ /.*--gtest_filter=(.*?\.[\w\/]+)/ and $$t=$$1;' \
27 -e
'printf "%7.3f %s %s\n", $$a[3], $$a[6] == 0 ? "PASS" : "FAIL", $$t'
28 quoted_perl_command
= $(subst ','\'',$(perl_command))
30 # DEBUG_LEVEL can have three values:
31 # * DEBUG_LEVEL=2; this is the ultimate debug mode. It will compile rocksdb
32 # without any optimizations. To compile with level 2, issue `make dbg`
33 # * DEBUG_LEVEL=1; debug level 1 enables all assertions and debug code, but
34 # compiles rocksdb with -O2 optimizations. this is the default debug level.
35 # `make all` or `make <binary_target>` compile RocksDB with debug level 1.
36 # We use this debug level when developing RocksDB.
37 # * DEBUG_LEVEL=0; this is the debug level we use for release. If you're
38 # running rocksdb in production you most definitely want to compile RocksDB
39 # with debug level 0. To compile with level 0, run `make shared_lib`,
40 # `make install-shared`, `make static_lib`, `make install-static` or
43 # Set the default DEBUG_LEVEL to 1
46 ifeq ($(MAKECMDGOALS
),dbg
)
50 ifeq ($(MAKECMDGOALS
),clean)
54 ifeq ($(MAKECMDGOALS
),release
)
58 ifeq ($(MAKECMDGOALS
),shared_lib
)
62 ifeq ($(MAKECMDGOALS
),install-shared
)
66 ifeq ($(MAKECMDGOALS
),static_lib
)
70 ifeq ($(MAKECMDGOALS
),install-static
)
74 ifeq ($(MAKECMDGOALS
),install)
78 ifeq ($(MAKECMDGOALS
),rocksdbjavastatic
)
79 ifneq ($(DEBUG_LEVEL
),2)
84 ifeq ($(MAKECMDGOALS
),rocksdbjavastaticrelease
)
88 ifeq ($(MAKECMDGOALS
),rocksdbjavastaticreleasedocker
)
92 ifeq ($(MAKECMDGOALS
),rocksdbjavastaticpublish
)
96 # compile with -O2 if debug level is not 2
97 ifneq ($(DEBUG_LEVEL
), 2)
98 OPT
+= -O2
-fno-omit-frame-pointer
99 # Skip for archs that don't support -momit-leaf-frame-pointer
100 ifeq (,$(shell $(CXX
) -fsyntax-only
-momit-leaf-frame-pointer
-xc
/dev
/null
2>&1))
101 OPT
+= -momit-leaf-frame-pointer
105 ifeq (,$(shell $(CXX
) -fsyntax-only
-faligned-new
-xc
++ /dev
/null
2>&1))
106 CXXFLAGS
+= -faligned-new
-DHAVE_ALIGNED_NEW
109 ifeq (,$(shell $(CXX
) -fsyntax-only
-maltivec
-xc
/dev
/null
2>&1))
110 CXXFLAGS
+= -DHAS_ALTIVEC
111 CFLAGS
+= -DHAS_ALTIVEC
115 ifeq (,$(shell $(CXX
) -fsyntax-only
-mcpu
=power8
-xc
/dev
/null
2>&1))
116 CXXFLAGS
+= -DHAVE_POWER8
117 CFLAGS
+= -DHAVE_POWER8
121 # if we're compiling for release, compile without debug code (-DNDEBUG)
122 ifeq ($(DEBUG_LEVEL
),0)
125 ifneq ($(USE_RTTI
), 1)
126 CXXFLAGS
+= -fno-rtti
128 CXXFLAGS
+= -DROCKSDB_USE_RTTI
131 ifneq ($(USE_RTTI
), 0)
132 CXXFLAGS
+= -DROCKSDB_USE_RTTI
134 CXXFLAGS
+= -fno-rtti
137 $(warning Warning
: Compiling in debug mode. Don
't use the resulting binary in production)
140 #-----------------------------------------------
143 AM_DEFAULT_VERBOSITY = 0
145 AM_V_GEN = $(am__v_GEN_$(V))
146 am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
147 am__v_GEN_0 = @echo " GEN " $@;
149 AM_V_at = $(am__v_at_$(V))
150 am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
154 AM_V_CC = $(am__v_CC_$(V))
155 am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
156 am__v_CC_0 = @echo " CC " $@;
159 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
160 AM_V_CCLD = $(am__v_CCLD_$(V))
161 am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
162 am__v_CCLD_0 = @echo " CCLD " $@;
164 AM_V_AR = $(am__v_AR_$(V))
165 am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
166 am__v_AR_0 = @echo " AR " $@;
169 ifdef ROCKSDB_USE_LIBRADOS
170 LIB_SOURCES += utilities/env_librados.cc
174 AM_LINK = $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) $(COVERAGEFLAGS)
175 # detect what platform we're building on
176 dummy
:= $(shell (export ROCKSDB_ROOT
="$(CURDIR)"; export PORTABLE
="$(PORTABLE)"; "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk"))
177 # this file is generated by the previous line to set build flags and sources
178 include make_config.mk
179 CLEAN_FILES
+= make_config.mk
181 missing_make_config_paths
:= $(shell \
182 grep
"\/\S*" -o
$(CURDIR
)/make_config.mk | \
184 do
[ -e
$$path ] || echo
$$path; \
187 $(foreach path
, $(missing_make_config_paths
), \
188 $(warning Warning
: $(path
) dont exist
))
190 ifeq ($(PLATFORM
), OS_AIX
)
192 else ifneq ($(PLATFORM
), IOS
)
196 # no debug info for IOS, that will make our library big
200 ifeq ($(PLATFORM
), OS_AIX
)
205 ifeq ($(PLATFORM
), OS_SOLARIS
)
206 PLATFORM_CXXFLAGS
+= -D _GLIBCXX_USE_C99
208 ifneq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
210 CFLAGS
+= -fno-exceptions
211 CXXFLAGS
+= -fno-exceptions
212 # LUA is not supported under ROCKSDB_LITE
216 # ASAN doesn't work well with jemalloc. If we're compiling with ASAN, we should use regular malloc.
217 ifdef COMPILE_WITH_ASAN
219 EXEC_LDFLAGS
+= -fsanitize
=address
220 PLATFORM_CCFLAGS
+= -fsanitize
=address
221 PLATFORM_CXXFLAGS
+= -fsanitize
=address
224 # TSAN doesn't work well with jemalloc. If we're compiling with TSAN, we should use regular malloc.
225 ifdef COMPILE_WITH_TSAN
227 EXEC_LDFLAGS
+= -fsanitize
=thread
228 PLATFORM_CCFLAGS
+= -fsanitize
=thread
-fPIC
229 PLATFORM_CXXFLAGS
+= -fsanitize
=thread
-fPIC
230 # Turn off -pg when enabling TSAN testing, because that induces
231 # a link failure. TODO: find the root cause
233 # LUA is not supported under TSAN
235 # Limit keys for crash test under TSAN to avoid error:
236 # "ThreadSanitizer: DenseSlabAllocator overflow. Dying."
237 CRASH_TEST_EXT_ARGS
+= --max_key
=1000000
240 # AIX doesn't work with -pg
241 ifeq ($(PLATFORM
), OS_AIX
)
245 # USAN doesn't work well with jemalloc. If we're compiling with USAN, we should use regular malloc.
246 ifdef COMPILE_WITH_UBSAN
248 # Suppress alignment warning because murmurhash relies on casting unaligned
249 # memory to integer. Fixing it may cause performance regression. 3-way crc32
250 # relies on it too, although it can be rewritten to eliminate with minimal
251 # performance regression.
252 EXEC_LDFLAGS
+= -fsanitize
=undefined
-fno-sanitize-recover
=all
253 PLATFORM_CCFLAGS
+= -fsanitize
=undefined
-fno-sanitize-recover
=all -DROCKSDB_UBSAN_RUN
254 PLATFORM_CXXFLAGS
+= -fsanitize
=undefined
-fno-sanitize-recover
=all -DROCKSDB_UBSAN_RUN
257 ifdef ROCKSDB_VALGRIND_RUN
258 PLATFORM_CCFLAGS
+= -DROCKSDB_VALGRIND_RUN
259 PLATFORM_CXXFLAGS
+= -DROCKSDB_VALGRIND_RUN
262 ifndef DISABLE_JEMALLOC
264 PLATFORM_CXXFLAGS
+= -DROCKSDB_JEMALLOC
-DJEMALLOC_NO_DEMANGLE
265 PLATFORM_CCFLAGS
+= -DROCKSDB_JEMALLOC
-DJEMALLOC_NO_DEMANGLE
267 ifdef WITH_JEMALLOC_FLAG
268 PLATFORM_LDFLAGS
+= -ljemalloc
269 JAVA_LDFLAGS
+= -ljemalloc
271 EXEC_LDFLAGS
:= $(JEMALLOC_LIB
) $(EXEC_LDFLAGS
)
272 PLATFORM_CXXFLAGS
+= $(JEMALLOC_INCLUDE
)
273 PLATFORM_CCFLAGS
+= $(JEMALLOC_INCLUDE
)
276 export GTEST_THROW_ON_FAILURE
=1
277 export GTEST_HAS_EXCEPTIONS
=1
278 GTEST_DIR
= .
/third-party
/gtest-1.7
.0/fused-src
279 # AIX: pre-defined system headers are surrounded by an extern "C" block
280 ifeq ($(PLATFORM
), OS_AIX
)
281 PLATFORM_CCFLAGS
+= -I
$(GTEST_DIR
)
282 PLATFORM_CXXFLAGS
+= -I
$(GTEST_DIR
)
284 PLATFORM_CCFLAGS
+= -isystem
$(GTEST_DIR
)
285 PLATFORM_CXXFLAGS
+= -isystem
$(GTEST_DIR
)
288 # This (the first rule) must depend on "all".
291 WARNING_FLAGS
= -W
-Wextra
-Wall
-Wsign-compare
-Wshadow \
294 ifeq ($(PLATFORM
), OS_OPENBSD
)
295 WARNING_FLAGS
+= -Wno-unused-lambda-capture
298 ifndef DISABLE_WARNING_AS_ERROR
299 WARNING_FLAGS
+= -Werror
306 LUA_INCLUDE
=$(LUA_PATH
)/include
309 LUA_INCLUDE_FILE
=$(LUA_INCLUDE
)/lualib.h
311 ifeq ("$(wildcard $(LUA_INCLUDE_FILE))", "")
312 # LUA_INCLUDE_FILE does not exist
313 $(error Cannot find lualib.h under
$(LUA_INCLUDE
). Try to specify both LUA_PATH and LUA_INCLUDE manually
)
315 LUA_FLAGS
= -I
$(LUA_INCLUDE
) -DLUA
-DLUA_COMPAT_ALL
316 CFLAGS
+= $(LUA_FLAGS
)
317 CXXFLAGS
+= $(LUA_FLAGS
)
320 LUA_LIB
= $(LUA_PATH
)/lib
/liblua.a
322 ifeq ("$(wildcard $(LUA_LIB))", "") # LUA_LIB does not exist
323 $(error
$(LUA_LIB
) does not exist. Try to specify both LUA_PATH and LUA_LIB manually
)
325 LDFLAGS
+= $(LUA_LIB
)
329 ifeq ($(NO_THREEWAY_CRC32C
), 1)
330 CXXFLAGS
+= -DNO_THREEWAY_CRC32C
333 CFLAGS
+= $(WARNING_FLAGS
) -I.
-I.
/include $(PLATFORM_CCFLAGS
) $(OPT
)
334 CXXFLAGS
+= $(WARNING_FLAGS
) -I.
-I.
/include $(PLATFORM_CXXFLAGS
) $(OPT
) -Woverloaded-virtual
-Wnon-virtual-dtor
-Wno-missing-field-initializers
336 LDFLAGS
+= $(PLATFORM_LDFLAGS
)
338 # If NO_UPDATE_BUILD_VERSION is set we don't update util/build_version.cc, but
339 # the file needs to already exist or else the build will fail
340 ifndef NO_UPDATE_BUILD_VERSION
341 date
:= $(shell date
+%F
)
343 git_sha
:= $(FORCE_GIT_SHA
)
345 git_sha
:= $(shell git rev-parse HEAD
2>/dev
/null
)
347 gen_build_version
= sed
-e s
/@@GIT_SHA@@
/$(git_sha
)/ -e s
/@@GIT_DATE_TIME@@
/$(date
)/ util
/build_version.
cc.in
349 # Record the version of the source that we are compiling.
350 # We keep a record of the git revision in this file. It is then built
351 # as a regular source file as part of the compilation process.
352 # One can run "strings executable_filename | grep _build_" to find
353 # the version of the source that we used to build the executable file.
355 util
/build_version.
cc: FORCE
356 $(AM_V_GEN
)rm -f
$@
-t
357 $(AM_V_at
)$(gen_build_version
) > $@
-t
358 $(AM_V_at
)if
test -f
$@
; then \
359 cmp
-s
$@
-t
$@
&& rm -f
$@
-t || mv
-f
$@
-t
$@
; \
360 else mv
-f
$@
-t
$@
; fi
363 LIBOBJECTS
= $(LIB_SOURCES
:.
cc=.o
)
364 ifeq ($(HAVE_POWER8
),1)
365 LIB_CC_OBJECTS
= $(LIB_SOURCES
:.
cc=.o
)
366 LIBOBJECTS
+= $(LIB_SOURCES_C
:.c
=.o
)
367 LIBOBJECTS
+= $(LIB_SOURCES_ASM
:.S
=.o
)
369 LIB_CC_OBJECTS
= $(LIB_SOURCES
:.
cc=.o
)
372 LIBOBJECTS
+= $(TOOL_LIB_SOURCES
:.
cc=.o
)
373 MOCKOBJECTS
= $(MOCK_LIB_SOURCES
:.
cc=.o
)
375 GTEST
= $(GTEST_DIR
)/gtest
/gtest-all.o
376 TESTUTIL
= .
/util
/testutil.o
377 TESTHARNESS
= .
/util
/testharness.o
$(TESTUTIL
) $(MOCKOBJECTS
) $(GTEST
)
379 VALGRIND_VER
:= $(join $(VALGRIND_VER
),valgrind
)
381 VALGRIND_OPTS
= --error-exitcode
=$(VALGRIND_ERROR
) --leak-check
=full
383 BENCHTOOLOBJECTS
= $(BENCH_LIB_SOURCES
:.
cc=.o
) $(LIBOBJECTS
) $(TESTUTIL
)
385 ANALYZETOOLOBJECTS
= $(ANALYZER_LIB_SOURCES
:.
cc=.o
)
387 EXPOBJECTS
= $(EXP_LIB_SOURCES
:.
cc=.o
) $(LIBOBJECTS
) $(TESTUTIL
)
393 external_sst_file_basic_test \
394 auto_roll_logger_test \
401 inlineskiplist_test \
408 iostats_context_test \
410 db_block_cache_test \
413 db_bloom_filter_test \
415 db_iter_stress_test \
417 db_compaction_filter_test \
419 db_dynamic_level_test \
421 db_inplace_update_test \
424 db_merge_operator_test \
428 db_tailing_iter_test \
431 db_table_properties_test \
439 table_properties_collector_test \
442 data_block_hash_index_test \
445 slice_transform_test \
447 fault_injection_test \
450 file_reader_writer_test \
451 block_based_filter_block_test \
452 full_filter_block_test \
453 partitioned_filter_block_test \
457 manual_compaction_test \
464 util_merge_operators_test \
468 plain_table_db_test \
470 external_sst_file_test \
473 write_buffer_manager_test \
475 cassandra_format_test \
476 cassandra_functional_test \
477 cassandra_row_merge_test \
478 cassandra_serialize_test \
488 compaction_picker_test \
489 version_builder_test \
492 write_batch_with_index_test \
493 write_controller_test\
495 obsolete_files_test \
498 delete_scheduler_test \
500 options_settable_test \
504 cuckoo_table_builder_test \
505 cuckoo_table_reader_test \
506 cuckoo_table_db_test \
510 compaction_iterator_test \
511 compaction_job_test \
514 column_aware_encoding_test \
516 optimistic_transaction_test \
517 write_callback_test \
519 compact_on_deletion_collector_test \
520 compaction_job_stats_test \
521 option_change_migration_test \
524 persistent_cache_test \
527 range_del_aggregator_test \
529 object_registry_test \
532 write_prepared_transaction_test \
533 write_unprepared_transaction_test \
534 db_universal_compaction_test \
535 trace_analyzer_test \
536 repeatable_thread_test \
540 db_compaction_filter_test \
542 db_merge_operator_test \
545 db_universal_compaction_test \
547 external_sst_file_test \
548 fault_injection_test \
549 inlineskiplist_test \
550 manual_compaction_test \
551 persistent_cache_test \
554 write_prepared_transaction_test \
555 write_unprepared_transaction_test \
557 # options_settable_test doesn't pass with UBSAN as we use hack in the test
558 ifdef COMPILE_WITH_UBSAN
559 TESTS
:= $(shell echo
$(TESTS
) | sed
's/\boptions_settable_test\b//g')
562 ifdef ROCKSDBTESTS_START
563 SUBSET
:= $(shell echo
$(SUBSET
) | sed
's/^.*$(ROCKSDBTESTS_START)/$(ROCKSDBTESTS_START)/')
566 ifdef ROCKSDBTESTS_END
567 SUBSET
:= $(shell echo
$(SUBSET
) | sed
's/$(ROCKSDBTESTS_END).*//')
583 librocksdb_env_basic_test.a
585 # TODO: add back forward_iterator_bench, after making it build in all environemnts.
586 BENCHMARKS
= db_bench table_reader_bench cache_bench memtablerep_bench column_aware_encoding_exp persistent_cache_bench range_del_aggregator_bench
588 # if user didn't config LIBNAME, set the default
590 # we should only run rocksdb in production with DEBUG_LEVEL 0
591 ifeq ($(DEBUG_LEVEL
),0)
594 LIBNAME
=librocksdb_debug
597 LIBRARY
= ${LIBNAME}.a
598 TOOLS_LIBRARY
= ${LIBNAME}_tools.a
600 ROCKSDB_MAJOR
= $(shell egrep
"ROCKSDB_MAJOR.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
601 ROCKSDB_MINOR
= $(shell egrep
"ROCKSDB_MINOR.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
602 ROCKSDB_PATCH
= $(shell egrep
"ROCKSDB_PATCH.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
606 #-----------------------------------------------
607 # Create platform independent shared libraries.
608 #-----------------------------------------------
609 ifneq ($(PLATFORM_SHARED_EXT
),)
611 ifneq ($(PLATFORM_SHARED_VERSIONED
),true
)
612 SHARED1
= ${LIBNAME}.
$(PLATFORM_SHARED_EXT
)
618 SHARED_MAJOR
= $(ROCKSDB_MAJOR
)
619 SHARED_MINOR
= $(ROCKSDB_MINOR
)
620 SHARED_PATCH
= $(ROCKSDB_PATCH
)
621 SHARED1
= ${LIBNAME}.
$(PLATFORM_SHARED_EXT
)
622 ifeq ($(PLATFORM
), OS_MACOSX
)
623 SHARED_OSX
= $(LIBNAME
).
$(SHARED_MAJOR
)
624 SHARED2
= $(SHARED_OSX
).
$(PLATFORM_SHARED_EXT
)
625 SHARED3
= $(SHARED_OSX
).
$(SHARED_MINOR
).
$(PLATFORM_SHARED_EXT
)
626 SHARED4
= $(SHARED_OSX
).
$(SHARED_MINOR
).
$(SHARED_PATCH
).
$(PLATFORM_SHARED_EXT
)
628 SHARED2
= $(SHARED1
).
$(SHARED_MAJOR
)
629 SHARED3
= $(SHARED1
).
$(SHARED_MAJOR
).
$(SHARED_MINOR
)
630 SHARED4
= $(SHARED1
).
$(SHARED_MAJOR
).
$(SHARED_MINOR
).
$(SHARED_PATCH
)
632 SHARED
= $(SHARED1
) $(SHARED2
) $(SHARED3
) $(SHARED4
)
633 $(SHARED1
): $(SHARED4
)
634 ln
-fs
$(SHARED4
) $(SHARED1
)
635 $(SHARED2
): $(SHARED4
)
636 ln
-fs
$(SHARED4
) $(SHARED2
)
637 $(SHARED3
): $(SHARED4
)
638 ln
-fs
$(SHARED4
) $(SHARED3
)
640 ifeq ($(HAVE_POWER8
),1)
641 SHARED_C_OBJECTS
= $(LIB_SOURCES_C
:.c
=.o
)
642 SHARED_ASM_OBJECTS
= $(LIB_SOURCES_ASM
:.S
=.o
)
643 SHARED_C_LIBOBJECTS
= $(patsubst %.o
,shared-objects
/%.o
,$(SHARED_C_OBJECTS
))
644 SHARED_ASM_LIBOBJECTS
= $(patsubst %.o
,shared-objects
/%.o
,$(SHARED_ASM_OBJECTS
))
645 shared_libobjects
= $(patsubst %,shared-objects
/%,$(LIB_CC_OBJECTS
))
647 shared_libobjects
= $(patsubst %,shared-objects
/%,$(LIBOBJECTS
))
650 CLEAN_FILES
+= shared-objects
651 shared_all_libobjects
= $(shared_libobjects
)
653 ifeq ($(HAVE_POWER8
),1)
654 shared-ppc-objects
= $(SHARED_C_LIBOBJECTS
) $(SHARED_ASM_LIBOBJECTS
)
656 shared-objects
/util
/crc32c_ppc.o
: util
/crc32c_ppc.c
657 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
659 shared-objects
/util
/crc32c_ppc_asm.o
: util
/crc32c_ppc_asm.S
660 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
662 $(shared_libobjects
): shared-objects
/%.o
: %.
cc
663 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) -c
$< -o
$@
665 ifeq ($(HAVE_POWER8
),1)
666 shared_all_libobjects
= $(shared_libobjects
) $(shared-ppc-objects
)
668 $(SHARED4
): $(shared_all_libobjects
)
669 $(CXX
) $(PLATFORM_SHARED_LDFLAGS
)$(SHARED3
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) $(shared_all_libobjects
) $(LDFLAGS
) -o
$@
671 endif # PLATFORM_SHARED_EXT
673 .PHONY
: blackbox_crash_test
check clean coverage crash_test ldb_tests package \
674 release
tags tags0 valgrind_check whitebox_crash_test format static_lib shared_lib
all \
675 dbg rocksdbjavastatic rocksdbjava
install install-static install-shared
uninstall \
676 analyze tools tools_lib
679 all: $(LIBRARY
) $(BENCHMARKS
) tools tools_lib test_libs
$(TESTS
)
681 all_but_some_tests
: $(LIBRARY
) $(BENCHMARKS
) tools tools_lib test_libs
$(SUBSET
)
683 static_lib
: $(LIBRARY
)
685 shared_lib
: $(SHARED
)
689 tools_lib
: $(TOOLS_LIBRARY
)
691 test_libs
: $(TEST_LIBS
)
693 dbg
: $(LIBRARY
) $(BENCHMARKS
) tools
$(TESTS
)
695 # creates static library and programs
698 DEBUG_LEVEL
=0 $(MAKE
) static_lib tools db_bench
702 COVERAGEFLAGS
="-fprofile-arcs -ftest-coverage" LDFLAGS
+="-lgcov" $(MAKE
) J
=1 all check
703 cd coverage
&& .
/coverage_test.sh
704 # Delete intermediate files
705 $(FIND
) .
-type f
-regex
".*\.\(\(gcda\)\|\(gcno\)\)" -exec
rm {} \
;
707 ifneq (,$(filter check parallel_check
,$(MAKECMDGOALS
)),)
708 # Use /dev/shm if it has the sticky bit set (otherwise, /tmp),
709 # and create a randomly-named rocksdb.XXXX directory therein.
710 # We'll use that directory in the "make check" rules.
712 TMPDIR
:= $(shell echo
$${TMPDIR
:-/tmp
})
713 TMPD
:= $(shell f
=/dev
/shm
; test -k
$$f || f
=$(TMPDIR
); \
714 perl
-le
'use File::Temp "tempdir";' \
715 -e
'print tempdir("'$$f'/rocksdb.XXXX", CLEANUP => 0)')
719 # Run all tests in parallel, accumulating per-test logs in t/log-*.
721 # Each t/run-* file is a tiny generated bourne shell script that invokes one of
722 # sub-tests. Why use a file for this? Because that makes the invocation of
723 # parallel below simpler, which in turn makes the parsing of parallel's
724 # LOG simpler (the latter is for live monitoring as parallel
727 # Test names are extracted by running tests with --gtest_list_tests.
728 # This filter removes the "#"-introduced comments, and expands to
729 # fully-qualified names by changing input like this:
734 # MultiThreaded/MultiThreadedDBTest.
735 # MultiThreaded/0 # GetParam() = 0
736 # MultiThreaded/1 # GetParam() = 1
741 # DBTest.WriteEmptyBatch
742 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/0
743 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/1
746 parallel_tests
= $(patsubst %,parallel_
%,$(PARALLEL_TEST
))
747 .PHONY
: gen_parallel_tests
$(parallel_tests
)
748 $(parallel_tests
): $(PARALLEL_TEST
)
749 $(AM_V_at
)TEST_BINARY
=$(patsubst parallel_
%,%,$@
); \
751 ./$$TEST_BINARY --gtest_list_tests \
754 -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \
755 -e 'print qq! $$p$$2!'`; \
756 for TEST_NAME in
$$TEST_NAMES; do \
757 TEST_SCRIPT
=t
/run-
$$TEST_BINARY-$${TEST_NAME
//\
//-}; \
758 echo
" GEN " $$TEST_SCRIPT; \
761 "d=\$(TMPD)$$TEST_SCRIPT" \
763 "TEST_TMPDIR=\$$d $(DRIVER) ./$$TEST_BINARY --gtest_filter=$$TEST_NAME" \
765 chmod a
=rx
$$TEST_SCRIPT; \
770 $(AM_V_at
)rm -f t
/run-
*
771 $(MAKE
) $(parallel_tests
)
773 # Reorder input lines (which are one per test) so that the
774 # longest-running tests appear first in the output.
775 # Do this by prefixing each selected name with its duration,
776 # sort the resulting names, and remove the leading numbers.
777 # FIXME: the "100" we prepend is a fake time, for now.
778 # FIXME: squirrel away timings from each run and use them
779 # (when present) on subsequent runs to order these tests.
781 # Without this reordering, these two tests would happen to start only
782 # after almost all other tests had completed, thus adding 100 seconds
783 # to the duration of parallel "make check". That's the difference
784 # between 4 minutes (old) and 2m20s (new).
786 # 152.120 PASS t/DBTest.FileCreationRandomFailure
787 # 107.816 PASS t/DBTest.EncodeDecompressedBlockSizeTest
790 ^.
*SnapshotConcurrentAccessTest.
*$$|^t
/run-table_test-HarnessTest.Randomized
$$|^t
/run-db_test-.
*(?
:FileCreationRandomFailure|EncodeDecompressedBlockSizeTest
)$$|^.
*RecoverFromCorruptedWALWithoutFlush
$$
791 prioritize_long_running_tests
= \
792 perl
-pe
's,($(slow_test_regexp)),100 $$1,' \
794 | sed
's/^[.0-9]* //'
797 # Run with "make J=1 check" to disable parallelism in "make check".
798 # Run with "make J=200% check" to run two parallel jobs per core.
799 # The default is to run one job per core (J=100%).
800 # See "man parallel" for its "-j ..." option.
803 # Use this regexp to select the subset of tests whose names match.
806 t_run
= $(wildcard t
/run-
*)
809 $(AM_V_GEN
)export TEST_TMPDIR
=$(TMPD
); \
811 'To monitor subtest <duration,pass/fail,name>,' \
812 ' run "make watch-log" in a separate window' ''; \
813 test -t
1 && eta
=--eta || eta
=; \
815 printf
'./%s\n' $(filter-out $(PARALLEL_TEST
),$(TESTS
)); \
816 printf
'%s\n' $(t_run
); \
818 |
$(prioritize_long_running_tests
) \
819 | grep
-E
'$(tests-regexp)' \
820 | build_tools
/gnu_parallel
-j
$(J
) --plain
--joblog
=LOG
$$eta --gnu
'{} >& t/log-{/}'
822 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
824 .PHONY
: valgrind_check_0
826 $(AM_V_GEN
)export TEST_TMPDIR
=$(TMPD
); \
828 'To monitor subtest <duration,pass/fail,name>,' \
829 ' run "make watch-log" in a separate window' ''; \
830 test -t
1 && eta
=--eta || eta
=; \
832 printf
'./%s\n' $(filter-out $(PARALLEL_TEST
) %skiplist_test options_settable_test
, $(TESTS
)); \
833 printf
'%s\n' $(t_run
); \
835 |
$(prioritize_long_running_tests
) \
836 | grep
-E
'$(tests-regexp)' \
837 | grep
-E
-v
'$(valgrind-blacklist-regexp)' \
838 | build_tools
/gnu_parallel
-j
$(J
) --plain
--joblog
=LOG
$$eta --gnu \
839 '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) ' \
840 '>& t/valgrind_log-{/}'
842 CLEAN_FILES
+= t LOG
$(TMPD
)
844 # When running parallel "make check", you can monitor its progress
845 # from another window.
846 # Run "make watch_LOG" to show the duration,PASS/FAIL,name of parallel
847 # tests as they are being run. We sort them so that longer-running ones
848 # appear at the top of the list and any failing tests remain at the top
849 # regardless of their duration. As with any use of "watch", hit ^C to
852 $(WATCH
) --interval
=0 'sort -k7,7nr -k4,4gr LOG|$(quoted_perl_command)'
854 # If J != 1 and GNU parallel is installed, run the tests in parallel,
855 # via the check_0 rule above. Otherwise, run them sequentially.
857 $(MAKE
) gen_parallel_tests
858 $(AM_V_GEN
)if
test "$(J)" != 1 \
859 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
860 grep
-q
'GNU Parallel'; \
862 $(MAKE
) T
="$$t" TMPD
=$(TMPD
) check_0
; \
864 for t in
$(TESTS
); do \
865 echo
"===== Running $$t"; .
/$$t || exit
1; done
; \
868 ifneq ($(PLATFORM
), OS_AIX
)
869 ifeq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
870 python tools
/ldb_test.py
871 sh tools
/rocksdb_dump_test.sh
876 check_some
: $(SUBSET
)
877 for t in
$(SUBSET
); do echo
"===== Running $$t"; .
/$$t || exit
1; done
881 python tools
/ldb_test.py
883 crash_test
: whitebox_crash_test blackbox_crash_test
885 blackbox_crash_test
: db_stress
886 python
-u tools
/db_crashtest.py
--simple blackbox
$(CRASH_TEST_EXT_ARGS
)
887 python
-u tools
/db_crashtest.py blackbox
$(CRASH_TEST_EXT_ARGS
)
889 ifeq ($(CRASH_TEST_KILL_ODD
),)
890 CRASH_TEST_KILL_ODD
=888887
893 whitebox_crash_test
: db_stress
894 python
-u tools
/db_crashtest.py
--simple whitebox
--random_kill_odd \
895 $(CRASH_TEST_KILL_ODD
) $(CRASH_TEST_EXT_ARGS
)
896 python
-u tools
/db_crashtest.py whitebox
--random_kill_odd \
897 $(CRASH_TEST_KILL_ODD
) $(CRASH_TEST_EXT_ARGS
)
901 COMPILE_WITH_ASAN
=1 $(MAKE
) check -j32
906 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test
911 COMPILE_WITH_UBSAN
=1 $(MAKE
) check -j32
916 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test
920 ROCKSDB_VALGRIND_RUN
=1 DISABLE_JEMALLOC
=1 $(MAKE
) valgrind_check
922 valgrind_check
: $(TESTS
)
923 $(MAKE
) DRIVER
="$(VALGRIND_VER) $(VALGRIND_OPTS)" gen_parallel_tests
924 $(AM_V_GEN
)if
test "$(J)" != 1 \
925 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
926 grep
-q
'GNU Parallel'; \
928 $(MAKE
) TMPD
=$(TMPD
) \
929 DRIVER
="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0
; \
931 for t in
$(filter-out %skiplist_test options_settable_test
,$(TESTS
)); do \
932 $(VALGRIND_VER
) $(VALGRIND_OPTS
) .
/$$t; \
934 if
[ $$ret_code -ne
0 ]; then \
944 for t in
$(PAR_TEST
); do \
945 echo
"===== Running $$t in parallel $(NUM_PAR)";\
946 if
[ $(db_test
) -eq
1 ]; then \
947 seq
$(J
) | v
="$$t" build_tools
/gnu_parallel
--gnu
--plain
's=$(TMPD)/rdb-{}; export TEST_TMPDIR=$$s;' \
948 'timeout 2m ./db_test --gtest_filter=$$v >> $$s/log-{} 2>1'; \
950 seq
$(J
) | v
="./$$t" build_tools
/gnu_parallel
--gnu
--plain
's=$(TMPD)/rdb-{};' \
951 'export TEST_TMPDIR=$$s; timeout 10m $$v >> $$s/log-{} 2>1'; \
954 if
[ $$ret_code -ne
0 ]; then \
955 ret_bad
=$$ret_code; \
956 echo
$$t exited with
$$ret_code; \
963 .
/db_test
--gtest_list_tests \
966 -e
'/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \
967 -e
'print qq! $$p$$2!'
969 parallel_check
: $(TESTS
)
970 $(AM_V_GEN
)if
test "$(J)" > 1 \
971 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
972 grep
-q
'GNU Parallel'; \
974 echo Running in parallel
$(J
); \
976 echo
"Need to have GNU Parallel and J > 1"; exit
1; \
980 echo Test Dir
: $(TMPD
); \
981 seq
$(J
) | build_tools
/gnu_parallel
--gnu
--plain
's=$(TMPD)/rdb-{}; rm -rf $$s; mkdir $$s'; \
982 $(MAKE
) PAR_TEST
="$(shell $(test_names))" TMPD
=$(TMPD
) \
983 J
=$(J
) db_test
=1 parloop
; \
984 $(MAKE
) PAR_TEST
="$(filter-out db_test, $(TESTS))" \
985 TMPD
=$(TMPD
) J
=$(J
) db_test
=0 parloop
;
988 $(CLANG_SCAN_BUILD
) --use-analyzer
=$(CLANG_ANALYZER
) \
989 --use-c
++=$(CXX
) --use-cc
=$(CC
) --status-bugs \
990 -o
$(CURDIR
)/scan_build_report \
993 CLEAN_FILES
+= unity.
cc
996 for source_file in
$(LIB_SOURCES
); do \
997 echo
"#include \"$$source_file\"" >> $@
-t
; \
1004 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@ unity.o
1007 TOOLLIBOBJECTS
= $(TOOL_LIB_SOURCES
:.
cc=.o
)
1008 # try compiling db_test with unity
1009 unity_test
: db
/db_test.o db
/db_test_util.o
$(TESTHARNESS
) $(TOOLLIBOBJECTS
) unity.a
1013 rocksdb.h rocksdb.
cc: build_tools
/amalgamate.py Makefile
$(LIB_SOURCES
) unity.
cc
1014 build_tools
/amalgamate.py
-I.
-i.
/include unity.
cc -x
include/rocksdb
/c.h
-H rocksdb.h
-o rocksdb.
cc
1017 rm -f
$(BENCHMARKS
) $(TOOLS
) $(TESTS
) $(LIBRARY
) $(SHARED
)
1018 rm -rf
$(CLEAN_FILES
) ios-x86 ios-arm scan_build_report
1019 $(FIND
) .
-name
"*.[oda]" -exec
rm -f
{} \
;
1020 $(FIND
) .
-type f
-regex
".*\.\(\(gcda\)\|\(gcno\)\)" -exec
rm {} \
;
1021 rm -rf bzip2
* snappy
* zlib
* lz4
* zstd
*
1022 cd java
; $(MAKE
) clean
1026 cscope
-b
`$(FIND) . -name '*.cc'` `$(FIND) . -name '*.h'` `$(FIND) . -name '*.c'`
1027 ctags
-e
-R
-o etags
*
1031 cscope
-b
`$(FIND) . -name '*.cc' -and ! -name '*_test.cc'` \
1032 `$(FIND) . -name '*.c' -and ! -name '*_test.c'` \
1033 `$(FIND) . -name '*.h' -and ! -name '*_test.h'`
1034 ctags
-e
-R
-o etags
*
1037 build_tools
/format-diff.sh
1040 bash build_tools
/make_package.sh
$(SHARED_MAJOR
).
$(SHARED_MINOR
)
1042 # ---------------------------------------------------------------------------
1043 # Unit tests and tools
1044 # ---------------------------------------------------------------------------
1045 $(LIBRARY
): $(LIBOBJECTS
)
1047 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$(LIBOBJECTS
)
1049 $(TOOLS_LIBRARY
): $(BENCH_LIB_SOURCES
:.
cc=.o
) $(TOOL_LIB_SOURCES
:.
cc=.o
) $(LIB_SOURCES
:.
cc=.o
) $(TESTUTIL
) $(ANALYZER_LIB_SOURCES
:.
cc=.o
)
1051 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1053 librocksdb_env_basic_test.a
: env
/env_basic_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1055 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1057 db_bench
: tools
/db_bench.o
$(BENCHTOOLOBJECTS
)
1060 trace_analyzer
: tools
/trace_analyzer.o
$(ANALYZETOOLOBJECTS
) $(LIBOBJECTS
)
1063 cache_bench
: cache
/cache_bench.o
$(LIBOBJECTS
) $(TESTUTIL
)
1066 persistent_cache_bench
: utilities
/persistent_cache
/persistent_cache_bench.o
$(LIBOBJECTS
) $(TESTUTIL
)
1069 memtablerep_bench
: memtable
/memtablerep_bench.o
$(LIBOBJECTS
) $(TESTUTIL
)
1072 db_stress
: tools
/db_stress.o
$(LIBOBJECTS
) $(TESTUTIL
)
1075 write_stress
: tools
/write_stress.o
$(LIBOBJECTS
) $(TESTUTIL
)
1078 db_sanity_test
: tools
/db_sanity_test.o
$(LIBOBJECTS
) $(TESTUTIL
)
1081 db_repl_stress
: tools
/db_repl_stress.o
$(LIBOBJECTS
) $(TESTUTIL
)
1084 arena_test
: util
/arena_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1087 autovector_test
: util
/autovector_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1090 column_family_test
: db
/column_family_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1093 table_properties_collector_test
: db
/table_properties_collector_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1096 bloom_test
: util
/bloom_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1099 dynamic_bloom_test
: util
/dynamic_bloom_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1102 c_test
: db
/c_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1105 cache_test
: cache
/cache_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1108 coding_test
: util
/coding_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1111 hash_test
: util
/hash_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1114 option_change_migration_test
: utilities
/option_change_migration
/option_change_migration_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1117 stringappend_test
: utilities
/merge_operators
/string_append
/stringappend_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1120 cassandra_format_test
: utilities
/cassandra
/cassandra_format_test.o utilities
/cassandra
/test_utils.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1123 cassandra_functional_test
: utilities
/cassandra
/cassandra_functional_test.o utilities
/cassandra
/test_utils.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1126 cassandra_row_merge_test
: utilities
/cassandra
/cassandra_row_merge_test.o utilities
/cassandra
/test_utils.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1129 cassandra_serialize_test
: utilities
/cassandra
/cassandra_serialize_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1132 redis_test
: utilities
/redis
/redis_lists_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1135 hash_table_test
: utilities
/persistent_cache
/hash_table_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1138 histogram_test
: monitoring
/histogram_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1141 thread_local_test
: util
/thread_local_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1144 corruption_test
: db
/corruption_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1147 crc32c_test
: util
/crc32c_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1150 slice_transform_test
: util
/slice_transform_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1153 db_basic_test
: db
/db_basic_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1156 db_encryption_test
: db
/db_encryption_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1159 db_test
: db
/db_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1162 db_test2
: db
/db_test2.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1165 db_blob_index_test
: db
/db_blob_index_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1168 db_block_cache_test
: db
/db_block_cache_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1171 db_bloom_filter_test
: db
/db_bloom_filter_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1174 db_log_iter_test
: db
/db_log_iter_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1177 db_compaction_filter_test
: db
/db_compaction_filter_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1180 db_compaction_test
: db
/db_compaction_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1183 db_dynamic_level_test
: db
/db_dynamic_level_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1186 db_flush_test
: db
/db_flush_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1189 db_inplace_update_test
: db
/db_inplace_update_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1192 db_iterator_test
: db
/db_iterator_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1195 db_memtable_test
: db
/db_memtable_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1198 db_merge_operator_test
: db
/db_merge_operator_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1201 db_options_test
: db
/db_options_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1204 db_range_del_test
: db
/db_range_del_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1207 db_sst_test
: db
/db_sst_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1210 db_statistics_test
: db
/db_statistics_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1213 db_write_test
: db
/db_write_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1216 error_handler_test
: db
/error_handler_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1219 external_sst_file_basic_test
: db
/external_sst_file_basic_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1222 external_sst_file_test
: db
/external_sst_file_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1225 db_tailing_iter_test
: db
/db_tailing_iter_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1228 db_iter_test
: db
/db_iter_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1231 db_iter_stress_test
: db
/db_iter_stress_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1234 db_universal_compaction_test
: db
/db_universal_compaction_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1237 db_wal_test
: db
/db_wal_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1240 db_io_failure_test
: db
/db_io_failure_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1243 db_properties_test
: db
/db_properties_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1246 db_table_properties_test
: db
/db_table_properties_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1249 log_write_bench
: util
/log_write_bench.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1250 $(AM_LINK
) $(PROFILING_FLAGS
)
1252 plain_table_db_test
: db
/plain_table_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1255 comparator_db_test
: db
/comparator_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1258 table_reader_bench
: table
/table_reader_bench.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1259 $(AM_LINK
) $(PROFILING_FLAGS
)
1261 perf_context_test
: db
/perf_context_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1262 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
)
1264 prefix_test
: db
/prefix_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1265 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
)
1267 backupable_db_test
: utilities
/backupable
/backupable_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1270 checkpoint_test
: utilities
/checkpoint
/checkpoint_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1273 document_db_test
: utilities
/document
/document_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1276 json_document_test
: utilities
/document
/json_document_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1279 sim_cache_test
: utilities
/simulator_cache
/sim_cache_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1282 spatial_db_test
: utilities
/spatialdb
/spatial_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1285 env_mirror_test
: utilities
/env_mirror_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1288 env_timed_test
: utilities
/env_timed_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1291 ifdef ROCKSDB_USE_LIBRADOS
1292 env_librados_test
: utilities
/env_librados_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1293 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
) $(COVERAGEFLAGS
)
1296 object_registry_test
: utilities
/object_registry_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1299 ttl_test
: utilities
/ttl
/ttl_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1302 date_tiered_test
: utilities
/date_tiered
/date_tiered_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1305 write_batch_with_index_test
: utilities
/write_batch_with_index
/write_batch_with_index_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1308 flush_job_test
: db
/flush_job_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1311 compaction_iterator_test
: db
/compaction_iterator_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1314 compaction_job_test
: db
/compaction_job_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1317 compaction_job_stats_test
: db
/compaction_job_stats_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1320 compact_on_deletion_collector_test
: utilities
/table_properties_collectors
/compact_on_deletion_collector_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1323 wal_manager_test
: db
/wal_manager_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1326 dbformat_test
: db
/dbformat_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1329 env_basic_test
: env
/env_basic_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1332 env_test
: env
/env_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1335 fault_injection_test
: db
/fault_injection_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1338 rate_limiter_test
: util
/rate_limiter_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1341 delete_scheduler_test
: util
/delete_scheduler_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1344 filename_test
: db
/filename_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1347 file_reader_writer_test
: util
/file_reader_writer_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1350 block_based_filter_block_test
: table
/block_based_filter_block_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1353 full_filter_block_test
: table
/full_filter_block_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1356 partitioned_filter_block_test
: table
/partitioned_filter_block_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1359 log_test
: db
/log_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1362 cleanable_test
: table
/cleanable_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1365 table_test
: table
/table_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1368 block_test
: table
/block_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1371 data_block_hash_index_test
: table
/data_block_hash_index_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1374 inlineskiplist_test
: memtable
/inlineskiplist_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1377 skiplist_test
: memtable
/skiplist_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1380 write_buffer_manager_test
: memtable
/write_buffer_manager_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1383 version_edit_test
: db
/version_edit_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1386 version_set_test
: db
/version_set_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1389 compaction_picker_test
: db
/compaction_picker_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1392 version_builder_test
: db
/version_builder_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1395 file_indexer_test
: db
/file_indexer_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1398 reduce_levels_test
: tools
/reduce_levels_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1401 write_batch_test
: db
/write_batch_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1404 write_controller_test
: db
/write_controller_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1407 merge_helper_test
: db
/merge_helper_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1410 memory_test
: utilities
/memory
/memory_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1413 merge_test
: db
/merge_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1416 merger_test
: table
/merger_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1419 util_merge_operators_test
: utilities
/util_merge_operators_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1422 options_file_test
: db
/options_file_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1425 deletefile_test
: db
/deletefile_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1428 obsolete_files_test
: db
/obsolete_files_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1431 geodb_test
: utilities
/geodb
/geodb_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1434 rocksdb_dump
: tools
/dump
/rocksdb_dump.o
$(LIBOBJECTS
)
1437 rocksdb_undump
: tools
/dump
/rocksdb_undump.o
$(LIBOBJECTS
)
1440 cuckoo_table_builder_test
: table
/cuckoo_table_builder_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1443 cuckoo_table_reader_test
: table
/cuckoo_table_reader_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1446 cuckoo_table_db_test
: db
/cuckoo_table_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1449 listener_test
: db
/listener_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1452 thread_list_test
: util
/thread_list_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1455 compact_files_test
: db
/compact_files_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1458 options_test
: options
/options_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1461 options_settable_test
: options
/options_settable_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1464 options_util_test
: utilities
/options
/options_util_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1467 db_bench_tool_test
: tools
/db_bench_tool_test.o
$(BENCHTOOLOBJECTS
) $(TESTHARNESS
)
1470 trace_analyzer_test
: tools
/trace_analyzer_test.o
$(LIBOBJECTS
) $(ANALYZETOOLOBJECTS
) $(TESTHARNESS
)
1473 event_logger_test
: util
/event_logger_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1476 timer_queue_test
: util
/timer_queue_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1479 sst_dump_test
: tools
/sst_dump_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1482 column_aware_encoding_test
: utilities
/column_aware_encoding_test.o
$(TESTHARNESS
) $(EXPOBJECTS
)
1485 optimistic_transaction_test
: utilities
/transactions
/optimistic_transaction_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1488 mock_env_test
: env
/mock_env_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1491 manual_compaction_test
: db
/manual_compaction_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1494 filelock_test
: util
/filelock_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1497 auto_roll_logger_test
: util
/auto_roll_logger_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1500 memtable_list_test
: db
/memtable_list_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1503 write_callback_test
: db
/write_callback_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1506 heap_test
: util
/heap_test.o
$(GTEST
)
1509 transaction_test
: utilities
/transactions
/transaction_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1512 write_prepared_transaction_test
: utilities
/transactions
/write_prepared_transaction_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1515 write_unprepared_transaction_test
: utilities
/transactions
/write_unprepared_transaction_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1518 sst_dump
: tools
/sst_dump.o
$(LIBOBJECTS
)
1521 blob_dump
: tools
/blob_dump.o
$(LIBOBJECTS
)
1524 column_aware_encoding_exp
: utilities
/column_aware_encoding_exp.o
$(EXPOBJECTS
)
1527 repair_test
: db
/repair_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1530 ldb_cmd_test
: tools
/ldb_cmd_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1533 ldb
: tools
/ldb.o
$(LIBOBJECTS
)
1536 iostats_context_test
: monitoring
/iostats_context_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1537 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
)
1539 persistent_cache_test
: utilities
/persistent_cache
/persistent_cache_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1542 statistics_test
: monitoring
/statistics_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1545 lru_cache_test
: cache
/lru_cache_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1548 lua_test
: utilities
/lua
/rocks_lua_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1551 range_del_aggregator_test
: db
/range_del_aggregator_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1554 range_del_aggregator_bench
: db
/range_del_aggregator_bench.o
$(LIBOBJECTS
) $(TESTUTIL
)
1557 blob_db_test
: utilities
/blob_db
/blob_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1560 repeatable_thread_test
: util
/repeatable_thread_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1563 #-------------------------------------------------
1564 # make install related stuff
1565 INSTALL_PATH ?
= /usr
/local
1568 rm -rf
$(INSTALL_PATH
)/include/rocksdb \
1569 $(INSTALL_PATH
)/lib
/$(LIBRARY
) \
1570 $(INSTALL_PATH
)/lib
/$(SHARED4
) \
1571 $(INSTALL_PATH
)/lib
/$(SHARED3
) \
1572 $(INSTALL_PATH
)/lib
/$(SHARED2
) \
1573 $(INSTALL_PATH
)/lib
/$(SHARED1
)
1576 install -d
$(INSTALL_PATH
)/lib
1577 for header_dir in
`$(FIND) "include/rocksdb" -type d`; do \
1578 install -d
$(INSTALL_PATH
)/$$header_dir; \
1580 for header in
`$(FIND) "include/rocksdb" -type f -name *.h`; do \
1581 install -C
-m
644 $$header $(INSTALL_PATH
)/$$header; \
1584 install-static
: install-headers
$(LIBRARY
)
1585 install -C
-m
755 $(LIBRARY
) $(INSTALL_PATH
)/lib
1587 install-shared
: install-headers
$(SHARED4
)
1588 install -C
-m
755 $(SHARED4
) $(INSTALL_PATH
)/lib
&& \
1589 ln
-fs
$(SHARED4
) $(INSTALL_PATH
)/lib
/$(SHARED3
) && \
1590 ln
-fs
$(SHARED4
) $(INSTALL_PATH
)/lib
/$(SHARED2
) && \
1591 ln
-fs
$(SHARED4
) $(INSTALL_PATH
)/lib
/$(SHARED1
)
1593 # install static by default + install shared if it exists
1594 install: install-static
1595 [ -e
$(SHARED4
) ] && $(MAKE
) install-shared ||
:
1597 #-------------------------------------------------
1600 # ---------------------------------------------------------------------------
1602 # ---------------------------------------------------------------------------
1604 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/linux
1605 ifeq ($(PLATFORM
), OS_SOLARIS
)
1606 ARCH
:= $(shell isainfo
-b
)
1607 else ifeq ($(PLATFORM
), OS_OPENBSD
)
1608 ifneq (,$(filter $(MACHINE
), amd64 arm64 sparc64
))
1614 ARCH
:= $(shell getconf LONG_BIT
)
1617 ifeq (,$(findstring ppc
,$(MACHINE
)))
1618 ROCKSDBJNILIB
= librocksdbjni-linux
$(ARCH
).so
1620 ROCKSDBJNILIB
= librocksdbjni-linux-
$(MACHINE
).so
1622 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-linux
$(ARCH
).jar
1623 ROCKSDB_JAR_ALL
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
).jar
1624 ROCKSDB_JAVADOCS_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-javadoc.jar
1625 ROCKSDB_SOURCES_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-sources.jar
1626 SHA256_CMD
= sha256sum
1629 ZLIB_SHA256 ?
= c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
1630 ZLIB_DOWNLOAD_BASE ?
= http
://zlib.net
1632 BZIP2_SHA256 ?
= a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd
1633 BZIP2_DOWNLOAD_BASE ?
= https
://web.archive.org
/web
/20180624184835/http
://www.bzip.org
1635 SNAPPY_SHA256 ?
= 134bfe122fd25599bb807bb8130e7ba6d9bdb851e0b16efcb83ac4f5d0b70057
1636 SNAPPY_DOWNLOAD_BASE ?
= https
://github.com
/google
/snappy
/releases
/download
1638 LZ4_SHA256 ?
= 2ca482ea7a9bb103603108b5a7510b7592b90158c151ff50a28f1ca8389fccf6
1639 LZ4_DOWNLOAD_BASE ?
= https
://github.com
/lz4
/lz4
/archive
1641 ZSTD_SHA256 ?
= a77c47153ee7de02626c5b2a097005786b71688be61e9fb81806a011f90b297b
1642 ZSTD_DOWNLOAD_BASE ?
= https
://github.com
/facebook
/zstd
/archive
1643 CURL_SSL_OPTS ?
= --tlsv1
1645 ifeq ($(PLATFORM
), OS_MACOSX
)
1646 ROCKSDBJNILIB
= librocksdbjni-osx.jnilib
1647 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-osx.jar
1648 SHA256_CMD
= openssl sha256
-r
1649 ifneq ("$(wildcard $(JAVA_HOME)/include/darwin)","")
1650 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/darwin
1652 JAVA_INCLUDE
= -I
/System
/Library
/Frameworks
/JavaVM.framework
/Headers
/
1655 ifeq ($(PLATFORM
), OS_FREEBSD
)
1656 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/freebsd
1657 ROCKSDBJNILIB
= librocksdbjni-freebsd
$(ARCH
).so
1658 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-freebsd
$(ARCH
).jar
1660 ifeq ($(PLATFORM
), OS_SOLARIS
)
1661 ROCKSDBJNILIB
= librocksdbjni-solaris
$(ARCH
).so
1662 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-solaris
$(ARCH
).jar
1663 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/solaris
1664 SHA256_CMD
= digest
-a sha256
1666 ifeq ($(PLATFORM
), OS_AIX
)
1667 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/aix
1668 ROCKSDBJNILIB
= librocksdbjni-aix.so
1669 EXTRACT_SOURCES
= gunzip
< TAR_GZ |
tar xvf
-
1670 SNAPPY_MAKE_TARGET
= libsnappy.la
1672 ifeq ($(PLATFORM
), OS_OPENBSD
)
1673 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/openbsd
1674 ROCKSDBJNILIB
= librocksdbjni-openbsd
$(ARCH
).so
1675 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-openbsd
$(ARCH
).jar
1679 -rm -rf zlib-
$(ZLIB_VER
)
1680 curl
-O
-L
${ZLIB_DOWNLOAD_BASE}/zlib-
$(ZLIB_VER
).
tar.gz
1681 ZLIB_SHA256_ACTUAL
=`$(SHA256_CMD) zlib-$(ZLIB_VER).tar.gz | cut -d ' ' -f 1`; \
1682 if
[ "$(ZLIB_SHA256)" != "$$ZLIB_SHA256_ACTUAL" ]; then \
1683 echo zlib-
$(ZLIB_VER
).
tar.gz checksum mismatch
, expected
=\"$(ZLIB_SHA256
)\" actual
=\"$$ZLIB_SHA256_ACTUAL\"; \
1686 tar xvzf zlib-
$(ZLIB_VER
).
tar.gz
1687 cd zlib-
$(ZLIB_VER
) && CFLAGS
='-fPIC ${EXTRA_CFLAGS}' LDFLAGS
='${EXTRA_LDFLAGS}' .
/configure
--static
&& $(MAKE
)
1688 cp zlib-
$(ZLIB_VER
)/libz.a .
1691 -rm -rf bzip2-
$(BZIP2_VER
)
1692 curl
-O
-L
${BZIP2_DOWNLOAD_BASE}/$(BZIP2_VER
)/bzip2-
$(BZIP2_VER
).
tar.gz
1693 BZIP2_SHA256_ACTUAL
=`$(SHA256_CMD) bzip2-$(BZIP2_VER).tar.gz | cut -d ' ' -f 1`; \
1694 if
[ "$(BZIP2_SHA256)" != "$$BZIP2_SHA256_ACTUAL" ]; then \
1695 echo bzip2-
$(BZIP2_VER
).
tar.gz checksum mismatch
, expected
=\"$(BZIP2_SHA256
)\" actual
=\"$$BZIP2_SHA256_ACTUAL\"; \
1698 tar xvzf bzip2-
$(BZIP2_VER
).
tar.gz
1699 cd bzip2-
$(BZIP2_VER
) && $(MAKE
) CFLAGS
='-fPIC -O2 -g -D_FILE_OFFSET_BITS=64 ${EXTRA_CFLAGS}' AR
='ar ${EXTRA_ARFLAGS}'
1700 cp bzip2-
$(BZIP2_VER
)/libbz2.a .
1703 -rm -rf snappy-
$(SNAPPY_VER
)
1704 curl
-O
-L
${CURL_SSL_OPTS} ${SNAPPY_DOWNLOAD_BASE}/$(SNAPPY_VER
)/snappy-
$(SNAPPY_VER
).
tar.gz
1705 SNAPPY_SHA256_ACTUAL
=`$(SHA256_CMD) snappy-$(SNAPPY_VER).tar.gz | cut -d ' ' -f 1`; \
1706 if
[ "$(SNAPPY_SHA256)" != "$$SNAPPY_SHA256_ACTUAL" ]; then \
1707 echo snappy-
$(SNAPPY_VER
).
tar.gz checksum mismatch
, expected
=\"$(SNAPPY_SHA256
)\" actual
=\"$$SNAPPY_SHA256_ACTUAL\"; \
1710 tar xvzf snappy-
$(SNAPPY_VER
).
tar.gz
1711 cd snappy-
$(SNAPPY_VER
) && CFLAGS
='${EXTRA_CFLAGS}' CXXFLAGS
='${EXTRA_CXXFLAGS}' LDFLAGS
='${EXTRA_LDFLAGS}' .
/configure
--with-pic
--enable-static
--disable-shared
1712 cd snappy-
$(SNAPPY_VER
) && $(MAKE
) ${SNAPPY_MAKE_TARGET}
1713 cp snappy-
$(SNAPPY_VER
)/.libs
/libsnappy.a .
1716 -rm -rf lz4-
$(LZ4_VER
)
1717 curl
-O
-L
${CURL_SSL_OPTS} ${LZ4_DOWNLOAD_BASE}/v
$(LZ4_VER
).
tar.gz
1718 mv v
$(LZ4_VER
).
tar.gz lz4-
$(LZ4_VER
).
tar.gz
1719 LZ4_SHA256_ACTUAL
=`$(SHA256_CMD) lz4-$(LZ4_VER).tar.gz | cut -d ' ' -f 1`; \
1720 if
[ "$(LZ4_SHA256)" != "$$LZ4_SHA256_ACTUAL" ]; then \
1721 echo lz4-
$(LZ4_VER
).
tar.gz checksum mismatch
, expected
=\"$(LZ4_SHA256
)\" actual
=\"$$LZ4_SHA256_ACTUAL\"; \
1724 tar xvzf lz4-
$(LZ4_VER
).
tar.gz
1725 cd lz4-
$(LZ4_VER
)/lib
&& $(MAKE
) CFLAGS
='-fPIC -O2 ${EXTRA_CFLAGS}' all
1726 cp lz4-
$(LZ4_VER
)/lib
/liblz4.a .
1729 -rm -rf zstd-
$(ZSTD_VER
)
1730 curl
-O
-L
${CURL_SSL_OPTS} ${ZSTD_DOWNLOAD_BASE}/v
$(ZSTD_VER
).
tar.gz
1731 mv v
$(ZSTD_VER
).
tar.gz zstd-
$(ZSTD_VER
).
tar.gz
1732 ZSTD_SHA256_ACTUAL
=`$(SHA256_CMD) zstd-$(ZSTD_VER).tar.gz | cut -d ' ' -f 1`; \
1733 if
[ "$(ZSTD_SHA256)" != "$$ZSTD_SHA256_ACTUAL" ]; then \
1734 echo zstd-
$(ZSTD_VER
).
tar.gz checksum mismatch
, expected
=\"$(ZSTD_SHA256
)\" actual
=\"$$ZSTD_SHA256_ACTUAL\"; \
1737 tar xvzf zstd-
$(ZSTD_VER
).
tar.gz
1738 cd zstd-
$(ZSTD_VER
)/lib
&& DESTDIR
=. PREFIX
= $(MAKE
) CFLAGS
='-fPIC -O2 ${EXTRA_CFLAGS}' install
1739 cp zstd-
$(ZSTD_VER
)/lib
/libzstd.a .
1741 # A version of each $(LIBOBJECTS) compiled with -fPIC and a fixed set of static compression libraries
1742 java_static_libobjects
= $(patsubst %,jls
/%,$(LIB_CC_OBJECTS
))
1744 java_static_all_libobjects
= $(java_static_libobjects
)
1746 ifneq ($(ROCKSDB_JAVA_NO_COMPRESSION
), 1)
1747 JAVA_COMPRESSIONS
= libz.a libbz2.a libsnappy.a liblz4.a libzstd.a
1750 JAVA_STATIC_FLAGS
= -DZLIB
-DBZIP2
-DSNAPPY
-DLZ4
-DZSTD
1751 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
1753 ifeq ($(HAVE_POWER8
),1)
1754 JAVA_STATIC_C_LIBOBJECTS
= $(patsubst %.c.o
,jls
/%.c.o
,$(LIB_SOURCES_C
:.c
=.o
))
1755 JAVA_STATIC_ASM_LIBOBJECTS
= $(patsubst %.S.o
,jls
/%.S.o
,$(LIB_SOURCES_ASM
:.S
=.o
))
1757 java_static_ppc_libobjects
= $(JAVA_STATIC_C_LIBOBJECTS
) $(JAVA_STATIC_ASM_LIBOBJECTS
)
1759 jls
/util
/crc32c_ppc.o
: util
/crc32c_ppc.c
1760 $(AM_V_CC
)$(CC
) $(CFLAGS
) $(JAVA_STATIC_FLAGS
) $(JAVA_STATIC_INCLUDES
) -c
$< -o
$@
1762 jls
/util
/crc32c_ppc_asm.o
: util
/crc32c_ppc_asm.S
1763 $(AM_V_CC
)$(CC
) $(CFLAGS
) $(JAVA_STATIC_FLAGS
) $(JAVA_STATIC_INCLUDES
) -c
$< -o
$@
1765 java_static_all_libobjects
+= $(java_static_ppc_libobjects
)
1768 $(java_static_libobjects
): jls
/%.o
: %.
cc $(JAVA_COMPRESSIONS
)
1769 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) $(JAVA_STATIC_FLAGS
) $(JAVA_STATIC_INCLUDES
) -fPIC
-c
$< -o
$@
$(COVERAGEFLAGS
)
1771 rocksdbjavastatic
: $(java_static_all_libobjects
)
1772 cd java
;$(MAKE
) javalib
;
1773 rm -f .
/java
/target
/$(ROCKSDBJNILIB
)
1774 $(CXX
) $(CXXFLAGS
) -I.
/java
/.
$(JAVA_INCLUDE
) -shared
-fPIC \
1775 -o .
/java
/target
/$(ROCKSDBJNILIB
) $(JNI_NATIVE_SOURCES
) \
1776 $(java_static_all_libobjects
) $(COVERAGEFLAGS
) \
1777 $(JAVA_COMPRESSIONS
) $(JAVA_STATIC_LDFLAGS
)
1778 cd java
/target
;if
[ "$(DEBUG_LEVEL)" == "0" ]; then \
1779 strip $(STRIPFLAGS
) $(ROCKSDBJNILIB
); \
1781 cd java
;jar
-cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
1782 cd java
/target
;jar
-uf
$(ROCKSDB_JAR
) $(ROCKSDBJNILIB
)
1783 cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
1784 cd java
/target
/apidocs
;jar
-cf ..
/$(ROCKSDB_JAVADOCS_JAR
) *
1785 cd java
/src
/main
/java
;jar
-cf ..
/..
/..
/target
/$(ROCKSDB_SOURCES_JAR
) org
1787 rocksdbjavastaticrelease
: rocksdbjavastatic
1788 cd java
/crossbuild
&& vagrant destroy
-f
&& vagrant up linux32
&& vagrant halt linux32
&& vagrant up linux64
&& vagrant halt linux64
1789 cd java
;jar
-cf target
/$(ROCKSDB_JAR_ALL
) HISTORY
*.md
1790 cd java
/target
;jar
-uf
$(ROCKSDB_JAR_ALL
) librocksdbjni-
*.so librocksdbjni-
*.jnilib
1791 cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR_ALL
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
1793 rocksdbjavastaticreleasedocker
: rocksdbjavastatic rocksdbjavastaticdockerx86 rocksdbjavastaticdockerx86_64
1794 cd java
;jar
-cf target
/$(ROCKSDB_JAR_ALL
) HISTORY
*.md
1795 cd java
/target
;jar
-uf
$(ROCKSDB_JAR_ALL
) librocksdbjni-
*.so librocksdbjni-
*.jnilib
1796 cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR_ALL
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
1798 rocksdbjavastaticdockerx86
:
1799 mkdir
-p java
/target
1800 DOCKER_LINUX_X86_CONTAINER
=`docker ps -aqf name=rocksdb_linux_x86-be`; \
1801 if
[ -z
"$$DOCKER_LINUX_X86_CONTAINER" ]; then \
1802 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
; \
1804 docker start
-a rocksdb_linux_x86-be
1806 rocksdbjavastaticdockerx86_64
:
1807 mkdir
-p java
/target
1808 DOCKER_LINUX_X64_CONTAINER
=`docker ps -aqf name=rocksdb_linux_x64-be`; \
1809 if
[ -z
"$$DOCKER_LINUX_X64_CONTAINER" ]; then \
1810 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
; \
1812 docker start
-a rocksdb_linux_x64-be
1814 rocksdbjavastaticdockerppc64le
:
1815 mkdir
-p java
/target
1816 DOCKER_LINUX_PPC64LE_CONTAINER
=`docker ps -aqf name=rocksdb_linux_ppc64le-be`; \
1817 if
[ -z
"$$DOCKER_LINUX_PPC64LE_CONTAINER" ]; then \
1818 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
; \
1820 docker start
-a rocksdb_linux_ppc64le-be
1822 rocksdbjavastaticpublish
: rocksdbjavastaticrelease rocksdbjavastaticpublishcentral
1824 rocksdbjavastaticpublishdocker
: rocksdbjavastaticreleasedocker rocksdbjavastaticpublishcentral
1826 rocksdbjavastaticpublishcentral
:
1827 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
1828 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
1829 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
1830 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
1831 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
1832 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
1833 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
1835 # A version of each $(LIBOBJECTS) compiled with -fPIC
1836 ifeq ($(HAVE_POWER8
),1)
1837 JAVA_CC_OBJECTS
= $(SHARED_CC_OBJECTS
)
1838 JAVA_C_OBJECTS
= $(SHARED_C_OBJECTS
)
1839 JAVA_ASM_OBJECTS
= $(SHARED_ASM_OBJECTS
)
1841 JAVA_C_LIBOBJECTS
= $(patsubst %.c.o
,jl
/%.c.o
,$(JAVA_C_OBJECTS
))
1842 JAVA_ASM_LIBOBJECTS
= $(patsubst %.S.o
,jl
/%.S.o
,$(JAVA_ASM_OBJECTS
))
1845 java_libobjects
= $(patsubst %,jl
/%,$(LIB_CC_OBJECTS
))
1847 java_all_libobjects
= $(java_libobjects
)
1849 ifeq ($(HAVE_POWER8
),1)
1850 java_ppc_libobjects
= $(JAVA_C_LIBOBJECTS
) $(JAVA_ASM_LIBOBJECTS
)
1852 jl
/crc32c_ppc.o
: util
/crc32c_ppc.c
1853 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
1855 jl
/crc32c_ppc_asm.o
: util
/crc32c_ppc_asm.S
1856 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
1857 java_all_libobjects
+= $(java_ppc_libobjects
)
1860 $(java_libobjects
): jl
/%.o
: %.
cc
1861 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) -fPIC
-c
$< -o
$@
$(COVERAGEFLAGS
)
1865 rocksdbjava
: $(java_all_libobjects
)
1866 $(AM_V_GEN
)cd java
;$(MAKE
) javalib
;
1867 $(AM_V_at
)rm -f .
/java
/target
/$(ROCKSDBJNILIB
)
1868 $(AM_V_at
)$(CXX
) $(CXXFLAGS
) -I.
/java
/.
$(JAVA_INCLUDE
) -shared
-fPIC
-o .
/java
/target
/$(ROCKSDBJNILIB
) $(JNI_NATIVE_SOURCES
) $(java_all_libobjects
) $(JAVA_LDFLAGS
) $(COVERAGEFLAGS
)
1869 $(AM_V_at
)cd java
;jar
-cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
1870 $(AM_V_at
)cd java
/target
;jar
-uf
$(ROCKSDB_JAR
) $(ROCKSDBJNILIB
)
1871 $(AM_V_at
)cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
1874 cd java
;$(MAKE
) clean;
1876 jtest_compile
: rocksdbjava
1877 cd java
;$(MAKE
) java_test
1880 cd java
;$(MAKE
) run_test
1883 cd java
;$(MAKE
) sample
;$(MAKE
) test;
1886 cd java
;$(MAKE
) db_bench
;
1888 commit_prereq
: build_tools
/rocksdb-lego-determinator \
1889 build_tools
/precommit_checker.py
1890 J
=$(J
) build_tools
/precommit_checker.py unit unit_481 clang_unit release release_481 clang_release tsan asan ubsan lite unit_non_shm
1891 $(MAKE
) clean && $(MAKE
) jclean
&& $(MAKE
) rocksdbjava
;
1893 # ---------------------------------------------------------------------------
1894 # Platform-specific compilation
1895 # ---------------------------------------------------------------------------
1897 ifeq ($(PLATFORM
), IOS
)
1898 # For iOS, create universal object files to be used on both the simulator and
1900 PLATFORMSROOT
=/Applications
/Xcode.app
/Contents
/Developer
/Platforms
1901 SIMULATORROOT
=$(PLATFORMSROOT
)/iPhoneSimulator.platform
/Developer
1902 DEVICEROOT
=$(PLATFORMSROOT
)/iPhoneOS.platform
/Developer
1903 IOSVERSION
=$(shell defaults read
$(PLATFORMSROOT
)/iPhoneOS.platform
/version CFBundleShortVersionString
)
1906 mkdir
-p ios-x86
/$(dir $@
)
1907 $(CXX
) $(CXXFLAGS
) -isysroot
$(SIMULATORROOT
)/SDKs
/iPhoneSimulator
$(IOSVERSION
).sdk
-arch i686
-arch x86_64
-c
$< -o ios-x86
/$@
1908 mkdir
-p ios-arm
/$(dir $@
)
1909 xcrun
-sdk iphoneos
$(CXX
) $(CXXFLAGS
) -isysroot
$(DEVICEROOT
)/SDKs
/iPhoneOS
$(IOSVERSION
).sdk
-arch armv6
-arch armv7
-arch armv7s
-arch arm64
-c
$< -o ios-arm
/$@
1910 lipo ios-x86
/$@ ios-arm
/$@
-create
-output
$@
1913 mkdir
-p ios-x86
/$(dir $@
)
1914 $(CC
) $(CFLAGS
) -isysroot
$(SIMULATORROOT
)/SDKs
/iPhoneSimulator
$(IOSVERSION
).sdk
-arch i686
-arch x86_64
-c
$< -o ios-x86
/$@
1915 mkdir
-p ios-arm
/$(dir $@
)
1916 xcrun
-sdk iphoneos
$(CC
) $(CFLAGS
) -isysroot
$(DEVICEROOT
)/SDKs
/iPhoneOS
$(IOSVERSION
).sdk
-arch armv6
-arch armv7
-arch armv7s
-arch arm64
-c
$< -o ios-arm
/$@
1917 lipo ios-x86
/$@ ios-arm
/$@
-create
-output
$@
1920 ifeq ($(HAVE_POWER8
),1)
1921 util
/crc32c_ppc.o
: util
/crc32c_ppc.c
1922 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
1924 util
/crc32c_ppc_asm.o
: util
/crc32c_ppc_asm.S
1925 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
1928 $(AM_V_CC
)$(CXX
) $(CXXFLAGS
) -c
$< -o
$@
$(COVERAGEFLAGS
)
1931 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
1933 # ---------------------------------------------------------------------------
1934 # Source files dependencies detection
1935 # ---------------------------------------------------------------------------
1937 all_sources
= $(LIB_SOURCES
) $(MAIN_SOURCES
) $(MOCK_LIB_SOURCES
) $(TOOL_LIB_SOURCES
) $(BENCH_LIB_SOURCES
) $(TEST_LIB_SOURCES
) $(EXP_LIB_SOURCES
) $(ANALYZER_LIB_SOURCES
)
1938 DEPFILES
= $(all_sources
:.
cc=.
cc.d
)
1940 # Add proper dependency support so changing a .h file forces a .cc file to
1943 # The .d file indicates .cc file's dependencies on .h files. We generate such
1944 # dependency by g++'s -MM option, whose output is a make dependency rule.
1946 @
$(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
1947 -MM
-MT
'$@' -MT
'$(<:.cc=.o)' "$<" -o
'$@'
1949 ifeq ($(HAVE_POWER8
),1)
1950 DEPFILES_C
= $(LIB_SOURCES_C
:.c
=.c.d
)
1951 DEPFILES_ASM
= $(LIB_SOURCES_ASM
:.S
=.S.d
)
1954 @
$(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
1955 -MM
-MT
'$@' -MT
'$(<:.c=.o)' "$<" -o
'$@'
1958 @
$(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
1959 -MM
-MT
'$@' -MT
'$(<:.S=.o)' "$<" -o
'$@'
1961 $(DEPFILES_C
): %.c.d
1963 $(DEPFILES_ASM
): %.S.d
1964 depend
: $(DEPFILES
) $(DEPFILES_C
) $(DEPFILES_ASM
)
1969 # if the make goal is either "clean" or "format", we shouldn't
1970 # try to import the *.d files.
1971 # TODO(kailiu) The unfamiliarity of Make's conditions leads to the ugly
1973 ifneq ($(MAKECMDGOALS
),clean)
1974 ifneq ($(MAKECMDGOALS
),format
)
1975 ifneq ($(MAKECMDGOALS
),jclean
)
1976 ifneq ($(MAKECMDGOALS
),jtest
)
1977 ifneq ($(MAKECMDGOALS
),package
)
1978 ifneq ($(MAKECMDGOALS
),analyze
)
1979 -include $(DEPFILES
)