Makefile 76.4 KB
Newer Older
J
jorlow@chromium.org 已提交
1 2 3 4
# Copyright (c) 2011 The LevelDB Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. See the AUTHORS file for names of contributors.

5
# Inherit some settings from environment variables, if available
J
jorlow@chromium.org 已提交
6

7
#-----------------------------------------------
奏之章 已提交
8 9
USE_RTTI = 1

郭宽宽 已提交
10 11 12
# For Flink Rocksdb Version
FROCKSDB_VERSION ?= 2.0

J
Jonathan Lee 已提交
13 14 15
BASH_EXISTS := $(shell which bash)
SHELL := $(shell which bash)

L
leipeng 已提交
16
COMPRESSION_CXXFLAGS ?= -DSNAPPY=1 -DZLIB=1 -DLZ4=1 -DLZ4_DISABLE_DEPRECATE_WARNINGS -DZSTD=1 -Isnappy-1.1.4 -Ilz4-1.8.0/lib -Izstd-1.3.3/lib/include -Izlib-1.2.11
L
leipeng 已提交
17
COMPRESSION_LDFLAGS  ?= -L. -lsnappy -lz -llz4
18

19
CLEAN_FILES = # deliberately empty, so we can append below.
20
CFLAGS += ${EXTRA_CFLAGS}
L
leipeng 已提交
21 22
CXXFLAGS += ${EXTRA_CXXFLAGS} ${COMPRESSION_CXXFLAGS}
LDFLAGS += $(EXTRA_LDFLAGS) ${COMPRESSION_LDFLAGS}
23
MACHINE ?= $(shell uname -m)
T
Tomas Kolda 已提交
24 25
ARFLAGS = ${EXTRA_ARFLAGS} rs
STRIPFLAGS = -S -x
26

雷鹏 已提交
27
CXXFLAGS += -fPIC
28 29
# Transform parallel LOG output into something more readable.
perl_command = perl -n \
30 31 32
  -e '@a=split("\t",$$_,-1); $$t=$$a[8];'				\
  -e '$$t =~ /.*if\s\[\[\s"(.*?\.[\w\/]+)/ and $$t=$$1;'		\
  -e '$$t =~ s,^\./,,;'							\
Y
Yueh-Hsuan Chiang 已提交
33 34 35
  -e '$$t =~ s, >.*,,; chomp $$t;'					\
  -e '$$t =~ /.*--gtest_filter=(.*?\.[\w\/]+)/ and $$t=$$1;'		\
  -e 'printf "%7.3f %s %s\n", $$a[3], $$a[6] == 0 ? "PASS" : "FAIL", $$t'
36 37
quoted_perl_command = $(subst ','\'',$(perl_command))

38 39 40 41 42 43 44 45 46
# DEBUG_LEVEL can have three values:
# * DEBUG_LEVEL=2; this is the ultimate debug mode. It will compile rocksdb
# without any optimizations. To compile with level 2, issue `make dbg`
# * DEBUG_LEVEL=1; debug level 1 enables all assertions and debug code, but
# compiles rocksdb with -O2 optimizations. this is the default debug level.
# `make all` or `make <binary_target>` compile RocksDB with debug level 1.
# We use this debug level when developing RocksDB.
# * DEBUG_LEVEL=0; this is the debug level we use for release. If you're
# running rocksdb in production you most definitely want to compile RocksDB
A
agiardullo 已提交
47
# with debug level 0. To compile with level 0, run `make shared_lib`,
48 49
# `make install-shared`, `make static_lib`, `make install-static` or
# `make install`
50 51 52

# Set the default DEBUG_LEVEL to 1
DEBUG_LEVEL?=1
53 54

ifeq ($(MAKECMDGOALS),dbg)
Y
Yueh-Hsuan Chiang 已提交
55
	DEBUG_LEVEL=2
56
endif
57

58 59 60 61 62 63 64 65
ifeq ($(MAKECMDGOALS),clean)
	DEBUG_LEVEL=0
endif

ifeq ($(MAKECMDGOALS),release)
	DEBUG_LEVEL=0
endif

C
chenchanglong 已提交
66 67 68
ifeq ($(MAKECMDGOALS),shared_lib)
	DEBUG_LEVEL=0
endif
I
Igor Canadi 已提交
69

C
chenchanglong 已提交
70 71 72
ifeq ($(MAKECMDGOALS),install-shared)
	DEBUG_LEVEL=0
endif
I
Igor Canadi 已提交
73

C
chenchanglong 已提交
74 75 76
ifeq ($(MAKECMDGOALS),static_lib)
	DEBUG_LEVEL=0
endif
I
Igor Canadi 已提交
77

C
chenchanglong 已提交
78 79 80
ifeq ($(MAKECMDGOALS),install-static)
	DEBUG_LEVEL=0
endif
I
Igor Canadi 已提交
81 82

ifeq ($(MAKECMDGOALS),install)
Y
Yueh-Hsuan Chiang 已提交
83
	DEBUG_LEVEL=0
84 85
endif

86
ifeq ($(MAKECMDGOALS),rocksdbjavastatic)
87 88 89
	ifneq ($(DEBUG_LEVEL),2)
		DEBUG_LEVEL=0
	endif
90 91
endif

Y
Yueh-Hsuan Chiang 已提交
92 93 94 95
ifeq ($(MAKECMDGOALS),rocksdbjavastaticrelease)
	DEBUG_LEVEL=0
endif

96 97 98 99
ifeq ($(MAKECMDGOALS),rocksdbjavastaticreleasedocker)
        DEBUG_LEVEL=0
endif

Y
Yueh-Hsuan Chiang 已提交
100 101 102 103
ifeq ($(MAKECMDGOALS),rocksdbjavastaticpublish)
	DEBUG_LEVEL=0
endif

郭宽宽 已提交
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
ifeq ($(MAKECMDGOALS),frocksdbjavastatic)
	ifneq ($(DEBUG_LEVEL),2)
		DEBUG_LEVEL=0
	endif
endif

ifeq ($(MAKECMDGOALS),frocksdbjavastaticrelease)
	DEBUG_LEVEL=0
endif

ifeq ($(MAKECMDGOALS),frocksdbjavastaticreleasedocker)
        DEBUG_LEVEL=0
endif

ifeq ($(MAKECMDGOALS),frocksdbjavastaticpublish)
	DEBUG_LEVEL=0
endif

雷鹏 已提交
122 123
###############################################################################
## Terark specific
L
leipeng 已提交
124

125
ifeq (${DEBUG_LEVEL},0)
奏之章 已提交
126
  DBG_OR_RLS=r
127 128 129 130 131
endif
ifeq (${DEBUG_LEVEL},1)
  DBG_OR_RLS=a
endif
ifeq (${DEBUG_LEVEL},2)
奏之章 已提交
132 133 134
  DBG_OR_RLS=d
endif

雷鹏 已提交
135
BMI2 ?= $(shell bash cpu_has_bmi2.sh)
雷鹏 已提交
136 137 138 139
BUILD_NAME := $(shell bash get_terark_build_name.sh ${CXX} ${BMI2})
BUILD_ROOT := build/${BUILD_NAME}
xdir:=${BUILD_ROOT}/dbg-${DEBUG_LEVEL}

C
chenchanglong 已提交
140
TERARK_CORE_HOME ?= terark-core
C
chenchanglong 已提交
141
TERARK_CORE_PKG_DIR := ${TERARK_CORE_HOME}/pkg/terark-fsa_all-${BUILD_NAME}
C
chenchanglong 已提交
142 143 144 145 146 147 148
BOOST_LIB_DIR := ${TERARK_CORE_HOME}/boost-include/stage/lib
LINK_SHARED_BOOST := -L${BOOST_LIB_DIR} \
					 -lboost_context \
					 -lboost_fiber \
					 -lboost_filesystem \
					 -lboost_system \
					 -ldl
149

L
leipeng 已提交
150
CXXFLAGS += -march=haswell
Z
ZhaoMing 已提交
151
CXXFLAGS += -I${TERARK_CORE_HOME}/src -I${TERARK_CORE_HOME}/boost-include -I${TERARK_CORE_HOME}/3rdparty/zstd
L
leipeng 已提交
152

林源劲 已提交
153 154 155 156 157
CPPUTIL_METRICS2_HOME ?= third-party/metrics2-cmake
LDFLAGS += ${CPPUTIL_METRICS2_HOME}/cmake-build/libmetrics2.a
CFLAGS += -I${CPPUTIL_METRICS2_HOME}
CXXFLAGS += -I${CPPUTIL_METRICS2_HOME}

L
leipeng 已提交
158
#------------------------------------------------------------------------------
L
leipeng 已提交
159
ifeq (${TERARK_CORE_HOME},terark-core)
L
leipeng 已提交
160
terark-core.got:
C
chenchanglong 已提交
161 162
ifdef TERARK_CORE_BRANCH
	cd terark-core && git checkout ${TERARK_CORE_BRANCH} && git submodule update --init
163
endif
C
chenchanglong 已提交
164
	+$(MAKE) -C terark-core pkg PKG_WITH_DBG=1 PKG_WITH_STATIC=1 WITH_BMI2=${BMI2}
L
leipeng 已提交
165 166
	touch $@
endif
L
leipeng 已提交
167
LINK_TERARK ?= static
雷鹏 已提交
168

L
leipeng 已提交
169 170 171 172
ifeq ($(shell uname),Darwin)
  LIB_GOMP :=
else
  LIB_GOMP := -lgomp
雷鹏 已提交
173 174
endif

C
chenchanglong 已提交
175 176 177 178 179
LINK_SHARED_TERARK := -lterark-idx-${DBG_OR_RLS} \
					  -lterark-zbs-${DBG_OR_RLS} \
					  -lterark-fsa-${DBG_OR_RLS} \
					  -lterark-core-${DBG_OR_RLS} -ldl ${LIB_GOMP}

雷鹏 已提交
180
ifeq ($(LINK_TERARK),shared)
181
  export LD_LIBRARY_PATH:=${TERARK_CORE_PKG_DIR}/lib:${LD_LIBRARY_PATH}
赵明 已提交
182 183 184 185
  TerarkLDFLAGS += -lterark-idx-${DBG_OR_RLS} \
                   -lterark-zbs-${DBG_OR_RLS} \
                   -lterark-fsa-${DBG_OR_RLS} \
                   -lterark-core-${DBG_OR_RLS} -ldl ${LIB_GOMP}
奏之章 已提交
186
endif
赵明 已提交
187

雷鹏 已提交
188
ifeq ($(LINK_TERARK),static)
189 190 191 192 193
  override LINK_STATIC_TERARK := -L${TERARK_CORE_PKG_DIR}/lib_static \
    ${TERARK_CORE_PKG_DIR}/lib_static/libterark-idx-${DBG_OR_RLS}.a \
    ${TERARK_CORE_PKG_DIR}/lib_static/libterark-zbs-${DBG_OR_RLS}.a \
    ${TERARK_CORE_PKG_DIR}/lib_static/libterark-fsa-${DBG_OR_RLS}.a \
    ${TERARK_CORE_PKG_DIR}/lib_static/libterark-core-${DBG_OR_RLS}.a
L
leipeng 已提交
194
  ifeq ($(shell uname),Darwin)
L
leipeng 已提交
195 196 197 198 199
    override LINK_STATIC_TERARK := \
      -Wl,-all_load ${LINK_STATIC_TERARK} -Wl,-noall_load
  else
    override LINK_STATIC_TERARK := \
      -Wl,--whole-archive ${LINK_STATIC_TERARK} -Wl,--no-whole-archive
L
leipeng 已提交
200
  endif
L
leipeng 已提交
201
  override LINK_STATIC_TERARK += ${LIB_GOMP}
L
leipeng 已提交
202

奏之章 已提交
203
endif
L
leipeng 已提交
204

雷鹏 已提交
205
###############################################################################
奏之章 已提交
206

Y
Yi Wu 已提交
207 208
# Lite build flag.
LITE ?= 0
209 210 211 212 213 214 215 216
ifeq ($(LITE), 0)
ifneq ($(filter -DROCKSDB_LITE,$(OPT)),)
  # Be backward compatible and support older format where OPT=-DROCKSDB_LITE is
  # specified instead of LITE=1 on the command line.
  LITE=1
endif
else ifeq ($(LITE), 1)
ifeq ($(filter -DROCKSDB_LITE,$(OPT)),)
Y
Yi Wu 已提交
217 218
	OPT += -DROCKSDB_LITE
endif
219
endif
Y
Yi Wu 已提交
220 221 222 223 224 225 226 227 228 229

# Figure out optimize level.
ifneq ($(DEBUG_LEVEL), 2)
ifeq ($(LITE), 0)
	OPT += -O2
else
	OPT += -Os
endif
endif

230 231
# compile with -O2 if debug level is not 2
ifneq ($(DEBUG_LEVEL), 2)
Y
Yi Wu 已提交
232
OPT += -fno-omit-frame-pointer
233 234
# Skip for archs that don't support -momit-leaf-frame-pointer
ifeq (,$(shell $(CXX) -fsyntax-only -momit-leaf-frame-pointer -xc /dev/null 2>&1))
235 236 237 238
OPT += -momit-leaf-frame-pointer
endif
endif

239 240 241 242 243 244 245 246 247 248 249 250
ifeq (,$(shell $(CXX) -fsyntax-only -maltivec -xc /dev/null 2>&1))
CXXFLAGS += -DHAS_ALTIVEC
CFLAGS += -DHAS_ALTIVEC
HAS_ALTIVEC=1
endif

ifeq (,$(shell $(CXX) -fsyntax-only -mcpu=power8 -xc /dev/null 2>&1))
CXXFLAGS += -DHAVE_POWER8
CFLAGS +=  -DHAVE_POWER8
HAVE_POWER8=1
endif

251
# if we're compiling for release, compile without debug code (-DNDEBUG)
252
ifeq ($(DEBUG_LEVEL),0)
L
leipeng 已提交
253
OPT += -DNDEBUG -DBOOST_DISABLE_ASSERTS
S
Siying Dong 已提交
254 255 256 257 258 259

ifneq ($(USE_RTTI), 0)
	CXXFLAGS += -DROCKSDB_USE_RTTI
else
	CXXFLAGS += -fno-rtti
endif
雷鹏 已提交
260
else
261
$(warning Warning: Compiling in debug mode. Don't use the resulting binary in production)
I
Igor Canadi 已提交
262 263
endif

赵明 已提交
264 265 266 267
ifeq ($(TERARKDB_ENABLE_METRICS),1)
OPT += -DTERARKDB_ENABLE_METRICS
endif

L
linyuanjin 已提交
268 269 270 271
ifeq ($(TERARKDB_ENABLE_CONSOLE),1)
OPT += -DTERARKDB_ENABLE_CONSOLE
endif

C
chenchanglong 已提交
272
ifeq (${USE_JEMALLOC},1)
C
chenchanglong 已提交
273
	LDFLAGS += ./third-party/jemalloc/lib/libjemalloc.a
C
chenchanglong 已提交
274 275
endif

276
#-----------------------------------------------
277
include src.mk
278

奏之章 已提交
279
AM_DEFAULT_VERBOSITY = 1
280 281 282 283 284

AM_V_GEN = $(am__v_GEN_$(V))
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
am__v_GEN_0 = @echo "  GEN     " $@;
am__v_GEN_1 =
J
Jim Meyering 已提交
285 286 287 288
AM_V_at = $(am__v_at_$(V))
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
am__v_at_1 =
289 290 291 292 293 294 295 296 297 298 299

AM_V_CC = $(am__v_CC_$(V))
am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
am__v_CC_0 = @echo "  CC      " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_$(V))
am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
am__v_CCLD_0 = @echo "  CCLD    " $@;
am__v_CCLD_1 =
J
Jim Meyering 已提交
300 301 302 303
AM_V_AR = $(am__v_AR_$(V))
am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
am__v_AR_0 = @echo "  AR      " $@;
am__v_AR_1 =
304

305 306 307 308
ifdef ROCKSDB_USE_LIBRADOS
LIB_SOURCES += utilities/env_librados.cc
LDFLAGS += -lrados
endif
309

雷鹏 已提交
310 311
LIB_SOURCES += ${TERARK_ZIP_SRC}

