Makefile 26.7 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 10 11 12
CFLAGS += ${EXTRA_CFLAGS}
CXXFLAGS += ${EXTRA_CXXFLAGS}
LDFLAGS += $(EXTRA_LDFLAGS)
MACHINE ?= $(shell uname -m)
I
Igor Canadi 已提交
13
ARFLAGS = rs
14

15
ifneq ($(MAKECMDGOALS),dbg)
16 17 18 19
OPT += -O2 -fno-omit-frame-pointer
ifneq ($(MACHINE),ppc64) # ppc64 doesn't support -momit-leaf-frame-pointer
OPT += -momit-leaf-frame-pointer
endif
20
else
21
# intentionally left blank
22
endif
23 24

ifeq ($(MAKECMDGOALS),shared_lib)
I
Igor Canadi 已提交
25 26
OPT += -DNDEBUG
endif
I
Igor Canadi 已提交
27

I
Igor Canadi 已提交
28 29
ifeq ($(MAKECMDGOALS),static_lib)
OPT += -DNDEBUG
30
endif
I
Igor Canadi 已提交
31

32
#-----------------------------------------------
33
include src.mk
34

35 36 37 38 39 40
AM_DEFAULT_VERBOSITY = 0

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 已提交
41 42 43 44
AM_V_at = $(am__v_at_$(V))
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
am__v_at_1 =
45 46 47 48 49 50 51 52 53 54 55

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 已提交
56 57 58 59
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 =
60

61 62
AM_LINK = $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) $(COVERAGEFLAGS)

63
# detect what platform we're building on
64
dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk"))
S
Sanjay Ghemawat 已提交
65
# this file is generated by the previous line to set build flags and sources
I
Igor Canadi 已提交
66
include make_config.mk
J
jorlow@chromium.org 已提交
67

I
Igor Canadi 已提交
68 69 70 71 72 73 74 75
ifneq ($(PLATFORM), IOS)
CFLAGS += -g
CXXFLAGS += -g
else
# no debug info for IOS, that will make our library big
OPT += -DNDEBUG
endif

76
ifneq ($(filter -DROCKSDB_LITE,$(OPT)),)
77 78 79 80 81
	# found
	CFLAGS += -fno-exceptions
	CXXFLAGS += -fno-exceptions
endif

I
Igor Canadi 已提交
82 83
# ASAN doesn't work well with jemalloc. If we're compiling with ASAN, we should use regular malloc.
ifdef COMPILE_WITH_ASAN
I
Igor Canadi 已提交
84
	DISABLE_JEMALLOC=1
I
Igor Canadi 已提交
85 86 87
	EXEC_LDFLAGS += -fsanitize=address
	PLATFORM_CCFLAGS += -fsanitize=address
	PLATFORM_CXXFLAGS += -fsanitize=address
I
Igor Canadi 已提交
88 89 90 91 92 93
endif

# TSAN doesn't work well with jemalloc. If we're compiling with TSAN, we should use regular malloc.
ifdef COMPILE_WITH_TSAN
	DISABLE_JEMALLOC=1
	EXEC_LDFLAGS += -fsanitize=thread -pie
94 95
	PLATFORM_CCFLAGS += -fsanitize=thread -fPIC -DROCKSDB_TSAN_RUN
	PLATFORM_CXXFLAGS += -fsanitize=thread -fPIC -DROCKSDB_TSAN_RUN
96 97 98 99 100
        # Turn off -pg when enabling TSAN testing, because that induces
        # a link failure.  TODO: find the root cause
	pg =
else
	pg = -pg
I
Igor Canadi 已提交
101 102 103
endif

ifndef DISABLE_JEMALLOC
I
Igor Canadi 已提交
104 105 106 107 108
	EXEC_LDFLAGS := $(JEMALLOC_LIB) $(EXEC_LDFLAGS)
	PLATFORM_CXXFLAGS += $(JEMALLOC_INCLUDE) -DHAVE_JEMALLOC
	PLATFORM_CCFLAGS += $(JEMALLOC_INCLUDE) -DHAVE_JEMALLOC
endif

I
Igor Sugak 已提交
109 110 111 112 113
export GTEST_THROW_ON_FAILURE=1 GTEST_HAS_EXCEPTIONS=1
GTEST_DIR = ./third-party/gtest-1.7.0/fused-src
PLATFORM_CCFLAGS += -isystem $(GTEST_DIR)
PLATFORM_CXXFLAGS += -isystem $(GTEST_DIR)

114 115 116
# This (the first rule) must depend on "all".
default: all

Y
Yueh-Hsuan Chiang 已提交
117 118 119 120 121
#-------------------------------------------------
# make install related stuff
INSTALL_PATH ?= /usr/local

uninstall:
122 123 124
	rm -rf $(INSTALL_PATH)/include/rocksdb \
	  $(INSTALL_PATH)/lib/$(LIBRARY) \
	  $(INSTALL_PATH)/lib/$(SHARED)
Y
Yueh-Hsuan Chiang 已提交
125 126

install:
127 128
	install -d $(INSTALL_PATH)/lib
	for header_dir in `find "include/rocksdb" -type d`; do \
I
Igor Canadi 已提交
129
		install -d $(INSTALL_PATH)/$$header_dir; \
Y
Yueh-Hsuan Chiang 已提交
130
	done
131
	for header in `find "include/rocksdb" -type f -name *.h`; do \
I
Igor Canadi 已提交
132 133
		install -C -m 644 $$header $(INSTALL_PATH)/$$header; \
	done
