All pastes #928553 Raw Edit

Someone

public text v1 · immutable
·published 2008-03-05 03:40 UTC
rendered paste body
###########################################
#### Start of user defined variables ######
###########################################
#BUILD_HOST can be: OSX, Linux, Windows
BUILD_HOST="Windows"
PRODUCT_NAME=YOUR APPNAME
DEFAULT_BACKGROUND=Default.png
APP_ICON=icon.png
IPHONE_IP=192.168.1.44
SOURCES=\
	YOU.M FILES.m\
	other.m \
	....m


###########################################
BUILT_PRODUCTS_DIR=.
CONFIGURATION_TEMP_DIR=.
SRCROOT=.
IPHONE_APP_FOLDER = /Applications
INFOPLIST_FILE=Info.plist
############################################
#### Path to arm-apple-darwin- tools #######
#### Should be set by the toolchain  #######
#### not hardcoded.                  #######
############################################
ifeq ($(BUILD_HOST),"Linux")
	CC=arm-apple-darwin-gcc
	CXX=arm-apple-darwin-g++
else ifeq ($(BUILD_HOST),"Windows")
	CC=/usr/local/bin/arm-apple-darwin-gcc.exe
	CXX=/usr/local/bin/arm-apple-darwin-g++.exe
else ifeq ($(BUILD_HOST),"OSX")
	#Is that really necessary ? Can't the OSX
	#toolchain set the path correctly so we
	#can merge it with Linux ? I suspect their
	#toolchain is broken / misconfigured
	CC=/usr/local/bin/arm-apple-darwin-gcc
endif
CFLAGS=-g -O2 -Wall -I./
CPPFLAGS=
LD=$(CC)
#############################################
#### These are all the iPhone frameworks ####
#### Extracted from iPhone filesystem    ####
#############################################
#         -framework AddressBook \
#         -framework CFNetwork \
#         -framework IAP \
#         -framework Message \
#         -framework Preferences \
#         -framework AddressBookUI \
#         -framework CoreAudio \
#         -framework IOKit \
#         -framework MessageUI \
#         -framework Security \
#         -framework AppSupport \
#         -framework CoreFoundation \
#         -framework IOMobileFramebuffer \
#         -framework MobileBluetooth \
#         -framework SystemConfiguration \
#         -framework ArtworkCache \
#         -framework CoreGraphics \
#         -framework ITSync \
#         -framework MobileMusicPlayer \
#         -framework System \
#         -framework AudioToolbox \
#         -framework CoreSurface \
#         -framework iTunesStore \
#         -framework MoviePlayerUI \
#         -framework TelephonyUI \
#         -framework BluetoothManager \
#         -framework CoreTelephony \
#         -framework JavaScriptCore \
#         -framework MultitouchSupport \
#         -framework UIKit \
#         -framework Calculate \
#         -framework CoreVideo \
#         -framework LayerKit \
#         -framework MusicLibrary \
#         -framework URLify \
#         -framework Calendar \
#         -framework DeviceLink \
#         -framework MBX2D \
#         -framework OfficeImport \
#         -framework VisualVoicemail \
#         -framework Camera \
#         -framework Foundation \
#         -framework MBXConnect \
#         -framework OpenGLES \
#         -framework WebCore \
#         -framework Celestial \
#         -framework GraphicsServices \
#         -framework MeCCA \
#         -framework PhotoLibrary \
#         -framework WebKit \
############################################
#OSX users define -I/usr/local/arm-apple-darwin/include
#and -ObjC... still don't know why !
LDFLAGS=-lobjc \
	-fobjc-exceptions \
	-framework Foundation \
	-framework CoreFoundation \
	-framework UIKit \
	-framework CoreGraphics \
	-framework LayerKit 


###########################################
##### End of user defined variables #######
###########################################

###################################################################################################
WRAPPER_NAME=$(PRODUCT_NAME).app
EXECUTABLE_NAME=$(PRODUCT_NAME)
SOURCES_ABS=$(addprefix $(SRCROOT)/,$(SOURCES))
INFOPLIST_ABS=$(addprefix $(SRCROOT)/,$(INFOPLIST_FILE))
OBJECTS=\
	$(patsubst %.c,%.o,$(filter %.c,$(SOURCES))) \
	$(patsubst %.cc,%.o,$(filter %.cc,$(SOURCES))) \
	$(patsubst %.cpp,%.o,$(filter %.cpp,$(SOURCES))) \
	$(patsubst %.m,%.o,$(filter %.m,$(SOURCES))) \
	$(patsubst %.M,%.o,$(filter %.M,$(SOURCES))) \
	$(patsubst %.mm,%.o,$(filter %.mm,$(SOURCES)))
OBJECTS_ABS=$(addprefix $(CONFIGURATION_TEMP_DIR)/,$(OBJECTS))
APP_ABS=$(BUILT_PRODUCTS_DIR)/$(WRAPPER_NAME)
PRODUCT_ABS=$(APP_ABS)/$(EXECUTABLE_NAME)

all: $(PRODUCT_ABS)

run: $(PRODUCT_ABS)
	scp -r $(APP_ABS) root@$(IPHONE_IP):$(IPHONE_APP_FOLDER)
	ssh -t root@$(IPHONE_IP) $(IPHONE_APP_FOLDER)/$(PRODUCT_ABS)

testrun: $(PRODUCT_ABS)
	ssh -t root@$(IPHONE_IP) $(IPHONE_APP_FOLDER)/$(PRODUCT_ABS)

copy: $(PRODUCT_ABS)
	scp -r $(APP_ABS) root@$(IPHONE_IP):$(IPHONE_APP_FOLDER)

updateExec: $(PRODUCT_ABS)
	scp $(APP_ABS)/$(EXECUTABLE_NAME) root@$(IPHONE_IP):$(IPHONE_APP_FOLDER)/$(APP_ABS)

$(PRODUCT_ABS): $(APP_ABS) $(OBJECTS_ABS)
	$(LD) $(LDFLAGS) -o $(PRODUCT_ABS) $(OBJECTS_ABS)

$(APP_ABS): $(INFOPLIST_ABS)
	mkdir -p $(APP_ABS)
	cp $(INFOPLIST_ABS) $(APP_ABS)

$(CONFIGURATION_TEMP_DIR)/%.o: $(SRCROOT)/%.m
	mkdir -p $(dir $@)
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

$(CONFIGURATION_TEMP_DIR)/%.o: $(SRCROOT)/%.cpp
	mkdir -p $(dir $@)
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

$(CONFIGURATION_TEMP_DIR)/%.o: $(SRCROOT)/%.mm
	mkdir -p $(dir $@)
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

$(CONFIGURATION_TEMP_DIR)/%.o: $(SRCROOT)/%.M
	mkdir -p $(dir $@)
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

clean:
	rm -f $(OBJECTS_ABS)
	rm -rf $(PRODUCT_ABS)

install: $(TARGET)
	scp -r $(PRODUCT_NAME).app root@$(IPHONE_IP):$(IPHONE_APP_FOLDER)
	ssh -t root@$(IPHONE_IP) ' killall SpringBoard'

cleanMyIphone:
	ssh -t root@$(IPHONE_IP) 'rm -rf $(IPHONE_APP_FOLDER)/$(WRAPPER_NAME)'

cleanMyIphoneAndReload:
	ssh -t root@$(IPHONE_IP) 'rm -rf $(IPHONE_APP_FOLDER)/$(WRAPPER_NAME); killall SpringBoard'
####################################################################################################