312
CMAKE_BUILD_TYPE=Debug
赵明 已提交
313 314
ifeq ($(DEBUG_LEVEL),0)
  LIBNAME_SUFFIX=
315
	CMAKE_BUILD_TYPE=RelWithDebInfo
赵明 已提交
316 317 318 319 320 321 322 323 324 325
endif
ifeq ($(DEBUG_LEVEL),1)
  LIBNAME_SUFFIX=_assert
endif
ifeq ($(DEBUG_LEVEL),2)
  LIBNAME_SUFFIX=_debug
endif

AM_LINK = $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LINK_STATIC_TERARK) $(LDFLAGS) $(COVERAGEFLAGS)
ifeq ($(shell uname),Darwin)
Z
ZhaoMing 已提交
326
  AM_LINK_SHR_LDFLAGS=-lrocksdb${LIBNAME_SUFFIX}
赵明 已提交
327 328 329
else
  AM_LINK_SHR_LDFLAGS=-Wl,-Bdynamic -lrocksdb${LIBNAME_SUFFIX}
endif
C
chenchanglong 已提交
330
AM_LINK_SHR = $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) $(COVERAGEFLAGS) $(AM_LINK_SHR_LDFLAGS) $(LINK_SHARED_BOOST)
331
# detect what platform we're building on
奏之章 已提交
332 333 334 335
dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; export PORTABLE="$(PORTABLE)"; "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk"; echo $$?))
ifneq ("${dummy}","0")
  $(error "$(CURDIR)/build_tools/build_detect_platform failed")
endif
S
Sanjay Ghemawat 已提交
336
# this file is generated by the previous line to set build flags and sources
I
Igor Canadi 已提交
337
include make_config.mk
338
CLEAN_FILES += make_config.mk
J
jorlow@chromium.org 已提交
339

340 341 342 343 344 345 346 347 348
missing_make_config_paths := $(shell				\
	grep "\/\S*" -o $(CURDIR)/make_config.mk | 		\
	while read path;					\
		do [ -e $$path ] || echo $$path; 		\
	done | sort | uniq)

$(foreach path, $(missing_make_config_paths), \
	$(warning Warning: $(path) dont exist))

T
Tomas Kolda 已提交
349 350 351
ifeq ($(PLATFORM), OS_AIX)
# no debug info
else ifneq ($(PLATFORM), IOS)
I
Igor Canadi 已提交
352 353 354 355
CFLAGS += -g
CXXFLAGS += -g
else
# no debug info for IOS, that will make our library big
L
leipeng 已提交
356
OPT += -DNDEBUG -DBOOST_DISABLE_ASSERTS
I
Igor Canadi 已提交
357 358
endif

T
Tomas Kolda 已提交
359 360 361 362 363
ifeq ($(PLATFORM), OS_AIX)
ARFLAGS = -X64 rs
STRIPFLAGS = -X64 -x
endif

D
David Bernard 已提交
364 365 366
ifeq ($(PLATFORM), OS_SOLARIS)
	PLATFORM_CXXFLAGS += -D _GLIBCXX_USE_C99
endif
367
ifneq ($(filter -DROCKSDB_LITE,$(OPT)),)
Y
Yueh-Hsuan Chiang 已提交
368 369 370
	# found
	CFLAGS += -fno-exceptions
	CXXFLAGS += -fno-exceptions
371 372
	# LUA is not supported under ROCKSDB_LITE
	LUA_PATH =
373 374
endif

I
Igor Canadi 已提交
375 376
# ASAN doesn't work well with jemalloc. If we're compiling with ASAN, we should use regular malloc.
ifdef COMPILE_WITH_ASAN
Y
Yueh-Hsuan Chiang 已提交
377 378 379 380
	DISABLE_JEMALLOC=1
	EXEC_LDFLAGS += -fsanitize=address
	PLATFORM_CCFLAGS += -fsanitize=address
	PLATFORM_CXXFLAGS += -fsanitize=address
I
Igor Canadi 已提交
381 382 383 384
endif

# TSAN doesn't work well with jemalloc. If we're compiling with TSAN, we should use regular malloc.
ifdef COMPILE_WITH_TSAN
Y
Yueh-Hsuan Chiang 已提交
385
	DISABLE_JEMALLOC=1
S
Siying Dong 已提交
386
	EXEC_LDFLAGS += -fsanitize=thread
387 388
	PLATFORM_CCFLAGS += -fsanitize=thread -fPIC
	PLATFORM_CXXFLAGS += -fsanitize=thread -fPIC
389 390
        # Turn off -pg when enabling TSAN testing, because that induces
        # a link failure.  TODO: find the root cause
D
dx9 已提交
391
	PROFILING_FLAGS =
392 393
	# LUA is not supported under TSAN
	LUA_PATH =
394 395 396
	# Limit keys for crash test under TSAN to avoid error:
	# "ThreadSanitizer: DenseSlabAllocator overflow. Dying."
	CRASH_TEST_EXT_ARGS += --max_key=1000000
I
Igor Canadi 已提交
397 398
endif

T
Tomas Kolda 已提交
399 400 401 402 403
# AIX doesn't work with -pg
ifeq ($(PLATFORM), OS_AIX)
	PROFILING_FLAGS =
endif

404 405 406
# USAN doesn't work well with jemalloc. If we're compiling with USAN, we should use regular malloc.
ifdef COMPILE_WITH_UBSAN
	DISABLE_JEMALLOC=1
S
Siying Dong 已提交
407 408 409 410
	# Suppress alignment warning because murmurhash relies on casting unaligned
	# memory to integer. Fixing it may cause performance regression. 3-way crc32
	# relies on it too, although it can be rewritten to eliminate with minimal
	# performance regression.
411 412 413
	EXEC_LDFLAGS += -fsanitize=undefined -fno-sanitize-recover=all
	PLATFORM_CCFLAGS += -fsanitize=undefined -fno-sanitize-recover=all -DROCKSDB_UBSAN_RUN
	PLATFORM_CXXFLAGS += -fsanitize=undefined -fno-sanitize-recover=all -DROCKSDB_UBSAN_RUN
414 415
endif

416 417 418 419 420
ifdef ROCKSDB_VALGRIND_RUN
	PLATFORM_CCFLAGS += -DROCKSDB_VALGRIND_RUN
	PLATFORM_CXXFLAGS += -DROCKSDB_VALGRIND_RUN
endif

I
Igor Canadi 已提交
421
ifndef DISABLE_JEMALLOC
422
	ifdef JEMALLOC
T
Tamir Duberstein 已提交
423 424
		PLATFORM_CXXFLAGS += -DROCKSDB_JEMALLOC -DJEMALLOC_NO_DEMANGLE
		PLATFORM_CCFLAGS  += -DROCKSDB_JEMALLOC -DJEMALLOC_NO_DEMANGLE
425
	endif
426 427 428 429
	ifdef WITH_JEMALLOC_FLAG
		PLATFORM_LDFLAGS += -ljemalloc
		JAVA_LDFLAGS += -ljemalloc
	endif
Y
Yueh-Hsuan Chiang 已提交
430 431 432
	EXEC_LDFLAGS := $(JEMALLOC_LIB) $(EXEC_LDFLAGS)
	PLATFORM_CXXFLAGS += $(JEMALLOC_INCLUDE)
	PLATFORM_CCFLAGS += $(JEMALLOC_INCLUDE)
I
Igor Canadi 已提交
433 434
endif

T
Tamir Duberstein 已提交
435 436
export GTEST_THROW_ON_FAILURE=1
export GTEST_HAS_EXCEPTIONS=1
I
Igor Sugak 已提交
437
GTEST_DIR = ./third-party/gtest-1.7.0/fused-src
T
Tomas Kolda 已提交
438 439 440 441 442 443 444 445
# AIX: pre-defined system headers are surrounded by an extern "C" block
ifeq ($(PLATFORM), OS_AIX)
	PLATFORM_CCFLAGS += -I$(GTEST_DIR)
	PLATFORM_CXXFLAGS += -I$(GTEST_DIR)
else
	PLATFORM_CCFLAGS += -isystem $(GTEST_DIR)
	PLATFORM_CXXFLAGS += -isystem $(GTEST_DIR)
endif
I
Igor Sugak 已提交
446

447 448 449
# This (the first rule) must depend on "all".
default: all

450
WARNING_FLAGS = -W -Wextra -Wall -Wsign-compare \
451
  -Wunused-parameter
452

453 454 455 456
ifdef Wshadow_local
    WARNING_FLAGS += -Wshadow=local
endif

457 458 459 460
ifeq ($(PLATFORM), OS_OPENBSD)
	WARNING_FLAGS += -Wno-unused-lambda-capture
endif

461
ifndef DISABLE_WARNING_AS_ERROR
Y
Yueh-Hsuan Chiang 已提交
462
	WARNING_FLAGS += -Werror
463 464
endif

465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487

ifdef LUA_PATH

ifndef LUA_INCLUDE
LUA_INCLUDE=$(LUA_PATH)/include
endif

LUA_INCLUDE_FILE=$(LUA_INCLUDE)/lualib.h

ifeq ("$(wildcard $(LUA_INCLUDE_FILE))", "")
# LUA_INCLUDE_FILE does not exist
$(error Cannot find lualib.h under $(LUA_INCLUDE).  Try to specify both LUA_PATH and LUA_INCLUDE manually)
endif
LUA_FLAGS = -I$(LUA_INCLUDE) -DLUA -DLUA_COMPAT_ALL
CFLAGS += $(LUA_FLAGS)
CXXFLAGS += $(LUA_FLAGS)

ifndef LUA_LIB
LUA_LIB = $(LUA_PATH)/lib/liblua.a
endif
ifeq ("$(wildcard $(LUA_LIB))", "") # LUA_LIB does not exist
$(error $(LUA_LIB) does not exist.  Try to specify both LUA_PATH and LUA_LIB manually)
endif
488
EXEC_LDFLAGS += $(LUA_LIB)
489 490 491

endif

492 493 494
ifeq ($(NO_THREEWAY_CRC32C), 1)
	CXXFLAGS += -DNO_THREEWAY_CRC32C
endif
495

I
Igor Canadi 已提交
496
CFLAGS += $(WARNING_FLAGS) -I. -I./include $(PLATFORM_CCFLAGS) $(OPT)
雷鹏 已提交
497
CXXFLAGS += $(WARNING_FLAGS) -I. -I./include $(PLATFORM_CXXFLAGS) $(OPT) -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers
498

S
Sanjay Ghemawat 已提交
499
LDFLAGS += $(PLATFORM_LDFLAGS)
J
jorlow@chromium.org 已提交
500

501 502 503
# If NO_UPDATE_BUILD_VERSION is set we don't update util/build_version.cc, but
# the file needs to already exist or else the build will fail
ifndef NO_UPDATE_BUILD_VERSION
504
date := $(shell date +%F)
I
Igor Canadi 已提交
505
ifdef FORCE_GIT_SHA
Y
Yueh-Hsuan Chiang 已提交
506
	git_sha := $(FORCE_GIT_SHA)
I
Igor Canadi 已提交
507
else
Y
Yueh-Hsuan Chiang 已提交
508
	git_sha := $(shell git rev-parse HEAD 2>/dev/null)
I
Igor Canadi 已提交
509
endif
510
gen_build_version = sed -e s/@@GIT_SHA@@/$(git_sha)/ -e s/@@GIT_DATE_TIME@@/$(date)/ util/build_version.cc.in
511 512 513 514 515 516

# Record the version of the source that we are compiling.
# We keep a record of the git revision in this file.  It is then built
# as a regular source file as part of the compilation process.
# One can run "strings executable_filename | grep _build_" to find
# the version of the source that we used to build the executable file.
517 518
FORCE:
util/build_version.cc: FORCE
Y
Yueh-Hsuan Chiang 已提交
519 520 521 522 523
	$(AM_V_GEN)rm -f $@-t
	$(AM_V_at)$(gen_build_version) > $@-t
	$(AM_V_at)if test -f $@; then					\
	  cmp -s $@-t $@ && rm -f $@-t || mv -f $@-t $@;		\
	else mv -f $@-t $@; fi
524
endif
525

雷鹏 已提交
526 527
LIBOBJECTS = $(addprefix ${xdir}/, $(LIB_SOURCES:.cc=.o))
LIB_CC_OBJECTS = $(LIBOBJECTS)
L
leipeng 已提交
528

529
ifeq (${TERARK_CORE_HOME},terark-core)
Z
ZhaoMing 已提交
530
${LIB_SOURCES} ${LIB_SOURCES:.cc=.o} : terark-core.got
C
chenchanglong 已提交
531
${LIB_SOURCES} ${LIB_SOURCES:.cc=.o} : CXXFLAGS += -Wno-unused-parameter
532
endif
Z
ZhaoMing 已提交
533

534
ifeq ($(HAVE_POWER8),1)
雷鹏 已提交
535 536
LIBOBJECTS += $(addprefix ${xdir}/, $(LIB_SOURCES_C:.c=.o))
LIBOBJECTS += $(addprefix ${xdir}/, $(LIB_SOURCES_ASM:.S=.o))
537 538
endif

雷鹏 已提交
539 540
LIBOBJECTS += $(addprefix ${xdir}/, $(TOOL_LIB_SOURCES:.cc=.o))
MOCKOBJECTS = $(addprefix ${xdir}/, $(MOCK_LIB_SOURCES:.cc=.o))
J
jorlow@chromium.org 已提交
541

赵明 已提交
542 543
${xdir}/util/testharness.o: shared_lib

雷鹏 已提交
544 545 546
GTEST = ${xdir}/$(GTEST_DIR)/gtest/gtest-all.o
TESTUTIL = ${xdir}/util/testutil.o
TESTHARNESS = ${xdir}/util/testharness.o $(TESTUTIL) $(MOCKOBJECTS) $(GTEST)
547
VALGRIND_ERROR = 2
548
VALGRIND_VER := $(join $(VALGRIND_VER),valgrind)
549

550
VALGRIND_OPTS = --error-exitcode=$(VALGRIND_ERROR) --leak-check=full
551

L
leipeng 已提交
552
BENCHTOOLOBJECTS = $(BENCH_LIB_SOURCES:.cc=.o) $(TESTUTIL)
赵明 已提交
553 554

ANALYZETOOLOBJECTS = $(ANALYZER_LIB_SOURCES:.cc=.o)
555

赵明 已提交
556
EXPOBJECTS = $(addprefix ${xdir}/, $(EXP_LIB_SOURCES:.cc=.o)) $(TESTUTIL)
O
omegaga 已提交
557

J
jorlow@chromium.org 已提交
558
TESTS = \
559
	db_basic_test \
E
Ewout Prangsma 已提交
560
	db_encryption_test \
561
	db_test2 \
S
Siying Dong 已提交
562
	external_sst_file_basic_test \
S
Siying Dong 已提交
563 564 565 566 567 568 569 570 571 572
	auto_roll_logger_test \
	bloom_test \
	dynamic_bloom_test \
	c_test \
	checkpoint_test \
	crc32c_test \
	coding_test \
	inlineskiplist_test \
	env_basic_test \
	env_test \
573
	hash_test \
S
Siying Dong 已提交
574 575 576 577 578
	thread_local_test \
	rate_limiter_test \
	perf_context_test \
	iostats_context_test \
	db_wal_test \
579
	db_block_cache_test \
580
	db_test \
Y
Yi Wu 已提交
581
	db_bloom_filter_test \
582
	db_iter_test \
583
	db_iter_stress_test \
584 585
	db_log_iter_test \
	db_compaction_filter_test \
586
	db_compaction_test \
587
	db_dynamic_level_test \
588
	db_flush_test \
589
	db_inplace_update_test \
Y
Yi Wu 已提交
590
	db_iterator_test \
591
	db_memtable_test \
592
	db_merge_operator_test \
593
	db_options_test \
594
	db_range_del_test \
Y
Yi Wu 已提交
595
	db_sst_test \
596
	db_tailing_iter_test \
O
omegaga 已提交
597
	db_io_failure_test \
598
	db_properties_test \
599
	db_table_properties_test \
600
	db_statistics_test \
Y
Yi Wu 已提交
601
	db_write_test \