134 135
	[ ! -e $(LIBRARY) ] || install -C -m 644 $(LIBRARY) $(INSTALL_PATH)/lib
	[ ! -e $(SHARED) ] || install -C -m 644 $(SHARED) $(INSTALL_PATH)/lib
Y
Yueh-Hsuan Chiang 已提交
136 137
#-------------------------------------------------

138
WARNING_FLAGS = -W -Wextra -Wall -Wsign-compare -Wshadow \
139 140
  -Wno-unused-parameter

141 142 143 144
ifndef DISABLE_WARNING_AS_ERROR
	WARNING_FLAGS += -Werror
endif

I
Igor Canadi 已提交
145
CFLAGS += $(WARNING_FLAGS) -I. -I./include $(PLATFORM_CCFLAGS) $(OPT)
I
Igor Sugak 已提交
146
CXXFLAGS += $(WARNING_FLAGS) -I. -I./include $(PLATFORM_CXXFLAGS) $(OPT) -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers
147

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

150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
date := $(shell date +%F)
git_sha := $(shell git describe HEAD 2>/dev/null)
gen_build_version =							\
  printf '%s\n'								\
    '\#include "build_version.h"'					\
    'const char* rocksdb_build_git_sha =				\
      "rocksdb_build_git_sha:$(git_sha)";'				\
    'const char* rocksdb_build_git_date =				\
      "rocksdb_build_git_date:$(date)";'				\
    'const char* rocksdb_build_compile_date = __DATE__;'

# 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.
util/build_version.cc:
	$(AM_V_GEN)$(gen_build_version) > $@.tmp
	$(AM_V_at)if test -f $@; then \
	  cmp -s $@.tmp $@ && : || mv -f $@.tmp $@; else mv -f $@.tmp $@; fi

171
LIBOBJECTS = $(LIB_SOURCES:.cc=.o)
172
MOCKOBJECTS = $(MOCK_SOURCES:.cc=.o)
J
jorlow@chromium.org 已提交
173

I
Igor Sugak 已提交
174
GTEST = $(GTEST_DIR)/gtest/gtest-all.o
J
jorlow@chromium.org 已提交
175
TESTUTIL = ./util/testutil.o
I
Igor Sugak 已提交
176
TESTHARNESS = ./util/testharness.o $(TESTUTIL) $(MOCKOBJECTS) $(GTEST)
177
BENCHHARNESS = ./util/benchharness.o
178
VALGRIND_ERROR = 2
179
VALGRIND_DIR = build_tools/VALGRIND_LOGS
180
VALGRIND_VER := $(join $(VALGRIND_VER),valgrind)
181

182
VALGRIND_OPTS = --error-exitcode=$(VALGRIND_ERROR) --leak-check=full
183

J
jorlow@chromium.org 已提交
184
TESTS = \
185
	db_test \
S
Stanislau Hlebik 已提交
186
	db_iter_test \
K
kailiu 已提交
187
	block_hash_index_test \
188
	autovector_test \
189
	column_family_test \
K
kailiu 已提交
190
	table_properties_collector_test \
J
jorlow@chromium.org 已提交
191
	arena_test \
J
Jim Paton 已提交
192
	auto_roll_logger_test \
193
	benchharness_test \
J
Jim Paton 已提交
194
	block_test \
S
Sanjay Ghemawat 已提交
195
	bloom_test \
196
	dynamic_bloom_test \
197
	c_test \
J
jorlow@chromium.org 已提交
198 199 200 201
	cache_test \
	coding_test \
	corruption_test \
	crc32c_test \
202
	slice_transform_test \
J
jorlow@chromium.org 已提交
203 204
	dbformat_test \
	env_test \
205
	fault_injection_test \
J
Jim Paton 已提交
206
	filelock_test \
J
jorlow@chromium.org 已提交
207
	filename_test \
208 209
	block_based_filter_block_test \
	full_filter_block_test \
J
Jim Paton 已提交
210
	histogram_test \
J
jorlow@chromium.org 已提交
211
	log_test \
J
Jim Paton 已提交
212
	manual_compaction_test \
H
Hans Wennborg 已提交
213
	memenv_test \
214
	mock_env_test \
J
Jim Paton 已提交
215
	merge_test \
I
Igor Canadi 已提交
216
	merger_test \
J
Jim Paton 已提交
217 218
	redis_test \
	reduce_levels_test \
S
Siying Dong 已提交
219
	plain_table_db_test \
220
	comparator_db_test \
I
Igor Canadi 已提交
221
	prefix_test \
J
jorlow@chromium.org 已提交
222
	skiplist_test \
J
Jim Paton 已提交
223
	stringappend_test \
224
	ttl_test \
I
Igor Canadi 已提交
225
	backupable_db_test \
I
Igor Canadi 已提交
226
	document_db_test \
I
Igor Canadi 已提交
227
	json_document_test \
I
Igor Canadi 已提交
228
	spatial_db_test \
J
jorlow@chromium.org 已提交
229
	version_edit_test \
230
	version_set_test \
L
Lei Jin 已提交
231
	compaction_picker_test \
S
sdong 已提交
232
	version_builder_test \
233
	file_indexer_test \
234 235
	write_batch_test \
	write_controller_test\
K
kailiu 已提交
236
	deletefile_test \
L
Lei Jin 已提交
237
	table_test \
238
	thread_local_test \
239
	geodb_test \
L
Lei Jin 已提交
240
	rate_limiter_test \
241
	options_test \
I
Igor Canadi 已提交
242
	event_logger_test \
