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
)
13 CLEAN_FILES
= # deliberately empty, so we can append below.
14 CFLAGS
+= ${EXTRA_CFLAGS}
15 CXXFLAGS
+= ${EXTRA_CXXFLAGS}
16 LDFLAGS
+= $(EXTRA_LDFLAGS
)
17 MACHINE ?
= $(shell uname
-m
)
18 ARFLAGS
= ${EXTRA_ARFLAGS} rs
21 # Transform parallel LOG output into something more readable.
22 perl_command
= perl
-n \
23 -e
'@a=split("\t",$$_,-1); $$t=$$a[8];' \
24 -e
'$$t =~ /.*if\s\[\[\s"(.*?\.[\w\/]+)/ and $$t=$$1;' \
25 -e
'$$t =~ s,^\./,,;' \
26 -e
'$$t =~ s, >.*,,; chomp $$t;' \
27 -e
'$$t =~ /.*--gtest_filter=(.*?\.[\w\/]+)/ and $$t=$$1;' \
28 -e
'printf "%7.3f %s %s\n", $$a[3], $$a[6] == 0 ? "PASS" : "FAIL", $$t'
29 quoted_perl_command
= $(subst ','\'',$(perl_command))
31 # DEBUG_LEVEL can have three values:
32 # * DEBUG_LEVEL=2; this is the ultimate debug mode. It will compile rocksdb
33 # without any optimizations. To compile with level 2, issue `make dbg`
34 # * DEBUG_LEVEL=1; debug level 1 enables all assertions and debug code, but
35 # compiles rocksdb with -O2 optimizations. this is the default debug level.
36 # `make all` or `make <binary_target>` compile RocksDB with debug level 1.
37 # We use this debug level when developing RocksDB.
38 # * DEBUG_LEVEL=0; this is the debug level we use for release. If you're
39 # running rocksdb in production you most definitely want to compile RocksDB
40 # with debug level 0. To compile with level 0, run `make shared_lib`,
41 # `make install-shared`, `make static_lib`, `make install-static` or
44 # Set the default DEBUG_LEVEL to 1
47 # LIB_MODE says whether or not to use/build "shared" or "static" libraries.
48 # Mode "static" means to link against static libraries (.a)
49 # Mode "shared" means to link against shared libraries (.so, .sl, .dylib, etc)
51 # Set the default LIB_MODE to static
54 # OBJ_DIR is where the object files reside. Default to the current directory
57 # Check the MAKECMDGOALS to set the DEBUG_LEVEL and LIB_MODE appropriately
59 ifneq ($(filter clean release
install, $(MAKECMDGOALS
)),)
62 ifneq ($(filter dbg
, $(MAKECMDGOALS
)),)
64 else ifneq ($(filter shared_lib install-shared
, $(MAKECMDGOALS
)),)
67 else ifneq ($(filter static_lib install-static
, $(MAKECMDGOALS
)),)
70 else ifneq ($(filter jtest rocksdbjava
%, $(MAKECMDGOALS
)),)
73 ifneq ($(findstring rocksdbjavastatic
, $(MAKECMDGOALS
)),)
75 ifneq ($(DEBUG_LEVEL
),2)
78 ifeq ($(MAKECMDGOALS
),rocksdbjavastaticpublish
)
84 $(info $$DEBUG_LEVEL is
${DEBUG_LEVEL})
89 ifneq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
90 # Be backward compatible and support older format where OPT=-DROCKSDB_LITE is
91 # specified instead of LITE=1 on the command line.
94 else ifeq ($(LITE
), 1)
95 ifeq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
100 # Figure out optimize level.
101 ifneq ($(DEBUG_LEVEL
), 2)
103 OPTIMIZE_LEVEL ?
= -O2
105 OPTIMIZE_LEVEL ?
= -Os
108 # `OPTIMIZE_LEVEL` is empty when the user does not set it and `DEBUG_LEVEL=2`.
109 # In that case, the compiler default (`-O0` for gcc and clang) will be used.
110 OPT
+= $(OPTIMIZE_LEVEL
)
112 # compile with -O2 if debug level is not 2
113 ifneq ($(DEBUG_LEVEL
), 2)
114 OPT
+= -fno-omit-frame-pointer
115 # Skip for archs that don't support -momit-leaf-frame-pointer
116 ifeq (,$(shell $(CXX
) -fsyntax-only
-momit-leaf-frame-pointer
-xc
/dev
/null
2>&1))
117 OPT
+= -momit-leaf-frame-pointer
121 ifeq (,$(shell $(CXX
) -fsyntax-only
-maltivec
-xc
/dev
/null
2>&1))
122 CXXFLAGS
+= -DHAS_ALTIVEC
123 CFLAGS
+= -DHAS_ALTIVEC
127 ifeq (,$(shell $(CXX
) -fsyntax-only
-mcpu
=power8
-xc
/dev
/null
2>&1))
128 CXXFLAGS
+= -DHAVE_POWER8
129 CFLAGS
+= -DHAVE_POWER8
133 # if we're compiling for shared libraries, add the shared flags
134 ifeq ($(LIB_MODE
),shared
)
135 CXXFLAGS
+= $(PLATFORM_SHARED_CFLAGS
) -DROCKSDB_DLL
136 CFLAGS
+= $(PLATFORM_SHARED_CFLAGS
) -DROCKSDB_DLL
140 ifeq ($(USE_COROUTINES
), 1)
142 # glog/logging.h requires HAVE_CXX11_ATOMIC
143 OPT
+= -DUSE_COROUTINES
-DHAVE_CXX11_ATOMIC
144 ROCKSDB_CXX_STANDARD
= c
++2a
146 ifneq ($(USE_CLANG
), 1)
147 ROCKSDB_CXX_STANDARD
= c
++20
148 PLATFORM_CXXFLAGS
+= -fcoroutines
152 # if we're compiling for release, compile without debug code (-DNDEBUG)
153 ifeq ($(DEBUG_LEVEL
),0)
156 ifneq ($(USE_RTTI
), 1)
157 CXXFLAGS
+= -fno-rtti
159 CXXFLAGS
+= -DROCKSDB_USE_RTTI
162 ifneq ($(USE_RTTI
), 0)
163 CXXFLAGS
+= -DROCKSDB_USE_RTTI
165 CXXFLAGS
+= -fno-rtti
168 ifdef ASSERT_STATUS_CHECKED
169 # For ASC, turn off constructor elision, preventing the case where a constructor returned
170 # by a method may pass the ASC check if the status is checked in the inner method. Forcing
171 # the copy constructor to be invoked disables the optimization and will cause the calling method
172 # to check the status in order to prevent an error from being raised.
173 PLATFORM_CXXFLAGS
+= -fno-elide-constructors
174 ifeq ($(filter -DROCKSDB_ASSERT_STATUS_CHECKED
,$(OPT
)),)
175 OPT
+= -DROCKSDB_ASSERT_STATUS_CHECKED
179 $(warning Warning
: Compiling in debug mode. Don
't use the resulting binary in production)
182 # `USE_LTO=1` enables link-time optimizations. Among other things, this enables
183 # more devirtualization opportunities and inlining across translation units.
184 # This can save significant overhead introduced by RocksDB's pluggable
185 # interfaces/internal abstractions, like in the iterator hierarchy. It works
186 # better when combined with profile-guided optimizations (not currently
187 # supported natively in Makefile).
190 LDFLAGS
+= -flto
-fuse-linker-plugin
193 # `COERCE_CONTEXT_SWITCH=1` will inject spurious wakeup and
194 # random length of sleep or context switch at critical
195 # points (e.g, before acquring db mutex) in RocksDB.
196 # In this way, it coerces as many excution orders as possible in the hope of
197 # exposing the problematic excution order
198 COERCE_CONTEXT_SWITCH ?
= 0
199 ifeq ($(COERCE_CONTEXT_SWITCH
), 1)
200 OPT
+= -DCOERCE_CONTEXT_SWITCH
203 #-----------------------------------------------
206 AM_DEFAULT_VERBOSITY ?
= 0
208 AM_V_GEN
= $(am__v_GEN_
$(V
))
209 am__v_GEN_
= $(am__v_GEN_
$(AM_DEFAULT_VERBOSITY
))
210 am__v_GEN_0
= @echo
" GEN " $@
;
212 AM_V_at
= $(am__v_at_
$(V
))
213 am__v_at_
= $(am__v_at_
$(AM_DEFAULT_VERBOSITY
))
217 AM_V_CC
= $(am__v_CC_
$(V
))
218 am__v_CC_
= $(am__v_CC_
$(AM_DEFAULT_VERBOSITY
))
219 am__v_CC_0
= @echo
" CC " $@
;
222 AM_V_CCLD
= $(am__v_CCLD_
$(V
))
223 am__v_CCLD_
= $(am__v_CCLD_
$(AM_DEFAULT_VERBOSITY
))
224 ifneq ($(SKIP_LINK
), 1)
225 am__v_CCLD_0
= @echo
" CCLD " $@
;
228 am__v_CCLD_0
= @echo
" !CCLD " $@
; true skip
229 am__v_CCLD_1
= true skip
231 AM_V_AR
= $(am__v_AR_
$(V
))
232 am__v_AR_
= $(am__v_AR_
$(AM_DEFAULT_VERBOSITY
))
233 am__v_AR_0
= @echo
" AR " $@
;
236 AM_LINK
= $(AM_V_CCLD
)$(CXX
) -L.
$(patsubst lib
%.a
, -l
%, $(patsubst lib
%.
$(PLATFORM_SHARED_EXT
), -l
%, $^
)) $(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
) $(COVERAGEFLAGS
)
237 AM_SHARE
= $(AM_V_CCLD
) $(CXX
) $(PLATFORM_SHARED_LDFLAGS
)$@
-L.
$(patsubst lib
%.
$(PLATFORM_SHARED_EXT
), -l
%, $^
) $(EXEC_LDFLAGS
) $(LDFLAGS
) -o
$@
239 # Detect what platform we're building on.
240 # Export some common variables that might have been passed as Make variables
241 # instead of environment variables.
242 dummy
:= $(shell (export ROCKSDB_ROOT
="$(CURDIR)"; \
243 export CXXFLAGS
="$(EXTRA_CXXFLAGS)"; \
244 export LDFLAGS
="$(EXTRA_LDFLAGS)"; \
245 export COMPILE_WITH_ASAN
="$(COMPILE_WITH_ASAN)"; \
246 export COMPILE_WITH_TSAN
="$(COMPILE_WITH_TSAN)"; \
247 export COMPILE_WITH_UBSAN
="$(COMPILE_WITH_UBSAN)"; \
248 export PORTABLE
="$(PORTABLE)"; \
249 export ROCKSDB_NO_FBCODE
="$(ROCKSDB_NO_FBCODE)"; \
250 export USE_CLANG
="$(USE_CLANG)"; \
251 export LIB_MODE
="$(LIB_MODE)"; \
252 export ROCKSDB_CXX_STANDARD
="$(ROCKSDB_CXX_STANDARD)"; \
253 export USE_FOLLY
="$(USE_FOLLY)"; \
254 "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk"))
255 # this file is generated by the previous line to set build flags and sources
256 include make_config.mk
258 ROCKSDB_PLUGIN_MKS
= $(foreach plugin
, $(ROCKSDB_PLUGINS
), plugin
/$(plugin
)/*.mk
)
259 include $(ROCKSDB_PLUGIN_MKS
)
260 ROCKSDB_PLUGIN_PROTO
=ROCKSDB_NAMESPACE
::ObjectLibrary\
&, const std
::string\
&
261 ROCKSDB_PLUGIN_SOURCES
= $(foreach p
, $(ROCKSDB_PLUGINS
), $(foreach source
, $($(p
)_SOURCES
), plugin
/$(p
)/$(source
)))
262 ROCKSDB_PLUGIN_HEADERS
= $(foreach p
, $(ROCKSDB_PLUGINS
), $(foreach header
, $($(p
)_HEADERS
), plugin
/$(p
)/$(header
)))
263 ROCKSDB_PLUGIN_LIBS
= $(foreach p
, $(ROCKSDB_PLUGINS
), $(foreach lib
, $($(p
)_LIBS
), -l
$(lib
)))
264 ROCKSDB_PLUGIN_W_FUNCS
= $(foreach p
, $(ROCKSDB_PLUGINS
), $(if
$($(p
)_FUNC
), $(p
)))
265 ROCKSDB_PLUGIN_EXTERNS
= $(foreach p
, $(ROCKSDB_PLUGIN_W_FUNCS
), int
$($(p
)_FUNC
)($(ROCKSDB_PLUGIN_PROTO
));)
266 ROCKSDB_PLUGIN_BUILTINS
= $(foreach p
, $(ROCKSDB_PLUGIN_W_FUNCS
), {\"$(p
)\"\
, $($(p
)_FUNC
)}\
,)
267 ROCKSDB_PLUGIN_LDFLAGS
= $(foreach plugin
, $(ROCKSDB_PLUGINS
), $($(plugin
)_LDFLAGS
))
268 ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES
= $(foreach plugin
, $(ROCKSDB_PLUGINS
), $($(plugin
)_PKGCONFIG_REQUIRES
))
270 CXXFLAGS
+= $(foreach plugin
, $(ROCKSDB_PLUGINS
), $($(plugin
)_CXXFLAGS
))
271 PLATFORM_LDFLAGS
+= $(ROCKSDB_PLUGIN_LDFLAGS
)
273 # Patch up the link flags for JNI from the plugins
274 JAVA_LDFLAGS
+= $(ROCKSDB_PLUGIN_LDFLAGS
)
275 JAVA_STATIC_LDFLAGS
+= $(ROCKSDB_PLUGIN_LDFLAGS
)
277 # Patch up the list of java native sources with files from the plugins
278 ROCKSDB_PLUGIN_JNI_NATIVE_SOURCES
= $(foreach plugin
, $(ROCKSDB_PLUGINS
), $(foreach source
, $($(plugin
)_JNI_NATIVE_SOURCES
), plugin
/$(plugin
)/$(source
)))
279 ALL_JNI_NATIVE_SOURCES
= $(JNI_NATIVE_SOURCES
) $(ROCKSDB_PLUGIN_JNI_NATIVE_SOURCES
)
280 ROCKSDB_PLUGIN_JNI_CXX_INCLUDEFLAGS
= $(foreach plugin
, $(ROCKSDB_PLUGINS
), -I.
/plugin
/$(plugin
))
282 ifneq ($(strip $(ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES
)),)
283 LDFLAGS
:= $(LDFLAGS
) $(shell pkg-config
--libs
$(ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES
))
284 ifneq ($(.SHELLSTATUS
),0)
285 $(error pkg-config failed
)
287 CXXFLAGS
:= $(CXXFLAGS
) $(shell pkg-config
--cflags $(ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES
))
288 ifneq ($(.SHELLSTATUS
),0)
289 $(error pkg-config failed
)
293 CXXFLAGS
+= $(ARCHFLAG
)
295 ifeq (,$(shell $(CXX
) -fsyntax-only
-march
=armv8-a
+crc
+crypto
-xc
/dev
/null
2>&1))
296 ifneq ($(PLATFORM
),OS_MACOSX
)
297 CXXFLAGS
+= -march
=armv8-a
+crc
+crypto
298 CFLAGS
+= -march
=armv8-a
+crc
+crypto
304 CLEAN_FILES
+= make_config.mk rocksdb.
pc
307 $(info $(shell uname
-a
))
308 $(info $(shell $(CC
) --version
))
309 $(info $(shell $(CXX
) --version
))
312 missing_make_config_paths
:= $(shell \
313 grep
"\./\S*\|/\S*" -o
$(CURDIR
)/make_config.mk | \
315 do
[ -e
$$path ] || echo
$$path; \
316 done |
sort | uniq | grep
-v
"/DOES/NOT/EXIST")
318 $(foreach path
, $(missing_make_config_paths
), \
319 $(warning Warning
: $(path
) does not exist
))
321 ifeq ($(PLATFORM
), OS_AIX
)
323 else ifneq ($(PLATFORM
), IOS
)
327 # no debug info for IOS, that will make our library big
331 ifeq ($(PLATFORM
), OS_AIX
)
336 ifeq ($(PLATFORM
), OS_SOLARIS
)
337 PLATFORM_CXXFLAGS
+= -D _GLIBCXX_USE_C99
339 ifneq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
341 CFLAGS
+= -fno-exceptions
342 CXXFLAGS
+= -fno-exceptions
343 # LUA is not supported under ROCKSDB_LITE
347 ifeq ($(LIB_MODE
),shared
)
348 # So that binaries are executable from build location, in addition to install location
349 EXEC_LDFLAGS
+= -Wl
,-rpath
-Wl
,'$$ORIGIN'
352 ifeq ($(PLATFORM
), OS_MACOSX
)
353 ifeq ($(ARCHFLAG
), -arch arm64
)
354 ifneq ($(MACHINE
), arm64
)
355 # If we're building on a non-arm64 machine but targeting arm64 Mac, we need to disable
356 # linking with jemalloc (as it won't be arm64-compatible) and remove some other options
357 # set during platform detection
359 PLATFORM_CFLAGS
:= $(filter-out -march
=native
-DHAVE_SSE42
-DHAVE_AVX2
, $(PLATFORM_CFLAGS
))
360 PLATFORM_CXXFLAGS
:= $(filter-out -march
=native
-DHAVE_SSE42
-DHAVE_AVX2
, $(PLATFORM_CXXFLAGS
))
365 # ASAN doesn't work well with jemalloc. If we're compiling with ASAN, we should use regular malloc.
366 ifdef COMPILE_WITH_ASAN
368 ASAN_OPTIONS?
=detect_stack_use_after_return
=1
370 EXEC_LDFLAGS
+= -fsanitize
=address
371 PLATFORM_CCFLAGS
+= -fsanitize
=address
372 PLATFORM_CXXFLAGS
+= -fsanitize
=address
373 ifeq ($(LIB_MODE
),shared
)
375 # Fix false ODR violation; see https://github.com/google/sanitizers/issues/1017
376 EXEC_LDFLAGS
+= -mllvm
-asan-use-private-alias
=1
377 PLATFORM_CXXFLAGS
+= -mllvm
-asan-use-private-alias
=1
382 # TSAN doesn't work well with jemalloc. If we're compiling with TSAN, we should use regular malloc.
383 ifdef COMPILE_WITH_TSAN
385 EXEC_LDFLAGS
+= -fsanitize
=thread
386 PLATFORM_CCFLAGS
+= -fsanitize
=thread
-fPIC
-DFOLLY_SANITIZE_THREAD
387 PLATFORM_CXXFLAGS
+= -fsanitize
=thread
-fPIC
-DFOLLY_SANITIZE_THREAD
388 # Turn off -pg when enabling TSAN testing, because that induces
389 # a link failure. TODO: find the root cause
391 # LUA is not supported under TSAN
393 # Limit keys for crash test under TSAN to avoid error:
394 # "ThreadSanitizer: DenseSlabAllocator overflow. Dying."
395 CRASH_TEST_EXT_ARGS
+= --max_key
=1000000
398 # AIX doesn't work with -pg
399 ifeq ($(PLATFORM
), OS_AIX
)
403 # USAN doesn't work well with jemalloc. If we're compiling with USAN, we should use regular malloc.
404 ifdef COMPILE_WITH_UBSAN
406 # Suppress alignment warning because murmurhash relies on casting unaligned
407 # memory to integer. Fixing it may cause performance regression. 3-way crc32
408 # relies on it too, although it can be rewritten to eliminate with minimal
409 # performance regression.
410 EXEC_LDFLAGS
+= -fsanitize
=undefined
-fno-sanitize-recover
=all
411 PLATFORM_CCFLAGS
+= -fsanitize
=undefined
-fno-sanitize-recover
=all -DROCKSDB_UBSAN_RUN
412 PLATFORM_CXXFLAGS
+= -fsanitize
=undefined
-fno-sanitize-recover
=all -DROCKSDB_UBSAN_RUN
415 ifdef ROCKSDB_VALGRIND_RUN
416 PLATFORM_CCFLAGS
+= -DROCKSDB_VALGRIND_RUN
417 PLATFORM_CXXFLAGS
+= -DROCKSDB_VALGRIND_RUN
419 ifdef ROCKSDB_FULL_VALGRIND_RUN
420 # Some tests are slow when run under valgrind and are only run when
421 # explicitly requested via the ROCKSDB_FULL_VALGRIND_RUN compiler flag.
422 PLATFORM_CCFLAGS
+= -DROCKSDB_VALGRIND_RUN
-DROCKSDB_FULL_VALGRIND_RUN
423 PLATFORM_CXXFLAGS
+= -DROCKSDB_VALGRIND_RUN
-DROCKSDB_FULL_VALGRIND_RUN
426 ifndef DISABLE_JEMALLOC
428 PLATFORM_CXXFLAGS
+= -DROCKSDB_JEMALLOC
-DJEMALLOC_NO_DEMANGLE
429 PLATFORM_CCFLAGS
+= -DROCKSDB_JEMALLOC
-DJEMALLOC_NO_DEMANGLE
430 ifeq ($(USE_FOLLY
),1)
431 PLATFORM_CXXFLAGS
+= -DUSE_JEMALLOC
432 PLATFORM_CCFLAGS
+= -DUSE_JEMALLOC
434 ifeq ($(USE_FOLLY_LITE
),1)
435 PLATFORM_CXXFLAGS
+= -DUSE_JEMALLOC
436 PLATFORM_CCFLAGS
+= -DUSE_JEMALLOC
439 ifdef WITH_JEMALLOC_FLAG
440 PLATFORM_LDFLAGS
+= -ljemalloc
441 JAVA_LDFLAGS
+= -ljemalloc
443 EXEC_LDFLAGS
:= $(JEMALLOC_LIB
) $(EXEC_LDFLAGS
)
444 PLATFORM_CXXFLAGS
+= $(JEMALLOC_INCLUDE
)
445 PLATFORM_CCFLAGS
+= $(JEMALLOC_INCLUDE
)
452 ifndef GTEST_THROW_ON_FAILURE
453 export GTEST_THROW_ON_FAILURE
=1
455 ifndef GTEST_HAS_EXCEPTIONS
456 export GTEST_HAS_EXCEPTIONS
=1
459 GTEST_DIR
= third-party
/gtest-1.8
.1/fused-src
460 # AIX: pre-defined system headers are surrounded by an extern "C" block
461 ifeq ($(PLATFORM
), OS_AIX
)
462 PLATFORM_CCFLAGS
+= -I
$(GTEST_DIR
)
463 PLATFORM_CXXFLAGS
+= -I
$(GTEST_DIR
)
465 PLATFORM_CCFLAGS
+= -isystem
$(GTEST_DIR
)
466 PLATFORM_CXXFLAGS
+= -isystem
$(GTEST_DIR
)
469 # This provides a Makefile simulation of a Meta-internal folly integration.
470 # It is not validated for general use.
472 # USE_FOLLY links the build targets with libfolly.a. The latter could be
473 # built using 'make build_folly', or built externally and specified in
474 # the CXXFLAGS and EXTRA_LDFLAGS env variables. The build_detect_platform
475 # script tries to detect if an external folly dependency has been specified.
476 # If not, it exports FOLLY_PATH to the path of the installed Folly and
477 # dependency libraries.
479 # USE_FOLLY_LITE cherry picks source files from Folly to include in the
480 # RocksDB library. Its faster and has fewer dependencies on 3rd party
481 # libraries, but with limited functionality. For example, coroutine
482 # functionality is not available.
483 ifeq ($(USE_FOLLY
),1)
484 ifeq ($(USE_FOLLY_LITE
),1)
485 $(error Please specify only one of USE_FOLLY and USE_FOLLY_LITE
)
487 ifneq ($(strip $(FOLLY_PATH
)),)
488 BOOST_PATH
= $(shell (ls
-d
$(FOLLY_PATH
)/..
/boost
*))
489 DBL_CONV_PATH
= $(shell (ls
-d
$(FOLLY_PATH
)/..
/double-conversion
*))
490 GFLAGS_PATH
= $(shell (ls
-d
$(FOLLY_PATH
)/..
/gflags*))
491 GLOG_PATH
= $(shell (ls
-d
$(FOLLY_PATH
)/..
/glog
*))
492 LIBEVENT_PATH
= $(shell (ls
-d
$(FOLLY_PATH
)/..
/libevent
*))
493 XZ_PATH
= $(shell (ls
-d
$(FOLLY_PATH
)/..
/xz
*))
494 LIBSODIUM_PATH
= $(shell (ls
-d
$(FOLLY_PATH
)/..
/libsodium
*))
495 FMT_PATH
= $(shell (ls
-d
$(FOLLY_PATH
)/..
/fmt
*))
497 # For some reason, glog and fmt libraries are under either lib or lib64
498 GLOG_LIB_PATH
= $(shell (ls
-d
$(GLOG_PATH
)/lib
*))
499 FMT_LIB_PATH
= $(shell (ls
-d
$(FMT_PATH
)/lib
*))
501 # AIX: pre-defined system headers are surrounded by an extern "C" block
502 ifeq ($(PLATFORM
), OS_AIX
)
503 PLATFORM_CCFLAGS
+= -I
$(BOOST_PATH
)/include -I
$(DBL_CONV_PATH
)/include -I
$(GLOG_PATH
)/include -I
$(LIBEVENT_PATH
)/include -I
$(XZ_PATH
)/include -I
$(LIBSODIUM_PATH
)/include -I
$(FOLLY_PATH
)/include -I
$(FMT_PATH
)/include
504 PLATFORM_CXXFLAGS
+= -I
$(BOOST_PATH
)/include -I
$(DBL_CONV_PATH
)/include -I
$(GLOG_PATH
)/include -I
$(LIBEVENT_PATH
)/include -I
$(XZ_PATH
)/include -I
$(LIBSODIUM_PATH
)/include -I
$(FOLLY_PATH
)/include -I
$(FMT_PATH
)/include
506 PLATFORM_CCFLAGS
+= -isystem
$(BOOST_PATH
)/include -isystem
$(DBL_CONV_PATH
)/include -isystem
$(GLOG_PATH
)/include -isystem
$(LIBEVENT_PATH
)/include -isystem
$(XZ_PATH
)/include -isystem
$(LIBSODIUM_PATH
)/include -isystem
$(FOLLY_PATH
)/include -isystem
$(FMT_PATH
)/include
507 PLATFORM_CXXFLAGS
+= -isystem
$(BOOST_PATH
)/include -isystem
$(DBL_CONV_PATH
)/include -isystem
$(GLOG_PATH
)/include -isystem
$(LIBEVENT_PATH
)/include -isystem
$(XZ_PATH
)/include -isystem
$(LIBSODIUM_PATH
)/include -isystem
$(FOLLY_PATH
)/include -isystem
$(FMT_PATH
)/include
510 # Add -ldl at the end as gcc resolves a symbol in a library by searching only in libraries specified later
511 # in the command line
512 PLATFORM_LDFLAGS
+= $(FOLLY_PATH
)/lib
/libfolly.a
$(BOOST_PATH
)/lib
/libboost_context.a
$(BOOST_PATH
)/lib
/libboost_filesystem.a
$(BOOST_PATH
)/lib
/libboost_atomic.a
$(BOOST_PATH
)/lib
/libboost_program_options.a
$(BOOST_PATH
)/lib
/libboost_regex.a
$(BOOST_PATH
)/lib
/libboost_system.a
$(BOOST_PATH
)/lib
/libboost_thread.a
$(DBL_CONV_PATH
)/lib
/libdouble-conversion.a
$(FMT_LIB_PATH
)/libfmt.a
$(GLOG_LIB_PATH
)/libglog.so
$(GFLAGS_PATH
)/lib
/libgflags.so
.2.2 $(LIBEVENT_PATH
)/lib
/libevent-2.1.so
-ldl
513 PLATFORM_LDFLAGS
+= -Wl
,-rpath
=$(GFLAGS_PATH
)/lib
-Wl
,-rpath
=$(GLOG_LIB_PATH
) -Wl
,-rpath
=$(LIBEVENT_PATH
)/lib
-Wl
,-rpath
=$(LIBSODIUM_PATH
)/lib
-Wl
,-rpath
=$(LIBEVENT_PATH
)/lib
515 PLATFORM_CCFLAGS
+= -DUSE_FOLLY
-DFOLLY_NO_CONFIG
516 PLATFORM_CXXFLAGS
+= -DUSE_FOLLY
-DFOLLY_NO_CONFIG
519 ifeq ($(USE_FOLLY_LITE
),1)
520 # Path to the Folly source code and include files
521 FOLLY_DIR
= .
/third-party
/folly
522 # AIX: pre-defined system headers are surrounded by an extern "C" block
523 ifeq ($(PLATFORM
), OS_AIX
)
524 PLATFORM_CCFLAGS
+= -I
$(FOLLY_DIR
)
525 PLATFORM_CXXFLAGS
+= -I
$(FOLLY_DIR
)
527 PLATFORM_CCFLAGS
+= -isystem
$(FOLLY_DIR
)
528 PLATFORM_CXXFLAGS
+= -isystem
$(FOLLY_DIR
)
530 PLATFORM_CCFLAGS
+= -DUSE_FOLLY
-DFOLLY_NO_CONFIG
531 PLATFORM_CXXFLAGS
+= -DUSE_FOLLY
-DFOLLY_NO_CONFIG
532 # TODO: fix linking with fbcode compiler config
533 PLATFORM_LDFLAGS
+= -lglog
536 ifdef TEST_CACHE_LINE_SIZE
537 PLATFORM_CCFLAGS
+= -DTEST_CACHE_LINE_SIZE
=$(TEST_CACHE_LINE_SIZE
)
538 PLATFORM_CXXFLAGS
+= -DTEST_CACHE_LINE_SIZE
=$(TEST_CACHE_LINE_SIZE
)
540 ifdef TEST_UINT128_COMPAT
541 PLATFORM_CCFLAGS
+= -DTEST_UINT128_COMPAT
=1
542 PLATFORM_CXXFLAGS
+= -DTEST_UINT128_COMPAT
=1
544 ifdef ROCKSDB_MODIFY_NPHASH
545 PLATFORM_CCFLAGS
+= -DROCKSDB_MODIFY_NPHASH
=1
546 PLATFORM_CXXFLAGS
+= -DROCKSDB_MODIFY_NPHASH
=1
549 # This (the first rule) must depend on "all".
552 WARNING_FLAGS
= -W
-Wextra
-Wall
-Wsign-compare
-Wshadow \
555 ifeq (,$(filter amd64
, $(MACHINE
)))
556 C_WARNING_FLAGS
= -Wstrict-prototypes
560 # Used by some teams in Facebook
561 WARNING_FLAGS
+= -Wshift-sign-overflow
564 ifeq ($(PLATFORM
), OS_OPENBSD
)
565 WARNING_FLAGS
+= -Wno-unused-lambda-capture
568 ifndef DISABLE_WARNING_AS_ERROR
569 WARNING_FLAGS
+= -Werror
576 LUA_INCLUDE
=$(LUA_PATH
)/include
579 LUA_INCLUDE_FILE
=$(LUA_INCLUDE
)/lualib.h
581 ifeq ("$(wildcard $(LUA_INCLUDE_FILE))", "")
582 # LUA_INCLUDE_FILE does not exist
583 $(error Cannot find lualib.h under
$(LUA_INCLUDE
). Try to specify both LUA_PATH and LUA_INCLUDE manually
)
585 LUA_FLAGS
= -I
$(LUA_INCLUDE
) -DLUA
-DLUA_COMPAT_ALL
586 CFLAGS
+= $(LUA_FLAGS
)
587 CXXFLAGS
+= $(LUA_FLAGS
)
590 LUA_LIB
= $(LUA_PATH
)/lib
/liblua.a
592 ifeq ("$(wildcard $(LUA_LIB))", "") # LUA_LIB does not exist
593 $(error
$(LUA_LIB
) does not exist. Try to specify both LUA_PATH and LUA_LIB manually
)
595 EXEC_LDFLAGS
+= $(LUA_LIB
)
599 ifeq ($(NO_THREEWAY_CRC32C
), 1)
600 CXXFLAGS
+= -DNO_THREEWAY_CRC32C
603 CFLAGS
+= $(C_WARNING_FLAGS
) $(WARNING_FLAGS
) -I.
-I.
/include $(PLATFORM_CCFLAGS
) $(OPT
)
604 CXXFLAGS
+= $(WARNING_FLAGS
) -I.
-I.
/include $(PLATFORM_CXXFLAGS
) $(OPT
) -Woverloaded-virtual
-Wnon-virtual-dtor
-Wno-missing-field-initializers
606 # Allow offsetof to work on non-standard layout types. Some compiler could
607 # completely reject our usage of offsetof, but we will solve that when it
609 CXXFLAGS
+= -Wno-invalid-offsetof
611 LDFLAGS
+= $(PLATFORM_LDFLAGS
)
613 LIB_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(LIB_SOURCES
))
614 LIB_OBJECTS
+= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(ROCKSDB_PLUGIN_SOURCES
))
615 ifeq ($(HAVE_POWER8
),1)
616 LIB_OBJECTS
+= $(patsubst %.c
, $(OBJ_DIR
)/%.o
, $(LIB_SOURCES_C
))
617 LIB_OBJECTS
+= $(patsubst %.S
, $(OBJ_DIR
)/%.o
, $(LIB_SOURCES_ASM
))
620 ifeq ($(USE_FOLLY_LITE
),1)
621 LIB_OBJECTS
+= $(patsubst %.
cpp, $(OBJ_DIR
)/%.o
, $(FOLLY_SOURCES
))
624 # range_tree is not compatible with non GNU libc on ppc64
625 # see https://jira.percona.com/browse/PS-7559
626 ifneq ($(PPC_LIBC_IS_GNU
),0)
627 LIB_OBJECTS
+= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(RANGE_TREE_SOURCES
))
630 GTEST
= $(OBJ_DIR
)/$(GTEST_DIR
)/gtest
/gtest-all.o
631 TESTUTIL
= $(OBJ_DIR
)/test_util
/testutil.o
632 TESTHARNESS
= $(OBJ_DIR
)/test_util
/testharness.o
$(TESTUTIL
) $(GTEST
)
634 VALGRIND_VER
:= $(join $(VALGRIND_VER
),valgrind
)
636 VALGRIND_OPTS
= --error-exitcode
=$(VALGRIND_ERROR
) --leak-check
=full
637 # Not yet supported: --show-leak-kinds=definite,possible,reachable --errors-for-leak-kinds=definite,possible,reachable
639 TEST_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(TEST_LIB_SOURCES
) $(MOCK_LIB_SOURCES
)) $(GTEST
)
640 BENCH_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(BENCH_LIB_SOURCES
))
641 CACHE_BENCH_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(CACHE_BENCH_LIB_SOURCES
))
642 TOOL_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(TOOL_LIB_SOURCES
))
643 ANALYZE_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(ANALYZER_LIB_SOURCES
))
644 STRESS_OBJECTS
= $(patsubst %.
cc, $(OBJ_DIR
)/%.o
, $(STRESS_LIB_SOURCES
))
646 # Exclude build_version.cc -- a generated source file -- from all sources. Not needed for dependencies
647 ALL_SOURCES
= $(filter-out util
/build_version.
cc, $(LIB_SOURCES
)) $(TEST_LIB_SOURCES
) $(MOCK_LIB_SOURCES
) $(GTEST_DIR
)/gtest
/gtest-all.
cc
648 ALL_SOURCES
+= $(TOOL_LIB_SOURCES
) $(BENCH_LIB_SOURCES
) $(CACHE_BENCH_LIB_SOURCES
) $(ANALYZER_LIB_SOURCES
) $(STRESS_LIB_SOURCES
)
649 ALL_SOURCES
+= $(TEST_MAIN_SOURCES
) $(TOOL_MAIN_SOURCES
) $(BENCH_MAIN_SOURCES
)
650 ALL_SOURCES
+= $(ROCKSDB_PLUGIN_SOURCES
)
652 TESTS
= $(patsubst %.
cc, %, $(notdir $(TEST_MAIN_SOURCES
)))
653 TESTS
+= $(patsubst %.c
, %, $(notdir $(TEST_MAIN_SOURCES_C
)))
655 # `make check-headers` to very that each header file includes its own
657 ifneq ($(filter check-headers
, $(MAKECMDGOALS
)),)
658 # TODO: add/support JNI headers
659 DEV_HEADER_DIRS
:= $(sort include/ $(dir $(ALL_SOURCES
)))
660 # Some headers like in port/ are platform-specific
661 DEV_HEADERS
:= $(shell $(FIND
) $(DEV_HEADER_DIRS
) -type f
-name
'*.h' | grep
-E
-v
'port/|plugin/|lua/|range_tree/')
665 HEADER_OK_FILES
= $(patsubst %.h
, %.h.ok
, $(DEV_HEADERS
))
667 AM_V_CCH
= $(am__v_CCH_
$(V
))
668 am__v_CCH_
= $(am__v_CCH_
$(AM_DEFAULT_VERBOSITY
))
669 am__v_CCH_0
= @echo
" CC.h " $<;
672 %.h.ok
: %.h
# .h.ok not actually created, so re-checked on each invocation
673 # -DROCKSDB_NAMESPACE=42 ensures the namespace header is included
674 $(AM_V_CCH
) echo
'#include "$<"' |
$(CXX
) $(CXXFLAGS
) -DROCKSDB_NAMESPACE
=42 -x c
++ -c
- -o
/dev
/null
676 check-headers
: $(HEADER_OK_FILES
)
678 # options_settable_test doesn't pass with UBSAN as we use hack in the test
679 ifdef ASSERT_STATUS_CHECKED
680 # TODO: finish fixing all tests to pass this check
681 TESTS_FAILING_ASC
= \
687 # Since we have very few ASC exclusions left, excluding them from
688 # the build is the most convenient way to exclude them from testing
689 TESTS
:= $(filter-out $(TESTS_FAILING_ASC
),$(TESTS
))
692 ROCKSDBTESTS_SUBSET ?
= $(TESTS
)
694 # c_test - doesn't use gtest
695 # env_test - suspicious use of test::TmpDir
696 # deletefile_test - serial because it generates giant temporary files in
697 # its various tests. Parallel can fill up your /dev/shm
698 # db_bloom_filter_test - serial because excessive space usage by instances
699 # of DBFilterConstructionReserveMemoryTestWithParam can fill up /dev/shm
700 NON_PARALLEL_TEST
= \
704 db_bloom_filter_test \
706 PARALLEL_TEST
= $(filter-out $(NON_PARALLEL_TEST
), $(TESTS
))
708 # Not necessarily well thought out or up-to-date, but matches old list
709 TESTS_PLATFORM_DEPENDENT
:= \
713 external_sst_file_basic_test \
714 auto_roll_logger_test \
721 inlineskiplist_test \
733 iostats_context_test \
735 # Sort ROCKSDBTESTS_SUBSET for filtering, except db_test is special (expensive)
736 # so is placed first (out-of-order)
737 ROCKSDBTESTS_SUBSET
:= $(filter db_test
, $(ROCKSDBTESTS_SUBSET
)) $(sort $(filter-out db_test
, $(ROCKSDBTESTS_SUBSET
)))
739 ifdef ROCKSDBTESTS_START
740 ROCKSDBTESTS_SUBSET
:= $(shell echo
$(ROCKSDBTESTS_SUBSET
) | sed
's/^.*$(ROCKSDBTESTS_START)/$(ROCKSDBTESTS_START)/')
743 ifdef ROCKSDBTESTS_END
744 ROCKSDBTESTS_SUBSET
:= $(shell echo
$(ROCKSDBTESTS_SUBSET
) | sed
's/$(ROCKSDBTESTS_END).*//')
747 ifeq ($(ROCKSDBTESTS_PLATFORM_DEPENDENT
), only
)
748 ROCKSDBTESTS_SUBSET
:= $(filter $(TESTS_PLATFORM_DEPENDENT
), $(ROCKSDBTESTS_SUBSET
))
749 else ifeq ($(ROCKSDBTESTS_PLATFORM_DEPENDENT
), exclude
)
750 ROCKSDBTESTS_SUBSET
:= $(filter-out $(TESTS_PLATFORM_DEPENDENT
), $(ROCKSDBTESTS_SUBSET
))
753 # bench_tool_analyer main is in bench_tool_analyzer_tool, or this would be simpler...
754 TOOLS
= $(patsubst %.
cc, %, $(notdir $(patsubst %_tool.
cc, %.
cc, $(TOOLS_MAIN_SOURCES
))))
757 librocksdb_env_basic_test.a
759 # TODO: add back forward_iterator_bench, after making it build in all environemnts.
760 BENCHMARKS
= $(patsubst %.
cc, %, $(notdir $(BENCH_MAIN_SOURCES
)))
762 MICROBENCHS
= $(patsubst %.
cc, %, $(notdir $(MICROBENCH_SOURCES
)))
764 # if user didn't config LIBNAME, set the default
767 # we should only run rocksdb in production with DEBUG_LEVEL 0
768 ifneq ($(DEBUG_LEVEL
),0)
772 STATIC_LIBRARY
= ${LIBNAME}$(LIBDEBUG
).a
773 STATIC_TEST_LIBRARY
= ${LIBNAME}_test
$(LIBDEBUG
).a
774 STATIC_TOOLS_LIBRARY
= ${LIBNAME}_tools
$(LIBDEBUG
).a
775 STATIC_STRESS_LIBRARY
= ${LIBNAME}_stress
$(LIBDEBUG
).a
777 ALL_STATIC_LIBS
= $(STATIC_LIBRARY
) $(STATIC_TEST_LIBRARY
) $(STATIC_TOOLS_LIBRARY
) $(STATIC_STRESS_LIBRARY
)
779 SHARED_TEST_LIBRARY
= ${LIBNAME}_test
$(LIBDEBUG
).
$(PLATFORM_SHARED_EXT
)
780 SHARED_TOOLS_LIBRARY
= ${LIBNAME}_tools
$(LIBDEBUG
).
$(PLATFORM_SHARED_EXT
)
781 SHARED_STRESS_LIBRARY
= ${LIBNAME}_stress
$(LIBDEBUG
).
$(PLATFORM_SHARED_EXT
)
783 ALL_SHARED_LIBS
= $(SHARED1
) $(SHARED2
) $(SHARED3
) $(SHARED4
) $(SHARED_TEST_LIBRARY
) $(SHARED_TOOLS_LIBRARY
) $(SHARED_STRESS_LIBRARY
)
785 ifeq ($(LIB_MODE
),shared
)
787 TEST_LIBRARY
=$(SHARED_TEST_LIBRARY
)
788 TOOLS_LIBRARY
=$(SHARED_TOOLS_LIBRARY
)
789 STRESS_LIBRARY
=$(SHARED_STRESS_LIBRARY
)
790 CLOUD_LIBRARY
=$(SHARED_CLOUD_LIBRARY
)
792 LIBRARY
=$(STATIC_LIBRARY
)
793 TEST_LIBRARY
=$(STATIC_TEST_LIBRARY
)
794 TOOLS_LIBRARY
=$(STATIC_TOOLS_LIBRARY
)
796 STRESS_LIBRARY
=$(STATIC_STRESS_LIBRARY
)
798 ROCKSDB_MAJOR
= $(shell grep
-E
"ROCKSDB_MAJOR.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
799 ROCKSDB_MINOR
= $(shell grep
-E
"ROCKSDB_MINOR.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
800 ROCKSDB_PATCH
= $(shell grep
-E
"ROCKSDB_PATCH.[0-9]" include/rocksdb
/version.h | cut
-d
' ' -f
3)
802 # If NO_UPDATE_BUILD_VERSION is set we don't update util/build_version.cc, but
803 # the file needs to already exist or else the build will fail
804 ifndef NO_UPDATE_BUILD_VERSION
806 # By default, use the current date-time as the date. If there are no changes,
807 # we will use the last commit date instead.
808 build_date
:= $(shell date
"+%Y-%m-%d %T")
811 git_sha
:= $(FORCE_GIT_SHA
)
813 git_date
:= $(build_date
)
815 git_sha
:= $(shell git rev-parse HEAD
2>/dev
/null
)
816 git_tag
:= $(shell git symbolic-ref
-q
--short HEAD
2> /dev
/null || git describe
--tags --exact-match
2>/dev
/null
)
817 git_mod
:= $(shell git diff-index HEAD
--quiet
2>/dev
/null
; echo
$$?
)
818 git_date
:= $(shell git log
-1 --date
=format
:"%Y-%m-%d %T" --format
="%ad" 2>/dev
/null
)
820 gen_build_version
= sed
-e s
/@GIT_SHA@
/$(git_sha
)/ -e s
:@GIT_TAG@
:"$(git_tag)": -e s
/@GIT_MOD@
/"$(git_mod)"/ -e s
/@BUILD_DATE@
/"$(build_date)"/ -e s
/@GIT_DATE@
/"$(git_date)"/ -e s
/@ROCKSDB_PLUGIN_BUILTINS@
/'$(ROCKSDB_PLUGIN_BUILTINS)'/ -e s
/@ROCKSDB_PLUGIN_EXTERNS@
/"$(ROCKSDB_PLUGIN_EXTERNS)"/ util
/build_version.
cc.in
822 # Record the version of the source that we are compiling.
823 # We keep a record of the git revision in this file. It is then built
824 # as a regular source file as part of the compilation process.
825 # One can run "strings executable_filename | grep _build_" to find
826 # the version of the source that we used to build the executable file.
827 util
/build_version.
cc: $(filter-out $(OBJ_DIR
)/util
/build_version.o
, $(LIB_OBJECTS
)) util
/build_version.
cc.in
828 $(AM_V_GEN
)rm -f
$@
-t
829 $(AM_V_at
)$(gen_build_version
) > $@
831 CLEAN_FILES
+= util
/build_version.
cc
835 #-----------------------------------------------
836 # Create platform independent shared libraries.
837 #-----------------------------------------------
838 ifneq ($(PLATFORM_SHARED_EXT
),)
840 ifneq ($(PLATFORM_SHARED_VERSIONED
),true
)
841 SHARED1
= ${LIBNAME}$(LIBDEBUG
).
$(PLATFORM_SHARED_EXT
)
847 SHARED_MAJOR
= $(ROCKSDB_MAJOR
)
848 SHARED_MINOR
= $(ROCKSDB_MINOR
)
849 SHARED_PATCH
= $(ROCKSDB_PATCH
)
850 SHARED1
= ${LIBNAME}.
$(PLATFORM_SHARED_EXT
)
851 ifeq ($(PLATFORM
), OS_MACOSX
)
852 SHARED_OSX
= $(LIBNAME
)$(LIBDEBUG
).
$(SHARED_MAJOR
)
853 SHARED2
= $(SHARED_OSX
).
$(PLATFORM_SHARED_EXT
)
854 SHARED3
= $(SHARED_OSX
).
$(SHARED_MINOR
).
$(PLATFORM_SHARED_EXT
)
855 SHARED4
= $(SHARED_OSX
).
$(SHARED_MINOR
).
$(SHARED_PATCH
).
$(PLATFORM_SHARED_EXT
)
857 SHARED2
= $(SHARED1
).
$(SHARED_MAJOR
)
858 SHARED3
= $(SHARED1
).
$(SHARED_MAJOR
).
$(SHARED_MINOR
)
859 SHARED4
= $(SHARED1
).
$(SHARED_MAJOR
).
$(SHARED_MINOR
).
$(SHARED_PATCH
)
861 SHARED
= $(SHARED1
) $(SHARED2
) $(SHARED3
) $(SHARED4
)
862 $(SHARED1
): $(SHARED4
) $(SHARED2
)
863 ln
-fs
$(SHARED4
) $(SHARED1
)
864 $(SHARED2
): $(SHARED4
) $(SHARED3
)
865 ln
-fs
$(SHARED4
) $(SHARED2
)
866 $(SHARED3
): $(SHARED4
)
867 ln
-fs
$(SHARED4
) $(SHARED3
)
869 endif # PLATFORM_SHARED_VERSIONED
870 $(SHARED4
): $(LIB_OBJECTS
)
871 $(AM_V_CCLD
) $(CXX
) $(PLATFORM_SHARED_LDFLAGS
)$(SHARED3
) $(LIB_OBJECTS
) $(LDFLAGS
) -o
$@
872 endif # PLATFORM_SHARED_EXT
874 .PHONY
: check clean coverage ldb_tests package dbg gen-pc build_size \
875 release
tags tags0 valgrind_check format static_lib shared_lib
all \
876 rocksdbjavastatic rocksdbjava
install install-static install-shared \
877 uninstall analyze tools tools_lib check-headers checkout_folly
879 all: $(LIBRARY
) $(BENCHMARKS
) tools tools_lib test_libs
$(TESTS
)
881 all_but_some_tests
: $(LIBRARY
) $(BENCHMARKS
) tools tools_lib test_libs
$(ROCKSDBTESTS_SUBSET
)
883 static_lib
: $(STATIC_LIBRARY
)
885 shared_lib
: $(SHARED
)
887 stress_lib
: $(STRESS_LIBRARY
)
891 tools_lib
: $(TOOLS_LIBRARY
)
893 test_libs
: $(TEST_LIBS
)
895 benchmarks
: $(BENCHMARKS
)
897 microbench
: $(MICROBENCHS
)
899 run_microbench
: $(MICROBENCHS
)
900 for t in
$(MICROBENCHS
); do echo
"===== Running benchmark $$t (`date`)"; .
/$$t || exit
1; done
;
902 dbg
: $(LIBRARY
) $(BENCHMARKS
) tools
$(TESTS
)
904 # creates library and programs
906 LIB_MODE
=$(LIB_MODE
) DEBUG_LEVEL
=0 $(MAKE
) $(LIBRARY
) tools db_bench
909 COVERAGEFLAGS
="-fprofile-arcs -ftest-coverage" LDFLAGS
+="-lgcov" $(MAKE
) J
=1 all check
910 cd coverage
&& .
/coverage_test.sh
911 # Delete intermediate files
912 $(FIND
) .
-type f \
( -name
"*.gcda" -o
-name
"*.gcno" \
) -exec
rm -f
{} \
;
914 # Run all tests in parallel, accumulating per-test logs in t/log-*.
916 # Each t/run-* file is a tiny generated bourne shell script that invokes one of
917 # sub-tests. Why use a file for this? Because that makes the invocation of
918 # parallel below simpler, which in turn makes the parsing of parallel's
919 # LOG simpler (the latter is for live monitoring as parallel
922 # Test names are extracted by running tests with --gtest_list_tests.
923 # This filter removes the "#"-introduced comments, and expands to
924 # fully-qualified names by changing input like this:
929 # MultiThreaded/MultiThreadedDBTest.
930 # MultiThreaded/0 # GetParam() = 0
931 # MultiThreaded/1 # GetParam() = 1
936 # DBTest.WriteEmptyBatch
937 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/0
938 # MultiThreaded/MultiThreadedDBTest.MultiThreaded/1
941 parallel_tests
= $(patsubst %,parallel_
%,$(PARALLEL_TEST
))
942 .PHONY
: gen_parallel_tests
$(parallel_tests
)
944 $(AM_V_at
)TEST_BINARY
=$(patsubst parallel_
%,%,$@
); \
946 (./$$TEST_BINARY --gtest_list_tests || echo " $${TEST_BINARY}__list_tests_failure") \
947 | awk '/^[^ ]/ { prefix = $$1 } /^[ ]/ { print prefix $$1 }'`; \
948 echo
" Generating parallel test scripts for $$TEST_BINARY"; \
949 for TEST_NAME in
$$TEST_NAMES; do \
950 TEST_SCRIPT
=t
/run-
$$TEST_BINARY-$${TEST_NAME
//\
//-}; \
953 "d=\$(TEST_TMPDIR)$$TEST_SCRIPT" \
955 "TEST_TMPDIR=\$$d $(DRIVER) ./$$TEST_BINARY --gtest_filter=$$TEST_NAME" \
957 chmod a
=rx
$$TEST_SCRIPT; \
962 $(AM_V_at
)$(FIND
) t
-type f
-name
'run-*' -exec
rm -f
{} \
;
963 $(MAKE
) $(parallel_tests
)
965 # Reorder input lines (which are one per test) so that the
966 # longest-running tests appear first in the output.
967 # Do this by prefixing each selected name with its duration,
968 # sort the resulting names, and remove the leading numbers.
969 # FIXME: the "100" we prepend is a fake time, for now.
970 # FIXME: squirrel away timings from each run and use them
971 # (when present) on subsequent runs to order these tests.
973 # Without this reordering, these two tests would happen to start only
974 # after almost all other tests had completed, thus adding 100 seconds
975 # to the duration of parallel "make check". That's the difference
976 # between 4 minutes (old) and 2m20s (new).
978 # 152.120 PASS t/DBTest.FileCreationRandomFailure
979 # 107.816 PASS t/DBTest.EncodeDecompressedBlockSizeTest
982 ^.
*MySQLStyleTransactionTest.
*$$|^.
*SnapshotConcurrentAccessTest.
*$$|^.
*SeqAdvanceConcurrentTest.
*$$|^t
/run-table_test-HarnessTest.Randomized
$$|^t
/run-db_test-.
*(?
:FileCreationRandomFailure|EncodeDecompressedBlockSizeTest
)$$|^.
*RecoverFromCorruptedWALWithoutFlush
$$
983 prioritize_long_running_tests
= \
984 perl
-pe
's,($(slow_test_regexp)),100 $$1,' \
986 | sed
's/^[.0-9]* //'
989 # Run with "make J=1 check" to disable parallelism in "make check".
990 # Run with "make J=200% check" to run two parallel jobs per core.
991 # The default is to run one job per core (J=100%).
992 # See "man parallel" for its "-j ..." option.
995 # Use this regexp to select the subset of tests whose names match.
997 EXCLUDE_TESTS_REGEX ?
= "^$$"
999 ifeq ($(PRINT_PARALLEL_OUTPUTS
), 1)
1001 else ifeq ($(QUIET_PARALLEL_TESTS
), 1)
1002 parallel_redir
= >& t
/$(test_log_prefix
)log-
{/}
1004 # Default: print failure output only, as it happens
1005 # Note: gnu_parallel --eta is now always used, but has been modified to provide
1006 # only infrequent updates when not connected to a terminal. (CircleCI will
1007 # kill a job if no output for 10min.)
1008 parallel_redir
= >& t
/$(test_log_prefix
)log-
{/} || bash
-c
"cat t/$(test_log_prefix)log-{/}; exit $$?"
1014 'To monitor subtest <duration,pass/fail,name>,' \
1015 ' run "make watch-log" in a separate window' ''; \
1017 printf
'./%s\n' $(filter-out $(PARALLEL_TEST
),$(TESTS
)); \
1018 find t
-name
'run-*' -print; \
1020 |
$(prioritize_long_running_tests
) \
1021 | grep
-E
'$(tests-regexp)' \
1022 | grep
-E
-v
'$(EXCLUDE_TESTS_REGEX)' \
1023 | build_tools
/gnu_parallel
-j
$(J
) --plain
--joblog
=LOG
--eta
--gnu \
1024 --tmpdir
=$(TEST_TMPDIR
) '{} $(parallel_redir)' ; \
1025 parallel_retcode
=$$?
; \
1026 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
; \
1028 if
[ $$parallel_retcode -ne
0 ] ||
[ $$awk_retcode -ne
0 ] ; then exit
1 ; fi
1030 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
1032 .PHONY
: valgrind_check_0
1033 valgrind_check_0
: test_log_prefix
:= valgrind_
1036 'To monitor subtest <duration,pass/fail,name>,' \
1037 ' run "make watch-log" in a separate window' ''; \
1039 printf
'./%s\n' $(filter-out $(PARALLEL_TEST
) %skiplist_test options_settable_test
, $(TESTS
)); \
1040 find t
-name
'run-*' -print; \
1042 |
$(prioritize_long_running_tests
) \
1043 | grep
-E
'$(tests-regexp)' \
1044 | grep
-E
-v
'$(valgrind-exclude-regexp)' \
1045 | build_tools
/gnu_parallel
-j
$(J
) --plain
--joblog
=LOG
--eta
--gnu \
1046 --tmpdir
=$(TEST_TMPDIR
) \
1047 '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) \
1048 $(parallel_redir)' \
1050 CLEAN_FILES
+= t LOG
$(TEST_TMPDIR
)
1052 # When running parallel "make check", you can monitor its progress
1053 # from another window.
1054 # Run "make watch_LOG" to show the duration,PASS/FAIL,name of parallel
1055 # tests as they are being run. We sort them so that longer-running ones
1056 # appear at the top of the list and any failing tests remain at the top
1057 # regardless of their duration. As with any use of "watch", hit ^C to
1060 $(WATCH
) --interval
=0 'sort -k7,7nr -k4,4gr LOG|$(quoted_perl_command)'
1063 bash
-c
'$(quoted_perl_command)' < LOG
1065 # If J != 1 and GNU parallel is installed, run the tests in parallel,
1066 # via the check_0 rule above. Otherwise, run them sequentially.
1068 $(MAKE
) gen_parallel_tests
1069 $(AM_V_GEN
)if
test "$(J)" != 1 \
1070 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
1071 grep
-q
'GNU Parallel'; \
1073 $(MAKE
) T
="$$t" check_0
; \
1075 for t in
$(TESTS
); do \
1076 echo
"===== Running $$t (`date`)"; .
/$$t || exit
1; done
; \
1078 rm -rf
$(TEST_TMPDIR
)
1079 ifneq ($(PLATFORM
), OS_AIX
)
1080 $(PYTHON
) tools
/check_all_python.py
1081 ifeq ($(filter -DROCKSDB_LITE
,$(OPT
)),)
1082 ifndef ASSERT_STATUS_CHECKED
# not yet working with these tests
1083 $(PYTHON
) tools
/ldb_test.py
1084 sh tools
/rocksdb_dump_test.sh
1088 ifndef SKIP_FORMAT_BUCK_CHECKS
1089 $(MAKE
) check-format
1090 $(MAKE
) check-buck-targets
1091 $(MAKE
) check-sources
1094 # TODO add ldb_tests
1095 check_some
: $(ROCKSDBTESTS_SUBSET
)
1096 for t in
$(ROCKSDBTESTS_SUBSET
); do echo
"===== Running $$t (`date`)"; .
/$$t || exit
1; done
1100 $(PYTHON
) tools
/ldb_test.py
1102 include crash_test.mk
1105 COMPILE_WITH_ASAN
=1 $(MAKE
) check -j32
1108 asan_crash_test
: clean
1109 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test
1112 whitebox_asan_crash_test
: clean
1113 COMPILE_WITH_ASAN
=1 $(MAKE
) whitebox_crash_test
1116 blackbox_asan_crash_test
: clean
1117 COMPILE_WITH_ASAN
=1 $(MAKE
) blackbox_crash_test
1120 asan_crash_test_with_atomic_flush
: clean
1121 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test_with_atomic_flush
1124 asan_crash_test_with_txn
: clean
1125 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test_with_txn
1128 asan_crash_test_with_best_efforts_recovery
: clean
1129 COMPILE_WITH_ASAN
=1 $(MAKE
) crash_test_with_best_efforts_recovery
1133 COMPILE_WITH_UBSAN
=1 $(MAKE
) check -j32
1136 ubsan_crash_test
: clean
1137 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test
1140 whitebox_ubsan_crash_test
: clean
1141 COMPILE_WITH_UBSAN
=1 $(MAKE
) whitebox_crash_test
1144 blackbox_ubsan_crash_test
: clean
1145 COMPILE_WITH_UBSAN
=1 $(MAKE
) blackbox_crash_test
1148 ubsan_crash_test_with_atomic_flush
: clean
1149 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test_with_atomic_flush
1152 ubsan_crash_test_with_txn
: clean
1153 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test_with_txn
1156 ubsan_crash_test_with_best_efforts_recovery
: clean
1157 COMPILE_WITH_UBSAN
=1 $(MAKE
) crash_test_with_best_efforts_recovery
1161 ROCKSDB_FULL_VALGRIND_RUN
=1 DISABLE_JEMALLOC
=1 $(MAKE
) valgrind_check
1163 full_valgrind_test_some
:
1164 ROCKSDB_FULL_VALGRIND_RUN
=1 DISABLE_JEMALLOC
=1 $(MAKE
) valgrind_check_some
1167 ROCKSDB_VALGRIND_RUN
=1 DISABLE_JEMALLOC
=1 $(MAKE
) valgrind_check
1170 ROCKSDB_VALGRIND_RUN
=1 DISABLE_JEMALLOC
=1 $(MAKE
) valgrind_check_some
1172 valgrind_check
: $(TESTS
)
1173 $(MAKE
) DRIVER
="$(VALGRIND_VER) $(VALGRIND_OPTS)" gen_parallel_tests
1174 $(AM_V_GEN
)if
test "$(J)" != 1 \
1175 && (build_tools
/gnu_parallel
--gnu
--help
2>/dev
/null
) | \
1176 grep
-q
'GNU Parallel'; \
1179 DRIVER
="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0
; \
1181 for t in
$(filter-out %skiplist_test options_settable_test
,$(TESTS
)); do \
1182 $(VALGRIND_VER
) $(VALGRIND_OPTS
) .
/$$t; \
1184 if
[ $$ret_code -ne
0 ]; then \
1190 valgrind_check_some
: $(ROCKSDBTESTS_SUBSET
)
1191 for t in
$(ROCKSDBTESTS_SUBSET
); do \
1192 $(VALGRIND_VER
) $(VALGRIND_OPTS
) .
/$$t; \
1194 if
[ $$ret_code -ne
0 ]; then \
1200 .
/db_test
--gtest_list_tests \
1203 -e
'/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \
1204 -e
'print qq! $$p$$2!'
1207 USE_CLANG
=1 $(MAKE
) analyze_incremental
1209 analyze_incremental
:
1210 $(CLANG_SCAN_BUILD
) --use-analyzer
=$(CLANG_ANALYZER
) \
1211 --use-c
++=$(CXX
) --use-cc
=$(CC
) --status-bugs \
1212 -o
$(CURDIR
)/scan_build_report \
1213 $(MAKE
) SKIP_LINK
=1 dbg
1215 CLEAN_FILES
+= unity.
cc
1216 unity.
cc: Makefile util
/build_version.
cc.in
1218 $(AM_V_at
)$(gen_build_version
) > util
/build_version.
cc
1219 for source_file in
$(LIB_SOURCES
); do \
1220 echo
"#include \"$$source_file\"" >> $@
-t
; \
1225 unity.a
: $(OBJ_DIR
)/unity.o
1227 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$(OBJ_DIR
)/unity.o
1230 # try compiling db_test with unity
1231 unity_test
: $(OBJ_DIR
)/db
/db_basic_test.o
$(OBJ_DIR
)/db
/db_test_util.o
$(TEST_OBJECTS
) $(TOOL_OBJECTS
) unity.a
1235 rocksdb.h rocksdb.
cc: build_tools
/amalgamate.py Makefile
$(LIB_SOURCES
) unity.
cc
1236 build_tools
/amalgamate.py
-I.
-i.
/include unity.
cc -x
include/rocksdb
/c.h
-H rocksdb.h
-o rocksdb.
cc
1238 clean: clean-ext-libraries-all clean-rocks clean-rocksjava
1240 clean-not-downloaded
: clean-ext-libraries-bin clean-rocks clean-not-downloaded-rocksjava
1243 echo shared
=$(ALL_SHARED_LIBS
)
1244 echo static
=$(ALL_STATIC_LIBS
)
1245 rm -f
$(BENCHMARKS
) $(TOOLS
) $(TESTS
) $(PARALLEL_TEST
) $(ALL_STATIC_LIBS
) $(ALL_SHARED_LIBS
) $(MICROBENCHS
)
1246 rm -rf
$(CLEAN_FILES
) ios-x86 ios-arm scan_build_report
1247 $(FIND
) .
-name
"*.[oda]" -exec
rm -f
{} \
;
1248 $(FIND
) .
-type f \
( -name
"*.gcda" -o
-name
"*.gcno" \
) -exec
rm -f
{} \
;
1250 clean-rocksjava
: clean-rocks
1252 cd java
&& $(MAKE
) clean
1254 clean-not-downloaded-rocksjava
:
1255 cd java
&& $(MAKE
) clean-not-downloaded
1257 clean-ext-libraries-all
:
1258 rm -rf bzip2
* snappy
* zlib
* lz4
* zstd
*
1260 clean-ext-libraries-bin
:
1261 find .
-maxdepth
1 -type d \
( -name bzip2\
* -or
-name snappy\
* -or
-name zlib\
* -or
-name lz4\
* -or
-name zstd\
* \
) -prune
-exec
rm -rf
{} \
;
1265 cscope
-b
`$(FIND) . -name '*.cc'` `$(FIND) . -name '*.h'` `$(FIND) . -name '*.c'`
1266 ctags
-e
-R
-o etags
*
1270 cscope
-b
`$(FIND) . -name '*.cc' -and ! -name '*_test.cc'` \
1271 `$(FIND) . -name '*.c' -and ! -name '*_test.c'` \
1272 `$(FIND) . -name '*.h' -and ! -name '*_test.h'`
1273 ctags
-e
-R
-o etags
*
1276 build_tools
/format-diff.sh
1279 build_tools
/format-diff.sh
-c
1282 buckifier
/check_buck_targets.sh
1285 build_tools
/check-sources.sh
1288 bash build_tools
/make_package.sh
$(SHARED_MAJOR
).
$(SHARED_MINOR
)
1290 # ---------------------------------------------------------------------------
1291 # Unit tests and tools
1292 # ---------------------------------------------------------------------------
1293 $(STATIC_LIBRARY
): $(LIB_OBJECTS
)
1294 $(AM_V_AR
)rm -f
$@
$(SHARED1
) $(SHARED2
) $(SHARED3
) $(SHARED4
)
1295 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$(LIB_OBJECTS
)
1297 $(STATIC_TEST_LIBRARY
): $(TEST_OBJECTS
)
1298 $(AM_V_AR
)rm -f
$@
$(SHARED_TEST_LIBRARY
)
1299 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1301 $(STATIC_TOOLS_LIBRARY
): $(TOOL_OBJECTS
)
1302 $(AM_V_AR
)rm -f
$@
$(SHARED_TOOLS_LIBRARY
)
1303 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1305 $(STATIC_STRESS_LIBRARY
): $(ANALYZE_OBJECTS
) $(STRESS_OBJECTS
) $(TESTUTIL
)
1306 $(AM_V_AR
)rm -f
$@
$(SHARED_STRESS_LIBRARY
)
1307 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1309 $(SHARED_TEST_LIBRARY
): $(TEST_OBJECTS
) $(SHARED1
)
1310 $(AM_V_AR
)rm -f
$@
$(STATIC_TEST_LIBRARY
)
1313 $(SHARED_TOOLS_LIBRARY
): $(TOOL_OBJECTS
) $(SHARED1
)
1314 $(AM_V_AR
)rm -f
$@
$(STATIC_TOOLS_LIBRARY
)
1317 $(SHARED_STRESS_LIBRARY
): $(ANALYZE_OBJECTS
) $(STRESS_OBJECTS
) $(TESTUTIL
) $(SHARED_TOOLS_LIBRARY
) $(SHARED1
)
1318 $(AM_V_AR
)rm -f
$@
$(STATIC_STRESS_LIBRARY
)
1321 librocksdb_env_basic_test.a
: $(OBJ_DIR
)/env
/env_basic_test.o
$(LIB_OBJECTS
) $(TESTHARNESS
)
1323 $(AM_V_at
)$(AR
) $(ARFLAGS
) $@
$^
1325 db_bench
: $(OBJ_DIR
)/tools
/db_bench.o
$(BENCH_OBJECTS
) $(TESTUTIL
) $(LIBRARY
)
1328 trace_analyzer
: $(OBJ_DIR
)/tools
/trace_analyzer.o
$(ANALYZE_OBJECTS
) $(TOOLS_LIBRARY
) $(LIBRARY
)
1331 block_cache_trace_analyzer
: $(OBJ_DIR
)/tools
/block_cache_analyzer
/block_cache_trace_analyzer_tool.o
$(ANALYZE_OBJECTS
) $(TOOLS_LIBRARY
) $(LIBRARY
)
1334 cache_bench
: $(OBJ_DIR
)/cache
/cache_bench.o
$(CACHE_BENCH_OBJECTS
) $(LIBRARY
)
1337 persistent_cache_bench
: $(OBJ_DIR
)/utilities
/persistent_cache
/persistent_cache_bench.o
$(LIBRARY
)
1340 memtablerep_bench
: $(OBJ_DIR
)/memtable
/memtablerep_bench.o
$(LIBRARY
)
1343 filter_bench
: $(OBJ_DIR
)/util
/filter_bench.o
$(LIBRARY
)
1346 db_stress
: $(OBJ_DIR
)/db_stress_tool
/db_stress.o
$(STRESS_LIBRARY
) $(TOOLS_LIBRARY
) $(LIBRARY
)
1349 write_stress
: $(OBJ_DIR
)/tools
/write_stress.o
$(LIBRARY
)
1352 db_sanity_test
: $(OBJ_DIR
)/tools
/db_sanity_test.o
$(LIBRARY
)
1355 db_repl_stress
: $(OBJ_DIR
)/tools
/db_repl_stress.o
$(LIBRARY
)
1358 arena_test
: $(OBJ_DIR
)/memory
/arena_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1361 memory_allocator_test
: memory
/memory_allocator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1364 autovector_test
: $(OBJ_DIR
)/util
/autovector_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1367 column_family_test
: $(OBJ_DIR
)/db
/column_family_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1370 table_properties_collector_test
: $(OBJ_DIR
)/db
/table_properties_collector_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1373 bloom_test
: $(OBJ_DIR
)/util
/bloom_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1376 dynamic_bloom_test
: $(OBJ_DIR
)/util
/dynamic_bloom_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1379 c_test
: $(OBJ_DIR
)/db
/c_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1382 cache_test
: $(OBJ_DIR
)/cache
/cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1385 coding_test
: $(OBJ_DIR
)/util
/coding_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1388 hash_test
: $(OBJ_DIR
)/util
/hash_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1391 random_test
: $(OBJ_DIR
)/util
/random_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1394 ribbon_test
: $(OBJ_DIR
)/util
/ribbon_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1397 option_change_migration_test
: $(OBJ_DIR
)/utilities
/option_change_migration
/option_change_migration_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1400 agg_merge_test
: $(OBJ_DIR
)/utilities
/agg_merge
/agg_merge_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1403 stringappend_test
: $(OBJ_DIR
)/utilities
/merge_operators
/string_append
/stringappend_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1406 cassandra_format_test
: $(OBJ_DIR
)/utilities
/cassandra
/cassandra_format_test.o
$(OBJ_DIR
)/utilities
/cassandra
/test_utils.o
$(TEST_LIBRARY
) $(LIBRARY
)
1409 cassandra_functional_test
: $(OBJ_DIR
)/utilities
/cassandra
/cassandra_functional_test.o
$(OBJ_DIR
)/utilities
/cassandra
/test_utils.o
$(TEST_LIBRARY
) $(LIBRARY
)
1412 cassandra_row_merge_test
: $(OBJ_DIR
)/utilities
/cassandra
/cassandra_row_merge_test.o
$(OBJ_DIR
)/utilities
/cassandra
/test_utils.o
$(TEST_LIBRARY
) $(LIBRARY
)
1415 cassandra_serialize_test
: $(OBJ_DIR
)/utilities
/cassandra
/cassandra_serialize_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1418 hash_table_test
: $(OBJ_DIR
)/utilities
/persistent_cache
/hash_table_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1421 histogram_test
: $(OBJ_DIR
)/monitoring
/histogram_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1424 thread_local_test
: $(OBJ_DIR
)/util
/thread_local_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1427 work_queue_test
: $(OBJ_DIR
)/util
/work_queue_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1430 corruption_test
: $(OBJ_DIR
)/db
/corruption_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1433 crc32c_test
: $(OBJ_DIR
)/util
/crc32c_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1436 slice_test
: $(OBJ_DIR
)/util
/slice_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1439 slice_transform_test
: $(OBJ_DIR
)/util
/slice_transform_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1442 db_basic_test
: $(OBJ_DIR
)/db
/db_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1445 db_blob_basic_test
: $(OBJ_DIR
)/db
/blob
/db_blob_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1448 db_blob_compaction_test
: $(OBJ_DIR
)/db
/blob
/db_blob_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1451 db_readonly_with_timestamp_test
: $(OBJ_DIR
)/db
/db_readonly_with_timestamp_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1454 db_wide_basic_test
: $(OBJ_DIR
)/db
/wide
/db_wide_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1457 db_with_timestamp_basic_test
: $(OBJ_DIR
)/db
/db_with_timestamp_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1460 db_with_timestamp_compaction_test
: db
/db_with_timestamp_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1463 db_encryption_test
: $(OBJ_DIR
)/db
/db_encryption_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1466 db_test
: $(OBJ_DIR
)/db
/db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1469 db_test2
: $(OBJ_DIR
)/db
/db_test2.o
$(TEST_LIBRARY
) $(LIBRARY
)
1472 db_logical_block_size_cache_test
: $(OBJ_DIR
)/db
/db_logical_block_size_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1475 db_blob_index_test
: $(OBJ_DIR
)/db
/blob
/db_blob_index_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1478 db_block_cache_test
: $(OBJ_DIR
)/db
/db_block_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1481 db_bloom_filter_test
: $(OBJ_DIR
)/db
/db_bloom_filter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1484 db_log_iter_test
: $(OBJ_DIR
)/db
/db_log_iter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1487 db_compaction_filter_test
: $(OBJ_DIR
)/db
/db_compaction_filter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1490 db_compaction_test
: $(OBJ_DIR
)/db
/db_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1493 db_dynamic_level_test
: $(OBJ_DIR
)/db
/db_dynamic_level_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1496 db_flush_test
: $(OBJ_DIR
)/db
/db_flush_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1499 db_inplace_update_test
: $(OBJ_DIR
)/db
/db_inplace_update_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1502 db_iterator_test
: $(OBJ_DIR
)/db
/db_iterator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1505 db_kv_checksum_test
: $(OBJ_DIR
)/db
/db_kv_checksum_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1508 db_memtable_test
: $(OBJ_DIR
)/db
/db_memtable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1511 db_merge_operator_test
: $(OBJ_DIR
)/db
/db_merge_operator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1514 db_merge_operand_test
: $(OBJ_DIR
)/db
/db_merge_operand_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1517 db_options_test
: $(OBJ_DIR
)/db
/db_options_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1520 db_range_del_test
: $(OBJ_DIR
)/db
/db_range_del_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1523 db_rate_limiter_test
: $(OBJ_DIR
)/db
/db_rate_limiter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1526 db_sst_test
: $(OBJ_DIR
)/db
/db_sst_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1529 db_statistics_test
: $(OBJ_DIR
)/db
/db_statistics_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1532 db_write_test
: $(OBJ_DIR
)/db
/db_write_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1535 error_handler_fs_test
: $(OBJ_DIR
)/db
/error_handler_fs_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1538 external_sst_file_basic_test
: $(OBJ_DIR
)/db
/external_sst_file_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1541 external_sst_file_test
: $(OBJ_DIR
)/db
/external_sst_file_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1544 import_column_family_test
: $(OBJ_DIR
)/db
/import_column_family_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1547 db_tailing_iter_test
: $(OBJ_DIR
)/db
/db_tailing_iter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1550 db_iter_test
: $(OBJ_DIR
)/db
/db_iter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1553 db_iter_stress_test
: $(OBJ_DIR
)/db
/db_iter_stress_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1556 db_universal_compaction_test
: $(OBJ_DIR
)/db
/db_universal_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1559 db_wal_test
: $(OBJ_DIR
)/db
/db_wal_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1562 db_io_failure_test
: $(OBJ_DIR
)/db
/db_io_failure_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1565 db_properties_test
: $(OBJ_DIR
)/db
/db_properties_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1568 db_table_properties_test
: $(OBJ_DIR
)/db
/db_table_properties_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1571 log_write_bench
: $(OBJ_DIR
)/util
/log_write_bench.o
$(TEST_LIBRARY
) $(LIBRARY
)
1572 $(AM_LINK
) $(PROFILING_FLAGS
)
1574 seqno_time_test
: $(OBJ_DIR
)/db
/seqno_time_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1577 plain_table_db_test
: $(OBJ_DIR
)/db
/plain_table_db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1580 comparator_db_test
: $(OBJ_DIR
)/db
/comparator_db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1583 table_reader_bench
: $(OBJ_DIR
)/table
/table_reader_bench.o
$(TEST_LIBRARY
) $(LIBRARY
)
1584 $(AM_LINK
) $(PROFILING_FLAGS
)
1586 perf_context_test
: $(OBJ_DIR
)/db
/perf_context_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1589 prefix_test
: $(OBJ_DIR
)/db
/prefix_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1592 backup_engine_test
: $(OBJ_DIR
)/utilities
/backup
/backup_engine_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1595 checkpoint_test
: $(OBJ_DIR
)/utilities
/checkpoint
/checkpoint_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1598 cache_simulator_test
: $(OBJ_DIR
)/utilities
/simulator_cache
/cache_simulator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1601 sim_cache_test
: $(OBJ_DIR
)/utilities
/simulator_cache
/sim_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1604 env_mirror_test
: $(OBJ_DIR
)/utilities
/env_mirror_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1607 env_timed_test
: $(OBJ_DIR
)/utilities
/env_timed_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1610 object_registry_test
: $(OBJ_DIR
)/utilities
/object_registry_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1613 ttl_test
: $(OBJ_DIR
)/utilities
/ttl
/ttl_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1616 write_batch_with_index_test
: $(OBJ_DIR
)/utilities
/write_batch_with_index
/write_batch_with_index_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1619 flush_job_test
: $(OBJ_DIR
)/db
/flush_job_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1622 compaction_iterator_test
: $(OBJ_DIR
)/db
/compaction
/compaction_iterator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1625 compaction_job_test
: $(OBJ_DIR
)/db
/compaction
/compaction_job_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1628 compaction_job_stats_test
: $(OBJ_DIR
)/db
/compaction
/compaction_job_stats_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1631 compaction_service_test
: $(OBJ_DIR
)/db
/compaction
/compaction_service_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1634 compact_on_deletion_collector_test
: $(OBJ_DIR
)/utilities
/table_properties_collectors
/compact_on_deletion_collector_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1637 wal_manager_test
: $(OBJ_DIR
)/db
/wal_manager_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1640 wal_edit_test
: $(OBJ_DIR
)/db
/wal_edit_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1643 dbformat_test
: $(OBJ_DIR
)/db
/dbformat_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1646 env_basic_test
: $(OBJ_DIR
)/env
/env_basic_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1649 env_test
: $(OBJ_DIR
)/env
/env_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1652 io_posix_test
: $(OBJ_DIR
)/env
/io_posix_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1655 fault_injection_test
: $(OBJ_DIR
)/db
/fault_injection_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1658 rate_limiter_test
: $(OBJ_DIR
)/util
/rate_limiter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1661 delete_scheduler_test
: $(OBJ_DIR
)/file
/delete_scheduler_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1664 filename_test
: $(OBJ_DIR
)/db
/filename_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1667 random_access_file_reader_test
: $(OBJ_DIR
)/file
/random_access_file_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1670 file_reader_writer_test
: $(OBJ_DIR
)/util
/file_reader_writer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1673 block_based_table_reader_test
: table
/block_based
/block_based_table_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1676 full_filter_block_test
: $(OBJ_DIR
)/table
/block_based
/full_filter_block_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1679 partitioned_filter_block_test
: $(OBJ_DIR
)/table
/block_based
/partitioned_filter_block_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1682 log_test
: $(OBJ_DIR
)/db
/log_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1685 cleanable_test
: $(OBJ_DIR
)/table
/cleanable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1688 table_test
: $(OBJ_DIR
)/table
/table_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1691 block_fetcher_test
: table
/block_fetcher_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1694 block_test
: $(OBJ_DIR
)/table
/block_based
/block_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1697 data_block_hash_index_test
: $(OBJ_DIR
)/table
/block_based
/data_block_hash_index_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1700 inlineskiplist_test
: $(OBJ_DIR
)/memtable
/inlineskiplist_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1703 skiplist_test
: $(OBJ_DIR
)/memtable
/skiplist_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1706 write_buffer_manager_test
: $(OBJ_DIR
)/memtable
/write_buffer_manager_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1709 version_edit_test
: $(OBJ_DIR
)/db
/version_edit_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1712 version_set_test
: $(OBJ_DIR
)/db
/version_set_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1715 compaction_picker_test
: $(OBJ_DIR
)/db
/compaction
/compaction_picker_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1718 version_builder_test
: $(OBJ_DIR
)/db
/version_builder_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1721 file_indexer_test
: $(OBJ_DIR
)/db
/file_indexer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1724 reduce_levels_test
: $(OBJ_DIR
)/tools
/reduce_levels_test.o
$(TOOLS_LIBRARY
) $(TEST_LIBRARY
) $(LIBRARY
)
1727 write_batch_test
: $(OBJ_DIR
)/db
/write_batch_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1730 write_controller_test
: $(OBJ_DIR
)/db
/write_controller_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1733 merge_helper_test
: $(OBJ_DIR
)/db
/merge_helper_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1736 memory_test
: $(OBJ_DIR
)/utilities
/memory
/memory_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1739 merge_test
: $(OBJ_DIR
)/db
/merge_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1742 merger_test
: $(OBJ_DIR
)/table
/merger_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1745 util_merge_operators_test
: $(OBJ_DIR
)/utilities
/util_merge_operators_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1748 options_file_test
: $(OBJ_DIR
)/db
/options_file_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1751 deletefile_test
: $(OBJ_DIR
)/db
/deletefile_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1754 obsolete_files_test
: $(OBJ_DIR
)/db
/obsolete_files_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1757 rocksdb_dump
: $(OBJ_DIR
)/tools
/dump
/rocksdb_dump.o
$(LIBRARY
)
1760 rocksdb_undump
: $(OBJ_DIR
)/tools
/dump
/rocksdb_undump.o
$(LIBRARY
)
1763 cuckoo_table_builder_test
: $(OBJ_DIR
)/table
/cuckoo
/cuckoo_table_builder_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1766 cuckoo_table_reader_test
: $(OBJ_DIR
)/table
/cuckoo
/cuckoo_table_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1769 cuckoo_table_db_test
: $(OBJ_DIR
)/db
/cuckoo_table_db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1772 listener_test
: $(OBJ_DIR
)/db
/listener_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1775 thread_list_test
: $(OBJ_DIR
)/util
/thread_list_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1778 compact_files_test
: $(OBJ_DIR
)/db
/compact_files_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1781 configurable_test
: options
/configurable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1784 customizable_test
: options
/customizable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1787 options_test
: $(OBJ_DIR
)/options
/options_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1790 options_settable_test
: $(OBJ_DIR
)/options
/options_settable_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1793 options_util_test
: $(OBJ_DIR
)/utilities
/options
/options_util_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1796 db_bench_tool_test
: $(OBJ_DIR
)/tools
/db_bench_tool_test.o
$(BENCH_OBJECTS
) $(TEST_LIBRARY
) $(LIBRARY
)
1799 trace_analyzer_test
: $(OBJ_DIR
)/tools
/trace_analyzer_test.o
$(ANALYZE_OBJECTS
) $(TOOLS_LIBRARY
) $(TEST_LIBRARY
) $(LIBRARY
)
1802 event_logger_test
: $(OBJ_DIR
)/logging
/event_logger_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1805 timer_queue_test
: $(OBJ_DIR
)/util
/timer_queue_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1808 sst_dump_test
: $(OBJ_DIR
)/tools
/sst_dump_test.o
$(TOOLS_LIBRARY
) $(TEST_LIBRARY
) $(LIBRARY
)
1811 optimistic_transaction_test
: $(OBJ_DIR
)/utilities
/transactions
/optimistic_transaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1814 mock_env_test
: $(OBJ_DIR
)/env
/mock_env_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1817 manual_compaction_test
: $(OBJ_DIR
)/db
/manual_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1820 filelock_test
: $(OBJ_DIR
)/util
/filelock_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1823 auto_roll_logger_test
: $(OBJ_DIR
)/logging
/auto_roll_logger_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1826 env_logger_test
: $(OBJ_DIR
)/logging
/env_logger_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1829 memtable_list_test
: $(OBJ_DIR
)/db
/memtable_list_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1832 write_callback_test
: $(OBJ_DIR
)/db
/write_callback_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1835 heap_test
: $(OBJ_DIR
)/util
/heap_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1838 point_lock_manager_test
: utilities
/transactions
/lock
/point
/point_lock_manager_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1841 transaction_test
: $(OBJ_DIR
)/utilities
/transactions
/transaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1844 write_committed_transaction_ts_test
: $(OBJ_DIR
)/utilities
/transactions
/write_committed_transaction_ts_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1847 write_prepared_transaction_test
: $(OBJ_DIR
)/utilities
/transactions
/write_prepared_transaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1850 write_unprepared_transaction_test
: $(OBJ_DIR
)/utilities
/transactions
/write_unprepared_transaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1853 timestamped_snapshot_test
: $(OBJ_DIR
)/utilities
/transactions
/timestamped_snapshot_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1856 tiered_compaction_test
: $(OBJ_DIR
)/db
/compaction
/tiered_compaction_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1859 sst_dump
: $(OBJ_DIR
)/tools
/sst_dump.o
$(TOOLS_LIBRARY
) $(LIBRARY
)
1862 blob_dump
: $(OBJ_DIR
)/tools
/blob_dump.o
$(TOOLS_LIBRARY
) $(LIBRARY
)
1865 repair_test
: $(OBJ_DIR
)/db
/repair_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1868 ldb_cmd_test
: $(OBJ_DIR
)/tools
/ldb_cmd_test.o
$(TOOLS_LIBRARY
) $(TEST_LIBRARY
) $(LIBRARY
)
1871 ldb
: $(OBJ_DIR
)/tools
/ldb.o
$(TOOLS_LIBRARY
) $(LIBRARY
)
1874 iostats_context_test
: $(OBJ_DIR
)/monitoring
/iostats_context_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1875 $(AM_V_CCLD
)$(CXX
) $^
$(EXEC_LDFLAGS
) -o
$@
$(LDFLAGS
)
1877 persistent_cache_test
: $(OBJ_DIR
)/utilities
/persistent_cache
/persistent_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1880 statistics_test
: $(OBJ_DIR
)/monitoring
/statistics_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1883 stats_history_test
: $(OBJ_DIR
)/monitoring
/stats_history_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1886 compressed_secondary_cache_test
: $(OBJ_DIR
)/cache
/compressed_secondary_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1889 lru_cache_test
: $(OBJ_DIR
)/cache
/lru_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1892 range_del_aggregator_test
: $(OBJ_DIR
)/db
/range_del_aggregator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1895 range_del_aggregator_bench
: $(OBJ_DIR
)/db
/range_del_aggregator_bench.o
$(LIBRARY
)
1898 blob_db_test
: $(OBJ_DIR
)/utilities
/blob_db
/blob_db_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1901 repeatable_thread_test
: $(OBJ_DIR
)/util
/repeatable_thread_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1904 range_locking_test
: utilities
/transactions
/lock
/range
/range_locking_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1907 range_tombstone_fragmenter_test
: $(OBJ_DIR
)/db
/range_tombstone_fragmenter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1910 sst_file_reader_test
: $(OBJ_DIR
)/table
/sst_file_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1913 db_secondary_test
: $(OBJ_DIR
)/db
/db_secondary_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1916 block_cache_tracer_test
: $(OBJ_DIR
)/trace_replay
/block_cache_tracer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1919 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
)
1922 defer_test
: $(OBJ_DIR
)/util
/defer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1925 blob_counting_iterator_test
: $(OBJ_DIR
)/db
/blob
/blob_counting_iterator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1928 blob_file_addition_test
: $(OBJ_DIR
)/db
/blob
/blob_file_addition_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1931 blob_file_builder_test
: $(OBJ_DIR
)/db
/blob
/blob_file_builder_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1934 blob_file_cache_test
: $(OBJ_DIR
)/db
/blob
/blob_file_cache_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1937 blob_file_garbage_test
: $(OBJ_DIR
)/db
/blob
/blob_file_garbage_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1940 blob_file_reader_test
: $(OBJ_DIR
)/db
/blob
/blob_file_reader_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1943 blob_source_test
: $(OBJ_DIR
)/db
/blob
/blob_source_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1946 blob_garbage_meter_test
: $(OBJ_DIR
)/db
/blob
/blob_garbage_meter_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1949 timer_test
: $(OBJ_DIR
)/util
/timer_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1952 periodic_task_scheduler_test
: $(OBJ_DIR
)/db
/periodic_task_scheduler_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1955 testutil_test
: $(OBJ_DIR
)/test_util
/testutil_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1958 io_tracer_test
: $(OBJ_DIR
)/trace_replay
/io_tracer_test.o
$(OBJ_DIR
)/trace_replay
/io_tracer.o
$(TEST_LIBRARY
) $(LIBRARY
)
1961 prefetch_test
: $(OBJ_DIR
)/file
/prefetch_test.o
$(OBJ_DIR
)/tools
/io_tracer_parser_tool.o
$(TEST_LIBRARY
) $(LIBRARY
)
1964 io_tracer_parser_test
: $(OBJ_DIR
)/tools
/io_tracer_parser_test.o
$(OBJ_DIR
)/tools
/io_tracer_parser_tool.o
$(TEST_LIBRARY
) $(LIBRARY
)
1967 io_tracer_parser
: $(OBJ_DIR
)/tools
/io_tracer_parser.o
$(TOOLS_LIBRARY
) $(LIBRARY
)
1970 db_blob_corruption_test
: $(OBJ_DIR
)/db
/blob
/db_blob_corruption_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1973 db_write_buffer_manager_test
: $(OBJ_DIR
)/db
/db_write_buffer_manager_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1976 clipping_iterator_test
: $(OBJ_DIR
)/db
/compaction
/clipping_iterator_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1979 ribbon_bench
: $(OBJ_DIR
)/microbench
/ribbon_bench.o
$(LIBRARY
)
1982 db_basic_bench
: $(OBJ_DIR
)/microbench
/db_basic_bench.o
$(LIBRARY
)
1985 cache_reservation_manager_test
: $(OBJ_DIR
)/cache
/cache_reservation_manager_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1988 wide_column_serialization_test
: $(OBJ_DIR
)/db
/wide
/wide_column_serialization_test.o
$(TEST_LIBRARY
) $(LIBRARY
)
1991 #-------------------------------------------------
1992 # make install related stuff
1993 PREFIX ?
= /usr
/local
1994 LIBDIR ?
= $(PREFIX
)/lib
1995 INSTALL_LIBDIR
= $(DESTDIR
)$(LIBDIR
)
1998 rm -rf
$(DESTDIR
)$(PREFIX
)/include/rocksdb \
1999 $(INSTALL_LIBDIR
)/$(LIBRARY
) \
2000 $(INSTALL_LIBDIR
)/$(SHARED4
) \
2001 $(INSTALL_LIBDIR
)/$(SHARED3
) \
2002 $(INSTALL_LIBDIR
)/$(SHARED2
) \
2003 $(INSTALL_LIBDIR
)/$(SHARED1
) \
2004 $(INSTALL_LIBDIR
)/pkgconfig
/rocksdb.
pc
2006 install-headers
: gen-pc
2007 install -d
$(INSTALL_LIBDIR
)
2008 install -d
$(INSTALL_LIBDIR
)/pkgconfig
2009 for header_dir in
`$(FIND) "include/rocksdb" -type d`; do \
2010 install -d
$(DESTDIR
)/$(PREFIX
)/$$header_dir; \
2012 for header in
`$(FIND) "include/rocksdb" -type f -name *.h`; do \
2013 install -C
-m
644 $$header $(DESTDIR
)/$(PREFIX
)/$$header; \
2015 for header in
$(ROCKSDB_PLUGIN_HEADERS
); do \
2016 install -d
$(DESTDIR
)/$(PREFIX
)/include/rocksdb
/`dirname $$header`; \
2017 install -C
-m
644 $$header $(DESTDIR
)/$(PREFIX
)/include/rocksdb
/$$header; \
2019 install -C
-m
644 rocksdb.
pc $(INSTALL_LIBDIR
)/pkgconfig
/rocksdb.
pc
2021 install-static
: install-headers
$(LIBRARY
)
2022 install -d
$(INSTALL_LIBDIR
)
2023 install -C
-m
755 $(LIBRARY
) $(INSTALL_LIBDIR
)
2025 install-shared
: install-headers
$(SHARED4
)
2026 install -d
$(INSTALL_LIBDIR
)
2027 install -C
-m
755 $(SHARED4
) $(INSTALL_LIBDIR
)
2028 ln
-fs
$(SHARED4
) $(INSTALL_LIBDIR
)/$(SHARED3
)
2029 ln
-fs
$(SHARED4
) $(INSTALL_LIBDIR
)/$(SHARED2
)
2030 ln
-fs
$(SHARED4
) $(INSTALL_LIBDIR
)/$(SHARED1
)
2032 # install static by default + install shared if it exists
2033 install: install-static
2034 [ -e
$(SHARED4
) ] && $(MAKE
) install-shared ||
:
2036 # Generate the pkg-config file
2038 -echo
'prefix=$(PREFIX)' > rocksdb.
pc
2039 -echo
'exec_prefix=$${prefix}' >> rocksdb.
pc
2040 -echo
'includedir=$${prefix}/include' >> rocksdb.
pc
2041 -echo
'libdir=$(LIBDIR)' >> rocksdb.
pc
2042 -echo
'' >> rocksdb.
pc
2043 -echo
'Name: rocksdb' >> rocksdb.
pc
2044 -echo
'Description: An embeddable persistent key-value store for fast storage' >> rocksdb.
pc
2045 -echo Version
: $(shell .
/build_tools
/version.sh full
) >> rocksdb.
pc
2046 -echo
'Libs: -L$${libdir} $(EXEC_LDFLAGS) -lrocksdb' >> rocksdb.
pc
2047 -echo
'Libs.private: $(PLATFORM_LDFLAGS)' >> rocksdb.
pc
2048 -echo
'Cflags: -I$${includedir} $(PLATFORM_CXXFLAGS)' >> rocksdb.
pc
2049 -echo
'Requires: $(subst ",,$(ROCKSDB_PLUGIN_PKGCONFIG_REQUIRES))' >> rocksdb.
pc
2051 #-------------------------------------------------
2054 # ---------------------------------------------------------------------------
2056 # ---------------------------------------------------------------------------
2057 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/linux
2058 ifeq ($(PLATFORM
), OS_SOLARIS
)
2059 ARCH
:= $(shell isainfo
-b
)
2060 else ifeq ($(PLATFORM
), OS_OPENBSD
)
2061 ifneq (,$(filter amd64 ppc64 ppc64le s390x arm64 aarch64 sparc64
, $(MACHINE
)))
2067 ARCH
:= $(shell getconf LONG_BIT
)
2070 ifeq ($(shell ldd
/usr
/bin
/env
2>/dev
/null | grep
-q musl
; echo
$$?
),0)
2072 # GNU LibC (or glibc) is so pervasive we can assume it is the default
2077 ifneq ($(origin JNI_LIBC
), undefined
)
2078 JNI_LIBC_POSTFIX
= -$(JNI_LIBC
)
2081 ifeq (,$(ROCKSDBJNILIB
))
2082 ifneq (,$(filter ppc
% s390x arm64 aarch64 sparc64
, $(MACHINE
)))
2083 ROCKSDBJNILIB
= librocksdbjni-linux-
$(MACHINE
)$(JNI_LIBC_POSTFIX
).so
2085 ROCKSDBJNILIB
= librocksdbjni-linux
$(ARCH
)$(JNI_LIBC_POSTFIX
).so
2088 ROCKSDB_JAVA_VERSION ?
= $(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)
2089 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-linux
$(ARCH
)$(JNI_LIBC_POSTFIX
).jar
2090 ROCKSDB_JAR_ALL
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar
2091 ROCKSDB_JAVADOCS_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-javadoc.jar
2092 ROCKSDB_SOURCES_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-sources.jar
2093 SHA256_CMD
= sha256sum
2096 ZLIB_SHA256 ?
= b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30
2097 ZLIB_DOWNLOAD_BASE ?
= http
://zlib.net
2099 BZIP2_SHA256 ?
= ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269
2100 BZIP2_DOWNLOAD_BASE ?
= http
://sourceware.org
/pub
/bzip2
2102 SNAPPY_SHA256 ?
= 16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f
2103 SNAPPY_DOWNLOAD_BASE ?
= https
://github.com
/google
/snappy
/archive
2105 LZ4_SHA256 ?
= 030644df4611007ff7dc962d981f390361e6c97a34e5cbc393ddfbe019ffe2c1
2106 LZ4_DOWNLOAD_BASE ?
= https
://github.com
/lz4
/lz4
/archive
2108 ZSTD_SHA256 ?
= acf714d98e3db7b876e5b540cbf6dee298f60eb3c0723104f6d3f065cd60d6a8
2109 ZSTD_DOWNLOAD_BASE ?
= https
://github.com
/facebook
/zstd
/archive
2110 CURL_SSL_OPTS ?
= --tlsv1
2112 ifeq ($(PLATFORM
), OS_MACOSX
)
2113 ifeq (,$(findstring librocksdbjni-osx
,$(ROCKSDBJNILIB
)))
2114 ifeq ($(MACHINE
),arm64
)
2115 ROCKSDBJNILIB
= librocksdbjni-osx-arm64.jnilib
2116 else ifeq ($(MACHINE
),x86_64
)
2117 ROCKSDBJNILIB
= librocksdbjni-osx-x86_64.jnilib
2119 ROCKSDBJNILIB
= librocksdbjni-osx.jnilib
2122 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-osx.jar
2123 SHA256_CMD
= openssl sha256
-r
2124 ifneq ("$(wildcard $(JAVA_HOME)/include/darwin)","")
2125 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/darwin
2127 JAVA_INCLUDE
= -I
/System
/Library
/Frameworks
/JavaVM.framework
/Headers
/
2131 ifeq ($(PLATFORM
), OS_FREEBSD
)
2132 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/freebsd
2133 ROCKSDBJNILIB
= librocksdbjni-freebsd
$(ARCH
).so
2134 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-freebsd
$(ARCH
).jar
2136 ifeq ($(PLATFORM
), OS_SOLARIS
)
2137 ROCKSDBJNILIB
= librocksdbjni-solaris
$(ARCH
).so
2138 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_MAJOR
).
$(ROCKSDB_MINOR
).
$(ROCKSDB_PATCH
)-solaris
$(ARCH
).jar
2139 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/solaris
2140 SHA256_CMD
= digest
-a sha256
2142 ifeq ($(PLATFORM
), OS_AIX
)
2143 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include/ -I
$(JAVA_HOME
)/include/aix
2144 ROCKSDBJNILIB
= librocksdbjni-aix.so
2145 EXTRACT_SOURCES
= gunzip
< TAR_GZ |
tar xvf
-
2146 SNAPPY_MAKE_TARGET
= libsnappy.la
2148 ifeq ($(PLATFORM
), OS_OPENBSD
)
2149 JAVA_INCLUDE
= -I
$(JAVA_HOME
)/include -I
$(JAVA_HOME
)/include/openbsd
2150 ROCKSDBJNILIB
= librocksdbjni-openbsd
$(ARCH
).so
2151 ROCKSDB_JAR
= rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-openbsd
$(ARCH
).jar
2155 zlib-
$(ZLIB_VER
).
tar.gz
:
2156 curl
--fail
--output zlib-
$(ZLIB_VER
).
tar.gz
--location
${ZLIB_DOWNLOAD_BASE}/zlib-
$(ZLIB_VER
).
tar.gz
2157 ZLIB_SHA256_ACTUAL
=`$(SHA256_CMD) zlib-$(ZLIB_VER).tar.gz | cut -d ' ' -f 1`; \
2158 if
[ "$(ZLIB_SHA256)" != "$$ZLIB_SHA256_ACTUAL" ]; then \
2159 echo zlib-
$(ZLIB_VER
).
tar.gz checksum mismatch
, expected
=\"$(ZLIB_SHA256
)\" actual
=\"$$ZLIB_SHA256_ACTUAL\"; \
2163 libz.a
: zlib-
$(ZLIB_VER
).
tar.gz
2164 -rm -rf zlib-
$(ZLIB_VER
)
2165 tar xvzf zlib-
$(ZLIB_VER
).
tar.gz
2166 if
[ -n
"$(ARCHFLAG)" ]; then \
2167 cd zlib-
$(ZLIB_VER
) && CFLAGS
='-fPIC ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' LDFLAGS
='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' .
/configure
--static
--archs
="$(ARCHFLAG)" && $(MAKE
); \
2169 cd zlib-
$(ZLIB_VER
) && CFLAGS
='-fPIC ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' LDFLAGS
='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' .
/configure
--static
&& $(MAKE
); \
2171 cp zlib-
$(ZLIB_VER
)/libz.a .
2173 bzip2-
$(BZIP2_VER
).
tar.gz
:
2174 curl
--fail
--output bzip2-
$(BZIP2_VER
).
tar.gz
--location
${CURL_SSL_OPTS} ${BZIP2_DOWNLOAD_BASE}/bzip2-
$(BZIP2_VER
).
tar.gz
2175 BZIP2_SHA256_ACTUAL
=`$(SHA256_CMD) bzip2-$(BZIP2_VER).tar.gz | cut -d ' ' -f 1`; \
2176 if
[ "$(BZIP2_SHA256)" != "$$BZIP2_SHA256_ACTUAL" ]; then \
2177 echo bzip2-
$(BZIP2_VER
).
tar.gz checksum mismatch
, expected
=\"$(BZIP2_SHA256
)\" actual
=\"$$BZIP2_SHA256_ACTUAL\"; \
2181 libbz2.a
: bzip2-
$(BZIP2_VER
).
tar.gz
2182 -rm -rf bzip2-
$(BZIP2_VER
)
2183 tar xvzf bzip2-
$(BZIP2_VER
).
tar.gz
2184 cd bzip2-
$(BZIP2_VER
) && $(MAKE
) CFLAGS
='-fPIC -O2 -g -D_FILE_OFFSET_BITS=64 $(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' LDFLAGS
='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' AR
='ar ${EXTRA_ARFLAGS}' libbz2.a
2185 cp bzip2-
$(BZIP2_VER
)/libbz2.a .
2187 snappy-
$(SNAPPY_VER
).
tar.gz
:
2188 curl
--fail
--output snappy-
$(SNAPPY_VER
).
tar.gz
--location
${CURL_SSL_OPTS} ${SNAPPY_DOWNLOAD_BASE}/$(SNAPPY_VER
).
tar.gz
2189 SNAPPY_SHA256_ACTUAL
=`$(SHA256_CMD) snappy-$(SNAPPY_VER).tar.gz | cut -d ' ' -f 1`; \
2190 if
[ "$(SNAPPY_SHA256)" != "$$SNAPPY_SHA256_ACTUAL" ]; then \
2191 echo snappy-
$(SNAPPY_VER
).
tar.gz checksum mismatch
, expected
=\"$(SNAPPY_SHA256
)\" actual
=\"$$SNAPPY_SHA256_ACTUAL\"; \
2195 libsnappy.a
: snappy-
$(SNAPPY_VER
).
tar.gz
2196 -rm -rf snappy-
$(SNAPPY_VER
)
2197 tar xvzf snappy-
$(SNAPPY_VER
).
tar.gz
2198 mkdir snappy-
$(SNAPPY_VER
)/build
2199 cd snappy-
$(SNAPPY_VER
)/build
&& CFLAGS
='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' CXXFLAGS
='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CXXFLAGS} ${EXTRA_CXXFLAGS}' LDFLAGS
='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' cmake
-DCMAKE_POSITION_INDEPENDENT_CODE
=ON
${PLATFORM_CMAKE_FLAGS} ..
&& $(MAKE
) ${SNAPPY_MAKE_TARGET}
2200 cp snappy-
$(SNAPPY_VER
)/build
/libsnappy.a .
2202 lz4-
$(LZ4_VER
).
tar.gz
:
2203 curl
--fail
--output lz4-
$(LZ4_VER
).
tar.gz
--location
${CURL_SSL_OPTS} ${LZ4_DOWNLOAD_BASE}/v
$(LZ4_VER
).
tar.gz
2204 LZ4_SHA256_ACTUAL
=`$(SHA256_CMD) lz4-$(LZ4_VER).tar.gz | cut -d ' ' -f 1`; \
2205 if
[ "$(LZ4_SHA256)" != "$$LZ4_SHA256_ACTUAL" ]; then \
2206 echo lz4-
$(LZ4_VER
).
tar.gz checksum mismatch
, expected
=\"$(LZ4_SHA256
)\" actual
=\"$$LZ4_SHA256_ACTUAL\"; \
2210 liblz4.a
: lz4-
$(LZ4_VER
).
tar.gz
2211 -rm -rf lz4-
$(LZ4_VER
)
2212 tar xvzf lz4-
$(LZ4_VER
).
tar.gz
2213 cd lz4-
$(LZ4_VER
)/lib
&& $(MAKE
) CFLAGS
='-fPIC -O2 $(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' LDFLAGS
='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' all
2214 cp lz4-
$(LZ4_VER
)/lib
/liblz4.a .
2216 zstd-
$(ZSTD_VER
).
tar.gz
:
2217 curl
--fail
--output zstd-
$(ZSTD_VER
).
tar.gz
--location
${CURL_SSL_OPTS} ${ZSTD_DOWNLOAD_BASE}/v
$(ZSTD_VER
).
tar.gz
2218 ZSTD_SHA256_ACTUAL
=`$(SHA256_CMD) zstd-$(ZSTD_VER).tar.gz | cut -d ' ' -f 1`; \
2219 if
[ "$(ZSTD_SHA256)" != "$$ZSTD_SHA256_ACTUAL" ]; then \
2220 echo zstd-
$(ZSTD_VER
).
tar.gz checksum mismatch
, expected
=\"$(ZSTD_SHA256
)\" actual
=\"$$ZSTD_SHA256_ACTUAL\"; \
2224 libzstd.a
: zstd-
$(ZSTD_VER
).
tar.gz
2225 -rm -rf zstd-
$(ZSTD_VER
)
2226 tar xvzf zstd-
$(ZSTD_VER
).
tar.gz
2227 cd zstd-
$(ZSTD_VER
)/lib
&& DESTDIR
=. PREFIX
= $(MAKE
) CFLAGS
='-fPIC -O2 $(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' LDFLAGS
='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' libzstd.a
2228 cp zstd-
$(ZSTD_VER
)/lib
/libzstd.a .
2230 # A version of each $(LIB_OBJECTS) compiled with -fPIC and a fixed set of static compression libraries
2231 ifneq ($(ROCKSDB_JAVA_NO_COMPRESSION
), 1)
2232 JAVA_COMPRESSIONS
= libz.a libbz2.a libsnappy.a liblz4.a libzstd.a
2235 JAVA_STATIC_FLAGS
= -DZLIB
-DBZIP2
-DSNAPPY
-DLZ4
-DZSTD
2236 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
2238 ifneq ($(findstring rocksdbjavastatic
, $(filter-out rocksdbjavastatic_deps
, $(MAKECMDGOALS
))),)
2239 CXXFLAGS
+= $(JAVA_STATIC_FLAGS
) $(JAVA_STATIC_INCLUDES
)
2240 CFLAGS
+= $(JAVA_STATIC_FLAGS
) $(JAVA_STATIC_INCLUDES
)
2243 ifeq ($(JAVA_HOME
),)
2244 $(error JAVA_HOME is not set
)
2246 $(MAKE
) rocksdbjavastatic_deps
2247 $(MAKE
) rocksdbjavastatic_libobjects
2248 $(MAKE
) rocksdbjavastatic_javalib
2249 $(MAKE
) rocksdbjava_jar
2251 rocksdbjavastaticosx
: rocksdbjavastaticosx_archs
2252 cd java
; $(JAR_CMD
) -cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
2253 cd java
/target
; $(JAR_CMD
) -uf
$(ROCKSDB_JAR
) librocksdbjni-osx-x86_64.jnilib librocksdbjni-osx-arm64.jnilib
2254 cd java
/target
/classes
; $(JAR_CMD
) -uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2255 openssl sha1 java
/target
/$(ROCKSDB_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR
).sha1
2257 rocksdbjavastaticosx_ub
: rocksdbjavastaticosx_archs
2258 cd java
/target
; lipo
-create
-output librocksdbjni-osx.jnilib librocksdbjni-osx-x86_64.jnilib librocksdbjni-osx-arm64.jnilib
2259 cd java
; $(JAR_CMD
) -cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
2260 cd java
/target
; $(JAR_CMD
) -uf
$(ROCKSDB_JAR
) librocksdbjni-osx.jnilib
2261 cd java
/target
/classes
; $(JAR_CMD
) -uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2262 openssl sha1 java
/target
/$(ROCKSDB_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR
).sha1
2264 rocksdbjavastaticosx_archs
:
2265 $(MAKE
) rocksdbjavastaticosx_arch_x86_64
2266 $(MAKE
) rocksdbjavastaticosx_arch_arm64
2268 rocksdbjavastaticosx_arch_
%:
2269 ifeq ($(JAVA_HOME
),)
2270 $(error JAVA_HOME is not set
)
2272 $(MAKE
) clean-ext-libraries-bin
2274 ARCHFLAG
="-arch $*" $(MAKE
) rocksdbjavastatic_deps
2275 ARCHFLAG
="-arch $*" $(MAKE
) rocksdbjavastatic_libobjects
2276 ARCHFLAG
="-arch $*" ROCKSDBJNILIB
="librocksdbjni-osx-$*.jnilib" $(MAKE
) rocksdbjavastatic_javalib
2279 ifneq ($(JAVA_HOME
),)
2280 JAR_CMD
:= $(JAVA_HOME
)/bin
/jar
2285 rocksdbjavastatic_javalib
:
2286 cd java
; $(MAKE
) javalib
2287 rm -f java
/target
/$(ROCKSDBJNILIB
)
2288 $(CXX
) $(CXXFLAGS
) -I.
/java
/.
$(JAVA_INCLUDE
) -shared
-fPIC \
2289 -o .
/java
/target
/$(ROCKSDBJNILIB
) $(ALL_JNI_NATIVE_SOURCES
) \
2290 $(LIB_OBJECTS
) $(COVERAGEFLAGS
) \
2291 $(JAVA_COMPRESSIONS
) $(JAVA_STATIC_LDFLAGS
)
2292 cd java
/target
;if
[ "$(DEBUG_LEVEL)" == "0" ]; then \
2293 strip $(STRIPFLAGS
) $(ROCKSDBJNILIB
); \
2297 cd java
; $(JAR_CMD
) -cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
2298 cd java
/target
; $(JAR_CMD
) -uf
$(ROCKSDB_JAR
) $(ROCKSDBJNILIB
)
2299 cd java
/target
/classes
; $(JAR_CMD
) -uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2300 openssl sha1 java
/target
/$(ROCKSDB_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR
).sha1
2302 rocksdbjava_javadocs_jar
:
2303 cd java
/target
/apidocs
; $(JAR_CMD
) -cf ..
/$(ROCKSDB_JAVADOCS_JAR
) *
2304 openssl sha1 java
/target
/$(ROCKSDB_JAVADOCS_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAVADOCS_JAR
).sha1
2306 rocksdbjava_sources_jar
:
2307 cd java
/src
/main
/java
; $(JAR_CMD
) -cf ..
/..
/..
/target
/$(ROCKSDB_SOURCES_JAR
) org
2308 openssl sha1 java
/target
/$(ROCKSDB_SOURCES_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_SOURCES_JAR
).sha1
2310 rocksdbjavastatic_deps
: $(JAVA_COMPRESSIONS
)
2312 rocksdbjavastatic_libobjects
: $(LIB_OBJECTS
)
2314 rocksdbjavastaticrelease
: rocksdbjavastaticosx rocksdbjava_javadocs_jar rocksdbjava_sources_jar
2315 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
2316 cd java
; $(JAR_CMD
) -cf target
/$(ROCKSDB_JAR_ALL
) HISTORY
*.md
2317 cd java
/target
; $(JAR_CMD
) -uf
$(ROCKSDB_JAR_ALL
) librocksdbjni-
*.so librocksdbjni-
*.jnilib
2318 cd java
/target
/classes
; $(JAR_CMD
) -uf ..
/$(ROCKSDB_JAR_ALL
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2319 openssl sha1 java
/target
/$(ROCKSDB_JAR_ALL
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR_ALL
).sha1
2321 rocksdbjavastaticreleasedocker
: rocksdbjavastaticosx rocksdbjavastaticdockerx86 rocksdbjavastaticdockerx86_64 rocksdbjavastaticdockerx86musl rocksdbjavastaticdockerx86_64musl rocksdbjava_javadocs_jar rocksdbjava_sources_jar
2322 cd java
; $(JAR_CMD
) -cf target
/$(ROCKSDB_JAR_ALL
) HISTORY
*.md
2323 cd java
/target
; $(JAR_CMD
) -uf
$(ROCKSDB_JAR_ALL
) librocksdbjni-
*.so librocksdbjni-
*.jnilib
2324 cd java
/target
/classes
; $(JAR_CMD
) -uf ..
/$(ROCKSDB_JAR_ALL
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2325 openssl sha1 java
/target
/$(ROCKSDB_JAR_ALL
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR_ALL
).sha1
2327 rocksdbjavastaticdockerx86
:
2328 mkdir
-p java
/target
2329 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
2331 rocksdbjavastaticdockerx86_64
:
2332 mkdir
-p java
/target
2333 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
2335 rocksdbjavastaticdockerppc64le
:
2336 mkdir
-p java
/target
2337 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
2339 rocksdbjavastaticdockerarm64v8
:
2340 mkdir
-p java
/target
2341 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
2343 rocksdbjavastaticdockers390x
:
2344 mkdir
-p java
/target
2345 docker run
--rm --name rocksdb_linux_s390x-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
:ubuntu18_s390x-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-centos.sh
2347 rocksdbjavastaticdockerx86musl
:
2348 mkdir
-p java
/target
2349 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-alpine.sh
2351 rocksdbjavastaticdockerx86_64musl
:
2352 mkdir
-p java
/target
2353 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-alpine.sh
2355 rocksdbjavastaticdockerppc64lemusl
:
2356 mkdir
-p java
/target
2357 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-alpine.sh
2359 rocksdbjavastaticdockerarm64v8musl
:
2360 mkdir
-p java
/target
2361 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-alpine.sh
2363 rocksdbjavastaticdockers390xmusl
:
2364 mkdir
-p java
/target
2365 docker run
--rm --name rocksdb_linux_s390x-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_s390x-be
/rocksdb-host
/java
/crossbuild
/docker-build-linux-alpine.sh
2367 rocksdbjavastaticpublish
: rocksdbjavastaticrelease rocksdbjavastaticpublishcentral
2369 rocksdbjavastaticpublishdocker
: rocksdbjavastaticreleasedocker rocksdbjavastaticpublishcentral
2371 ROCKSDB_JAVA_RELEASE_CLASSIFIERS
= javadoc sources linux64 linux32 linux64-musl linux32-musl osx win64
2373 rocksdbjavastaticpublishcentral
: rocksdbjavageneratepom
2374 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
2375 $(foreach classifier
, $(ROCKSDB_JAVA_RELEASE_CLASSIFIERS
), 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
)-$(classifier
).jar
-Dclassifier
=$(classifier
);)
2377 rocksdbjavageneratepom
:
2378 cd java
;cat pom.xml.template | sed
's/\$${ROCKSDB_JAVA_VERSION}/$(ROCKSDB_JAVA_VERSION)/' > pom.xml
2380 rocksdbjavastaticnexusbundlejar
: rocksdbjavageneratepom
2381 openssl sha1
-r java
/pom.xml | awk
'{ print $$1 }' > java
/target
/pom.xml.sha1
2382 openssl sha1
-r java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar | awk
'{ print $$1 }' > java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar.sha1
2383 $(foreach classifier
, $(ROCKSDB_JAVA_RELEASE_CLASSIFIERS
), openssl sha1
-r java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-$(classifier
).jar | awk
'{ print $$1 }' > java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-$(classifier
).jar.sha1
;)
2384 gpg
--yes
--output java
/target
/pom.xml.asc
-ab java
/pom.xml
2385 gpg
--yes
-ab java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar
2386 $(foreach classifier
, $(ROCKSDB_JAVA_RELEASE_CLASSIFIERS
), gpg
--yes
-ab java
/target
/rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-$(classifier
).jar
;)
2387 $(JAR_CMD
) cvf java
/target
/nexus-bundle-rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar
-C java pom.xml
-C java
/target pom.xml.sha1
-C java
/target pom.xml.asc
-C java
/target rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar
-C java
/target rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar.sha1
-C java
/target rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar.asc
2388 $(foreach classifier
, $(ROCKSDB_JAVA_RELEASE_CLASSIFIERS
), $(JAR_CMD
) uf java
/target
/nexus-bundle-rocksdbjni-
$(ROCKSDB_JAVA_VERSION
).jar
-C java
/target rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-$(classifier
).jar
-C java
/target rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-$(classifier
).jar.sha1
-C java
/target rocksdbjni-
$(ROCKSDB_JAVA_VERSION
)-$(classifier
).jar.asc
;)
2391 # A version of each $(LIBOBJECTS) compiled with -fPIC
2394 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) -fPIC
-c
$< -o
$@
$(COVERAGEFLAGS
)
2396 rocksdbjava
: $(LIB_OBJECTS
)
2397 ifeq ($(JAVA_HOME
),)
2398 $(error JAVA_HOME is not set
)
2400 $(AM_V_GEN
)cd java
; $(MAKE
) javalib
;
2401 $(AM_V_at
)rm -f .
/java
/target
/$(ROCKSDBJNILIB
)
2402 $(AM_V_at
)$(CXX
) $(CXXFLAGS
) -I.
/java
/.
-I.
/java
/rocksjni
$(JAVA_INCLUDE
) $(ROCKSDB_PLUGIN_JNI_CXX_INCLUDEFLAGS
) -shared
-fPIC
-o .
/java
/target
/$(ROCKSDBJNILIB
) $(ALL_JNI_NATIVE_SOURCES
) $(LIB_OBJECTS
) $(JAVA_LDFLAGS
) $(COVERAGEFLAGS
)
2403 $(AM_V_at
)cd java
; $(JAR_CMD
) -cf target
/$(ROCKSDB_JAR
) HISTORY
*.md
2404 $(AM_V_at
)cd java
/target
; $(JAR_CMD
) -uf
$(ROCKSDB_JAR
) $(ROCKSDBJNILIB
)
2405 $(AM_V_at
)cd java
/target
/classes
; $(JAR_CMD
) -uf ..
/$(ROCKSDB_JAR
) org
/rocksdb
/*.class org
/rocksdb
/util
/*.class
2406 $(AM_V_at
)openssl sha1 java
/target
/$(ROCKSDB_JAR
) | sed
's/.*= \([0-9a-f]*\)/\1/' > java
/target
/$(ROCKSDB_JAR
).sha1
2409 cd java
;$(MAKE
) clean;
2411 jtest_compile
: rocksdbjava
2412 cd java
;$(MAKE
) java_test
2415 cd java
;$(MAKE
) run_test
2418 cd java
;$(MAKE
) sample
test
2421 cd java
;$(MAKE
) db_bench
;
2424 echo
"TODO: bring this back using parts of old precommit_checker.py and rocksdb-lego-determinator"
2425 false
# J=$(J) build_tools/precommit_checker.py unit clang_unit release clang_release tsan asan ubsan lite unit_non_shm
2426 # $(MAKE) clean && $(MAKE) jclean && $(MAKE) rocksdbjava;
2428 # For public CI runs, checkout folly in a way that can build with RocksDB.
2429 # This is mostly intended as a test-only simulation of Meta-internal folly
2432 if
[ -e third-party
/folly
]; then \
2433 cd third-party
/folly
&& ${GIT_COMMAND} fetch
origin; \
2435 cd third-party
&& ${GIT_COMMAND} clone https
://github.com
/facebook
/folly.git
; \
2437 @
# Pin to a particular version for public CI, so that PR authors don't
2438 @
# need to worry about folly breaking our integration. Update periodically
2439 cd third-party
/folly
&& git reset
--hard beacd86d63cd71c904632262e6c36f60874d78ba
2440 @
# A hack to remove boost dependency.
2441 @
# NOTE: this hack is only needed if building using USE_FOLLY_LITE
2442 perl
-pi
-e
's/^(#include <boost)/\/\/$$1/' third-party
/folly
/folly
/functional
/Invoke.h
2443 @
# NOTE: this hack is required for clang in some cases
2444 perl
-pi
-e
's/int rv = syscall/int rv = (int)syscall/' third-party
/folly
/folly
/detail
/Futex.
cpp
2445 @
# NOTE: this hack is required for gcc in some cases
2446 perl
-pi
-e
's/(__has_include.<experimental.memory_resource>.)/__cpp_rtti && $$1/' third-party
/folly
/folly
/memory
/MemoryResource.h
2449 FOLLY_INST_PATH
=`cd third-party/folly; $(PYTHON) build/fbcode_builder/getdeps.py show-inst-dir`; \
2450 if
[ "$$FOLLY_INST_PATH" ]; then \
2451 rm -rf
$${FOLLY_INST_PATH}/..
/..
/*; \
2453 echo
"Please run checkout_folly first"; \
2456 # Restore the original version of Invoke.h with boost dependency
2457 cd third-party
/folly
&& ${GIT_COMMAND} checkout folly
/functional
/Invoke.h
2458 cd third-party
/folly
&& MAYBE_AVX2
=`echo $(CXXFLAGS) | grep -o -- -DHAVE_AVX2 | sed 's/-DHAVE_AVX2/-mavx2/g' || true` && \
2459 CXXFLAGS
=" $$MAYBE_AVX2 -DHAVE_CXX11_ATOMIC " $(PYTHON
) build
/fbcode_builder
/getdeps.py build
--no-tests
2461 # ---------------------------------------------------------------------------
2462 # Build size testing
2463 # ---------------------------------------------------------------------------
2465 REPORT_BUILD_STATISTIC?
=echo STATISTIC
:
2468 # === normal build, static ===
2471 $(REPORT_BUILD_STATISTIC
) rocksdb.build_size.static_lib
$$(stat
--printf
="%s" librocksdb.a
)
2473 $(REPORT_BUILD_STATISTIC
) rocksdb.build_size.static_lib_stripped
$$(stat
--printf
="%s" librocksdb.a
)
2474 # === normal build, shared ===
2477 $(REPORT_BUILD_STATISTIC
) rocksdb.build_size.shared_lib
$$(stat
--printf
="%s" `readlink -f librocksdb.so`)
2478 strip `readlink -f librocksdb.so`
2479 $(REPORT_BUILD_STATISTIC
) rocksdb.build_size.shared_lib_stripped
$$(stat
--printf
="%s" `readlink -f librocksdb.so`)
2480 # === lite build, static ===
2482 $(MAKE
) LITE
=1 static_lib
2483 $(REPORT_BUILD_STATISTIC
) rocksdb.build_size.static_lib_lite
$$(stat
--printf
="%s" librocksdb.a
)
2485 $(REPORT_BUILD_STATISTIC
) rocksdb.build_size.static_lib_lite_stripped
$$(stat
--printf
="%s" librocksdb.a
)
2486 # === lite build, shared ===
2488 $(MAKE
) LITE
=1 shared_lib
2489 $(REPORT_BUILD_STATISTIC
) rocksdb.build_size.shared_lib_lite
$$(stat
--printf
="%s" `readlink -f librocksdb.so`)
2490 strip `readlink -f librocksdb.so`
2491 $(REPORT_BUILD_STATISTIC
) rocksdb.build_size.shared_lib_lite_stripped
$$(stat
--printf
="%s" `readlink -f librocksdb.so`)
2493 # ---------------------------------------------------------------------------
2494 # Platform-specific compilation
2495 # ---------------------------------------------------------------------------
2497 ifeq ($(PLATFORM
), IOS
)
2498 # For iOS, create universal object files to be used on both the simulator and
2500 XCODEROOT
=$(shell xcode-select
-print-path
)
2501 PLATFORMSROOT
=$(XCODEROOT
)/Platforms
2502 SIMULATORROOT
=$(PLATFORMSROOT
)/iPhoneSimulator.platform
/Developer
2503 DEVICEROOT
=$(PLATFORMSROOT
)/iPhoneOS.platform
/Developer
2504 IOSVERSION
=$(shell defaults read
$(PLATFORMSROOT
)/iPhoneOS.platform
/version CFBundleShortVersionString
)
2507 mkdir
-p ios-x86
/$(dir $@
)
2508 $(CXX
) $(CXXFLAGS
) -isysroot
$(SIMULATORROOT
)/SDKs
/iPhoneSimulator
$(IOSVERSION
).sdk
-arch i686
-arch x86_64
-c
$< -o ios-x86
/$@
2509 mkdir
-p ios-arm
/$(dir $@
)
2510 xcrun
-sdk iphoneos
$(CXX
) $(CXXFLAGS
) -isysroot
$(DEVICEROOT
)/SDKs
/iPhoneOS
$(IOSVERSION
).sdk
-arch armv6
-arch armv7
-arch armv7s
-arch arm64
-c
$< -o ios-arm
/$@
2511 lipo ios-x86
/$@ ios-arm
/$@
-create
-output
$@
2514 mkdir
-p ios-x86
/$(dir $@
)
2515 $(CC
) $(CFLAGS
) -isysroot
$(SIMULATORROOT
)/SDKs
/iPhoneSimulator
$(IOSVERSION
).sdk
-arch i686
-arch x86_64
-c
$< -o ios-x86
/$@
2516 mkdir
-p ios-arm
/$(dir $@
)
2517 xcrun
-sdk iphoneos
$(CC
) $(CFLAGS
) -isysroot
$(DEVICEROOT
)/SDKs
/iPhoneOS
$(IOSVERSION
).sdk
-arch armv6
-arch armv7
-arch armv7s
-arch arm64
-c
$< -o ios-arm
/$@
2518 lipo ios-x86
/$@ ios-arm
/$@
-create
-output
$@
2521 ifeq ($(HAVE_POWER8
),1)
2522 $(OBJ_DIR
)/util
/crc32c_ppc.o
: util
/crc32c_ppc.c
2523 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
2525 $(OBJ_DIR
)/util
/crc32c_ppc_asm.o
: util
/crc32c_ppc_asm.S
2526 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
2528 $(OBJ_DIR
)/%.o
: %.
cc
2529 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) -c
$< -o
$@
$(COVERAGEFLAGS
)
2531 $(OBJ_DIR
)/%.o
: %.
cpp
2532 $(AM_V_CC
)mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) -c
$< -o
$@
$(COVERAGEFLAGS
)
2535 $(AM_V_CC
)$(CC
) $(CFLAGS
) -c
$< -o
$@
2538 # ---------------------------------------------------------------------------
2539 # Source files dependencies detection
2540 # ---------------------------------------------------------------------------
2541 # If skip dependencies is ON, skip including the dep files
2542 ifneq ($(SKIP_DEPENDS
), 1)
2543 DEPFILES
= $(patsubst %.
cc, $(OBJ_DIR
)/%.
cc.d
, $(ALL_SOURCES
))
2544 DEPFILES
+ = $(patsubst %.c
, $(OBJ_DIR
)/%.c.d
, $(LIB_SOURCES_C
) $(TEST_MAIN_SOURCES_C
))
2545 ifeq ($(USE_FOLLY_LITE
),1)
2546 DEPFILES
+=$(patsubst %.
cpp, $(OBJ_DIR
)/%.
cpp.d
, $(FOLLY_SOURCES
))
2550 # Add proper dependency support so changing a .h file forces a .cc file to
2553 # The .d file indicates .cc file's dependencies on .h files. We generate such
2554 # dependency by g++'s -MM option, whose output is a make dependency rule.
2555 $(OBJ_DIR
)/%.
cc.d
: %.
cc
2556 @mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
2557 -MM
-MT
'$@' -MT
'$(<:.cc=.o)' -MT
'$(<:%.cc=$(OBJ_DIR)/%.o)' \
2560 $(OBJ_DIR
)/%.
cpp.d
: %.
cpp
2561 @mkdir
-p
$(@D
) && $(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
2562 -MM
-MT
'$@' -MT
'$(<:.cpp=.o)' -MT
'$(<:%.cpp=$(OBJ_DIR)/%.o)' \
2565 ifeq ($(HAVE_POWER8
),1)
2566 DEPFILES_C
= $(patsubst %.c
, $(OBJ_DIR
)/%.c.d
, $(LIB_SOURCES_C
))
2567 DEPFILES_ASM
= $(patsubst %.S
, $(OBJ_DIR
)/%.S.d
, $(LIB_SOURCES_ASM
))
2569 $(OBJ_DIR
)/%.c.d
: %.c
2570 @
$(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
2571 -MM
-MT
'$@' -MT
'$(<:.c=.o)' "$<" -o
'$@'
2573 $(OBJ_DIR
)/%.S.d
: %.S
2574 @
$(CXX
) $(CXXFLAGS
) $(PLATFORM_SHARED_CFLAGS
) \
2575 -MM
-MT
'$@' -MT
'$(<:.S=.o)' "$<" -o
'$@'
2577 $(DEPFILES_C
): %.c.d
2579 $(DEPFILES_ASM
): %.S.d
2580 depend
: $(DEPFILES
) $(DEPFILES_C
) $(DEPFILES_ASM
)
2585 build_subset_tests
: $(ROCKSDBTESTS_SUBSET
)
2586 $(AM_V_GEN
)if
[ -n
"$${ROCKSDBTESTS_SUBSET_TESTS_TO_FILE}" ]; then echo
"$(ROCKSDBTESTS_SUBSET)" > "$${ROCKSDBTESTS_SUBSET_TESTS_TO_FILE}"; else echo
"$(ROCKSDBTESTS_SUBSET)"; fi
2589 echo
"$(ROCKSDBTESTS_SUBSET)"
2591 # Remove the rules for which dependencies should not be generated and see if any are left.
2592 #If so, include the dependencies; if not, do not include the dependency files
2593 ROCKS_DEP_RULES
=$(filter-out clean format check-format check-buck-targets check-headers check-sources jclean jtest package analyze
tags rocksdbjavastatic
% unity.
% unity_test checkout_folly
, $(MAKECMDGOALS
))
2594 ifneq ("$(ROCKS_DEP_RULES)", "")
2595 -include $(DEPFILES
)