602
	error_handler_test \
603
	autovector_test \
M
Maysam Yabandeh 已提交
604
	cleanable_test \
605 606 607 608
	column_family_test \
	table_properties_collector_test \
	arena_test \
	block_test \
609
	data_block_hash_index_test \
610 611 612 613 614 615 616
	cache_test \
	corruption_test \
	slice_transform_test \
	dbformat_test \
	fault_injection_test \
	filelock_test \
	filename_test \
617
	file_reader_writer_test \
618 619
	block_based_filter_block_test \
	full_filter_block_test \
M
Maysam Yabandeh 已提交
620
	partitioned_filter_block_test \
621
	hash_table_test \
622 623 624 625 626 627
	histogram_test \
	log_test \
	manual_compaction_test \
	mock_env_test \
	memtable_list_test \
	merge_helper_test \
628
	memory_test \
629 630
	merge_test \
	merger_test \
631
	util_merge_operators_test \
632
	options_file_test \
633 634 635 636
	redis_test \
	reduce_levels_test \
	plain_table_db_test \
	comparator_db_test \
637
	external_sst_file_test \
638 639
	prefix_test \
	skiplist_test \
640
	write_buffer_manager_test \
641
	stringappend_test \
642
	cassandra_format_test \
643
	cassandra_functional_test \
644 645
	cassandra_row_merge_test \
	cassandra_serialize_test \
646
	ttl_test \
O
omegaga 已提交
647
	date_tiered_test \
648 649 650
	backupable_db_test \
	document_db_test \
	json_document_test \
651
	sim_cache_test \
652 653 654 655 656 657
	spatial_db_test \
	version_edit_test \
	version_set_test \
	compaction_picker_test \
	version_builder_test \
	file_indexer_test \
郭宽宽 已提交
658
	flink_compaction_filter_test \
659 660 661 662
	write_batch_test \
	write_batch_with_index_test \
	write_controller_test\
	deletefile_test \
663
	obsolete_files_test \
664 665
	table_test \
	geodb_test \
I
Islam AbdelRahman 已提交
666
	delete_scheduler_test \
667
	options_test \
668
	options_settable_test \
669
	options_util_test \
670
	event_logger_test \
A
Anirban Rahut 已提交
671
	timer_queue_test \
672 673 674 675 676 677
	cuckoo_table_builder_test \
	cuckoo_table_reader_test \
	cuckoo_table_db_test \
	flush_job_test \
	wal_manager_test \
	listener_test \
A
Andres Noetzli 已提交
678
	compaction_iterator_test \
679 680 681
	compaction_job_test \
	thread_list_test \
	sst_dump_test \
O
omegaga 已提交
682
	column_aware_encoding_test \
683 684 685
	compact_files_test \
	optimistic_transaction_test \
	write_callback_test \
686 687
	heap_test \
	compact_on_deletion_collector_test \
A
agiardullo 已提交
688
	compaction_job_stats_test \
689
	option_change_migration_test \
690
	transaction_test \
691
	ldb_cmd_test \
692
	persistent_cache_test \
693
	statistics_test \
694
	lua_test \
Y
Yi Wu 已提交
695
	lru_cache_test \
696
	object_registry_test \
A
Andrew Kryczka 已提交
697
	repair_test \
A
Andrew Kryczka 已提交
698
	env_timed_test \
699
	write_prepared_transaction_test \
700
	write_unprepared_transaction_test \
Z
Zhongyi Xie 已提交
701
	db_universal_compaction_test \
Z
Zhichao Cao 已提交
702
	trace_analyzer_test \
703
	repeatable_thread_test \
奏之章 已提交
704 705
	terark_zip_table_db_test \
	terark_zip_table_reader_test \
706
	range_tombstone_fragmenter_test \
707
	range_del_aggregator_test \
708
	sst_file_reader_test \
Z
ZhaoMing 已提交
709
	lazy_buffer_test \
Z
ZhaoMing 已提交
710
	map_builder_test \
711

Y
Yi Wu 已提交
712 713 714 715
PARALLEL_TEST = \
	backupable_db_test \
	db_compaction_filter_test \
	db_compaction_test \
716
	db_merge_operator_test \
717
	db_sst_test \
Y
Yi Wu 已提交
718 719
	db_test \
	db_universal_compaction_test \
720 721
	db_wal_test \
	external_sst_file_test \
Y
Yi Wu 已提交
722 723 724
	fault_injection_test \
	inlineskiplist_test \
	manual_compaction_test \
725 726
	persistent_cache_test \
	table_test \
727
	transaction_test \
728
	write_prepared_transaction_test \
729
	write_unprepared_transaction_test \
Y
Yi Wu 已提交
730

731 732 733 734
# options_settable_test doesn't pass with UBSAN as we use hack in the test
ifdef COMPILE_WITH_UBSAN
        TESTS := $(shell echo $(TESTS) | sed 's/\boptions_settable_test\b//g')
endif
I
Islam AbdelRahman 已提交
735 736 737 738 739 740 741 742
SUBSET := $(TESTS)
ifdef ROCKSDBTESTS_START
        SUBSET := $(shell echo $(SUBSET) | sed 's/^.*$(ROCKSDBTESTS_START)/$(ROCKSDBTESTS_START)/')
endif

ifdef ROCKSDBTESTS_END
        SUBSET := $(shell echo $(SUBSET) | sed 's/$(ROCKSDBTESTS_END).*//')
endif
743

744
TOOLS = \
Y
Yueh-Hsuan Chiang 已提交
745 746 747
	sst_dump \
	db_sanity_test \
	db_stress \
I
Igor Canadi 已提交
748
	write_stress \
Y
Yueh-Hsuan Chiang 已提交
749
	ldb \
L
leipeng 已提交
750
	kvpipe \
赵明 已提交
751
	remote_compaction_worker_101 \
Y
Yueh-Hsuan Chiang 已提交
752 753
	db_repl_stress \
	rocksdb_dump \
Y
Yi Wu 已提交
754
	rocksdb_undump \
Z
Zhichao Cao 已提交
755
	trace_analyzer \
J
jorlow@chromium.org 已提交
756

757 758 759
TEST_LIBS = \
	librocksdb_env_basic_test.a

S
sdong 已提交
760
# TODO: add back forward_iterator_bench, after making it build in all environemnts.
761
BENCHMARKS = db_bench table_reader_bench cache_bench memtablerep_bench column_aware_encoding_exp persistent_cache_bench range_del_aggregator_bench
J
jorlow@chromium.org 已提交
762

763
# if user didn't config LIBNAME, set the default
764
ifeq ($(LIBNAME),)
765
# we should only run rocksdb in production with DEBUG_LEVEL 0
赵明 已提交
766
  LIBNAME=librocksdb${LIBNAME_SUFFIX}
767
endif
768
LIBRARY = ${LIBNAME}.a
769
TOOLS_LIBRARY = ${LIBNAME}_tools.a
770

