]> git.saurik.com Git - cycript.git/blame_incremental - ios.sh
Only link libcycript against libffi (not cycript).
[cycript.git] / ios.sh
... / ...
CommitLineData
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
22set -e
23
24rm -rf sysroot.ios
25mkdir -p sysroot.ios
26
27for 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}"
34done
35
36mkdir -p sysroot.ios/usr/include/ffi
37mv -v sysroot.ios/usr/include/{,ffi/}ffi.h
38
39plt=iPhoneOS
40dev=/Developer/Platforms/${plt}.platform/Developer
41sdk=${dev}/SDKs/${plt}5.0.sdk
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
49export CC=${dev}/usr/bin/gcc
50export CXX=${dev}/usr/bin/g++
51export OBJCXX=${dev}/usr/bin/g++
52
53flags_armv6=()
54flags_armv6+=(-isysroot "${sdk}")
55
56flags_armv6+=(-Fsysroot.ios/Library/Frameworks)
57flags_armv6+=(-Isysroot.ios/usr/include)
58flags_armv6+=(-Lsysroot.ios/usr/lib)
59
60flags_armv6+=(-F"${sdk}"/System/Library/PrivateFrameworks)
61flags_armv6+=(-framework WebCore)
62
63
64flags=(-O2)
65for flag in "${flags_armv6[@]}"; do
66 flags+=(-Xarch_armv6 "${flag}")
67done
68
69cflags=${flags[*]}
70export CFLAGS=${cflags}
71export CXXFLAGS=${cflags}
72export OBJCXXFLAGS=${cflags}
73
74lflags=()
75for flag in "${flags[@]}"; do
76 lflags+=("-Xcompiler ${flag}")
77done
78
79lflags=${lflags[*]}
80export LTFLAGS=${lflags}
81
82./configure --prefix=/usr "$@"
83sed --in-place='' -e 's/\(-arch armv6\) -arch i386 -arch x86_64/\1/' GNUmakefile
84
85make clean
86make -j ldid=ldid all
87PATH=/sw/bin:$PATH make arch=iphoneos-arm dll=dylib depends='apr-lib, readline, libffi (>= 1:3.0.10-5), adv-cmds' package