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'
####################################################################################################