771 772 773
ROCKSDB_MAJOR = $(shell egrep "ROCKSDB_MAJOR.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3)
ROCKSDB_MINOR = $(shell egrep "ROCKSDB_MINOR.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3)
ROCKSDB_PATCH = $(shell egrep "ROCKSDB_PATCH.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3)
774

775 776
default: all

777 778 779
#-----------------------------------------------
# Create platform independent shared libraries.
#-----------------------------------------------
780
ifneq ($(PLATFORM_SHARED_EXT),)
H
heyongqiang 已提交
781 782

ifneq ($(PLATFORM_SHARED_VERSIONED),true)
783
SHARED1 = ${LIBNAME}.$(PLATFORM_SHARED_EXT)
H
heyongqiang 已提交
784 785
SHARED2 = $(SHARED1)
SHARED3 = $(SHARED1)
786
SHARED4 = $(SHARED1)
H
heyongqiang 已提交
787 788
SHARED = $(SHARED1)
else
789 790
SHARED_MAJOR = $(ROCKSDB_MAJOR)
SHARED_MINOR = $(ROCKSDB_MINOR)
791
SHARED_PATCH = $(ROCKSDB_PATCH)
792
SHARED1 = ${LIBNAME}.$(PLATFORM_SHARED_EXT)
793 794 795 796 797 798
ifeq ($(PLATFORM), OS_MACOSX)
SHARED_OSX = $(LIBNAME).$(SHARED_MAJOR)
SHARED2 = $(SHARED_OSX).$(PLATFORM_SHARED_EXT)
SHARED3 = $(SHARED_OSX).$(SHARED_MINOR).$(PLATFORM_SHARED_EXT)
SHARED4 = $(SHARED_OSX).$(SHARED_MINOR).$(SHARED_PATCH).$(PLATFORM_SHARED_EXT)
else
799 800
SHARED2 = $(SHARED1).$(SHARED_MAJOR)
SHARED3 = $(SHARED1).$(SHARED_MAJOR).$(SHARED_MINOR)
801
SHARED4 = $(SHARED1).$(SHARED_MAJOR).$(SHARED_MINOR).$(SHARED_PATCH)
802
endif
803
SHARED = $(SHARED1) $(SHARED2) $(SHARED3) $(SHARED4)
奏之章 已提交
804

L
leipeng 已提交
805 806 807 808 809
$(SHARED1): $(SHARED2)
	ln -fs $(SHARED2) $(SHARED1)
$(SHARED2): $(SHARED3)
	ln -fs $(SHARED3) $(SHARED2)
$(SHARED3): $(SHARED4)
Y
Yueh-Hsuan Chiang 已提交
810
	ln -fs $(SHARED4) $(SHARED3)
林源劲 已提交
811
$(SHARED4): shared-objects/${xdir}/${SHARED4} cpputil_metrics2
Z
ZhaoMing 已提交
812
	ln -fs $< $@
奏之章 已提交
813

814
ifeq ($(HAVE_POWER8),1)
雷鹏 已提交
815 816
SHARED_C_OBJECTS = $(addprefix ${xdir}/, $(LIB_SOURCES_C:.c=.o))
SHARED_ASM_OBJECTS = $(addprefix ${xdir}/, $(LIB_SOURCES_ASM:.S=.o))
817 818 819 820
SHARED_C_LIBOBJECTS = $(patsubst %.o,shared-objects/%.o,$(SHARED_C_OBJECTS))
SHARED_ASM_LIBOBJECTS = $(patsubst %.o,shared-objects/%.o,$(SHARED_ASM_OBJECTS))
shared_libobjects = $(patsubst %,shared-objects/%,$(LIB_CC_OBJECTS))
else
821
shared_libobjects = $(patsubst %,shared-objects/%,$(LIBOBJECTS))
822 823
endif

824
CLEAN_FILES += shared-objects
825
shared_all_libobjects = $(shared_libobjects)
826

827 828 829
ifeq ($(HAVE_POWER8),1)
shared-ppc-objects = $(SHARED_C_LIBOBJECTS) $(SHARED_ASM_LIBOBJECTS)

雷鹏 已提交
830
shared-objects/${xdir}/util/crc32c_ppc.o: util/crc32c_ppc.c
831 832
	$(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@

雷鹏 已提交
833
shared-objects/${xdir}/util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S
834 835
	$(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@
endif
雷鹏 已提交
836
shared-objects/${xdir}/%.o: %.cc
837 838
	$(AM_V_CC)mkdir -p $(@D) && $(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) -c $< -o $@

839 840 841
ifeq ($(HAVE_POWER8),1)
shared_all_libobjects = $(shared_libobjects) $(shared-ppc-objects)
endif
奏之章 已提交
842

雷鹏 已提交
843
shared-objects/${xdir}/$(SHARED1): shared-objects/${xdir}/$(SHARED4)
奏之章 已提交
844
	cd  $(dir $@) ; ln -fs $(notdir $<) $(notdir $@)
雷鹏 已提交
845
shared-objects/${xdir}/$(SHARED2): shared-objects/${xdir}/$(SHARED4)
奏之章 已提交
846
	cd  $(dir $@) ; ln -fs $(notdir $<) $(notdir $@)
雷鹏 已提交
847
shared-objects/${xdir}/$(SHARED3): shared-objects/${xdir}/$(SHARED4)
奏之章 已提交
848 849 850 851
	cd  $(dir $@) ; ln -fs $(notdir $<) $(notdir $@)

endif # PLATFORM_SHARED_VERSIONED

雷鹏 已提交
852
shared-objects/${xdir}/$(SHARED4): $(shared_all_libobjects)
奏之章 已提交
853
	$(CXX) $^ $(PLATFORM_SHARED_LDFLAGS)$(SHARED3) \
雷鹏 已提交
854
		      $(PLATFORM_SHARED_CFLAGS) $(LDFLAGS) $(LINK_STATIC_TERARK) $(TerarkLDFLAGS) -o $@
奏之章 已提交
855 856 857

${xdir}/%.o: %.cc
	@mkdir -p $(dir $@)
858
	$(CXX) -c $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) -o $@ $<
H
heyongqiang 已提交
859 860 861

endif  # PLATFORM_SHARED_EXT

862
.PHONY: blackbox_crash_test check clean coverage crash_test ldb_tests package \
863
	release tags tags0 valgrind_check whitebox_crash_test format static_lib shared_lib all \
Y
Yueh-Hsuan Chiang 已提交
864
	dbg rocksdbjavastatic rocksdbjava install install-static install-shared uninstall \
865
	analyze tools tools_lib
866

C
chenchanglong 已提交
867
all: $(LIBRARY) $(SHARED) $(BENCHMARKS) tools tools_lib test_libs $(TESTS)
868

869 870
all_but_some_tests: $(LIBRARY) $(BENCHMARKS) tools tools_lib test_libs $(SUBSET)

林源劲 已提交
871
${CPPUTIL_METRICS2_HOME}/cmake-build/libmetrics2.a:
872
	mkdir -p ${CPPUTIL_METRICS2_HOME}/cmake-build && cd ${CPPUTIL_METRICS2_HOME}/cmake-build && cmake .. -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} && make
林源劲 已提交
873 874 875

cpputil_metrics2: ${CPPUTIL_METRICS2_HOME}/cmake-build/libmetrics2.a

I
Igor Canadi 已提交
876 877 878 879
static_lib: $(LIBRARY)

shared_lib: $(SHARED)

M
maurice barnum 已提交
880 881
tools: $(TOOLS)

882 883
tools_lib: $(TOOLS_LIBRARY)

884 885
test_libs: $(TEST_LIBS)

M
maurice barnum 已提交
886
dbg: $(LIBRARY) $(BENCHMARKS) tools $(TESTS)
K
Kai Liu 已提交
887

888
# creates static library and programs
889
release:
Y
Yueh-Hsuan Chiang 已提交
890
	$(MAKE) clean
891
	DEBUG_LEVEL=0 $(MAKE) static_lib tools db_bench
K
Kai Liu 已提交
892 893

coverage:
Y
Yueh-Hsuan Chiang 已提交
894 895 896 897
	$(MAKE) clean
	COVERAGEFLAGS="-fprofile-arcs -ftest-coverage" LDFLAGS+="-lgcov" $(MAKE) J=1 all check
	cd coverage && ./coverage_test.sh
        # Delete intermediate files
898
	$(FIND) . -type f -regex ".*\.\(\(gcda\)\|\(gcno\)\)" -exec rm {} \;
J
jorlow@chromium.org 已提交
899

Y
Yi Wu 已提交
900 901 902 903 904
ifneq (,$(filter check parallel_check,$(MAKECMDGOALS)),)
# Use /dev/shm if it has the sticky bit set (otherwise, /tmp),
# and create a randomly-named rocksdb.XXXX directory therein.
# We'll use that directory in the "make check" rules.
ifeq ($(TMPD),)
T
Tomas Kolda 已提交
905 906
TMPDIR := $(shell echo $${TMPDIR:-/tmp})
TMPD := $(shell f=/dev/shm; test -k $$f || f=$(TMPDIR);     \
Y
Yi Wu 已提交
907 908 909 910 911 912 913 914 915 916 917 918 919 920
  perl -le 'use File::Temp "tempdir";'					\
    -e 'print tempdir("'$$f'/rocksdb.XXXX", CLEANUP => 0)')
endif
endif

# Run all tests in parallel, accumulating per-test logs in t/log-*.
#
# Each t/run-* file is a tiny generated bourne shell script that invokes one of
# sub-tests. Why use a file for this?  Because that makes the invocation of
# parallel below simpler, which in turn makes the parsing of parallel's
# LOG simpler (the latter is for live monitoring as parallel
# tests run).
#
# Test names are extracted by running tests with --gtest_list_tests.
921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938
# This filter removes the "#"-introduced comments, and expands to
# fully-qualified names by changing input like this:
#
#   DBTest.
#     Empty
#     WriteEmptyBatch
#   MultiThreaded/MultiThreadedDBTest.
#     MultiThreaded/0  # GetParam() = 0
#     MultiThreaded/1  # GetParam() = 1
#
# into this:
#
#   DBTest.Empty
#   DBTest.WriteEmptyBatch
#   MultiThreaded/MultiThreadedDBTest.MultiThreaded/0
#   MultiThreaded/MultiThreadedDBTest.MultiThreaded/1
#

Y
Yi Wu 已提交
939 940 941 942 943 944 945 946 947 948 949
parallel_tests = $(patsubst %,parallel_%,$(PARALLEL_TEST))
.PHONY: gen_parallel_tests $(parallel_tests)
$(parallel_tests): $(PARALLEL_TEST)
	$(AM_V_at)TEST_BINARY=$(patsubst parallel_%,%,$@); \
  TEST_NAMES=` \
    ./$$TEST_BINARY --gtest_list_tests \
    | perl -n \
      -e 's/ *\#.*//;' \
      -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};'	\
      -e 'print qq! $$p$$2!'`; \
	for TEST_NAME in $$TEST_NAMES; do \
950
		TEST_SCRIPT=t/run-$$TEST_BINARY-$${TEST_NAME//\//-}; \
Y
Yi Wu 已提交
951 952 953 954 955
		echo "  GEN     " $$TEST_SCRIPT; \
    printf '%s\n' \
      '#!/bin/sh' \
      "d=\$(TMPD)$$TEST_SCRIPT" \
      'mkdir -p $$d' \
956
      "TEST_TMPDIR=\$$d $(DRIVER) ./$$TEST_BINARY --gtest_filter=$$TEST_NAME" \
Y
Yi Wu 已提交
957 958 959 960 961 962 963 964
		> $$TEST_SCRIPT; \
		chmod a=rx $$TEST_SCRIPT; \
	done

gen_parallel_tests:
	$(AM_V_at)mkdir -p t
	$(AM_V_at)rm -f t/run-*
	$(MAKE) $(parallel_tests)
965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982

# Reorder input lines (which are one per test) so that the
# longest-running tests appear first in the output.
# Do this by prefixing each selected name with its duration,
# sort the resulting names, and remove the leading numbers.
# FIXME: the "100" we prepend is a fake time, for now.
# FIXME: squirrel away timings from each run and use them
# (when present) on subsequent runs to order these tests.
#
# Without this reordering, these two tests would happen to start only
# after almost all other tests had completed, thus adding 100 seconds
# to the duration of parallel "make check".  That's the difference
# between 4 minutes (old) and 2m20s (new).
#
# 152.120 PASS t/DBTest.FileCreationRandomFailure
# 107.816 PASS t/DBTest.EncodeDecompressedBlockSizeTest
#
slow_test_regexp = \
Y
Yi Wu 已提交
983
	^.*SnapshotConcurrentAccessTest.*$$|^t/run-table_test-HarnessTest.Randomized$$|^t/run-db_test-.*(?:FileCreationRandomFailure|EncodeDecompressedBlockSizeTest)$$|^.*RecoverFromCorruptedWALWithoutFlush$$
984
prioritize_long_running_tests =						\
Y
Yueh-Hsuan Chiang 已提交
985 986 987
  perl -pe 's,($(slow_test_regexp)),100 $$1,'				\
    | sort -k1,1gr							\
    | sed 's/^[.0-9]* //'
988 989 990 991 992 993

# "make check" uses
# Run with "make J=1 check" to disable parallelism in "make check".
# Run with "make J=200% check" to run two parallel jobs per core.
# The default is to run one job per core (J=100%).
# See "man parallel" for its "-j ..." option.
Y
Yi Wu 已提交
994
J ?= 100%
995

V
Venkatesh Radhakrishnan 已提交
996 997 998
# Use this regexp to select the subset of tests whose names match.
tests-regexp = .

Y
Yi Wu 已提交
999
t_run = $(wildcard t/run-*)
1000
.PHONY: check_0
Y
Yi Wu 已提交
1001 1002
check_0:
	$(AM_V_GEN)export TEST_TMPDIR=$(TMPD); \
Y
Yueh-Hsuan Chiang 已提交
1003 1004 1005
	printf '%s\n' ''						\
	  'To monitor subtest <duration,pass/fail,name>,'		\
	  '  run "make watch-log" in a separate window' '';		\
Y
Yi Wu 已提交
1006 1007 1008 1009 1010
	test -t 1 && eta=--eta || eta=; \
	{ \
		printf './%s\n' $(filter-out $(PARALLEL_TEST),$(TESTS)); \
		printf '%s\n' $(t_run); \
	} \
Y
Yueh-Hsuan Chiang 已提交
1011 1012
	  | $(prioritize_long_running_tests)				\
	  | grep -E '$(tests-regexp)'					\
1013
	  | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG $$eta --gnu '{} >& t/log-{/}'
S
sdong 已提交
1014

1015
valgrind-blacklist-regexp = InlineSkipTest.ConcurrentInsert|TransactionStressTest.DeadlockStress|DBCompactionTest.SuggestCompactRangeNoTwoLevel0Compactions|BackupableDBTest.RateLimiting|DBTest.CloseSpeedup|DBTest.ThreadStatusFlush|DBTest.RateLimitingTest|DBTest.EncodeDecompressedBlockSizeTest|FaultInjectionTest.UninstalledCompaction|HarnessTest.Randomized|ExternalSSTFileTest.CompactDuringAddFileRandom|ExternalSSTFileTest.IngestFileWithGlobalSeqnoRandomized|MySQLStyleTransactionTest.TransactionStressTest
1016

S
sdong 已提交
1017
.PHONY: valgrind_check_0
Y
Yi Wu 已提交
1018
valgrind_check_0:
S
sdong 已提交
1019 1020 1021 1022 1023 1024
	$(AM_V_GEN)export TEST_TMPDIR=$(TMPD);				\
	printf '%s\n' ''						\
	  'To monitor subtest <duration,pass/fail,name>,'		\
	  '  run "make watch-log" in a separate window' '';		\
	test -t 1 && eta=--eta || eta=;					\
	{								\
Y
Yi Wu 已提交
1025
	  printf './%s\n' $(filter-out $(PARALLEL_TEST) %skiplist_test options_settable_test, $(TESTS));		\
S
sdong 已提交
1026 1027 1028 1029
	  printf '%s\n' $(t_run);					\
	}								\
	  | $(prioritize_long_running_tests)				\
	  | grep -E '$(tests-regexp)'					\
1030
	  | grep -E -v '$(valgrind-blacklist-regexp)'					\
1031
	  | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG $$eta --gnu \
1032 1033
	  '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) ' \
	  '>& t/valgrind_log-{/}'
1034 1035

CLEAN_FILES += t LOG $(TMPD)
1036

1037 1038 1039 1040 1041 1042 1043 1044
# When running parallel "make check", you can monitor its progress
# from another window.
# Run "make watch_LOG" to show the duration,PASS/FAIL,name of parallel
# tests as they are being run.  We sort them so that longer-running ones
# appear at the top of the list and any failing tests remain at the top
# regardless of their duration. As with any use of "watch", hit ^C to
# interrupt.
watch-log:
1045
	$(WATCH) --interval=0 'sort -k7,7nr -k4,4gr LOG|$(quoted_perl_command)'
1046

I
Igor Canadi 已提交
1047
# If J != 1 and GNU parallel is installed, run the tests in parallel,
1048
# via the check_0 rule above.  Otherwise, run them sequentially.
C
chenchanglong 已提交
1049
check: all
Y
Yi Wu 已提交
1050
	$(MAKE) gen_parallel_tests
Y
Yueh-Hsuan Chiang 已提交
1051
	$(AM_V_GEN)if test "$(J)" != 1                                  \
C
chenchanglong 已提交
1052
	    && (build_tools/gnu_parallel --gnu --help 2>/dev/null) |    \
Y
Yueh-Hsuan Chiang 已提交
1053 1054 1055 1056 1057 1058 1059 1060
	        grep -q 'GNU Parallel';                                 \
	then                                                            \
	    $(MAKE) T="$$t" TMPD=$(TMPD) check_0;                       \
	else                                                            \
	    for t in $(TESTS); do                                       \
	      echo "===== Running $$t"; ./$$t || exit 1; done;          \
	fi
	rm -rf $(TMPD)
T
Tomas Kolda 已提交
1061
ifneq ($(PLATFORM), OS_AIX)
I
Islam AbdelRahman 已提交
1062
ifeq ($(filter -DROCKSDB_LITE,$(OPT)),)
Y
Yueh-Hsuan Chiang 已提交
1063 1064
	python tools/ldb_test.py
	sh tools/rocksdb_dump_test.sh
I
Islam AbdelRahman 已提交
1065
endif
T
Tomas Kolda 已提交
1066
endif
1067

C
chenchanglong 已提交
1068 1069 1070
testing:
	echo $(CURDIR)

S
Siying Dong 已提交
1071 1072
# TODO add ldb_tests
check_some: $(SUBSET)
Y
Yueh-Hsuan Chiang 已提交
1073
	for t in $(SUBSET); do echo "===== Running $$t"; ./$$t || exit 1; done
1074 1075

.PHONY: ldb_tests
1076
ldb_tests: ldb
Y
Yueh-Hsuan Chiang 已提交
1077
	python tools/ldb_test.py
1078

I
Igor Canadi 已提交
1079
crash_test: whitebox_crash_test blackbox_crash_test
1080 1081

blackbox_crash_test: db_stress
1082
	python -u tools/db_crashtest.py --simple blackbox $(CRASH_TEST_EXT_ARGS)
1083
	python -u tools/db_crashtest.py --enable_atomic_flush blackbox $(CRASH_TEST_EXT_ARGS)
1084
	python -u tools/db_crashtest.py blackbox $(CRASH_TEST_EXT_ARGS)
1085

1086 1087 1088 1089
ifeq ($(CRASH_TEST_KILL_ODD),)
  CRASH_TEST_KILL_ODD=888887
endif

1090
whitebox_crash_test: db_stress
1091
	python -u tools/db_crashtest.py --simple whitebox --random_kill_odd \
1092 1093
      $(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS)
	python -u tools/db_crashtest.py --enable_atomic_flush whitebox  --random_kill_odd \
1094
      $(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS)
1095
	python -u tools/db_crashtest.py whitebox  --random_kill_odd \
1096
      $(CRASH_TEST_KILL_ODD) $(CRASH_TEST_EXT_ARGS)
1097

I
Igor Canadi 已提交
1098
asan_check:
Y
Yueh-Hsuan Chiang 已提交
1099 1100 1101
	$(MAKE) clean
	COMPILE_WITH_ASAN=1 $(MAKE) check -j32
	$(MAKE) clean
1102 1103

asan_crash_test:
Y
Yueh-Hsuan Chiang 已提交
1104 1105 1106
	$(MAKE) clean
	COMPILE_WITH_ASAN=1 $(MAKE) crash_test
	$(MAKE) clean
I
Igor Canadi 已提交
1107

1108 1109 1110 1111 1112 1113 1114 1115 1116 1117
ubsan_check:
	$(MAKE) clean
	COMPILE_WITH_UBSAN=1 $(MAKE) check -j32
	$(MAKE) clean

ubsan_crash_test:
	$(MAKE) clean
	COMPILE_WITH_UBSAN=1 $(MAKE) crash_test
	$(MAKE) clean

1118
valgrind_test:
1119
	ROCKSDB_VALGRIND_RUN=1 DISABLE_JEMALLOC=1 $(MAKE) valgrind_check
1120

I
Igor Canadi 已提交
1121
valgrind_check: $(TESTS)
1122
	$(MAKE) DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" gen_parallel_tests
S
sdong 已提交
1123
	$(AM_V_GEN)if test "$(J)" != 1                                  \
1124
	    && (build_tools/gnu_parallel --gnu --help 2>/dev/null) |                    \
S
sdong 已提交
1125 1126
	        grep -q 'GNU Parallel';                                 \
	then                                                            \
Y
Yi Wu 已提交
1127
      $(MAKE) TMPD=$(TMPD)                                        \
S
sdong 已提交
1128 1129 1130 1131 1132 1133 1134 1135 1136 1137
      DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0; \
	else                                                            \
		for t in $(filter-out %skiplist_test options_settable_test,$(TESTS)); do \
			$(VALGRIND_VER) $(VALGRIND_OPTS) ./$$t; \
			ret_code=$$?; \
			if [ $$ret_code -ne 0 ]; then \
				exit $$ret_code; \
			fi; \
		done; \
	fi
1138

1139 1140 1141 1142 1143 1144 1145

ifneq ($(PAR_TEST),)
parloop:
	ret_bad=0;							\
	for t in $(PAR_TEST); do		\
		echo "===== Running $$t in parallel $(NUM_PAR)";\
		if [ $(db_test) -eq 1 ]; then \
1146
			seq $(J) | v="$$t" build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{};  export TEST_TMPDIR=$$s;' \
1147 1148
				'timeout 2m ./db_test --gtest_filter=$$v >> $$s/log-{} 2>1'; \
		else\
1149
			seq $(J) | v="./$$t" build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{};' \
1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160
			     'export TEST_TMPDIR=$$s; timeout 10m $$v >> $$s/log-{} 2>1'; \
		fi; \
		ret_code=$$?; \
		if [ $$ret_code -ne 0 ]; then \
			ret_bad=$$ret_code; \
			echo $$t exited with $$ret_code; \
		fi; \
	done; \
	exit $$ret_bad;
endif

Y
Yi Wu 已提交
1161 1162 1163 1164 1165 1166 1167
test_names = \
  ./db_test --gtest_list_tests						\
    | perl -n								\
      -e 's/ *\#.*//;'							\
      -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};'			\
      -e 'print qq! $$p$$2!'

1168 1169
parallel_check: $(TESTS)
	$(AM_V_GEN)if test "$(J)" > 1                                  \
1170
	    && (build_tools/gnu_parallel --gnu --help 2>/dev/null) |                    \
1171 1172 1173 1174 1175 1176 1177 1178 1179
	        grep -q 'GNU Parallel';                                 \
	then                                                            \
	    echo Running in parallel $(J);			\
	else                                                            \
	    echo "Need to have GNU Parallel and J > 1"; exit 1;		\
	fi;								\
	ret_bad=0;							\
	echo $(J);\
	echo Test Dir: $(TMPD); \
1180
        seq $(J) | build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{}; rm -rf $$s; mkdir $$s'; \
1181
	$(MAKE)  PAR_TEST="$(shell $(test_names))" TMPD=$(TMPD) \
1182 1183 1184 1185
		J=$(J) db_test=1 parloop; \
	$(MAKE) PAR_TEST="$(filter-out db_test, $(TESTS))" \
		TMPD=$(TMPD) J=$(J) db_test=0 parloop;

1186
analyze: clean
Y
Yueh-Hsuan Chiang 已提交
1187 1188 1189 1190
	$(CLANG_SCAN_BUILD) --use-analyzer=$(CLANG_ANALYZER) \
		--use-c++=$(CXX) --use-cc=$(CC) --status-bugs \
		-o $(CURDIR)/scan_build_report \
		$(MAKE) dbg
1191

1192 1193
CLEAN_FILES += unity.cc
unity.cc: Makefile
Y
Yueh-Hsuan Chiang 已提交
1194 1195
	rm -f $@ $@-t
	for source_file in $(LIB_SOURCES); do \
E
Evan Shaw 已提交
1196
		echo "#include \"$$source_file\"" >> $@-t; \
Y
Yueh-Hsuan Chiang 已提交
1197 1198 1199
	done
	chmod a=r $@-t
	mv $@-t $@
M
miguelportilla 已提交
1200

E
Evan Shaw 已提交
1201 1202 1203 1204
unity.a: unity.o
	$(AM_V_AR)rm -f $@
	$(AM_V_at)$(AR) $(ARFLAGS) $@ unity.o

1205 1206

TOOLLIBOBJECTS = $(TOOL_LIB_SOURCES:.cc=.o)
I
Igor Canadi 已提交
1207
# try compiling db_test with unity
1208
unity_test: db/db_test.o db/db_test_util.o $(TESTHARNESS) $(TOOLLIBOBJECTS) unity.a
赵明 已提交
1209
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1210 1211
	./unity_test

E
Evan Shaw 已提交
1212 1213
rocksdb.h rocksdb.cc: build_tools/amalgamate.py Makefile $(LIB_SOURCES) unity.cc
	build_tools/amalgamate.py -I. -i./include unity.cc -x include/rocksdb/c.h -H rocksdb.h -o rocksdb.cc
M
miguelportilla 已提交
1214

J
jorlow@chromium.org 已提交
1215
clean:
Y
Yueh-Hsuan Chiang 已提交
1216 1217
	rm -f $(BENCHMARKS) $(TOOLS) $(TESTS) $(LIBRARY) $(SHARED)
	rm -rf $(CLEAN_FILES) ios-x86 ios-arm scan_build_report
1218 1219
	$(FIND) . -name "*.[oda]" -exec rm -f {} \;
	$(FIND) . -type f -regex ".*\.\(\(gcda\)\|\(gcno\)\)" -exec rm {} \;
S
Sagar Vemuri 已提交
1220
	rm -rf bzip2* snappy* zlib* lz4* zstd*
L
leipeng 已提交
1221
	rm -rf librocksdb*
1222
	rm -f terark-core.got
Y
Yi Wu 已提交
1223
	cd java; $(MAKE) clean
林源劲 已提交
1224
	cd ${TERARK_CORE_HOME}; ${MAKE} clean
1225

1226
tags:
1227
	ctags -R .
1228
	cscope -b `$(FIND) . -name '*.cc'` `$(FIND) . -name '*.h'` `$(FIND) . -name '*.c'`
L
Leonidas Galanis 已提交
1229
	ctags -e -R -o etags *
1230

1231 1232 1233 1234 1235 1236 1237
tags0:
	ctags -R .
	cscope -b `$(FIND) . -name '*.cc' -and ! -name '*_test.cc'` \
		  `$(FIND) . -name '*.c' -and ! -name '*_test.c'` \
		  `$(FIND) . -name '*.h' -and ! -name '*_test.h'`
	ctags -e -R -o etags *

1238
format:
Y
Yueh-Hsuan Chiang 已提交
1239
	build_tools/format-diff.sh
1240

1241
package:
Y
Yueh-Hsuan Chiang 已提交
1242
	bash build_tools/make_package.sh $(SHARED_MAJOR).$(SHARED_MINOR)
1243

1244 1245 1246
# ---------------------------------------------------------------------------
# 	Unit tests and tools
# ---------------------------------------------------------------------------
林源劲 已提交
1247 1248

$(LIBRARY): $(LIBOBJECTS) cpputil_metrics2
Y
Yueh-Hsuan Chiang 已提交
1249 1250
	$(AM_V_AR)rm -f $@
	$(AM_V_at)$(AR) $(ARFLAGS) $@ $(LIBOBJECTS)
G
guokuankuan 已提交
1251
ifeq (${BUNDLE_ALL_TERARK_STATIC},1)
雷鹏 已提交
1252
	mv $@ orgin-$@
Z
ZhaoMing 已提交
1253
	ln -fs ${TERARK_CORE_PKG_DIR}/lib_static/libterark-{idx,zbs,fsa,core}-${DBG_OR_RLS}.a .
雷鹏 已提交
1254 1255
	(\
	echo create $@; \
1256
	echo addlib libterark-idx-${DBG_OR_RLS}.a; \
雷鹏 已提交
1257 1258 1259
	echo addlib libterark-zbs-${DBG_OR_RLS}.a; \
	echo addlib libterark-fsa-${DBG_OR_RLS}.a; \
	echo addlib libterark-core-${DBG_OR_RLS}.a; \
林源劲 已提交
1260
	echo addlib ${CPPUTIL_METRICS2_HOME}/cmake-build/libmetrics2.a; \
雷鹏 已提交
1261 1262 1263 1264
	echo addlib orgin-$@; \
	echo save; \
	echo end; \
	) | ar -M
1265
	rm -f libterark-{idx,zbs,fsa,core}-${DBG_OR_RLS}.a
雷鹏 已提交
1266
endif
J
jorlow@chromium.org 已提交
1267

1268
$(TOOLS_LIBRARY): $(BENCH_LIB_SOURCES:.cc=.o) $(TOOL_LIB_SOURCES:.cc=.o) $(LIB_SOURCES:.cc=.o) $(TESTUTIL) $(ANALYZER_LIB_SOURCES:.cc=.o)
1269 1270 1271
	$(AM_V_AR)rm -f $@
	$(AM_V_at)$(AR) $(ARFLAGS) $@ $^

赵明 已提交
1272
librocksdb_env_basic_test.a: env/env_basic_test.o $(TESTHARNESS)
1273 1274 1275
	$(AM_V_AR)rm -f $@
	$(AM_V_at)$(AR) $(ARFLAGS) $@ $^

L
leipeng 已提交
1276
db_bench: tools/db_bench.o $(BENCHTOOLOBJECTS)
M
maguoshun 已提交
1277
	$(AM_LINK_SHR) librocksdb.a -lgflags -fopenmp
J
jorlow@chromium.org 已提交
1278

1279
trace_analyzer: tools/trace_analyzer.o $(ANALYZETOOLOBJECTS) $(LIBOBJECTS)
M
maguoshun 已提交
1280
	$(AM_LINK_SHR) librocksdb.a -fopenmp
1281

赵明 已提交
1282 1283
cache_bench: cache/cache_bench.o $(TESTUTIL)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1284

赵明 已提交
1285 1286
persistent_cache_bench: utilities/persistent_cache/persistent_cache_bench.o $(TESTUTIL)
	$(AM_LINK_SHR)
1287

赵明 已提交
1288 1289
memtablerep_bench: memtable/memtablerep_bench.o $(TESTUTIL)
	$(AM_LINK_SHR)
A
Ameya Gupte 已提交
1290

赵明 已提交
1291 1292
db_stress: tools/db_stress.o $(TESTUTIL)
	$(AM_LINK_SHR)
1293

赵明 已提交
1294 1295
write_stress: tools/write_stress.o $(TESTUTIL)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1296

赵明 已提交
1297 1298
db_sanity_test: tools/db_sanity_test.o $(TESTUTIL)
	$(AM_LINK_SHR)
1299

赵明 已提交
1300 1301
db_repl_stress: tools/db_repl_stress.o $(TESTUTIL)
	$(AM_LINK_SHR)
1302

赵明 已提交
1303 1304
arena_test: util/arena_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1305

赵明 已提交
1306 1307
autovector_test: util/autovector_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
K
kailiu 已提交
1308

赵明 已提交
1309 1310
column_family_test: db/column_family_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1311

赵明 已提交
1312 1313
table_properties_collector_test: db/table_properties_collector_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1314

赵明 已提交
1315 1316
bloom_test: util/bloom_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
S
Sanjay Ghemawat 已提交
1317

赵明 已提交
1318 1319
dynamic_bloom_test: util/dynamic_bloom_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1320

赵明 已提交
1321 1322
c_test: db/c_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1323

赵明 已提交
1324 1325
cache_test: cache/cache_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1326

赵明 已提交
1327 1328
coding_test: util/coding_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1329

赵明 已提交
1330 1331
hash_test: util/hash_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1332

赵明 已提交
1333 1334
option_change_migration_test: utilities/option_change_migration/option_change_migration_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1335

赵明 已提交
1336 1337
stringappend_test: utilities/merge_operators/string_append/stringappend_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1338

赵明 已提交
1339 1340
cassandra_format_test: utilities/cassandra/cassandra_format_test.o utilities/cassandra/test_utils.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1341

赵明 已提交
1342 1343
cassandra_functional_test: utilities/cassandra/cassandra_functional_test.o utilities/cassandra/test_utils.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1344

赵明 已提交
1345 1346
cassandra_row_merge_test: utilities/cassandra/cassandra_row_merge_test.o utilities/cassandra/test_utils.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1347

赵明 已提交
1348 1349
cassandra_serialize_test: utilities/cassandra/cassandra_serialize_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1350

赵明 已提交
1351 1352
redis_test: utilities/redis/redis_lists_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1353

郭宽宽 已提交
1354 1355 1356
flink_compaction_filter_test: utilities/flink/flink_compaction_filter_test.o $(TESTHARNESS) $(TESTHARNESS)
	$(AM_LINK_SHR)

赵明 已提交
1357 1358
hash_table_test: utilities/persistent_cache/hash_table_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1359

赵明 已提交
1360 1361
histogram_test: monitoring/histogram_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
Abhishek Kona 已提交
1362

雷鹏 已提交
1363
thread_local_test: util/thread_local_test.o $(SHARED1) $(TESTHARNESS)
赵明 已提交
1364
	$(AM_LINK_SHR)
L
Lei Jin 已提交
1365

赵明 已提交
1366 1367
corruption_test: db/corruption_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1368

赵明 已提交
1369 1370
crc32c_test: util/crc32c_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1371

赵明 已提交
1372 1373
slice_transform_test: util/slice_transform_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1374

赵明 已提交
1375 1376
db_basic_test: db/db_basic_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
E
Ewout Prangsma 已提交
1377

赵明 已提交
1378 1379
db_encryption_test: db/db_encryption_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1380

赵明 已提交
1381 1382
db_test: db/db_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1383

赵明 已提交
1384 1385
db_test2: db/db_test2.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1386

赵明 已提交
1387 1388
db_block_cache_test: db/db_block_cache_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1389

赵明 已提交
1390 1391
db_bloom_filter_test: db/db_bloom_filter_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Y
Yi Wu 已提交
1392

赵明 已提交
1393 1394
db_log_iter_test: db/db_log_iter_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1395

赵明 已提交
1396 1397
db_compaction_filter_test: db/db_compaction_filter_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1398

赵明 已提交
1399 1400
db_compaction_test: db/db_compaction_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1401

赵明 已提交
1402 1403
db_dynamic_level_test: db/db_dynamic_level_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1404

赵明 已提交
1405 1406
db_flush_test: db/db_flush_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1407

赵明 已提交
1408 1409
db_inplace_update_test: db/db_inplace_update_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1410

赵明 已提交
1411 1412
db_iterator_test: db/db_iterator_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Y
Yi Wu 已提交
1413

赵明 已提交
1414 1415
db_memtable_test: db/db_memtable_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1416

赵明 已提交
1417 1418
db_merge_operator_test: db/db_merge_operator_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1419

赵明 已提交
1420 1421
db_options_test: db/db_options_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1422

赵明 已提交
1423 1424
db_range_del_test: db/db_range_del_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1425

赵明 已提交
1426 1427
db_sst_test: db/db_sst_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Y
Yi Wu 已提交
1428

赵明 已提交
1429 1430
db_statistics_test: db/db_statistics_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1431

赵明 已提交
1432 1433
db_write_test: db/db_write_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Y
Yi Wu 已提交
1434

赵明 已提交
1435 1436
error_handler_test: db/error_handler_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1437

赵明 已提交
1438 1439
external_sst_file_basic_test: db/external_sst_file_basic_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
S
Siying Dong 已提交
1440

赵明 已提交
1441 1442
external_sst_file_test: db/external_sst_file_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1443

赵明 已提交
1444 1445
db_tailing_iter_test: db/db_tailing_iter_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1446

赵明 已提交
1447 1448
db_iter_test: db/db_iter_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
S
Stanislau Hlebik 已提交
1449

赵明 已提交
1450 1451
db_iter_stress_test: db/db_iter_stress_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
C
chenchanglong 已提交
1452

赵明 已提交
1453 1454
db_universal_compaction_test: db/db_universal_compaction_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1455

赵明 已提交
1456 1457
db_wal_test: db/db_wal_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
S
sdong 已提交
1458

赵明 已提交
1459 1460
db_io_failure_test: db/db_io_failure_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
O
omegaga 已提交
1461

赵明 已提交
1462 1463
db_properties_test: db/db_properties_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1464

赵明 已提交
1465 1466
db_table_properties_test: db/db_table_properties_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1467

赵明 已提交
1468 1469
log_write_bench: util/log_write_bench.o $(TESTHARNESS)
	$(AM_LINK_SHR) $(PROFILING_FLAGS)
1470

赵明 已提交
1471 1472
plain_table_db_test: db/plain_table_db_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
S
Siying Dong 已提交
1473

赵明 已提交
1474 1475
comparator_db_test: db/comparator_db_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1476

赵明 已提交
1477 1478
table_reader_bench: table/table_reader_bench.o $(TESTHARNESS)
	$(AM_LINK_SHR) $(PROFILING_FLAGS)
1479

赵明 已提交
1480 1481
perf_context_test: db/perf_context_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1482

赵明 已提交
1483 1484
prefix_test: db/prefix_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
H
Haobo Xu 已提交
1485

赵明 已提交
1486 1487
backupable_db_test: utilities/backupable/backupable_db_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1488

赵明 已提交
1489 1490
checkpoint_test: utilities/checkpoint/checkpoint_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1491

赵明 已提交
1492 1493
document_db_test: utilities/document/document_db_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1494

赵明 已提交
1495 1496
json_document_test: utilities/document/json_document_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1497

赵明 已提交
1498 1499
sim_cache_test: utilities/simulator_cache/sim_cache_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1500

赵明 已提交
1501 1502
spatial_db_test: utilities/spatialdb/spatial_db_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1503

赵明 已提交
1504 1505
env_mirror_test: utilities/env_mirror_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
S
Sage Weil 已提交
1506

赵明 已提交
1507 1508
env_timed_test: utilities/env_timed_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
Andrew Kryczka 已提交
1509

1510
ifdef ROCKSDB_USE_LIBRADOS
赵明 已提交
1511
env_librados_test: utilities/env_librados_test.o $(TESTHARNESS)
1512 1513 1514
	$(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) $(COVERAGEFLAGS)
endif

赵明 已提交
1515 1516
object_registry_test: utilities/object_registry_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1517

赵明 已提交
1518 1519
ttl_test: utilities/ttl/ttl_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1520

赵明 已提交
1521 1522
date_tiered_test: utilities/date_tiered/date_tiered_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
O
omegaga 已提交
1523

赵明 已提交
1524 1525
write_batch_with_index_test: utilities/write_batch_with_index/write_batch_with_index_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1526

赵明 已提交
1527 1528
flush_job_test: db/flush_job_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
Andres Noetzli 已提交
1529

赵明 已提交
1530 1531
compaction_iterator_test: db/compaction_iterator_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1532

赵明 已提交
1533 1534
compaction_job_test: db/compaction_job_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1535

赵明 已提交
1536 1537
compaction_job_stats_test: db/compaction_job_stats_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1538

赵明 已提交
1539 1540
compact_on_deletion_collector_test: utilities/table_properties_collectors/compact_on_deletion_collector_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1541

赵明 已提交
1542 1543
wal_manager_test: db/wal_manager_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1544

赵明 已提交
1545 1546
dbformat_test: db/dbformat_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1547

赵明 已提交
1548 1549
env_basic_test: env/env_basic_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1550

赵明 已提交
1551 1552
env_test: env/env_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1553

赵明 已提交
1554 1555
fault_injection_test: db/fault_injection_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1556

赵明 已提交
1557 1558
rate_limiter_test: util/rate_limiter_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
L
Lei Jin 已提交
1559

赵明 已提交
1560 1561
delete_scheduler_test: util/delete_scheduler_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Islam AbdelRahman 已提交
1562

赵明 已提交
1563 1564
filename_test: db/filename_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1565

赵明 已提交
1566 1567
file_reader_writer_test: util/file_reader_writer_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1568

赵明 已提交
1569 1570
block_based_filter_block_test: table/block_based_filter_block_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1571

赵明 已提交
1572 1573
full_filter_block_test: table/full_filter_block_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
S
Sanjay Ghemawat 已提交
1574

赵明 已提交
1575 1576
partitioned_filter_block_test: table/partitioned_filter_block_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
M
Maysam Yabandeh 已提交
1577

赵明 已提交
1578 1579
log_test: db/log_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
M
Maysam Yabandeh 已提交
1580

赵明 已提交
1581 1582
cleanable_test: table/cleanable_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1583

赵明 已提交
1584 1585
table_test: table/table_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1586

赵明 已提交
1587 1588
block_test: table/block_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
D
Dhruba Borthakur 已提交
1589

赵明 已提交
1590 1591
data_block_hash_index_test: table/data_block_hash_index_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1592

赵明 已提交
1593 1594
inlineskiplist_test: memtable/inlineskiplist_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
N
Nathan Bronson 已提交
1595

赵明 已提交
1596 1597
skiplist_test: memtable/skiplist_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1598

赵明 已提交
1599 1600
write_buffer_manager_test: memtable/write_buffer_manager_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1601

赵明 已提交
1602 1603
version_edit_test: db/version_edit_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1604

赵明 已提交
1605 1606
version_set_test: db/version_set_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1607

赵明 已提交
1608 1609
compaction_picker_test: db/compaction_picker_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
S
sdong 已提交
1610

赵明 已提交
1611 1612
version_builder_test: db/version_builder_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
S
sdong 已提交
1613

赵明 已提交
1614 1615
file_indexer_test: db/file_indexer_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1616

赵明 已提交
1617 1618
reduce_levels_test: tools/reduce_levels_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1619

赵明 已提交
1620 1621
write_batch_test: db/write_batch_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1622

赵明 已提交
1623 1624
write_controller_test: db/write_controller_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1625

赵明 已提交
1626 1627
merge_helper_test: db/merge_helper_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1628

赵明 已提交
1629 1630
memory_test: utilities/memory/memory_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1631

赵明 已提交
1632 1633
merge_test: db/merge_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
J
jorlow@chromium.org 已提交
1634

赵明 已提交
1635 1636
merger_test: table/merger_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1637

赵明 已提交
1638 1639
util_merge_operators_test: utilities/util_merge_operators_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1640

赵明 已提交
1641 1642
options_file_test: db/options_file_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1643

赵明 已提交
1644 1645
deletefile_test: db/deletefile_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1646

赵明 已提交
1647 1648
obsolete_files_test: db/obsolete_files_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1649

赵明 已提交
1650 1651
geodb_test: utilities/geodb/geodb_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1652

C
chenchanglong 已提交
1653
rocksdb_dump: tools/dump/rocksdb_dump.o
赵明 已提交
1654
	$(AM_LINK_SHR)
1655

C
chenchanglong 已提交
1656
rocksdb_undump: tools/dump/rocksdb_undump.o
赵明 已提交
1657
	$(AM_LINK_SHR)
1658

赵明 已提交
1659 1660
cuckoo_table_builder_test: table/cuckoo_table_builder_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1661

赵明 已提交
1662 1663
cuckoo_table_reader_test: table/cuckoo_table_reader_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1664

赵明 已提交
1665 1666
cuckoo_table_db_test: db/cuckoo_table_db_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1667

赵明 已提交
1668 1669
listener_test: db/listener_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1670

赵明 已提交
1671 1672
thread_list_test: util/thread_list_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Y
Yueh-Hsuan Chiang 已提交
1673

赵明 已提交
1674 1675
compact_files_test: db/compact_files_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1676

赵明 已提交
1677 1678
options_test: options/options_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1679

赵明 已提交
1680 1681
options_settable_test: options/options_settable_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1682

赵明 已提交
1683 1684
options_util_test: utilities/options/options_util_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1685

1686
db_bench_tool_test: tools/db_bench_tool_test.o $(BENCHTOOLOBJECTS) $(TESTHARNESS)
赵明 已提交
1687
	$(AM_LINK_SHR) -lgflags
1688

赵明 已提交
1689 1690
trace_analyzer_test: tools/trace_analyzer_test.o $(ANALYZETOOLOBJECTS) $(TESTHARNESS)
	$(AM_LINK_SHR)
Z
Zhichao Cao 已提交
1691

赵明 已提交
1692 1693
event_logger_test: util/event_logger_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
I
Igor Canadi 已提交
1694

赵明 已提交
1695 1696
timer_queue_test: util/timer_queue_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
Anirban Rahut 已提交
1697

赵明 已提交
1698 1699
sst_dump_test: tools/sst_dump_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1700

O
omegaga 已提交
1701
column_aware_encoding_test: utilities/column_aware_encoding_test.o $(TESTHARNESS) $(EXPOBJECTS)
赵明 已提交
1702
	$(AM_LINK_SHR)
O
omegaga 已提交
1703

赵明 已提交
1704 1705
optimistic_transaction_test: utilities/transactions/optimistic_transaction_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
agiardullo 已提交
1706

赵明 已提交
1707 1708
mock_env_test : env/mock_env_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1709

赵明 已提交
1710 1711
manual_compaction_test: db/manual_compaction_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1712

赵明 已提交
1713 1714
filelock_test: util/filelock_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
K
Kai Liu 已提交
1715

赵明 已提交
1716 1717
auto_roll_logger_test: util/auto_roll_logger_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1718

赵明 已提交
1719 1720
memtable_list_test: db/memtable_list_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
agiardullo 已提交
1721

赵明 已提交
1722 1723
write_callback_test: db/write_callback_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
agiardullo 已提交
1724

C
chenchanglong 已提交
1725
heap_test: util/heap_test.o $(TESTHARNESS)
赵明 已提交
1726
	$(AM_LINK_SHR)
1727

赵明 已提交
1728 1729
transaction_test: utilities/transactions/transaction_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
agiardullo 已提交
1730

赵明 已提交
1731 1732
write_prepared_transaction_test: utilities/transactions/write_prepared_transaction_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1733

赵明 已提交
1734 1735
write_unprepared_transaction_test: utilities/transactions/write_unprepared_transaction_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1736

赵明 已提交
1737 1738
sst_dump: ${xdir}/tools/sst_dump.o
	$(AM_LINK_SHR)
1739

C
chenchanglong 已提交
1740
blob_dump: ${xdir}/tools/blob_dump.o
赵明 已提交
1741
	$(AM_LINK_SHR)
Y
Yi Wu 已提交
1742

O
omegaga 已提交
1743
column_aware_encoding_exp: utilities/column_aware_encoding_exp.o $(EXPOBJECTS)
赵明 已提交
1744
	$(AM_LINK_SHR)
O
omegaga 已提交
1745

赵明 已提交
1746 1747
repair_test: db/repair_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
Andrew Kryczka 已提交
1748

赵明 已提交
1749 1750
ldb_cmd_test: ${xdir}/tools/ldb_cmd_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1751

L
leipeng.tk 已提交
1752
ldb: ${xdir}/tools/ldb.o $(SHARED1)
赵明 已提交
1753
	$(AM_LINK_SHR)
1754

L
leipeng 已提交
1755
kvpipe: ${xdir}/tools/kvpipe.o ${SHARED1}
赵明 已提交
1756
	$(AM_LINK_SHR)
1757

1758
remote_compaction_worker_101: ${xdir}/tools/remote_compaction_worker_101.o ${SHARED1}
赵明 已提交
1759
	$(AM_LINK_SHR)
1760

L
leipeng 已提交
1761
multi_get: ${xdir}/tools/multi_get.o ${SHARED1}
赵明 已提交
1762
	$(AM_LINK_SHR)
1763

赵明 已提交
1764 1765
iostats_context_test: monitoring/iostats_context_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1766

赵明 已提交
1767 1768
persistent_cache_test: utilities/persistent_cache/persistent_cache_test.o  db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1769

赵明 已提交
1770 1771
statistics_test: monitoring/statistics_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Y
Yi Wu 已提交
1772

赵明 已提交
1773 1774
lru_cache_test: cache/lru_cache_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Y
Yi Wu 已提交
1775

赵明 已提交
1776 1777
lua_test: utilities/lua/rocks_lua_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
A
Andrew Kryczka 已提交
1778

赵明 已提交
1779 1780
range_del_aggregator_test: db/range_del_aggregator_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1781

赵明 已提交
1782 1783
range_del_aggregator_bench: db/range_del_aggregator_bench.o $(TESTUTIL)
	$(AM_LINK_SHR)
1784

赵明 已提交
1785 1786
repeatable_thread_test: util/repeatable_thread_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
奏之章 已提交
1787

赵明 已提交
1788 1789
terark_zip_table_db_test: db/terark_zip_table_db_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Z
ZhaoMing 已提交
1790

赵明 已提交
1791 1792
terark_zip_table_reader_test: table/terark_zip_table_reader_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
1793

赵明 已提交
1794 1795
range_tombstone_fragmenter_test: db/range_tombstone_fragmenter_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)
奏之章 已提交
1796

赵明 已提交
1797 1798
sst_file_reader_test: table/sst_file_reader_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Z
ZhaoMing 已提交
1799

赵明 已提交
1800 1801
lazy_buffer_test: util/lazy_buffer_test.o $(TESTHARNESS)
	$(AM_LINK_SHR)
Z
ZhaoMing 已提交
1802

Z
ZhaoMing 已提交
1803 1804 1805
map_builder_test: db/map_builder_test.o db/db_test_util.o $(TESTHARNESS)
	$(AM_LINK_SHR)

I
Igor Canadi 已提交
1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819
#-------------------------------------------------
# make install related stuff
INSTALL_PATH ?= /usr/local

uninstall:
	rm -rf $(INSTALL_PATH)/include/rocksdb \
	  $(INSTALL_PATH)/lib/$(LIBRARY) \
	  $(INSTALL_PATH)/lib/$(SHARED4) \
	  $(INSTALL_PATH)/lib/$(SHARED3) \
	  $(INSTALL_PATH)/lib/$(SHARED2) \
	  $(INSTALL_PATH)/lib/$(SHARED1)

install-headers:
	install -d $(INSTALL_PATH)/lib
1820
	for header_dir in `$(FIND) "include/rocksdb" -type d`; do \
I
Igor Canadi 已提交
1821 1822
		install -d $(INSTALL_PATH)/$$header_dir; \
	done
1823
	for header in `$(FIND) "include/rocksdb" -type f -name *.h`; do \
I
Igor Canadi 已提交
1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837
		install -C -m 644 $$header $(INSTALL_PATH)/$$header; \
	done

install-static: install-headers $(LIBRARY)
	install -C -m 755 $(LIBRARY) $(INSTALL_PATH)/lib

install-shared: install-headers $(SHARED4)
	install -C -m 755 $(SHARED4) $(INSTALL_PATH)/lib && \
		ln -fs $(SHARED4) $(INSTALL_PATH)/lib/$(SHARED3) && \
		ln -fs $(SHARED4) $(INSTALL_PATH)/lib/$(SHARED2) && \
		ln -fs $(SHARED4) $(INSTALL_PATH)/lib/$(SHARED1)

# install static by default + install shared if it exists
install: install-static
I
Igor Canadi 已提交
1838
	[ -e $(SHARED4) ] && $(MAKE) install-shared || :
I
Igor Canadi 已提交
1839 1840 1841 1842

#-------------------------------------------------


1843 1844 1845 1846
# ---------------------------------------------------------------------------
# Jni stuff
# ---------------------------------------------------------------------------

1847
JAVA_INCLUDE = -I$(JAVA_HOME)/include/ -I$(JAVA_HOME)/include/linux
D
David Bernard 已提交
1848 1849
ifeq ($(PLATFORM), OS_SOLARIS)
	ARCH := $(shell isainfo -b)
1850 1851 1852 1853 1854 1855
else ifeq ($(PLATFORM), OS_OPENBSD)
	ifneq (,$(filter $(MACHINE), amd64 arm64 sparc64))
		ARCH := 64
	else
		ARCH := 32
	endif
D
David Bernard 已提交
1856 1857 1858
else
	ARCH := $(shell getconf LONG_BIT)
endif
1859 1860 1861 1862 1863 1864

ifeq (,$(findstring ppc,$(MACHINE)))
        ROCKSDBJNILIB = librocksdbjni-linux$(ARCH).so
else
        ROCKSDBJNILIB = librocksdbjni-linux-$(MACHINE).so
endif
1865
ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-linux$(ARCH).jar
1866
ROCKSDB_JAR_ALL = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH).jar
C
Chris Riccomini 已提交
1867
ROCKSDB_JAVADOCS_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-javadoc.jar
1868
ROCKSDB_SOURCES_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-sources.jar
1869 1870
SHA256_CMD = sha256sum

T
Tomas Kolda 已提交
1871 1872 1873 1874 1875
ZLIB_VER ?= 1.2.11
ZLIB_SHA256 ?= c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
ZLIB_DOWNLOAD_BASE ?= http://zlib.net
BZIP2_VER ?= 1.0.6
BZIP2_SHA256 ?= a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd
1876
BZIP2_DOWNLOAD_BASE ?= https://web.archive.org/web/20180624184835/http://www.bzip.org
S
Sagar Vemuri 已提交
1877 1878
SNAPPY_VER ?= 1.1.4
SNAPPY_SHA256 ?= 134bfe122fd25599bb807bb8130e7ba6d9bdb851e0b16efcb83ac4f5d0b70057
T
Tomas Kolda 已提交
1879
SNAPPY_DOWNLOAD_BASE ?= https://github.com/google/snappy/releases/download
A
Adam Retter 已提交
1880 1881
LZ4_VER ?= 1.8.0
LZ4_SHA256 ?= 2ca482ea7a9bb103603108b5a7510b7592b90158c151ff50a28f1ca8389fccf6
T
Tomas Kolda 已提交
1882
LZ4_DOWNLOAD_BASE ?= https://github.com/lz4/lz4/archive
A
Adam Retter 已提交
1883 1884
ZSTD_VER ?= 1.3.3
ZSTD_SHA256 ?= a77c47153ee7de02626c5b2a097005786b71688be61e9fb81806a011f90b297b
1885
ZSTD_DOWNLOAD_BASE ?= https://github.com/facebook/zstd/archive
P
Pengchao Wang 已提交
1886
CURL_SSL_OPTS ?= --tlsv1
1887 1888

ifeq ($(PLATFORM), OS_MACOSX)
D
David Bernard 已提交
1889 1890
	ROCKSDBJNILIB = librocksdbjni-osx.jnilib
	ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-osx.jar
1891
	SHA256_CMD = openssl sha256 -r
1892 1893 1894 1895 1896
ifneq ("$(wildcard $(JAVA_HOME)/include/darwin)","")
	JAVA_INCLUDE = -I$(JAVA_HOME)/include -I $(JAVA_HOME)/include/darwin
else
	JAVA_INCLUDE = -I/System/Library/Frameworks/JavaVM.framework/Headers/
endif
1897
endif
1898
ifeq ($(PLATFORM), OS_FREEBSD)
1899
	JAVA_INCLUDE = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/freebsd
1900 1901 1902
	ROCKSDBJNILIB = librocksdbjni-freebsd$(ARCH).so
	ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-freebsd$(ARCH).jar
endif
D
David Bernard 已提交
1903 1904 1905 1906
ifeq ($(PLATFORM), OS_SOLARIS)
	ROCKSDBJNILIB = librocksdbjni-solaris$(ARCH).so
	ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-solaris$(ARCH).jar
	JAVA_INCLUDE = -I$(JAVA_HOME)/include/ -I$(JAVA_HOME)/include/solaris
1907
	SHA256_CMD = digest -a sha256
D
David Bernard 已提交
1908
endif
T
Tomas Kolda 已提交
1909 1910 1911 1912 1913 1914
ifeq ($(PLATFORM), OS_AIX)
	JAVA_INCLUDE = -I$(JAVA_HOME)/include/ -I$(JAVA_HOME)/include/aix
	ROCKSDBJNILIB = librocksdbjni-aix.so
	EXTRACT_SOURCES = gunzip < TAR_GZ | tar xvf -
	SNAPPY_MAKE_TARGET = libsnappy.la
endif
1915 1916 1917 1918 1919
ifeq ($(PLATFORM), OS_OPENBSD)
        JAVA_INCLUDE = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/openbsd
	ROCKSDBJNILIB = librocksdbjni-openbsd$(ARCH).so
        ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-openbsd$(ARCH).jar
endif
1920

L
leipeng 已提交
1921 1922
libz.a: zlib-1.2.11/zlib.h
zlib-1.2.11/zlib.h:
1923
	-rm -rf zlib-$(ZLIB_VER)
G
guokuankuan 已提交
1924 1925
	cp -a downloads/zlib-$(ZLIB_VER).tar.gz .
	#curl -O -L ${ZLIB_DOWNLOAD_BASE}/zlib-$(ZLIB_VER).tar.gz
1926 1927 1928 1929 1930 1931
	ZLIB_SHA256_ACTUAL=`$(SHA256_CMD) zlib-$(ZLIB_VER).tar.gz | cut -d ' ' -f 1`; \
	if [ "$(ZLIB_SHA256)" != "$$ZLIB_SHA256_ACTUAL" ]; then \
		echo zlib-$(ZLIB_VER).tar.gz checksum mismatch, expected=\"$(ZLIB_SHA256)\" actual=\"$$ZLIB_SHA256_ACTUAL\"; \
		exit 1; \
	fi
	tar xvzf zlib-$(ZLIB_VER).tar.gz
L
leipeng 已提交
1932 1933
	cd zlib-$(ZLIB_VER) && CFLAGS='-fPIC ${EXTRA_CFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' ./configure --static
	cd zlib-$(ZLIB_VER) && CFLAGS='-fPIC ${EXTRA_CFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' $(MAKE)
1934
	cp zlib-$(ZLIB_VER)/libz.a .
N
Naveen 已提交
1935 1936

libbz2.a:
1937
	-rm -rf bzip2-$(BZIP2_VER)
G
guokuankuan 已提交
1938 1939 1940
	cp -a downloads/bzip2-$(BZIP2_VER).tar.gz .
	#wget ${BZIP2_DOWNLOAD_BASE}/$(BZIP2_VER)/bzip2-$(BZIP2_VER).tar.gz
	#curl -O -L ${BZIP2_DOWNLOAD_BASE}/$(BZIP2_VER)/bzip2-$(BZIP2_VER).tar.gz
1941 1942 1943 1944 1945 1946
	BZIP2_SHA256_ACTUAL=`$(SHA256_CMD) bzip2-$(BZIP2_VER).tar.gz | cut -d ' ' -f 1`; \
	if [ "$(BZIP2_SHA256)" != "$$BZIP2_SHA256_ACTUAL" ]; then \
		echo bzip2-$(BZIP2_VER).tar.gz checksum mismatch, expected=\"$(BZIP2_SHA256)\" actual=\"$$BZIP2_SHA256_ACTUAL\"; \
		exit 1; \
	fi
	tar xvzf bzip2-$(BZIP2_VER).tar.gz
L
leipeng 已提交
1947
	cd bzip2-$(BZIP2_VER) && $(MAKE) CFLAGS='-fPIC -O2 -g -D_FILE_OFFSET_BITS=64 ${EXTRA_CFLAGS}' AR='ar ${EXTRA_ARFLAGS}' LDFLAGS=
1948
	cp bzip2-$(BZIP2_VER)/libbz2.a .
N
Naveen 已提交
1949

L
leipeng 已提交
1950 1951
libsnappy.a: snappy-1.1.4/snappy.h
snappy-1.1.4/snappy.h:
1952
	-rm -rf snappy-$(SNAPPY_VER)
G
guokuankuan 已提交
1953 1954 1955
	cp -a downloads/snappy-$(SNAPPY_VER).tar.gz .
	#wget ${SNAPPY_DOWNLOAD_BASE}/$(SNAPPY_VER)/snappy-$(SNAPPY_VER).tar.gz
	#curl -O -L ${CURL_SSL_OPTS} ${SNAPPY_DOWNLOAD_BASE}/$(SNAPPY_VER)/snappy-$(SNAPPY_VER).tar.gz
1956 1957 1958 1959 1960 1961
	SNAPPY_SHA256_ACTUAL=`$(SHA256_CMD) snappy-$(SNAPPY_VER).tar.gz | cut -d ' ' -f 1`; \
	if [ "$(SNAPPY_SHA256)" != "$$SNAPPY_SHA256_ACTUAL" ]; then \
		echo snappy-$(SNAPPY_VER).tar.gz checksum mismatch, expected=\"$(SNAPPY_SHA256)\" actual=\"$$SNAPPY_SHA256_ACTUAL\"; \
		exit 1; \
	fi
	tar xvzf snappy-$(SNAPPY_VER).tar.gz
T
Tomas Kolda 已提交
1962
	cd snappy-$(SNAPPY_VER) && CFLAGS='${EXTRA_CFLAGS}' CXXFLAGS='${EXTRA_CXXFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' ./configure --with-pic --enable-static --disable-shared
L
leipeng 已提交
1963
	cd snappy-$(SNAPPY_VER) && CFLAGS='${EXTRA_CFLAGS}' CXXFLAGS='${EXTRA_CXXFLAGS}' LDFLAGS='${EXTRA_LDFLAGS}' $(MAKE) ${SNAPPY_MAKE_TARGET}
1964
	cp snappy-$(SNAPPY_VER)/.libs/libsnappy.a .
1965

L
leipeng 已提交
1966 1967
liblz4.a: lz4-1.8.0/lib/lz4.h
lz4-1.8.0/lib/lz4.h:
1968
	-rm -rf lz4-$(LZ4_VER)
G
guokuankuan 已提交
1969 1970 1971
	cp -a downloads/lz4-$(LZ4_VER).tar.gz .
	#wget ${LZ4_DOWNLOAD_BASE}/v$(LZ4_VER).tar.gz
	#curl -O -L ${CURL_SSL_OPTS} ${LZ4_DOWNLOAD_BASE}/v$(LZ4_VER).tar.gz
G
guokuankuan 已提交
1972
	#mv v$(LZ4_VER).tar.gz lz4-$(LZ4_VER).tar.gz
1973 1974 1975 1976 1977 1978
	LZ4_SHA256_ACTUAL=`$(SHA256_CMD) lz4-$(LZ4_VER).tar.gz | cut -d ' ' -f 1`; \
	if [ "$(LZ4_SHA256)" != "$$LZ4_SHA256_ACTUAL" ]; then \
		echo lz4-$(LZ4_VER).tar.gz checksum mismatch, expected=\"$(LZ4_SHA256)\" actual=\"$$LZ4_SHA256_ACTUAL\"; \
		exit 1; \
	fi
	tar xvzf lz4-$(LZ4_VER).tar.gz
L
leipeng 已提交
1979
	cd lz4-$(LZ4_VER)/lib && $(MAKE) CFLAGS='-fPIC -O2 ${EXTRA_CFLAGS}' LDFLAGS= all
1980
	cp lz4-$(LZ4_VER)/lib/liblz4.a .
N
Naveen 已提交
1981

L
leipeng 已提交
1982 1983
libzstd.a: zstd-1.3.3/lib/include/zstd.h
zstd-1.3.3/lib/include/zstd.h:
1984
	-rm -rf zstd-$(ZSTD_VER)
G
guokuankuan 已提交
1985 1986
	cp -a downloads/zstd-$(ZSTD_VER).tar.gz .
	#wget ${ZSTD_DOWNLOAD_BASE}/v$(ZSTD_VER).tar.gz
G
guokuankuan 已提交
1987 1988
	#curl -O -L ${CURL_SSL_OPTS} ${ZSTD_DOWNLOAD_BASE}/v$(ZSTD_VER).tar.gz
	#mv v$(ZSTD_VER).tar.gz zstd-$(ZSTD_VER).tar.gz
1989 1990 1991 1992 1993 1994
	ZSTD_SHA256_ACTUAL=`$(SHA256_CMD) zstd-$(ZSTD_VER).tar.gz | cut -d ' ' -f 1`; \
	if [ "$(ZSTD_SHA256)" != "$$ZSTD_SHA256_ACTUAL" ]; then \
		echo zstd-$(ZSTD_VER).tar.gz checksum mismatch, expected=\"$(ZSTD_SHA256)\" actual=\"$$ZSTD_SHA256_ACTUAL\"; \
		exit 1; \
	fi
	tar xvzf zstd-$(ZSTD_VER).tar.gz
L
leipeng 已提交
1995
	cd zstd-$(ZSTD_VER)/lib && LDFLAGS= DESTDIR=. PREFIX= $(MAKE) CFLAGS='-fPIC -O2 ${EXTRA_CFLAGS}' install
1996 1997
	cp zstd-$(ZSTD_VER)/lib/libzstd.a .

1998
# A version of each $(LIBOBJECTS) compiled with -fPIC and a fixed set of static compression libraries
A
Andrew Kryczka 已提交
1999
java_static_libobjects = $(patsubst %,jls/%,$(LIB_CC_OBJECTS))
2000
CLEAN_FILES += jls
A
Andrew Kryczka 已提交
2001
java_static_all_libobjects = $(java_static_libobjects)
2002

2003
ifneq ($(ROCKSDB_JAVA_NO_COMPRESSION), 1)
郭宽宽 已提交
2004
JAVA_COMPRESSIONS = libz.a libsnappy.a liblz4.a
2005 2006
endif

郭宽宽 已提交
2007 2008
JAVA_STATIC_FLAGS = -DZLIB -DSNAPPY -DLZ4 -DZSTD
JAVA_STATIC_INCLUDES = -I./zlib-$(ZLIB_VER) -I./snappy-$(SNAPPY_VER) -I./lz4-$(LZ4_VER)/lib -I./zstd-$(ZSTD_VER)/lib/include
2009

A
Andrew Kryczka 已提交
2010
ifeq ($(HAVE_POWER8),1)
雷鹏 已提交
2011 2012
JAVA_STATIC_C_LIBOBJECTS = $(patsubst %.c.o,jls/%.c.o,$(addprefix ${xdir},$(LIB_SOURCES_C:.c=.o)))
JAVA_STATIC_ASM_LIBOBJECTS = $(patsubst %.S.o,jls/%.S.o,$(addprefix ${xdir},$(LIB_SOURCES_ASM:.S=.o)))
A
Andrew Kryczka 已提交
2013 2014 2015

java_static_ppc_libobjects = $(JAVA_STATIC_C_LIBOBJECTS) $(JAVA_STATIC_ASM_LIBOBJECTS)

雷鹏 已提交
2016
jls/${xdir}/util/crc32c_ppc.o: util/crc32c_ppc.c
A
Andrew Kryczka 已提交
2017 2018
	$(AM_V_CC)$(CC) $(CFLAGS) $(JAVA_STATIC_FLAGS) $(JAVA_STATIC_INCLUDES) -c $< -o $@

雷鹏 已提交
2019
jls/${xdir}/util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S
A
Andrew Kryczka 已提交
2020 2021 2022 2023 2024
	$(AM_V_CC)$(CC) $(CFLAGS) $(JAVA_STATIC_FLAGS) $(JAVA_STATIC_INCLUDES) -c $< -o $@

java_static_all_libobjects += $(java_static_ppc_libobjects)
endif

雷鹏 已提交
2025
$(java_static_libobjects): jls/${xdir}/%.o: %.cc $(JAVA_COMPRESSIONS)
2026
	$(AM_V_CC)mkdir -p $(@D) && $(CXX) $(CXXFLAGS) $(JAVA_STATIC_FLAGS) $(JAVA_STATIC_INCLUDES) -fPIC -c $< -o $@ $(COVERAGEFLAGS)
2027

郭宽宽 已提交
2028 2029 2030 2031 2032 2033 2034 2035
fakemake: $(java_static_all_libobjects)
	@echo "-------------------"
	@echo $(java_static_libobjects)
	@echo "-------------------"
	@echo $(AM_LINK)
	@echo "-------------------"
	@echo $(LINK_STATIC_TERARK) $(LDFLAGS) $(COVERAGEFLAGS)

A
Andrew Kryczka 已提交
2036
rocksdbjavastatic: $(java_static_all_libobjects)
F
fyrz 已提交
2037
	cd java;$(MAKE) javalib;
2038
	rm -f ./java/target/$(ROCKSDBJNILIB)
2039 2040
	$(CXX) $(CXXFLAGS) -I./java/. $(JAVA_INCLUDE) -shared -fPIC \
	  -o ./java/target/$(ROCKSDBJNILIB) $(JNI_NATIVE_SOURCES) \
A
Andrew Kryczka 已提交
2041
	  $(java_static_all_libobjects) $(COVERAGEFLAGS) \
郭宽宽 已提交
2042 2043 2044 2045
	  $(JAVA_COMPRESSIONS) $(JAVA_STATIC_LDFLAGS) \
	  $(LINK_STATIC_TERARK) $(LDFLAGS) $(COVERAGEFLAGS) \
	  -Wno-unused-parameter
	  
2046 2047 2048
	cd java/target;if [ "$(DEBUG_LEVEL)" == "0" ]; then \
		strip $(STRIPFLAGS) $(ROCKSDBJNILIB); \
	fi
2049
	cd java;jar -cf target/$(ROCKSDB_JAR) HISTORY*.md
郭宽宽 已提交
2050
	jar -uf java/target/$(ROCKSDB_JAR) HISTORY*.md
2051 2052 2053 2054
	cd java/target;jar -uf $(ROCKSDB_JAR) $(ROCKSDBJNILIB)
	cd java/target/classes;jar -uf ../$(ROCKSDB_JAR) org/rocksdb/*.class org/rocksdb/util/*.class
	cd java/target/apidocs;jar -cf ../$(ROCKSDB_JAVADOCS_JAR) *
	cd java/src/main/java;jar -cf ../../../target/$(ROCKSDB_SOURCES_JAR) org
N
Naveen 已提交
2055

郭宽宽 已提交
2056 2057 2058 2059
	mkdir -p java/target/META-INF
	cp LICENSE.Apache java/target/META-INF/LICENSE
	cd java/target;jar -uf $(ROCKSDB_JAR) META-INF/LICENSE

2060
rocksdbjavastaticrelease: rocksdbjavastatic
郭宽宽 已提交
2061 2062 2063
	# We only have to support Linux-64 build for now
	# TODO enable crossbuild again (guokuankuan)
	# cd java/crossbuild && vagrant destroy -f && vagrant up linux32 && vagrant halt linux32 && vagrant up linux64 && vagrant halt linux64
2064
	cd java;jar -cf target/$(ROCKSDB_JAR_ALL) HISTORY*.md
郭宽宽 已提交
2065 2066 2067 2068 2069
	jar -uf java/target/$(ROCKSDB_JAR_ALL) HISTORY*.md

	# Enable crossbuild again(guokuankuan)
	# cd java/target;jar -uf $(ROCKSDB_JAR_ALL) librocksdbjni-*.so librocksdbjni-*.jnilib librocksdbjni-win64.dll
	cd java/target;jar -uf $(ROCKSDB_JAR_ALL) *.so
2070
	cd java/target/classes;jar -uf ../$(ROCKSDB_JAR_ALL) org/rocksdb/*.class org/rocksdb/util/*.class
2071

郭宽宽 已提交
2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120
frocksdbjavastaticrelease: rocksdbjavastaticrelease
	# update license
	mkdir -p java/target/META-INF
	cp LICENSE.Apache java/target/META-INF/LICENSE
	cd java/target;jar -uf $(ROCKSDB_JAR_ALL) META-INF/LICENSE

	# platform jars
	$(eval JAR_PREF=rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH))
	$(eval JAR_DOCS=$(JAR_PREF)-javadoc.jar)
	$(eval JAR_SOURCES=$(JAR_PREF)-sources.jar)
	# $(eval OSX_JAR=$(JAR_PREF)-osx.jar)
	# $(eval WIN_JAR=$(JAR_PREF)-win64.jar)
	# $(eval LINUX32_JAR=$(JAR_PREF)-linux32.jar)
	$(eval LINUX64_JAR=$(JAR_PREF)-linux64.jar)

	# update windows jar
	# cd java/target;cp rocksdbjni_classes.jar $(WIN_JAR)
	# cd java;jar -uf target/$(WIN_JAR) HISTORY*.md
	# jar -uf java/target/$(WIN_JAR) HISTORY*.md
	# cd java/target;jar -uf $(WIN_JAR) librocksdbjni-win64.dll
	# cd java/target;jar -uf $(WIN_JAR) META-INF/LICENSE

	# update linux 64 jar with ppc64 lib
	# cd java/target;jar -uf $(LINUX64_JAR) librocksdbjni-linux-ppc64le.so

	cd java/target;jar -uf $(JAR_DOCS) META-INF/LICENSE
	cd java/target;jar -uf $(JAR_SOURCES) META-INF/LICENSE

	# prepare frocksdb release
	cd java/target;mkdir -p frocksdb-release

	$(eval FJAR_PREF=frocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-artisans-$(FROCKSDB_VERSION))
	$(eval FJAR=$(FJAR_PREF).jar)
	$(eval FJAR_DOCS=$(FJAR_PREF)-javadoc.jar)
	$(eval FJAR_SOURCES=$(FJAR_PREF)-sources.jar)
	# $(eval OSX_FJAR=$(FJAR_PREF)-osx.jar)
	# $(eval WIN_FJAR=$(FJAR_PREF)-win64.jar)
	# $(eval LINUX32_FJAR=$(FJAR_PREF)-linux32.jar)
	$(eval LINUX64_FJAR=$(FJAR_PREF)-linux64.jar)

	cd java/target;cp $(ROCKSDB_JAR_ALL) frocksdb-release/$(FJAR)
	cd java/target;cp $(JAR_DOCS) frocksdb-release/$(FJAR_DOCS)
	cd java/target;cp $(JAR_SOURCES) frocksdb-release/$(FJAR_SOURCES)
	# cd java/target;cp $(OSX_JAR) frocksdb-release/$(OSX_FJAR)
	# cd java/target;cp $(WIN_JAR) frocksdb-release/$(WIN_FJAR)
	# cd java/target;cp $(LINUX32_JAR) frocksdb-release/$(LINUX32_FJAR)
	cd java/target;cp $(LINUX64_JAR) frocksdb-release/$(LINUX64_FJAR)
	cd java;cp rocksjni_flink.pom target/frocksdb-release/$(FJAR_PREF).pom

2121 2122 2123 2124 2125 2126 2127
rocksdbjavastaticreleasedocker: rocksdbjavastatic rocksdbjavastaticdockerx86 rocksdbjavastaticdockerx86_64
	cd java;jar -cf target/$(ROCKSDB_JAR_ALL) HISTORY*.md
	cd java/target;jar -uf $(ROCKSDB_JAR_ALL) librocksdbjni-*.so librocksdbjni-*.jnilib
	cd java/target/classes;jar -uf ../$(ROCKSDB_JAR_ALL) org/rocksdb/*.class org/rocksdb/util/*.class

rocksdbjavastaticdockerx86:
	mkdir -p java/target
2128 2129
	DOCKER_LINUX_X86_CONTAINER=`docker ps -aqf name=rocksdb_linux_x86-be`; \
	if [ -z "$$DOCKER_LINUX_X86_CONTAINER" ]; then \
2130
		docker container create --attach stdin --attach stdout --attach stderr --volume `pwd`:/rocksdb-host --name rocksdb_linux_x86-be evolvedbinary/rocksjava:centos6_x86-be /rocksdb-host/java/crossbuild/docker-build-linux-centos.sh; \
2131 2132
	fi
	docker start -a rocksdb_linux_x86-be
2133 2134 2135 2136 2137 2138 2139 2140

rocksdbjavastaticdockerx86_64:
	mkdir -p java/target
	DOCKER_LINUX_X64_CONTAINER=`docker ps -aqf name=rocksdb_linux_x64-be`; \
	if [ -z "$$DOCKER_LINUX_X64_CONTAINER" ]; then \
		docker container create --attach stdin --attach stdout --attach stderr --volume `pwd`:/rocksdb-host --name rocksdb_linux_x64-be evolvedbinary/rocksjava:centos6_x64-be /rocksdb-host/java/crossbuild/docker-build-linux-centos.sh; \
	fi
	docker start -a rocksdb_linux_x64-be
2141

2142 2143 2144 2145 2146 2147 2148 2149
rocksdbjavastaticdockerppc64le:
	mkdir -p java/target
	DOCKER_LINUX_PPC64LE_CONTAINER=`docker ps -aqf name=rocksdb_linux_ppc64le-be`; \
	if [ -z "$$DOCKER_LINUX_PPC64LE_CONTAINER" ]; then \
		docker container create --attach stdin --attach stdout --attach stderr --volume `pwd`:/rocksdb-host --name rocksdb_linux_ppc64le-be evolvedbinary/rocksjava:centos7_ppc64le-be /rocksdb-host/java/crossbuild/docker-build-linux-centos.sh; \
	fi
	docker start -a rocksdb_linux_ppc64le-be

2150 2151
rocksdbjavastaticpublish: rocksdbjavastaticrelease rocksdbjavastaticpublishcentral

2152 2153
rocksdbjavastaticpublishdocker: rocksdbjavastaticreleasedocker rocksdbjavastaticpublishcentral

2154
rocksdbjavastaticpublishcentral:
2155 2156 2157 2158 2159
	mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-javadoc.jar -Dclassifier=javadoc
	mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-sources.jar -Dclassifier=sources
	mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-linux64.jar -Dclassifier=linux64
	mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-linux32.jar -Dclassifier=linux32
	mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-osx.jar -Dclassifier=osx
2160
	mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-win64.jar -Dclassifier=win64
2161
	mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=java/rocksjni.pom -Dfile=java/target/rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH).jar
2162

2163
# A version of each $(LIBOBJECTS) compiled with -fPIC
2164 2165 2166 2167 2168 2169 2170 2171 2172
ifeq ($(HAVE_POWER8),1)
JAVA_CC_OBJECTS = $(SHARED_CC_OBJECTS)
JAVA_C_OBJECTS = $(SHARED_C_OBJECTS)
JAVA_ASM_OBJECTS = $(SHARED_ASM_OBJECTS)

JAVA_C_LIBOBJECTS = $(patsubst %.c.o,jl/%.c.o,$(JAVA_C_OBJECTS))
JAVA_ASM_LIBOBJECTS = $(patsubst %.S.o,jl/%.S.o,$(JAVA_ASM_OBJECTS))
endif

S
Sagar Vemuri 已提交
2173
java_libobjects = $(patsubst %,jl/%,$(LIB_CC_OBJECTS))
2174
CLEAN_FILES += jl
2175 2176 2177 2178 2179
java_all_libobjects = $(java_libobjects)

ifeq ($(HAVE_POWER8),1)
java_ppc_libobjects = $(JAVA_C_LIBOBJECTS) $(JAVA_ASM_LIBOBJECTS)

雷鹏 已提交
2180
jl/${xdir}/crc32c_ppc.o: util/crc32c_ppc.c
2181 2182
	$(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@

雷鹏 已提交
2183
jl/${xdir}/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S
2184 2185 2186
	$(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@
java_all_libobjects += $(java_ppc_libobjects)
endif
2187

雷鹏 已提交
2188
$(java_libobjects): jl/${xdir}/%.o: %.cc
2189 2190
	$(AM_V_CC)mkdir -p $(@D) && $(CXX) $(CXXFLAGS) -fPIC -c $< -o $@ $(COVERAGEFLAGS)

2191
rocksdbjava: $(java_all_libobjects)
2192 2193
	$(AM_V_GEN)cd java;$(MAKE) javalib;
	$(AM_V_at)rm -f ./java/target/$(ROCKSDBJNILIB)
2194
	$(AM_V_at)$(CXX) $(CXXFLAGS) -I./java/. $(JAVA_INCLUDE) -shared -fPIC -o ./java/target/$(ROCKSDBJNILIB) $(JNI_NATIVE_SOURCES) $(java_all_libobjects) $(JAVA_LDFLAGS) $(COVERAGEFLAGS)
2195 2196 2197
	$(AM_V_at)cd java;jar -cf target/$(ROCKSDB_JAR) HISTORY*.md
	$(AM_V_at)cd java/target;jar -uf $(ROCKSDB_JAR) $(ROCKSDBJNILIB)
	$(AM_V_at)cd java/target/classes;jar -uf ../$(ROCKSDB_JAR) org/rocksdb/*.class org/rocksdb/util/*.class
2198 2199 2200 2201

jclean:
	cd java;$(MAKE) clean;

2202 2203 2204 2205 2206 2207
jtest_compile: rocksdbjava
	cd java;$(MAKE) java_test

jtest_run:
	cd java;$(MAKE) run_test

2208
jtest: rocksdbjava
2209
	cd java;$(MAKE) sample;$(MAKE) test;
2210

2211 2212 2213
jdb_bench:
	cd java;$(MAKE) db_bench;

2214 2215
commit_prereq: build_tools/rocksdb-lego-determinator \
               build_tools/precommit_checker.py
2216
	J=$(J) build_tools/precommit_checker.py unit unit_481 clang_unit release release_481 clang_release tsan asan ubsan lite unit_non_shm
2217
	$(MAKE) clean && $(MAKE) jclean && $(MAKE) rocksdbjava;
2218

2219 2220 2221
# ---------------------------------------------------------------------------
#  	Platform-specific compilation
# ---------------------------------------------------------------------------
J
Jim Paton 已提交
2222

2223 2224 2225
ifeq ($(PLATFORM), IOS)
# For iOS, create universal object files to be used on both the simulator and
# a device.
H
heyongqiang 已提交
2226 2227 2228
PLATFORMSROOT=/Applications/Xcode.app/Contents/Developer/Platforms
SIMULATORROOT=$(PLATFORMSROOT)/iPhoneSimulator.platform/Developer
DEVICEROOT=$(PLATFORMSROOT)/iPhoneOS.platform/Developer
I
Igor Canadi 已提交
2229
IOSVERSION=$(shell defaults read $(PLATFORMSROOT)/iPhoneOS.platform/version CFBundleShortVersionString)
2230

2231 2232
.cc.o:
	mkdir -p ios-x86/$(dir $@)
I
Igor Canadi 已提交
2233
	$(CXX) $(CXXFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 -arch x86_64 -c $< -o ios-x86/$@
2234
	mkdir -p ios-arm/$(dir $@)
I
Igor Canadi 已提交
2235
	xcrun -sdk iphoneos $(CXX) $(CXXFLAGS) -isysroot $(DEVICEROOT)/SDKs/iPhoneOS$(IOSVERSION).sdk -arch armv6 -arch armv7 -arch armv7s -arch arm64 -c $< -o ios-arm/$@
2236
	lipo ios-x86/$@ ios-arm/$@ -create -output $@
2237 2238 2239

.c.o:
	mkdir -p ios-x86/$(dir $@)
I
Igor Canadi 已提交
2240
	$(CC) $(CFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 -arch x86_64 -c $< -o ios-x86/$@
2241
	mkdir -p ios-arm/$(dir $@)
I
Igor Canadi 已提交
2242
	xcrun -sdk iphoneos $(CC) $(CFLAGS) -isysroot $(DEVICEROOT)/SDKs/iPhoneOS$(IOSVERSION).sdk -arch armv6 -arch armv7 -arch armv7s -arch arm64 -c $< -o ios-arm/$@
2243 2244
	lipo ios-x86/$@ ios-arm/$@ -create -output $@

2245
else
2246 2247 2248 2249 2250 2251 2252
ifeq ($(HAVE_POWER8),1)
util/crc32c_ppc.o: util/crc32c_ppc.c
	$(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@

util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S
	$(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@
endif
2253
.cc.o:
2254
	$(AM_V_CC)$(CXX) $(CXXFLAGS) -c $< -o $@ $(COVERAGEFLAGS)
2255

2256
.c.o:
2257
	$(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@
2258
endif
2259 2260 2261 2262
# ---------------------------------------------------------------------------
#  	Source files dependencies detection
# ---------------------------------------------------------------------------

2263
all_sources = $(LIB_SOURCES) $(MAIN_SOURCES) $(MOCK_LIB_SOURCES) $(TOOL_LIB_SOURCES) $(BENCH_LIB_SOURCES) $(TEST_LIB_SOURCES) $(EXP_LIB_SOURCES) $(ANALYZER_LIB_SOURCES)
2264
DEPFILES = $(addprefix ${xdir}/,$(all_sources:.cc=.cc.d))
L
leipeng 已提交
2265
DEPFILES += $(addprefix shared-objects/${xdir}/,$(all_sources:.cc=.cc.d))
2266

2267 2268 2269 2270 2271
# Add proper dependency support so changing a .h file forces a .cc file to
# rebuild.

# The .d file indicates .cc file's dependencies on .h files. We generate such
# dependency by g++'s -MM option, whose output is a make dependency rule.
2272 2273
${xdir}/%.cc.d: %.cc
	@mkdir -p $(dir $@)
2274
	@$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \
L
leipeng 已提交
2275 2276 2277 2278 2279 2280
	  -MM -MT'$@' -MT'$(@:.cc.d=.o)' "$<" -o '$@'

shared-objects/${xdir}/%.cc.d: %.cc
	@mkdir -p $(dir $@)
	@$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \
	  -MM -MT'$@' -MT'$(@:.cc.d=.o)' "$<" -o '$@'
2281

2282
ifeq ($(HAVE_POWER8),1)
2283 2284
DEPFILES_C = $(addprefix ${xdir}/,$(LIB_SOURCES_C:.c=.c.d))
DEPFILES_ASM = $(addprefix ${xdir}/,$(LIB_SOURCES_ASM:.S=.S.d))
2285

L
leipeng 已提交
2286 2287 2288
DEPFILES_C += $(addprefix shared-objects/${xdir}/,$(LIB_SOURCES_C:.c=.c.d))
DEPFILES_ASM += $(addprefix shared-objects/${xdir}/,$(LIB_SOURCES_ASM:.S=.S.d))

2289 2290
${xdir}/%.c.d: %.c
	@mkdir -p $(dir $@)
2291
	@$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \
L
leipeng 已提交
2292
	  -MM -MT'$@' -MT'$(@:.c.d=.o)' "$<" -o '$@'
2293

2294 2295
${xdir}/%.S.d: %.S
	@mkdir -p $(dir $@)
2296
	@$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \
L
leipeng 已提交
2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307
	  -MM -MT'$@' -MT'$(@:.S.d=.o)' "$<" -o '$@'

shared-objects/${xdir}/%.c.d: %.c
	@mkdir -p $(dir $@)
	@$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \
	  -MM -MT'$@' -MT'$(@:.c.d=.o)' "$<" -o '$@'

shared-objects/${xdir}/%.S.d: %.S
	@mkdir -p $(dir $@)
	@$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \
	  -MM -MT'$@' -MT'$(@:.S.d=.o)' "$<" -o '$@'
2308 2309 2310 2311 2312 2313

$(DEPFILES_C): %.c.d

$(DEPFILES_ASM): %.S.d
depend: $(DEPFILES) $(DEPFILES_C) $(DEPFILES_ASM)
else
2314
depend: $(DEPFILES)
2315
endif
2316

2317 2318 2319 2320 2321 2322 2323 2324
COMPRESSION_HEADERS :=          \
  snappy-1.1.4/snappy.h         \
  lz4-1.8.0/lib/lz4.h           \
  zstd-1.3.3/lib/include/zstd.h \
  zlib-1.2.11/zlib.h

${DEPFILES} : ${COMPRESSION_HEADERS}

2325 2326 2327 2328
# if the make goal is either "clean" or "format", we shouldn't
# try to import the *.d files.
# TODO(kailiu) The unfamiliarity of Make's conditions leads to the ugly
# working solution.
2329
ifneq ($(MAKECMDGOALS),clean)
2330
ifneq ($(MAKECMDGOALS),format)
2331 2332
ifneq ($(MAKECMDGOALS),jclean)
ifneq ($(MAKECMDGOALS),jtest)
2333
ifneq ($(MAKECMDGOALS),package)
2334
ifneq ($(MAKECMDGOALS),analyze)
2335 2336
-include $(DEPFILES)
endif
2337
endif
2338 2339
endif
endif
2340
endif
2341
endif