-#!/bin/bash
+#!/usr/bin/env bash
+
+# Cycript - Optimizing JavaScript Compiler/Runtime
+# Copyright (C) 2009-2013 Jay Freeman (saurik)
+
+# GNU General Public License, Version 3 {{{
+#
+# Cycript is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published
+# by the Free Software Foundation, either version 3 of the License,
+# or (at your option) any later version.
+#
+# Cycript is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Cycript. If not, see <http://www.gnu.org/licenses/>.
+# }}}
set -e
-shopt -s extglob
-
hpp=$1
object=$2
name=$3
sed=$4
-otool=$5
-lipo=$6
-nm=$7
-shift 7
-
-#shift 1
-#set /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/usr/include "$@"
+lipo=$5
+nm=$6
+otool=$7
-"$@"
+exec >"${hpp}"
detailed=$("${lipo}" -detailed_info "${object}")
-{
-
regex=$'\nNon-fat file: .* is architecture: (.*)'
if [[ ${detailed} =~ ${regex} ]]; then
archs=(${BASH_REMATCH[1]})
x; }; x;
/^ *cmd LC_SEGMENT/ { x; s/.*/1/; x; };
-
+
d;
'))
echo
echo "static const char ${name}_${arch}_data_[] = {"
- od -v -t x1 -t c -j "$((offset + fileoff))" -N "${filesize}" "${object}" | "${sed}" -e '
+ LANG=C od -v -t x1 -t c -j "$((offset + fileoff))" -N "${filesize}" "${object}" | "${sed}" -e '
/^[0-7]/ ! {
s@^ @// @;
s/\(....\)/ \1/g;
echo
echo "/*"
- "${otool}" -vVt -arch "${arch}" "${object}"
+ "${otool}" -arch "${arch}" -vVt "${object}"
echo "*/"
echo
- echo "static Trampoline ${name}_${arch}_ = {"
+ echo "_disused static Trampoline ${name}_${arch}_ = {"
echo " ${name}_${arch}_data_,"
echo " sizeof(${name}_${arch}_data_),"
echo " ${name}_${arch}_entry_,"
echo "};"
-done
-
-} >"${hpp}"
-#rm -f "${object}"
+done