gist: 15487 Download_button fork
public
Public Clone URL: git://gist.github.com/15487.git
my toolchain setup script (via saurik.com)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
#!/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}")"
 
 

Owner

typester

Revisions