2015-05-30 21:01:48 +02:00
|
|
|
#!/usr/bin/env bash
|
2017-01-18 11:02:52 +01:00
|
|
|
#
|
2018-06-29 16:10:45 +02:00
|
|
|
# Mount an Xcode .dmg (using fuse) and run gen_sdk_package.sh.
|
2017-01-18 11:02:52 +01:00
|
|
|
#
|
|
|
|
# Works up to Xcode 7.3
|
|
|
|
#
|
|
|
|
# This script uses darling-dmg and fuse to mount the .dmg, thus
|
|
|
|
# avoiding to actually unpack it.
|
|
|
|
# darling-dmg will be downloaded and compiled if missing.
|
|
|
|
#
|
2015-05-30 21:01:48 +02:00
|
|
|
|
|
|
|
pushd "${0%/*}/.." &>/dev/null
|
|
|
|
source tools/tools.sh
|
|
|
|
|
|
|
|
if [ $PLATFORM == "Darwin" ]; then
|
|
|
|
echo "Use gen_sdk_package.sh on Mac OS X" 1>&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $# -eq 0 ]; then
|
|
|
|
echo "Usage: $0 <xcode.dmg>" 1>&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
mkdir -p $BUILD_DIR
|
|
|
|
|
|
|
|
require git
|
|
|
|
require cmake
|
2015-06-21 14:01:49 +02:00
|
|
|
require $MAKE
|
2015-05-30 21:01:48 +02:00
|
|
|
require modinfo
|
|
|
|
require fusermount
|
|
|
|
|
2015-06-21 14:01:49 +02:00
|
|
|
[ -n "$CC" ] && require $CC
|
|
|
|
[ -n "$CXX" ] && require $CXX
|
|
|
|
|
2015-05-30 21:01:48 +02:00
|
|
|
set +e
|
|
|
|
|
2016-09-17 14:30:26 +02:00
|
|
|
command -v lsb_release 2>&1 > /dev/null
|
|
|
|
|
2016-09-18 20:34:52 +02:00
|
|
|
if [[ $? -eq 0 ]] && [[ -n $(lsb_release -a 2>&1 | grep -i ubuntu) ]]; then
|
|
|
|
echo "Using ubuntu, skipping fuse module check"
|
2016-09-17 14:30:26 +02:00
|
|
|
else
|
2016-09-18 20:34:52 +02:00
|
|
|
modinfo fuse &>/dev/null
|
2016-09-17 14:30:26 +02:00
|
|
|
fi
|
2015-05-30 21:01:48 +02:00
|
|
|
|
|
|
|
if [ $? -ne 0 ]; then
|
2016-09-18 20:34:52 +02:00
|
|
|
echo "Required kernel module 'fuse' not loaded" 1>&2
|
|
|
|
echo "Please run 'insmod fuse' as root" 1>&2
|
2015-05-30 21:01:48 +02:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
pushd $BUILD_DIR &>/dev/null
|
|
|
|
|
2015-06-21 14:01:49 +02:00
|
|
|
if [ ! -f $TARGET_DIR/SDK/tools/bin/darling-dmg ]; then
|
2015-05-30 21:01:48 +02:00
|
|
|
rm -f have_darling_dmg
|
|
|
|
fi
|
|
|
|
|
2018-06-29 16:10:45 +02:00
|
|
|
DARLING_DMG_REV="991a1c19d67e30ad1099fc871c4f9e702dd4d489"
|
2016-04-13 19:08:19 +02:00
|
|
|
|
|
|
|
if [ ! -f "have_darling_dmg_$DARLING_DMG_REV" ]; then
|
2015-05-30 21:01:48 +02:00
|
|
|
|
|
|
|
rm -rf darling-dmg*
|
|
|
|
git clone https://github.com/LubosD/darling-dmg.git
|
|
|
|
pushd darling-dmg &>/dev/null
|
2016-04-13 19:08:19 +02:00
|
|
|
git reset --hard $DARLING_DMG_REV
|
2015-05-30 21:01:48 +02:00
|
|
|
mkdir -p build
|
|
|
|
pushd build &>/dev/null
|
2015-06-21 14:01:49 +02:00
|
|
|
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$TARGET_DIR/SDK/tools
|
|
|
|
$MAKE -j $JOBS install
|
2015-05-30 21:01:48 +02:00
|
|
|
popd &>/dev/null
|
|
|
|
popd &>/dev/null
|
|
|
|
|
2016-04-13 19:08:19 +02:00
|
|
|
touch "have_darling_dmg_$DARLING_DMG_REV"
|
2015-05-30 21:01:48 +02:00
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
popd &>/dev/null # build dir
|
|
|
|
|
|
|
|
TMP=$(mktemp -d /tmp/XXXXXXXXX)
|
|
|
|
|
|
|
|
function cleanup() {
|
|
|
|
fusermount -u $TMP || true
|
|
|
|
rm -rf $TMP
|
|
|
|
}
|
|
|
|
|
|
|
|
trap cleanup EXIT
|
|
|
|
|
2016-04-13 19:08:19 +02:00
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TARGET_DIR/SDK/tools/lib \
|
|
|
|
$TARGET_DIR/SDK/tools/bin/darling-dmg $1 $TMP
|
|
|
|
|
2015-05-30 21:01:48 +02:00
|
|
|
XCODEDIR=$TMP ./tools/gen_sdk_package.sh
|