]> git.saurik.com Git - cycript.git/blame - ios.sh
Use the LC_ID_DYLIB when possible to ID dylibs.
[cycript.git] / ios.sh
CommitLineData
9d13f949
JF
1#!/usr/bin/env bash
2
c15969fd
JF
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
eaf660f1
JF
22set -e
23
8ad1528b 24rm -rf sysroot.ios
9d13f949
JF
25mkdir -p sysroot.ios
26
74296173 27for deb in apr-lib_1.3.3-2 libffi_1:3.0.10-5 ncurses_5.7-12 readline_6.0-7; do
9d13f949 28 deb=${deb}_iphoneos-arm.deb
8ad1528b 29 [[ -f "${deb}" ]] || wget http://apt.saurik.com/debs/"${deb}"
9d13f949
JF
30 tar=data.tar.lzma
31 ar -x "${deb}" "${tar}"
210e14b3 32 PATH=/sw/bin:$PATH tar -C sysroot.ios -xf "${tar}"
9d13f949
JF
33 rm -f "${tar}"
34done
35
8ad1528b
JF
36mkdir -p sysroot.ios/usr/include/ffi
37mv -v sysroot.ios/usr/include/{,ffi/}ffi.h
38
6927ece0 39plt=iPhoneOS
8a84ecb4
JF
40dev=/Developer/Platforms/${plt}.platform/Developer
41sdk=${dev}/SDKs/${plt}5.0.sdk
8ad1528b
JF
42
43ln -s /System/Library/Frameworks/WebKit.framework/Versions/A/Headers sysroot.ios/usr/include/WebKit
44
45mkdir -p sysroot.ios/Library/Frameworks/JavaScriptCore.framework
46ln -s "${sdk}"/System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore sysroot.ios/Library/Frameworks/JavaScriptCore.framework
47ln -s /System/Library/Frameworks/JavaScriptCore.framework/Headers sysroot.ios/Library/Frameworks/JavaScriptCore.framework
48
9d13f949
JF
49export CC=${dev}/usr/bin/gcc
50export CXX=${dev}/usr/bin/g++
8ad1528b 51export OBJCXX=${dev}/usr/bin/g++
9d13f949
JF
52
53flags_armv6=()
8ad1528b 54flags_armv6+=(-isysroot "${sdk}")
9d13f949 55
8ad1528b 56flags_armv6+=(-Fsysroot.ios/Library/Frameworks)
9d13f949
JF
57flags_armv6+=(-Isysroot.ios/usr/include)
58flags_armv6+=(-Lsysroot.ios/usr/lib)
59
8ad1528b
JF
60flags_armv6+=(-F"${sdk}"/System/Library/PrivateFrameworks)
61flags_armv6+=(-framework WebCore)
62
63
f0b471d9 64flags=(-O2)
9d13f949
JF
65for flag in "${flags_armv6[@]}"; do
66 flags+=(-Xarch_armv6 "${flag}")
67done
68
69cflags=${flags[*]}
70export CFLAGS=${cflags}
71export CXXFLAGS=${cflags}
8ad1528b 72export OBJCXXFLAGS=${cflags}
9d13f949
JF
73
74lflags=()
75for flag in "${flags[@]}"; do
76 lflags+=("-Xcompiler ${flag}")
77done
78
79lflags=${lflags[*]}
80export LTFLAGS=${lflags}
81
82./configure --prefix=/usr "$@"
01fdc502 83sed --in-place='' -e 's/\(-arch armv6\) -arch i386 -arch x86_64/\1/' GNUmakefile
8ad1528b
JF
84
85make clean
86make -j ldid=ldid all
871ab549 87PATH=/sw/bin:$PATH make arch=iphoneos-arm dll=dylib depends='apr-lib, readline, libffi (>= 1:3.0.10-5), adv-cmds' package