]> git.saurik.com Git - veency.git/blame - library.sh
This is so far the best tradeoff for no passwords.
[veency.git] / library.sh
CommitLineData
7a024130
JF
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
3d5b3ddd
JF
24archs=()
25
7a024130
JF
26function arch() {
27 local arch=$1
28 local host=$2
29 local sdk=$3
30 local os=$4
31 local min=$5
32 shift 5
33
b7f88a8a 34 rm -rf "libjpeg.${arch}"
7a024130 35 rm -rf "libvncserver.${arch}"
b7f88a8a 36
7a024130
JF
37 if ! isysroot=$(xcodebuild -sdk "${sdk}" -version Path); then
38 return
39 fi
40
b7f88a8a 41 mkdir "libjpeg.${arch}"
7a024130
JF
42 mkdir "libvncserver.${arch}"
43
44 flags=()
45 flags+=(-isysroot "${isysroot}")
46 flags+=(-m${os}-version-min="${min}")
47 flags+=(-O3 -g3)
48 flags+=(-fvisibility=hidden)
49
50 if [[ ${arch} == arm* && ${arch} != arm64 ]]; then
51 flags+=(-mthumb)
52 fi
53
b7f88a8a
JF
54 cpp="$*"
55
56 function configure() {
57 code=$1
58 shift
59 CC="clang -arch ${arch}" CXX="clang++ -arch ${arch}" CFLAGS="${flags[*]}" CPPFLAGS="${flags[*]} ${cpp}" ../"${code}"/configure --host="${host}" --disable-shared "$@"
60 }
61
62 cd "libjpeg.${arch}"
63 configure jpeg-9a
64 make
65 cd ..
66
67 flags+=(-I"${PWD}/jpeg-9a")
68
69 jpeg=${PWD}/libjpeg.${arch}
70 flags+=(-I"${jpeg}")
71
7a024130 72 cd "libvncserver.${arch}"
b7f88a8a 73 configure libvncserver JPEG_LDFLAGS="-L${jpeg}/.libs -ljpeg"
6be6e24f 74 make -C libvncserver
7a024130 75 cd ..
3d5b3ddd
JF
76
77 archs+=("${arch}")
7a024130
JF
78}
79
80arch armv6 arm-apple-darwin10 iphoneos iphoneos 2.0 -mllvm -arm-reserve-r9
3d5b3ddd 81arch armv7 arm-apple-darwin11 iphoneos iphoneos 2.0
7a024130 82arch arm64 aarch64-apple-darwin11 iphoneos iphoneos 2.0
3d5b3ddd
JF
83
84rm -rf library
85mkdir library
86lipo -output library/libjpeg.a -create $(for arch in "${archs[@]}"; do echo libjpeg.${arch}/.libs/libjpeg.a; done)
87lipo -output library/libvncserver.a -create $(for arch in "${archs[@]}"; do echo libvncserver.${arch}/libvncserver/.libs/libvncserver.a; done)
88
89lipo -output library/libsurface-armv6.dylib -thin armv7 "$(xcodebuild -sdk iphoneos -version Path)/System/Library/PrivateFrameworks/CoreSurface.framework/CoreSurface"
90LANG=C /sw/bin/sed -i -e 's@\(\xCE\xFA\xED\xFE\x0C\x00\x00\x00\)\x09\x00\x00\x00@\1\x06\x00\x00\x00@' library/libsurface-armv6.dylib
91lipo -output library/libsurface.dylib -create library/libsurface-armv6.dylib "$(xcodebuild -sdk iphoneos -version Path)/System/Library/PrivateFrameworks/IOSurface.framework/IOSurface"