diff options
author | dgrogan@chromium.org <dgrogan@chromium.org@62dab493-f737-651d-591e-8d6aee1b9529> | 2011-05-28 00:53:58 +0000 |
---|---|---|
committer | dgrogan@chromium.org <dgrogan@chromium.org@62dab493-f737-651d-591e-8d6aee1b9529> | 2011-05-28 00:53:58 +0000 |
commit | 740d8b3d009462eed28a94ea516d667e735b0dfc (patch) | |
tree | 83959c625c77d893b34d4306e478a5ba38804dc5 /Makefile | |
parent | da7990950787257cb312ca562ce5977749afc3e9 (diff) | |
download | leveldb-740d8b3d009462eed28a94ea516d667e735b0dfc.tar.gz |
Update from upstream @21551990
* Patch LevelDB to build for OSX and iOS
* Fix race condition in memtable iterator deletion.
* Other small fixes.
git-svn-id: https://leveldb.googlecode.com/svn/trunk@29 62dab493-f737-651d-591e-8d6aee1b9529
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 45 |
1 files changed, 41 insertions, 4 deletions
@@ -8,7 +8,21 @@ CC = g++ #OPT = -O2 -DNDEBUG OPT = -g2 -CFLAGS = -c -DLEVELDB_PLATFORM_POSIX -I. -I./include -std=c++0x $(OPT) +UNAME := $(shell uname) + +ifeq ($(UNAME), Darwin) +# To build for iOS, set PLATFORM=IOS. +ifndef PLATFORM +PLATFORM=OSX +endif # PLATFORM +PLATFORM_CFLAGS = -DLEVELDB_PLATFORM_OSX +PORT_MODULE = port_osx.o +else # UNAME +PLATFORM_CFLAGS = -DLEVELDB_PLATFORM_POSIX -std=c++0x +PORT_MODULE = port_posix.o +endif # UNAME + +CFLAGS = -c -I. -I./include $(PLATFORM_CFLAGS) $(OPT) LDFLAGS=-lpthread @@ -26,7 +40,7 @@ LIBOBJECTS = \ ./db/version_edit.o \ ./db/version_set.o \ ./db/write_batch.o \ - ./port/port_posix.o \ + ./port/$(PORT_MODULE) \ ./table/block.o \ ./table/block_builder.o \ ./table/format.o \ @@ -69,13 +83,25 @@ TESTS = \ PROGRAMS = db_bench $(TESTS) -all: $(PROGRAMS) +LIBRARY = libleveldb.a + +ifeq ($(PLATFORM), IOS) +# Only XCode can build executable applications for iOS. +all: $(LIBRARY) +else +all: $(PROGRAMS) $(LIBRARY) +endif check: $(TESTS) for t in $(TESTS); do echo "***** Running $$t"; ./$$t || exit 1; done clean: - rm -f $(PROGRAMS) */*.o + -rm -f $(PROGRAMS) $(LIBRARY) */*.o ios-x86/*/*.o ios-arm/*/*.o + -rmdir -p ios-x86/* ios-arm/* + +$(LIBRARY): $(LIBOBJECTS) + rm -f $@ + $(AR) -rs $@ $(LIBOBJECTS) db_bench: db/db_bench.o $(LIBOBJECTS) $(TESTUTIL) $(CC) $(LDFLAGS) db/db_bench.o $(LIBOBJECTS) $(TESTUTIL) -o $@ @@ -122,8 +148,19 @@ version_edit_test: db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS) write_batch_test: db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS) $(CC) $(LDFLAGS) db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ +ifeq ($(PLATFORM), IOS) +# For iOS, create universal object files to be used on both the simulator and +# a device. +.cc.o: + mkdir -p ios-x86/$(dir $@) + $(CC) $(CFLAGS) -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -arch i686 $< -o ios-x86/$@ + mkdir -p ios-arm/$(dir $@) + $(CC) $(CFLAGS) -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -arch armv6 -arch armv7 $< -o ios-arm/$@ + lipo ios-x86/$@ ios-arm/$@ -create -output $@ +else .cc.o: $(CC) $(CFLAGS) $< -o $@ +endif # TODO(gabor): dependencies for .o files # TODO(gabor): Build library |