]> git.saurik.com Git - cycript.git/blame - xcode.sh
Recreate ios.mk (creates .deb) out of rules.old.
[cycript.git] / xcode.sh
CommitLineData
944dc32c 1#!/usr/bin/env bash
800811a0 2
a93f15c0
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
800811a0
JF
22set -e
23
a93f15c0 24cd "${0%%/*}"
800811a0 25
a93f15c0
JF
26if [[ ! -e readline/libreadline.a ]]; then
27 ./readline.sh; fi
28if [[ ! -e libffi.a ]]; then
29 ./libffi.sh; fi
81d7bcec
JF
30
31if ! which aclocal; then
32 touch aclocal.m4; fi
33if ! which autoconf; then
34 touch configure.ac; fi
35if ! which automake; then
36 touch Makefile.in; fi
37if ! which autoheader; then
38 touch config.h.in; fi
800811a0 39
a93f15c0
JF
40flags=("$@")
41
42function path() {
43 xcodebuild -sdk "$1" -version Path
44}
45
46xcs=$(xcode-select --print-path)
47mac=$(path macosx)
48
49function configure() {
50 local dir=$1
51 local sdk=$2
52 local flg=$3
53 shift 3
54
4af4085c
JF
55 cc=$(xcrun --sdk "${sdk}" -f clang)
56 cxx=$(xcrun --sdk "${sdk}" -f clang++)
a93f15c0
JF
57 flg+=" -isysroot $(path "${sdk}")"
58
59 rm -rf build."${dir}"
60 mkdir build."${dir}"
61 cd build."${dir}"
5239f927
JF
62
63 CC="${cc} ${flg}" CXX="${cxx} ${flg}" OBJCXX="${cxx} ${flg}" \
64 ../configure "${flags[@]}" --prefix="/usr" "$@"
65
a93f15c0
JF
66 cd ..
67}
68
abc804fa 69for arch in i386 x86_64; do
5239f927
JF
70 configure "mac-${arch}" "${mac}" "-arch ${arch} -mmacosx-version-min=10.6" \
71 CPPFLAGS="-I../readline" LDFLAGS="-L../readline"
abc804fa 72done
a93f15c0
JF
73
74function build() {
75 local dir=$1
76 local sdk=$2
77 local flg=$3
78 shift 3
79
e9abea04 80 configure "${dir}" "${sdk}" "${flg}" "$@" --enable-static --with-pic
a93f15c0
JF
81}
82
abc804fa 83for arch in i386; do
5239f927
JF
84 build "sim-${arch}" iphonesimulator "-arch ${arch} -mios-simulator-version-min=2.0" \
85 OBJCXXFLAGS="-fobjc-abi-version=2 -fobjc-legacy-dispatch" \
86 CPPFLAGS="-I../libffi.${arch}/include" \
87 LDFLAGS="-L.." \
88 --disable-console
abc804fa
JF
89done
90
e9abea04
JF
91for arch in armv6 armv7 armv7s; do
92 if [[ ${arch} == armv6 ]]; then
93 sdk=iphoneos5.1
94 flg=()
95 else
96 sdk=iphoneos
97 flg=(--disable-console)
98 fi
99
5239f927
JF
100 build "ios-${arch}" "${sdk}" "-arch ${arch} -miphoneos-version-min=2.0" --host=arm-apple-darwin10 \
101 CPPFLAGS="-I../libffi.${arch}/include -I../sysroot.ios/usr/include -I../sysroot.ios/usr/include/apr-1" \
102 LDFLAGS="-L.. -L../sysroot.ios/usr/lib" \
103 LTLIBAPR="../sysroot.ios/usr/lib/libapr-1.dylib" \
104 "${flg[@]}"
abc804fa 105done