#!/bin/sh
set -x
TRANSLATE_ARCH="sed -e s/ppc/powerpc/ -e s/i386/i686/ -e s/armv6/arm/"
OMIT_X86_64="sed -e s/x86_64//"
HOSTS=`echo $1 | $TRANSLATE_ARCH `
TARGETS=`echo $2 | $TRANSLATE_ARCH | $OMIT_X86_64 | sed -e s,\\',,g`
BOOTSTRAP=${BOOTSTRAP-bootstrap}
if [ "$BOOTSTRAP" != bootstrap ]; then
bootstrap=--disable-bootstrap
fi
LANGUAGES=${LANGUAGES-c,objc,c++,obj-c++}
if [ "x$LLVM_DEBUG" == "x" ]; then
CFLAGS="-g -O2 ${RC_NONARCH_CFLAGS/-pipe/}"
else
CFLAGS="-g"
fi
BUILD=`arch | $TRANSLATE_ARCH`
ORIG_SRC_DIR="$3"
DEST_ROOT="$4"
DEST_DIR="$5"
SYM_DIR="$6"
ENABLE_LLVM="$7"
LLVM_ASSERTIONS="$8"
LLVMCORE_PATH="$9"
LLVM_SUBMIT_VERSION="${10}"
LLVM_SUBMIT_SUBVERSION="${11}"
LLVM_BIN_DIR=$DEST_ROOT/../bin
DIR=`pwd`
VERS=`cat $ORIG_SRC_DIR/gcc/BASE-VER`
if [ -z "$VERS" ]; then
exit 1
fi
MAJ_VERS=`echo $VERS | sed 's/\([0-9]*\.[0-9]*\)[.-].*/\1/'`
LIBSTDCXX_VERSION=4.2.1
if [ ! -d "/usr/include/c++/$LIBSTDCXX_VERSION" ]; then
LIBSTDCXX_VERSION=4.0.0
fi
NON_ARM_CONFIGFLAGS="--with-gxx-include-dir=/usr/include/c++/$LIBSTDCXX_VERSION"
DARWIN_VERS=`uname -r | sed 's/\..*//'`
echo DARWIN_VERS = $DARWIN_VERS
ARM_LIBSTDCXX_VERSION=4.2.1
ARM_CONFIGFLAGS="--with-gxx-include-dir=/usr/include/c++/$ARM_LIBSTDCXX_VERSION"
ARM_PLATFORM=/Developer/Platforms/iPhoneOS.platform
ARM_IPHONE_SDK=iPhoneOS${IPHONEOS_DEPLOYMENT_TARGET}.Internal.sdk
ARM_EXTRA_SDK=/Developer/SDKs/Extra
if [ $DARWIN_VERS -le 9 -a ! -d $ARM_EXTRA_SDK ]; then
ARM_TOOLROOT=$ARM_PLATFORM
else
ARM_TOOLROOT=/
fi
ARM_SYSROOT=$ARM_EXTRA_SDK
if [ ! -d $ARM_SYSROOT ]; then
ARM_SYSROOT=$ARM_PLATFORM/Developer/SDKs/$ARM_IPHONE_SDK
fi
if [ -z "$MACOSX_DEPLOYMENT_TARGET" ]; then
MACOSX_DEPLOYMENT_MAJOR=10
MACOSX_DEPLOYMENT_MINOR=5
else
MACOSX_DEPLOYMENT_MAJOR=`echo $MACOSX_DEPLOYMENT_TARGET | sed 's/\..*//'`
MACOSX_DEPLOYMENT_MINOR=`echo $MACOSX_DEPLOYMENT_TARGET | sed 's/[0-9]*\.\([0-9]*\).*/\1/'`
fi
if [ $MACOSX_DEPLOYMENT_MAJOR -eq 10 -a \
$MACOSX_DEPLOYMENT_MINOR -le 5 ]; then
ARM_CONFIGFLAGS="$ARM_CONFIGFLAGS --with-sysroot=\"$ARM_SYSROOT\""
else
ARM_SYSROOT=/
fi
if echo $TARGETS | grep arm; then
if [ ! -d $ARM_SYSROOT ]; then
echo "Error: cannot find ARM SDK to build ARM target"
exit 1
fi
if [ ! -d $ARM_TOOLROOT ]; then
echo "Error: $ARM_TOOLROOT directory is not installed"
exit 1
fi
fi
unset CC
SRC_DIR=$DIR/src
rm -rf $SRC_DIR || exit 1
mkdir $SRC_DIR || exit 1
ln -s $ORIG_SRC_DIR/* $SRC_DIR/ || exit 1
rm -rf $SRC_DIR/tcl $SRC_DIR/expect $SRC_DIR/dejagnu || exit 1
rm -rf $SRC_DIR/libstdc++-v3 || exit 1
rm -f /usr/lib/gcc/*/4.0.0/specs
if [ "x$LLVM_DEBUG" == "x" ]; then
CHECKING_FLAGS="--disable-checking --enable-werror"
else
CHECKING_FLAGS="--enable-checking"
fi
CONFIGFLAGS="$CHECKING_FLAGS \
--prefix=$DEST_ROOT \
--mandir=\${prefix}/share/man \
--enable-languages=$LANGUAGES \
--program-prefix=llvm- \
--program-transform-name=/^[cg][^.-]*$/s/$/-$MAJ_VERS/ \
--with-slibdir=/usr/lib \
--build=$BUILD-apple-darwin$DARWIN_VERS"
if [ "$ENABLE_LLVM" == true ]; then
CONFIGFLAGS="$CONFIGFLAGS --enable-llvm=$LLVMCORE_PATH"
fi
SYSCTL=`sysctl -n hw.activecpu`
if [ -z "$SYSCTL" ]; then
SYSCTL=`sysctl -n hw.ncpu`
fi
if [ -z "$SYSCTL" ]; then
SYSCTL=2
fi
MAKEFLAGS=${LOCAL_MAKEFLAGS-"-j $SYSCTL"}
BUILD_CXX=0
for lang in `echo $LANGUAGES | sed 's/,/ /g'`; do
if [ $lang = "c++" -o $lang = "obj-c++" ]; then
BUILD_CXX=1
break
fi
done
unset LANGUAGES
if [ "$ENABLE_LLVM" == true ]; then
MAKEFLAGS="$MAKEFLAGS BUILD_LLVM_APPLE_STYLE=1"
MAKEFLAGS="$MAKEFLAGS BUILD_LLVM_INTO_A_DYLIB=1"
MAKEFLAGS="$MAKEFLAGS LLVM_VERSION_INFO=$LLVM_SUBMIT_VERSION"
fi
mkdir -p $DIR/obj-$BUILD-$BUILD $DIR/dst-$BUILD-$BUILD || exit 1
cd $DIR/obj-$BUILD-$BUILD || exit 1
if [ \! -f Makefile ]; then
$SRC_DIR/configure $bootstrap $CONFIGFLAGS \
$NON_ARM_CONFIGFLAGS \
--host=$BUILD-apple-darwin$DARWIN_VERS --target=$BUILD-apple-darwin$DARWIN_VERS || exit 1
fi
unset RC_DEBUG_OPTIONS
make $MAKEFLAGS CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
make $MAKEFLAGS html CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
make $MAKEFLAGS DESTDIR=$DIR/dst-$BUILD-$BUILD install-gcc install-target \
CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
D=$DIR/dst-$BUILD-$BUILD$DEST_ROOT/bin
ln -f $D/llvm-gcc $D/gcc || exit 1
ln -f $D/gcc $D/$BUILD-apple-darwin$DARWIN_VERS-gcc || exit 1
PATH=$DIR/dst-$BUILD-$BUILD$DEST_ROOT/bin:$PATH
rm -rf $DIR/bin || exit 1
mkdir $DIR/bin || exit 1
for prog in ar nm ranlib strip lipo ld ; do
for t in `echo $TARGETS $HOSTS | sort -u`; do
P=$DIR/bin/${t}-apple-darwin$DARWIN_VERS-${prog}
if [ $t = "arm" ]; then
toolroot=$ARM_TOOLROOT
else
toolroot=
fi
echo ' echo 'exec '${toolroot}'/usr/bin/'${prog}' "$@"' >> $P || exit 1
chmod a+x $P || exit 1
done
done
for t in `echo $1 $2 | sort -u`; do
gt=`echo $t | $TRANSLATE_ARCH`
P=$DIR/bin/${gt}-apple-darwin$DARWIN_VERS-as
if [ $gt = "arm" ]; then
toolroot=$ARM_TOOLROOT
else
toolroot=
fi
echo '
echo 'for a; do case $a in -arch) exec '${toolroot}'/usr/bin/as "$@";; esac; done' >> $P || exit 1
echo 'exec '${toolroot}'/usr/bin/as -arch '${t}' "$@"' >> $P || exit 1
chmod a+x $P || exit 1
done
PATH=$DIR/bin:$PATH
if echo $HOSTS | grep $BUILD
then
CROSS_TARGETS=`echo $TARGETS $HOSTS | tr ' ' '\n' | sort -u`
else
CROSS_TARGETS="$HOSTS"
fi
for t in $CROSS_TARGETS ; do
if [ $t != $BUILD ] ; then
mkdir -p $DIR/obj-$BUILD-$t $DIR/dst-$BUILD-$t || exit 1
cd $DIR/obj-$BUILD-$t || exit 1
if [ \! -f Makefile ]; then
$SRC_DIR/configure $CONFIGFLAGS --enable-werror-always \
`if [ $t = 'arm' ] ; then echo $ARM_CONFIGFLAGS ; else echo $NON_ARM_CONFIGFLAGS ; fi` \
--program-prefix=$t-apple-darwin$DARWIN_VERS- \
--host=$BUILD-apple-darwin$DARWIN_VERS --target=$t-apple-darwin$DARWIN_VERS || exit 1
fi
make $MAKEFLAGS all CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
make $MAKEFLAGS DESTDIR=$DIR/dst-$BUILD-$t install-gcc install-target \
CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
PATH=$DIR/dst-$BUILD-$t/$DEST_ROOT/bin:$PATH
fi
done
for t in $CROSS_TARGETS ; do
DT=$DIR/dst-$BUILD-$t
D=`echo $DT/$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS`
mv $D/static/libgcc.a $D/libgcc_static.a || exit 1
mv $D/kext/libgcc.a $D/libcc_kext.a || exit 1
rm -r $D/static $D/kext || exit 1
if [ -e $D/kext64/libgcc.a ]; then
libtool -static $D/{kext64/libgcc.a,libcc_kext.a} -o $D/libcc_kext1.a 2>&1 | grep -v 'has no symbols'
mv $D/libcc_kext1.a $D/libcc_kext.a
rm -rf $D/kext64
fi
done
for h in $HOSTS ; do
if [ $h != $BUILD ] ; then
for t in $TARGETS ; do
mkdir -p $DIR/obj-$h-$t $DIR/dst-$h-$t || exit 1
cd $DIR/obj-$h-$t || exit 1
if [ $h = $t ] ; then
pp=
else
pp=$t-apple-darwin$DARWIN_VERS-
fi
if [ \! -f Makefile ]; then
$SRC_DIR/configure $CONFIGFLAGS \
`if [ $t = 'arm' ] && [ $h != 'arm' ] ; then echo $ARM_CONFIGFLAGS ; else echo $NON_ARM_CONFIGFLAGS ; fi` \
--program-prefix=$pp \
--host=$h-apple-darwin$DARWIN_VERS --target=$t-apple-darwin$DARWIN_VERS || exit 1
fi
if [ $h = $t ] ; then
make $MAKEFLAGS all CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
make $MAKEFLAGS DESTDIR=$DIR/dst-$h-$t install-gcc install-target \
CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
else
make $MAKEFLAGS all-gcc CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
make $MAKEFLAGS DESTDIR=$DIR/dst-$h-$t install-gcc \
CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1
fi
done
fi
done
cd $DEST_DIR || exit 1
rm -rf * || exit 1
if [ "$ENABLE_LLVM" == false ]; then
HTMLDIR="/Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.DeveloperTools.docset/Contents/Resources/Documents/documentation/DeveloperTools"
mkdir -p ".$HTMLDIR" || exit 1
cp -Rp $DIR/obj-$BUILD-$BUILD/gcc/HTML/* ".$HTMLDIR/" || exit 1
fi
mkdir -p .$DEST_ROOT/share || exit 1
cp -Rp $DIR/dst-$BUILD-$BUILD$DEST_ROOT/share/man .$DEST_ROOT/share/ \
|| exit 1
rm -rf .$DEST_ROOT/share/man/man7
cd $DIR/dst-$BUILD-$BUILD$DEST_ROOT/libexec/gcc/$BUILD-apple-darwin$DARWIN_VERS/$VERS \
|| exit 1
LIBEXEC_FILES=`find . -type f -print || exit 1`
LIBEXEC_DIRS=`find . -type d -print || exit 1`
cd $DEST_DIR || exit 1
for t in $TARGETS ; do
DL=$DEST_ROOT/libexec/gcc/$t-apple-darwin$DARWIN_VERS/$VERS
for d in $LIBEXEC_DIRS ; do
mkdir -p .$DL/$d || exit 1
done
for f in $LIBEXEC_FILES ; do
if file $DIR/dst-*-$t$DL/$f | grep -q -E 'Mach-O (executable|dynamically linked shared library)' ; then
lipo -output .$DL/$f -create $DIR/dst-*-$t$DL/$f || exit 1
else
cp -p $DIR/dst-$BUILD-$t$DL/$f .$DL/$f || exit 1
fi
done
ln -s ../../../../../bin/as .$DL/as
ln -s ../../../../../bin/ld .$DL/ld
done
mkdir .$DEST_ROOT/bin
cpp_files=`ls $DIR/dst-*$DEST_ROOT/bin/{llvm-cpp,cpp-$MAJ_VERS} 2>/dev/null`
lipo -output .$DEST_ROOT/bin/llvm-cpp-$MAJ_VERS -create $cpp_files || exit 1
TARG0=`echo $TARGETS | cut -d ' ' -f 1`
lipo -output .$DEST_ROOT/bin/gcov-$MAJ_VERS -create \
$DIR/dst-*-$TARG0$DEST_ROOT/bin/*gcov* || exit 1
for t in $TARGETS ; do
lipo -output .$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-llvm-gcc-$MAJ_VERS -create \
$DIR/dst-*-$t/$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-gcc-$VERS || exit 1
lipo -output .$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS -create \
$DIR/dst-*-$t/$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-*g++* || exit 1
done
mkdir -p .$DEST_ROOT/lib/gcc || exit 1
for t in $TARGETS ; do
cp -Rp $DIR/dst-$BUILD-$t/$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS \
.$DEST_ROOT/lib/gcc || exit 1
done
LIBGOMP_TARGETS=`echo $TARGETS | sed -E -e 's/(^|[[:space:]])arm($|[[:space:]])/ /'`
LIBGOMP_HOSTS=`echo $HOSTS | $OMIT_X86_64 | sed -E -e 's/(^|[[:space:]])arm($|[[:space:]])/ /'`
for t in $LIBGOMP_TARGETS ; do
for h in $LIBGOMP_HOSTS ; do
if [ $h = $t ] ; then
cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/libgomp.a \
.$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ || exit 1
cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/libgomp.spec \
.$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ || exit 1
if [ $h = 'powerpc' ] ; then
cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/ppc64/libgomp.a \
.$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/
cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/ppc64/libgomp.spec \
.$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/
elif [ $h = 'i686' ] ; then
cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/x86_64/libgomp.a \
.$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/x86_64/ || exit 1
cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/x86_64/libgomp.spec \
.$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/x86_64/ || exit 1
fi
fi
done
done
if [ $BUILD_CXX -eq 1 ]; then
for t in $TARGETS ; do
if [ "$t" == 'arm' ] ; then
cp -p $ARM_SYSROOT/usr/lib/libstdc++.6.dylib \
.$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/libstdc++.dylib \
|| exit 1
else
cp -p /usr/lib/libstdc++.6.dylib \
.$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/libstdc++.dylib \
|| exit 1
fi
done
fi
HEADERPATH=$DEST_ROOT/include/gcc/darwin/$MAJ_VERS
mkdir -p .$HEADERPATH || exit 1
cd $SRC_DIR/more-hdrs
for h in `echo *.h` ; do
if [ ! -f /usr/include/$h -o -L /usr/include/$h ] ; then
cp -R $h $DEST_DIR$HEADERPATH/$h || exit 1
for t in $TARGETS ; do
THEADERPATH=$DEST_DIR$DEST_ROOT/lib/gcc/${t}-apple-darwin$DARWIN_VERS/$VERS/include
[ -f $THEADERPATH/$h ] || \
ln -s ../../../../../include/gcc/darwin/$MAJ_VERS/$h $THEADERPATH/$h || \
exit 1
done
fi
done
MDIR=$DEST_DIR$DEST_ROOT/share/man/man1
if [ $BUILD_CXX -eq 1 ]; then
ln -f $MDIR/llvm-g++.1 $MDIR/llvm-c++.1 || exit 1
fi
for t in $TARGETS ; do
ln -f $MDIR/llvm-gcc.1 $MDIR/$t-apple-darwin$DARWIN_VERS-llvm-gcc.1 \
|| exit 1
if [ $BUILD_CXX -eq 1 ]; then
ln -f $MDIR/llvm-g++.1 $MDIR/$t-apple-darwin$DARWIN_VERS-llvm-g++.1 \
|| exit 1
fi
done
gzip -f $MDIR/*
mkdir -p $DEST_DIR/Developer/usr/share/man/man1
cp $ORIG_SRC_DIR/gcc/doc/llvm-gcc.1 $DEST_DIR/Developer/usr/share/man/man1/llvm-gcc.1
cp $ORIG_SRC_DIR/gcc/doc/llvm-gcc.1 $DEST_DIR/Developer/usr/share/man/man1/llvm-g++.1
gzip -f $DEST_DIR/Developer/usr/share/man/man1/llvm-gcc.1
gzip -f $DEST_DIR/Developer/usr/share/man/man1/llvm-g++.1
for h in $HOSTS ; do
$h-apple-darwin$DARWIN_VERS-gcc \
$ORIG_SRC_DIR/driverdriver.c \
-DPDN="\"-apple-darwin$DARWIN_VERS-llvm-gcc-$MAJ_VERS\"" \
-DIL="\"$DEST_ROOT/bin/\"" -I $ORIG_SRC_DIR/include \
-I $ORIG_SRC_DIR/gcc -I $ORIG_SRC_DIR/gcc/config \
-liberty -L$DIR/dst-$BUILD-$h$DEST_ROOT/lib/ \
-L$DIR/dst-$BUILD-$h$DEST_ROOT/$h-apple-darwin$DARWIN_VERS/lib/ \
-L$DIR/obj-$h-$BUILD/libiberty/ \
-o $DEST_DIR/$DEST_ROOT/bin/tmp-$h-llvm-gcc-$MAJ_VERS || exit 1
if [ $BUILD_CXX -eq 1 ]; then
$h-apple-darwin$DARWIN_VERS-gcc \
$ORIG_SRC_DIR/driverdriver.c \
-DPDN="\"-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS\"" \
-DIL="\"$DEST_ROOT/bin/\"" -I $ORIG_SRC_DIR/include \
-I $ORIG_SRC_DIR/gcc -I $ORIG_SRC_DIR/gcc/config \
-liberty -L$DIR/dst-$BUILD-$h$DEST_ROOT/lib/ \
-L$DIR/dst-$BUILD-$h$DEST_ROOT/$h-apple-darwin$DARWIN_VERS/lib/ \
-L$DIR/obj-$h-$BUILD/libiberty/ \
-o $DEST_DIR/$DEST_ROOT/bin/tmp-$h-llvm-g++-$MAJ_VERS || exit 1
fi
done
lipo -output $DEST_DIR/$DEST_ROOT/bin/llvm-gcc-$MAJ_VERS -create \
$DEST_DIR/$DEST_ROOT/bin/tmp-*-llvm-gcc-$MAJ_VERS || exit 1
rm $DEST_DIR/$DEST_ROOT/bin/tmp-*-llvm-gcc-$MAJ_VERS || exit 1
if [ $BUILD_CXX -eq 1 ]; then
lipo -output $DEST_DIR/$DEST_ROOT/bin/llvm-g++-$MAJ_VERS -create \
$DEST_DIR/$DEST_ROOT/bin/tmp-*-llvm-g++-$MAJ_VERS || exit 1
ln -f $DEST_DIR/$DEST_ROOT/bin/llvm-g++-$MAJ_VERS $DEST_DIR/$DEST_ROOT/bin/llvm-c++-$MAJ_VERS || exit 1
rm $DEST_DIR/$DEST_ROOT/bin/tmp-*-llvm-g++-$MAJ_VERS || exit 1
fi
cd $SYM_DIR || exit 1
rm -rf * || exit 1
find $DEST_DIR -perm -0111 \! -name fixinc.sh \
\! -name mkheaders -type f -print | xargs -n 1 -P ${SYSCTL} dsymutil
cd $DEST_DIR || exit 1
find . \( -path \*.dSYM/\* -or -name \*.a \) -print \
| cpio -pdml $SYM_DIR || exit 1
mkdir $SYM_DIR/src || exit 1
cd $DIR || exit 1
find obj-* -name \*.\[chy\] -print | cpio -pdml $SYM_DIR/src || exit 1
if [ "x$LLVM_DEBUG" != "x1" ]; then
find $DEST_DIR -perm -0111 \! -path '*DWARF*' \! -name \*.dylib \
\! -name fixinc.sh \! -name mkheaders \! -name libstdc++.dylib \
-type f -print \
| xargs strip || exit 1
find $DEST_DIR \! -path '*DWARF*' \( -name \*.a -or -name \*.dylib \) \
\! -name libgcc_s.10.*.dylib \! -name libstdc++.dylib -type f \
-print \
| xargs strip -SX || exit 1
find $DEST_DIR \! -path '*DWARF*' -name \*.a -type f -print \
| xargs ranlib || exit 1
fi
mkdir -p $DEST_DIR$LLVM_BIN_DIR
cd $DEST_DIR$LLVM_BIN_DIR
ln -s -f ../llvm-gcc-$MAJ_VERS/bin/llvm-gcc-$MAJ_VERS llvm-gcc-$MAJ_VERS || exit 1
ln -s -f ../llvm-gcc-$MAJ_VERS/bin/llvm-g++-$MAJ_VERS llvm-g++-$MAJ_VERS || exit 1
ln -s -f ../llvm-gcc-$MAJ_VERS/bin/llvm-cpp-$MAJ_VERS llvm-cpp-$MAJ_VERS || exit 1
ln -s -f ../llvm-gcc-$MAJ_VERS/bin/llvm-gcc-$MAJ_VERS llvm-gcc || exit 1
ln -s -f ../llvm-gcc-$MAJ_VERS/bin/llvm-g++-$MAJ_VERS llvm-g++ || exit 1
for t in $TARGETS ; do
ln -s -f ../llvm-gcc-$MAJ_VERS/bin/$t-apple-darwin$DARWIN_VERS-llvm-gcc-$MAJ_VERS $t-apple-darwin$DARWIN_VERS-llvm-gcc-$MAJ_VERS || exit 1
ln -s -f ../llvm-gcc-$MAJ_VERS/bin/$t-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS $t-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS || exit 1
done
cp $DEST_DIR/$DEST_ROOT/libexec/gcc/$BUILD-apple-darwin$DARWIN_VERS/$VERS/libllvmgcc.dylib \
$DEST_DIR/$DEST_ROOT/libexec/gcc/
for t in $TARGETS ; do
cd $DEST_DIR/$DEST_ROOT/libexec/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/
rm libllvmgcc.dylib
ln -s ../../libllvmgcc.dylib
done
if [ "x$LLVM_BUILT_ROOTS" == "x" ]; then
mkdir -p $DEST_DIR/usr/bin
cd $DEST_DIR/usr/bin
ln -s /Developer/usr/bin/llvm-gcc-4.2 llvm-gcc-4.2
ln -s /Developer/usr/bin/llvm-g++-4.2 llvm-g++-4.2
fi
find $DEST_DIR -name \*.dSYM -print | xargs rm -r || exit 1
chgrp -h -R wheel $DEST_DIR
chgrp -R wheel $DEST_DIR
exit 0