# Makefile for iPhone Application for iPhone gcc compiler (SDK Headers) # (Based on TabBarSample) # # Modified to work as an extension within: # /ext/iOS-3.x directory PROJECTNAME=Greenstone2 APPFOLDER=$(PROJECTNAME).app MINIMUMVERSION:=3.2 SDK=/var/toolchain/sys32 CC=arm-apple-darwin9-gcc CXX=arm-apple-darwin9-g++ LD=$(CXX) LDFLAGS = -arch arm -lobjc LDFLAGS += -framework UIKit LDFLAGS += -framework CoreGraphics LDFLAGS += -framework Foundation //LDFLAGS += -framework AVFoundation //LDFLAGS += -framework AddressBook //LDFLAGS += -framework AddressBookUI //LDFLAGS += -framework AudioToolbox //LDFLAGS += -framework AudioUnit //LDFLAGS += -framework CFNetwork //LDFLAGS += -framework CoreAudio //LDFLAGS += -framework CoreData //LDFLAGS += -framework CoreFoundation LDFLAGS += -framework CoreGraphics //LDFLAGS += -framework GraphicsServices //LDFLAGS += -framework CoreLocation //LDFLAGS += -framework ExternalAccessory //LDFLAGS += -framework GameKit //LDFLAGS += -framework IOKit //LDFLAGS += -framework MapKit //LDFLAGS += -framework MediaPlayer //LDFLAGS += -framework MessageUI //LDFLAGS += -framework MobileCoreServices //LDFLAGS += -framework OpenAL //LDFLAGS += -framework OpenGLES //LDFLAGS += -framework QuartzCore //LDFLAGS += -framework Security //LDFLAGS += -framework StoreKit //LDFLAGS += -framework System //LDFLAGS += -framework SystemConfiguration //LDFLAGS += -framework CoreSurface //LDFLAGS += -framework GraphicsServices //LDFLAGS += -framework Celestial //LDFLAGS += -framework WebCore //LDFLAGS += -framework WebKit //LDFLAGS += -framework SpringBoardUI //LDFLAGS += -framework TelephonyUI //LDFLAGS += -framework JavaScriptCore //LDFLAGS += -framework PhotoLibrary LDFLAGS += -L"$(SDK)/usr/lib" LDFLAGS += -F"$(SDK)/System/Library/Frameworks" LDFLAGS += -F"$(SDK)/System/Library/PrivateFrameworks" LDFLAGS += -bind_at_load LDFLAGS += -multiply_defined suppress LDFLAGS += -march=armv6 LDFLAGS += -mcpu=arm1176jzf-s LDFLAGS += -mmacosx-version-min=10.5 //LDFLAGS += -dynamiclib BUILDDIR=./build/$(MINIMUMVERSION) SRCDIR=./Classes RESDIR=./Resources OBJS=$(patsubst %.m,%.o,$(wildcard $(SRCDIR)/*.m)) OBJS+=$(patsubst %.c,%.o,$(wildcard $(SRCDIR)/*.c)) OBJS+=$(patsubst %.mm,%.o,$(wildcard $(SRCDIR)/*.mm)) OBJS+=$(patsubst %.cpp,%.o,$(wildcard $(SRCDIR)/*.cpp)) OBJS+=$(patsubst %.mm,%.o,$(wildcard ./*.mm)) PCH=$(wildcard *.pch) RESOURCES=$(wildcard ./*.png) RESOURCES+=$(wildcard $(RESDIR)/*) NIBS=$(patsubst %.xib,%.nib,$(wildcard Xib/*.xib)) CFLAGS += -g -DDEBUG -D_DEBUG CFLAGS += -I"$(SDK)/usr/include" CFLAGS += -std=gnu99 CFLAGS += -Diphoneos_version_min=$(MINIMUMVERSION) CFLAGS += -Wno-attributes -Wno-trigraphs -Wreturn-type -Wunused-variable CFLAGS += $(addprefix -I,$(SRCDIR)) CXXFLAGS += -g -DDEBUG -D_DEBUG CXXFLAGS += -I"$(SDK)/usr/include" CXXFLAGS += -Diphoneos_version_min=$(MINIMUMVERSION) CXXFLAGS += -Wno-attributes -Wno-trigraphs -Wreturn-type -Wunused-variable CXXFLAGS += $(addprefix -I,$(SRCDIR)) CXXFLAGS += -I"$(SDK)/usr/include/c++/4.2.1" CXXFLAGS += -I"$(SDK)/usr/include/c++/4.2.1/armv7-apple-darwin9" #-- # Now for Greenstone specific flags #-- GSDL_DIR = ../.. GDBM_DIR = $(GSDL_DIR)/common-src/packages/gdbm INDEXERS_DIR = $(GSDL_DIR)/common-src/indexers PACKAGES_DIR = $(GSDL_DIR)/common-src/packages COMMONLIB_DIR = $(GSDL_DIR)/common-src/src/lib COLSERVR_DIR = $(GSDL_DIR)/runtime-src/src/colservr RECPTION_DIR = $(GSDL_DIR)/runtime-src/src/recpt PROTOCOL_DIR = $(GSDL_DIR)/runtime-src/src/protocol ENABLE_ACCENTFOLD = 1 ifeq ($(ENABLE_ACCENTFOLD), 1) ACCENTFOLD_LIBS = $(INDEXERS_DIR)/packages/unac/libunac.a else ACCENTFOLD_LIBS = endif GSDL_CFLAGS = -I$(GDBM_DIR)/include \ -I$(INDEXERS_DIR)/mgpp/text \ -I$(COMMONLIB_DIR) \ -I$(PROTOCOL_DIR) -I$(COLSERVR_DIR) -I$(RECPTION_DIR) CFLAGS += $(GSDL_CFLAGS) CXXFLAGS += $(GSDL_CFLAGS) LDFLAGS += -L$(GDBM_DIR)/lib -lgdbm \ -L$(INDEXERS_DIR)/mg/src/text -lmgtext \ -L$(INDEXERS_DIR)/mg/lib -lmglib \ -L$(INDEXERS_DIR)/mgpp/text -lmgpptext \ -L$(INDEXERS_DIR)/mgpp/lib -lmgpplib \ $(COMMONLIB_DIR)/gsdllib.a \ $(PROTOCOL_DIR)/gsdlprotocol.a \ $(COLSERVR_DIR)/gsdlcolservr.a \ $(RECPTION_DIR)/gsdlrecpt.a \ $(ACCENTFOLD_LIBS) \ $(PACKAGES_DIR)/iconv/lib/libiconv.a \ -L$(PACKAGES_DIR)/expat/lib -lexpat \ -L/usr/local/lib -lgcc_eh # ======= all: $(PROJECTNAME) $(PROJECTNAME): $(OBJS) Makefile $(LD) -o $@ $(filter %.o,$^) $(LDFLAGS) # $(LD) $(LDFLAGS) $(filter %.o,$^) -o $@ %.o: %.m %.h $(PCH) $(filter-out $(patsubst %.o,%.h,$(OBJS)), $(wildcard $(SRCDIR)/*.h)) $(CC) --include $(PCH) -c $(CFLAGS) $< -o $@ %.o: %.m $(CC) --include $(PCH) -c $(CFLAGS) $< -o $@ %.o: %.c %.h $(PCH) $(CC) --include $(PCH) -c $(CFLAGS) $< -o $@ %.o: %.mm %.h $(PCH) $(filter-out $(patsubst %.o,%.h,$(OBJS)), $(wildcard $(SRCDIR)/*.h)) $(CXX) --include $(PCH) -c $(CXXFLAGS) $< -o $@ %.o: %.mm $(CXX) --include $(PCH) -c $(CXXFLAGS) $< -o $@ %.o: %.cpp %.h $(PCH) $(CXX) --include $(PCH) -c $(CXXFLAGS) $< -o $@ dist: $(PROJECTNAME) Makefile $(PROJECTNAME)-Info.plist $(RESOURCES) @rm -rf $(BUILDDIR) @mkdir -p $(BUILDDIR)/$(APPFOLDER) ifneq ($(RESOURCES),) @-cp -r $(RESOURCES) $(BUILDDIR)/$(APPFOLDER) @-$(foreach DIR, .svn .DS_Store .git* , find $(BUILDDIR)/$(APPFOLDER) -name '$(DIR)' -prune -exec rm -rfv {} \;;) endif @cp $(PROJECTNAME)-Info.plist $(BUILDDIR)/$(APPFOLDER)/Info.plist @./plutil -key CFBundleExecutable -value $(PROJECTNAME) $(BUILDDIR)/$(APPFOLDER)/Info.plist @./plutil -key CFBundleDisplayName -value $(PROJECTNAME) $(BUILDDIR)/$(APPFOLDER)/Info.plist @./plutil -key CFBundleName -value $(PROJECTNAME) $(BUILDDIR)/$(APPFOLDER)/Info.plist @./plutil -key CFBundleIdentifier -value com.yourcompany.iphone.$(PROJECTNAME) $(BUILDDIR)/$(APPFOLDER)/Info.plist @./plutil -UIDeviceFamily -array $(BUILDDIR)/$(APPFOLDER)/Info.plist @./plutil -UIDeviceFamily -arrayadd -string 1 $(BUILDDIR)/$(APPFOLDER)/Info.plist @./plutil -UIDeviceFamily -arrayadd -string 2 $(BUILDDIR)/$(APPFOLDER)/Info.plist @./plutil -key NSMainNibFile -remove $(BUILDDIR)/$(APPFOLDER)/Info.plist @echo "APPL????" > $(BUILDDIR)/$(APPFOLDER)/PkgInfo ldid -S $(PROJECTNAME) @mv $(PROJECTNAME) $(BUILDDIR)/$(APPFOLDER)/ install: dist ./appinstall $(BUILDDIR)/$(APPFOLDER) distclean: @rm -rf $(BUILDDIR) clean: @rm -f $(OBJS) @rm -rf $(BUILDDIR) @rm -f $(PROJECTNAME) .PHONY: all dist install distclean clean