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
)
11 # Default to python3. Some distros like CentOS 8 do not have `python`.
12 ifeq ($(origin PYTHON
), undefined
)
13 PYTHON
:= $(shell which python3 || which python || echo python3
)
17 CLEAN_FILES
= # deliberately empty, so we can append below.
18 CFLAGS
+= ${EXTRA_CFLAGS}
19 CXXFLAGS
+= ${EXTRA_CXXFLAGS}
20 LDFLAGS
+= $(EXTRA_LDFLAGS
)
21 MACHINE ?
= $(shell uname
-m
)
22 ARFLAGS
= ${EXTRA_ARFLAGS} rs
25 # Transform parallel LOG output into something more readable.
26 perl_command
= perl
-n \
27 -e
'@a=split("\t",$$_,-1); $$t=$$a[8];' \
28 -e
'$$t =~ /.*if\s\[\[\s"(.*?\.[\w\/]+)/ and $$t=$$1;' \
29 -e
'$$t =~ s,^\./,,;' \
30 -e
'$$t =~ s, >.*,,; chomp $$t;' \
31 -e
'$$t =~ /.*--gtest_filter=(.*?\.[\w\/]+)/ and $$t=$$1;' \
32 -e
'printf "%7.3f %s %s\n", $$a[3], $$a[6] == 0 ? "PASS" : "FAIL", $$t'
33 quoted_perl_command
= $(subst ','\'',$(perl_command))
35 # DEBUG_LEVEL can have three values:
36 # * DEBUG_LEVEL=2; this is the ultimate debug mode. It will compile rocksdb
37 # without any optimizations. To compile with level 2, issue `make dbg`
38 # * DEBUG_LEVEL=1; debug level 1 enables all assertions and debug code, but
39 # compiles rocksdb with -O2 optimizations. this is the default debug level.
40 # `make all` or `make <binary_target>` compile RocksDB with debug level 1.
41 # We use this debug level when developing RocksDB.
42 # * DEBUG_LEVEL=0; this is the debug level we use for release. If you're
43 # running rocksdb in production you most definitely want to compile RocksDB
44 # with debug level 0. To compile with level 0, run `make shared_lib`,
45 # `make install-shared`, `make static_lib`, `make install-static` or
48 # Set the default DEBUG_LEVEL to 1
51 # LIB_MODE says whether or not to use/build "shared" or "static" libraries.
52 # Mode "static" means to link against static libraries (.a)
53 # Mode "shared" means to link against shared libraries (.so, .sl, .dylib, etc)
55 # Set the default LIB_MODE to static
58 ifeq ($(MAKECMDGOALS
),dbg
)
62 ifeq ($(MAKECMDGOALS
),clean)
66 ifeq ($(MAKECMDGOALS
),release
)
70 ifeq ($(MAKECMDGOALS
),shared_lib
)
75 ifeq ($(MAKECMDGOALS
),install-shared
)
80 ifeq ($(MAKECMDGOALS
),static_lib
)
85 ifeq ($(MAKECMDGOALS
),install-static
)
90 ifeq ($(MAKECMDGOALS
),install)
95 ifneq ($(findstring jtest
, $(MAKECMDGOALS
)),)
100 ifneq ($(findstring rocksdbjava
, $(MAKECMDGOALS
)),)
102 ifneq ($(findstring rocksdbjavastatic
, $(MAKECMDGOALS
)),)
104 ifneq ($(DEBUG_LEVEL
),2)
107 ifeq ($(MAKECMDGOALS
),rocksdbjavastaticpublish
)
115 $(info $$DEBUG_LEVEL is
${DEBUG_LEVEL})
120 ifneq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
121 # Be backward compatible and support older format where OPT=-DROCKSDB_LITE is
122 # specified instead of LITE=1 on the command line.
125 else ifeq ($(LITE
), 1)
126 ifeq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
127 OPT
+= -DROCKSDB_LITE
131 # Figure out optimize level.
132 ifneq ($(DEBUG_LEVEL
), 2)
134 OPTIMIZE_LEVEL ?
= -O2
136 OPTIMIZE_LEVEL ?
= -Os
139 # `OPTIMIZE_LEVEL` is empty when the user does not set it and `DEBUG_LEVEL=2`.
140 # In that case, the compiler default (`-O0` for gcc and clang) will be used.
141 OPT
+= $(OPTIMIZE_LEVEL
)
143 # compile with -O2 if debug level is not 2
144 ifneq ($(DEBUG_LEVEL
), 2)
145 OPT
+= -fno-omit-frame-pointer
146 # Skip for archs that don't support -momit-leaf-frame-pointer
147 ifeq (,$(shell $(CXX
) -fsyntax-only
-momit-leaf-frame-pointer
-xc
/dev
/null
2>&1))
148 OPT
+= -momit-leaf-frame-pointer
152 ifeq (,$(shell $(CXX
) -fsyntax-only
-maltivec
-xc
/dev
/null
2>&1))
153 CXXFLAGS
+= -DHAS_ALTIVEC
154 CFLAGS
+= -DHAS_ALTIVEC
158 ifeq (,$(shell $(CXX
) -fsyntax-only
-mcpu
=power8
-xc
/dev
/null
2>&1))
159 CXXFLAGS
+= -DHAVE_POWER8
160 CFLAGS
+= -DHAVE_POWER8
164 ifeq (,$(shell $(CXX
) -fsyntax-only
-march
=armv8-a
+crc
+crypto
-xc
/dev
/null
2>&1))
165 CXXFLAGS
+= -march
=armv8-a
+crc
+crypto
166 CFLAGS
+= -march
=armv8-a
+crc
+crypto
170 # if we're compiling for shared libraries, add the shared flags
171 ifeq ($(LIB_MODE
),shared
)
172 CXXFLAGS
+= $(PLATFORM_SHARED_CFLAGS
) -DROCKSDB_DLL
173 CFLAGS
+= $(PLATFORM_SHARED_CFLAGS
) -DROCKSDB_DLL
176 # if we're compiling for release, compile without debug code (-DNDEBUG)
177 ifeq ($(DEBUG_LEVEL
),0)
180 ifneq ($(USE_RTTI
), 1)
181 CXXFLAGS
+= -fno-rtti
183 CXXFLAGS
+= -DROCKSDB_USE_RTTI
186 ifneq ($(USE_RTTI
), 0)
187 CXXFLAGS
+= -DROCKSDB_USE_RTTI
189 CXXFLAGS
+= -fno-rtti
192 ifdef ASSERT_STATUS_CHECKED
193 ifeq ($(filter -DROCKSDB_ASSERT_STATUS_CHECKED
,$(OPT
)),)
194 OPT
+= -DROCKSDB_ASSERT_STATUS_CHECKED
198 $(warning Warning
: Compiling in debug mode. Don
't use the resulting binary in production)
201 # `USE_LTO=1` enables link-time optimizations. Among other things, this enables
202 # more devirtualization opportunities and inlining across translation units.
203 # This can save significant overhead introduced by RocksDB's pluggable
204 # interfaces/internal abstractions, like in the iterator hierarchy. It works
205 # better when combined with profile-guided optimizations (not currently
206 # supported natively in Makefile).
209 LDFLAGS
+= -flto
-fuse-linker-plugin
212 #-----------------------------------------------
215 AM_DEFAULT_VERBOSITY ?
= 0
217 AM_V_GEN
= $(am__v_GEN_
$(V
))
218 am__v_GEN_
= $(am__v_GEN_
$(AM_DEFAULT_VERBOSITY
))
219 am__v_GEN_0
= @echo
" GEN " $@
;
221 AM_V_at
= $(am__v_at_
$(V
))
222 am__v_at_
= $(am__v_at_
$(AM_DEFAULT_VERBOSITY
))
226 AM_V_CC
= $(am__v_CC_
$(V
))
227 am__v_CC_
= $(am__v_CC_
$(AM_DEFAULT_VERBOSITY
))
228 am__v_CC_0
= @echo
" CC " $@
;
231 AM_V_CCLD
= $(am__v_CCLD_
$(V
))
232 am__v_CCLD_
= $(am__v_CCLD_
$(AM_DEFAULT_VERBOSITY
))
233 ifneq ($(SKIP_LINK
), 1)
234 am__v_CCLD_0
= @echo
" CCLD " $@
;
237 am__v_CCLD_0
= @echo
" !CCLD " $@
; true skip
238 am__v_CCLD_1
= true skip
240 AM_V_AR
= $(am__v_AR_
$(V
))
241 am__v_AR_
= $(am__v_AR_
$(AM_DEFAULT_VERBOSITY
))
242 am__v_AR_0
= @echo
" AR " $@
;
245 ifdef ROCKSDB_USE_LIBRADOS
246 LIB_SOURCES
+= utilities
/env_librados.
cc
250 AM_LINK
= $(AM_V_CCLD
)$(CXX
) -L.
$(patsubst lib
%.a
, -l
%, $(patsubst lib
%.
$(PLATFORM_SHARED_EXT
), -l
%, $^
)) $(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
) $(COVERAGEFLAGS
)
251 AM_SHARE
= $(AM_V_CCLD
) $(CXX
) $(PLATFORM_SHARED_LDFLAGS
)$@
-L.
$(patsubst lib
%.
$(PLATFORM_SHARED_EXT
), -l
%, $^
) $(LDFLAGS
) -o
$@
253 # Detect what platform we're building on.
254 # Export some common variables that might have been passed as Make variables
255 # instead of environment variables.
256 dummy
:= $(shell (export ROCKSDB_ROOT
="$(CURDIR)"; \
257 export COMPILE_WITH_ASAN
="$(COMPILE_WITH_ASAN)"; \
258 export COMPILE_WITH_TSAN
="$(COMPILE_WITH_TSAN)"; \
259 export COMPILE_WITH_UBSAN
="$(COMPILE_WITH_UBSAN)"; \
260 export PORTABLE
="$(PORTABLE)"; \
261 export ROCKSDB_NO_FBCODE
="$(ROCKSDB_NO_FBCODE)"; \
262 export USE_CLANG
="$(USE_CLANG)"; \
263 "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk"))
264 # this file is generated by the previous line to set build flags and sources
265 include make_config.mk
268 CLEAN_FILES
+= make_config.mk rocksdb.
pc
271 $(info $(shell uname
-a
))
272 $(info $(shell $(CC
) --version
))
273 $(info $(shell $(CXX
) --version
))
276 missing_make_config_paths
:= $(shell \
277 grep
"\./\S*\|/\S*" -o
$(CURDIR
)/make_config.mk | \
279 do
[ -e
$$path ] || echo
$$path; \
282 $(foreach path
, $(missing_make_config_paths
), \
283 $(warning Warning
: $(path
) does not exist
))
285 ifeq ($(PLATFORM
), OS_AIX
)
287 else ifneq ($(PLATFORM
), IOS
)
291 # no debug info for IOS, that will make our library big
295 ifeq ($(PLATFORM
), OS_AIX
)
300 ifeq ($(PLATFORM
), OS_SOLARIS
)
301 PLATFORM_CXXFLAGS
+= -D _GLIBCXX_USE_C99
303 ifneq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
305 CFLAGS
+= -fno-exceptions
306 CXXFLAGS
+= -fno-exceptions
307 # LUA is not supported under ROCKSDB_LITE
311 ifeq ($(LIB_MODE
),shared
)
312 # So that binaries are executable from build location, in addition to install location
313 EXEC_LDFLAGS
+= -Wl
,-rpath
-Wl
,'$$ORIGIN'
316 # ASAN doesn't work well with jemalloc. If we're compiling with ASAN, we should use regular malloc.
317 ifdef COMPILE_WITH_ASAN
319 EXEC_LDFLAGS
+= -fsanitize
=address
320 PLATFORM_CCFLAGS
+= -fsanitize
=address
321 PLATFORM_CXXFLAGS
+= -fsanitize
=address
324 # TSAN doesn't work well with jemalloc. If we're compiling with TSAN, we should use regular malloc.
325 ifdef COMPILE_WITH_TSAN
327 EXEC_LDFLAGS
+= -fsanitize
=thread
328 PLATFORM_CCFLAGS
+= -fsanitize
=thread
-fPIC
-DFOLLY_SANITIZE_THREAD
329 PLATFORM_CXXFLAGS
+= -fsanitize
=thread
-fPIC
-DFOLLY_SANITIZE_THREAD
330 # Turn off -pg when enabling TSAN testing, because that induces
331 # a link failure. TODO: find the root cause
333 # LUA is not supported under TSAN
335 # Limit keys for crash test under TSAN to avoid error:
336 # "ThreadSanitizer: DenseSlabAllocator overflow. Dying."
337 CRASH_TEST_EXT_ARGS
+= --max_key
=1000000
340 # AIX doesn't work with -pg
341 ifeq ($(PLATFORM
), OS_AIX
)
345 # USAN doesn't work well with jemalloc. If we're compiling with USAN, we should use regular malloc.
346 ifdef COMPILE_WITH_UBSAN
348 # Suppress alignment warning because murmurhash relies on casting unaligned
349 # memory to integer. Fixing it may cause performance regression. 3-way crc32
350 # relies on it too, although it can be rewritten to eliminate with minimal
351 # performance regression.
352 EXEC_LDFLAGS
+= -fsanitize
=undefined
-fno-sanitize-recover
=all
353 PLATFORM_CCFLAGS
+= -fsanitize
=undefined
-fno-sanitize-recover
=all -DROCKSDB_UBSAN_RUN
354 PLATFORM_CXXFLAGS
+= -fsanitize
=undefined
-fno-sanitize-recover
=all -DROCKSDB_UBSAN_RUN
357 ifdef ROCKSDB_VALGRIND_RUN
358 PLATFORM_CCFLAGS
+= -DROCKSDB_VALGRIND_RUN
359 PLATFORM_CXXFLAGS
+= -DROCKSDB_VALGRIND_RUN
362 ifndef DISABLE_JEMALLOC
364 PLATFORM_CXXFLAGS
+= -DROCKSDB_JEMALLOC
-DJEMALLOC_NO_DEMANGLE
365 PLATFORM_CCFLAGS
+= -DROCKSDB_JEMALLOC
-DJEMALLOC_NO_DEMANGLE
367 ifdef WITH_JEMALLOC_FLAG
368 PLATFORM_LDFLAGS
+= -ljemalloc
369 JAVA_LDFLAGS
+= -ljemalloc
371 EXEC_LDFLAGS
:= $(JEMALLOC_LIB
) $(EXEC_LDFLAGS
)
372 PLATFORM_CXXFLAGS
+= $(JEMALLOC_INCLUDE
)
373 PLATFORM_CCFLAGS
+= $(JEMALLOC_INCLUDE
)
376 ifndef USE_FOLLY_DISTRIBUTED_MUTEX
377 USE_FOLLY_DISTRIBUTED_MUTEX
=0
380 ifndef GTEST_THROW_ON_FAILURE
381 export GTEST_THROW_ON_FAILURE
=1
383 ifndef GTEST_HAS_EXCEPTIONS
384 export GTEST_HAS_EXCEPTIONS
=1
387 GTEST_DIR
= third-party
/gtest-1.8
.1/fused-src
388 # AIX: pre-defined system headers are surrounded by an extern "C" block
389 ifeq ($(PLATFORM
), OS_AIX
)
390 PLATFORM_CCFLAGS
+= -I
$(GTEST_DIR
)
391 PLATFORM_CXXFLAGS
+= -I
$(GTEST_DIR
)
393 PLATFORM_CCFLAGS
+= -isystem
$(GTEST_DIR
)
394 PLATFORM_CXXFLAGS
+= -isystem
$(GTEST_DIR
)
397 ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX
),1)
398 FOLLY_DIR
= .
/third-party
/folly
399 # AIX: pre-defined system headers are surrounded by an extern "C" block
400 ifeq ($(PLATFORM
), OS_AIX
)
401 PLATFORM_CCFLAGS
+= -I
$(FOLLY_DIR
)
402 PLATFORM_CXXFLAGS
+= -I
$(FOLLY_DIR
)
404 PLATFORM_CCFLAGS
+= -isystem
$(FOLLY_DIR
)
405 PLATFORM_CXXFLAGS
+= -isystem
$(FOLLY_DIR
)
409 ifdef TEST_CACHE_LINE_SIZE
410 PLATFORM_CCFLAGS
+= -DTEST_CACHE_LINE_SIZE
=$(TEST_CACHE_LINE_SIZE
)
411 PLATFORM_CXXFLAGS
+= -DTEST_CACHE_LINE_SIZE
=$(TEST_CACHE_LINE_SIZE
)
413 ifdef TEST_UINT128_COMPAT
414 PLATFORM_CCFLAGS
+= -DTEST_UINT128_COMPAT
=1
415 PLATFORM_CXXFLAGS
+= -DTEST_UINT128_COMPAT
=1
417 ifdef ROCKSDB_MODIFY_NPHASH
418 PLATFORM_CCFLAGS
+= -DROCKSDB_MODIFY_NPHASH
=1
419 PLATFORM_CXXFLAGS
+= -DROCKSDB_MODIFY_NPHASH
=1
422 # This (the first rule) must depend on "all".
425 WARNING_FLAGS
= -W
-Wextra
-Wall
-Wsign-compare
-Wshadow \
429 # Used by some teams in Facebook
430 WARNING_FLAGS
+= -Wshift-sign-overflow
433 ifeq ($(PLATFORM
), OS_OPENBSD
)
434 WARNING_FLAGS
+= -Wno-unused-lambda-capture
437 ifndef DISABLE_WARNING_AS_ERROR
438 WARNING_FLAGS
+= -Werror
445 LUA_INCLUDE
=$(LUA_PATH
)/include
448 LUA_INCLUDE_FILE
=$(LUA_INCLUDE
)/lualib.h
450 ifeq ("$(wildcard $(LUA_INCLUDE_FILE))", "")
451 # LUA_INCLUDE_FILE does not exist
452 $(error Cannot find lualib.h under
$(LUA_INCLUDE
). Try to specify both LUA_PATH and LUA_INCLUDE manually
)
454 LUA_FLAGS
= -I
$(LUA_INCLUDE
) -DLUA
-DLUA_COMPAT_ALL
455 CFLAGS
+= $(LUA_FLAGS
)
456 CXXFLAGS
+= $(LUA_FLAGS
)
459 LUA_LIB
= $(LUA_PATH
)/lib
/liblua.a
461 ifeq ("$(wildcard $(LUA_LIB))", "") # LUA_LIB does not exist
462 $(error
$(LUA_LIB
) does not exist. Try to specify both LUA_PATH and LUA_LIB manually
)
464 EXEC_LDFLAGS
+= $(LUA_LIB
)
468 ifeq ($(NO_THREEWAY_CRC32C
), 1)
469 CXXFLAGS
+= -DNO_THREEWAY_CRC32C
472 CFLAGS
+= $(WARNING_FLAGS
) -I.
-I.
/include $(PLATFORM_CCFLAGS
) $(OPT
)
473 CXXFLAGS
+= $(WARNING_FLAGS
) -I.
-I.
/include $(PLATFORM_CXXFLAGS
) $(OPT
) -Woverloaded-virtual
-Wnon-virtual-dtor
-Wno-missing-field-initializers
475 LDFLAGS
+= $(PLATFORM_LDFLAGS
)
477 # If NO_UPDATE_BUILD_VERSION is set we don't update util/build_version.cc, but
478 # the file needs to already exist or else the build will fail
479 ifndef NO_UPDATE_BUILD_VERSION
480 date
:= $(shell date
+%F
)
482 git_sha
:= $(FORCE_GIT_SHA
)
484 git_sha
:= $(shell git rev-parse HEAD
2>/dev
/null
)
486 gen_build_version
= sed
-e s
/@@GIT_SHA@@
/$(git_sha
)/ -e s
/@@GIT_DATE_TIME@@
/$(date
)/ util
/build_version.
cc.in
488 # Record the version of the source that we are compiling.
489 # We keep a record of the git revision in this file. It is then built
490 # as a regular source file as part of the compilation process.
491 # One can run "strings executable_filename | grep _build_" to find
492 # the version of the source that we used to build the executable file.
494 util
/build_version.
cc: FORCE
495 $(AM_V_GEN
)rm -f
$@
-t
496 $(AM_V_at
)$(gen_build_version
) > $@
-t
497 $(AM_V_at
)if
test -f
$@
; then \
498 cmp
-s
$@
-t
$@
&& rm -f
$@
-t || mv
-f
$@
-t
$@
; \
499 else mv
-f
$@
-t
$@
; fi
503 LIB_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(LIB_SOURCES
))
504 ifeq ($(HAVE_POWER8
),1)
505 LIB_OBJECTS
+= $(patsubst %.c
, $(OBJ_DIR
)/%.o
, $(LIB_SOURCES_C
))
506 LIB_OBJECTS
+= $(patsubst %.S
, $(OBJ_DIR
)/%.o
, $(LIB_SOURCES_ASM
))
509 ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX
),1)
510 LIB_OBJECTS
+= $(patsubst %.
cpp, $(OBJ_DIR
)/%.o
, $(FOLLY_SOURCES
))
513 GTEST
= $(OBJ_DIR
)/$(GTEST_DIR
)/gtest
/gtest-all.o
514 TESTUTIL
= $(OBJ_DIR
)/test_util
/testutil.o
515 TESTHARNESS
= $(OBJ_DIR
)/test_util
/testharness.o
$(TESTUTIL
) $(GTEST
)
517 VALGRIND_VER
:= $(join $(VALGRIND_VER
),valgrind
)
519 VALGRIND_OPTS
= --error-exitcode
=$(VALGRIND_ERROR
) --leak-check
=full
521 TEST_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(TEST_LIB_SOURCES
) $(MOCK_LIB_SOURCES
)) $(GTEST
)
522 BENCH_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(BENCH_LIB_SOURCES
))
523 TOOL_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(TOOL_LIB_SOURCES
))
524 ANALYZE_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(ANALYZER_LIB_SOURCES
))
525 STRESS_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(STRESS_LIB_SOURCES
))
527 ALL_SOURCES
= $(LIB_SOURCES
) $(TEST_LIB_SOURCES
) $(MOCK_LIB_SOURCES
) $(GTEST_DIR
)/gtest
/gtest-all.
cc
528 ALL_SOURCES
+= $(TOOL_LIB_SOURCES
) $(BENCH_LIB_SOURCES
) $(ANALYZER_LIB_SOURCES
) $(STRESS_LIB_SOURCES
)
529 ALL_SOURCES
+= $(TEST_MAIN_SOURCES
) $(TOOL_MAIN_SOURCES
) $(BENCH_MAIN_SOURCES
)
531 TESTS
= $(patsubst %.
cc, %, $(notdir $(TEST_MAIN_SOURCES
)))
532 TESTS
+= $(patsubst %.c
, %, $(notdir $(TEST_MAIN_SOURCES_C
)))
534 ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX
),1)
535 TESTS
+= folly_synchronization_distributed_mutex_test
536 ALL_SOURCES
+= third-party
/folly
/folly
/synchronization
/test/DistributedMutexTest.
cc
541 db_bloom_filter_test \
542 db_compaction_filter_test \
544 db_merge_operator_test \
548 db_universal_compaction_test \
551 external_sst_file_test \
552 import_column_family_test \
553 fault_injection_test \
554 file_reader_writer_test \
555 inlineskiplist_test \
556 manual_compaction_test \
557 persistent_cache_test \
560 point_lock_manager_test \
561 write_prepared_transaction_test \
562 write_unprepared_transaction_test \
564 ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX
),1)
565 TESTS
+= folly_synchronization_distributed_mutex_test
566 PARALLEL_TEST
+= folly_synchronization_distributed_mutex_test
567 TESTS_PASSING_ASC
= folly_synchronization_distributed_mutex_test
570 # options_settable_test doesn't pass with UBSAN as we use hack in the test
571 ifdef COMPILE_WITH_UBSAN
572 TESTS
:= $(shell echo
$(TESTS
) | sed
's/\boptions_settable_test\b//g')
574 ifdef ASSERT_STATUS_CHECKED
575 # This is a new check for which we will add support incrementally. This
576 # list can be removed once support is fully added.
577 TESTS_PASSING_ASC
= \
582 blob_file_addition_test \
583 blob_file_builder_test \
584 blob_file_cache_test \
585 blob_file_garbage_test \
586 blob_file_reader_test \
588 cassandra_format_test \
589 cassandra_row_merge_test \
590 cassandra_serialize_test \
598 db_with_timestamp_basic_test \
599 db_with_timestamp_compaction_test \
611 error_handler_fs_test \
612 auto_roll_logger_test \
619 inlineskiplist_test \
621 iostats_context_test \
623 memkind_kmem_allocator_test \
626 object_registry_test \
628 plain_table_db_test \
632 options_settable_test \
635 range_del_aggregator_test \
636 sst_file_reader_test \
637 range_tombstone_fragmenter_test \
638 repeatable_thread_test \
646 trace_analyzer_test \
652 persistent_cache_test \
653 util_merge_operators_test \
654 block_cache_trace_analyzer_test \
655 block_cache_tracer_test \
656 cache_simulator_test \
658 version_builder_test \
661 write_controller_test \
662 compaction_iterator_test \
663 compaction_job_test \
664 compaction_job_stats_test \
669 block_based_filter_block_test \
671 full_filter_block_test \
672 partitioned_filter_block_test \
674 file_reader_writer_test \
676 db_universal_compaction_test \
677 import_column_family_test \
681 ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX
),1)
682 TESTS_PASSING_ASC
+= folly_synchronization_distributed_mutex_test
685 # Enable building all unit tests, but use check_some to run only tests
686 # known to pass ASC (ASSERT_STATUS_CHECKED)
687 ROCKSDBTESTS_SUBSET ?
= $(TESTS_PASSING_ASC
)
688 # Alternate: only build unit tests known to pass ASC, and run them
690 #TESTS := $(filter $(TESTS_PASSING_ASC),$(TESTS))
691 #PARALLEL_TEST := $(filter $(TESTS_PASSING_ASC),$(PARALLEL_TEST))
693 ROCKSDBTESTS_SUBSET ?
= $(TESTS
)
695 # Not necessarily well thought out or up-to-date, but matches old list
696 TESTS_PLATFORM_DEPENDENT
:= \
699 db_with_timestamp_basic_test \
702 external_sst_file_basic_test \
703 auto_roll_logger_test \
710 inlineskiplist_test \
722 iostats_context_test \
725 # Sort ROCKSDBTESTS_SUBSET for filtering, except db_test is special (expensive)
726 # so is placed first (out-of-order)
727 ROCKSDBTESTS_SUBSET
:= $(filter db_test
, $(ROCKSDBTESTS_SUBSET
)) $(sort $(filter-out db_test
, $(ROCKSDBTESTS_SUBSET
)))
729 ifdef ROCKSDBTESTS_START
730 ROCKSDBTESTS_SUBSET
:= $(shell echo
$(ROCKSDBTESTS_SUBSET
) | sed
's/^.*$(ROCKSDBTESTS_START)/$(ROCKSDBTESTS_START)/')
733 ifdef ROCKSDBTESTS_END
734 ROCKSDBTESTS_SUBSET
:= $(shell echo
$(ROCKSDBTESTS_SUBSET
) | sed
's/$(ROCKSDBTESTS_END).*//')
737 ifeq ($(ROCKSDBTESTS_PLATFORM_DEPENDENT
), only
)
738 ROCKSDBTESTS_SUBSET
:= $(filter $(TESTS_PLATFORM_DEPENDENT
), $(ROCKSDBTESTS_SUBSET
))
739 else ifeq ($(ROCKSDBTESTS_PLATFORM_DEPENDENT
), exclude
)
740 ROCKSDBTESTS_SUBSET
:= $(filter-out $(TESTS_PLATFORM_DEPENDENT
), $(ROCKSDBTESTS_SUBSET
))
743 # bench_tool_analyer main is in bench_tool_analyzer_tool, or this would be simpler...
744 TOOLS
= $(patsubst %.
cc, %, $(notdir $(patsubst %_tool.
cc, %.
cc, $(TOOLS_MAIN_SOURCES
))))
747 librocksdb_env_basic_test.a
749 # TODO: add back forward_iterator_bench, after making it build in all environemnts.
750 BENCHMARKS
= $(patsubst %.
cc, %, $(notdir $(BENCH_MAIN_SOURCES
)))
752 # if user didn't config LIBNAME, set the default
755 # we should only run rocksdb in production with DEBUG_LEVEL 0
756 ifneq ($(DEBUG_LEVEL
),0)
760 STATIC_LIBRARY
= ${LIBNAME}$(LIBDEBUG
).a
761 STATIC_TEST_LIBRARY
= ${LIBNAME}_test
$(LIBDEBUG
).a
762 STATIC_TOOLS_LIBRARY
= ${LIBNAME}_tools
$(LIBDEBUG
).a
763 STATIC_STRESS_LIBRARY
= ${LIBNAME}_stress
$(LIBDEBUG
).a
765 ALL_STATIC_LIBS
= $(STATIC_LIBRARY
) $(STATIC_TEST_LIBRARY
) $(STATIC_TOOLS_LIBRARY
) $(STATIC_STRESS_LIBRARY
)
767 SHARED_TEST_LIBRARY
= ${LIBNAME}_test
$(LIBDEBUG
).
$(PLATFORM_SHARED_EXT
)
768 SHARED_TOOLS_LIBRARY
= ${LIBNAME}_tools
$(LIBDEBUG
).
$(PLATFORM_SHARED_EXT
)
769 SHARED_STRESS_LIBRARY
= ${LIBNAME}_stress
$(LIBDEBUG
).
$(PLATFORM_SHARED_EXT
)
771 ALL_SHARED_LIBS
= $(SHARED1
) $(SHARED2
) $(SHARED3
) $(SHARED4
) $(SHARED_TEST_LIBRARY
) $(SHARED_TOOLS_LIBRARY
) $(SHARED_STRESS_LIBRARY
)
773 ifeq ($(LIB_MODE
),shared
)
775 TEST_LIBRARY
=$(SHARED_TEST_LIBRARY
)
776 TOOLS_LIBRARY
=$(SHARED_TOOLS_LIBRARY
)
777 STRESS_LIBRARY
=$(SHARED_STRESS_LIBRARY
)
778 CLOUD_LIBRARY
=$(SHARED_CLOUD_LIBRARY
)
780 LIBRARY
=$(STATIC_LIBRARY
)
781 TEST_LIBRARY
=$(STATIC_TEST_LIBRARY
)
782 TOOLS_LIBRARY
=$(STATIC_TOOLS_LIBRARY
)
783 STRESS_LIBRARY
=$(STATIC_STRESS_LIBRARY
)
786 ROCKSDB_MAJOR
= $(shell egrep
"ROCKSDB_MAJOR.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
787 ROCKSDB_MINOR
= $(shell egrep
"ROCKSDB_MINOR.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
788 ROCKSDB_PATCH
= $(shell egrep
"ROCKSDB_PATCH.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
792 #-----------------------------------------------
793 # Create platform independent shared libraries.
794 #-----------------------------------------------
795 ifneq ($(PLATFORM_SHARED_EXT
),)
797 ifneq ($(PLATFORM_SHARED_VERSIONED
),true
)
798 SHARED1
= ${LIBNAME}$(LIBDEBUG
).
$(PLATFORM_SHARED_EXT
)
804 SHARED_MAJOR
= $(ROCKSDB_MAJOR
)
805 SHARED_MINOR
= $(ROCKSDB_MINOR
)
806 SHARED_PATCH
= $(ROCKSDB_PATCH
)
807 SHARED1
= ${LIBNAME}.
$(PLATFORM_SHARED_EXT
)
808 ifeq ($(PLATFORM
), OS_MACOSX
)
809 SHARED_OSX
= $(LIBNAME
)$(LIBDEBUG
).
$(SHARED_MAJOR
)
810 SHARED2
= $(SHARED_OSX
).
$(PLATFORM_SHARED_EXT
)
811 SHARED3
= $(SHARED_OSX
).
$(SHARED_MINOR
).
$(PLATFORM_SHARED_EXT
)
812 SHARED4
= $(SHARED_OSX
).
$(SHARED_MINOR
).
$(SHARED_PATCH
).
$(PLATFORM_SHARED_EXT
)
814 SHARED2
= $(SHARED1
).
$(SHARED_MAJOR
)
815 SHARED3
= $(SHARED1
).
$(SHARED_MAJOR
).
$(SHARED_MINOR
)
816 SHARED4
= $(SHARED1
).
$(SHARED_MAJOR
).
$(SHARED_MINOR
).
$(SHARED_PATCH
)
818 SHARED
= $(SHARED1
) $(SHARED2
) $(SHARED3
) $(SHARED4
)
819 $(SHARED1
): $(SHARED4
) $(SHARED2
)
820 ln
-fs
$(SHARED4
) $(SHARED1
)
821 $(SHARED2
): $(SHARED4
) $(SHARED3
)
822 ln
-fs
$(SHARED4
) $(SHARED2
)
823 $(SHARED3
): $(SHARED4
)
824 ln
-fs
$(SHARED4
) $(SHARED3
)
826 endif # PLATFORM_SHARED_VERSIONED
827 $(SHARED4
): $(LIB_OBJECTS
)
828 $(AM_V_CCLD
) $(CXX
) $(PLATFORM_SHARED_LDFLAGS
)$(SHARED3
) $(LIB_OBJECTS
) $(LDFLAGS
) -o
$@
829 endif # PLATFORM_SHARED_EXT
831 .PHONY
: blackbox_crash_test
check clean coverage crash_test ldb_tests package \
832 release
tags tags0 valgrind_check whitebox_crash_test format static_lib shared_lib
all \
833 dbg rocksdbjavastatic rocksdbjava gen-pc
install install-static install-shared
uninstall \
834 analyze tools tools_lib \
835 blackbox_crash_test_with_atomic_flush whitebox_crash_test_with_atomic_flush \
836 blackbox_crash_test_with_txn whitebox_crash_test_with_txn \
837 blackbox_crash_test_with_best_efforts_recovery
840 all: $(LIBRARY
) $(BENCHMARKS
) tools tools_lib test_libs
$(TESTS
)
842 all_but_some_tests
: $(LIBRARY
) $(BENCHMARKS
) tools tools_lib test_libs
$(ROCKSDBTESTS_SUBSET
)
844 static_lib
: $(STATIC_LIBRARY
)
846 shared_lib
: $(SHARED
)
848 stress_lib
: $(STRESS_LIBRARY
)
852 tools_lib
: $(TOOLS_LIBRARY
)
854 test_libs
: $(TEST_LIBS
)
856 benchmarks
: $(BENCHMARKS
)
858 dbg
: $(LIBRARY
) $(BENCHMARKS
) tools
$(TESTS
)
860 # creates library and programs
862 LIB_MODE
=$(LIB_MODE
) DEBUG_LEVEL
=0 $(MAKE
) $(LIBRARY
) tools db_bench
865 COVERAGEFLAGS
="-fprofile-arcs -ftest-coverage" LDFLAGS
+="-lgcov" $(MAKE
) J
=1 all check
866 cd coverage
&& .
/coverage_test.sh
867 # Delete intermediate files
868 $(FIND
) .
-type f
-regex
".*\.\(\(gcda\)\|\(gcno\)\)" -exec
rm -f
{} \
;
870 ifneq (,$(filter check parallel_check
,$(MAKECMDGOALS
)),)
871 # Use /dev/shm if it has the sticky bit set (otherwise, /tmp),
872 # and create a randomly-named rocksdb.XXXX directory therein.
873 # We'll use that directory in the "make check" rules.
875 TMPDIR
:= $(shell echo
$${TMPDIR
:-/tmp
})
876 TMPD
:= $(shell f
=/dev
/shm
; test -k
$$f || f
=$(TMPDIR
); \
877 perl
-le
'use File::Temp "tempdir";' \
878 -e
'print tempdir("'$$f'/rocksdb.XXXX", CLEANUP => 0)')
882 # Run all tests in parallel, accumulating per-test logs in t/log-*.
884 # Each t/run-* file is a tiny generated bourne shell script that invokes one of
885 # sub-tests. Why use a file for this? Because that makes the invocation of
886 # parallel below simpler, which in turn makes the parsing of parallel's
887 # LOG simpler (the latter is for live monitoring as parallel
890 # Test names are extracted by running tests with --gtest_list_tests.
891 # This filter removes the "#"-introduced comments, and expands to
892 # fully-qualified names by changing input like this:
897 # MultiThreaded/MultiThreadedDBTest.
898 # MultiThreaded/0 # GetParam() = 0
899 # MultiThreaded/1 # GetParam() = 1
904 # DBTest.WriteEmptyBatch
905 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/0
906 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/1
909 parallel_tests
= $(patsubst %,parallel_
%,$(PARALLEL_TEST
))
910 .PHONY
: gen_parallel_tests
$(parallel_tests
)
911 $(parallel_tests
): $(PARALLEL_TEST
)
912 $(AM_V_at
)TEST_BINARY
=$(patsubst parallel_
%,%,$@
); \
914 ./$$TEST_BINARY --gtest_list_tests \
917 -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \
918 -e 'print qq! $$p$$2!'`; \
919 for TEST_NAME in
$$TEST_NAMES; do \
920 TEST_SCRIPT
=t
/run-
$$TEST_BINARY-$${TEST_NAME
//\
//-}; \
921 echo
" GEN " $$TEST_SCRIPT; \
924 "d=\$(TMPD)$$TEST_SCRIPT" \
926 "TEST_TMPDIR=\$$d $(DRIVER) ./$$TEST_BINARY --gtest_filter=$$TEST_NAME" \
928 chmod a
=rx
$$TEST_SCRIPT; \
933 $(AM_V_at
)$(FIND
) t
-type f
-name
'run-*' -exec
rm -f
{} \
;
934 $(MAKE
) $(parallel_tests
)
936 # Reorder input lines (which are one per test) so that the
937 # longest-running tests appear first in the output.
938 # Do this by prefixing each selected name with its duration,
939 # sort the resulting names, and remove the leading numbers.
940 # FIXME: the "100" we prepend is a fake time, for now.
941 # FIXME: squirrel away timings from each run and use them
942 # (when present) on subsequent runs to order these tests.
944 # Without this reordering, these two tests would happen to start only
945 # after almost all other tests had completed, thus adding 100 seconds
946 # to the duration of parallel "make check". That's the difference
947 # between 4 minutes (old) and 2m20s (new).
949 # 152.120 PASS t/DBTest.FileCreationRandomFailure
950 # 107.816 PASS t/DBTest.EncodeDecompressedBlockSizeTest
953 ^.
*SnapshotConcurrentAccessTest.
*$$|^t
/run-table_test-HarnessTest.Randomized
$$|^t
/run-db_test-.
*(?
:FileCreationRandomFailure|EncodeDecompressedBlockSizeTest
)$$|^.
*RecoverFromCorruptedWALWithoutFlush
$$
954 prioritize_long_running_tests
= \
955 perl
-pe
's,($(slow_test_regexp)),100 $$1,' \
957 | sed
's/^[.0-9]* //'
960 # Run with "make J=1 check" to disable parallelism in "make check".
961 # Run with "make J=200% check" to run two parallel jobs per core.
962 # The default is to run one job per core (J=100%).
963 # See "man parallel" for its "-j ..." option.
966 # Use this regexp to select the subset of tests whose names match.
968 EXCLUDE_TESTS_REGEX ?
= "^$"
970 ifeq ($(PRINT_PARALLEL_OUTPUTS
), 1)
973 parallel_com
= '{} >& t/log-{/}'
978 $(AM_V_GEN
)export TEST_TMPDIR
=$(TMPD
); \
980 'To monitor subtest <duration,pass/fail,name>,' \
981 ' run "make watch-log" in a separate window' ''; \
982 test -t
1 && eta
=--eta || eta
=; \
984 printf
'./%s\n' $(filter-out $(PARALLEL_TEST
),$(TESTS
)); \
985 find t
-name
'run-*' -print; \
987 |
$(prioritize_long_running_tests
) \
988 | grep
-E
'$(tests-regexp)' \
989 | grep
-E
-v
'$(EXCLUDE_TESTS_REGEX)' \
990 | build_tools
/gnu_parallel
-j
$(J
) --plain
--joblog
=LOG
$$eta --gnu
$(parallel_com
) ; \
991 parallel_retcode
=$$?
; \
992 awk
'{ if ($$7 != 0 || $$8 != 0) { if ($$7 == "Exitval") { h = $$0; } else { if (!f) print h; print; f = 1 } } } END { if(f) exit 1; }' < LOG
; \
994 if
[ $$parallel_retcode -ne
0 ] ||
[ $$awk_retcode -ne
0 ] ; then exit
1 ; fi
996 valgrind-exclude-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
998 .PHONY
: valgrind_check_0
1000 $(AM_V_GEN
)export TEST_TMPDIR
=$(TMPD
); \
1002 'To monitor subtest <duration,pass/fail,name>,' \
1003 ' run "make watch-log" in a separate window' ''; \
1004 test -t
1 && eta
=--eta || eta
=; \
1006 printf
'./%s\n' $(filter-out $(PARALLEL_TEST
) %skiplist_test options_settable_test
, $(TESTS
)); \
1007 find t
-name
'run-*' -print; \
1009 |
$(prioritize_long_running_tests
) \
1010 | grep
-E
'$(tests-regexp)' \
1011 | grep
-E
-v
'$(valgrind-exclude-regexp)' \
1012 | build_tools
/gnu_parallel
-j
$(J
) --plain
--joblog
=LOG
$$eta --gnu \
1013 '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) ' \
1014 '>& t/valgrind_log-{/}'
1016 CLEAN_FILES
+= t LOG
$(TMPD
)
1018 # When running parallel "make check", you can monitor its progress
1019 # from another window.
1020 # Run "make watch_LOG" to show the duration,PASS/FAIL,name of parallel
1021 # tests as they are being run. We sort them so that longer-running ones
1022 # appear at the top of the list and any failing tests remain at the top
1023 # regardless of their duration. As with any use of "watch", hit ^C to
1026 $(WATCH
) --interval
=0 'sort -k7,7nr -k4,4gr LOG|$(quoted_perl_command)'
1029 bash
-c
'$(quoted_perl_command)' < LOG
1031 # If J != 1 and GNU parallel is installed, run the tests in parallel,
1032 # via the check_0 rule above. Otherwise, run them sequentially.
1034 $(MAKE
) gen_parallel_tests
1035 $(AM_V_GEN
)if
test "$(J)" != 1 \
1036 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
1037 grep
-q
'GNU Parallel'; \
1039 $(MAKE
) T
="$$t" TMPD
=$(TMPD
) check_0
; \
1041 for t in
$(TESTS
); do \
1042 echo
"===== Running $$t (`date`)"; .
/$$t || exit
1; done
; \
1045 ifneq ($(PLATFORM
), OS_AIX
)
1046 $(PYTHON
) tools
/check_all_python.py
1047 ifeq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
1048 ifndef ASSERT_STATUS_CHECKED
# not yet working with these tests
1049 $(PYTHON
) tools
/ldb_test.py
1050 sh tools
/rocksdb_dump_test.sh
1054 ifndef SKIP_FORMAT_BUCK_CHECKS
1055 $(MAKE
) check-format
1056 $(MAKE
) check-buck-targets
1059 # TODO add ldb_tests
1060 check_some
: $(ROCKSDBTESTS_SUBSET
)
1061 for t in
$(ROCKSDBTESTS_SUBSET
); do echo
"===== Running $$t (`date`)"; .
/$$t || exit
1; done
1065 $(PYTHON
) tools
/ldb_test.py
1067 crash_test
: whitebox_crash_test blackbox_crash_test
1069 crash_test_with_atomic_flush
: whitebox_crash_test_with_atomic_flush blackbox_crash_test_with_atomic_flush
1071 crash_test_with_txn
: whitebox_crash_test_with_txn blackbox_crash_test_with_txn
1073 crash_test_with_best_efforts_recovery
: blackbox_crash_test_with_best_efforts_recovery
1075 blackbox_crash_test
: db_stress
1076 $(PYTHON
) -u tools
/db_crashtest.py
--simple blackbox
$(CRASH_TEST_EXT_ARGS
)
1077 $(PYTHON
) -u tools
/db_crashtest.py blackbox
$(CRASH_TEST_EXT_ARGS
)
1079 blackbox_crash_test_with_atomic_flush
: db_stress
1080 $(PYTHON
) -u tools
/db_crashtest.py
--cf_consistency blackbox
$(CRASH_TEST_EXT_ARGS
)
1082 blackbox_crash_test_with_txn
: db_stress
1083 $(PYTHON
) -u tools
/db_crashtest.py
--txn blackbox
$(CRASH_TEST_EXT_ARGS
)
1085 blackbox_crash_test_with_best_efforts_recovery
: db_stress
1086 $(PYTHON
) -u tools
/db_crashtest.py
--test_best_efforts_recovery blackbox
$(CRASH_TEST_EXT_ARGS
)
1088 ifeq ($(CRASH_TEST_KILL_ODD
),)
1089 CRASH_TEST_KILL_ODD
=888887
1092 whitebox_crash_test
: db_stress
1093 $(PYTHON
) -u tools
/db_crashtest.py
--simple whitebox
--random_kill_odd \
1094 $(CRASH_TEST_KILL_ODD
) $(CRASH_TEST_EXT_ARGS
)
1095 $(PYTHON
) -u tools
/db_crashtest.py whitebox
--random_kill_odd \
1096 $(CRASH_TEST_KILL_ODD
) $(CRASH_TEST_EXT_ARGS
)
1098 whitebox_crash_test_with_atomic_flush
: db_stress
1099 $(PYTHON
) -u tools
/db_crashtest.py
--cf_consistency whitebox
--random_kill_odd \
1100 $(CRASH_TEST_KILL_ODD
) $(CRASH_TEST_EXT_ARGS
)
1102 whitebox_crash_test_with_txn
: db_stress
1103 $(PYTHON
) -u tools
/db_crashtest.py
--txn whitebox
--random_kill_odd \
1104 $(CRASH_TEST_KILL_ODD
) $(CRASH_TEST_EXT_ARGS
)
1107 COMPILE_WITH_ASAN
=1 $(MAKE
) check -j32
1110 asan_crash_test
: clean
1111 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test
1114 whitebox_asan_crash_test
: clean
1115 COMPILE_WITH_ASAN
=1 $(MAKE
) whitebox_crash_test
1118 blackbox_asan_crash_test
: clean
1119 COMPILE_WITH_ASAN
=1 $(MAKE
) blackbox_crash_test
1122 asan_crash_test_with_atomic_flush
: clean
1123 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test_with_atomic_flush
1126 asan_crash_test_with_txn
: clean
1127 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test_with_txn
1130 asan_crash_test_with_best_efforts_recovery
: clean
1131 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test_with_best_efforts_recovery
1135 COMPILE_WITH_UBSAN
=1 $(MAKE
) check -j32
1138 ubsan_crash_test
: clean
1139 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test
1142 whitebox_ubsan_crash_test
: clean
1143 COMPILE_WITH_UBSAN
=1 $(MAKE
) whitebox_crash_test
1146 blackbox_ubsan_crash_test
: clean
1147 COMPILE_WITH_UBSAN
=1 $(MAKE
) blackbox_crash_test
1150 ubsan_crash_test_with_atomic_flush
: clean
1151 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test_with_atomic_flush
1154 ubsan_crash_test_with_txn
: clean
1155 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test_with_txn
1158 ubsan_crash_test_with_best_efforts_recovery
: clean
1159 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test_with_best_efforts_recovery
1163 ROCKSDB_VALGRIND_RUN
=1 DISABLE_JEMALLOC
=1 $(MAKE
) valgrind_check
1166 ROCKSDB_VALGRIND_RUN
=1 DISABLE_JEMALLOC
=1 $(MAKE
) valgrind_check_some
1168 valgrind_check
: $(TESTS
)
1169 $(MAKE
) DRIVER
="$(VALGRIND_VER) $(VALGRIND_OPTS)" gen_parallel_tests
1170 $(AM_V_GEN
)if
test "$(J)" != 1 \
1171 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
1172 grep
-q
'GNU Parallel'; \
1174 $(MAKE
) TMPD
=$(TMPD
) \
1175 DRIVER
="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0
; \
1177 for t in
$(filter-out %skiplist_test options_settable_test
,$(TESTS
)); do \
1178 $(VALGRIND_VER
) $(VALGRIND_OPTS
) .
/$$t; \
1180 if
[ $$ret_code -ne
0 ]; then \
1186 valgrind_check_some
: $(ROCKSDBTESTS_SUBSET
)
1187 for t in
$(ROCKSDBTESTS_SUBSET
); do \
1188 $(VALGRIND_VER
) $(VALGRIND_OPTS
) .
/$$t; \
1190 if
[ $$ret_code -ne
0 ]; then \
1195 ifneq ($(PAR_TEST
),)
1198 for t in
$(PAR_TEST
); do \
1199 echo
"===== Running $$t in parallel $(NUM_PAR) (`date`)";\
1200 if
[ $(db_test
) -eq
1 ]; then \
1201 seq
$(J
) | v
="$$t" build_tools
/gnu_parallel
--gnu
--plain
's=$(TMPD)/rdb-{}; export TEST_TMPDIR=$$s;' \
1202 'timeout 2m ./db_test --gtest_filter=$$v >> $$s/log-{} 2>1'; \
1204 seq
$(J
) | v
="./$$t" build_tools
/gnu_parallel
--gnu
--plain
's=$(TMPD)/rdb-{};' \
1205 'export TEST_TMPDIR=$$s; timeout 10m $$v >> $$s/log-{} 2>1'; \
1208 if
[ $$ret_code -ne
0 ]; then \
1209 ret_bad
=$$ret_code; \
1210 echo
$$t exited with
$$ret_code; \
1217 .
/db_test
--gtest_list_tests \
1220 -e
'/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \
1221 -e
'print qq! $$p$$2!'
1223 parallel_check
: $(TESTS
)
1224 $(AM_V_GEN
)if
test "$(J)" > 1 \
1225 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
1226 grep
-q
'GNU Parallel'; \
1228 echo Running in parallel
$(J
); \
1230 echo
"Need to have GNU Parallel and J > 1"; exit
1; \
1234 echo Test Dir
: $(TMPD
); \
1235 seq
$(J
) | build_tools
/gnu_parallel
--gnu
--plain
's=$(TMPD)/rdb-{}; rm -rf $$s; mkdir $$s'; \
1236 $(MAKE
) PAR_TEST
="$(shell $(test_names))" TMPD
=$(TMPD
) \
1237 J
=$(J
) db_test
=1 parloop
; \
1238 $(MAKE
) PAR_TEST
="$(filter-out db_test, $(TESTS))" \
1239 TMPD
=$(TMPD
) J
=$(J
) db_test
=0 parloop
;
1242 USE_CLANG
=1 $(MAKE
) analyze_incremental
1244 analyze_incremental
:
1245 $(CLANG_SCAN_BUILD
) --use-analyzer
=$(CLANG_ANALYZER
) \
1246 --use-c
++=$(CXX
) --use-cc
=$(CC
) --status-bugs \
1247 -o
$(CURDIR
)/scan_build_report \
1250 CLEAN_FILES
+= unity.
cc
1253 for source_file in
$(LIB_SOURCES
); do \
1254 echo
"#include \"$$source_file\"" >> $@
-t
; \
1259 unity.a
: $(OBJ_DIR
)/unity.o
1261 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$(OBJ_DIR
)/unity.o
1264 # try compiling db_test with unity
1265 unity_test
: $(OBJ_DIR
)/db
/db_basic_test.o
$(OBJ_DIR
)/db
/db_test_util.o
$(TEST_OBJECTS
) $(TOOL_OBJECTS
) unity.a
1269 rocksdb.h rocksdb.
cc: build_tools
/amalgamate.py Makefile
$(LIB_SOURCES
) unity.
cc
1270 build_tools
/amalgamate.py
-I.
-i.
/include unity.
cc -x
include/rocksdb
/c.h
-H rocksdb.h
-o rocksdb.
cc
1272 clean: clean-ext-libraries-all clean-rocks clean-rocksjava
1274 clean-not-downloaded
: clean-ext-libraries-bin clean-rocks clean-not-downloaded-rocksjava
1277 echo shared
=$(ALL_SHARED_LIBS
)
1278 echo static
=$(ALL_STATIC_LIBS
)
1279 rm -f
$(BENCHMARKS
) $(TOOLS
) $(TESTS
) $(PARALLEL_TEST
) $(ALL_STATIC_LIBS
) $(ALL_SHARED_LIBS
)
1280 rm -rf
$(CLEAN_FILES
) ios-x86 ios-arm scan_build_report
1281 $(FIND
) .
-name
"*.[oda]" -exec
rm -f
{} \
;
1282 $(FIND
) .
-type f
-regex
".*\.\(\(gcda\)\|\(gcno\)\)" -exec
rm -f
{} \
;
1286 cd java
&& $(MAKE
) clean
1288 clean-not-downloaded-rocksjava
:
1289 cd java
&& $(MAKE
) clean-not-downloaded
1291 clean-ext-libraries-all
:
1292 rm -rf bzip2
* snappy
* zlib
* lz4
* zstd
*
1294 clean-ext-libraries-bin
:
1295 find .
-maxdepth
1 -type d \
( -name bzip2\
* -or
-name snappy\
* -or
-name zlib\
* -or
-name lz4\
* -or
-name zstd\
* \
) -prune
-exec
rm -rf
{} \
;
1299 cscope
-b
`$(FIND) . -name '*.cc'` `$(FIND) . -name '*.h'` `$(FIND) . -name '*.c'`
1300 ctags
-e
-R
-o etags
*
1304 cscope
-b
`$(FIND) . -name '*.cc' -and ! -name '*_test.cc'` \
1305 `$(FIND) . -name '*.c' -and ! -name '*_test.c'` \
1306 `$(FIND) . -name '*.h' -and ! -name '*_test.h'`
1307 ctags
-e
-R
-o etags
*
1310 build_tools
/format-diff.sh
1313 build_tools
/format-diff.sh
-c
1316 buckifier
/check_buck_targets.sh
1319 bash build_tools
/make_package.sh
$(SHARED_MAJOR
).
$(SHARED_MINOR
)
1321 # ---------------------------------------------------------------------------
1322 # Unit tests and tools
1323 # ---------------------------------------------------------------------------
1324 $(STATIC_LIBRARY
): $(LIB_OBJECTS
)
1325 $(AM_V_AR
)rm -f
$@
$(SHARED1
) $(SHARED2
) $(SHARED3
) $(SHARED4
)
1326 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$(LIB_OBJECTS
)
1328 $(STATIC_TEST_LIBRARY
): $(TEST_OBJECTS
)
1329 $(AM_V_AR
)rm -f
$@
$(SHARED_TEST_LIBRARY
)
1330 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1332 $(STATIC_TOOLS_LIBRARY
): $(BENCH_OBJECTS
) $(TOOL_OBJECTS
)
1333 $(AM_V_AR
)rm -f
$@
$(SHARED_TOOLS_LIBRARY
)
1334 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1336 $(STATIC_STRESS_LIBRARY
): $(ANALYZE_OBJECTS
) $(STRESS_OBJECTS
)
1337 $(AM_V_AR
)rm -f
$@
$(SHARED_STRESS_LIBRARY
)
1338 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1340 $(SHARED_TEST_LIBRARY
): $(TEST_OBJECTS
) $(SHARED1
)
1341 $(AM_V_AR
)rm -f
$@
$(STATIC_TEST_LIBRARY
)
1344 $(SHARED_TOOLS_LIBRARY
): $(TOOL_OBJECTS
) $(SHARED1
)
1345 $(AM_V_AR
)rm -f
$@
$(STATIC_TOOLS_LIBRARY
)
1348 $(SHARED_STRESS_LIBRARY
): $(ANALYZE_OBJECTS
) $(STRESS_OBJECTS
) $(SHARED_TOOLS_LIBRARY
) $(SHARED1
)
1349 $(AM_V_AR
)rm -f
$@
$(STATIC_STRESS_LIBRARY
)
1352 librocksdb_env_basic_test.a
: $(OBJ_DIR
)/env
/env_basic_test.o
$(LIB_OBJECTS
) $(TESTHARNESS
)
1354 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1356 db_bench
: $(OBJ_DIR
)/tools
/db_bench.o
$(BENCH_OBJECTS
) $(TESTUTIL
) $(LIBRARY
)
1359 trace_analyzer
: $(OBJ_DIR
)/tools
/trace_analyzer.o
$(ANALYZE_OBJECTS
) $(TOOLS_LIBRARY
) $(LIBRARY
)
1362 block_cache_trace_analyzer
: $(OBJ_DIR
)/tools
/block_cache_analyzer
/block_cache_trace_analyzer_tool.o
$(ANALYZE_OBJECTS
) $(TOOLS_LIBRARY
) $(LIBRARY
)
1365 ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX
),1)
1366 folly_synchronization_distributed_mutex_test
: $(OBJ_DIR
)/third-party
/folly
/folly
/synchronization
/test/DistributedMutexTest.o
$(TEST_LIBRARY
) $(LIBRARY
)
1370 cache_bench
: $(OBJ_DIR
)/cache
/cache_bench.o
$(LIBRARY
)
1373 persistent_cache_bench
: $(OBJ_DIR
)/utilities
/persistent_cache
/persistent_cache_bench.o
$(LIBRARY
)
1376 memtablerep_bench
: $(OBJ_DIR
)/memtable
/memtablerep_bench.o
$(LIBRARY
)
1379 filter_bench
: $(OBJ_DIR
)/util
/filter_bench.o
$(LIBRARY
)
1382 db_stress
: $(OBJ_DIR
)/db_stress_tool
/db_stress.o
$(STRESS_LIBRARY
) $(TOOLS_LIBRARY
) $(LIBRARY
)
1385 write_stress
: $(OBJ_DIR
)/tools
/write_stress.o
$(LIBRARY
)
1388 db_sanity_test
: $(OBJ_DIR
)/tools
/db_sanity_test.o
$(LIBRARY
)
1391 db_repl_stress
: $(OBJ_DIR
)/tools
/db_repl_stress.o
$(LIBRARY
)
1394 arena_test
: $(OBJ_DIR
)/memory
/arena_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1397 memkind_kmem_allocator_test
: memory
/memkind_kmem_allocator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1400 autovector_test
: $(OBJ_DIR
)/util
/autovector_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1403 column_family_test
: $(OBJ_DIR
)/db
/column_family_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1406 table_properties_collector_test
: $(OBJ_DIR
)/db
/table_properties_collector_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1409 bloom_test
: $(OBJ_DIR
)/util
/bloom_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1412 dynamic_bloom_test
: $(OBJ_DIR
)/util
/dynamic_bloom_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1415 c_test
: $(OBJ_DIR
)/db
/c_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1418 cache_test
: $(OBJ_DIR
)/cache
/cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1421 coding_test
: $(OBJ_DIR
)/util
/coding_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1424 hash_test
: $(OBJ_DIR
)/util
/hash_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1427 random_test
: $(OBJ_DIR
)/util
/random_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1430 ribbon_test
: $(OBJ_DIR
)/util
/ribbon_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1433 option_change_migration_test
: $(OBJ_DIR
)/utilities
/option_change_migration
/option_change_migration_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1436 stringappend_test
: $(OBJ_DIR
)/utilities
/merge_operators
/string_append
/stringappend_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1439 cassandra_format_test
: $(OBJ_DIR
)/utilities
/cassandra
/cassandra_format_test.o
$(OBJ_DIR
)/utilities
/cassandra
/test_utils.o
$(TEST_LIBRARY
) $(LIBRARY
)
1442 cassandra_functional_test
: $(OBJ_DIR
)/utilities
/cassandra
/cassandra_functional_test.o
$(OBJ_DIR
)/utilities
/cassandra
/test_utils.o
$(TEST_LIBRARY
) $(LIBRARY
)
1445 cassandra_row_merge_test
: $(OBJ_DIR
)/utilities
/cassandra
/cassandra_row_merge_test.o
$(OBJ_DIR
)/utilities
/cassandra
/test_utils.o
$(TEST_LIBRARY
) $(LIBRARY
)
1448 cassandra_serialize_test
: $(OBJ_DIR
)/utilities
/cassandra
/cassandra_serialize_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1451 hash_table_test
: $(OBJ_DIR
)/utilities
/persistent_cache
/hash_table_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1454 histogram_test
: $(OBJ_DIR
)/monitoring
/histogram_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1457 thread_local_test
: $(OBJ_DIR
)/util
/thread_local_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1460 work_queue_test
: $(OBJ_DIR
)/util
/work_queue_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1463 corruption_test
: $(OBJ_DIR
)/db
/corruption_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1466 crc32c_test
: $(OBJ_DIR
)/util
/crc32c_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1469 slice_test
: $(OBJ_DIR
)/util
/slice_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1472 slice_transform_test
: $(OBJ_DIR
)/util
/slice_transform_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1475 db_basic_test
: $(OBJ_DIR
)/db
/db_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1478 db_blob_basic_test
: $(OBJ_DIR
)/db
/blob
/db_blob_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1481 db_with_timestamp_basic_test
: $(OBJ_DIR
)/db
/db_with_timestamp_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1484 db_with_timestamp_compaction_test
: db
/db_with_timestamp_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1487 db_encryption_test
: $(OBJ_DIR
)/db
/db_encryption_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1490 db_test
: $(OBJ_DIR
)/db
/db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1493 db_test2
: $(OBJ_DIR
)/db
/db_test2.o
$(TEST_LIBRARY
) $(LIBRARY
)
1496 db_logical_block_size_cache_test
: $(OBJ_DIR
)/db
/db_logical_block_size_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1499 db_blob_index_test
: $(OBJ_DIR
)/db
/blob
/db_blob_index_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1502 db_block_cache_test
: $(OBJ_DIR
)/db
/db_block_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1505 db_bloom_filter_test
: $(OBJ_DIR
)/db
/db_bloom_filter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1508 db_log_iter_test
: $(OBJ_DIR
)/db
/db_log_iter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1511 db_compaction_filter_test
: $(OBJ_DIR
)/db
/db_compaction_filter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1514 db_compaction_test
: $(OBJ_DIR
)/db
/db_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1517 db_dynamic_level_test
: $(OBJ_DIR
)/db
/db_dynamic_level_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1520 db_flush_test
: $(OBJ_DIR
)/db
/db_flush_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1523 db_inplace_update_test
: $(OBJ_DIR
)/db
/db_inplace_update_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1526 db_iterator_test
: $(OBJ_DIR
)/db
/db_iterator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1529 db_memtable_test
: $(OBJ_DIR
)/db
/db_memtable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1532 db_merge_operator_test
: $(OBJ_DIR
)/db
/db_merge_operator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1535 db_merge_operand_test
: $(OBJ_DIR
)/db
/db_merge_operand_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1538 db_options_test
: $(OBJ_DIR
)/db
/db_options_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1541 db_range_del_test
: $(OBJ_DIR
)/db
/db_range_del_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1544 db_sst_test
: $(OBJ_DIR
)/db
/db_sst_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1547 db_statistics_test
: $(OBJ_DIR
)/db
/db_statistics_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1550 db_write_test
: $(OBJ_DIR
)/db
/db_write_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1553 error_handler_fs_test
: $(OBJ_DIR
)/db
/error_handler_fs_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1556 external_sst_file_basic_test
: $(OBJ_DIR
)/db
/external_sst_file_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1559 external_sst_file_test
: $(OBJ_DIR
)/db
/external_sst_file_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1562 import_column_family_test
: $(OBJ_DIR
)/db
/import_column_family_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1565 db_tailing_iter_test
: $(OBJ_DIR
)/db
/db_tailing_iter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1568 db_iter_test
: $(OBJ_DIR
)/db
/db_iter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1571 db_iter_stress_test
: $(OBJ_DIR
)/db
/db_iter_stress_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1574 db_universal_compaction_test
: $(OBJ_DIR
)/db
/db_universal_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1577 db_wal_test
: $(OBJ_DIR
)/db
/db_wal_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1580 db_io_failure_test
: $(OBJ_DIR
)/db
/db_io_failure_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1583 db_properties_test
: $(OBJ_DIR
)/db
/db_properties_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1586 db_table_properties_test
: $(OBJ_DIR
)/db
/db_table_properties_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1589 log_write_bench
: $(OBJ_DIR
)/util
/log_write_bench.o
$(TEST_LIBRARY
) $(LIBRARY
)
1590 $(AM_LINK
) $(PROFILING_FLAGS
)
1592 plain_table_db_test
: $(OBJ_DIR
)/db
/plain_table_db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1595 comparator_db_test
: $(OBJ_DIR
)/db
/comparator_db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1598 table_reader_bench
: $(OBJ_DIR
)/table
/table_reader_bench.o
$(TEST_LIBRARY
) $(LIBRARY
)
1599 $(AM_LINK
) $(PROFILING_FLAGS
)
1601 perf_context_test
: $(OBJ_DIR
)/db
/perf_context_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1604 prefix_test
: $(OBJ_DIR
)/db
/prefix_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1607 backupable_db_test
: $(OBJ_DIR
)/utilities
/backupable
/backupable_db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1610 checkpoint_test
: $(OBJ_DIR
)/utilities
/checkpoint
/checkpoint_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1613 cache_simulator_test
: $(OBJ_DIR
)/utilities
/simulator_cache
/cache_simulator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1616 sim_cache_test
: $(OBJ_DIR
)/utilities
/simulator_cache
/sim_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1619 env_mirror_test
: $(OBJ_DIR
)/utilities
/env_mirror_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1622 env_timed_test
: $(OBJ_DIR
)/utilities
/env_timed_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1625 ifdef ROCKSDB_USE_LIBRADOS
1626 env_librados_test
: $(OBJ_DIR
)/utilities
/env_librados_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1630 object_registry_test
: $(OBJ_DIR
)/utilities
/object_registry_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1633 ttl_test
: $(OBJ_DIR
)/utilities
/ttl
/ttl_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1636 write_batch_with_index_test
: $(OBJ_DIR
)/utilities
/write_batch_with_index
/write_batch_with_index_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1639 flush_job_test
: $(OBJ_DIR
)/db
/flush_job_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1642 compaction_iterator_test
: $(OBJ_DIR
)/db
/compaction
/compaction_iterator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1645 compaction_job_test
: $(OBJ_DIR
)/db
/compaction
/compaction_job_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1648 compaction_job_stats_test
: $(OBJ_DIR
)/db
/compaction
/compaction_job_stats_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1651 compact_on_deletion_collector_test
: $(OBJ_DIR
)/utilities
/table_properties_collectors
/compact_on_deletion_collector_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1654 wal_manager_test
: $(OBJ_DIR
)/db
/wal_manager_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1657 wal_edit_test
: $(OBJ_DIR
)/db
/wal_edit_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1660 dbformat_test
: $(OBJ_DIR
)/db
/dbformat_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1663 env_basic_test
: $(OBJ_DIR
)/env
/env_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1666 env_test
: $(OBJ_DIR
)/env
/env_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1669 io_posix_test
: $(OBJ_DIR
)/env
/io_posix_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1672 fault_injection_test
: $(OBJ_DIR
)/db
/fault_injection_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1675 rate_limiter_test
: $(OBJ_DIR
)/util
/rate_limiter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1678 delete_scheduler_test
: $(OBJ_DIR
)/file
/delete_scheduler_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1681 filename_test
: $(OBJ_DIR
)/db
/filename_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1684 random_access_file_reader_test
: $(OBJ_DIR
)/file
/random_access_file_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1687 file_reader_writer_test
: $(OBJ_DIR
)/util
/file_reader_writer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1690 block_based_filter_block_test
: $(OBJ_DIR
)/table
/block_based
/block_based_filter_block_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1693 block_based_table_reader_test
: table
/block_based
/block_based_table_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1696 full_filter_block_test
: $(OBJ_DIR
)/table
/block_based
/full_filter_block_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1699 partitioned_filter_block_test
: $(OBJ_DIR
)/table
/block_based
/partitioned_filter_block_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1702 log_test
: $(OBJ_DIR
)/db
/log_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1705 cleanable_test
: $(OBJ_DIR
)/table
/cleanable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1708 table_test
: $(OBJ_DIR
)/table
/table_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1711 block_fetcher_test
: table
/block_fetcher_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1714 block_test
: $(OBJ_DIR
)/table
/block_based
/block_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1717 data_block_hash_index_test
: $(OBJ_DIR
)/table
/block_based
/data_block_hash_index_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1720 inlineskiplist_test
: $(OBJ_DIR
)/memtable
/inlineskiplist_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1723 skiplist_test
: $(OBJ_DIR
)/memtable
/skiplist_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1726 write_buffer_manager_test
: $(OBJ_DIR
)/memtable
/write_buffer_manager_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1729 version_edit_test
: $(OBJ_DIR
)/db
/version_edit_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1732 version_set_test
: $(OBJ_DIR
)/db
/version_set_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1735 compaction_picker_test
: $(OBJ_DIR
)/db
/compaction
/compaction_picker_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1738 version_builder_test
: $(OBJ_DIR
)/db
/version_builder_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1741 file_indexer_test
: $(OBJ_DIR
)/db
/file_indexer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1744 reduce_levels_test
: $(OBJ_DIR
)/tools
/reduce_levels_test.o
$(TOOLS_LIBRARY
) $(TEST_LIBRARY
) $(LIBRARY
)
1747 write_batch_test
: $(OBJ_DIR
)/db
/write_batch_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1750 write_controller_test
: $(OBJ_DIR
)/db
/write_controller_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1753 merge_helper_test
: $(OBJ_DIR
)/db
/merge_helper_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1756 memory_test
: $(OBJ_DIR
)/utilities
/memory
/memory_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1759 merge_test
: $(OBJ_DIR
)/db
/merge_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1762 merger_test
: $(OBJ_DIR
)/table
/merger_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1765 util_merge_operators_test
: $(OBJ_DIR
)/utilities
/util_merge_operators_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1768 options_file_test
: $(OBJ_DIR
)/db
/options_file_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1771 deletefile_test
: $(OBJ_DIR
)/db
/deletefile_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1774 obsolete_files_test
: $(OBJ_DIR
)/db
/obsolete_files_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1777 rocksdb_dump
: $(OBJ_DIR
)/tools
/dump
/rocksdb_dump.o
$(LIBRARY
)
1780 rocksdb_undump
: $(OBJ_DIR
)/tools
/dump
/rocksdb_undump.o
$(LIBRARY
)
1783 cuckoo_table_builder_test
: $(OBJ_DIR
)/table
/cuckoo
/cuckoo_table_builder_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1786 cuckoo_table_reader_test
: $(OBJ_DIR
)/table
/cuckoo
/cuckoo_table_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1789 cuckoo_table_db_test
: $(OBJ_DIR
)/db
/cuckoo_table_db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1792 listener_test
: $(OBJ_DIR
)/db
/listener_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1795 thread_list_test
: $(OBJ_DIR
)/util
/thread_list_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1798 compact_files_test
: $(OBJ_DIR
)/db
/compact_files_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1801 configurable_test
: options
/configurable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1804 customizable_test
: options
/customizable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1807 options_test
: $(OBJ_DIR
)/options
/options_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1810 options_settable_test
: $(OBJ_DIR
)/options
/options_settable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1813 options_util_test
: $(OBJ_DIR
)/utilities
/options
/options_util_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1816 db_bench_tool_test
: $(OBJ_DIR
)/tools
/db_bench_tool_test.o
$(BENCH_OBJECTS
) $(TEST_LIBRARY
) $(LIBRARY
)
1819 trace_analyzer_test
: $(OBJ_DIR
)/tools
/trace_analyzer_test.o
$(ANALYZE_OBJECTS
) $(TOOLS_LIBRARY
) $(TEST_LIBRARY
) $(LIBRARY
)
1822 event_logger_test
: $(OBJ_DIR
)/logging
/event_logger_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1825 timer_queue_test
: $(OBJ_DIR
)/util
/timer_queue_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1828 sst_dump_test
: $(OBJ_DIR
)/tools
/sst_dump_test.o
$(TOOLS_LIBRARY
) $(TEST_LIBRARY
) $(LIBRARY
)
1831 optimistic_transaction_test
: $(OBJ_DIR
)/utilities
/transactions
/optimistic_transaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1834 mock_env_test
: $(OBJ_DIR
)/env
/mock_env_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1837 manual_compaction_test
: $(OBJ_DIR
)/db
/manual_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1840 filelock_test
: $(OBJ_DIR
)/util
/filelock_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1843 auto_roll_logger_test
: $(OBJ_DIR
)/logging
/auto_roll_logger_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1846 env_logger_test
: $(OBJ_DIR
)/logging
/env_logger_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1849 memtable_list_test
: $(OBJ_DIR
)/db
/memtable_list_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1852 write_callback_test
: $(OBJ_DIR
)/db
/write_callback_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1855 heap_test
: $(OBJ_DIR
)/util
/heap_test.o
$(GTEST
)
1858 point_lock_manager_test
: utilities
/transactions
/lock
/point
/point_lock_manager_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1861 transaction_test
: $(OBJ_DIR
)/utilities
/transactions
/transaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1864 write_prepared_transaction_test
: $(OBJ_DIR
)/utilities
/transactions
/write_prepared_transaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1867 write_unprepared_transaction_test
: $(OBJ_DIR
)/utilities
/transactions
/write_unprepared_transaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1870 sst_dump
: $(OBJ_DIR
)/tools
/sst_dump.o
$(TOOLS_LIBRARY
) $(LIBRARY
)
1873 blob_dump
: $(OBJ_DIR
)/tools
/blob_dump.o
$(TOOLS_LIBRARY
) $(LIBRARY
)
1876 repair_test
: $(OBJ_DIR
)/db
/repair_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1879 ldb_cmd_test
: $(OBJ_DIR
)/tools
/ldb_cmd_test.o
$(TOOLS_LIBRARY
) $(TEST_LIBRARY
) $(LIBRARY
)
1882 ldb
: $(OBJ_DIR
)/tools
/ldb.o
$(TOOLS_LIBRARY
) $(LIBRARY
)
1885 iostats_context_test
: $(OBJ_DIR
)/monitoring
/iostats_context_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1886 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
)
1888 persistent_cache_test
: $(OBJ_DIR
)/utilities
/persistent_cache
/persistent_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1891 statistics_test
: $(OBJ_DIR
)/monitoring
/statistics_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1894 stats_history_test
: $(OBJ_DIR
)/monitoring
/stats_history_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1897 lru_cache_test
: $(OBJ_DIR
)/cache
/lru_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1900 range_del_aggregator_test
: $(OBJ_DIR
)/db
/range_del_aggregator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1903 range_del_aggregator_bench
: $(OBJ_DIR
)/db
/range_del_aggregator_bench.o
$(LIBRARY
)
1906 blob_db_test
: $(OBJ_DIR
)/utilities
/blob_db
/blob_db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1909 repeatable_thread_test
: $(OBJ_DIR
)/util
/repeatable_thread_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1912 range_tombstone_fragmenter_test
: $(OBJ_DIR
)/db
/range_tombstone_fragmenter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1915 sst_file_reader_test
: $(OBJ_DIR
)/table
/sst_file_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1918 db_secondary_test
: $(OBJ_DIR
)/db
/db_impl
/db_secondary_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1921 block_cache_tracer_test
: $(OBJ_DIR
)/trace_replay
/block_cache_tracer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1924 block_cache_trace_analyzer_test
: $(OBJ_DIR
)/tools
/block_cache_analyzer
/block_cache_trace_analyzer_test.o
$(OBJ_DIR
)/tools
/block_cache_analyzer
/block_cache_trace_analyzer.o
$(TEST_LIBRARY
) $(LIBRARY
)
1927 defer_test
: $(OBJ_DIR
)/util
/defer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1930 blob_file_addition_test
: $(OBJ_DIR
)/db
/blob
/blob_file_addition_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1933 blob_file_builder_test
: $(OBJ_DIR
)/db
/blob
/blob_file_builder_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1936 blob_file_cache_test
: $(OBJ_DIR
)/db
/blob
/blob_file_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1939 blob_file_garbage_test
: $(OBJ_DIR
)/db
/blob
/blob_file_garbage_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1942 blob_file_reader_test
: $(OBJ_DIR
)/db
/blob
/blob_file_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1945 timer_test
: $(OBJ_DIR
)/util
/timer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1948 periodic_work_scheduler_test
: $(OBJ_DIR
)/db
/periodic_work_scheduler_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1951 testutil_test
: $(OBJ_DIR
)/test_util
/testutil_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1954 io_tracer_test
: $(OBJ_DIR
)/trace_replay
/io_tracer_test.o
$(OBJ_DIR
)/trace_replay
/io_tracer.o
$(TEST_LIBRARY
) $(LIBRARY
)
1957 prefetch_test
: $(OBJ_DIR
)/file
/prefetch_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1960 io_tracer_parser_test
: $(OBJ_DIR
)/tools
/io_tracer_parser_test.o
$(OBJ_DIR
)/tools
/io_tracer_parser_tool.o
$(TEST_LIBRARY
) $(LIBRARY
)
1963 io_tracer_parser
: $(OBJ_DIR
)/tools
/io_tracer_parser.o
$(TOOLS_LIBRARY
) $(LIBRARY
)
1966 #-------------------------------------------------
1967 # make install related stuff
1968 PREFIX ?
= /usr
/local
1969 LIBDIR ?
= $(PREFIX
)/lib
1970 INSTALL_LIBDIR
= $(DESTDIR
)$(LIBDIR
)
1973 rm -rf
$(DESTDIR
)$(PREFIX
)/include/rocksdb \
1974 $(INSTALL_LIBDIR
)/$(LIBRARY
) \
1975 $(INSTALL_LIBDIR
)/$(SHARED4
) \
1976 $(INSTALL_LIBDIR
)/$(SHARED3
) \
1977 $(INSTALL_LIBDIR
)/$(SHARED2
) \
1978 $(INSTALL_LIBDIR
)/$(SHARED1
) \
1979 $(INSTALL_LIBDIR
)/pkgconfig
/rocksdb.
pc
1981 install-headers
: gen-pc
1982 install -d
$(INSTALL_LIBDIR
)
1983 install -d
$(INSTALL_LIBDIR
)/pkgconfig
1984 for header_dir in
`$(FIND) "include/rocksdb" -type d`; do \
1985 install -d
$(DESTDIR
)/$(PREFIX
)/$$header_dir; \
1987 for header in
`$(FIND) "include/rocksdb" -type f -name *.h`; do \
1988 install -C
-m
644 $$header $(DESTDIR
)/$(PREFIX
)/$$header; \
1990 install -C
-m
644 rocksdb.
pc $(INSTALL_LIBDIR
)/pkgconfig
/rocksdb.
pc
1992 install-static
: install-headers
$(LIBRARY
)
1993 install -d
$(INSTALL_LIBDIR
)
1994 install -C
-m
755 $(LIBRARY
) $(INSTALL_LIBDIR
)
1996 install-shared
: install-headers
$(SHARED4
)
1997 install -d
$(INSTALL_LIBDIR
)
1998 install -C
-m
755 $(SHARED4
) $(INSTALL_LIBDIR
)
1999 ln
-fs
$(SHARED4
) $(INSTALL_LIBDIR
)/$(SHARED3
)
2000 ln
-fs
$(SHARED4
) $(INSTALL_LIBDIR
)/$(SHARED2
)
2001 ln
-fs
$(SHARED4
) $(INSTALL_LIBDIR
)/$(SHARED1
)
2003 # install static by default + install shared if it exists
2004 install: install-static
2005 [ -e
$(SHARED4
) ] && $(MAKE
) install-shared ||
:
2007 # Generate the pkg-config file
2009 -echo
'prefix=$(PREFIX)' > rocksdb.
pc
2010 -echo
'exec_prefix=$${prefix}' >> rocksdb.
pc
2011 -echo
'includedir=$${prefix}/include' >> rocksdb.
pc
2012 -echo
'libdir=$(LIBDIR)' >> rocksdb.
pc
2013 -echo
'' >> rocksdb.
pc
2014 -echo
'Name: rocksdb' >> rocksdb.
pc
2015 -echo
'Description: An embeddable persistent key-value store for fast storage' >> rocksdb.
pc
2016 -echo Version
: $(shell .
/build_tools
/version.sh full
) >> rocksdb.
pc
2017 -echo
'Libs: -L$${libdir} $(EXEC_LDFLAGS) -lrocksdb' >> rocksdb.
pc
2018 -echo
'Libs.private: $(PLATFORM_LDFLAGS)' >> rocksdb.
pc
2019 -echo
'Cflags: -I$${includedir} $(PLATFORM_CXXFLAGS)' >> rocksdb.
pc
2021 #-------------------------------------------------
2024 # ---------------------------------------------------------------------------
2026 # ---------------------------------------------------------------------------
2028 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/linux
2029 ifeq ($(PLATFORM
), OS_SOLARIS
)
2030 ARCH
:= $(shell isainfo
-b
)
2031 else ifeq ($(PLATFORM
), OS_OPENBSD
)
2032 ifneq (,$(filter amd64 ppc64 ppc64le arm64 aarch64 sparc64
, $(MACHINE
)))
2038 ARCH
:= $(shell getconf LONG_BIT
)
2041 ifeq ($(shell ldd
/usr
/bin
/env
2>/dev
/null | grep
-q musl
; echo
$$?
),0)
2043 # GNU LibC (or glibc) is so pervasive we can assume it is the default
2048 ifneq ($(origin JNI_LIBC
), undefined
)
2049 JNI_LIBC_POSTFIX
= -$(JNI_LIBC
)
2052 ifneq (,$(filter ppc
% arm64 aarch64 sparc64
, $(MACHINE
)))
2053 ROCKSDBJNILIB
= librocksdbjni-linux-
$(MACHINE
)$(JNI_LIBC_POSTFIX
).so
2055 ROCKSDBJNILIB
= librocksdbjni-linux
$(ARCH
)$(JNI_LIBC_POSTFIX
).so
2057 ROCKSDB_JAVA_VERSION ?
= $(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)
2058 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-linux
$(ARCH
)$(JNI_LIBC_POSTFIX
).jar
2059 ROCKSDB_JAR_ALL
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar
2060 ROCKSDB_JAVADOCS_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-javadoc.jar
2061 ROCKSDB_SOURCES_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-sources.jar
2062 SHA256_CMD
= sha256sum
2065 ZLIB_SHA256 ?
= c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
2066 ZLIB_DOWNLOAD_BASE ?
= http
://zlib.net
2068 BZIP2_SHA256 ?
= ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269
2069 BZIP2_DOWNLOAD_BASE ?
= https
://sourceware.org
/pub
/bzip2
2071 SNAPPY_SHA256 ?
= 16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f
2072 SNAPPY_DOWNLOAD_BASE ?
= https
://github.com
/google
/snappy
/archive
2074 LZ4_SHA256 ?
= 658ba6191fa44c92280d4aa2c271b0f4fbc0e34d249578dd05e50e76d0e5efcc
2075 LZ4_DOWNLOAD_BASE ?
= https
://github.com
/lz4
/lz4
/archive
2077 ZSTD_SHA256 ?
= 734d1f565c42f691f8420c8d06783ad818060fc390dee43ae0a89f86d0a4f8c2
2078 ZSTD_DOWNLOAD_BASE ?
= https
://github.com
/facebook
/zstd
/archive
2079 CURL_SSL_OPTS ?
= --tlsv1
2081 ifeq ($(PLATFORM
), OS_MACOSX
)
2082 ROCKSDBJNILIB
= librocksdbjni-osx.jnilib
2083 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-osx.jar
2084 SHA256_CMD
= openssl sha256
-r
2085 ifneq ("$(wildcard $(JAVA_HOME)/include/darwin)","")
2086 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/darwin
2088 JAVA_INCLUDE
= -I
/System
/Library
/Frameworks
/JavaVM.framework
/Headers
/
2091 ifeq ($(PLATFORM
), OS_FREEBSD
)
2092 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/freebsd
2093 ROCKSDBJNILIB
= librocksdbjni-freebsd
$(ARCH
).so
2094 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-freebsd
$(ARCH
).jar
2096 ifeq ($(PLATFORM
), OS_SOLARIS
)
2097 ROCKSDBJNILIB
= librocksdbjni-solaris
$(ARCH
).so
2098 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-solaris
$(ARCH
).jar
2099 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/solaris
2100 SHA256_CMD
= digest
-a sha256
2102 ifeq ($(PLATFORM
), OS_AIX
)
2103 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/aix
2104 ROCKSDBJNILIB
= librocksdbjni-aix.so
2105 EXTRACT_SOURCES
= gunzip
< TAR_GZ |
tar xvf
-
2106 SNAPPY_MAKE_TARGET
= libsnappy.la
2108 ifeq ($(PLATFORM
), OS_OPENBSD
)
2109 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/openbsd
2110 ROCKSDBJNILIB
= librocksdbjni-openbsd
$(ARCH
).so
2111 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-openbsd
$(ARCH
).jar
2114 zlib-
$(ZLIB_VER
).
tar.gz
:
2115 curl
--fail
--output zlib-
$(ZLIB_VER
).
tar.gz
--location
${ZLIB_DOWNLOAD_BASE}/zlib-
$(ZLIB_VER
).
tar.gz
2116 ZLIB_SHA256_ACTUAL
=`$(SHA256_CMD) zlib-$(ZLIB_VER).tar.gz | cut -d ' ' -f 1`; \
2117 if
[ "$(ZLIB_SHA256)" != "$$ZLIB_SHA256_ACTUAL" ]; then \
2118 echo zlib-
$(ZLIB_VER
).
tar.gz checksum mismatch
, expected
=\"$(ZLIB_SHA256
)\" actual
=\"$$ZLIB_SHA256_ACTUAL\"; \
2122 libz.a
: zlib-
$(ZLIB_VER
).
tar.gz
2123 -rm -rf zlib-
$(ZLIB_VER
)
2124 tar xvzf zlib-
$(ZLIB_VER
).
tar.gz
2125 cd zlib-
$(ZLIB_VER
) && CFLAGS
='-fPIC ${EXTRA_CFLAGS}' LDFLAGS
='${EXTRA_LDFLAGS}' .
/configure
--static
&& $(MAKE
)
2126 cp zlib-
$(ZLIB_VER
)/libz.a .
2128 bzip2-
$(BZIP2_VER
).
tar.gz
:
2129 curl
--fail
--output bzip2-
$(BZIP2_VER
).
tar.gz
--location
${CURL_SSL_OPTS} ${BZIP2_DOWNLOAD_BASE}/bzip2-
$(BZIP2_VER
).
tar.gz
2130 BZIP2_SHA256_ACTUAL
=`$(SHA256_CMD) bzip2-$(BZIP2_VER).tar.gz | cut -d ' ' -f 1`; \
2131 if
[ "$(BZIP2_SHA256)" != "$$BZIP2_SHA256_ACTUAL" ]; then \
2132 echo bzip2-
$(BZIP2_VER
).
tar.gz checksum mismatch
, expected
=\"$(BZIP2_SHA256
)\" actual
=\"$$BZIP2_SHA256_ACTUAL\"; \
2136 libbz2.a
: bzip2-
$(BZIP2_VER
).
tar.gz
2137 -rm -rf bzip2-
$(BZIP2_VER
)
2138 tar xvzf bzip2-
$(BZIP2_VER
).
tar.gz
2139 cd bzip2-
$(BZIP2_VER
) && $(MAKE
) CFLAGS
='-fPIC -O2 -g -D_FILE_OFFSET_BITS=64 ${EXTRA_CFLAGS}' AR
='ar ${EXTRA_ARFLAGS}'
2140 cp bzip2-
$(BZIP2_VER
)/libbz2.a .
2142 snappy-
$(SNAPPY_VER
).
tar.gz
:
2143 curl
--fail
--output snappy-
$(SNAPPY_VER
).
tar.gz
--location
${CURL_SSL_OPTS} ${SNAPPY_DOWNLOAD_BASE}/$(SNAPPY_VER
).
tar.gz
2144 SNAPPY_SHA256_ACTUAL
=`$(SHA256_CMD) snappy-$(SNAPPY_VER).tar.gz | cut -d ' ' -f 1`; \
2145 if
[ "$(SNAPPY_SHA256)" != "$$SNAPPY_SHA256_ACTUAL" ]; then \
2146 echo snappy-
$(SNAPPY_VER
).
tar.gz checksum mismatch
, expected
=\"$(SNAPPY_SHA256
)\" actual
=\"$$SNAPPY_SHA256_ACTUAL\"; \
2150 libsnappy.a
: snappy-
$(SNAPPY_VER
).
tar.gz
2151 -rm -rf snappy-
$(SNAPPY_VER
)
2152 tar xvzf snappy-
$(SNAPPY_VER
).
tar.gz
2153 mkdir snappy-
$(SNAPPY_VER
)/build
2154 cd snappy-
$(SNAPPY_VER
)/build
&& CFLAGS
='${EXTRA_CFLAGS}' CXXFLAGS
='${EXTRA_CXXFLAGS}' LDFLAGS
='${EXTRA_LDFLAGS}' cmake
-DCMAKE_POSITION_INDEPENDENT_CODE
=ON ..
&& $(MAKE
) ${SNAPPY_MAKE_TARGET}
2155 cp snappy-
$(SNAPPY_VER
)/build
/libsnappy.a .
2157 lz4-
$(LZ4_VER
).
tar.gz
:
2158 curl
--fail
--output lz4-
$(LZ4_VER
).
tar.gz
--location
${CURL_SSL_OPTS} ${LZ4_DOWNLOAD_BASE}/v
$(LZ4_VER
).
tar.gz
2159 LZ4_SHA256_ACTUAL
=`$(SHA256_CMD) lz4-$(LZ4_VER).tar.gz | cut -d ' ' -f 1`; \
2160 if
[ "$(LZ4_SHA256)" != "$$LZ4_SHA256_ACTUAL" ]; then \
2161 echo lz4-
$(LZ4_VER
).
tar.gz checksum mismatch
, expected
=\"$(LZ4_SHA256
)\" actual
=\"$$LZ4_SHA256_ACTUAL\"; \
2165 liblz4.a
: lz4-
$(LZ4_VER
).
tar.gz
2166 -rm -rf lz4-
$(LZ4_VER
)
2167 tar xvzf lz4-
$(LZ4_VER
).
tar.gz
2168 cd lz4-
$(LZ4_VER
)/lib
&& $(MAKE
) CFLAGS
='-fPIC -O2 ${EXTRA_CFLAGS}' all
2169 cp lz4-
$(LZ4_VER
)/lib
/liblz4.a .
2171 zstd-
$(ZSTD_VER
).
tar.gz
:
2172 curl
--fail
--output zstd-
$(ZSTD_VER
).
tar.gz
--location
${CURL_SSL_OPTS} ${ZSTD_DOWNLOAD_BASE}/v
$(ZSTD_VER
).
tar.gz
2173 ZSTD_SHA256_ACTUAL
=`$(SHA256_CMD) zstd-$(ZSTD_VER).tar.gz | cut -d ' ' -f 1`; \
2174 if
[ "$(ZSTD_SHA256)" != "$$ZSTD_SHA256_ACTUAL" ]; then \
2175 echo zstd-
$(ZSTD_VER
).
tar.gz checksum mismatch
, expected
=\"$(ZSTD_SHA256
)\" actual
=\"$$ZSTD_SHA256_ACTUAL\"; \
2179 libzstd.a
: zstd-
$(ZSTD_VER
).
tar.gz
2180 -rm -rf zstd-
$(ZSTD_VER
)
2181 tar xvzf zstd-
$(ZSTD_VER
).
tar.gz
2182 cd zstd-
$(ZSTD_VER
)/lib
&& DESTDIR
=. PREFIX
= $(MAKE
) CFLAGS
='-fPIC -O2 ${EXTRA_CFLAGS}' install
2183 cp zstd-
$(ZSTD_VER
)/lib
/libzstd.a .
2185 # A version of each $(LIB_OBJECTS) compiled with -fPIC and a fixed set of static compression libraries
2186 ifneq ($(ROCKSDB_JAVA_NO_COMPRESSION
), 1)
2187 JAVA_COMPRESSIONS
= libz.a libbz2.a libsnappy.a liblz4.a libzstd.a
2190 JAVA_STATIC_FLAGS
= -DZLIB
-DBZIP2
-DSNAPPY
-DLZ4
-DZSTD
2191 JAVA_STATIC_INCLUDES
= -I.
/zlib-
$(ZLIB_VER
) -I.
/bzip2-
$(BZIP2_VER
) -I.
/snappy-
$(SNAPPY_VER
) -I.
/snappy-
$(SNAPPY_VER
)/build
-I.
/lz4-
$(LZ4_VER
)/lib
-I.
/zstd-
$(ZSTD_VER
)/lib
-I.
/zstd-
$(ZSTD_VER
)/lib
/dictBuilder
2193 ifneq ($(findstring rocksdbjavastatic
, $(filter-out rocksdbjavastatic_deps
, $(MAKECMDGOALS
))),)
2194 CXXFLAGS
+= $(JAVA_STATIC_FLAGS
) $(JAVA_STATIC_INCLUDES
)
2195 CFLAGS
+= $(JAVA_STATIC_FLAGS
) $(JAVA_STATIC_INCLUDES
)
2198 ifeq ($(JAVA_HOME
),)
2199 $(error JAVA_HOME is not set
)
2201 $(MAKE
) rocksdbjavastatic_deps
2202 $(MAKE
) rocksdbjavastatic_libobjects
2203 $(MAKE
) rocksdbjavastatic_javalib
2205 rocksdbjavastatic_javalib
:
2206 cd java
;$(MAKE
) javalib
2207 rm -f java
/target
/$(ROCKSDBJNILIB
)
2208 $(CXX
) $(CXXFLAGS
) -I.
/java
/.
$(JAVA_INCLUDE
) -shared
-fPIC \
2209 -o .
/java
/target
/$(ROCKSDBJNILIB
) $(JNI_NATIVE_SOURCES
) \
2210 $(LIB_OBJECTS
) $(COVERAGEFLAGS
) \
2211 $(JAVA_COMPRESSIONS
) $(JAVA_STATIC_LDFLAGS
)
2212 cd java
/target
;if
[ "$(DEBUG_LEVEL)" == "0" ]; then \
2213 strip $(STRIPFLAGS
) $(ROCKSDBJNILIB
); \
2215 cd java
;jar
-cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
2216 cd java
/target
;jar
-uf
$(ROCKSDB_JAR
) $(ROCKSDBJNILIB
)
2217 cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2218 cd java
/target
/apidocs
;jar
-cf ..
/$(ROCKSDB_JAVADOCS_JAR
) *
2219 cd java
/src
/main
/java
;jar
-cf ..
/..
/..
/target
/$(ROCKSDB_SOURCES_JAR
) org
2220 openssl sha1 java
/target
/$(ROCKSDB_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR
).sha1
2221 openssl sha1 java
/target
/$(ROCKSDB_JAVADOCS_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAVADOCS_JAR
).sha1
2222 openssl sha1 java
/target
/$(ROCKSDB_SOURCES_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_SOURCES_JAR
).sha1
2224 rocksdbjavastatic_deps
: $(JAVA_COMPRESSIONS
)
2226 rocksdbjavastatic_libobjects
: $(LIB_OBJECTS
)
2228 rocksdbjavastaticrelease
: rocksdbjavastatic
2229 cd java
/crossbuild
&& (vagrant destroy
-f || true
) && vagrant up linux32
&& vagrant halt linux32
&& vagrant up linux64
&& vagrant halt linux64
&& vagrant up linux64-musl
&& vagrant halt linux64-musl
2230 cd java
;jar
-cf target
/$(ROCKSDB_JAR_ALL
) HISTORY
*.md
2231 cd java
/target
;jar
-uf
$(ROCKSDB_JAR_ALL
) librocksdbjni-
*.so librocksdbjni-
*.jnilib
2232 cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR_ALL
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2233 openssl sha1 java
/target
/$(ROCKSDB_JAR_ALL
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR_ALL
).sha1
2235 rocksdbjavastaticreleasedocker
: rocksdbjavastatic rocksdbjavastaticdockerx86 rocksdbjavastaticdockerx86_64 rocksdbjavastaticdockerx86musl rocksdbjavastaticdockerx86_64musl
2236 cd java
;jar
-cf target
/$(ROCKSDB_JAR_ALL
) HISTORY
*.md
2237 cd java
/target
;jar
-uf
$(ROCKSDB_JAR_ALL
) librocksdbjni-
*.so librocksdbjni-
*.jnilib
2238 cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR_ALL
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2239 openssl sha1 java
/target
/$(ROCKSDB_JAR_ALL
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR_ALL
).sha1
2241 rocksdbjavastaticdockerx86
:
2242 mkdir
-p java
/target
2243 docker run
--rm --name rocksdb_linux_x86-be
--platform linux
/386 --attach stdin
--attach stdout
--attach stderr
--volume
$(HOME
)/.m2
:/root
/.m2
:ro
--volume
`pwd`:/rocksdb-host
:ro
--volume
/rocksdb-local-build
--volume
`pwd`/java
/target
:/rocksdb-java-target
--env DEBUG_LEVEL
=$(DEBUG_LEVEL
) evolvedbinary
/rocksjava
:centos6_x86-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-centos.sh
2245 rocksdbjavastaticdockerx86_64
:
2246 mkdir
-p java
/target
2247 docker run
--rm --name rocksdb_linux_x64-be
--attach stdin
--attach stdout
--attach stderr
--volume
$(HOME
)/.m2
:/root
/.m2
:ro
--volume
`pwd`:/rocksdb-host
:ro
--volume
/rocksdb-local-build
--volume
`pwd`/java
/target
:/rocksdb-java-target
--env DEBUG_LEVEL
=$(DEBUG_LEVEL
) evolvedbinary
/rocksjava
:centos6_x64-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-centos.sh
2249 rocksdbjavastaticdockerppc64le
:
2250 mkdir
-p java
/target
2251 docker run
--rm --name rocksdb_linux_ppc64le-be
--attach stdin
--attach stdout
--attach stderr
--volume
$(HOME
)/.m2
:/root
/.m2
:ro
--volume
`pwd`:/rocksdb-host
:ro
--volume
/rocksdb-local-build
--volume
`pwd`/java
/target
:/rocksdb-java-target
--env DEBUG_LEVEL
=$(DEBUG_LEVEL
) evolvedbinary
/rocksjava
:centos7_ppc64le-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-centos.sh
2253 rocksdbjavastaticdockerarm64v8
:
2254 mkdir
-p java
/target
2255 docker run
--rm --name rocksdb_linux_arm64v8-be
--attach stdin
--attach stdout
--attach stderr
--volume
$(HOME
)/.m2
:/root
/.m2
:ro
--volume
`pwd`:/rocksdb-host
:ro
--volume
/rocksdb-local-build
--volume
`pwd`/java
/target
:/rocksdb-java-target
--env DEBUG_LEVEL
=$(DEBUG_LEVEL
) evolvedbinary
/rocksjava
:centos7_arm64v8-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-centos.sh
2257 rocksdbjavastaticdockerx86musl
:
2258 mkdir
-p java
/target
2259 docker run
--rm --name rocksdb_linux_x86-musl-be
--platform linux
/386 --attach stdin
--attach stdout
--attach stderr
--volume
$(HOME
)/.m2
:/root
/.m2
:ro
--volume
`pwd`:/rocksdb-host
:ro
--volume
/rocksdb-local-build
--volume
`pwd`/java
/target
:/rocksdb-java-target
--env DEBUG_LEVEL
=$(DEBUG_LEVEL
) evolvedbinary
/rocksjava
:alpine3_x86-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-centos.sh
2261 rocksdbjavastaticdockerx86_64musl
:
2262 mkdir
-p java
/target
2263 docker run
--rm --name rocksdb_linux_x64-musl-be
--attach stdin
--attach stdout
--attach stderr
--volume
$(HOME
)/.m2
:/root
/.m2
:ro
--volume
`pwd`:/rocksdb-host
:ro
--volume
/rocksdb-local-build
--volume
`pwd`/java
/target
:/rocksdb-java-target
--env DEBUG_LEVEL
=$(DEBUG_LEVEL
) evolvedbinary
/rocksjava
:alpine3_x64-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-centos.sh
2265 rocksdbjavastaticdockerppc64lemusl
:
2266 mkdir
-p java
/target
2267 docker run
--rm --name rocksdb_linux_ppc64le-musl-be
--attach stdin
--attach stdout
--attach stderr
--volume
$(HOME
)/.m2
:/root
/.m2
:ro
--volume
`pwd`:/rocksdb-host
:ro
--volume
/rocksdb-local-build
--volume
`pwd`/java
/target
:/rocksdb-java-target
--env DEBUG_LEVEL
=$(DEBUG_LEVEL
) evolvedbinary
/rocksjava
:alpine3_ppc64le-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-centos.sh
2269 rocksdbjavastaticdockerarm64v8musl
:
2270 mkdir
-p java
/target
2271 docker run
--rm --name rocksdb_linux_arm64v8-musl-be
--attach stdin
--attach stdout
--attach stderr
--volume
$(HOME
)/.m2
:/root
/.m2
:ro
--volume
`pwd`:/rocksdb-host
:ro
--volume
/rocksdb-local-build
--volume
`pwd`/java
/target
:/rocksdb-java-target
--env DEBUG_LEVEL
=$(DEBUG_LEVEL
) evolvedbinary
/rocksjava
:alpine3_arm64v8-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-centos.sh
2273 rocksdbjavastaticpublish
: rocksdbjavastaticrelease rocksdbjavastaticpublishcentral
2275 rocksdbjavastaticpublishdocker
: rocksdbjavastaticreleasedocker rocksdbjavastaticpublishcentral
2277 rocksdbjavastaticpublishcentral
: rocksdbjavageneratepom
2278 mvn gpg
:sign-and-deploy-file
-Durl
=https
://oss.sonatype.org
/service
/local
/staging
/deploy
/maven2
/ -DrepositoryId
=sonatype-nexus-staging
-DpomFile
=java
/pom.xml
-Dfile
=java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-javadoc.jar
-Dclassifier
=javadoc
2279 mvn gpg
:sign-and-deploy-file
-Durl
=https
://oss.sonatype.org
/service
/local
/staging
/deploy
/maven2
/ -DrepositoryId
=sonatype-nexus-staging
-DpomFile
=java
/pom.xml
-Dfile
=java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-sources.jar
-Dclassifier
=sources
2280 mvn gpg
:sign-and-deploy-file
-Durl
=https
://oss.sonatype.org
/service
/local
/staging
/deploy
/maven2
/ -DrepositoryId
=sonatype-nexus-staging
-DpomFile
=java
/pom.xml
-Dfile
=java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-linux64.jar
-Dclassifier
=linux64
2281 mvn gpg
:sign-and-deploy-file
-Durl
=https
://oss.sonatype.org
/service
/local
/staging
/deploy
/maven2
/ -DrepositoryId
=sonatype-nexus-staging
-DpomFile
=java
/pom.xml
-Dfile
=java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-linux32.jar
-Dclassifier
=linux32
2282 mvn gpg
:sign-and-deploy-file
-Durl
=https
://oss.sonatype.org
/service
/local
/staging
/deploy
/maven2
/ -DrepositoryId
=sonatype-nexus-staging
-DpomFile
=java
/pom.xml
-Dfile
=java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-linux64-musl.jar
-Dclassifier
=linux64-musl
2283 mvn gpg
:sign-and-deploy-file
-Durl
=https
://oss.sonatype.org
/service
/local
/staging
/deploy
/maven2
/ -DrepositoryId
=sonatype-nexus-staging
-DpomFile
=java
/pom.xml
-Dfile
=java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-linux32-musl.jar
-Dclassifier
=linux32-musl
2284 mvn gpg
:sign-and-deploy-file
-Durl
=https
://oss.sonatype.org
/service
/local
/staging
/deploy
/maven2
/ -DrepositoryId
=sonatype-nexus-staging
-DpomFile
=java
/pom.xml
-Dfile
=java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-osx.jar
-Dclassifier
=osx
2285 mvn gpg
:sign-and-deploy-file
-Durl
=https
://oss.sonatype.org
/service
/local
/staging
/deploy
/maven2
/ -DrepositoryId
=sonatype-nexus-staging
-DpomFile
=java
/pom.xml
-Dfile
=java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-win64.jar
-Dclassifier
=win64
2286 mvn gpg
:sign-and-deploy-file
-Durl
=https
://oss.sonatype.org
/service
/local
/staging
/deploy
/maven2
/ -DrepositoryId
=sonatype-nexus-staging
-DpomFile
=java
/pom.xml
-Dfile
=java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar
2288 rocksdbjavageneratepom
:
2289 cd java
;cat pom.xml.template | sed
's/\$${ROCKSDB_JAVA_VERSION}/$(ROCKSDB_JAVA_VERSION)/' > pom.xml
2291 # A version of each $(LIBOBJECTS) compiled with -fPIC
2294 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) -fPIC
-c
$< -o
$@
$(COVERAGEFLAGS
)
2296 rocksdbjava
: $(LIB_OBJECTS
)
2297 ifeq ($(JAVA_HOME
),)
2298 $(error JAVA_HOME is not set
)
2300 $(AM_V_GEN
)cd java
;$(MAKE
) javalib
;
2301 $(AM_V_at
)rm -f .
/java
/target
/$(ROCKSDBJNILIB
)
2302 $(AM_V_at
)$(CXX
) $(CXXFLAGS
) -I.
/java
/.
$(JAVA_INCLUDE
) -shared
-fPIC
-o .
/java
/target
/$(ROCKSDBJNILIB
) $(JNI_NATIVE_SOURCES
) $(LIB_OBJECTS
) $(JAVA_LDFLAGS
) $(COVERAGEFLAGS
)
2303 $(AM_V_at
)cd java
;jar
-cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
2304 $(AM_V_at
)cd java
/target
;jar
-uf
$(ROCKSDB_JAR
) $(ROCKSDBJNILIB
)
2305 $(AM_V_at
)cd java
/target
/classes
;jar
-uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2306 $(AM_V_at
)openssl sha1 java
/target
/$(ROCKSDB_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR
).sha1
2309 cd java
;$(MAKE
) clean;
2311 jtest_compile
: rocksdbjava
2312 cd java
;$(MAKE
) java_test
2315 cd java
;$(MAKE
) run_test
2318 cd java
;$(MAKE
) sample
;$(MAKE
) test;
2319 $(PYTHON
) tools
/check_all_python.py
# TODO peterd: find a better place for this check in CI targets
2322 cd java
;$(MAKE
) db_bench
;
2324 commit_prereq
: build_tools
/rocksdb-lego-determinator \
2325 build_tools
/precommit_checker.py
2326 J
=$(J
) build_tools
/precommit_checker.py unit unit_481 clang_unit release release_481 clang_release tsan asan ubsan lite unit_non_shm
2327 $(MAKE
) clean && $(MAKE
) jclean
&& $(MAKE
) rocksdbjava
;
2329 # ---------------------------------------------------------------------------
2330 # Platform-specific compilation
2331 # ---------------------------------------------------------------------------
2333 ifeq ($(PLATFORM
), IOS
)
2334 # For iOS, create universal object files to be used on both the simulator and
2336 XCODEROOT
=$(shell xcode-select
-print-path
)
2337 PLATFORMSROOT
=$(XCODEROOT
)/Platforms
2338 SIMULATORROOT
=$(PLATFORMSROOT
)/iPhoneSimulator.platform
/Developer
2339 DEVICEROOT
=$(PLATFORMSROOT
)/iPhoneOS.platform
/Developer
2340 IOSVERSION
=$(shell defaults read
$(PLATFORMSROOT
)/iPhoneOS.platform
/version CFBundleShortVersionString
)
2343 mkdir
-p ios-x86
/$(dir $@
)
2344 $(CXX
) $(CXXFLAGS
) -isysroot
$(SIMULATORROOT
)/SDKs
/iPhoneSimulator
$(IOSVERSION
).sdk
-arch i686
-arch x86_64
-c
$< -o ios-x86
/$@
2345 mkdir
-p ios-arm
/$(dir $@
)
2346 xcrun
-sdk iphoneos
$(CXX
) $(CXXFLAGS
) -isysroot
$(DEVICEROOT
)/SDKs
/iPhoneOS
$(IOSVERSION
).sdk
-arch armv6
-arch armv7
-arch armv7s
-arch arm64
-c
$< -o ios-arm
/$@
2347 lipo ios-x86
/$@ ios-arm
/$@
-create
-output
$@
2350 mkdir
-p ios-x86
/$(dir $@
)
2351 $(CC
) $(CFLAGS
) -isysroot
$(SIMULATORROOT
)/SDKs
/iPhoneSimulator
$(IOSVERSION
).sdk
-arch i686
-arch x86_64
-c
$< -o ios-x86
/$@
2352 mkdir
-p ios-arm
/$(dir $@
)
2353 xcrun
-sdk iphoneos
$(CC
) $(CFLAGS
) -isysroot
$(DEVICEROOT
)/SDKs
/iPhoneOS
$(IOSVERSION
).sdk
-arch armv6
-arch armv7
-arch armv7s
-arch arm64
-c
$< -o ios-arm
/$@
2354 lipo ios-x86
/$@ ios-arm
/$@
-create
-output
$@
2357 ifeq ($(HAVE_POWER8
),1)
2358 $(OBJ_DIR
)/util
/crc32c_ppc.o
: util
/crc32c_ppc.c
2359 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
2361 $(OBJ_DIR
)/util
/crc32c_ppc_asm.o
: util
/crc32c_ppc_asm.S
2362 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
2364 $(OBJ_DIR
)/%.o
: %.
cc
2365 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) -c
$< -o
$@
$(COVERAGEFLAGS
)
2367 $(OBJ_DIR
)/%.o
: %.
cpp
2368 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) -c
$< -o
$@
$(COVERAGEFLAGS
)
2371 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
2374 # ---------------------------------------------------------------------------
2375 # Source files dependencies detection
2376 # ---------------------------------------------------------------------------
2378 DEPFILES
= $(patsubst %.
cc, $(OBJ_DIR
)/%.
cc.d
, $(ALL_SOURCES
))
2379 DEPFILES
+ = $(patsubst %.c
, $(OBJ_DIR
)/%.c.d
, $(LIB_SOURCES_C
) $(TEST_MAIN_SOURCES_C
))
2380 ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX
),1)
2381 DEPFILES
+=$(patsubst %.
cpp, $(OBJ_DIR
)/%.
cpp.d
, $(FOLLY_SOURCES
))
2384 # Add proper dependency support so changing a .h file forces a .cc file to
2387 # The .d file indicates .cc file's dependencies on .h files. We generate such
2388 # dependency by g++'s -MM option, whose output is a make dependency rule.
2389 $(OBJ_DIR
)/%.
cc.d
: %.
cc
2390 @mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
2391 -MM
-MT
'$@' -MT
'$(<:.cc=.o)' -MT
'$(<:%.cc=$(OBJ_DIR)/%.o)' \
2394 $(OBJ_DIR
)/%.
cpp.d
: %.
cpp
2395 @mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
2396 -MM
-MT
'$@' -MT
'$(<:.cpp=.o)' -MT
'$(<:%.cpp=$(OBJ_DIR)/%.o)' \
2399 ifeq ($(HAVE_POWER8
),1)
2400 DEPFILES_C
= $(patsubst %.c
, $(OBJ_DIR
)/%.c.d
, $(LIB_SOURCES_C
))
2401 DEPFILES_ASM
= $(patsubst %.S
, $(OBJ_DIR
)/%.S.d
, $(LIB_SOURCES_ASM
))
2403 $(OBJ_DIR
)/%.c.d
: %.c
2404 @
$(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
2405 -MM
-MT
'$@' -MT
'$(<:.c=.o)' "$<" -o
'$@'
2407 $(OBJ_DIR
)/%.S.d
: %.S
2408 @
$(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
2409 -MM
-MT
'$@' -MT
'$(<:.S=.o)' "$<" -o
'$@'
2411 $(DEPFILES_C
): %.c.d
2413 $(DEPFILES_ASM
): %.S.d
2414 depend
: $(DEPFILES
) $(DEPFILES_C
) $(DEPFILES_ASM
)
2419 build_subset_tests
: $(ROCKSDBTESTS_SUBSET
)
2420 $(AM_V_GEN
)if
[ -n
"$${ROCKSDBTESTS_SUBSET_TESTS_TO_FILE}" ]; then echo
"$(ROCKSDBTESTS_SUBSET)" > "$${ROCKSDBTESTS_SUBSET_TESTS_TO_FILE}"; else echo
"$(ROCKSDBTESTS_SUBSET)"; fi
2422 # if the make goal is either "clean" or "format", we shouldn't
2423 # try to import the *.d files.
2424 # TODO(kailiu) The unfamiliarity of Make's conditions leads to the ugly
2426 ifneq ($(MAKECMDGOALS
),clean)
2427 ifneq ($(MAKECMDGOALS
),format
)
2428 ifneq ($(MAKECMDGOALS
),jclean
)
2429 ifneq ($(MAKECMDGOALS
),jtest
)
2430 ifneq ($(MAKECMDGOALS
),rocksdbjavastatic
)
2431 ifneq ($(MAKECMDGOALS
),rocksdbjavastatic_deps
)
2432 ifneq ($(MAKECMDGOALS
),package
)
2433 ifneq ($(MAKECMDGOALS
),analyze
)
2434 -include $(DEPFILES
)