|
| 1 | +#!/bin/sh -e |
| 2 | + |
| 3 | +R2PKGDIR="$1" |
| 4 | +APPDIR="$2" |
| 5 | + |
| 6 | +SCRIPTS="$(dirname "$0")" |
| 7 | +R2DIR="${R2PKGDIR}/Payload/usr/local" |
| 8 | +R2V=$(readlink "${R2DIR}/lib/radare2/last") |
| 9 | + |
| 10 | +fix_binary() { |
| 11 | + echo "Change library paths for \"$1\"..." |
| 12 | + ARGS=$(otool -L "$1" | awk '/\/usr\/local\/lib\/libr_/{dst=$1; sub(/\/usr\/local\/lib/,"@executable_path/../Frameworks", dst); print "-change "$1" "dst}') |
| 13 | + [ -n "$ARGS" ] && install_name_tool $ARGS "$1" |
| 14 | +} |
| 15 | + |
| 16 | +mkdir -p \ |
| 17 | + "${APPDIR}/Contents/Helpers" \ |
| 18 | + "${APPDIR}/Contents/Frameworks" \ |
| 19 | + "${APPDIR}/Contents/PlugIns/radare2" \ |
| 20 | + "${APPDIR}/Contents/Resources/radare2/bin" \ |
| 21 | + "${APPDIR}/Contents/Resources/radare2/lib/radare2" |
| 22 | + |
| 23 | +cp -a "${R2DIR}/bin/"* "${APPDIR}/Contents/Helpers/" |
| 24 | +cp -a "${R2DIR}/lib/radare2/${R2V}/"* "${APPDIR}/Contents/PlugIns/radare2/" |
| 25 | +cp -a "${R2DIR}/lib/"*.dylib "${APPDIR}/Contents/Frameworks/" |
| 26 | +cp -a "${R2DIR}/include" "${APPDIR}/Contents/Resources/radare2/" |
| 27 | +cp -a "${R2DIR}/share" "${APPDIR}/Contents/Resources/radare2/" |
| 28 | +#cp -a "${R2DIR}/lib/pkgconfig" "${APPDIR}/Contents/Resources/radare2/lib/" |
| 29 | +cp -p "${SCRIPTS}/command.sh" "${APPDIR}/Contents/Resources/radare2/bin/radare2" |
| 30 | +cp -a "${R2DIR}/lib/radare2/last" "${APPDIR}/Contents/Resources/radare2/lib/radare2/" |
| 31 | +ln -s "../../../../PlugIns/radare2" "${APPDIR}/Contents/Resources/radare2/lib/radare2/${R2V}" |
| 32 | + |
| 33 | +( |
| 34 | + cd "${APPDIR}/Contents/MacOS" |
| 35 | + fix_binary "iaito" |
| 36 | +) |
| 37 | + |
| 38 | +( |
| 39 | + cd "${APPDIR}/Contents/Helpers" |
| 40 | + for c in *; do |
| 41 | + [ -L "$c" ] || fix_binary "$c" |
| 42 | + [ "$c" != "radare2" ] && ln -s radare2 "../Resources/radare2/bin/$c" |
| 43 | + done |
| 44 | +) |
| 45 | + |
| 46 | +( |
| 47 | + LIBS=$(cd "${R2DIR}/lib"; ls *.dylib) |
| 48 | + cd "${APPDIR}/Contents/Frameworks" |
| 49 | + for c in $LIBS; do |
| 50 | + [ -L "$c" ] || fix_binary "$c" |
| 51 | + c2=$c # Resolve upto 2 link levels |
| 52 | + [ -L "$c2" ] && c2=$(readlink "$c2") |
| 53 | + [ -L "$c2" ] && c2=$(readlink "$c2") |
| 54 | + ln -s "../../../Frameworks/$c2" "../Resources/radare2/lib/$c" |
| 55 | + done |
| 56 | +) |
| 57 | + |
| 58 | +( |
| 59 | + cd "${APPDIR}/Contents/PlugIns/radare2" |
| 60 | + for c in *; do |
| 61 | + [ -L "$c" ] || fix_binary "$c" |
| 62 | + done |
| 63 | +) |
0 commit comments