#!/bin/sh export iphonefs=$HOME/tmp/iphone/iPhone2.1 export target=arm-apple-darwin9 export leopardsdk=$HOME/tmp/iphone/Developer/SDKs/MacOSX10.5.sdk export leopardinc=${leopardsdk}/usr/include export leopardlib=${leopardsdk}/System/Library/Frameworks export iphoneplt=$HOME/tmp/iphone/Developer/Platforms/iPhoneOS.platform export iphonesdk=${iphoneplt}/Developer/SDKs/iPhoneOS2.1.sdk export iphoneinc=${iphonesdk}/usr/include export iphonelib=${iphonesdk}/System/Library/Frameworks export prefix=$HOME/app/toolchain/usr export sysroot=$HOME/app/toolchain/sysroot export PATH="${prefix}/bin":"${PATH}" export cctools=$HOME/app/toolchain/src/cctools export gcc=$HOME/app/toolchain/src/gcc export csu=$HOME/app/toolchain/src/csu export build=$HOME/app/toolchain/build export apple=$HOME/tmp/iphone/apple mkdir -p "$(dirname "${sysroot}")" cp -aH "${iphonefs}" "${sysroot}" cd "${sysroot}" rm -rf usr/include cp -a "${leopardinc}" usr/include cd usr/include ln -s . System cp -af "${iphoneinc}"/* . cp -af "${apple}"/xnu-*/osfmk/* . cp -af "${apple}"/xnu-*/bsd/* . cp -af "${apple}"/cctools-*/include/mach . cp -af "${apple}"/cctools-*/include/mach-o . cp -af "${iphoneinc}"/mach-o/dyld.h mach-o cp -af "${leopardinc}"/mach/machine mach cp -af "${leopardinc}"/mach/machine.h mach cp -af "${leopardinc}"/machine . cp -af "${iphoneinc}"/machine . cp -af "${iphoneinc}"/sys/cdefs.h sys cp -af "${leopardinc}"/sys/dtrace.h sys cp -af "${leopardlib}"/Kernel.framework/Headers/machine/disklabel.h machine cp -af "${apple}"/configd-*/dnsinfo/dnsinfo.h . cp -a "${apple}"/Libc-*/include/kvm.h . cp -a "${apple}"/launchd-*/launchd/src/*.h . cp -a i386/disklabel.h arm cp -a mach/i386/machine_types.defs mach/arm ## if you don't have mig, just ignore this for now #for defs in clock_reply exc mach_exc notify; do # mig -server /dev/null -user /dev/null -header /dev/null \ # -sheader mach/"${defs}"_server.h mach/"${defs}".defs #done mkdir Kernel cp -a "${apple}"/xnu-*/libsa/libsa Kernel mkdir Security cp -a "${apple}"/libsecurity_authorization-*/lib/*.h Security cp -a "${apple}"/libsecurity_cdsa_client-*/lib/*.h Security cp -a "${apple}"/libsecurity_cdsa_utilities-*/lib/*.h Security cp -a "${apple}"/libsecurity_cms-*/lib/*.h Security cp -a "${apple}"/libsecurity_codesigning-*/lib/*.h Security cp -a "${apple}"/libsecurity_cssm-*/lib/*.h Security cp -a "${apple}"/libsecurity_keychain-*/lib/*.h Security cp -a "${apple}"/libsecurity_mds-*/lib/*.h Security cp -a "${apple}"/libsecurity_ssl-*/lib/*.h Security cp -a "${apple}"/libsecurity_utilities-*/lib/*.h Security cp -a "${apple}"/libsecurityd-*/lib/*.h Security mkdir DiskArbitration cp -a "${apple}"/DiskArbitration-*/DiskArbitration/*.h DiskArbitration cp -a "${apple}"/xnu-*/iokit/IOKit . cp -a "${apple}"/IOKitUser-*/*.h IOKit cp -a "${apple}"/IOGraphics-*/IOGraphicsFamily/IOKit/graphics IOKit cp -a "${apple}"/IOHIDFamily-*/IOHIDSystem/IOKit/hidsystem IOKit for proj in kext ps pwr_mgt; do mkdir -p IOKit/"${proj}" cp -a "${apple}"/IOKitUser-*/"${proj}".subproj/*.h IOKit/"${proj}" done mkdir IOKit/storage cp -a "${apple}"/IOStorageFamily-*/*.h IOKit/storage cp -a "${apple}"/IOCDStorageFamily-*/*.h IOKit/storage cp -a "${apple}"/IODVDStorageFamily-*/*.h IOKit/storage mkdir SystemConfiguration cp -a "${apple}"/configd-*/SystemConfiguration.fproj/*.h SystemConfiguration mkdir WebCore cp -a "${apple}"/WebCore-*/bindings/objc/*.h WebCore cp -aH "${leopardlib}"/CoreFoundation.framework/Headers CoreFoundation cp -af "${apple}"/CF-*/*.h CoreFoundation cp -af "${iphonelib}"/CoreFoundation.framework/Headers/* CoreFoundation for framework in AudioToolbox AudioUnit CoreAudio Foundation; do cp -aH "${leopardlib}"/"${framework}".framework/Headers "${framework}" cp -af "${iphonelib}"/"${framework}".framework/Headers/* "${framework}" done for framework in AppKit Cocoa CoreData CoreVideo JavaScriptCore OpenGL QuartzCore WebKit; do cp -aH "${leopardlib}"/"${framework}".framework/Headers "$(basename "${framework}" .framework)" done cp -aH "${leopardlib}"/ApplicationServices.framework/Headers ApplicationServices for service in "${leopardlib}"/ApplicationServices.framework/Frameworks/*.framework; do cp -aH "${service}"/Headers "$(basename "${service}" .framework)" done cp -aH "${leopardlib}"/CoreServices.framework/Headers CoreServices for service in "${leopardlib}"/CoreServices.framework/Frameworks/*.framework; do cp -aH "${service}"/Headers "$(basename "${service}" .framework)" done for framework in AddressBook AddressBookUI AudioToolbox AudioUnit CFNetwork CoreAudio \ CoreFoundation CoreGraphics CoreLocation Foundation MediaPlayer \ OpenAL OpenGLES QuartzCore Security SystemConfiguration UIKit; do mkdir -p "${framework}" cp -af "${iphonelib}"/"${framework}".framework/Headers/* "${framework}" done # this step may have a bad hunk in CoreFoundation and thread_status while patching # these errors are to be ignored, as these are changes for issues Apple has now fixed wget -qO- http://svn.telesphoreo.org/trunk/tool/include.diff | patch -p3 wget -qO arm/locks.h http://svn.telesphoreo.org/trunk/tool/patches/locks.h mkdir GraphicsServices cd GraphicsServices #wget -q http://svn.telesphoreo.org/trunk/tool/patches/GraphicsServices.h svn export -r 357 http://svn.telesphoreo.org/trunk/tool/patches/ mv patches/GraphicsServices.h . rm -rf patches cd "${sysroot}" ln -sf gcc/darwin/4.0/stdint.h usr/include ln -s libstdc++.6.dylib usr/lib/libstdc++.dylib ln -sfn A System/Library/Frameworks/IOKit.framework/Versions/Current ln -sf Versions/Current/IOKit System/Library/Frameworks/IOKit.framework mkdir -p "${csu}" cd "${csu}" svn co http://iphone-dev.googlecode.com/svn/trunk/csu . cp -a *.o "${sysroot}"/usr/lib cd "${sysroot}"/usr/lib chmod 644 *.o cp -af crt1.o crt1.10.5.o cp -af dylib1.o dylib1.10.5.o rm -rf "${gcc}" git clone git://git.saurik.com/llvm-gcc-4.2 "${gcc}" rm -rf "${cctools}" svn co http://iphone-dev.googlecode.com/svn/branches/odcctools-9.2-ld "${cctools}" mkdir -p "${build}" cd "${build}" mkdir cctools-iphone cd cctools-iphone CFLAGS=-m32 LDFLAGS=-m32 "${cctools}"/configure \ --target="${target}" \ --prefix="${prefix}" \ --disable-ld64 make make install mkdir -p "${build}" cd "${build}" mkdir gcc-4.2-iphone cd gcc-4.2-iphone "${gcc}"/configure \ --target="${target}" \ --prefix="${prefix}" \ --with-sysroot="${sysroot}" \ --enable-languages=c,c++,objc,obj-c++ \ --with-as="${prefix}"/bin/"${target}"-as \ --with-ld="${prefix}"/bin/"${target}"-ld \ --enable-wchar_t=no \ --with-gxx-include-dir=/usr/include/c++/4.0.0 make make install mkdir -p "${sysroot}"/"$(dirname "${prefix}")" ln -s "${prefix}" "${sysroot}"/"$(dirname "${prefix}")"