osxcross/tools/gen_sdk_package_p7zip.sh

111 lines
2.1 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
#
# Extract required files from a Xcode .dmg using p7zip and run
# gen_sdk_package.sh.
#
# Works up to Xcode 7.2
#
# p7zip will be downloaded and compiled if missing.
#
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
case $1 in
/*) XCODEDMG="$1" ;;
*) XCODEDMG="$PWD/$1" ;;
esac
mkdir -p $BUILD_DIR
require git
require $MAKE
[ -n "$CC" ] && require $CC
[ -n "$CXX" ] && require $CXX
pushd $BUILD_DIR &>/dev/null
if [ ! -f $TARGET_DIR/SDK/tools/bin/7z ]; then
rm -f have_p7zip
fi
if [ ! -f "have_p7zip" ]; then
rm -rf p7zip*
git clone https://github.com/tpoechtrager/p7zip.git
pushd p7zip &>/dev/null
if [ -n "$CC" ] && [ -n "$CXX" ]; then
[[ $CC == *clang* ]] && CC="$CC -Qunused-arguments"
[[ $CXX == *clang* ]] && CXX="$CXX -Qunused-arguments"
$MAKE 7z -j $JOBS CC="$CC" CXX="$CXX -std=gnu++03"
else
$MAKE 7z -j $JOBS CXX="c++ -std=gnu++03"
fi
$MAKE install DEST_HOME=$TARGET_DIR/SDK/tools
find $TARGET_DIR/SDK/tools/share -type f -exec chmod 0664 {} \;
find $TARGET_DIR/SDK/tools/share -type d -exec chmod 0775 {} \;
popd &>/dev/null
touch "have_p7zip"
fi
popd &>/dev/null
#/tmp is prone to run out of space
#TMP=$(mktemp -d /tmp/XXXXXXXXX)
for i in {1..100}; do
TMP="tmp_$RANDOM"
[ -e $TMP ] && continue
mkdir $TMP && break
done
if [ ! -d $TMP ]; then
echo "cannot create $PWD/$TMP directory" 1>&2
exit 1
fi
function cleanup() {
popd &>/dev/null || true
rm -rf $TMP
}
trap cleanup EXIT
pushd $TMP &>/dev/null
set +e
$TARGET_DIR/SDK/tools/bin/7z x \
$XCODEDMG \
"*/Xcode*.app/Contents/Developer/Platforms/MacOSX.platform" \
"*/Xcode*.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain"
[ $? -ne 0 -a $? -ne 2 ] && exit 1
if [ -z "$(ls -A)" ]; then
$TARGET_DIR/SDK/tools/bin/7z x $XCODEDMG "*/Packages/MacOSX*.pkg"
[ $? -ne 0 -a $? -ne 2 ] && exit 1
fi
[ -z "$(ls -A)" ] && exit 1
set -e
popd &>/dev/null
XCODEDIR="$TMP/$(ls $TMP | grep "code" | head -n1)" \
./tools/gen_sdk_package.sh