115 lines
2.7 KiB
Bash
Executable File
115 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
if [ "$1" = "-h" ]; then
|
|
echo "Usage: sys/ios-static.sh [armv7|arm64]"
|
|
exit 0
|
|
fi
|
|
|
|
if [ -n "$1"]; then
|
|
export CPU="$1"
|
|
fi
|
|
|
|
if [ -z "${CPU}" ]; then
|
|
export CPU=arm64
|
|
# export CPU=armv7
|
|
fi
|
|
|
|
STATIC_BINS=1
|
|
CLEAN_BUILD=1
|
|
|
|
R2BINS="radare2 rabin2 rasm2 r2pm r2agent radiff2 rafind2 ragg2 rahash2 rarun2 rasm2 rax2"
|
|
CAPSTONE_ARCHS="arm aarch64"
|
|
#export CAPSTONE_MAKEFLAGS="CAPSTONE_ARCHS=\"arm aarch64\""
|
|
# Build all archs for capstone, not just ARM/ARM64
|
|
# export CAPSTONE_MAKEFLAGS=""
|
|
|
|
[ -z "${MAKE}" ] && MAKE=make
|
|
[ -z "${MAKE_JOBS}" ] && MAKE_JOBS=12
|
|
|
|
# if set to 1 build without fork or debugger support
|
|
if [ -z "${APPSTORE_FRIENDLY}" ]; then
|
|
APPSTORE_FRIENDLY=0
|
|
fi
|
|
|
|
export BUILD=1
|
|
PREFIX="/usr"
|
|
# PREFIX=/var/mobile
|
|
|
|
if [ ! -f sys/ios-include/mach/mach_vm.h ]; then
|
|
(
|
|
cd sys && \
|
|
wget http://lolcathost.org/b/ios-include.tar.gz && \
|
|
tar xzvf ios-include.tar.gz
|
|
)
|
|
fi
|
|
|
|
export PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:$PATH
|
|
export PATH=$(pwd)/sys:${PATH}
|
|
export CC=$(pwd)/sys/ios-sdk-gcc
|
|
# set only for arm64, otherwise it is armv7
|
|
# select ios sdk version
|
|
export IOSVER=9.3
|
|
export IOSINC=$(pwd)/sys/ios-include
|
|
#export CFLAGS=-O2
|
|
export CFLAGS="-Os -flto"
|
|
export LDFLAGS="-flto"
|
|
export USE_SIMULATOR=0
|
|
|
|
if [ "${APPSTORE_FRIENDLY}" = 1 ]; then
|
|
CFGFLAGS="--without-fork --disable-debugger"
|
|
else
|
|
CFGFLAGS=""
|
|
fi
|
|
|
|
if [ "${CLEAN_BUILD}" = 1 ] ; then
|
|
${MAKE} clean
|
|
cp -f plugins.tiny.cfg plugins.cfg
|
|
cp -f plugins.ios.cfg plugins.cfg
|
|
|
|
./configure --prefix="${PREFIX}" \
|
|
${CFGFLAGS} \
|
|
--with-ostype=darwin --with-libr \
|
|
--without-gpl --without-fork --without-libuv \
|
|
--with-compiler=ios-sdk --with-capstone5 \
|
|
--target=arm-unknown-darwin
|
|
fi
|
|
|
|
if [ $? = 0 ]; then
|
|
time ${MAKE} -j${MAKE_JOBS} CAPSTONE_ARCHS="${CAPSTONE_ARCHS}"
|
|
if [ $? = 0 ]; then
|
|
if [ "${STATIC_BINS}" = 1 ]; then
|
|
(
|
|
find . -iname '*.dylib' |xargs rm -f
|
|
cd binr ; make clean
|
|
make
|
|
)
|
|
fi
|
|
( cd binr/radare2 ; ${MAKE} ios_sdk_sign )
|
|
rm -rf /tmp/r2ios
|
|
${MAKE} install DESTDIR=/tmp/r2ios
|
|
rm -rf /tmp/r2ios/usr/share/radare2/*/www/enyo/node_modules
|
|
( cd /tmp/r2ios && tar czvf ../r2ios-static-${CPU}.tar.gz ./* )
|
|
rm -rf sys/cydia/radare2/root
|
|
mkdir -p sys/cydia/radare2/root
|
|
sudo tar xpzvf /tmp/r2ios-static-${CPU}.tar.gz -C sys/cydia/radare2/root
|
|
# ( cd sys/cydia/radare2 ; sudo ${MAKE} clean ; sudo ${MAKE} )
|
|
|
|
# Creating tarball
|
|
export D=radare2-ios-${CPU}
|
|
rm -rf $D
|
|
mkdir -p $D/bin
|
|
for a in ${R2BINS} ; do
|
|
cp -f binr/$a/$a "$D/bin"
|
|
done
|
|
mkdir -p "$D/include"
|
|
cp -rf sys/cydia/radare2/root/usr/include/* $D/include
|
|
mkdir -p $D/lib
|
|
cp -f libr/libr.a $D/lib
|
|
cp -f binr/preload/libr2.dylib $D/lib
|
|
for a in $D/bin/* ; do
|
|
strip $a
|
|
done
|
|
tar czvf $D.tar.gz $D
|
|
fi
|
|
fi
|