5 printf "extracting $(basename $1) ...\n"
10 xz
-dc $1 |
tar "$tarflags" - ;;
12 printf "Make sure you give a iPhoneOS9.2.sdk.tar.xz file \n" ;;
16 function verify_arch
{
24 printf '%s is not an acceptable arch. Try one of %s' "$1" "$acc"
26 printf "$error_message\n"
31 function verify_sdk_version
{
32 sdk_version
=$
(basename "$1" |
grep -P -o "[0-9].[0-9]+")
33 case "$sdk_version" in
34 # Make sure the SDK is correct.
37 printf 'No iPhone SDK version in file name\n'
44 printf "usage: $0 iPhoneOS.sdk.tar* <target cpu>\n" 1>&2
45 printf "i.e. $0 /path/to/iPhoneOS.sdk.tar.xz armv7\n" 1>&2
51 chmod -R 755 "$cctools_port"
53 pushd "$cctools_port"/usage_examples
/ios_toolchain
&> /dev
/null
58 triple
='%s-apple-darwin11'
59 target_dir
="$PWD/target"
60 sdk_dir
="$target_dir/SDK"
61 platform
="$(uname -s)"
62 # Will be mutated by verify_sdk_version
65 mkdir
-p "$target_dir"
66 mkdir
-p "$target_dir/bin"
70 verify_sdk_version
"$1"
72 triple
="$(printf "$triple" "$2")"
73 pushd "$sdk_dir" &>/dev
/null
77 find $sdk_dir -name libSystem.dylib
-o -name libSystem.tbd |
head -n1
80 if [ -z "$sys_lib" ]; then
81 printf "SDK should contain libSystem{.dylib,.tbd}\n" 1>&2
85 local sys_root
=$
(readlink
-f "$(dirname $sys_lib)/../..")
87 local sdk_unboxed
=$
(basename $sys_root)
89 mv -f "$sys_root"/* "$sdk_dir" || true
93 printf "\nbuilding wrapper\n"
95 printf "int main(){return 0;}" | clang
-xc -O2 -o "$target_dir"/bin
/dsymutil
-
97 clang
-O2 -std=c99
$alt_wrapper \
98 -DTARGET_CPU=$
(printf '"%s"' "$2") \
100 printf '"%s"' "-I$out/$sdk/usr/include"
102 -DNIX_APPLE_FRAMEWORKS=$
(
103 printf '"%s"' "$out/$sdk/System/Library/Frameworks"
105 -DNIX_APPLE_PRIV_FRAMEWORKS=$
(
106 printf '"%s"' "$out/$sdk/System/Library/PrivateFrameworks"
108 -DOS_VER_MIN=$
(printf '"%s"' "7.1") \
109 -o "$target_dir/bin/$triple-clang"
111 pushd "$target_dir"/bin
&>/dev
/null
113 cp "$triple"-clang "$triple"-clang++
117 printf "\nbuilding ldid\n"
120 pushd tmp
&>/dev
/null
121 pushd "$ldid" &>/dev
/null
125 make INSTALLPREFIX
="$target_dir" -j4 install
129 printf "\nbuilding cctools / ld64\n"
131 pushd ..
/..
/cctools
&>/dev
/null
132 git clean
-fdx .
&>/dev
/null || true
134 .
/configure
--target="$triple" --prefix="$target_dir"
136 make install &>/dev
/null
142 for d
in bin libexec SDK
; do
143 chown
-R $me:$me target
/$d
149 mv $out/SDK
$out/$sdk