osxcross/tools/gen_sdk_package.sh

106 lines
1.8 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
#
# OS X SDK packaging script
# This script must be run on OS X
#
2014-04-06 15:58:15 +02:00
if [ $(uname -s) != "Darwin" ]; then
echo "This script must be run on OS X"
exit 1
fi
XCODEDIR=$(ls /Volumes | grep Xcode | head -n1)
if [ -z "$XCODEDIR" ]; then
2014-04-06 15:58:15 +02:00
if [ -d "/Applications/Xcode.app" ]; then
XCODEDIR="/Applications/Xcode.app"
else
echo "please mount Xcode.dmg"
exit 1
fi
else
2014-04-06 15:58:15 +02:00
XCODEDIR="/Volumes/$XCODEDIR/Xcode.app"
fi
[ ! -d $XCODEDIR ] && exit 1
echo -e "found Xcode: $XCODEDIR"
WDIR=$(pwd)
which gnutar &>/dev/null
if [ $? -eq 0 ]; then
2014-04-06 15:58:15 +02:00
TAR=gnutar
else
2014-04-06 15:58:15 +02:00
TAR=tar
fi
which xz &>/dev/null
if [ $? -eq 0 ]; then
2014-04-06 15:58:15 +02:00
COMPRESSOR=xz
PKGEXT="tar.xz"
else
2014-04-06 15:58:15 +02:00
COMPRESSOR=bzip2
PKGEXT="tar.bz2"
fi
set -e
pushd $XCODEDIR &>/dev/null
pushd "Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs" &>/dev/null || {
2014-04-06 15:58:15 +02:00
echo "Xcode (or this script) is out of date"
echo "trying some magic to find the SDKs anyway ..."
2014-04-06 15:58:15 +02:00
SDKDIR=$(find . -name SDKs -type d | grep MacOSX | head -n1)
2014-04-06 15:58:15 +02:00
if [ -z "$SDKDIR" ]; then
echo "cannot find SDKs!"
exit 1
fi
2014-04-06 15:58:15 +02:00
pushd $SDKDIR &>/dev/null
}
SDKS=$(ls | grep MacOSX)
if [ -z "$SDKS" ]; then
echo "No SDK found"
exit 1
fi
LIBCXXDIR="Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1"
for SDK in $SDKS; do
2014-04-06 15:58:15 +02:00
echo "packaging ${SDK/.sdk/} SDK (this may take several minutes) ..."
2014-04-06 15:58:15 +02:00
if [[ $SDK == *.pkg ]]; then
cp $SDK $WDIR
continue
fi
2014-04-06 15:58:15 +02:00
TMP=$(mktemp -d /tmp/XXXXXXXXXXX)
cp -r $SDK $TMP &>/dev/null || true
2014-04-06 15:58:15 +02:00
pushd $XCODEDIR &>/dev/null
2014-04-06 15:58:15 +02:00
# libc++ headers for C++11/C++14
if [ -d $LIBCXXDIR ]; then
cp -rf $LIBCXXDIR "$TMP/$SDK/usr/include/c++"
fi
2014-04-06 15:58:15 +02:00
popd &>/dev/null
2014-04-06 15:58:15 +02:00
pushd $TMP &>/dev/null
$TAR -cf - * | $COMPRESSOR -9 -c - > "$WDIR/$SDK.$PKGEXT"
popd &>/dev/null
2014-04-06 15:58:15 +02:00
rm -rf $TMP
done
popd &>/dev/null
popd &>/dev/null
echo ""
ls -l | grep MacOSX