]> git.saurik.com Git - cycript.git/blob - ios.sh
Use the LC_ID_DYLIB when possible to ID dylibs.
[cycript.git] / ios.sh
1 #!/usr/bin/env bash
2
3 # Cycript - Optimizing JavaScript Compiler/Runtime
4 # Copyright (C) 2009-2013 Jay Freeman (saurik)
5
6 # GNU General Public License, Version 3 {{{
7 #
8 # Cycript is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published
10 # by the Free Software Foundation, either version 3 of the License,
11 # or (at your option) any later version.
12 #
13 # Cycript is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with Cycript. If not, see <http://www.gnu.org/licenses/>.
20 # }}}
21
22 set -e
23
24 rm -rf sysroot.ios
25 mkdir -p sysroot.ios
26
27 for deb in apr-lib_1.3.3-2 libffi_1:3.0.10-5 ncurses_5.7-12 readline_6.0-7; do
28 deb=${deb}_iphoneos-arm.deb
29 [[ -f "${deb}" ]] || wget http://apt.saurik.com/debs/"${deb}"
30 tar=data.tar.lzma
31 ar -x "${deb}" "${tar}"
32 PATH=/sw/bin:$PATH tar -C sysroot.ios -xf "${tar}"
33 rm -f "${tar}"
34 done
35
36 mkdir -p sysroot.ios/usr/include/ffi
37 mv -v sysroot.ios/usr/include/{,ffi/}ffi.h
38
39 plt=iPhoneOS
40 dev=/Developer/Platforms/${plt}.platform/Developer
41 sdk=${dev}/SDKs/${plt}5.0.sdk
42
43 ln -s /System/Library/Frameworks/WebKit.framework/Versions/A/Headers sysroot.ios/usr/include/WebKit
44
45 mkdir -p sysroot.ios/Library/Frameworks/JavaScriptCore.framework
46 ln -s "${sdk}"/System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore sysroot.ios/Library/Frameworks/JavaScriptCore.framework
47 ln -s /System/Library/Frameworks/JavaScriptCore.framework/Headers sysroot.ios/Library/Frameworks/JavaScriptCore.framework
48
49 export CC=${dev}/usr/bin/gcc
50 export CXX=${dev}/usr/bin/g++
51 export OBJCXX=${dev}/usr/bin/g++
52
53 flags_armv6=()
54 flags_armv6+=(-isysroot "${sdk}")
55
56 flags_armv6+=(-Fsysroot.ios/Library/Frameworks)
57 flags_armv6+=(-Isysroot.ios/usr/include)
58 flags_armv6+=(-Lsysroot.ios/usr/lib)
59
60 flags_armv6+=(-F"${sdk}"/System/Library/PrivateFrameworks)
61 flags_armv6+=(-framework WebCore)
62
63
64 flags=(-O2)
65 for flag in "${flags_armv6[@]}"; do
66 flags+=(-Xarch_armv6 "${flag}")
67 done
68
69 cflags=${flags[*]}
70 export CFLAGS=${cflags}
71 export CXXFLAGS=${cflags}
72 export OBJCXXFLAGS=${cflags}
73
74 lflags=()
75 for flag in "${flags[@]}"; do
76 lflags+=("-Xcompiler ${flag}")
77 done
78
79 lflags=${lflags[*]}
80 export LTFLAGS=${lflags}
81
82 ./configure --prefix=/usr "$@"
83 sed --in-place='' -e 's/\(-arch armv6\) -arch i386 -arch x86_64/\1/' GNUmakefile
84
85 make clean
86 make -j ldid=ldid all
87 PATH=/sw/bin:$PATH make arch=iphoneos-arm dll=dylib depends='apr-lib, readline, libffi (>= 1:3.0.10-5), adv-cmds' package