243 244
	cuckoo_table_builder_test \
	cuckoo_table_reader_test \
245
	cuckoo_table_db_test \
I
Igor Canadi 已提交
246
	flush_job_test \
247 248
	wal_manager_test \
	listener_test \
Y
Yueh-Hsuan Chiang 已提交
249
	compaction_job_test \
250
	thread_list_test \
251 252
	sst_dump_test \
	compact_files_test
253

254 255
SUBSET :=  $(shell echo $(TESTS) |sed s/^.*$(ROCKSDBTESTS_START)/$(ROCKSDBTESTS_START)/)

256
TOOLS = \
257
        sst_dump \
I
Igor Canadi 已提交
258
	db_sanity_test \
259 260
        db_stress \
        ldb \
I
Igor Canadi 已提交
261
	db_repl_stress \
262
	options_test \
J
jorlow@chromium.org 已提交
263

A
Ameya Gupte 已提交
264
PROGRAMS = db_bench signal_test table_reader_bench log_and_apply_bench cache_bench perf_context_test memtablerep_bench $(TOOLS)
J
jorlow@chromium.org 已提交
265

266 267
# The library name is configurable since we are maintaining libraries of both
# debug/release mode.
268 269 270
ifeq ($(LIBNAME),)
        LIBNAME=librocksdb
endif
271
LIBRARY = ${LIBNAME}.a
272

273 274 275
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)
276

277 278
default: all

279 280 281
#-----------------------------------------------
# Create platform independent shared libraries.
#-----------------------------------------------
282
ifneq ($(PLATFORM_SHARED_EXT),)
H
heyongqiang 已提交
283 284

ifneq ($(PLATFORM_SHARED_VERSIONED),true)
285
SHARED1 = ${LIBNAME}.$(PLATFORM_SHARED_EXT)
H
heyongqiang 已提交
286 287
SHARED2 = $(SHARED1)
SHARED3 = $(SHARED1)
288
SHARED4 = $(SHARED1)
H
heyongqiang 已提交
289 290
SHARED = $(SHARED1)
else
291 292
SHARED_MAJOR = $(ROCKSDB_MAJOR)
SHARED_MINOR = $(ROCKSDB_MINOR)
293
SHARED_PATCH = $(ROCKSDB_PATCH)
294
SHARED1 = ${LIBNAME}.$(PLATFORM_SHARED_EXT)
295 296
SHARED2 = $(SHARED1).$(SHARED_MAJOR)
SHARED3 = $(SHARED1).$(SHARED_MAJOR).$(SHARED_MINOR)
297 298 299 300 301 302 303 304
SHARED4 = $(SHARED1).$(SHARED_MAJOR).$(SHARED_MINOR).$(SHARED_PATCH)
SHARED = $(SHARED1) $(SHARED2) $(SHARED3) $(SHARED4)
$(SHARED1): $(SHARED4)
	ln -fs $(SHARED4) $(SHARED1)
$(SHARED2): $(SHARED4)
	ln -fs $(SHARED4) $(SHARED2)
$(SHARED3): $(SHARED4)
	ln -fs $(SHARED4) $(SHARED3)
305 306
endif

307
$(SHARED4):
308
	$(CXX) $(PLATFORM_SHARED_LDFLAGS)$(SHARED2) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(LIB_SOURCES) $(LDFLAGS) -o $@
H
heyongqiang 已提交
309 310 311

endif  # PLATFORM_SHARED_EXT

312
.PHONY: blackbox_crash_test check clean coverage crash_test ldb_tests package \
I
Igor Canadi 已提交
313
	release tags valgrind_check whitebox_crash_test format static_lib shared_lib all \
314
	dbg rocksdbjavastatic rocksdbjava install uninstall analyze
315

316
all: $(LIBRARY) $(PROGRAMS) $(TESTS)
317

I
Igor Canadi 已提交
318 319 320 321
static_lib: $(LIBRARY)

shared_lib: $(SHARED)

322
dbg: $(LIBRARY) $(PROGRAMS) $(TESTS)
K
Kai Liu 已提交
323

324
# creates static library and programs
325
release:
K
Kai Liu 已提交
326
	$(MAKE) clean
327
	OPT="-DNDEBUG -O2" $(MAKE) static_lib $(PROGRAMS) -j32
K
Kai Liu 已提交
328 329 330

coverage:
	$(MAKE) clean
331
	COVERAGEFLAGS="-fprofile-arcs -ftest-coverage" LDFLAGS+="-lgcov" $(MAKE) all check -j32
K
Kai Liu 已提交
332 333
	(cd coverage; ./coverage_test.sh)
	# Delete intermediate files
334
	find . -type f -regex ".*\.\(\(gcda\)\|\(gcno\)\)" -exec rm {} \;
J
jorlow@chromium.org 已提交
335

336
check: $(TESTS) $(PROGRAMS)
J
jorlow@chromium.org 已提交
337
	for t in $(TESTS); do echo "***** Running $$t"; ./$$t || exit 1; done
I
Igor Canadi 已提交
338
	python tools/ldb_test.py
J
jorlow@chromium.org 已提交
339

340 341 342 343
check_some: $(SUBSET) ldb
	for t in $(SUBSET); do echo "***** Running $$t"; ./$$t || exit 1; done
	python tools/ldb_test.py

344
ldb_tests: ldb
345 346
	python tools/ldb_test.py

I
Igor Canadi 已提交
347
crash_test: whitebox_crash_test blackbox_crash_test
348 349

