radare2/sys/ios-cydia.sh

130 lines
2.7 KiB
Bash
Executable File

#!/bin/sh
set -x
STOW=0
fromscratch=1 # 1
onlymakedeb=0
static=1
gcc -v 2> /dev/null
if [ $? = 0 ]; then
export HOST_CC=gcc
fi
if [ -z "${CPU}" ]; then
export CPU=arm64
#export CPU=armv7
fi
if [ -z "${PACKAGE}" ]; then
PACKAGE=radare2
fi
export BUILD=1
if [ ! -d sys/ios-include/mach/vm_behavior.h ]; then
(
cd sys && \
wget -c https://lolcathost.org/b/ios-include.tar.gz && \
tar xzvf ios-include.tar.gz
)
fi
. sys/ios-env.sh
if [ "${STOW}" = 1 ]; then
PREFIX=/private/var/radare2
else
PREFIX=/usr
fi
ROOT=dist/cydia/radare2/root
makeDeb() {
make -C binr ios-sdk-sign
rm -rf /tmp/r2ios
make install DESTDIR=/tmp/r2ios
rm -rf /tmp/r2ios/${PREFIX}/share/radare2/*/www/*/node_modules
( cd /tmp/r2ios && tar czvf ../r2ios-${CPU}.tar.gz ./* )
rm -rf "${ROOT}"
mkdir -p "${ROOT}"
sudo tar xpzvf /tmp/r2ios-${CPU}.tar.gz -C "${ROOT}"
rm -f ${ROOT}/${PREFIX}/lib/*.{a,dylib,dSYM}
if [ "$static" = 1 ]; then
(
rm -f ${ROOT}/${PREFIX}/bin/*
cp -f binr/blob/radare2 "${ROOT}/${PREFIX}/bin"
cd ${ROOT}/${PREFIX}/bin
for a in r2 rabin2 rarun2 rasm2 ragg2 rahash2 rax2 rafind2 radiff2 ; do ln -fs radare2 $a ; done
)
echo "Signing radare2"
ldid2 -Sbinr/radare2/radare2_ios.xml ${ROOT}/usr/bin/radare2
else
for a in "${ROOT}/usr/bin/"* "${ROOT}/usr/lib/"*.dylib ; do
echo "Signing $a"
ldid2 -Sbinr/radare2/radare2_ios.xml $a
done
fi
if [ "${STOW}" = 1 ]; then
(
cd "${ROOT}/"
mkdir -p usr/bin
# stow
echo "Stowing ${PREFIX} into /usr..."
for a in `cd ./${PREFIX}; ls` ; do
if [ -d "./${PREFIX}/$a" ]; then
mkdir -p "usr/$a"
for b in `cd ./${PREFIX}/$a; ls` ; do
echo ln -fs "${PREFIX}/$a/$b" usr/$a/$b
ln -fs "${PREFIX}/$a/$b" usr/$a/$b
done
fi
done
)
else
echo "No need to stow anything"
fi
( cd dist/cydia/radare2 ; sudo make clean ; sudo make PACKAGE=${PACKAGE} )
}
if [ "$1" = makedeb ]; then
onlymakedeb=1
fi
if [ "$1" = "--shell" ]; then
echo "Entering the ios-cydia shell"
${SHELL}
exit 0
fi
if [ $onlymakedeb = 1 ]; then
makeDeb
else
RV=0
export CC="ios-sdk-gcc"
if [ $fromscratch = 1 ]; then
make clean
cp -f dist/plugins-cfg/plugins.ios.cfg plugins.cfg
if [ "$static" = 1 ]; then
./configure --prefix="${PREFIX}" --with-ostype=darwin \
--with-compiler=ios-sdk --target=arm-unknown-darwin --with-libr
else
./configure --prefix="${PREFIX}" --with-ostype=darwin \
--with-compiler=ios-sdk --target=arm-unknown-darwin
fi
RV=$?
fi
if [ $RV = 0 ]; then
time make -j4 || exit 1
if [ "$static" = 1 ]; then
ls -l libr/util/libr_util.a || exit 1
ls -l libr/flag/libr_flag.a || exit 1
rm -f libr/*/*.dylib
(
cd binr ; make clean ;
cd blob ; make USE_LTO=1
xcrun --sdk iphoneos strip radare2
)
fi
[ $? = 0 ] && makeDeb
fi
fi