open_toontown_panda3d/panda/src/iphone/ipfreeze.py

88 lines
3.1 KiB
Python
Executable File

#! /usr/bin/env python
"""
This script is used to generate a self-contained IPhone executable
that will run an app multifile. Still experimental.
Usage:
ipfreeze.py [opts]
"""
import getopt
import sys
import os
from direct.showutil import FreezeTool
def usage(code, msg = ''):
print >> sys.stderr, __doc__
print >> sys.stderr, msg
sys.exit(code)
if __name__ == '__main__':
freezer = FreezeTool.Freezer()
basename = 'iphone_runappmf'
#link_all_static = True
link_all_static = False
try:
opts, args = getopt.getopt(sys.argv[1:], 'h')
except getopt.error, msg:
usage(1, msg)
for opt, arg in opts:
if opt == '-h':
usage(0)
main = open('iphone_runappmf_src.mm', 'r').read()
freezer.mainInitCode = main
#target = 'sim'
target = 'phone'
if target == 'sim':
platform = 'IPhoneSimulator'
else:
platform = 'IPhoneOS'
version = '2.0'
dev = '/Developer/Platforms/%s.platform/Developer' % (platform)
env = 'env MACOSX_DEPLOYMENT_TARGET=10.5 PATH="%s/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"' % (dev)
cc = '%s %s/usr/bin/g++-4.0' % (env, dev)
sysroot = '-isysroot %s/SDKs/%s%s.sdk' % (dev, platform, version)
cflags = '-D__IPHONE_OS_VERSION_MIN_REQUIRED=20000 %s' % (sysroot)
if link_all_static:
cflags += ' -DLINK_ALL_STATIC'
arch = ''
if target == 'phone':
arch = ' -arch armv6 -mcpu=arm1176jzf-s -miphoneos-version-min=2.0'
lflags = sysroot
ipath = '-I/Users/drose/thirdparty.%s/Python-2.5.4/Include -I/Users/drose/thirdparty.%s/Python-2.5.4 -I/usr/local/panda/%s/include' % (target, target, target)
lpath = '-L/Users/drose/thirdparty.%s/Python-2.5.4 -L/usr/local/panda/%s/lib' % (target, target)
libs = ''
libs += ' -framework Foundation -framework UIKit'
if link_all_static:
libs += ' -lframework -lputil -lcollide -lpgraph -lchan -ltext -lpnmimage -lpnmimagetypes -levent -leffects -lgobj -ldisplay -lmathutil -lexpress -ldgraph -ldevice -ltform -llinmath -lpstatclient -lpanda -lglstuff -lrecorder -lpgui -lchar -lpipeline -lpandabase -llerp -lgsgbase -ldownloader -lparametrics -lpgraphnodes -lcull -lgrutil -lnet -lmovies -lnativenet -laudio -linterrogatedb -ldconfig -ldtoolutil -ldtoolbase -lprc -liphonedisplay -lpandaexpress -lpanda'
libs += ' -lphysics -lparticlesystem -lpandaphysics'
libs += ' -ldistort -leffects -lpandafx'
libs += ' -ldirectbase -ldcparser -ldeadrec -ldistributed -lhttp -lshowbase -linterval -lmotiontrail -ldirect'
libs += ' -framework QuartzCore -framework OpenGLES'
libs += ' -lpython2.5'
lpath += ' -L/Users/drose/thirdparty.%s/lib' % (target)
#libs += ' -ljpeg -lrfftw -lfftw'
freezer.sourceExtension = '.mm'
freezer.compileObj = '%s -c %s %s -o %%(basename)s.o %s %%(filename)s' % (cc, arch, cflags, ipath)
freezer.linkExe = "%s %s %s -o %%(basename)s %s %s %%(basename)s.o" % (cc, arch, lflags, lpath, libs)
freezer.addModule('direct.*.*')
freezer.addModule('direct.p3d.runp3d')
freezer.done(compileToExe = True)
freezer.generateCode(basename, compileToExe = True)