blackbox_crash_test: db_stress
350
	python -u tools/db_crashtest.py
351 352

whitebox_crash_test: db_stress
353
	python -u tools/db_crashtest2.py
354

I
Igor Canadi 已提交
355 356 357
asan_check:
	$(MAKE) clean
	COMPILE_WITH_ASAN=1 $(MAKE) check -j32
358 359 360 361
	$(MAKE) clean

asan_crash_test:
	$(MAKE) clean
I
Igor Canadi 已提交
362
	COMPILE_WITH_ASAN=1 $(MAKE) crash_test
I
Igor Canadi 已提交
363 364
	$(MAKE) clean

365
valgrind_check: all $(PROGRAMS) $(TESTS)
366
	mkdir -p $(VALGRIND_DIR)
367 368 369 370
	echo TESTS THAT HAVE VALGRIND ERRORS > $(VALGRIND_DIR)/valgrind_failed_tests; \
	echo TIMES in seconds TAKEN BY TESTS ON VALGRIND > $(VALGRIND_DIR)/valgrind_tests_times; \
	for t in $(filter-out skiplist_test,$(TESTS)); do \
		stime=`date '+%s'`; \
371
		$(VALGRIND_VER) $(VALGRIND_OPTS) ./$$t; \
372 373 374 375 376 377
		if [ $$? -eq $(VALGRIND_ERROR) ] ; then \
			echo $$t >> $(VALGRIND_DIR)/valgrind_failed_tests; \
		fi; \
		etime=`date '+%s'`; \
		echo $$t $$((etime - stime)) >> $(VALGRIND_DIR)/valgrind_tests_times; \
	done
378

379 380 381 382 383
analyze: clean
	$(CLANG_SCAN_BUILD) --use-analyzer=$(CLANG_ANALYZER) \
		--use-c++=$(CXX) --use-cc=$(CC) --status-bugs \
		-o $(CURDIR)/scan_build_report \
		$(MAKE) dbg
384

L
Lei Jin 已提交
385
unity.cc:
I
Igor Sugak 已提交
386 387 388 389 390 391 392
	rm -f $@ $@-t
	for source_file in $(LIB_SOURCES); do \
		echo "#include <$$source_file>" >> $@-t; \
	done
	echo 'int main(int argc, char** argv){ return 0; }' >> $@-t
	chmod a=r $@-t
	mv $@-t $@
M
miguelportilla 已提交
393

394
unity: unity.o
395
	$(AM_LINK)
M
miguelportilla 已提交
396

J
jorlow@chromium.org 已提交
397
clean:
398 399 400 401
	rm -f $(PROGRAMS) $(TESTS) $(LIBRARY) $(SHARED) make_config.mk unity.cc
	rm -rf ios-x86 ios-arm scan_build_report
	find . -name "*.[oda]" -exec rm {} \;
	find . -type f -regex ".*\.\(\(gcda\)\|\(gcno\)\)" -exec rm {} \;
402
	rm -rf bzip2* snappy* zlib* lz4*
403

404 405 406
tags:
	ctags * -R
	cscope -b `find . -name '*.cc'` `find . -name '*.h'`
407

408 409 410
format:
	build_tools/format-diff.sh

411 412 413
package:
	bash build_tools/make_package.sh $(SHARED_MAJOR).$(SHARED_MINOR)

414 415 416
# ---------------------------------------------------------------------------
# 	Unit tests and tools
# ---------------------------------------------------------------------------
417
$(LIBRARY): $(LIBOBJECTS)
J
Jim Meyering 已提交
418 419
	$(AM_V_AR)rm -f $@
	$(AM_V_at)$(AR) $(ARFLAGS) $@ $(LIBOBJECTS)
J
jorlow@chromium.org 已提交
420

421
db_bench: db/db_bench.o $(LIBOBJECTS) $(TESTUTIL)
422
	$(AM_LINK)
J
jorlow@chromium.org 已提交
423

F
Feng Zhu 已提交
424
cache_bench: util/cache_bench.o $(LIBOBJECTS) $(TESTUTIL)
425
	$(AM_LINK)
J
jorlow@chromium.org 已提交
426

A
Ameya Gupte 已提交
427
memtablerep_bench: db/memtablerep_bench.o $(LIBOBJECTS) $(TESTUTIL)
428
	$(AM_LINK)
A
Ameya Gupte 已提交
429

K
kailiu 已提交
430
block_hash_index_test: table/block_hash_index_test.o $(LIBOBJECTS) $(TESTHARNESS)
431
	$(AM_LINK)
K
kailiu 已提交
432

433
db_stress: tools/db_stress.o $(LIBOBJECTS) $(TESTUTIL)
434
	$(AM_LINK)
435

I
Igor Canadi 已提交
436
db_sanity_test: tools/db_sanity_test.o $(LIBOBJECTS) $(TESTUTIL)
437
	$(AM_LINK)
438

439
db_repl_stress: tools/db_repl_stress.o $(LIBOBJECTS) $(TESTUTIL)
440
	$(AM_LINK)
441

442
signal_test: util/signal_test.o $(LIBOBJECTS)
443
	$(AM_LINK)
444

J
jorlow@chromium.org 已提交
445
arena_test: util/arena_test.o $(LIBOBJECTS) $(TESTHARNESS)
446
	$(AM_LINK)
J
jorlow@chromium.org 已提交
447

K
kailiu 已提交
448
autovector_test: util/autovector_test.o $(LIBOBJECTS) $(TESTHARNESS)
449
	$(AM_LINK)
K
kailiu 已提交
450

