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