1# Copyright (c) 2011 The LevelDB Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. See the AUTHORS file for names of contributors. 4 5#----------------------------------------------- 6# Uncomment exactly one of the lines labelled (A), (B), and (C) below 7# to switch between compilation modes. 8 9# (A) Production use (optimized mode) 10OPT ?= -O2 -DNDEBUG 11# (B) Debug mode, w/ full line-level debugging symbols 12# OPT ?= -g2 13# (C) Profiling mode: opt, but w/debugging symbols 14# OPT ?= -O2 -g2 -DNDEBUG 15#----------------------------------------------- 16 17# detect what platform we're building on 18$(shell CC="$(CC)" CXX="$(CXX)" TARGET_OS="$(TARGET_OS)" \ 19 ./build_detect_platform build_config.mk ./) 20# this file is generated by the previous line to set build flags and sources 21include build_config.mk 22 23TESTS = \ 24 db/autocompact_test \ 25 db/c_test \ 26 db/corruption_test \ 27 db/db_test \ 28 db/dbformat_test \ 29 db/fault_injection_test \ 30 db/filename_test \ 31 db/log_test \ 32 db/recovery_test \ 33 db/skiplist_test \ 34 db/version_edit_test \ 35 db/version_set_test \ 36 db/write_batch_test \ 37 helpers/memenv/memenv_test \ 38 issues/issue178_test \ 39 issues/issue200_test \ 40 table/filter_block_test \ 41 table/table_test \ 42 util/arena_test \ 43 util/bloom_test \ 44 util/cache_test \ 45 util/coding_test \ 46 util/crc32c_test \ 47 util/env_posix_test \ 48 util/env_test \ 49 util/hash_test 50 51UTILS = \ 52 db/db_bench \ 53 db/leveldbutil 54 55# Put the object files in a subdirectory, but the application at the top of the object dir. 56PROGNAMES := $(notdir $(TESTS) $(UTILS)) 57 58# On Linux may need libkyotocabinet-dev for dependency. 59BENCHMARKS = \ 60 doc/bench/db_bench_sqlite3 \ 61 doc/bench/db_bench_tree_db 62 63CFLAGS += -I. -I./include $(PLATFORM_CCFLAGS) $(OPT) 64CXXFLAGS += -I. -I./include $(PLATFORM_CXXFLAGS) $(OPT) 65 66LDFLAGS += $(PLATFORM_LDFLAGS) 67LIBS += $(PLATFORM_LIBS) 68 69SIMULATOR_OUTDIR=out-ios-x86 70DEVICE_OUTDIR=out-ios-arm 71 72ifeq ($(PLATFORM), IOS) 73# Note: iOS should probably be using libtool, not ar. 74AR=xcrun ar 75SIMULATORSDK=$(shell xcrun -sdk iphonesimulator --show-sdk-path) 76DEVICESDK=$(shell xcrun -sdk iphoneos --show-sdk-path) 77DEVICE_CFLAGS = -isysroot "$(DEVICESDK)" -arch armv6 -arch armv7 -arch armv7s -arch arm64 78SIMULATOR_CFLAGS = -isysroot "$(SIMULATORSDK)" -arch i686 -arch x86_64 79STATIC_OUTDIR=out-ios-universal 80else 81STATIC_OUTDIR=out-static 82SHARED_OUTDIR=out-shared 83STATIC_PROGRAMS := $(addprefix $(STATIC_OUTDIR)/, $(PROGNAMES)) 84SHARED_PROGRAMS := $(addprefix $(SHARED_OUTDIR)/, db_bench) 85endif 86 87STATIC_LIBOBJECTS := $(addprefix $(STATIC_OUTDIR)/, $(SOURCES:.cc=.o)) 88STATIC_MEMENVOBJECTS := $(addprefix $(STATIC_OUTDIR)/, $(MEMENV_SOURCES:.cc=.o)) 89 90DEVICE_LIBOBJECTS := $(addprefix $(DEVICE_OUTDIR)/, $(SOURCES:.cc=.o)) 91DEVICE_MEMENVOBJECTS := $(addprefix $(DEVICE_OUTDIR)/, $(MEMENV_SOURCES:.cc=.o)) 92 93SIMULATOR_LIBOBJECTS := $(addprefix $(SIMULATOR_OUTDIR)/, $(SOURCES:.cc=.o)) 94SIMULATOR_MEMENVOBJECTS := $(addprefix $(SIMULATOR_OUTDIR)/, $(MEMENV_SOURCES:.cc=.o)) 95 96SHARED_LIBOBJECTS := $(addprefix $(SHARED_OUTDIR)/, $(SOURCES:.cc=.o)) 97SHARED_MEMENVOBJECTS := $(addprefix $(SHARED_OUTDIR)/, $(MEMENV_SOURCES:.cc=.o)) 98 99TESTUTIL := $(STATIC_OUTDIR)/util/testutil.o 100TESTHARNESS := $(STATIC_OUTDIR)/util/testharness.o $(TESTUTIL) 101 102STATIC_TESTOBJS := $(addprefix $(STATIC_OUTDIR)/, $(addsuffix .o, $(TESTS))) 103STATIC_UTILOBJS := $(addprefix $(STATIC_OUTDIR)/, $(addsuffix .o, $(UTILS))) 104STATIC_ALLOBJS := $(STATIC_LIBOBJECTS) $(STATIC_MEMENVOBJECTS) $(STATIC_TESTOBJS) $(STATIC_UTILOBJS) $(TESTHARNESS) 105DEVICE_ALLOBJS := $(DEVICE_LIBOBJECTS) $(DEVICE_MEMENVOBJECTS) 106SIMULATOR_ALLOBJS := $(SIMULATOR_LIBOBJECTS) $(SIMULATOR_MEMENVOBJECTS) 107 108default: all 109 110# Should we build shared libraries? 111ifneq ($(PLATFORM_SHARED_EXT),) 112 113# Many leveldb test apps use non-exported API's. Only build a subset for testing. 114SHARED_ALLOBJS := $(SHARED_LIBOBJECTS) $(SHARED_MEMENVOBJECTS) $(TESTHARNESS) 115 116ifneq ($(PLATFORM_SHARED_VERSIONED),true) 117SHARED_LIB1 = libleveldb.$(PLATFORM_SHARED_EXT) 118SHARED_LIB2 = $(SHARED_LIB1) 119SHARED_LIB3 = $(SHARED_LIB1) 120SHARED_LIBS = $(SHARED_LIB1) 121SHARED_MEMENVLIB = $(SHARED_OUTDIR)/libmemenv.a 122else 123# Update db.h if you change these. 124SHARED_VERSION_MAJOR = 1 125SHARED_VERSION_MINOR = 20 126SHARED_LIB1 = libleveldb.$(PLATFORM_SHARED_EXT) 127SHARED_LIB2 = $(SHARED_LIB1).$(SHARED_VERSION_MAJOR) 128SHARED_LIB3 = $(SHARED_LIB1).$(SHARED_VERSION_MAJOR).$(SHARED_VERSION_MINOR) 129SHARED_LIBS = $(SHARED_OUTDIR)/$(SHARED_LIB1) $(SHARED_OUTDIR)/$(SHARED_LIB2) $(SHARED_OUTDIR)/$(SHARED_LIB3) 130$(SHARED_OUTDIR)/$(SHARED_LIB1): $(SHARED_OUTDIR)/$(SHARED_LIB3) 131 ln -fs $(SHARED_LIB3) $(SHARED_OUTDIR)/$(SHARED_LIB1) 132$(SHARED_OUTDIR)/$(SHARED_LIB2): $(SHARED_OUTDIR)/$(SHARED_LIB3) 133 ln -fs $(SHARED_LIB3) $(SHARED_OUTDIR)/$(SHARED_LIB2) 134SHARED_MEMENVLIB = $(SHARED_OUTDIR)/libmemenv.a 135endif 136 137$(SHARED_OUTDIR)/$(SHARED_LIB3): $(SHARED_LIBOBJECTS) 138 $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$(SHARED_LIB2) $(SHARED_LIBOBJECTS) -o $(SHARED_OUTDIR)/$(SHARED_LIB3) $(LIBS) 139 140endif # PLATFORM_SHARED_EXT 141 142all: $(SHARED_LIBS) $(SHARED_PROGRAMS) $(STATIC_OUTDIR)/libleveldb.a $(STATIC_OUTDIR)/libmemenv.a $(STATIC_PROGRAMS) 143 144check: $(STATIC_PROGRAMS) 145 for t in $(notdir $(TESTS)); do echo "***** Running $$t"; $(STATIC_OUTDIR)/$$t || exit 1; done 146 147clean: 148 -rm -rf out-static out-shared out-ios-x86 out-ios-arm out-ios-universal 149 -rm -f build_config.mk 150 -rm -rf ios-x86 ios-arm 151 152$(STATIC_OUTDIR): 153 mkdir $@ 154 155$(STATIC_OUTDIR)/db: | $(STATIC_OUTDIR) 156 mkdir $@ 157 158$(STATIC_OUTDIR)/helpers/memenv: | $(STATIC_OUTDIR) 159 mkdir -p $@ 160 161$(STATIC_OUTDIR)/port: | $(STATIC_OUTDIR) 162 mkdir $@ 163 164$(STATIC_OUTDIR)/table: | $(STATIC_OUTDIR) 165 mkdir $@ 166 167$(STATIC_OUTDIR)/util: | $(STATIC_OUTDIR) 168 mkdir $@ 169 170.PHONY: STATIC_OBJDIRS 171STATIC_OBJDIRS: \ 172 $(STATIC_OUTDIR)/db \ 173 $(STATIC_OUTDIR)/port \ 174 $(STATIC_OUTDIR)/table \ 175 $(STATIC_OUTDIR)/util \ 176 $(STATIC_OUTDIR)/helpers/memenv 177 178$(SHARED_OUTDIR): 179 mkdir $@ 180 181$(SHARED_OUTDIR)/db: | $(SHARED_OUTDIR) 182 mkdir $@ 183 184$(SHARED_OUTDIR)/helpers/memenv: | $(SHARED_OUTDIR) 185 mkdir -p $@ 186 187$(SHARED_OUTDIR)/port: | $(SHARED_OUTDIR) 188 mkdir $@ 189 190$(SHARED_OUTDIR)/table: | $(SHARED_OUTDIR) 191 mkdir $@ 192 193$(SHARED_OUTDIR)/util: | $(SHARED_OUTDIR) 194 mkdir $@ 195 196.PHONY: SHARED_OBJDIRS 197SHARED_OBJDIRS: \ 198 $(SHARED_OUTDIR)/db \ 199 $(SHARED_OUTDIR)/port \ 200 $(SHARED_OUTDIR)/table \ 201 $(SHARED_OUTDIR)/util \ 202 $(SHARED_OUTDIR)/helpers/memenv 203 204$(DEVICE_OUTDIR): 205 mkdir $@ 206 207$(DEVICE_OUTDIR)/db: | $(DEVICE_OUTDIR) 208 mkdir $@ 209 210$(DEVICE_OUTDIR)/helpers/memenv: | $(DEVICE_OUTDIR) 211 mkdir -p $@ 212 213$(DEVICE_OUTDIR)/port: | $(DEVICE_OUTDIR) 214 mkdir $@ 215 216$(DEVICE_OUTDIR)/table: | $(DEVICE_OUTDIR) 217 mkdir $@ 218 219$(DEVICE_OUTDIR)/util: | $(DEVICE_OUTDIR) 220 mkdir $@ 221 222.PHONY: DEVICE_OBJDIRS 223DEVICE_OBJDIRS: \ 224 $(DEVICE_OUTDIR)/db \ 225 $(DEVICE_OUTDIR)/port \ 226 $(DEVICE_OUTDIR)/table \ 227 $(DEVICE_OUTDIR)/util \ 228 $(DEVICE_OUTDIR)/helpers/memenv 229 230$(SIMULATOR_OUTDIR): 231 mkdir $@ 232 233$(SIMULATOR_OUTDIR)/db: | $(SIMULATOR_OUTDIR) 234 mkdir $@ 235 236$(SIMULATOR_OUTDIR)/helpers/memenv: | $(SIMULATOR_OUTDIR) 237 mkdir -p $@ 238 239$(SIMULATOR_OUTDIR)/port: | $(SIMULATOR_OUTDIR) 240 mkdir $@ 241 242$(SIMULATOR_OUTDIR)/table: | $(SIMULATOR_OUTDIR) 243 mkdir $@ 244 245$(SIMULATOR_OUTDIR)/util: | $(SIMULATOR_OUTDIR) 246 mkdir $@ 247 248.PHONY: SIMULATOR_OBJDIRS 249SIMULATOR_OBJDIRS: \ 250 $(SIMULATOR_OUTDIR)/db \ 251 $(SIMULATOR_OUTDIR)/port \ 252 $(SIMULATOR_OUTDIR)/table \ 253 $(SIMULATOR_OUTDIR)/util \ 254 $(SIMULATOR_OUTDIR)/helpers/memenv 255 256$(STATIC_ALLOBJS): | STATIC_OBJDIRS 257$(DEVICE_ALLOBJS): | DEVICE_OBJDIRS 258$(SIMULATOR_ALLOBJS): | SIMULATOR_OBJDIRS 259$(SHARED_ALLOBJS): | SHARED_OBJDIRS 260 261ifeq ($(PLATFORM), IOS) 262$(DEVICE_OUTDIR)/libleveldb.a: $(DEVICE_LIBOBJECTS) 263 rm -f $@ 264 $(AR) -rs $@ $(DEVICE_LIBOBJECTS) 265 266$(SIMULATOR_OUTDIR)/libleveldb.a: $(SIMULATOR_LIBOBJECTS) 267 rm -f $@ 268 $(AR) -rs $@ $(SIMULATOR_LIBOBJECTS) 269 270$(DEVICE_OUTDIR)/libmemenv.a: $(DEVICE_MEMENVOBJECTS) 271 rm -f $@ 272 $(AR) -rs $@ $(DEVICE_MEMENVOBJECTS) 273 274$(SIMULATOR_OUTDIR)/libmemenv.a: $(SIMULATOR_MEMENVOBJECTS) 275 rm -f $@ 276 $(AR) -rs $@ $(SIMULATOR_MEMENVOBJECTS) 277 278# For iOS, create universal object libraries to be used on both the simulator and 279# a device. 280$(STATIC_OUTDIR)/libleveldb.a: $(STATIC_OUTDIR) $(DEVICE_OUTDIR)/libleveldb.a $(SIMULATOR_OUTDIR)/libleveldb.a 281 lipo -create $(DEVICE_OUTDIR)/libleveldb.a $(SIMULATOR_OUTDIR)/libleveldb.a -output $@ 282 283$(STATIC_OUTDIR)/libmemenv.a: $(STATIC_OUTDIR) $(DEVICE_OUTDIR)/libmemenv.a $(SIMULATOR_OUTDIR)/libmemenv.a 284 lipo -create $(DEVICE_OUTDIR)/libmemenv.a $(SIMULATOR_OUTDIR)/libmemenv.a -output $@ 285else 286$(STATIC_OUTDIR)/libleveldb.a:$(STATIC_LIBOBJECTS) 287 rm -f $@ 288 $(AR) -rs $@ $(STATIC_LIBOBJECTS) 289 290$(STATIC_OUTDIR)/libmemenv.a:$(STATIC_MEMENVOBJECTS) 291 rm -f $@ 292 $(AR) -rs $@ $(STATIC_MEMENVOBJECTS) 293endif 294 295$(SHARED_MEMENVLIB):$(SHARED_MEMENVOBJECTS) 296 rm -f $@ 297 $(AR) -rs $@ $(SHARED_MEMENVOBJECTS) 298 299$(STATIC_OUTDIR)/db_bench:db/db_bench.cc $(STATIC_LIBOBJECTS) $(TESTUTIL) 300 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/db_bench.cc $(STATIC_LIBOBJECTS) $(TESTUTIL) -o $@ $(LIBS) 301 302$(STATIC_OUTDIR)/db_bench_sqlite3:doc/bench/db_bench_sqlite3.cc $(STATIC_LIBOBJECTS) $(TESTUTIL) 303 $(CXX) $(LDFLAGS) $(CXXFLAGS) doc/bench/db_bench_sqlite3.cc $(STATIC_LIBOBJECTS) $(TESTUTIL) -o $@ -lsqlite3 $(LIBS) 304 305$(STATIC_OUTDIR)/db_bench_tree_db:doc/bench/db_bench_tree_db.cc $(STATIC_LIBOBJECTS) $(TESTUTIL) 306 $(CXX) $(LDFLAGS) $(CXXFLAGS) doc/bench/db_bench_tree_db.cc $(STATIC_LIBOBJECTS) $(TESTUTIL) -o $@ -lkyotocabinet $(LIBS) 307 308$(STATIC_OUTDIR)/leveldbutil:db/leveldbutil.cc $(STATIC_LIBOBJECTS) 309 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/leveldbutil.cc $(STATIC_LIBOBJECTS) -o $@ $(LIBS) 310 311$(STATIC_OUTDIR)/arena_test:util/arena_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 312 $(CXX) $(LDFLAGS) $(CXXFLAGS) util/arena_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 313 314$(STATIC_OUTDIR)/autocompact_test:db/autocompact_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 315 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/autocompact_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 316 317$(STATIC_OUTDIR)/bloom_test:util/bloom_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 318 $(CXX) $(LDFLAGS) $(CXXFLAGS) util/bloom_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 319 320$(STATIC_OUTDIR)/c_test:$(STATIC_OUTDIR)/db/c_test.o $(STATIC_LIBOBJECTS) $(TESTHARNESS) 321 $(CXX) $(LDFLAGS) $(STATIC_OUTDIR)/db/c_test.o $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 322 323$(STATIC_OUTDIR)/cache_test:util/cache_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 324 $(CXX) $(LDFLAGS) $(CXXFLAGS) util/cache_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 325 326$(STATIC_OUTDIR)/coding_test:util/coding_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 327 $(CXX) $(LDFLAGS) $(CXXFLAGS) util/coding_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 328 329$(STATIC_OUTDIR)/corruption_test:db/corruption_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 330 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/corruption_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 331 332$(STATIC_OUTDIR)/crc32c_test:util/crc32c_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 333 $(CXX) $(LDFLAGS) $(CXXFLAGS) util/crc32c_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 334 335$(STATIC_OUTDIR)/db_test:db/db_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 336 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/db_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 337 338$(STATIC_OUTDIR)/dbformat_test:db/dbformat_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 339 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/dbformat_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 340 341$(STATIC_OUTDIR)/env_posix_test:util/env_posix_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 342 $(CXX) $(LDFLAGS) $(CXXFLAGS) util/env_posix_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 343 344$(STATIC_OUTDIR)/env_test:util/env_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 345 $(CXX) $(LDFLAGS) $(CXXFLAGS) util/env_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 346 347$(STATIC_OUTDIR)/fault_injection_test:db/fault_injection_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 348 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/fault_injection_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 349 350$(STATIC_OUTDIR)/filename_test:db/filename_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 351 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/filename_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 352 353$(STATIC_OUTDIR)/filter_block_test:table/filter_block_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 354 $(CXX) $(LDFLAGS) $(CXXFLAGS) table/filter_block_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 355 356$(STATIC_OUTDIR)/hash_test:util/hash_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 357 $(CXX) $(LDFLAGS) $(CXXFLAGS) util/hash_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 358 359$(STATIC_OUTDIR)/issue178_test:issues/issue178_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 360 $(CXX) $(LDFLAGS) $(CXXFLAGS) issues/issue178_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 361 362$(STATIC_OUTDIR)/issue200_test:issues/issue200_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 363 $(CXX) $(LDFLAGS) $(CXXFLAGS) issues/issue200_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 364 365$(STATIC_OUTDIR)/log_test:db/log_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 366 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/log_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 367 368$(STATIC_OUTDIR)/recovery_test:db/recovery_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 369 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/recovery_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 370 371$(STATIC_OUTDIR)/table_test:table/table_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 372 $(CXX) $(LDFLAGS) $(CXXFLAGS) table/table_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 373 374$(STATIC_OUTDIR)/skiplist_test:db/skiplist_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 375 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/skiplist_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 376 377$(STATIC_OUTDIR)/version_edit_test:db/version_edit_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 378 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/version_edit_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 379 380$(STATIC_OUTDIR)/version_set_test:db/version_set_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 381 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/version_set_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 382 383$(STATIC_OUTDIR)/write_batch_test:db/write_batch_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) 384 $(CXX) $(LDFLAGS) $(CXXFLAGS) db/write_batch_test.cc $(STATIC_LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS) 385 386$(STATIC_OUTDIR)/memenv_test:$(STATIC_OUTDIR)/helpers/memenv/memenv_test.o $(STATIC_OUTDIR)/libmemenv.a $(STATIC_OUTDIR)/libleveldb.a $(TESTHARNESS) 387 $(XCRUN) $(CXX) $(LDFLAGS) $(STATIC_OUTDIR)/helpers/memenv/memenv_test.o $(STATIC_OUTDIR)/libmemenv.a $(STATIC_OUTDIR)/libleveldb.a $(TESTHARNESS) -o $@ $(LIBS) 388 389$(SHARED_OUTDIR)/db_bench:$(SHARED_OUTDIR)/db/db_bench.o $(SHARED_LIBS) $(TESTUTIL) 390 $(XCRUN) $(CXX) $(LDFLAGS) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(SHARED_OUTDIR)/db/db_bench.o $(TESTUTIL) $(SHARED_OUTDIR)/$(SHARED_LIB3) -o $@ $(LIBS) 391 392.PHONY: run-shared 393run-shared: $(SHARED_OUTDIR)/db_bench 394 LD_LIBRARY_PATH=$(SHARED_OUTDIR) $(SHARED_OUTDIR)/db_bench 395 396$(SIMULATOR_OUTDIR)/%.o: %.cc 397 xcrun -sdk iphonesimulator $(CXX) $(CXXFLAGS) $(SIMULATOR_CFLAGS) -c $< -o $@ 398 399$(DEVICE_OUTDIR)/%.o: %.cc 400 xcrun -sdk iphoneos $(CXX) $(CXXFLAGS) $(DEVICE_CFLAGS) -c $< -o $@ 401 402$(SIMULATOR_OUTDIR)/%.o: %.c 403 xcrun -sdk iphonesimulator $(CC) $(CFLAGS) $(SIMULATOR_CFLAGS) -c $< -o $@ 404 405$(DEVICE_OUTDIR)/%.o: %.c 406 xcrun -sdk iphoneos $(CC) $(CFLAGS) $(DEVICE_CFLAGS) -c $< -o $@ 407 408$(STATIC_OUTDIR)/%.o: %.cc 409 $(CXX) $(CXXFLAGS) -c $< -o $@ 410 411$(STATIC_OUTDIR)/%.o: %.c 412 $(CC) $(CFLAGS) -c $< -o $@ 413 414$(SHARED_OUTDIR)/%.o: %.cc 415 $(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) -c $< -o $@ 416 417$(SHARED_OUTDIR)/%.o: %.c 418 $(CC) $(CFLAGS) $(PLATFORM_SHARED_CFLAGS) -c $< -o $@ 419 420$(STATIC_OUTDIR)/port/port_posix_sse.o: port/port_posix_sse.cc 421 $(CXX) $(CXXFLAGS) $(PLATFORM_SSEFLAGS) -c $< -o $@ 422 423$(SHARED_OUTDIR)/port/port_posix_sse.o: port/port_posix_sse.cc 424 $(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(PLATFORM_SSEFLAGS) -c $< -o $@ 425