451
column_family_test: db/column_family_test.o $(LIBOBJECTS) $(TESTHARNESS)
452
	$(AM_LINK)
453

K
kailiu 已提交
454
table_properties_collector_test: db/table_properties_collector_test.o $(LIBOBJECTS) $(TESTHARNESS)
455
	$(AM_LINK)
456

S
Sanjay Ghemawat 已提交
457
bloom_test: util/bloom_test.o $(LIBOBJECTS) $(TESTHARNESS)
458
	$(AM_LINK)
S
Sanjay Ghemawat 已提交
459

460
dynamic_bloom_test: util/dynamic_bloom_test.o $(LIBOBJECTS) $(TESTHARNESS)
461
	$(AM_LINK)
462

463
c_test: db/c_test.o $(LIBOBJECTS) $(TESTHARNESS)
464
	$(AM_LINK)
465

J
jorlow@chromium.org 已提交
466
cache_test: util/cache_test.o $(LIBOBJECTS) $(TESTHARNESS)
467
	$(AM_LINK)
J
jorlow@chromium.org 已提交
468 469

coding_test: util/coding_test.o $(LIBOBJECTS) $(TESTHARNESS)
470
	$(AM_LINK)
J
jorlow@chromium.org 已提交
471

472
stringappend_test: utilities/merge_operators/string_append/stringappend_test.o $(LIBOBJECTS) $(TESTHARNESS)
473
	$(AM_LINK)
474

475
redis_test: utilities/redis/redis_lists_test.o $(LIBOBJECTS) $(TESTHARNESS)
476
	$(AM_LINK)
477

478
benchharness_test: util/benchharness_test.o $(LIBOBJECTS) $(TESTHARNESS) $(BENCHHARNESS)
479
	$(AM_LINK)
480

A
Abhishek Kona 已提交
481
histogram_test: util/histogram_test.o $(LIBOBJECTS) $(TESTHARNESS)
482
	$(AM_LINK)
A
Abhishek Kona 已提交
483

L
Lei Jin 已提交
484
thread_local_test: util/thread_local_test.o $(LIBOBJECTS) $(TESTHARNESS)
485
	$(AM_LINK)
L
Lei Jin 已提交
486

J
jorlow@chromium.org 已提交
487
corruption_test: db/corruption_test.o $(LIBOBJECTS) $(TESTHARNESS)
488
	$(AM_LINK)
J
jorlow@chromium.org 已提交
489 490

crc32c_test: util/crc32c_test.o $(LIBOBJECTS) $(TESTHARNESS)
491
	$(AM_LINK)
J
jorlow@chromium.org 已提交
492

493
slice_transform_test: util/slice_transform_test.o $(LIBOBJECTS) $(TESTHARNESS)
494
	$(AM_LINK)
495 496


J
jorlow@chromium.org 已提交
497
db_test: db/db_test.o $(LIBOBJECTS) $(TESTHARNESS)
498
	$(AM_LINK)
J
jorlow@chromium.org 已提交
499

S
Stanislau Hlebik 已提交
500
db_iter_test: db/db_iter_test.o $(LIBOBJECTS) $(TESTHARNESS)
501
	$(AM_LINK)
S
Stanislau Hlebik 已提交
502

503
log_write_bench: util/log_write_bench.o $(LIBOBJECTS) $(TESTHARNESS)
504
	$(AM_LINK) $(pg)
505

S
Siying Dong 已提交
506
plain_table_db_test: db/plain_table_db_test.o $(LIBOBJECTS) $(TESTHARNESS)
507
	$(AM_LINK)
S
Siying Dong 已提交
508

509
comparator_db_test: db/comparator_db_test.o $(LIBOBJECTS) $(TESTHARNESS)
510
	$(AM_LINK)
511

512
table_reader_bench: table/table_reader_bench.o $(LIBOBJECTS) $(TESTHARNESS)
513
	$(AM_LINK) $(pg)
514

515
log_and_apply_bench: db/log_and_apply_bench.o $(LIBOBJECTS) $(TESTHARNESS) $(BENCHHARNESS)
516
	$(AM_LINK) $(pg)
517

518
perf_context_test: db/perf_context_test.o $(LIBOBJECTS) $(TESTHARNESS)
519
	$(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS)
520

