A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1306 lines
67 KiB

#!/bin/bash
# XCodeLegacy.sh
#
# Original author: Frederic Devernay <frederic.devernay@m4x.org>
# Contributors:
# - Garrett Walbridge <gwalbridge+xcodelegacy@gmail.com>
# - Jae Liu <ling32945@github>
# - Eric Knibbe <EricFromCanada@github>
# - Chris Roueche <croueche@github>
# - Kris Coppieters <zwettemaan@github>
# - Nick Beadman <nbeadman@gmail.com> / <nbeadman@github>
#
# License: Creative Commons BY-NC-SA 3.0 http://creativecommons.org/licenses/by-nc-sa/3.0/
#
# History:
# 1.0 (08/10/2012): First public version, supports Xcode up to version 4.6.3
# 1.1 (20/09/2013): Xcode 5 removed llvm-gcc and 10.7 SDK support, grab them from Xcode 3 and 4
# 1.2 (03/02/2014): Xcode 5 broke PPC assembly and linking; fix assembly and grab linker from Xcode 3
# 1.3 (07/10/2014): Xcode 6 removed 10.8 SDK, grab it from Xcode 5.1.1
# 1.4 (21/08/2015): Xcode 7 removed 10.9 and 10.10 SDKs, grab them from Xcode 6.4
# 1.5 (15/10/2015): Fixes for OS X 10.11 El Capitan (nothing can be installed in /usr/bin because of the sandbox)
# 1.6 (11/11/2015): Fix buildpackages, fix /usr/bin/gcc on recent OS X, fix download messages
# 1.7 (05/04/2016): Xcode 7.3 disables support for older SDKs, fix that
# 1.8 (07/04/2016): add options to install only some SDKs or compilers only
# 1.9 (16/09/2016): Xcode 8 dropped 10.11 SDK, get it from Xcode 7.3.1
# 2.0 (02/05/2017): Xcode 8 cannot always link i386 for OS X 10.5, use the Xcode 3 linker for this arch too. Force use of legacy assembler with GCC 4.x.
# 2.1 (17/01/2017): Xcode 9 dropped 10.12 SDK, get it from https://github.com/phracker/MacOSX-SDKs; fix compiling with GNU Ada, and many other fixes
# 2.2 (12/02/2019): Added support for using macOS High Sierra 10.13 SDK from Xcode 9.4.1 for use on Xcode 10/macOS 10.14 Mojave, also changed source of OS X 10.12 SDK to Xcode 8.3.3
#set -e # Exit immediately if a command exits with a non-zero status
#set -u # Treat unset variables as an error when substituting.
#set -x # Print commands and their arguments as they are executed.
compilers=0
osx104=0
osx105=0
osx106=0
osx107=0
osx108=0
osx109=0
osx1010=0
osx1011=0
osx1012=0
osx1013=0
gotoption=0
error=0
while [[ $error = 0 ]] && [[ $# -gt 1 ]]; do
case $1 in
-compilers)
compilers=1
gotoption=1
shift
;;
-osx104)
osx104=1
gotoption=1
shift
;;
-osx105)
osx105=1
gotoption=1
shift
;;
-osx106)
osx106=1
gotoption=1
shift
;;
-osx107)
osx107=1
gotoption=1
shift
;;
-osx108)
osx108=1
gotoption=1
shift
;;
-osx109)
osx109=1
gotoption=1
shift
;;
-osx1010)
osx1010=1
gotoption=1
shift
;;
-osx1011)
osx1011=1
gotoption=1
shift
;;
-osx1012)
osx1012=1
gotoption=1
shift
;;
-osx1013)
osx1013=1
gotoption=1
shift
;;
*)
# unknown option or spurious arg
error=1
;;
esac
done
if [ $gotoption = 0 ]; then
compilers=1
osx104=1
osx105=1
osx106=1
osx107=1
osx108=1
osx109=1
osx1010=1
osx1011=1
osx1012=1
osx1013=1
fi
if [ $# != 1 ]; then
# ################################################################################ 80 cols
echo "Usage: $0 [-compilers|-osx104|-osx105|-osx106|-osx107|-osx108|-osx109|-osx1010|-osx1011|-osx1012|-osx1013] buildpackages|install|installbeta|cleanpackages|uninstall|uninstallbeta"
echo ""
echo "Description: Extracts / installs / cleans / uninstalls the following components"
echo "from Xcode 3.2.6, Xcode 4.6.3, Xcode 5.1.1, Xcode 6.4, Xcode 7.3.1, Xcode 8.3.3 and Xcode 9.4.1 which"
echo "are not available in Xcode >= 4.2:"
echo " - PPC assembler and linker"
echo " - GCC 4.0 and 4.2 compilers and Xcode plugins"
echo " - LLVM-GCC 4.2 compiler and Xcode plugin (Xcode >= 5)"
echo " - Mac OS X SDK 10.4u, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11, 10.12, 10.13"
echo ""
echo "An optional first argument may be provided to limit the operation (by default"
echo "everything is done):"
echo " -compilers : only install the gcc and llvm-gcc compilers, as well as the"
echo " corresponding Xcode plugins"
echo " -osx104 : only install Mac OSX 10.4 SDK"
echo " -osx105 : only install Mac OSX 10.5 SDK"
echo " -osx106 : only install Mac OSX 10.6 SDK"
echo " -osx107 : only install Mac OSX 10.7 SDK"
echo " -osx108 : only install OSX 10.8 SDK"
echo " -osx109 : only install OSX 10.9 SDK"
echo " -osx1010 : only install OSX 10.10 SDK"
echo " -osx1011 : only install OSX 10.11 SDK"
echo " -osx1012 : only install OSX 10.12 SDK"
echo " -osx1013 : only install OSX 10.13 SDK"
echo "Note that these can be combined. For example, to build and install the 10.9"
echo "and 10.10 SDKs, one could execute:"
echo " $ $0 -osx109 -osx1010 buildpackages"
echo " $ sudo $0 -osx109 -osx1010 install"
echo ""
echo "Typically, you will want to run this script with the buildpackages argument"
echo "first, then the install argument, and lastly the cleanpackages argument, in"
echo "order to properly install the legacy Xcode files."
echo "The install and uninstall phases have to be run with administrative rights, as"
echo "in:"
echo " $ sudo $0 install"
echo "The installbeta and uninstallbeta phases work on the beta versions of Xcode."
exit
fi
if [ "$1" = "installbeta" ] || [ "$1" = "uninstallbeta" ]; then
XCODEAPP="/Applications/Xcode-beta.app"
else
XCODEAPP="/Applications/Xcode.app"
fi
XCODE42=0
PLUGINDIR="$XCODEAPP/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins"
GCCDIR="$XCODEAPP/Contents/Developer"
SDKDIR="$GCCDIR/Platforms/MacOSX.platform/Developer"
if [ -d "$XCODEAPP" ]; then
echo "*** Info: found Xcode >= 4.3 in $XCODEAPP"
else
GCCDIR="/Developer"
XCODEAPP="$GCCDIR/Applications/Xcode.app"
PLUGINDIR="$GCCDIR/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins"
SDKDIR="$GCCDIR"
if [ -d "$XCODEAPP" ]; then
XCODE42=1
echo "*** Info: found Xcode <= 4.2.1 in $XCODEAPP"
else
echo "*** Info: could not find Xcode 4.2 in /Developer/Applications nor Xcode >= 4.3 in /Applications"
fi
fi
PLATFORMDIR="$GCCDIR/Platforms/MacOSX.platform"
GCCINSTALLDIR="$GCCDIR/Toolchains/XcodeDefault.xctoolchain"
GCCLINKDIR=/usr
RELEASENUM=$(uname -r | awk -F. '{print $1}')
if [ "$RELEASENUM" -gt 14 ]; then
# on OSX 10.11 El Capitan, nothing can be installed in /usr because of the Sandbox
# install in Xcode instead, and put links in /usr/local
GCCLINKDIR=/usr/local
elif [ "$RELEASENUM" -lt 10 ]; then
echo "*** Error: This script requires Mac OS X 10.6 Snow Leopard or newer."
exit 1
fi
GCCFILES="usr/share/man/man7/fsf-funding.7 usr/share/man/man7/gfdl.7 usr/share/man/man7/gpl.7 usr/share/man/man1/*-4.0.1 usr/share/man/man1/*-4.0.1.1 usr/libexec/gcc/*-apple-darwin10/4.0.1 usr/lib/gcc/*-apple-darwin10/4.0.1 usr/include/gcc/darwin/4.0 usr/bin/*-4.0 usr/bin/*-4.0.1 usr/share/man/man1/*-4.2.1 usr/share/man/man1/*-4.2.1.1 usr/libexec/gcc/*-apple-darwin10/4.2.1 usr/lib/gcc/*-apple-darwin10/4.2.1 usr/include/gcc/darwin/4.2 usr/bin/*-4.2 usr/bin/*-4.2.1"
LLVMGCCFILES="usr/llvm-gcc-4.2 usr/share/man/man1/llvm-g*.1.gz"
xc3="$(( compilers + osx104 + osx105 + osx106 != 0 ))"
xc4="$(( compilers + osx107 != 0 ))"
xc5="$(( osx108 != 0 ))"
xc6="$(( osx109 + osx1010 != 0 ))"
xc7="$(( osx1011 != 0 ))"
xc8="$(( osx1012 != 0 ))"
xc9="$(( osx1013 != 0 ))"
# The sole argument is the macOS version (e.g. 10.12)
installSDK() {
macos="$1"
macosnodot="${macos//./}"
if [ -d "$SDKDIR/SDKs/MacOSX${macos}.sdk" ]; then
echo "*** Not installing MacOSX${macos}.sdk (found installed in $SDKDIR/SDKs/MacOSX${macos}.sdk, uninstall first to force install)"
else
if [ -f Xcode${macosnodot}SDK.tar.gz ]; then
(gzip -dc Xcode${macosnodot}SDK.tar.gz | (cd "$SDKDIR" || exit; tar xf -)) && echo "*** installed Xcode${macosnodot}SDK.tar.gz"
elif [ -f MacOSX${macos}.sdk.tar.xz ]; then
(gzip -dc MacOSX${macos}.sdk.tar.xz | (cd "$SDKDIR/SDKs" || exit; tar xf -)) && echo "*** installed MacOSX${macos}.sdk.tar.xz"
else
echo "*** Could not install MacOSX${macos}.sdk"
echo "*** Before installing:"
echo "- execute \"$0 buildpackages\""
exit 1
fi
touch "$SDKDIR/SDKs/MacOSX${macos}.sdk/legacy"
fi
}
case $1 in
buildpackages)
#######################
# PHASE 1: PACKAGING
#
missingdmg=0
# note: Xcode links from http://stackoverflow.com/questions/10335747/how-to-download-xcode-4-5-6-7-and-get-the-dmg-file/10335943#10335943
if [ "$xc3" = 1 ] && [ ! -f xcode_3.2.6_and_ios_sdk_4.3.dmg ]; then
echo "*** You should download Xcode 3.2.6. Login to:"
echo " https://developer.apple.com/downloads/"
echo "then download from:"
echo " https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_3.2.6_and_ios_sdk_4.3__final/xcode_3.2.6_and_ios_sdk_4.3.dmg"
echo "or"
echo " https://adcdownload.apple.com/Developer_Tools/xcode_3.2.6_and_ios_sdk_4.3__final/xcode_3.2.6_and_ios_sdk_4.3.dmg"
echo "and then run this script from within the same directory as the downloaded file"
missingdmg=1
fi
if [ "$xc4" = 1 ] && [ ! -f xcode4630916281a.dmg ]; then
echo "*** You should download Xcode 4.6.3. Login to:"
echo " https://developer.apple.com/downloads/"
echo "then download from:"
echo " https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_4.6.3/xcode4630916281a.dmg"
echo "or"
echo " https://adcdownload.apple.com/Developer_Tools/xcode_4.6.3/xcode4630916281a.dmg"
echo "and then run this script from within the same directory as the downloaded file"
missingdmg=1
fi
if [ "$xc5" = 1 ] && [ ! -f xcode_5.1.1.dmg ]; then
echo "*** You should download Xcode 5.1.1. Login to:"
echo " https://developer.apple.com/downloads/"
echo "then download from:"
echo " https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_5.1.1/xcode_5.1.1.dmg"
echo "or"
echo " https://adcdownload.apple.com/Developer_Tools/xcode_5.1.1/xcode_5.1.1.dmg"
echo "and then run this script from within the same directory as the downloaded file"
missingdmg=1
fi
if [ "$xc6" = 1 ] && [ ! -f Xcode_6.4.dmg ]; then
echo "*** You should download Xcode 6.4. Login to:"
echo " https://developer.apple.com/downloads/"
echo "then download from:"
echo " https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/Xcode_6.4/Xcode_6.4.dmg"
echo "or"
echo " https://adcdownload.apple.com/Developer_Tools/Xcode_6.4/Xcode_6.4.dmg"
echo "and then run this script from within the same directory as the downloaded file"
missingdmg=1
fi
if [ "$xc7" = 1 ] && [ ! -f Xcode_7.3.1.dmg ]; then
echo "*** You should download Xcode 7.3.1. Login to:"
echo " https://developer.apple.com/downloads/"
echo "then download from:"
echo " https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1.dmg"
echo "or"
echo " https://adcdownload.apple.com/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1.dmg"
echo "and then run this script from within the same directory as the downloaded file"
missingdmg=1
fi
if [ "$xc8" = 1 ] && [ ! -f Xcode8.3.3.xip ]; then
echo "*** You should download Xcode 8.3.3. Login to:"
echo " https://developer.apple.com/downloads/"
echo "then download from:"
echo " https://download.developer.apple.com/Developer_Tools/Xcode_8.3.3/Xcode8.3.3.xip"
echo "and then run this script from within the same directory as the downloaded file"
missingdmg=1
fi
if [ "$xc9" = 1 ] && [ ! -f Xcode_9.4.1.xip ]; then
echo "*** You should download Xcode 9.4.1. Login to:"
echo " https://developer.apple.com/downloads/"
echo "then download from:"
echo " https://download.developer.apple.com/Developer_Tools/Xcode_9.4.1/Xcode_9.4.1.xip"
echo "and then run this script from within the same directory as the downloaded file"
missingdmg=1
fi
if [ "$missingdmg" = 1 ]; then
echo "*** at least one Xcode distribution is missing, cannot build packages - exiting now"
exit
fi
if [ "$xc8" = 1 ]; then
if [ -e Xcode.app ]; then
echo "*** A stray Xcode.app exists in the XcodeLegacy.sh folder. Remove it then try again."
exit
fi
fi
MNTDIR="$(mktemp -d mount.XXX)"
ATTACH_OPTS=(-nobrowse -mountroot "$MNTDIR")
if [ "$xc3" = 1 ]; then
# you should download Xcode 3.2.6 from:
# http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20792
hdiutil attach xcode_3.2.6_and_ios_sdk_4.3.dmg "${ATTACH_OPTS[@]}"
if [ ! -d "$MNTDIR/Xcode and iOS SDK" ]; then
echo "*** Error while trying to attach disk image xcode_3.2.6_and_ios_sdk_4.3.dmg"
echo "Aborting"
exit
fi
if [ "$compilers" = 1 ]; then
rm -rf /tmp/XC3
pkgutil --expand "$MNTDIR/Xcode and iOS SDK/Packages/DeveloperTools.pkg" /tmp/XC3
(cd /tmp/XC3 || exit; gzip -dc Payload | cpio -id --quiet Library/Xcode/Plug-ins) #we only need these, see https://github.com/devernay/xcodelegacy/issues/8
( (cd /tmp/XC3/Library/Xcode/Plug-ins || exit; tar cf - "GCC 4.0.xcplugin") | gzip -c > XcodePluginGCC40.tar.gz) && echo "*** Created XcodePluginGCC40.tar.gz in directory $(pwd)"
( (cd /tmp/XC3/Library/Xcode/Plug-ins || exit; tar cf - "GCC 4.2.xcplugin") | gzip -c > XcodePluginGCC42.tar.gz) && echo "*** Created XcodePluginGCC42.tar.gz in directory $(pwd)"
#( (cd /tmp/XC3/Library/Xcode/Plug-ins || exit; tar cf - "LLVM GCC 4.2.xcplugin") | gzip -c > XcodePluginLLVMGCC42.tar.gz) && echo "*** Created XcodePluginLLVMGCC42.tar.gz in directory $(pwd)"
# should be untarred in /Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins
# gzip -dc XcodePluginGCC40.tar.gz | (cd /Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins || exit; sudo tar xvf -)
rm -rf /tmp/XC3
pkgutil --expand "$MNTDIR/Xcode and iOS SDK/Packages/DeveloperToolsCLI.pkg" /tmp/XC3
(cd /tmp/XC3 || exit; gzip -dc Payload | cpio -id --quiet usr/bin usr/libexec) #we only need these, see https://github.com/devernay/xcodelegacy/issues/8
( (cd /tmp/XC3 || exit; tar cf - usr/libexec/gcc/darwin/ppc usr/libexec/gcc/darwin/ppc64 usr/libexec/gcc/darwin/i386 usr/libexec/gcc/darwin/x86_64) | gzip -c > Xcode3as.tar.gz) && echo "*** Created Xcode3as.tar.gz in directory $(pwd)"
( (cd /tmp/XC3 || exit; tar cf - usr/bin/ld) | gzip -c > Xcode3ld.tar.gz) && echo "*** Created Xcode3ld.tar.gz in directory $(pwd)"
#(cp "$MNTDIR/Xcode and iOS SDK/Packages/gcc4.0.pkg" xcode_3.2.6_gcc4.0.pkg) && echo "*** Created xcode_3.2.6_gcc4.0.pkg in directory $(pwd)"
rm -rf /tmp/XC3
pkgutil --expand "$MNTDIR/Xcode and iOS SDK/Packages/gcc4.0.pkg" /tmp/XC3
(cd /tmp/XC3 || exit; gzip -dc Payload | cpio -id --quiet usr) #we only need these, see https://github.com/devernay/xcodelegacy/issues/8
( (cd /tmp/XC3 || exit; tar cf - usr) | gzip -c > Xcode3gcc40.tar.gz) && echo "*** Created Xcode3gcc40.tar.gz in directory $(pwd)"
#(cp "$MNTDIR/Xcode and iOS SDK/Packages/gcc4.2.pkg" xcode_3.2.6_gcc4.2.pkg) && echo "*** Created xcode_3.2.6_gcc4.2.pkg in directory $(pwd)"
rm -rf /tmp/XC3
pkgutil --expand "$MNTDIR/Xcode and iOS SDK/Packages/gcc4.2.pkg" /tmp/XC3
(cd /tmp/XC3 || exit; gzip -dc Payload | cpio -id --quiet usr) #we only need these, see https://github.com/devernay/xcodelegacy/issues/8
( (cd /tmp/XC3 || exit; tar cf - usr) | gzip -c > Xcode3gcc42.tar.gz) && echo "*** Created Xcode3gcc42.tar.gz in directory $(pwd)"
#(cp "$MNTDIR/Xcode and iOS SDK/Packages/llvm-gcc4.2.pkg" xcode_3.2.6_llvm-gcc4.2.pkg) && echo "*** Created xcode_3.2.6_llvm-gcc4.2.pkg in directory $(pwd)"
rm -rf /tmp/XC3
pkgutil --expand "$MNTDIR/Xcode and iOS SDK/Packages/llvm-gcc4.2.pkg" /tmp/XC3
(cd /tmp/XC3 || exit; gzip -dc Payload | cpio -id --quiet usr) #we only need these, see https://github.com/devernay/xcodelegacy/issues/8
( (cd /tmp/XC3 || exit; tar cf - usr) | gzip -c > Xcode3llvmgcc42.tar.gz) && echo "*** Created Xcode3llvmgcc42.tar.gz in directory $(pwd)"
fi
rm -rf /tmp/XC3
if [ "$osx104" = 1 ] || [ "$osx105" = 1 ]; then
# use the latest version of the hashtable include, as recommended by:
# http://wiki.inkscape.org/wiki/index.php/HashtableFixOSX
# http://permalink.gmane.org/gmane.comp.graphics.inkscape.devel/32966
# The version from gcc 4.0.4 fixes these four bugs:
#
# GCC Bugzilla Bug 23053
# Const-correctness issue in TR1 hashtable
# <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23053>
#
# GCC Bugzilla Bug 23465
# Assignment fails on TR1 unordered containers
# <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23465>
#
# GCC Bugzilla Bug 24054
# std::tr1::unordered_map's erase does not seem to return a value
# <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24054>
#
# GCC Bugzilla Bug 24064
# tr1::unordered_map seems to seg-fault when caching hash values
# <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24064>
# see also:
# http://wayback.archive.org/web/20100810175143/http://mohri-lt.cs.nyu.edu:80/twiki/bin/view/FST/CompilingOnMacOSX
# (only fixes GCC Bugzilla Bug 23465)
#curl -A 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6' 'https://gcc.gnu.org/viewcvs/gcc/branches/gcc-4_0-branch/libstdc%2B%2B-v3/include/tr1/hashtable?revision=95538&view=co' -o hashtable-gcc-4.0.0
#curl -A 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6' 'https://gcc.gnu.org/viewcvs/gcc/branches/gcc-4_0-branch/libstdc%2B%2B-v3/include/tr1/hashtable?revision=104939&view=co' -o hashtable-gcc-4.0.4
if false; then
# older version of the patch, for the record (only fixes 23053 and 23465)
cat > /tmp/hashtable.patch <<EOF
--- hashtable.orig 2015-09-01 14:43:32.000000000 +0200
+++ hashtable 2010-09-03 22:41:42.000000000 +0200
@@ -860,7 +860,7 @@
typedef typename Internal::IF<unique_keys, std::pair<iterator, bool>, iterator>::type
Insert_Return_Type;
- node* find_node (node* p, const key_type& k, typename hashtable::hash_code_t c);
+ node* find_node (node* p, const key_type& k, typename hashtable::hash_code_t c) const;
std::pair<iterator, bool> insert (const value_type&, std::tr1::true_type);
iterator insert (const value_type&, std::tr1::false_type);
@@ -1042,8 +1042,9 @@
node* n = ht.m_buckets[i];
node** tail = m_buckets + i;
while (n) {
- *tail = m_allocate_node (n);
- (*tail).copy_code_from (n);
+ // *tail = m_allocate_node (n);
+ // (*tail).copy_code_from (n);
+ *tail = m_allocate_node (n->m_v);
tail = &((*tail)->m_next);
n = n->m_next;
}
@@ -1216,7 +1217,7 @@
bool c, bool m, bool u>
typename hashtable<K,V,A,Ex,Eq,H1,H2,H,RP,c,m,u>::node*
hashtable<K,V,A,Ex,Eq,H1,H2,H,RP,c,m,u>
-::find_node (node* p, const key_type& k, typename hashtable::hash_code_t code)
+::find_node (node* p, const key_type& k, typename hashtable::hash_code_t code) const
{
for ( ; p ; p = p->m_next)
if (this->compare (k, code, p))
EOF
fi
fi
if [ "$osx104" = 1 ]; then
test -d /tmp/XC3-10.4 && rm -rf /tmp/XC3-10.4
pkgutil --expand "$MNTDIR/Xcode and iOS SDK/Packages/MacOSX10.4.Universal.pkg" /tmp/XC3-10.4
(cd /tmp/XC3-10.4 || exit; gzip -dc Payload | cpio -id --quiet SDKs/MacOSX10.4u.sdk)
SDKROOT=/tmp/XC3-10.4/SDKs/MacOSX10.4u.sdk
# should we install more than these? (fixed includes?)
# Add links to libstdc++ so that "g++-4.0 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" works
ln -s ../../../i686-apple-darwin10/4.0.1/libstdc++.dylib $SDKROOT/usr/lib/gcc/i686-apple-darwin10/4.0.1/libstdc++.dylib
# Add links to libstdc++ so that "clang++ -stdlib=libstdc++ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" works
ln -s libstdc++.6.dylib $SDKROOT/usr/lib/libstdc++.dylib
# Fix tr1/hashtable
# see http://www.openfst.org/twiki/bin/view/FST/CompilingOnMacOSX https://gcc.gnu.org/ml/libstdc++/2005-08/msg00017.html https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23053
# in SDKs/MacOSX10.4u.sdk/usr/include/c++/4.0.0/tr1/hashtable
#(cd $SDKROOT/usr/include/c++/4.0.0/tr1 || exit; patch -p0 -d. < /tmp/hashtable.patch)
mv $SDKROOT/usr/include/c++/4.0.0/tr1/hashtable $SDKROOT/usr/include/c++/4.0.0/tr1/hashtable.orig
cp hashtable-gcc-4.0.4 $SDKROOT/usr/include/c++/4.0.0/tr1/hashtable
# Add links for compatibility with GCC 4.2
ln -s 4.0.1 $SDKROOT/usr/lib/gcc/i686-apple-darwin10/4.2.1
ln -s 4.0.1 $SDKROOT/usr/lib/gcc/powerpc-apple-darwin10/4.2.1
ln -s 4.0.1 $SDKROOT/usr/lib/i686-apple-darwin10/4.2.1
ln -s 4.0.1 $SDKROOT/usr/lib/powerpc-apple-darwin10/4.2.1
ln -s 4.0.0 $SDKROOT/usr/include/c++/4.2.1
( (cd /tmp/XC3-10.4 || exit; tar cf - SDKs/MacOSX10.4u.sdk) | gzip -c > Xcode104SDK.tar.gz) && echo "*** Created Xcode104SDK.tar.gz in directory $(pwd)"
rm -rf /tmp/XC3-10.4
fi
if [ "$osx105" = 1 ]; then
test -d /tmp/XC3-10.5 && rm -rf /tmp/XC3-10.5
pkgutil --expand "$MNTDIR/Xcode and iOS SDK/Packages/MacOSX10.5.pkg" /tmp/XC3-10.5
(cd /tmp/XC3-10.5 || exit; gzip -dc Payload | cpio -id --quiet SDKs/MacOSX10.5.sdk)
SDKROOT=/tmp/XC3-10.5/SDKs/MacOSX10.5.sdk
# should we install more than these? (fixed includes?)
# Add links to libstdc++ so that "g++-4.0 -isysroot /Developer/SDKs/MacOSX10.5.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5" works
ln -s ../../../i686-apple-darwin10/4.0.1/libstdc++.dylib $SDKROOT/usr/lib/gcc/i686-apple-darwin10/4.0.1/libstdc++.dylib
ln -s ../../../i686-apple-darwin10/4.2.1/libstdc++.dylib $SDKROOT/usr/lib/gcc/i686-apple-darwin10/4.2.1/libstdc++.dylib
# Add links to libstdc++ so that "clang++ -stdlib=libstdc++ -isysroot /Developer/SDKs/MacOSX10.5.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5" works
ln -s libstdc++.6.dylib $SDKROOT/usr/lib/libstdc++.dylib
# fix AvailabilityInternal.h (see https://trac.macports.org/wiki/LeopardSDKFixes)
sed -i.orig -e 's/define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_10_6/define __MAC_OS_X_VERSION_MAX_ALLOWED 1058/' $SDKROOT/usr/include/AvailabilityInternal.h
# Fix tr1/hashtable
# see http://www.openfst.org/twiki/bin/view/FST/CompilingOnMacOSX https://gcc.gnu.org/ml/libstdc++/2005-08/msg00017.html https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23053
# in SDKs/MacOSX10.5.sdk/usr/include/c++/4.0.0/tr1/hashtable
# this also affects g++-4.2, since usr/include/c++/4.2.1 links to usr/include/c++/4.0.0
#(cd $SDKROOT/usr/include/c++/4.0.0/tr1 || exit; patch -p0 -d. < /tmp/hashtable.patch)
mv $SDKROOT/usr/include/c++/4.0.0/tr1/hashtable $SDKROOT/usr/include/c++/4.0.0/tr1/hashtable.orig
cp hashtable-gcc-4.0.4 $SDKROOT/usr/include/c++/4.0.0/tr1/hashtable
fi
if [ "$osx104" = 1 ] || [ "$osx105" = 1 ]; then
true
#rm /tmp/hashtable.patch
fi
if [ $osx105 = 1 ] || [ $osx106 = 1 ]; then
test -d /tmp/XC3 && rm -rf /tmp/XC3
pkgutil --expand "$MNTDIR/Xcode and iOS SDK/Packages/MacOSX10.6.pkg" /tmp/XC3
(cd /tmp/XC3 || exit; gzip -dc Payload | cpio -id --quiet SDKs/MacOSX10.6.sdk)
SDKROOT=/tmp/XC3/SDKs/MacOSX10.6.sdk
# should we install more than these? (fixed includes?)
# Add links to libstdc++ so that "clang++ -stdlib=libstdc++ -isysroot /Developer/SDKs/MacOSX10.6.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6" works
ln -s libstdc++.6.dylib $SDKROOT/usr/lib/libstdc++.dylib
# fix buggy hashtable include (see above for explanations)
cp hashtable-gcc-4.0.4 $SDKROOT/usr/include/c++/4.0.0/tr1/hashtable
if [ "$osx105" = 1 ]; then
# we also need to copy /usr/lib/libgcc_s.10.5.dylib from 10.6 SDK to 10.5SDK, see https://trac.macports.org/wiki/LeopardSDKFixes
# This should fix compiling the following:
# int main() { __uint128_t a = 100; __uint128_t b = 200; __uint128_t c = a / b; return 0; }
# with clang -isysroot /Developer/SDKs/MacOSX10.5.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5 conftest1.c
cp /tmp/XC3-10.5/SDKs/MacOSX10.5.sdk/usr/lib/libgcc_s.10.5.dylib /tmp/XC3-10.5/SDKs/MacOSX10.5.sdk/usr/lib/libgcc_s.10.5.dylib.bak
cp $SDKROOT/usr/lib/libgcc_s.10.5.dylib /tmp/XC3-10.5/SDKs/MacOSX10.5.sdk/usr/lib/libgcc_s.10.5.dylib
( (cd /tmp/XC3-10.5 || exit; tar cf - SDKs/MacOSX10.5.sdk) | gzip -c > Xcode105SDK.tar.gz) && echo "*** Created Xcode105SDK.tar.gz in directory $(pwd)"
fi
if [ "$osx106" = 1 ]; then
( (cd /tmp/XC3 || exit; tar cf - SDKs/MacOSX10.6.sdk) | gzip -c > Xcode106SDK.tar.gz) && echo "*** Created Xcode106SDK.tar.gz in directory $(pwd)"
fi
rm -rf /tmp/XC3-10.5 /tmp/XC3
fi
hdiutil detach "$MNTDIR/Xcode and iOS SDK" -force
fi
if [ "$xc4" = 1 ]; then
hdiutil attach xcode4630916281a.dmg "${ATTACH_OPTS[@]}"
if [ ! -d "$MNTDIR/Xcode" ]; then
echo "*** Error while trying to attach disk image xcode4630916281a.dmg"
echo "Aborting"
rmdir "$MNTDIR"
exit
fi
if [ "$osx107" = 1 ]; then
( (cd "$MNTDIR/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer" || exit; tar cf - SDKs/MacOSX10.7.sdk) | gzip -c > Xcode107SDK.tar.gz) && echo "*** Created Xcode107SDK.tar.gz in directory $(pwd)"
fi
if [ "$compilers" = 1 ]; then
( (cd "$MNTDIR/Xcode/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins" || exit; tar cf - "GCC 4.2.xcplugin") | gzip -c > XcodePluginGCC42-Xcode4.tar.gz) && echo "*** Created XcodePluginGCC42-Xcode4.tar.gz in directory $(pwd)"
( (cd "$MNTDIR/Xcode/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins" || exit; tar cf - "LLVM GCC 4.2.xcplugin") | gzip -c > XcodePluginLLVMGCC42.tar.gz) && echo "*** Created XcodePluginLLVMGCC42.tar.gz in directory $(pwd)"
fi
hdiutil detach "$MNTDIR/Xcode" -force
fi
if [ "$xc5" = 1 ]; then
hdiutil attach xcode_5.1.1.dmg "${ATTACH_OPTS[@]}"
if [ ! -d "$MNTDIR/Xcode" ]; then
echo "*** Error while trying to attach disk image xcode_5.1.1.dmg"
echo "Aborting"
rmdir "$MNTDIR"
exit
fi
if [ "$osx108" = 1 ]; then
( (cd "$MNTDIR/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer" || exit; tar cf - SDKs/MacOSX10.8.sdk) | gzip -c > Xcode108SDK.tar.gz) && echo "*** Created Xcode108SDK.tar.gz in directory $(pwd)"
fi
hdiutil detach "$MNTDIR/Xcode" -force
fi
if [ "$xc6" = 1 ]; then
hdiutil attach Xcode_6.4.dmg "${ATTACH_OPTS[@]}"
if [ ! -d "$MNTDIR/Xcode" ]; then
echo "*** Error while trying to attach disk image Xcode_6.4.dmg"
echo "Aborting"
rmdir "$MNTDIR"
exit
fi
if [ "$osx109" = 1 ]; then
( (cd "$MNTDIR/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer" || exit; tar cf - SDKs/MacOSX10.9.sdk) | gzip -c > Xcode109SDK.tar.gz) && echo "*** Created Xcode109SDK.tar.gz in directory $(pwd)"
fi
if [ "$osx1010" = 1 ]; then
( (cd "$MNTDIR/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer" || exit; tar cf - SDKs/MacOSX10.10.sdk) | gzip -c > Xcode1010SDK.tar.gz) && echo "*** Created Xcode1010SDK.tar.gz in directory $(pwd)"
fi
hdiutil detach "$MNTDIR/Xcode" -force
fi
if [ "$xc7" = 1 ]; then
hdiutil attach Xcode_7.3.1.dmg "${ATTACH_OPTS[@]}"
if [ ! -d "$MNTDIR/Xcode" ]; then
echo "*** Error while trying to attach disk image Xcode_7.3.1.dmg"
echo "Aborting"
rmdir "$MNTDIR"
exit
fi
if [ "$osx1011" = 1 ]; then
( (cd "$MNTDIR/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer" || exit; tar cf - SDKs/MacOSX10.11.sdk) | gzip -c > Xcode1011SDK.tar.gz) && echo "*** Created Xcode1011SDK.tar.gz in directory $(pwd)"
fi
hdiutil detach "$MNTDIR/Xcode" -force
fi
if [ "$xc8" = 1 ]; then
if [ "$osx1012" = 1 ]; then
echo "Extracting Mac OS X 10.12 SDK from Xcode 8.3.3. Be patient - this will take some time"
open Xcode8.3.3.xip
while [ ! -d Xcode.app ]; do
sleep 5
done
sleep 5
( (cd "Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer" || exit; rm SDKs/MacOSX10.12.sdk; mv SDKs/MacOSX.sdk SDKs/MacOSX10.12.sdk; tar cf - SDKs/MacOSX10.12.sdk) | gzip -c > Xcode1012SDK.tar.gz) && echo "*** Created Xcode1012SDK.tar.gz in directory $(pwd)"
rm -rf Xcode.app
fi
fi
if [ "$xc9" = 1 ]; then
if [ "$osx1013" = 1 ]; then
echo "Extracting Mac OS X 10.13 SDK from Xcode 9.4.1. Be patient - this will take some time"
open Xcode_9.4.1.xip
while [ ! -d Xcode.app ]; do
sleep 5
done
sleep 5
( (cd "Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer" || exit; rm SDKs/MacOSX10.13.sdk; mv SDKs/MacOSX.sdk SDKs/MacOSX10.13.sdk; tar cf - SDKs/MacOSX10.13.sdk) | gzip -c > Xcode1013SDK.tar.gz) && echo "*** Created Xcode1013SDK.tar.gz in directory $(pwd)"
rm -rf Xcode.app
fi
fi
rmdir "$MNTDIR"
;;
install|installbeta)
#######################
# PHASE 2: INSTALLING
#
if [ $EUID -ne 0 ]; then
echo "*** Error: The install phase requires administrative rights. Please run it as:"
echo " $ sudo $0 install"
exit 1
fi
if [ ! -d "$PLUGINDIR" ]; then
echo "*** Error: could not find Xcode 4.2 in /Developer/Applications nor Xcode >= 4.3 in /Applications, cannot install"
exit 1
fi
if [ "$compilers" = 1 ]; then
if [ -d "$PLUGINDIR/GCC 4.0.xcplugin" ]; then
echo "*** Not installing XcodePluginGCC40.tar.gz (found installed in $PLUGINDIR/GCC 4.0.xcplugin, uninstall first to force install)"
else
(gzip -dc XcodePluginGCC40.tar.gz | (cd "$PLUGINDIR" || exit; tar xf -)) && touch "$PLUGINDIR/GCC 4.0.xcplugin/legacy" && echo "*** installed XcodePluginGCC40.tar.gz"
# Add entries expected by later xcodebuilds.
mv "$PLUGINDIR/GCC 4.0.xcplugin/Contents/Resources/GCC 4.0.xcspec" "$PLUGINDIR/GCC 4.0.xcplugin/Contents/Resources/GCC 4.0.xcspec-original"
sed '$ i\
\ ExecDescription = \"Compile \$\(InputFile\)\"\;\
\ ProgressDescription = \"Compiling \$\(InputFile\)\"\;\
\ ExecDescriptionForPrecompile = \"Precompile \$\(InputFile\)\"\;\
\ ProgressDescriptionForPrecompile = \"Precompiling \$\(InputFile\)\"\;
' < "$PLUGINDIR/GCC 4.0.xcplugin/Contents/Resources/GCC 4.0.xcspec-original" > "$PLUGINDIR/GCC 4.0.xcplugin/Contents/Resources/GCC 4.0.xcspec"
echo "*** modified GCC 4.0.xcspec"
fi
if [ -d "$PLUGINDIR/GCC 4.2.xcplugin" ] && [ ! -f "$PLUGINDIR/GCC 4.2.xcplugin/Contents/Resources/GCC Generic.xcspec" ]; then
echo "*** Not installing XcodePluginGCC42.tar.gz (found installed in $PLUGINDIR/GCC 4.2.xcplugin, uninstall first to force install)"
else
if [ -f "$PLUGINDIR/GCC 4.2.xcplugin/Contents/Resources/GCC Generic.xcspec" ]; then
mv "$PLUGINDIR/GCC 4.2.xcplugin" "$PLUGINDIR/GCC 4.2.xcplugin-original"
fi
(gzip -dc XcodePluginGCC42.tar.gz | (cd "$PLUGINDIR" || exit; tar xf -)) && touch "$PLUGINDIR/GCC 4.2.xcplugin/legacy" && echo "*** installed XcodePluginGCC42.tar.gz"
# Add entries expected by later xcodebuilds.
mv "$PLUGINDIR/GCC 4.2.xcplugin/Contents/Resources/GCC 4.2.xcspec" "$PLUGINDIR/GCC 4.2.xcplugin/Contents/Resources/GCC 4.2.xcspec-original"
sed '$ i\
\ ExecDescription = \"Compile \$\(InputFile\)\"\;\
\ ProgressDescription = \"Compiling \$\(InputFile\)\"\;\
\ ExecDescriptionForPrecompile = \"Precompile \$\(InputFile\)\"\;\
\ ProgressDescriptionForPrecompile = \"Precompiling \$\(InputFile\)\"\;
' < "$PLUGINDIR/GCC 4.2.xcplugin/Contents/Resources/GCC 4.2.xcspec-original" > "$PLUGINDIR/GCC 4.2.xcplugin/Contents/Resources/GCC 4.2.xcspec"
echo "*** modified GCC 4.2.xcspec"
fi
if [ -d "$PLUGINDIR/LLVM GCC 4.2.xcplugin" ]; then
echo "*** Not installing XcodePluginLLVMGCC42.tar.gz (found installed in $PLUGINDIR/LLVM GCC 4.2.xcplugin, uninstall first to force install)"
else
(gzip -dc XcodePluginLLVMGCC42.tar.gz | (cd "$PLUGINDIR" || exit; tar xf -)) && touch "$PLUGINDIR/LLVM GCC 4.2.xcplugin/legacy" && echo "*** installed XcodePluginLLVMGCC42.tar.gz"
fi
if [ -f "$GCCDIR/usr/libexec/gcc/darwin/ppc/as" ]; then
echo "*** Not installing Xcode3as.tar.gz (found installed in $GCCDIR/usr/libexec/gcc/darwin/ppc/as, uninstall first to force install)"
else
(gzip -dc Xcode3as.tar.gz | (cd "$GCCDIR" || exit; tar xf -))
mkdir -p "$GCCINSTALLDIR/usr/bin"
mkdir -p "$GCCINSTALLDIR/usr/libexec/as/ppc"
mkdir -p "$GCCINSTALLDIR/usr/libexec/as/ppc64"
mkdir -p "$GCCINSTALLDIR/usr/libexec/as/i386"
mkdir -p "$GCCINSTALLDIR/usr/libexec/as/x86_64"
ln -sf "$GCCDIR/usr/libexec/gcc/darwin/ppc/as" "$GCCINSTALLDIR/usr/libexec/as/ppc/as"
ln -sf "$GCCDIR/usr/libexec/gcc/darwin/ppc64/as" "$GCCINSTALLDIR/usr/libexec/as/ppc64/as"
# Xcodes >= 4 already include an acceptable GNU legacy assembler
# (v1.38) for i386 and x86_64 in $GCCINSTALLDIR/usr/libexec/as.
# When they no longer do, enable these links (conditionally,
# of course).
#ln -sf "$GCCDIR/usr/libexec/gcc/darwin/i386/as" "$GCCINSTALLDIR/usr/libexec/as/i386/as"
#ln -sf "$GCCDIR/usr/libexec/gcc/darwin/x86_64/as" "$GCCINSTALLDIR/usr/libexec/as/x86_64/as"
# Replace Xcode's modern toolchain assembler with a script
# that auto-selects the proper legacy assembler based on the
# command line's -arch parameter. Using a legacy assembler fixes
# "ld: too many personality routines for compact unwind" errors
# and "section '__textcoal_nt' is deprecated" warnings emitted
# by Xcode 7+ assemblers.
# First, though, don't overwrite the original assembler if
# XcodeLegacy is installed twice.
if [ -f "$GCCINSTALLDIR/usr/bin/as" ] && [ ! -f "$GCCINSTALLDIR/usr/bin/as-original" ]; then
mv "$GCCINSTALLDIR/usr/bin/as" "$GCCINSTALLDIR/usr/bin/as-original"
fi
# NB: While only gcc uses the assembler in our builds (it pipes the
# output of usr/libexec/gcc/*-apple-darwin10/4.*/ccobj1plus into
# usr/libexec/gcc/*-apple-darwin10/4.*/as -> usr/bin/as), we can't
# simply change the link to, say, usr/libexec/gcc/darwin/i386/as
# because the assembler seems to want the -arch parameter to match
# its containing folder. Hence, a script (like for ld, below).
# NB: To keep it simple, the script assumes that anyone invoking
# the toolchain's usr/bin/as wants to use Xcode 3's assembler.
# NB: AS_DIR resolves as the directory of the (source) link that
# invoked the script.
# Note that we don't look for AS in $AS_DIR/../libexec/as/\$ARCH/as
# because gprbuild (from GNU Ada) calls as with both -m and -arch
# flags, and the arch-specific as doesn'b understand -m32 or -m64.
# We just look for as in a few places, and if it's not there, we
# look for as-original, starting in the current dir.
# In any case, we prune -m32 and -m64 from the as args.
# see https://github.com/devernay/xcodelegacy/issues/33
cat <<AS_EOF >> "$GCCINSTALLDIR"/usr/bin/as
#!/bin/bash
ARCH=''
ARCH_FOUND=0
AS_ARGS=()
for var in "\$@"
do
if [ -z "\$ARCH" ] && [ "\$ARCH_FOUND" -eq '1' ]; then
ARCH="\$var"
AS_ARGS+=("\$var")
elif [ "\$var" = '-arch' ]; then
ARCH_FOUND=1
AS_ARGS+=("\$var")
elif [ "\$var" = '-m32' ]; then
true
elif [ "\$var" = '-m64' ]; then
true
else
AS_ARGS+=("\$var")
fi
done
AS_DIR=\`dirname "\$0"\`
AS_FOUND=0
if [ "\$ARCH_FOUND" -eq '1' ]; then
if [ -x "\$AS_DIR/../../../as/\$ARCH/as" ]; then
AS="\$AS_DIR/../../../as/\$ARCH/as"
AS_FOUND=1
elif [ -x "\$AS_DIR/../../../../../libexec/as/\$ARCH/as" ]; then
AS="\$AS_DIR/../../../../../libexec/as/\$ARCH/as"
AS_FOUND=1
elif [ -x "\$AS_DIR/../../../../../../../usr/libexec/as/\$ARCH/as" ]; then
AS="\$AS_DIR/../../../../../../../usr/libexec/as/\$ARCH/as"
AS_FOUND=1
fi
fi
if [ "\$AS_FOUND" -eq '1' ]; then
exec \$AS "\${AS_ARGS[@]}"
else
if [ -x "\$AS_DIR/as-original" ]; then
ASORIGINAL="\$AS_DIR/as-original"
elif [ -x "\$AS_DIR/../../../bin/as-original" ]; then
ASORIGINAL="\$AS_DIR/../../../bin/as-original"
elif [ -x "\$AS_DIR/../../../../bin/as-original" ]; then
ASORIGINAL="\$AS_DIR/../../../../bin/as-original"
elif [ -x "\$AS_DIR/../../../../../bin/as-original" ]; then
ASORIGINAL="\$AS_DIR/../../../../../bin/as-original"
else
echo "Error: cannot find as-original in \$AS_DIR/as-original or \$AS_DIR/../../../bin/as-original or \$AS_DIR/../../../../bin/as-original or \$AS_DIR/../../../../../bin/as-original"
exit 1
fi
exec \$ASORIGINAL "\$@"
fi
AS_EOF
chmod +x "$GCCINSTALLDIR/usr/bin/as"
echo "*** installed Xcode3as.tar.gz"
fi
if [ -f "$GCCDIR/usr/libexec/gcc/darwin/ppc/ld" ]; then
echo "*** Not installing Xcode3ld.tar.gz (found installed in $GCCDIR/usr/libexec/gcc/darwin/ppc/ld, uninstall first to force install)"
elif [ $XCODE42 -eq 1 ]; then
echo "*** Not installing Xcode3ld.tar.gz (not required for Xcode <= 4.2.1)"
else
mkdir -p "$GCCDIR/tmp"
(gzip -dc Xcode3ld.tar.gz | (cd "$GCCDIR/tmp" || exit; tar xf -))
cp "$GCCDIR/tmp/usr/bin/ld" "$GCCDIR/usr/libexec/gcc/darwin/ppc/"
ln "$GCCDIR/usr/libexec/gcc/darwin/ppc/ld" "$GCCDIR/usr/libexec/gcc/darwin/ppc64/ld"
rm -rf "$GCCDIR/tmp"
mkdir -p "$GCCINSTALLDIR/usr/libexec/ld/ppc"
mkdir -p "$GCCINSTALLDIR/usr/libexec/ld/ppc7400"
mkdir -p "$GCCINSTALLDIR/usr/libexec/ld/ppc970"
mkdir -p "$GCCINSTALLDIR/usr/libexec/ld/ppc64"
ln -sf "$GCCDIR/usr/libexec/gcc/darwin/ppc/ld" "$GCCINSTALLDIR/usr/libexec/ld/ppc/ld"
ln -sf "$GCCDIR/usr/libexec/gcc/darwin/ppc/ld" "$GCCINSTALLDIR/usr/libexec/ld/ppc7400/ld"
ln -sf "$GCCDIR/usr/libexec/gcc/darwin/ppc/ld" "$GCCINSTALLDIR/usr/libexec/ld/ppc970/ld"
ln -sf "$GCCDIR/usr/libexec/gcc/darwin/ppc64/ld" "$GCCINSTALLDIR/usr/libexec/ld/ppc64/ld"
# Xcode 8's ld fails to link i386 and x86_64 for OSX 10.5: https://github.com/devernay/xcodelegacy/issues/30
# Since this ld is from Xcode 3.2.6 for OSX 10.6, this should be OK if the target OS is < 10.6
# (which is checked by the stub ld script)
for arch in i386 x86_64; do
mkdir -p "$GCCDIR/usr/libexec/gcc/darwin/$arch"
ln "$GCCDIR/usr/libexec/gcc/darwin/ppc/ld" "$GCCDIR/usr/libexec/gcc/darwin/$arch/ld"
mkdir -p "$GCCINSTALLDIR/usr/libexec/ld/$arch"
ln -sf "$GCCDIR/usr/libexec/gcc/darwin/$arch/ld" "$GCCINSTALLDIR/usr/libexec/ld/$arch/ld"
done
# prevent overwriting the original ld if the script is run twice
if [ ! -f "$GCCINSTALLDIR/usr/bin/ld-original" ]; then
mv "$GCCINSTALLDIR/usr/bin/ld" "$GCCINSTALLDIR/usr/bin/ld-original"
fi
cat <<LD_EOF >> "$GCCINSTALLDIR"/usr/bin/ld
#!/bin/bash
ARCH=''
ARCH_FOUND=0
for var in "\$@"
do
if [ "\$ARCH_FOUND" -eq '1' ]; then
ARCH=\$var
ARCH_FOUND=2
break
else
case "\$var" in
-mmacosx-version-min=10.[0-6])
MACOSX_DEPLOYMENT_TARGET=\$( echo \$var | sed -e s/-mmacosx-version-min=// )
;;
-arch)
if [ "\$ARCH_FOUND" -ne '0' ]; then
echo "Warning: ld: multiple -arch flags"
fi
ARCH_FOUND=1
;;
esac
fi
done
# use the old (Snow Leopard 10.6) ld only if ppc arch or the target macOS is <= 10.6
USE_OLD_LD=0
case "\$ARCH" in
ppc*) #ppc ppc7400 ppc970 ppc64
USE_OLD_LD=1
;;
esac
if [ -n \${MACOSX_DEPLOYMENT_TARGET+x} ]; then
# MACOSX_DEPLOYMENT_TARGET can either be set externally as an env variable,
# or as an ld option using -mmacosx-version-min=10.x
case "\${MACOSX_DEPLOYMENT_TARGET}" in
10.[0-6])
USE_OLD_LD=1
;;
esac
fi
#echo "Running ld for \$ARCH ..."
LD_DIR=\`dirname "\$0"\`
if [ -x "\$LD_DIR/ld-original" ]; then
LDORIGINAL="\$LD_DIR/ld-original"
elif [ -x "\$LD_DIR/../../../../bin/ld-original" ]; then
LDORIGINAL="\$LD_DIR/../../../../bin/ld-original"
elif [ -x "\$LD_DIR/../../../../../bin/ld-original" ]; then
LDORIGINAL="\$LD_DIR/../../../../../bin/ld-original"
else
echo "Error: cannot find ld-original in \$LD_DIR \$LD_DIR/../../../../bin or \$LD_DIR/../../../../../bin"
exit 1
fi
LD_RESULT=255
if [ "\$USE_OLD_LD" -eq '1' ]; then
ARGS=()
# strip the -dependency_info xxx, -object_path_lto xxx, -no_deduplicate, -export_dynamic flags
DEPINFO_FOUND=0
OBJECT_PATH_LTO_FOUND=0
for var in "\$@"; do
if [ "\$DEPINFO_FOUND" -eq '1' ]; then
DEPINFO_FOUND=0
continue
elif [ "\$OBJECT_PATH_LTO_FOUND" -eq '1' ]; then
OBJECT_PATH_LTO_FOUND=0
continue
elif [ "\$var" = '-dependency_info' ]; then
DEPINFO_FOUND=1
continue
elif [ "\$var" = '-object_path_lto' ]; then
OBJECT_PATH_LTO_FOUND=1
continue
elif [ "\$var" = '-no_deduplicate' ]; then
continue
elif [ "\$var" = '-export_dynamic' ]; then
continue
fi
ARGS+=("\$var")
done
# the old ld is put in the ppc dir so as not to disturb more recent archs (i386, x86_64)
# works with ppc ppc7400 ppc970 ppc64 i386 x86_64
LDARCHDIR=ppc
if [ -x "\$LD_DIR/../libexec/ld/\$LDARCHDIR/ld" ]; then
LD="\$LD_DIR/../libexec/ld/\$LDARCHDIR/ld"
elif [ -x "\$LD_DIR/../../../libexec/ld/\$LDARCHDIR/ld" ]; then
LD="\$LD_DIR/../../../libexec/ld/\$LDARCHDIR/ld"
elif [ -x "\$LD_DIR/../../../../libexec/ld/\$LDARCHDIR/ld" ]; then
LD="\$LD_DIR/../../../../libexec/ld/\$LDARCHDIR/ld"
elif [ -x "\$LD_DIR/../../../../../libexec/ld/\$LDARCHDIR/ld" ]; then
LD="\$LD_DIR/../../../../../libexec/ld/\$LDARCHDIR/ld"
else
echo "Error: cannot find ld for \$ARCH in \$LD_DIR/../libexec/ld/\$LDARCHDIR \$LD_DIR/../../../libexec/ld/\$LDARCHDIR \$LD_DIR/../../../../libexec/ld/\$LDARCHDIR or \$LD_DIR/../../../../../libexec/ld/\$LDARCHDIR"
exit 1
fi
\`\$LD "\${ARGS[@]}"\`
LD_RESULT=\$?
else
\`\$LDORIGINAL "\$@"\`
LD_RESULT=\$?
fi
exit \$LD_RESULT
LD_EOF
chmod +x "$GCCINSTALLDIR/usr/bin/ld"
echo "*** installed Xcode3ld.tar.gz"
fi
if [ -f "$PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec-original" ]; then
echo "*** Not modifying MacOSX Architectures.xcspec (found original at $PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec-original, uninstall first to force install)"
else
mv "$PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec" "$PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec-original"
{ awk 'NR>1{print l}{l=$0}' "$PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec-original"; cat - <<SPEC_EOF; } > "$PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec"
{
Type = Architecture;
Identifier = ppc;
Name = "Minimal (32-bit PowerPC only)";
Description = "32-bit PowerPC";
"PerArchBuildSettingName" = PowerPC;
ByteOrder = big;
ListInEnum = YES;
SortNumber = 201;
},
{
Type = Architecture;
Identifier = ppc7400;
Name = "PowerPC G4";
Description = "32-bit PowerPC for G4 processor";
ByteOrder = big;
ListInEnum = YES;
SortNumber = 202;
},
{
Type = Architecture;
Identifier = ppc970;
Name = "PowerPC G5 32-bit";
Description = "32-bit PowerPC for G5 processor";
ByteOrder = big;
ListInEnum = YES;
SortNumber = 203;
},
{
Type = Architecture;
Identifier = ppc64;
Name = "PowerPC 64-bit";
Description = "64-bit PowerPC";
"PerArchBuildSettingName" = "PowerPC 64-bit";
ByteOrder = big;
ListInEnum = YES;
SortNumber = 204;
},
)
SPEC_EOF
echo "*** modified MacOSX Architectures.xcspec"
fi
fi
if [ "$osx104" = 1 ]; then
if [ -d "$SDKDIR/SDKs/MacOSX10.4u.sdk" ]; then
echo "*** Not installing Xcode104SDK.tar.gz (found installed in $SDKDIR/SDKs/MacOSX10.4u.sdk, uninstall first to force install)"
else
(gzip -dc Xcode104SDK.tar.gz | (cd "$SDKDIR" || exit; tar xf -)) && echo "*** installed Xcode104SDK.tar.gz"
touch "$SDKDIR/SDKs/MacOSX10.4u.sdk/legacy"
fi
fi
if [ "$osx105" = 1 ]; then
if [ -d "$SDKDIR/SDKs/MacOSX10.5.sdk" ]; then
echo "*** Not installing Xcode105SDK.tar.gz (found installed in $SDKDIR/SDKs/MacOSX10.5.sdk, uninstall first to force install)"
else
(gzip -dc Xcode105SDK.tar.gz | (cd "$SDKDIR" || exit; tar xf -)) && echo "*** installed Xcode105SDK.tar.gz"
touch "$SDKDIR/SDKs/MacOSX10.5.sdk/legacy"
fi
fi
if [ "$osx106" = 1 ]; then
if [ -d "$SDKDIR/SDKs/MacOSX10.6.sdk" ]; then
echo "*** Not installing Xcode106SDK.tar.gz (found installed in $SDKDIR/SDKs/MacOSX10.6.sdk, uninstall first to force install)"
else
(gzip -dc Xcode106SDK.tar.gz | (cd "$SDKDIR" || exit; tar xf -)) && echo "*** installed Xcode106SDK.tar.gz"
touch "$SDKDIR/SDKs/MacOSX10.6.sdk/legacy"
fi
fi
if [ "$osx107" = 1 ]; then
installSDK 10.7
fi
if [ "$osx108" = 1 ]; then
installSDK 10.8
fi
if [ "$osx109" = 1 ]; then
installSDK 10.9
fi
if [ "$osx1010" = 1 ]; then
installSDK 10.10
fi
if [ "$osx1011" = 1 ]; then
installSDK 10.11
fi
if [ "$osx1012" = 1 ]; then
installSDK 10.12
fi
if [ "$osx1013" = 1 ]; then
installSDK 10.13
fi
if [ "$compilers" = 1 ]; then
if [ -f /usr/bin/gcc-4.0 ]; then
#echo "*** Not installing xcode_3.2.6_gcc4.0.pkg (found installed in /usr/bin/gcc-4.0, uninstall first to force install)"
echo "*** Not installing Xcode3gcc40.tar.gz (found installed in /usr/bin/gcc-4.0, uninstall first to force install)"
elif [ -f "$GCCINSTALLDIR/usr/bin/gcc-4.0" ]; then
echo "*** Not installing Xcode3gcc40.tar.gz (found installed in $GCCINSTALLDIR/usr/bin/gcc-4.0, uninstall first to force install)"
else
echo "*** Installing GCC 4.0"
#installer -pkg xcode_3.2.6_gcc4.0.pkg -target /
(gzip -dc Xcode3gcc40.tar.gz | (cd "$GCCINSTALLDIR" || exit; tar xf -)) && echo "*** installed Xcode3gcc40.tar.gz"
fi
if [ -f /usr/bin/gcc-4.2 ]; then
#echo "*** Not installing xcode_3.2.6_gcc4.2.pkg (found installed in /usr/bin/gcc-4.2, uninstall first to force install)"
echo "*** Not installing Xcode3gcc42.tar.gz (found installed in /usr/bin/gcc-4.2, uninstall first to force install)"
elif [ -f "$GCCINSTALLDIR/usr/bin/gcc-4.2" ]; then
echo "*** Not installing Xcode3gcc42.tar.gz (found installed in $GCCINSTALLDIR/usr/bin/gcc-4.2, uninstall first to force install)"
else
echo "*** Installing GCC 4.2"
#installer -pkg xcode_3.2.6_gcc4.2.pkg -target /
(gzip -dc Xcode3gcc42.tar.gz | (cd "$GCCINSTALLDIR" || exit; tar xf -)) && echo "*** installed Xcode3gcc42.tar.gz"
fi
if [ -f "$GCCINSTALLDIR/usr/bin/llvm-gcc-4.2" ]; then
echo "*** Not installing Xcode3llvmgcc42.tar.gz (found installed in $GCCINSTALLDIR/usr/bin/llvm-gcc-4.2, uninstall first to force install)"
else
echo "*** Installing LLVM GCC 4.2"
#installer -pkg xcode_3.2.6_llvm-gcc4.2.pkg -target /
(gzip -dc Xcode3llvmgcc42.tar.gz | (cd "$GCCINSTALLDIR" || exit; tar xf -)) && echo "*** installed Xcode3llvmgcc42.tar.gz"
if [ -f "$GCCDIR/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2" ]; then
for i in g++ gcc; do
ln -sf "$GCCINSTALLDIR"/usr/bin/powerpc-apple-darwin10-llvm-${i}-4.2 "$GCCDIR"/usr/bin/powerpc-apple-darwin"$RELEASENUM"-llvm-${i}-4.2
ln -sf "$GCCINSTALLDIR"/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-${i}-4.2 "$GCCDIR"/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin"$RELEASENUM"-llvm-${i}-4.2
ln -sf "$GCCINSTALLDIR"/usr/llvm-gcc-4.2/share/man/man1/powerpc-apple-darwin10-llvm-${i}.1.gz "$GCCDIR"/usr/llvm-gcc-4.2/share/man/man1/powerpc-apple-darwin"$RELEASENUM"-llvm-${i}.1.gz
done
ln -sf "$GCCINSTALLDIR"/usr/llvm-gcc-4.2/lib/gcc/powerpc-apple-darwin10 "$GCCDIR"/usr/llvm-gcc-4.2/lib/gcc/powerpc-apple-darwin10
ln -sf "$GCCINSTALLDIR"/usr/llvm-gcc-4.2/libexec/gcc/powerpc-apple-darwin10 "$GCCDIR"/usr/llvm-gcc-4.2/libexec/gcc/powerpc-apple-darwin10
fi
fi
echo "*** Creating symbolic links to compliers in $GCCDIR and $GCCLINKDIR:"
if [ ! -d "$GCCDIR"/usr/bin ]; then
mkdir -p "$GCCDIR"/usr/bin
fi
if [ ! -d "$GCCLINKDIR"/bin ]; then
mkdir -p "$GCCLINKDIR"/bin
fi
for v in 4.0 4.2 4.0.1 4.2.1; do
for i in c++ cpp g++ gcc gcov llvm-cpp llvm-g++ llvm-gcc; do
for p in i686-apple-darwin10- powerpc-apple-darwin10- ""; do
if [ -f "$GCCINSTALLDIR"/usr/bin/${p}${i}-${v} ]; then
echo "$GCCINSTALLDIR"/usr/bin/${p}${i}-${v} exists
if [ ! -f "$GCCLINKDIR"/bin/${p}${i}-${v} ]; then
echo "* creating link $GCCLINKDIR/bin/${p}${i}-${v}"
ln -sf "$GCCINSTALLDIR"/usr/bin/${p}${i}-${v} "$GCCLINKDIR"/bin/${p}${i}-${v}
fi
if [ ! -f "$GCCDIR"/usr/bin/${p}${i}-${v} ]; then
echo "* creating link $GCCDIR/usr/bin/${p}${i}-${v}"
ln -sf "$GCCINSTALLDIR"/usr/bin/${p}${i}-${v} "$GCCDIR"/usr/bin/${p}${i}-${v}
fi
fi
done
done
done
# fix /usr/bin/gcc, see https://github.com/devernay/xcodelegacy/issues/19
if [ -x /usr/bin/gcc ] && [ ! -x "$GCCINSTALLDIR/usr/bin/gcc" ] && [ -x "$GCCINSTALLDIR/usr/bin/clang" ]; then
# "xcode-select -r" sets /usr/bin/gcc to be the first gcc found in $GCCINSTALLDIR, which happens to be
# the directory $GCCINSTALLDIR/usr/libexec/gcc, and results in the following error:
# $ gcc
# gcc: error: can't exec '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/libexec/gcc' (errno=Permission denied)
# by putting a link to clang (which is the default Xcode behavior), we fix this
ln -s clang "$GCCINSTALLDIR/usr/bin/gcc"
# run gcc once so that xcode-select finds the right file for gcc
gcc 1>/dev/null 2>/dev/null
fi
fi
# Xcode >= 7.3 disables support for older SDKs in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist
# see https://github.com/devernay/xcodelegacy/issues/23
if [ -f "$PLATFORMDIR/Info.plist-original" ]; then
echo "*** Not modifying MacOSX Info.plist (found original at $PLATFORMDIR/Info.plist-original, uninstall first to force install)"
elif [ -f "$PLATFORMDIR/Info.plist" ]; then
mv "$PLATFORMDIR/Info.plist" "$PLATFORMDIR/Info.plist-original"
plutil -remove MinimumSDKVersion -o "$PLATFORMDIR/Info.plist" "$PLATFORMDIR/Info.plist-original"
echo "*** modified MacOSX Info.plist"
fi
if [ ! -L /Developer/SDKs ] && [ $XCODE42 -ne 1 ]; then
echo "*** Warning: /Developer/SDKs should be a symlink to $SDKDIR/SDKs"
echo "Check that /Developer exists, and fix /Developer/SDKs with:"
echo " $ sudo ln -sf '$SDKDIR/SDKs' /Developer/SDKs"
fi
;;
cleanpackages)
#######################
# PHASE 3: CLEANING
#
if [ "$compilers" = 1 ]; then
rm XcodePluginGCC40.tar.gz Xcode3as.tar.gz Xcode3ld.tar.gz xcode_3.2.6_gcc4.0.pkg xcode_3.2.6_gcc4.2.pkg xcode_3.2.6_llvm-gcc4.2.pkg XcodePluginGCC42-Xcode4.tar.gz XcodePluginGCC42.tar.gz XcodePluginLLVMGCC42.tar.gz Xcode3gcc40.tar.gz Xcode3gcc42.tar.gz Xcode3llvmgcc42.tar.gz 2>/dev/null
fi
#for i in 10.4u 10.5 10.6 10.7 10.8 10.9 10.10; do
if [ "$osx104" = 1 ]; then
rm Xcode104SDK.tar.gz 2>/dev/null
fi
if [ "$osx105" = 1 ]; then
rm Xcode105SDK.tar.gz 2>/dev/null
fi
if [ "$osx106" = 1 ]; then
rm Xcode106SDK.tar.gz 2>/dev/null
fi
if [ "$osx107" = 1 ]; then
rm Xcode107SDK.tar.gz 2>/dev/null
fi
if [ "$osx108" = 1 ]; then
rm Xcode108SDK.tar.gz 2>/dev/null
fi
if [ "$osx109" = 1 ]; then
rm Xcode109SDK.tar.gz 2>/dev/null
fi
if [ "$osx1010" = 1 ]; then
rm Xcode1010SDK.tar.gz 2>/dev/null
fi
if [ "$osx1011" = 1 ]; then
rm Xcode1011SDK.tar.gz 2>/dev/null
fi
if [ "$osx1012" = 1 ]; then
rm Xcode1012SDK.tar.gz 2>/dev/null
fi
if [ "$osx1012" = 1 ]; then
rm Xcode1013SDK.tar.gz 2>/dev/null
fi
;;
uninstall|uninstallbeta)
#######################
# PHASE 4: UNINSTALLING
#
if [ $EUID -ne 0 ]; then
echo "*** Error: The uninstall phase requires administrative rights. Please run it as:"
echo " $ sudo $0 uninstall"
exit 1
fi
if [ "$compilers" = 1 ]; then
if [ -f "$PLUGINDIR/GCC 4.0.xcplugin/legacy" ]; then
rm -rf "$PLUGINDIR/GCC 4.0.xcplugin"
fi
if [ -f "$PLUGINDIR/GCC 4.2.xcplugin/legacy" ]; then
rm -rf "$PLUGINDIR/GCC 4.2.xcplugin"
fi
if [ -d "$PLUGINDIR/GCC 4.2.xcplugin-original" ]; then
mv "$PLUGINDIR/GCC 4.2.xcplugin-original" "$PLUGINDIR/GCC 4.2.xcplugin"
fi
if [ -f "$PLUGINDIR/LLVM GCC 4.2.xcplugin/legacy" ]; then
rm -rf "$PLUGINDIR/LLVM GCC 4.2.xcplugin"
fi
for f in "$GCCDIR/usr/libexec/gcc/darwin/ppc" \
"$GCCDIR/usr/libexec/gcc/darwin/ppc64" \
"$GCCDIR/usr/libexec/gcc/darwin/i386" \
"$GCCDIR/usr/libexec/gcc/darwin/x86_64" \
"$GCCINSTALLDIR/usr/libexec/as/ppc" \
"$GCCINSTALLDIR/usr/libexec/as/ppc64" \
"$GCCINSTALLDIR/usr/libexec/ld/ppc" \
"$GCCINSTALLDIR/usr/libexec/ld/ppc7400" \
"$GCCINSTALLDIR/usr/libexec/ld/ppc970" \
"$GCCINSTALLDIR/usr/libexec/ld/ppc64" \
"$GCCINSTALLDIR/usr/libexec/ld/i386" \
"$GCCINSTALLDIR/usr/libexec/ld/x86_64"; do
if [ -e "$f" ]; then
rm -rf "$f"
fi
done
if [ -f "$GCCINSTALLDIR/usr/bin/as-original" ]; then
rm "$GCCINSTALLDIR/usr/bin/as"
mv -f "$GCCINSTALLDIR/usr/bin/as-original" "$GCCINSTALLDIR/usr/bin/as"
fi
if [ -f "$GCCINSTALLDIR/usr/bin/ld-original" ]; then
rm "$GCCINSTALLDIR/usr/bin/ld"
mv -f "$GCCINSTALLDIR/usr/bin/ld-original" "$GCCINSTALLDIR/usr/bin/ld"
fi
# preserve original LLVM-GCC on Xcode 4 and earlier
if [ ! -d "$GCCDIR/Library/Perl" ] || [ -d "$GCCDIR/Library/Perl/5.10" ]; then
mv "$GCCDIR"/usr/bin/{gcov,i686-apple-darwin"$RELEASENUM"-llvm-g{++,cc},llvm-{cpp,g++,gcc}}-4.2 "$GCCDIR"
(cd "$GCCDIR" || exit; rm -rf $GCCFILES )
mv "$GCCDIR"/*-4.2 "$GCCDIR"/usr/bin
(cd "$GCCDIR/usr/llvm-gcc-4.2" || exit; rm -f {bin,lib/gcc,libexec/gcc,share/man/man1}/powerpc*)
else
[ -f "$GCCDIR/usr/bin/gcov-4.2" ] && [ ! -L "$GCCDIR/usr/bin/gcov-4.2" ] && mv "$GCCDIR/usr/bin/gcov-4.2" "$GCCDIR"
(cd "$GCCDIR" || exit; rm -rf $GCCFILES $LLVMGCCFILES)
[ -f "$GCCDIR/gcov-4.2" ] && mv "$GCCDIR/gcov-4.2" "$GCCDIR/usr/bin"
fi
(cd "$GCCINSTALLDIR" || exit; rm -rf $GCCFILES $LLVMGCCFILES)
rmdir "$GCCINSTALLDIR/usr/include/gcc/darwin" "$GCCINSTALLDIR/usr/include/gcc" || :
rmdir "$GCCINSTALLDIR/usr/lib/"{i686-apple-darwin10,powerpc-apple-darwin10}"/4.2.1" "$GCCINSTALLDIR/usr/lib/"{gcc/,}{i686-apple-darwin10,powerpc-apple-darwin10} "$GCCINSTALLDIR/usr/lib/gcc" || :
rmdir "$GCCINSTALLDIR/usr/libexec/gcc/"{i686-apple-darwin10,powerpc-apple-darwin10} "$GCCINSTALLDIR/usr/libexec/gcc" "$GCCINSTALLDIR/usr/libexec/ld" "$GCCDIR/usr/libexec/gcc/darwin" "$GCCDIR/usr/libexec/gcc" || :
rmdir "$GCCINSTALLDIR/usr/share/man/man7" || :
if [ -f "$PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec-original" ]; then
rm "$PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec"
mv -f "$PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec-original" "$PLATFORMDIR/Developer/Library/Xcode/Specifications/MacOSX Architectures.xcspec"
fi
fi
#for i in 10.4u 10.5 10.6 10.7 10.8 10.9 10.10; do
if [ "$osx104" = 1 ]; then
i=10.4u
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$osx105" = 1 ]; then
i=10.5
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$osx106" = 1 ]; then
i=10.6
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$osx107" = 1 ]; then
i=10.7
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$osx108" = 1 ]; then
i=10.8
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$osx109" = 1 ]; then
i=10.9
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$osx1010" = 1 ]; then
i=10.10
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$osx1011" = 1 ]; then
i=10.11
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$osx1012" = 1 ]; then
i=10.12
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$osx1013" = 1 ]; then
i=10.13
[ -f "$SDKDIR/SDKs/MacOSX${i}.sdk/legacy" ] && rm -rf "$SDKDIR/SDKs/MacOSX${i}.sdk"
fi
if [ "$compilers" = 1 ]; then
if [ "$GCCINSTALLDIR/usr/bin/gcc" -ef "$GCCINSTALLDIR/usr/bin/clang" ]; then
rm "$GCCINSTALLDIR/usr/bin/gcc"
fi
for b in llvm-g++ llvm-gcc; do
if [ -L $GCCINSTALLDIR/usr/bin/$b ] && [ ! -e $GCCINSTALLDIR/usr/bin/$b ]; then
rm $GCCINSTALLDIR/usr/bin/$b
fi
done
for b in c++-4.0 cpp-4.0 c++-4.2 cpp-4.2 gcc-4.0 g++-4.0 gcov-4.0 gcc-4.2 g++-4.2 gcov-4.2 llvm-cpp-4.2 llvm-g++-4.2 llvm-gcc-4.2; do
if [ -L $GCCLINKDIR/bin/$b ] && [ ! -e $GCCLINKDIR/bin/$b ]; then
rm $GCCLINKDIR/bin/$b
fi
done
for b in cpp-4.2.1 gcc-4.0.1 g++-4.0.1 gcc-4.2.1 g++-4.2.1 llvm-g++-4.2 llvm-gcc-4.2; do
if [ -L $GCCLINKDIR/bin/i686-apple-darwin10-$b ] && [ ! -e $GCCLINKDIR/bin/i686-apple-darwin10-$b ]; then
rm $GCCLINKDIR/bin/i686-apple-darwin10-$b
fi
done
for b in cpp-4.2.1 gcc-4.0.1 g++-4.0.1 gcc-4.2.1 g++-4.2.1 llvm-g++-4.2 llvm-gcc-4.2; do
if [ -L $GCCLINKDIR/bin/powerpc-apple-darwin10-$b ] && [ ! -e $GCCLINKDIR/bin/powerpc-apple-darwin10-$b ]; then
rm $GCCLINKDIR/bin/powerpc-apple-darwin10-$b
fi
done
fi
if [ -f "$PLATFORMDIR/Info.plist-original" ] && [ $(ls -1 "$SDKDIR"/SDKs/MacOSX*.sdk/legacy 2>/dev/null | wc -l) -eq 0 ]; then
rm "$PLATFORMDIR/Info.plist"
mv -f "$PLATFORMDIR/Info.plist-original" "$PLATFORMDIR/Info.plist"
fi
;;
esac
# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh