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
)
82 ifeq ($(MAKECMDGOALS
),rocksdbjavastaticrelease
)
86 ifeq ($(MAKECMDGOALS
),rocksdbjavastaticpublish
)
90 # compile with -O2 if debug level is not 2
91 ifneq ($(DEBUG_LEVEL
), 2)
92 OPT
+= -O2
-fno-omit-frame-pointer
93 # Skip for archs that don't support -momit-leaf-frame-pointer
94 ifeq (,$(shell $(CXX
) -fsyntax-only
-momit-leaf-frame-pointer
-xc
/dev
/null
2>&1))
95 OPT
+= -momit-leaf-frame-pointer
99 # if we're compiling for release, compile without debug code (-DNDEBUG) and
100 # don't treat warnings as errors
101 ifeq ($(DEBUG_LEVEL
),0)
103 DISABLE_WARNING_AS_ERROR
=1
105 $(warning Warning
: Compiling in debug mode. Don
't use the resulting binary in production)
108 #-----------------------------------------------
111 AM_DEFAULT_VERBOSITY = 0
113 AM_V_GEN = $(am__v_GEN_$(V))
114 am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
115 am__v_GEN_0 = @echo " GEN " $@;
117 AM_V_at = $(am__v_at_$(V))
118 am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
122 AM_V_CC = $(am__v_CC_$(V))
123 am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
124 am__v_CC_0 = @echo " CC " $@;
127 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
128 AM_V_CCLD = $(am__v_CCLD_$(V))
129 am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
130 am__v_CCLD_0 = @echo " CCLD " $@;
132 AM_V_AR = $(am__v_AR_$(V))
133 am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
134 am__v_AR_0 = @echo " AR " $@;
137 ifdef ROCKSDB_USE_LIBRADOS
138 LIB_SOURCES += utilities/env_librados.cc
142 AM_LINK = $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) $(COVERAGEFLAGS)
143 # detect what platform we're building on
144 dummy
:= $(shell (export ROCKSDB_ROOT
="$(CURDIR)"; export PORTABLE
="$(PORTABLE)"; "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk"))
145 # this file is generated by the previous line to set build flags and sources
146 include make_config.mk
147 CLEAN_FILES
+= make_config.mk
149 missing_make_config_paths
:= $(shell \
150 grep
"\/\S*" -o
$(CURDIR
)/make_config.mk | \
152 do
[ -e
$$path ] || echo
$$path; \
155 $(foreach path
, $(missing_make_config_paths
), \
156 $(warning Warning
: $(path
) dont exist
))
158 ifeq ($(PLATFORM
), OS_AIX
)
160 else ifneq ($(PLATFORM
), IOS
)
164 # no debug info for IOS, that will make our library big
168 ifeq ($(PLATFORM
), OS_AIX
)
173 ifeq ($(PLATFORM
), OS_SOLARIS
)
174 PLATFORM_CXXFLAGS
+= -D _GLIBCXX_USE_C99
176 ifneq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
178 CFLAGS
+= -fno-exceptions
179 CXXFLAGS
+= -fno-exceptions
180 # LUA is not supported under ROCKSDB_LITE
184 # ASAN doesn't work well with jemalloc. If we're compiling with ASAN, we should use regular malloc.
185 ifdef COMPILE_WITH_ASAN
187 EXEC_LDFLAGS
+= -fsanitize
=address
188 PLATFORM_CCFLAGS
+= -fsanitize
=address
189 PLATFORM_CXXFLAGS
+= -fsanitize
=address
192 # TSAN doesn't work well with jemalloc. If we're compiling with TSAN, we should use regular malloc.
193 ifdef COMPILE_WITH_TSAN
195 EXEC_LDFLAGS
+= -fsanitize
=thread
-pie
196 PLATFORM_CCFLAGS
+= -fsanitize
=thread
-fPIC
-DROCKSDB_TSAN_RUN
197 PLATFORM_CXXFLAGS
+= -fsanitize
=thread
-fPIC
-DROCKSDB_TSAN_RUN
198 # Turn off -pg when enabling TSAN testing, because that induces
199 # a link failure. TODO: find the root cause
201 # LUA is not supported under TSAN
205 # AIX doesn't work with -pg
206 ifeq ($(PLATFORM
), OS_AIX
)
210 # USAN doesn't work well with jemalloc. If we're compiling with USAN, we should use regular malloc.
211 ifdef COMPILE_WITH_UBSAN
213 EXEC_LDFLAGS
+= -fsanitize
=undefined
214 PLATFORM_CCFLAGS
+= -fsanitize
=undefined
215 PLATFORM_CXXFLAGS
+= -fsanitize
=undefined
218 ifndef DISABLE_JEMALLOC
220 PLATFORM_CXXFLAGS
+= -DROCKSDB_JEMALLOC
-DJEMALLOC_NO_DEMANGLE
221 PLATFORM_CCFLAGS
+= -DROCKSDB_JEMALLOC
-DJEMALLOC_NO_DEMANGLE
223 EXEC_LDFLAGS
:= $(JEMALLOC_LIB
) $(EXEC_LDFLAGS
)
224 PLATFORM_CXXFLAGS
+= $(JEMALLOC_INCLUDE
)
225 PLATFORM_CCFLAGS
+= $(JEMALLOC_INCLUDE
)
228 export GTEST_THROW_ON_FAILURE
=1
229 export GTEST_HAS_EXCEPTIONS
=1
230 GTEST_DIR
= .
/third-party
/gtest-1.7
.0/fused-src
231 # AIX: pre-defined system headers are surrounded by an extern "C" block
232 ifeq ($(PLATFORM
), OS_AIX
)
233 PLATFORM_CCFLAGS
+= -I
$(GTEST_DIR
)
234 PLATFORM_CXXFLAGS
+= -I
$(GTEST_DIR
)
236 PLATFORM_CCFLAGS
+= -isystem
$(GTEST_DIR
)
237 PLATFORM_CXXFLAGS
+= -isystem
$(GTEST_DIR
)
240 # This (the first rule) must depend on "all".
243 WARNING_FLAGS
= -W
-Wextra
-Wall
-Wsign-compare
-Wshadow \
244 -Wno-unused-parameter
246 ifndef DISABLE_WARNING_AS_ERROR
247 WARNING_FLAGS
+= -Werror
254 LUA_INCLUDE
=$(LUA_PATH
)/include
257 LUA_INCLUDE_FILE
=$(LUA_INCLUDE
)/lualib.h
259 ifeq ("$(wildcard $(LUA_INCLUDE_FILE))", "")
260 # LUA_INCLUDE_FILE does not exist
261 $(error Cannot find lualib.h under
$(LUA_INCLUDE
). Try to specify both LUA_PATH and LUA_INCLUDE manually
)
263 LUA_FLAGS
= -I
$(LUA_INCLUDE
) -DLUA
-DLUA_COMPAT_ALL
264 CFLAGS
+= $(LUA_FLAGS
)
265 CXXFLAGS
+= $(LUA_FLAGS
)
268 LUA_LIB
= $(LUA_PATH
)/lib
/liblua.a
270 ifeq ("$(wildcard $(LUA_LIB))", "") # LUA_LIB does not exist
271 $(error
$(LUA_LIB
) does not exist. Try to specify both LUA_PATH and LUA_LIB manually
)
273 LDFLAGS
+= $(LUA_LIB
)
278 CFLAGS
+= $(WARNING_FLAGS
) -I.
-I.
/include $(PLATFORM_CCFLAGS
) $(OPT
)
279 CXXFLAGS
+= $(WARNING_FLAGS
) -I.
-I.
/include $(PLATFORM_CXXFLAGS
) $(OPT
) -Woverloaded-virtual
-Wnon-virtual-dtor
-Wno-missing-field-initializers
281 LDFLAGS
+= $(PLATFORM_LDFLAGS
)
283 date
:= $(shell date
+%F
)
285 git_sha
:= $(FORCE_GIT_SHA
)
287 git_sha
:= $(shell git rev-parse HEAD
2>/dev
/null
)
289 gen_build_version
= sed
-e s
/@@GIT_SHA@@
/$(git_sha
)/ -e s
/@@GIT_DATE_TIME@@
/$(date
)/ util
/build_version.
cc.in
291 # Record the version of the source that we are compiling.
292 # We keep a record of the git revision in this file. It is then built
293 # as a regular source file as part of the compilation process.
294 # One can run "strings executable_filename | grep _build_" to find
295 # the version of the source that we used to build the executable file.
296 CLEAN_FILES
+= util
/build_version.
cc:
298 util
/build_version.
cc: FORCE
299 $(AM_V_GEN
)rm -f
$@
-t
300 $(AM_V_at
)$(gen_build_version
) > $@
-t
301 $(AM_V_at
)if
test -f
$@
; then \
302 cmp
-s
$@
-t
$@
&& rm -f
$@
-t || mv
-f
$@
-t
$@
; \
303 else mv
-f
$@
-t
$@
; fi
305 LIBOBJECTS
= $(LIB_SOURCES
:.
cc=.o
)
306 LIBOBJECTS
+= $(TOOL_LIB_SOURCES
:.
cc=.o
)
307 MOCKOBJECTS
= $(MOCK_LIB_SOURCES
:.
cc=.o
)
309 GTEST
= $(GTEST_DIR
)/gtest
/gtest-all.o
310 TESTUTIL
= .
/util
/testutil.o
311 TESTHARNESS
= .
/util
/testharness.o
$(TESTUTIL
) $(MOCKOBJECTS
) $(GTEST
)
313 VALGRIND_VER
:= $(join $(VALGRIND_VER
),valgrind
)
315 VALGRIND_OPTS
= --error-exitcode
=$(VALGRIND_ERROR
) --leak-check
=full
317 BENCHTOOLOBJECTS
= $(BENCH_LIB_SOURCES
:.
cc=.o
) $(LIBOBJECTS
) $(TESTUTIL
)
319 EXPOBJECTS
= $(EXP_LIB_SOURCES
:.
cc=.o
) $(LIBOBJECTS
) $(TESTUTIL
)
324 external_sst_file_basic_test \
325 auto_roll_logger_test \
332 inlineskiplist_test \
338 iostats_context_test \
340 db_block_cache_test \
342 db_bloom_filter_test \
345 db_compaction_filter_test \
347 db_dynamic_level_test \
349 db_inplace_update_test \
352 db_merge_operator_test \
356 db_tailing_iter_test \
357 db_universal_compaction_test \
360 db_table_properties_test \
365 table_properties_collector_test \
370 slice_transform_test \
372 fault_injection_test \
375 file_reader_writer_test \
376 block_based_filter_block_test \
377 full_filter_block_test \
378 partitioned_filter_block_test \
382 manual_compaction_test \
389 util_merge_operators_test \
393 plain_table_db_test \
395 external_sst_file_test \
409 compaction_picker_test \
410 version_builder_test \
413 write_batch_with_index_test \
414 write_controller_test\
418 delete_scheduler_test \
420 options_settable_test \
423 cuckoo_table_builder_test \
424 cuckoo_table_reader_test \
425 cuckoo_table_db_test \
429 compaction_iterator_test \
430 compaction_job_test \
433 column_aware_encoding_test \
435 optimistic_transaction_test \
436 write_callback_test \
438 compact_on_deletion_collector_test \
439 compaction_job_stats_test \
440 option_change_migration_test \
443 persistent_cache_test \
446 range_del_aggregator_test \
448 object_registry_test \
454 db_compaction_filter_test \
458 db_universal_compaction_test \
460 external_sst_file_test \
461 fault_injection_test \
462 inlineskiplist_test \
463 manual_compaction_test \
464 persistent_cache_test \
469 ifdef ROCKSDBTESTS_START
470 SUBSET
:= $(shell echo
$(SUBSET
) | sed
's/^.*$(ROCKSDBTESTS_START)/$(ROCKSDBTESTS_START)/')
473 ifdef ROCKSDBTESTS_END
474 SUBSET
:= $(shell echo
$(SUBSET
) | sed
's/$(ROCKSDBTESTS_END).*//')
488 librocksdb_env_basic_test.a
490 # TODO: add back forward_iterator_bench, after making it build in all environemnts.
491 BENCHMARKS
= db_bench table_reader_bench cache_bench memtablerep_bench column_aware_encoding_exp persistent_cache_bench
493 # if user didn't config LIBNAME, set the default
495 # we should only run rocksdb in production with DEBUG_LEVEL 0
496 ifeq ($(DEBUG_LEVEL
),0)
499 LIBNAME
=librocksdb_debug
502 LIBRARY
= ${LIBNAME}.a
503 TOOLS_LIBRARY
= ${LIBNAME}_tools.a
505 ROCKSDB_MAJOR
= $(shell egrep
"ROCKSDB_MAJOR.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
506 ROCKSDB_MINOR
= $(shell egrep
"ROCKSDB_MINOR.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
507 ROCKSDB_PATCH
= $(shell egrep
"ROCKSDB_PATCH.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
511 #-----------------------------------------------
512 # Create platform independent shared libraries.
513 #-----------------------------------------------
514 ifneq ($(PLATFORM_SHARED_EXT
),)
516 ifneq ($(PLATFORM_SHARED_VERSIONED
),true
)
517 SHARED1
= ${LIBNAME}.
$(PLATFORM_SHARED_EXT
)
523 SHARED_MAJOR
= $(ROCKSDB_MAJOR
)
524 SHARED_MINOR
= $(ROCKSDB_MINOR
)
525 SHARED_PATCH
= $(ROCKSDB_PATCH
)
526 SHARED1
= ${LIBNAME}.
$(PLATFORM_SHARED_EXT
)
527 ifeq ($(PLATFORM
), OS_MACOSX
)
528 SHARED_OSX
= $(LIBNAME
).
$(SHARED_MAJOR
)
529 SHARED2
= $(SHARED_OSX
).
$(PLATFORM_SHARED_EXT
)
530 SHARED3
= $(SHARED_OSX
).
$(SHARED_MINOR
).
$(PLATFORM_SHARED_EXT
)
531 SHARED4
= $(SHARED_OSX
).
$(SHARED_MINOR
).
$(SHARED_PATCH
).
$(PLATFORM_SHARED_EXT
)
533 SHARED2
= $(SHARED1
).
$(SHARED_MAJOR
)
534 SHARED3
= $(SHARED1
).
$(SHARED_MAJOR
).
$(SHARED_MINOR
)
535 SHARED4
= $(SHARED1
).
$(SHARED_MAJOR
).
$(SHARED_MINOR
).
$(SHARED_PATCH
)
537 SHARED
= $(SHARED1
) $(SHARED2
) $(SHARED3
) $(SHARED4
)
538 $(SHARED1
): $(SHARED4
)
539 ln
-fs
$(SHARED4
) $(SHARED1
)
540 $(SHARED2
): $(SHARED4
)
541 ln
-fs
$(SHARED4
) $(SHARED2
)
542 $(SHARED3
): $(SHARED4
)
543 ln
-fs
$(SHARED4
) $(SHARED3
)
546 shared_libobjects
= $(patsubst %,shared-objects
/%,$(LIBOBJECTS
))
547 CLEAN_FILES
+= shared-objects
549 $(shared_libobjects
): shared-objects
/%.o
: %.
cc
550 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) -c
$< -o
$@
552 $(SHARED4
): $(shared_libobjects
)
553 $(CXX
) $(PLATFORM_SHARED_LDFLAGS
)$(SHARED3
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) $(shared_libobjects
) $(LDFLAGS
) -o
$@
555 endif # PLATFORM_SHARED_EXT
557 .PHONY
: blackbox_crash_test
check clean coverage crash_test ldb_tests package \
558 release
tags valgrind_check whitebox_crash_test format static_lib shared_lib
all \
559 dbg rocksdbjavastatic rocksdbjava
install install-static install-shared
uninstall \
560 analyze tools tools_lib
563 all: $(LIBRARY
) $(BENCHMARKS
) tools tools_lib test_libs
$(TESTS
)
565 static_lib
: $(LIBRARY
)
567 shared_lib
: $(SHARED
)
571 tools_lib
: $(TOOLS_LIBRARY
)
573 test_libs
: $(TEST_LIBS
)
575 dbg
: $(LIBRARY
) $(BENCHMARKS
) tools
$(TESTS
)
577 # creates static library and programs
580 DEBUG_LEVEL
=0 $(MAKE
) static_lib tools db_bench
584 COVERAGEFLAGS
="-fprofile-arcs -ftest-coverage" LDFLAGS
+="-lgcov" $(MAKE
) J
=1 all check
585 cd coverage
&& .
/coverage_test.sh
586 # Delete intermediate files
587 find .
-type f
-regex
".*\.\(\(gcda\)\|\(gcno\)\)" -exec
rm {} \
;
589 ifneq (,$(filter check parallel_check
,$(MAKECMDGOALS
)),)
590 # Use /dev/shm if it has the sticky bit set (otherwise, /tmp),
591 # and create a randomly-named rocksdb.XXXX directory therein.
592 # We'll use that directory in the "make check" rules.
594 TMPDIR
:= $(shell echo
$${TMPDIR
:-/tmp
})
595 TMPD
:= $(shell f
=/dev
/shm
; test -k
$$f || f
=$(TMPDIR
); \
596 perl
-le
'use File::Temp "tempdir";' \
597 -e
'print tempdir("'$$f'/rocksdb.XXXX", CLEANUP => 0)')
601 # Run all tests in parallel, accumulating per-test logs in t/log-*.
603 # Each t/run-* file is a tiny generated bourne shell script that invokes one of
604 # sub-tests. Why use a file for this? Because that makes the invocation of
605 # parallel below simpler, which in turn makes the parsing of parallel's
606 # LOG simpler (the latter is for live monitoring as parallel
609 # Test names are extracted by running tests with --gtest_list_tests.
610 # This filter removes the "#"-introduced comments, and expands to
611 # fully-qualified names by changing input like this:
616 # MultiThreaded/MultiThreadedDBTest.
617 # MultiThreaded/0 # GetParam() = 0
618 # MultiThreaded/1 # GetParam() = 1
623 # DBTest.WriteEmptyBatch
624 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/0
625 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/1
628 parallel_tests
= $(patsubst %,parallel_
%,$(PARALLEL_TEST
))
629 .PHONY
: gen_parallel_tests
$(parallel_tests
)
630 $(parallel_tests
): $(PARALLEL_TEST
)
631 $(AM_V_at
)TEST_BINARY
=$(patsubst parallel_
%,%,$@
); \
633 ./$$TEST_BINARY --gtest_list_tests \
636 -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \
637 -e 'print qq! $$p$$2!'`; \
638 for TEST_NAME in
$$TEST_NAMES; do \
639 TEST_SCRIPT
=t
/run-
$$TEST_BINARY-$${TEST_NAME
//\
//-}; \
640 echo
" GEN " $$TEST_SCRIPT; \
643 "d=\$(TMPD)$$TEST_SCRIPT" \
645 "TEST_TMPDIR=\$$d $(DRIVER) ./$$TEST_BINARY --gtest_filter=$$TEST_NAME" \
647 chmod a
=rx
$$TEST_SCRIPT; \
652 $(AM_V_at
)rm -f t
/run-
*
653 $(MAKE
) $(parallel_tests
)
655 # Reorder input lines (which are one per test) so that the
656 # longest-running tests appear first in the output.
657 # Do this by prefixing each selected name with its duration,
658 # sort the resulting names, and remove the leading numbers.
659 # FIXME: the "100" we prepend is a fake time, for now.
660 # FIXME: squirrel away timings from each run and use them
661 # (when present) on subsequent runs to order these tests.
663 # Without this reordering, these two tests would happen to start only
664 # after almost all other tests had completed, thus adding 100 seconds
665 # to the duration of parallel "make check". That's the difference
666 # between 4 minutes (old) and 2m20s (new).
668 # 152.120 PASS t/DBTest.FileCreationRandomFailure
669 # 107.816 PASS t/DBTest.EncodeDecompressedBlockSizeTest
672 ^t
/run-table_test-HarnessTest.Randomized
$$|^t
/run-db_test-.
*(?
:FileCreationRandomFailure|EncodeDecompressedBlockSizeTest
)$$|^.
*RecoverFromCorruptedWALWithoutFlush
$$
673 prioritize_long_running_tests
= \
674 perl
-pe
's,($(slow_test_regexp)),100 $$1,' \
676 | sed
's/^[.0-9]* //'
679 # Run with "make J=1 check" to disable parallelism in "make check".
680 # Run with "make J=200% check" to run two parallel jobs per core.
681 # The default is to run one job per core (J=100%).
682 # See "man parallel" for its "-j ..." option.
685 # Use this regexp to select the subset of tests whose names match.
688 t_run
= $(wildcard t
/run-
*)
691 $(AM_V_GEN
)export TEST_TMPDIR
=$(TMPD
); \
693 'To monitor subtest <duration,pass/fail,name>,' \
694 ' run "make watch-log" in a separate window' ''; \
695 test -t
1 && eta
=--eta || eta
=; \
697 printf
'./%s\n' $(filter-out $(PARALLEL_TEST
),$(TESTS
)); \
698 printf
'%s\n' $(t_run
); \
700 |
$(prioritize_long_running_tests
) \
701 | grep
-E
'$(tests-regexp)' \
702 | build_tools
/gnu_parallel
-j
$(J
) --plain
--joblog
=LOG
$$eta --gnu
'{} >& t/log-{/}'
704 valgrind-blacklist-regexp
= InlineSkipTest.ConcurrentInsert|TransactionTest.DeadlockStress|DBCompactionTest.SuggestCompactRangeNoTwoLevel0Compactions|BackupableDBTest.RateLimiting|DBTest.CloseSpeedup|DBTest.ThreadStatusFlush|DBTest.RateLimitingTest|DBTest.EncodeDecompressedBlockSizeTest|FaultInjectionTest.UninstalledCompaction|HarnessTest.Randomized|ExternalSSTFileTest.CompactDuringAddFileRandom|ExternalSSTFileTest.IngestFileWithGlobalSeqnoRandomized
706 .PHONY
: valgrind_check_0
708 $(AM_V_GEN
)export TEST_TMPDIR
=$(TMPD
); \
710 'To monitor subtest <duration,pass/fail,name>,' \
711 ' run "make watch-log" in a separate window' ''; \
712 test -t
1 && eta
=--eta || eta
=; \
714 printf
'./%s\n' $(filter-out $(PARALLEL_TEST
) %skiplist_test options_settable_test
, $(TESTS
)); \
715 printf
'%s\n' $(t_run
); \
717 |
$(prioritize_long_running_tests
) \
718 | grep
-E
'$(tests-regexp)' \
719 | grep
-E
-v
'$(valgrind-blacklist-regexp)' \
720 | build_tools
/gnu_parallel
-j
$(J
) --plain
--joblog
=LOG
$$eta --gnu \
721 '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) ' \
722 '>& t/valgrind_log-{/}'
724 CLEAN_FILES
+= t LOG
$(TMPD
)
726 # When running parallel "make check", you can monitor its progress
727 # from another window.
728 # Run "make watch_LOG" to show the duration,PASS/FAIL,name of parallel
729 # tests as they are being run. We sort them so that longer-running ones
730 # appear at the top of the list and any failing tests remain at the top
731 # regardless of their duration. As with any use of "watch", hit ^C to
734 watch
--interval
=0 'sort -k7,7nr -k4,4gr LOG|$(quoted_perl_command)'
736 # If J != 1 and GNU parallel is installed, run the tests in parallel,
737 # via the check_0 rule above. Otherwise, run them sequentially.
739 $(MAKE
) gen_parallel_tests
740 $(AM_V_GEN
)if
test "$(J)" != 1 \
741 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
742 grep
-q
'GNU Parallel'; \
744 $(MAKE
) T
="$$t" TMPD
=$(TMPD
) check_0
; \
746 for t in
$(TESTS
); do \
747 echo
"===== Running $$t"; .
/$$t || exit
1; done
; \
750 ifneq ($(PLATFORM
), OS_AIX
)
751 ifeq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
752 python tools
/ldb_test.py
753 sh tools
/rocksdb_dump_test.sh
758 check_some
: $(SUBSET
)
759 for t in
$(SUBSET
); do echo
"===== Running $$t"; .
/$$t || exit
1; done
763 python tools
/ldb_test.py
765 crash_test
: whitebox_crash_test blackbox_crash_test
767 blackbox_crash_test
: db_stress
768 python
-u tools
/db_crashtest.py
--simple blackbox
769 python
-u tools
/db_crashtest.py blackbox
771 ifeq ($(CRASH_TEST_KILL_ODD
),)
772 CRASH_TEST_KILL_ODD
=888887
775 whitebox_crash_test
: db_stress
776 python
-u tools
/db_crashtest.py
--simple whitebox
--random_kill_odd \
777 $(CRASH_TEST_KILL_ODD
)
778 python
-u tools
/db_crashtest.py whitebox
--random_kill_odd \
779 $(CRASH_TEST_KILL_ODD
)
783 COMPILE_WITH_ASAN
=1 $(MAKE
) check -j32
788 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test
793 COMPILE_WITH_UBSAN
=1 $(MAKE
) check -j32
798 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test
802 DISABLE_JEMALLOC
=1 $(MAKE
) valgrind_check
804 valgrind_check
: $(TESTS
)
805 $(MAKE
) DRIVER
="$(VALGRIND_VER) $(VALGRIND_OPTS)" gen_parallel_tests
806 $(AM_V_GEN
)if
test "$(J)" != 1 \
807 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
808 grep
-q
'GNU Parallel'; \
810 $(MAKE
) TMPD
=$(TMPD
) \
811 DRIVER
="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0
; \
813 for t in
$(filter-out %skiplist_test options_settable_test
,$(TESTS
)); do \
814 $(VALGRIND_VER
) $(VALGRIND_OPTS
) .
/$$t; \
816 if
[ $$ret_code -ne
0 ]; then \
826 for t in
$(PAR_TEST
); do \
827 echo
"===== Running $$t in parallel $(NUM_PAR)";\
828 if
[ $(db_test
) -eq
1 ]; then \
829 seq
$(J
) | v
="$$t" build_tools
/gnu_parallel
--gnu
--plain
's=$(TMPD)/rdb-{}; export TEST_TMPDIR=$$s;' \
830 'timeout 2m ./db_test --gtest_filter=$$v >> $$s/log-{} 2>1'; \
832 seq
$(J
) | v
="./$$t" build_tools
/gnu_parallel
--gnu
--plain
's=$(TMPD)/rdb-{};' \
833 'export TEST_TMPDIR=$$s; timeout 10m $$v >> $$s/log-{} 2>1'; \
836 if
[ $$ret_code -ne
0 ]; then \
837 ret_bad
=$$ret_code; \
838 echo
$$t exited with
$$ret_code; \
845 .
/db_test
--gtest_list_tests \
848 -e
'/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \
849 -e
'print qq! $$p$$2!'
851 parallel_check
: $(TESTS
)
852 $(AM_V_GEN
)if
test "$(J)" > 1 \
853 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
854 grep
-q
'GNU Parallel'; \
856 echo Running in parallel
$(J
); \
858 echo
"Need to have GNU Parallel and J > 1"; exit
1; \
862 echo Test Dir
: $(TMPD
); \
863 seq
$(J
) | build_tools
/gnu_parallel
--gnu
--plain
's=$(TMPD)/rdb-{}; rm -rf $$s; mkdir $$s'; \
864 $(MAKE
) PAR_TEST
="$(shell $(test_names))" TMPD
=$(TMPD
) \
865 J
=$(J
) db_test
=1 parloop
; \
866 $(MAKE
) PAR_TEST
="$(filter-out db_test, $(TESTS))" \
867 TMPD
=$(TMPD
) J
=$(J
) db_test
=0 parloop
;
870 $(CLANG_SCAN_BUILD
) --use-analyzer
=$(CLANG_ANALYZER
) \
871 --use-c
++=$(CXX
) --use-cc
=$(CC
) --status-bugs \
872 -o
$(CURDIR
)/scan_build_report \
875 CLEAN_FILES
+= unity.
cc
878 for source_file in
$(LIB_SOURCES
); do \
879 echo
"#include \"$$source_file\"" >> $@
-t
; \
886 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@ unity.o
888 # try compiling db_test with unity
889 unity_test
: db
/db_test.o db
/db_test_util.o
$(TESTHARNESS
) unity.a
893 rocksdb.h rocksdb.
cc: build_tools
/amalgamate.py Makefile
$(LIB_SOURCES
) unity.
cc
894 build_tools
/amalgamate.py
-I.
-i.
/include unity.
cc -x
include/rocksdb
/c.h
-H rocksdb.h
-o rocksdb.
cc
897 rm -f
$(BENCHMARKS
) $(TOOLS
) $(TESTS
) $(LIBRARY
) $(SHARED
)
898 rm -rf
$(CLEAN_FILES
) ios-x86 ios-arm scan_build_report
899 find .
-name
"*.[oda]" -exec
rm -f
{} \
;
900 find .
-type f
-regex
".*\.\(\(gcda\)\|\(gcno\)\)" -exec
rm {} \
;
901 rm -rf bzip2
* snappy
* zlib
* lz4
*
902 cd java
; $(MAKE
) clean
906 cscope
-b
`find . -name '*.cc'` `find . -name '*.h'` `find . -name '*.c'`
909 build_tools
/format-diff.sh
912 bash build_tools
/make_package.sh
$(SHARED_MAJOR
).
$(SHARED_MINOR
)
914 # ---------------------------------------------------------------------------
915 # Unit tests and tools
916 # ---------------------------------------------------------------------------
917 $(LIBRARY
): $(LIBOBJECTS
)
919 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$(LIBOBJECTS
)
921 $(TOOLS_LIBRARY
): $(BENCH_LIB_SOURCES
:.
cc=.o
) $(TOOL_LIB_SOURCES
:.
cc=.o
) $(LIB_SOURCES
:.
cc=.o
) $(TESTUTIL
)
923 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
925 librocksdb_env_basic_test.a
: env
/env_basic_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
927 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
929 db_bench
: tools
/db_bench.o
$(BENCHTOOLOBJECTS
)
932 cache_bench
: cache
/cache_bench.o
$(LIBOBJECTS
) $(TESTUTIL
)
935 persistent_cache_bench
: utilities
/persistent_cache
/persistent_cache_bench.o
$(LIBOBJECTS
) $(TESTUTIL
)
938 memtablerep_bench
: memtable
/memtablerep_bench.o
$(LIBOBJECTS
) $(TESTUTIL
)
941 db_stress
: tools
/db_stress.o
$(LIBOBJECTS
) $(TESTUTIL
)
944 write_stress
: tools
/write_stress.o
$(LIBOBJECTS
) $(TESTUTIL
)
947 db_sanity_test
: tools
/db_sanity_test.o
$(LIBOBJECTS
) $(TESTUTIL
)
950 db_repl_stress
: tools
/db_repl_stress.o
$(LIBOBJECTS
) $(TESTUTIL
)
953 arena_test
: util
/arena_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
956 autovector_test
: util
/autovector_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
959 column_family_test
: db
/column_family_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
962 table_properties_collector_test
: db
/table_properties_collector_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
965 bloom_test
: util
/bloom_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
968 dynamic_bloom_test
: util
/dynamic_bloom_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
971 c_test
: db
/c_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
974 cache_test
: cache
/cache_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
977 coding_test
: util
/coding_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
980 option_change_migration_test
: utilities
/option_change_migration
/option_change_migration_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
983 stringappend_test
: utilities
/merge_operators
/string_append
/stringappend_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
986 redis_test
: utilities
/redis
/redis_lists_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
989 hash_table_test
: utilities
/persistent_cache
/hash_table_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
992 histogram_test
: monitoring
/histogram_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
995 thread_local_test
: util
/thread_local_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
998 corruption_test
: db
/corruption_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1001 crc32c_test
: util
/crc32c_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1004 slice_transform_test
: util
/slice_transform_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1007 db_basic_test
: db
/db_basic_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1010 db_test
: db
/db_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1013 db_test2
: db
/db_test2.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1016 db_block_cache_test
: db
/db_block_cache_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1019 db_bloom_filter_test
: db
/db_bloom_filter_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1022 db_log_iter_test
: db
/db_log_iter_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1025 db_compaction_filter_test
: db
/db_compaction_filter_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1028 db_compaction_test
: db
/db_compaction_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1031 db_dynamic_level_test
: db
/db_dynamic_level_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1034 db_flush_test
: db
/db_flush_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1037 db_inplace_update_test
: db
/db_inplace_update_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1040 db_iterator_test
: db
/db_iterator_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1043 db_memtable_test
: db
/db_memtable_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1046 db_merge_operator_test
: db
/db_merge_operator_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1049 db_options_test
: db
/db_options_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1052 db_range_del_test
: db
/db_range_del_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1055 db_sst_test
: db
/db_sst_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1058 db_statistics_test
: db
/db_statistics_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1061 external_sst_file_basic_test
: db
/external_sst_file_basic_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1064 external_sst_file_test
: db
/external_sst_file_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1067 db_tailing_iter_test
: db
/db_tailing_iter_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1070 db_iter_test
: db
/db_iter_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1073 db_universal_compaction_test
: db
/db_universal_compaction_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1076 db_wal_test
: db
/db_wal_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1079 db_io_failure_test
: db
/db_io_failure_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1082 db_properties_test
: db
/db_properties_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1085 db_table_properties_test
: db
/db_table_properties_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1088 log_write_bench
: util
/log_write_bench.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1089 $(AM_LINK
) $(PROFILING_FLAGS
)
1091 plain_table_db_test
: db
/plain_table_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1094 comparator_db_test
: db
/comparator_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1097 table_reader_bench
: table
/table_reader_bench.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1098 $(AM_LINK
) $(PROFILING_FLAGS
)
1100 perf_context_test
: db
/perf_context_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1101 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
)
1103 prefix_test
: db
/prefix_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1104 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
)
1106 backupable_db_test
: utilities
/backupable
/backupable_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1109 blob_db_test
: utilities
/blob_db
/blob_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1112 checkpoint_test
: utilities
/checkpoint
/checkpoint_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1115 document_db_test
: utilities
/document
/document_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1118 json_document_test
: utilities
/document
/json_document_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1121 sim_cache_test
: utilities
/simulator_cache
/sim_cache_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1124 spatial_db_test
: utilities
/spatialdb
/spatial_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1127 env_mirror_test
: utilities
/env_mirror_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1130 env_timed_test
: utilities
/env_timed_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1133 ifdef ROCKSDB_USE_LIBRADOS
1134 env_librados_test
: utilities
/env_librados_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1135 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
) $(COVERAGEFLAGS
)
1138 object_registry_test
: utilities
/object_registry_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1141 ttl_test
: utilities
/ttl
/ttl_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1144 date_tiered_test
: utilities
/date_tiered
/date_tiered_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1147 write_batch_with_index_test
: utilities
/write_batch_with_index
/write_batch_with_index_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1150 flush_job_test
: db
/flush_job_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1153 compaction_iterator_test
: db
/compaction_iterator_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1156 compaction_job_test
: db
/compaction_job_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1159 compaction_job_stats_test
: db
/compaction_job_stats_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1162 compact_on_deletion_collector_test
: utilities
/table_properties_collectors
/compact_on_deletion_collector_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1165 wal_manager_test
: db
/wal_manager_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1168 dbformat_test
: db
/dbformat_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1171 env_basic_test
: env
/env_basic_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1174 env_test
: env
/env_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1177 fault_injection_test
: db
/fault_injection_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1180 rate_limiter_test
: util
/rate_limiter_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1183 delete_scheduler_test
: util
/delete_scheduler_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1186 filename_test
: db
/filename_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1189 file_reader_writer_test
: util
/file_reader_writer_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1192 block_based_filter_block_test
: table
/block_based_filter_block_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1195 full_filter_block_test
: table
/full_filter_block_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1198 partitioned_filter_block_test
: table
/partitioned_filter_block_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1201 log_test
: db
/log_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1204 cleanable_test
: table
/cleanable_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1207 table_test
: table
/table_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1210 block_test
: table
/block_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1213 inlineskiplist_test
: memtable
/inlineskiplist_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1216 skiplist_test
: memtable
/skiplist_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1219 version_edit_test
: db
/version_edit_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1222 version_set_test
: db
/version_set_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1225 compaction_picker_test
: db
/compaction_picker_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1228 version_builder_test
: db
/version_builder_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1231 file_indexer_test
: db
/file_indexer_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1234 reduce_levels_test
: tools
/reduce_levels_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1237 write_batch_test
: db
/write_batch_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1240 write_controller_test
: db
/write_controller_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1243 merge_helper_test
: db
/merge_helper_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1246 memory_test
: utilities
/memory
/memory_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1249 merge_test
: db
/merge_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1252 merger_test
: table
/merger_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1255 util_merge_operators_test
: utilities
/util_merge_operators_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1258 options_file_test
: db
/options_file_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1261 deletefile_test
: db
/deletefile_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1264 geodb_test
: utilities
/geodb
/geodb_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1267 rocksdb_dump
: tools
/dump
/rocksdb_dump.o
$(LIBOBJECTS
)
1270 rocksdb_undump
: tools
/dump
/rocksdb_undump.o
$(LIBOBJECTS
)
1273 cuckoo_table_builder_test
: table
/cuckoo_table_builder_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1276 cuckoo_table_reader_test
: table
/cuckoo_table_reader_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1279 cuckoo_table_db_test
: db
/cuckoo_table_db_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1282 listener_test
: db
/listener_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1285 thread_list_test
: util
/thread_list_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1288 compact_files_test
: db
/compact_files_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1291 options_test
: options
/options_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1294 options_settable_test
: options
/options_settable_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1297 options_util_test
: utilities
/options
/options_util_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1300 db_bench_tool_test
: tools
/db_bench_tool_test.o
$(BENCHTOOLOBJECTS
) $(TESTHARNESS
)
1303 event_logger_test
: util
/event_logger_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1306 sst_dump_test
: tools
/sst_dump_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1309 column_aware_encoding_test
: utilities
/column_aware_encoding_test.o
$(TESTHARNESS
) $(EXPOBJECTS
)
1312 optimistic_transaction_test
: utilities
/transactions
/optimistic_transaction_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1315 mock_env_test
: env
/mock_env_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1318 manual_compaction_test
: db
/manual_compaction_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1321 filelock_test
: util
/filelock_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1324 auto_roll_logger_test
: util
/auto_roll_logger_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1327 memtable_list_test
: db
/memtable_list_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1330 write_callback_test
: db
/write_callback_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1333 heap_test
: util
/heap_test.o
$(GTEST
)
1336 transaction_test
: utilities
/transactions
/transaction_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1339 sst_dump
: tools
/sst_dump.o
$(LIBOBJECTS
)
1342 column_aware_encoding_exp
: utilities
/column_aware_encoding_exp.o
$(EXPOBJECTS
)
1345 repair_test
: db
/repair_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1348 ldb_cmd_test
: tools
/ldb_cmd_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1351 ldb
: tools
/ldb.o
$(LIBOBJECTS
)
1354 iostats_context_test
: monitoring
/iostats_context_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1355 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
)
1357 persistent_cache_test
: utilities
/persistent_cache
/persistent_cache_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1360 statistics_test
: monitoring
/statistics_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1363 lru_cache_test
: cache
/lru_cache_test.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1366 lua_test
: utilities
/lua
/rocks_lua_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1369 range_del_aggregator_test
: db
/range_del_aggregator_test.o db
/db_test_util.o
$(LIBOBJECTS
) $(TESTHARNESS
)
1372 #-------------------------------------------------
1373 # make install related stuff
1374 INSTALL_PATH ?
= /usr
/local
1377 rm -rf
$(INSTALL_PATH
)/include/rocksdb \
1378 $(INSTALL_PATH
)/lib
/$(LIBRARY
) \
1379 $(INSTALL_PATH
)/lib
/$(SHARED4
) \
1380 $(INSTALL_PATH
)/lib
/$(SHARED3
) \
1381 $(INSTALL_PATH
)/lib
/$(SHARED2
) \
1382 $(INSTALL_PATH
)/lib
/$(SHARED1
)
1385 install -d
$(INSTALL_PATH
)/lib
1386 for header_dir in
`find "include/rocksdb" -type d`; do \
1387 install -d
$(INSTALL_PATH
)/$$header_dir; \
1389 for header in
`find "include/rocksdb" -type f -name *.h`; do \
1390 install -C
-m
644 $$header $(INSTALL_PATH
)/$$header; \
1393 install-static
: install-headers
$(LIBRARY
)
1394 install -C
-m
755 $(LIBRARY
) $(INSTALL_PATH
)/lib
1396 install-shared
: install-headers
$(SHARED4
)
1397 install -C
-m
755 $(SHARED4
) $(INSTALL_PATH
)/lib
&& \
1398 ln
-fs
$(SHARED4
) $(INSTALL_PATH
)/lib
/$(SHARED3
) && \
1399 ln
-fs
$(SHARED4
) $(INSTALL_PATH
)/lib
/$(SHARED2
) && \
1400 ln
-fs
$(SHARED4
) $(INSTALL_PATH
)/lib
/$(SHARED1
)
1402 # install static by default + install shared if it exists
1403 install: install-static
1404 [ -e
$(SHARED4
) ] && $(MAKE
) install-shared ||
:
1406 #-------------------------------------------------
1409 # ---------------------------------------------------------------------------
1411 # ---------------------------------------------------------------------------
1413 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/linux
1414 ifeq ($(PLATFORM
), OS_SOLARIS
)
1415 ARCH
:= $(shell isainfo
-b
)
1417 ARCH
:= $(shell getconf LONG_BIT
)
1420 ifeq (,$(findstring ppc
,$(MACHINE
)))
1421 ROCKSDBJNILIB
= librocksdbjni-linux
$(ARCH
).so
1423 ROCKSDBJNILIB
= librocksdbjni-linux-
$(MACHINE
).so
1425 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-linux
$(ARCH
).jar
1426 ROCKSDB_JAR_ALL
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
).jar
1427 ROCKSDB_JAVADOCS_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-javadoc.jar
1428 ROCKSDB_SOURCES_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-sources.jar
1429 SHA256_CMD
= sha256sum
1432 ZLIB_SHA256 ?
= c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
1433 ZLIB_DOWNLOAD_BASE ?
= http
://zlib.net
1435 BZIP2_SHA256 ?
= a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd
1436 BZIP2_DOWNLOAD_BASE ?
= http
://www.bzip.org
1438 SNAPPY_SHA256 ?
= 134bfe122fd25599bb807bb8130e7ba6d9bdb851e0b16efcb83ac4f5d0b70057
1439 SNAPPY_DOWNLOAD_BASE ?
= https
://github.com
/google
/snappy
/releases
/download
1441 LZ4_SHA256 ?
= 0190cacd63022ccb86f44fa5041dc6c3804407ad61550ca21c382827319e7e7e
1442 LZ4_DOWNLOAD_BASE ?
= https
://github.com
/lz4
/lz4
/archive
1444 ifeq ($(PLATFORM
), OS_MACOSX
)
1445 ROCKSDBJNILIB
= librocksdbjni-osx.jnilib
1446 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-osx.jar
1447 SHA256_CMD
= openssl sha256
-r
1448 ifneq ("$(wildcard $(JAVA_HOME)/include/darwin)","")
1449 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/darwin
1451 JAVA_INCLUDE
= -I
/System
/Library
/Frameworks
/JavaVM.framework
/Headers
/
1454 ifeq ($(PLATFORM
), OS_FREEBSD
)
1455 JAVA_INCLUDE
+= -I
$(JAVA_HOME
)/include/freebsd
1456 ROCKSDBJNILIB
= librocksdbjni-freebsd
$(ARCH
).so
1457 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-freebsd
$(ARCH
).jar
1459 ifeq ($(PLATFORM
), OS_SOLARIS
)
1460 ROCKSDBJNILIB
= librocksdbjni-solaris
$(ARCH
).so
1461 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-solaris
$(ARCH
).jar
1462 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/solaris
1463 SHA256_CMD
= digest
-a sha256
1465 ifeq ($(PLATFORM
), OS_AIX
)
1466 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/aix
1467 ROCKSDBJNILIB
= librocksdbjni-aix.so
1468 EXTRACT_SOURCES
= gunzip
< TAR_GZ |
tar xvf
-
1469 SNAPPY_MAKE_TARGET
= libsnappy.la
1473 -rm -rf zlib-
$(ZLIB_VER
)
1474 curl
-O
-L
${ZLIB_DOWNLOAD_BASE}/zlib-
$(ZLIB_VER
).
tar.gz
1475 ZLIB_SHA256_ACTUAL
=`$(SHA256_CMD) zlib-$(ZLIB_VER).tar.gz | cut -d ' ' -f 1`; \
1476 if
[ "$(ZLIB_SHA256)" != "$$ZLIB_SHA256_ACTUAL" ]; then \
1477 echo zlib-
$(ZLIB_VER
).
tar.gz checksum mismatch
, expected
=\"$(ZLIB_SHA256
)\" actual
=\"$$ZLIB_SHA256_ACTUAL\"; \
1480 tar xvzf zlib-
$(ZLIB_VER
).
tar.gz
1481 cd zlib-
$(ZLIB_VER
) && CFLAGS
='-fPIC ${EXTRA_CFLAGS}' LDFLAGS
='${EXTRA_LDFLAGS}' .
/configure
--static
&& make
1482 cp zlib-
$(ZLIB_VER
)/libz.a .
1485 -rm -rf bzip2-
$(BZIP2_VER
)
1486 curl
-O
-L
${BZIP2_DOWNLOAD_BASE}/$(BZIP2_VER
)/bzip2-
$(BZIP2_VER
).
tar.gz
1487 BZIP2_SHA256_ACTUAL
=`$(SHA256_CMD) bzip2-$(BZIP2_VER).tar.gz | cut -d ' ' -f 1`; \
1488 if
[ "$(BZIP2_SHA256)" != "$$BZIP2_SHA256_ACTUAL" ]; then \
1489 echo bzip2-
$(BZIP2_VER
).
tar.gz checksum mismatch
, expected
=\"$(BZIP2_SHA256
)\" actual
=\"$$BZIP2_SHA256_ACTUAL\"; \
1492 tar xvzf bzip2-
$(BZIP2_VER
).
tar.gz
1493 cd bzip2-
$(BZIP2_VER
) && make CFLAGS
='-fPIC -O2 -g -D_FILE_OFFSET_BITS=64 ${EXTRA_CFLAGS}' AR
='ar ${EXTRA_ARFLAGS}'
1494 cp bzip2-
$(BZIP2_VER
)/libbz2.a .
1497 -rm -rf snappy-
$(SNAPPY_VER
)
1498 curl
-O
-L
${SNAPPY_DOWNLOAD_BASE}/$(SNAPPY_VER
)/snappy-
$(SNAPPY_VER
).
tar.gz
1499 SNAPPY_SHA256_ACTUAL
=`$(SHA256_CMD) snappy-$(SNAPPY_VER).tar.gz | cut -d ' ' -f 1`; \
1500 if
[ "$(SNAPPY_SHA256)" != "$$SNAPPY_SHA256_ACTUAL" ]; then \
1501 echo snappy-
$(SNAPPY_VER
).
tar.gz checksum mismatch
, expected
=\"$(SNAPPY_SHA256
)\" actual
=\"$$SNAPPY_SHA256_ACTUAL\"; \
1504 tar xvzf snappy-
$(SNAPPY_VER
).
tar.gz
1505 cd snappy-
$(SNAPPY_VER
) && CFLAGS
='${EXTRA_CFLAGS}' CXXFLAGS
='${EXTRA_CXXFLAGS}' LDFLAGS
='${EXTRA_LDFLAGS}' .
/configure
--with-pic
--enable-static
--disable-shared
1506 cd snappy-
$(SNAPPY_VER
) && make
${SNAPPY_MAKE_TARGET}
1507 cp snappy-
$(SNAPPY_VER
)/.libs
/libsnappy.a .
1510 -rm -rf lz4-
$(LZ4_VER
)
1511 curl
-O
-L
${LZ4_DOWNLOAD_BASE}/v
$(LZ4_VER
).
tar.gz
1512 mv v
$(LZ4_VER
).
tar.gz lz4-
$(LZ4_VER
).
tar.gz
1513 LZ4_SHA256_ACTUAL
=`$(SHA256_CMD) lz4-$(LZ4_VER).tar.gz | cut -d ' ' -f 1`; \
1514 if
[ "$(LZ4_SHA256)" != "$$LZ4_SHA256_ACTUAL" ]; then \
1515 echo lz4-
$(LZ4_VER
).
tar.gz checksum mismatch
, expected
=\"$(LZ4_SHA256
)\" actual
=\"$$LZ4_SHA256_ACTUAL\"; \
1518 tar xvzf lz4-
$(LZ4_VER
).
tar.gz
1519 cd lz4-
$(LZ4_VER
)/lib
&& make CFLAGS
='-fPIC -O2 ${EXTRA_CFLAGS}' all
1520 cp lz4-
$(LZ4_VER
)/lib
/liblz4.a .
1522 # A version of each $(LIBOBJECTS) compiled with -fPIC and a fixed set of static compression libraries
1523 java_static_libobjects
= $(patsubst %,jls
/%,$(LIBOBJECTS
))
1526 ifneq ($(ROCKSDB_JAVA_NO_COMPRESSION
), 1)
1527 JAVA_COMPRESSIONS
= libz.a libbz2.a libsnappy.a liblz4.a
1530 JAVA_STATIC_FLAGS
= -DZLIB
-DBZIP2
-DSNAPPY
-DLZ4
1531 JAVA_STATIC_INCLUDES
= -I.
/zlib-
$(ZLIB_VER
) -I.
/bzip2-
$(BZIP2_VER
) -I.
/snappy-
$(SNAPPY_VER
) -I.
/lz4-
$(LZ4_VER
)/lib
1533 $(java_static_libobjects
): jls
/%.o
: %.
cc $(JAVA_COMPRESSIONS
)
1534 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) $(JAVA_STATIC_FLAGS
) $(JAVA_STATIC_INCLUDES
) -fPIC
-c
$< -o
$@
$(COVERAGEFLAGS
)
1536 rocksdbjavastatic
: $(java_static_libobjects
)
1537 cd java
;$(MAKE
) javalib
;
1538 rm -f .
/java
/target
/$(ROCKSDBJNILIB
)
1539 $(CXX
) $(CXXFLAGS
) -I.
/java
/.
$(JAVA_INCLUDE
) -shared
-fPIC \
1540 -o .
/java
/target
/$(ROCKSDBJNILIB
) $(JNI_NATIVE_SOURCES
) \
1541 $(java_static_libobjects
) $(COVERAGEFLAGS
) \
1542 $(JAVA_COMPRESSIONS
) $(JAVA_STATIC_LDFLAGS
)
1543 cd java
/target
;strip $(STRIPFLAGS
) $(ROCKSDBJNILIB
)
1544 cd java
;jar
-cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
1545 cd java
/target
;jar
-uf
$(ROCKSDB_JAR
) $(ROCKSDBJNILIB
)
1546 cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
1547 cd java
/target
/apidocs
;jar
-cf ..
/$(ROCKSDB_JAVADOCS_JAR
) *
1548 cd java
/src
/main
/java
;jar
-cf ..
/..
/..
/target
/$(ROCKSDB_SOURCES_JAR
) org
1550 rocksdbjavastaticrelease
: rocksdbjavastatic
1551 cd java
/crossbuild
&& vagrant destroy
-f
&& vagrant up linux32
&& vagrant halt linux32
&& vagrant up linux64
&& vagrant halt linux64
1552 cd java
;jar
-cf target
/$(ROCKSDB_JAR_ALL
) HISTORY
*.md
1553 cd java
/target
;jar
-uf
$(ROCKSDB_JAR_ALL
) librocksdbjni-
*.so librocksdbjni-
*.jnilib
1554 cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR_ALL
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
1556 rocksdbjavastaticpublish
: rocksdbjavastaticrelease rocksdbjavastaticpublishcentral
1558 rocksdbjavastaticpublishcentral
:
1559 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
1560 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
1561 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
1562 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
1563 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
1564 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
1565 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
1567 # A version of each $(LIBOBJECTS) compiled with -fPIC
1568 java_libobjects
= $(patsubst %,jl
/%,$(LIBOBJECTS
))
1571 $(java_libobjects
): jl
/%.o
: %.
cc
1572 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) -fPIC
-c
$< -o
$@
$(COVERAGEFLAGS
)
1574 rocksdbjava
: $(java_libobjects
)
1575 $(AM_V_GEN
)cd java
;$(MAKE
) javalib
;
1576 $(AM_V_at
)rm -f .
/java
/target
/$(ROCKSDBJNILIB
)
1577 $(AM_V_at
)$(CXX
) $(CXXFLAGS
) -I.
/java
/.
$(JAVA_INCLUDE
) -shared
-fPIC
-o .
/java
/target
/$(ROCKSDBJNILIB
) $(JNI_NATIVE_SOURCES
) $(java_libobjects
) $(JAVA_LDFLAGS
) $(COVERAGEFLAGS
)
1578 $(AM_V_at
)cd java
;jar
-cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
1579 $(AM_V_at
)cd java
/target
;jar
-uf
$(ROCKSDB_JAR
) $(ROCKSDBJNILIB
)
1580 $(AM_V_at
)cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
1583 cd java
;$(MAKE
) clean;
1585 jtest_compile
: rocksdbjava
1586 cd java
;$(MAKE
) java_test
1589 cd java
;$(MAKE
) run_test
1592 cd java
;$(MAKE
) sample
;$(MAKE
) test;
1595 cd java
;$(MAKE
) db_bench
;
1597 commit_prereq
: build_tools
/rocksdb-lego-determinator \
1598 build_tools
/precommit_checker.py
1599 J
=$(J
) build_tools
/precommit_checker.py unit unit_481 clang_unit release release_481 clang_release tsan asan ubsan lite unit_non_shm
1600 $(MAKE
) clean && $(MAKE
) jclean
&& $(MAKE
) rocksdbjava
;
1602 # ---------------------------------------------------------------------------
1603 # Platform-specific compilation
1604 # ---------------------------------------------------------------------------
1606 ifeq ($(PLATFORM
), IOS
)
1607 # For iOS, create universal object files to be used on both the simulator and
1609 PLATFORMSROOT
=/Applications
/Xcode.app
/Contents
/Developer
/Platforms
1610 SIMULATORROOT
=$(PLATFORMSROOT
)/iPhoneSimulator.platform
/Developer
1611 DEVICEROOT
=$(PLATFORMSROOT
)/iPhoneOS.platform
/Developer
1612 IOSVERSION
=$(shell defaults read
$(PLATFORMSROOT
)/iPhoneOS.platform
/version CFBundleShortVersionString
)
1615 mkdir
-p ios-x86
/$(dir $@
)
1616 $(CXX
) $(CXXFLAGS
) -isysroot
$(SIMULATORROOT
)/SDKs
/iPhoneSimulator
$(IOSVERSION
).sdk
-arch i686
-arch x86_64
-c
$< -o ios-x86
/$@
1617 mkdir
-p ios-arm
/$(dir $@
)
1618 xcrun
-sdk iphoneos
$(CXX
) $(CXXFLAGS
) -isysroot
$(DEVICEROOT
)/SDKs
/iPhoneOS
$(IOSVERSION
).sdk
-arch armv6
-arch armv7
-arch armv7s
-arch arm64
-c
$< -o ios-arm
/$@
1619 lipo ios-x86
/$@ ios-arm
/$@
-create
-output
$@
1622 mkdir
-p ios-x86
/$(dir $@
)
1623 $(CC
) $(CFLAGS
) -isysroot
$(SIMULATORROOT
)/SDKs
/iPhoneSimulator
$(IOSVERSION
).sdk
-arch i686
-arch x86_64
-c
$< -o ios-x86
/$@
1624 mkdir
-p ios-arm
/$(dir $@
)
1625 xcrun
-sdk iphoneos
$(CC
) $(CFLAGS
) -isysroot
$(DEVICEROOT
)/SDKs
/iPhoneOS
$(IOSVERSION
).sdk
-arch armv6
-arch armv7
-arch armv7s
-arch arm64
-c
$< -o ios-arm
/$@
1626 lipo ios-x86
/$@ ios-arm
/$@
-create
-output
$@
1630 $(AM_V_CC
)$(CXX
) $(CXXFLAGS
) -c
$< -o
$@
$(COVERAGEFLAGS
)
1633 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
1636 # ---------------------------------------------------------------------------
1637 # Source files dependencies detection
1638 # ---------------------------------------------------------------------------
1640 all_sources
= $(LIB_SOURCES
) $(MAIN_SOURCES
) $(MOCK_LIB_SOURCES
) $(TOOL_LIB_SOURCES
) $(BENCH_LIB_SOURCES
) $(TEST_LIB_SOURCES
) $(EXP_LIB_SOURCES
)
1641 DEPFILES
= $(all_sources
:.
cc=.d
)
1643 # Add proper dependency support so changing a .h file forces a .cc file to
1646 # The .d file indicates .cc file's dependencies on .h files. We generate such
1647 # dependency by g++'s -MM option, whose output is a make dependency rule.
1648 $(DEPFILES
): %.d
: %.
cc
1649 @
$(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
1650 -MM
-MT
'$@' -MT
'$(<:.cc=.o)' "$<" -o
'$@'
1654 # if the make goal is either "clean" or "format", we shouldn't
1655 # try to import the *.d files.
1656 # TODO(kailiu) The unfamiliarity of Make's conditions leads to the ugly
1658 ifneq ($(MAKECMDGOALS
),clean)
1659 ifneq ($(MAKECMDGOALS
),format
)
1660 ifneq ($(MAKECMDGOALS
),jclean
)
1661 ifneq ($(MAKECMDGOALS
),jtest
)
1662 ifneq ($(MAKECMDGOALS
),package
)
1663 ifneq ($(MAKECMDGOALS
),analyze
)
1664 -include $(DEPFILES
)