H
Haobo Xu 已提交
521
prefix_test: db/prefix_test.o $(LIBOBJECTS) $(TESTHARNESS)
522
	$(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ $(LDFLAGS)
H
Haobo Xu 已提交
523

I
Igor Canadi 已提交
524
backupable_db_test: utilities/backupable/backupable_db_test.o $(LIBOBJECTS) $(TESTHARNESS)
525
	$(AM_LINK)
I
Igor Canadi 已提交
526

I
Igor Canadi 已提交
527
document_db_test: utilities/document/document_db_test.o $(LIBOBJECTS) $(TESTHARNESS)
528
	$(AM_LINK)
I
Igor Canadi 已提交
529

I
Igor Canadi 已提交
530
json_document_test: utilities/document/json_document_test.o $(LIBOBJECTS) $(TESTHARNESS)
531
	$(AM_LINK)
I
Igor Canadi 已提交
532

I
Igor Canadi 已提交
533
spatial_db_test: utilities/spatialdb/spatial_db_test.o $(LIBOBJECTS) $(TESTHARNESS)
534
	$(AM_LINK)
I
Igor Canadi 已提交
535

536
ttl_test: utilities/ttl/ttl_test.o $(LIBOBJECTS) $(TESTHARNESS)
537
	$(AM_LINK)
538

539
write_batch_with_index_test: utilities/write_batch_with_index/write_batch_with_index_test.o $(LIBOBJECTS) $(TESTHARNESS)
540
	$(AM_LINK)
541

I
Igor Canadi 已提交
542
flush_job_test: db/flush_job_test.o $(LIBOBJECTS) $(TESTHARNESS)
543
	$(AM_LINK)
I
Igor Canadi 已提交
544

I
Igor Canadi 已提交
545
compaction_job_test: db/compaction_job_test.o $(LIBOBJECTS) $(TESTHARNESS)
546
	$(AM_LINK)
I
Igor Canadi 已提交
547

I
Igor Canadi 已提交
548
wal_manager_test: db/wal_manager_test.o $(LIBOBJECTS) $(TESTHARNESS)
549
	$(AM_LINK)
I
Igor Canadi 已提交
550

J
jorlow@chromium.org 已提交
551
dbformat_test: db/dbformat_test.o $(LIBOBJECTS) $(TESTHARNESS)
552
	$(AM_LINK)
J
jorlow@chromium.org 已提交
553 554

env_test: util/env_test.o $(LIBOBJECTS) $(TESTHARNESS)
555
	$(AM_LINK)
J
jorlow@chromium.org 已提交
556

557
fault_injection_test: db/fault_injection_test.o $(LIBOBJECTS) $(TESTHARNESS)
558
	$(AM_LINK)
559

L
Lei Jin 已提交
560
rate_limiter_test: util/rate_limiter_test.o $(LIBOBJECTS) $(TESTHARNESS)
561
	$(AM_LINK)
L
Lei Jin 已提交
562

J
jorlow@chromium.org 已提交
563
filename_test: db/filename_test.o $(LIBOBJECTS) $(TESTHARNESS)
564
	$(AM_LINK)
J
jorlow@chromium.org 已提交
565

566
block_based_filter_block_test: table/block_based_filter_block_test.o $(LIBOBJECTS) $(TESTHARNESS)
567
	$(AM_LINK)
568 569

full_filter_block_test: table/full_filter_block_test.o $(LIBOBJECTS) $(TESTHARNESS)
570
	$(AM_LINK)
S
Sanjay Ghemawat 已提交
571

J
jorlow@chromium.org 已提交
572
log_test: db/log_test.o $(LIBOBJECTS) $(TESTHARNESS)
573
	$(AM_LINK)
J
jorlow@chromium.org 已提交
574 575

table_test: table/table_test.o $(LIBOBJECTS) $(TESTHARNESS)
576
	$(AM_LINK)
J
jorlow@chromium.org 已提交
577

D
Dhruba Borthakur 已提交
578
block_test: table/block_test.o $(LIBOBJECTS) $(TESTHARNESS)
579
	$(AM_LINK)
D
Dhruba Borthakur 已提交
580

J
jorlow@chromium.org 已提交
581
skiplist_test: db/skiplist_test.o $(LIBOBJECTS) $(TESTHARNESS)
582
	$(AM_LINK)
J
jorlow@chromium.org 已提交
583 584

version_edit_test: db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS)
585
	$(AM_LINK)
J
jorlow@chromium.org 已提交
586

587
version_set_test: db/version_set_test.o $(LIBOBJECTS) $(TESTHARNESS)
588
	$(AM_LINK)
589

S
sdong 已提交
590
compaction_picker_test: db/compaction_picker_test.o $(LIBOBJECTS) $(TESTHARNESS)
591
	$(AM_LINK)
S
sdong 已提交
592

S
sdong 已提交
593
version_builder_test: db/version_builder_test.o $(LIBOBJECTS) $(TESTHARNESS)
594
	$(AM_LINK)
S
sdong 已提交
595

596
file_indexer_test: db/file_indexer_test.o $(LIBOBJECTS) $(TESTHARNESS)
597
	$(AM_LINK)
598

599
reduce_levels_test: tools/reduce_levels_test.o $(LIBOBJECTS) $(TESTHARNESS)
600
	$(AM_LINK)
601

J
jorlow@chromium.org 已提交
602
write_batch_test: db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS)
603
	$(AM_LINK)
604

605
write_controller_test: db/write_controller_test.o $(LIBOBJECTS) $(TESTHARNESS)
606
	$(AM_LINK)
607

J
Jim Paton 已提交
608
merge_test: db/merge_test.o $(LIBOBJECTS) $(TESTHARNESS)
609
	$(AM_LINK)
J
jorlow@chromium.org 已提交
610

I
Igor Canadi 已提交
611
merger_test: table/merger_test.o $(LIBOBJECTS) $(TESTHARNESS)
612
	$(AM_LINK)
I
Igor Canadi 已提交
613

614
deletefile_test: db/deletefile_test.o $(LIBOBJECTS) $(TESTHARNESS)
615
	$(AM_LINK)
616

617
geodb_test: utilities/geodb/geodb_test.o $(LIBOBJECTS) $(TESTHARNESS)
618
	$(AM_LINK)
619

620
cuckoo_table_builder_test: table/cuckoo_table_builder_test.o $(LIBOBJECTS) $(TESTHARNESS)
621
	$(AM_LINK)
622

623
cuckoo_table_reader_test: table/cuckoo_table_reader_test.o $(LIBOBJECTS) $(TESTHARNESS) $(BENCHHARNESS)
624
	$(AM_LINK)
625

626
cuckoo_table_db_test: db/cuckoo_table_db_test.o $(LIBOBJECTS) $(TESTHARNESS)
627
	$(AM_LINK)
628

629
listener_test: db/listener_test.o $(LIBOBJECTS) $(TESTHARNESS)
630
	$(AM_LINK)
631

Y
Yueh-Hsuan Chiang 已提交
632
thread_list_test: util/thread_list_test.o $(LIBOBJECTS) $(TESTHARNESS)
633
	$(AM_LINK)
Y
Yueh-Hsuan Chiang 已提交
634

635
compactor_test: utilities/compaction/compactor_test.o $(LIBOBJECTS) $(TESTHARNESS)
636
	$(AM_LINK)
637

638 639 640
compact_files_test: db/compact_files_test.o $(LIBOBJECTS) $(TESTHARNESS)
	$(AM_LINK)

641
options_test: util/options_test.o $(LIBOBJECTS) $(TESTHARNESS)
642
	$(AM_LINK)
643

I
Igor Canadi 已提交
644 645 646
event_logger_test: util/event_logger_test.o $(LIBOBJECTS) $(TESTHARNESS)
	$(AM_LINK)

647
sst_dump_test: util/sst_dump_test.o $(LIBOBJECTS) $(TESTHARNESS)
648
	$(AM_LINK)
649

650
memenv_test : util/memenv_test.o $(LIBOBJECTS) $(TESTHARNESS)
651
	$(AM_LINK)
H
Hans Wennborg 已提交
652

653
mock_env_test : util/mock_env_test.o $(LIBOBJECTS) $(TESTHARNESS)
654
	$(AM_LINK)
655

656
manual_compaction_test: util/manual_compaction_test.o $(LIBOBJECTS) $(TESTHARNESS)
657
	$(AM_LINK)
658

659
filelock_test: util/filelock_test.o $(LIBOBJECTS) $(TESTHARNESS)
660
	$(AM_LINK)
K
Kai Liu 已提交
661 662

auto_roll_logger_test: util/auto_roll_logger_test.o $(LIBOBJECTS) $(TESTHARNESS)
663
	$(AM_LINK)
664

665
sst_dump: tools/sst_dump.o $(LIBOBJECTS)
666
	$(AM_LINK)
667

668
ldb: tools/ldb.o $(LIBOBJECTS)
669
	$(AM_LINK)
670

671 672 673 674
# ---------------------------------------------------------------------------
# Jni stuff
# ---------------------------------------------------------------------------

A
Ankit Gupta 已提交
675
JNI_NATIVE_SOURCES = ./java/rocksjni/*.cc
676
JAVA_INCLUDE = -I$(JAVA_HOME)/include/ -I$(JAVA_HOME)/include/linux
677 678
ARCH := $(shell getconf LONG_BIT)
ROCKSDBJNILIB = librocksdbjni-linux$(ARCH).so
679
ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-linux$(ARCH).jar
680
ROCKSDB_JAR_ALL = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH).jar
C
Chris Riccomini 已提交
681
ROCKSDB_JAVADOCS_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-javadoc.jar
682
ROCKSDB_SOURCES_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-sources.jar
683 684

ifeq ($(PLATFORM), OS_MACOSX)
685
ROCKSDBJNILIB = librocksdbjni-osx.jnilib
686
ROCKSDB_JAR = rocksdbjni-$(ROCKSDB_MAJOR).$(ROCKSDB_MINOR).$(ROCKSDB_PATCH)-osx.jar
687 688 689 690 691
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
692 693
endif

N
Naveen 已提交
694 695
libz.a:
	-rm -rf zlib-1.2.8
N
Naveen 已提交
696 697 698
	curl -O http://zlib.net/zlib-1.2.8.tar.gz
	tar xvzf zlib-1.2.8.tar.gz
	cd zlib-1.2.8 && CFLAGS='-fPIC' ./configure --static && make
699
	cp zlib-1.2.8/libz.a .
N
Naveen 已提交
700 701 702

libbz2.a:
	-rm -rf bzip2-1.0.6
703
	curl -O  http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
N
Naveen 已提交
704 705 706 707
	tar xvzf bzip2-1.0.6.tar.gz
	cd bzip2-1.0.6 && make CFLAGS='-fPIC -Wall -Winline -O2 -g -D_FILE_OFFSET_BITS=64'
	cp bzip2-1.0.6/libbz2.a .

N
Naveen 已提交
708 709
libsnappy.a:
	-rm -rf snappy-1.1.1
N
Naveen 已提交
710 711
	curl -O https://snappy.googlecode.com/files/snappy-1.1.1.tar.gz
	tar xvzf snappy-1.1.1.tar.gz
N
Naveen 已提交
712
	cd snappy-1.1.1 && ./configure --with-pic --enable-static
N
Naveen 已提交
713 714
	cd snappy-1.1.1 && make
	cp snappy-1.1.1/.libs/libsnappy.a .
715

716 717 718 719 720 721 722
liblz4.a:
	   -rm -rf lz4-r127
	   curl -O https://codeload.github.com/Cyan4973/lz4/tar.gz/r127
	   mv r127 lz4-r127.tar.gz
	   tar xvzf lz4-r127.tar.gz
	   cd lz4-r127/lib && make CFLAGS='-fPIC' all
	   cp lz4-r127/lib/liblz4.a .
N
Naveen 已提交
723

724 725

rocksdbjavastatic: libz.a libbz2.a libsnappy.a liblz4.a
N
Naveen 已提交
726
	OPT="-fPIC -DNDEBUG -O2" $(MAKE) $(LIBRARY) -j
F
fyrz 已提交
727
	cd java;$(MAKE) javalib;
728
	rm -f ./java/target/$(ROCKSDBJNILIB)
729
	$(CXX) $(CXXFLAGS) -I./java/. $(JAVA_INCLUDE) -shared -fPIC -o ./java/target/$(ROCKSDBJNILIB) $(JNI_NATIVE_SOURCES) $(LIBOBJECTS) $(COVERAGEFLAGS) libz.a libbz2.a libsnappy.a liblz4.a
730 731 732 733 734 735
	cd java/target;strip -S -x $(ROCKSDBJNILIB)
	cd java;jar -cf target/$(ROCKSDB_JAR) HISTORY*.md
	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 已提交
736

737
rocksdbjavastaticrelease: rocksdbjavastatic
738
	cd java/crossbuild && vagrant destroy -f && vagrant up linux32 && vagrant halt linux32 && vagrant up linux64 && vagrant halt linux64
739 740 741
	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
742

743
rocksdbjavastaticpublish: rocksdbjavastaticrelease
744 745 746 747 748 749
	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
	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
750

A
Ankit Gupta 已提交
751
rocksdbjava:
752
	OPT="-fPIC -DNDEBUG -O2" $(MAKE) $(LIBRARY) -j32
F
fyrz 已提交
753
	cd java;$(MAKE) javalib;
754 755 756 757 758
	rm -f ./java/target/$(ROCKSDBJNILIB)
	$(CXX) $(CXXFLAGS) -I./java/. $(JAVA_INCLUDE) -shared -fPIC -o ./java/target/$(ROCKSDBJNILIB) $(JNI_NATIVE_SOURCES) $(LIBOBJECTS) $(JAVA_LDFLAGS) $(COVERAGEFLAGS)
	cd java;jar -cf target/$(ROCKSDB_JAR) HISTORY*.md
	cd java/target;jar -uf $(ROCKSDB_JAR) $(ROCKSDBJNILIB)
	cd java/target/classes;jar -uf ../$(ROCKSDB_JAR) org/rocksdb/*.class org/rocksdb/util/*.class
759 760 761 762 763

jclean:
	cd java;$(MAKE) clean;

jtest:
764
	cd java;$(MAKE) sample;$(MAKE) test;
765

766 767 768
jdb_bench:
	cd java;$(MAKE) db_bench;

769 770 771 772 773 774
commit-prereq:
	$(MAKE) clean && $(MAKE) all check;
	$(MAKE) clean && $(MAKE) rocksdbjava;
	$(MAKE) clean && USE_CLANG=1 $(MAKE) all;
	$(MAKE) clean && OPT=-DROCKSDB_LITE $(MAKE) release;

775 776 777
# ---------------------------------------------------------------------------
#  	Platform-specific compilation
# ---------------------------------------------------------------------------
J
Jim Paton 已提交
778

779 780 781
ifeq ($(PLATFORM), IOS)
# For iOS, create universal object files to be used on both the simulator and
# a device.
H
heyongqiang 已提交
782 783 784
PLATFORMSROOT=/Applications/Xcode.app/Contents/Developer/Platforms
SIMULATORROOT=$(PLATFORMSROOT)/iPhoneSimulator.platform/Developer
DEVICEROOT=$(PLATFORMSROOT)/iPhoneOS.platform/Developer
I
Igor Canadi 已提交
785
IOSVERSION=$(shell defaults read $(PLATFORMSROOT)/iPhoneOS.platform/version CFBundleShortVersionString)
786

787 788
.cc.o:
	mkdir -p ios-x86/$(dir $@)
I
Igor Canadi 已提交
789
	$(CXX) $(CXXFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 -arch x86_64 -c $< -o ios-x86/$@
790
	mkdir -p ios-arm/$(dir $@)
I
Igor Canadi 已提交
791
	xcrun -sdk iphoneos $(CXX) $(CXXFLAGS) -isysroot $(DEVICEROOT)/SDKs/iPhoneOS$(IOSVERSION).sdk -arch armv6 -arch armv7 -arch armv7s -arch arm64 -c $< -o ios-arm/$@
792
	lipo ios-x86/$@ ios-arm/$@ -create -output $@
793 794 795

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

801
else
J
jorlow@chromium.org 已提交
802
.cc.o:
803
	$(AM_V_CC)$(CXX) $(CXXFLAGS) -c $< -o $@ $(COVERAGEFLAGS)
804 805

.c.o:
806
	$(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@
807
endif
808

809 810 811 812 813 814 815 816 817
# ---------------------------------------------------------------------------
#  	Source files dependencies detection
# ---------------------------------------------------------------------------

# 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.
818
%.d: %.cc
819
	@$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \
820
	  -MM -MT'$@' -MT'$(<:.cc=.o)' "$<" -o '$@'
821

822 823
all_sources = $(LIB_SOURCES) $(TEST_BENCH_SOURCES) $(MOCK_SOURCES)
DEPFILES = $(all_sources:.cc=.d)
824 825 826

depend: $(DEPFILES)

827 828 829 830
# 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.
831
ifneq ($(MAKECMDGOALS),clean)
832
ifneq ($(MAKECMDGOALS),format)
833 834
ifneq ($(MAKECMDGOALS),jclean)
ifneq ($(MAKECMDGOALS),jtest)
835
ifneq ($(MAKECMDGOALS),package)
836
ifneq ($(MAKECMDGOALS),analyze)
837 838
-include $(DEPFILES)
endif
839
endif
840 841
endif
endif
842
endif
843
endif