aboutsummaryrefslogtreecommitdiffstats
path: root/utils/buildit
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2009-10-30 20:54:59 +0000
committerJim Grosbach <grosbach@apple.com>2009-10-30 20:54:59 +0000
commit669327b9fb3ecc1caa4cae73ee59dddc76ca3f6c (patch)
treeddd15723ae5d555049f63016efcaba8f914052c2 /utils/buildit
parent929ffa241480bfe8b45c48cc64a8e0de38ec2421 (diff)
downloadexternal_llvm-669327b9fb3ecc1caa4cae73ee59dddc76ca3f6c.zip
external_llvm-669327b9fb3ecc1caa4cae73ee59dddc76ca3f6c.tar.gz
external_llvm-669327b9fb3ecc1caa4cae73ee59dddc76ca3f6c.tar.bz2
Allow cross target build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85611 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/buildit')
-rwxr-xr-xutils/buildit/build_llvm85
1 files changed, 67 insertions, 18 deletions
diff --git a/utils/buildit/build_llvm b/utils/buildit/build_llvm
index 2bdb2082..0637177 100755
--- a/utils/buildit/build_llvm
+++ b/utils/buildit/build_llvm
@@ -59,6 +59,9 @@ echo DARWIN_VERS = $DARWIN_VERS
if [ "x$RC_ProjectName" = "xllvmCore_Embedded" ]; then
DT_HOME=$DEST_DIR/Developer/Platforms/iPhoneOS.platform/Developer/usr
DEST_ROOT="/Developer/Platforms/iPhoneOS.platform/Developer$DEST_ROOT"
+elif [ "x$RC_ProjectName" = "xllvmCore_EmbeddedHosted" ]; then
+ DT_HOME=$DEST_DIR/usr
+ DEST_ROOT="/Developer$DEST_ROOT"
else
DT_HOME=$DEST_DIR/Developer/usr
DEST_ROOT="/Developer$DEST_ROOT"
@@ -91,24 +94,69 @@ sed -e '/[Aa]pple-style/d' -e '/include.*GNUmakefile/d' $ORIG_SRC_DIR/Makefile >
mkdir -p $DIR/obj-llvm || exit 1
cd $DIR/obj-llvm || exit 1
-# If the user has set CC or CXX, respect their wishes. If not,
-# compile with LLVM-GCC/LLVM-G++ if available; if LLVM is not
-# available, fall back to usual GCC/G++ default.
-savedPATH=$PATH ; PATH="$PATH:/Developer/usr/bin"
-XTMPCC=$(which llvm-gcc)
-if [ x$CC = x -a x$XTMPCC != x ] ; then export CC=$XTMPCC ; fi
-XTMPCC=$(which llvm-g++)
-if [ x$CXX = x -a x$XTMPCC != x ] ; then export CXX=$XTMPCC ; fi
-PATH=$savedPATH
-unset XTMPCC savedPATH
-
-if [ \! -f Makefile.config ]; then
- $SRC_DIR/configure --prefix=$DT_HOME/local \
- --enable-targets=arm,x86,powerpc,cbe \
- --enable-assertions=$LLVM_ASSERTIONS \
- --enable-optimized=$LLVM_OPTIMIZED \
- --disable-bindings \
- || exit 1
+
+if [ "x$RC_ProjectName" = "xllvmCore_EmbeddedHosted" ]; then
+ # The cross-tools' build process expects to find an existing cross toolchain
+ # under names like 'arm-apple-darwin$DARWIN_VERS-as'; so make them.
+ rm -rf $DIR/bin || exit 1
+ mkdir $DIR/bin || exit 1
+ for prog in ar nm ranlib strip lipo ld as ; do
+ P=$DIR/bin/arm-apple-darwin$DARWIN_VERS-${prog}
+ T=`xcrun -sdk $SDKROOT -find ${prog}`
+ echo '#!/bin/sh' > $P || exit 1
+ echo 'exec '$T' "$@"' >> $P || exit 1
+ chmod a+x $P || exit 1
+ done
+ # Try to use the platform llvm-gcc. Fall back to gcc if it's not available.
+ for prog in gcc g++ ; do
+ P=$DIR/bin/arm-apple-darwin$DARWIN_VERS-${prog}
+# FIXME: Uncomment once llvm-gcc works for this
+# T=`xcrun -find llvm-${prog}`
+# if [ "x$T" = "x" ] ; then
+ T=`xcrun -sdk $SDKROOT -find ${prog}`
+# fi
+ echo '#!/bin/sh' > $P || exit 1
+ echo 'exec '$T' -arch armv6 -isysroot '${SDKROOT}' "$@"' >> $P || exit 1
+ chmod a+x $P || exit 1
+ done
+
+ PATH=$DIR/bin:$PATH
+# otherwise, try to use llvm-gcc if it's available
+else
+ # If the user has set CC or CXX, respect their wishes. If not,
+ # compile with LLVM-GCC/LLVM-G++ if available; if LLVM is not
+ # available, fall back to usual GCC/G++ default.
+ savedPATH=$PATH ; PATH="$PATH:/Developer/usr/bin"
+ XTMPCC=$(which llvm-gcc)
+ if [ x$CC = x -a x$XTMPCC != x ] ; then export CC=$XTMPCC ; fi
+ XTMPCC=$(which llvm-g++)
+ if [ x$CXX = x -a x$XTMPCC != x ] ; then export CXX=$XTMPCC ; fi
+ PATH=$savedPATH
+ unset XTMPCC savedPATH
+fi
+
+
+if [ "x$RC_ProjectName" = "xllvmCore_EmbeddedHosted" ]; then
+ if [ \! -f Makefile.config ]; then
+ $SRC_DIR/configure --prefix=$DT_HOME \
+ --enable-targets=arm \
+ --host=arm-apple-darwin10 \
+ --target=arm-apple-darwin10 \
+ --build=i686-apple-darwin10 \
+ --enable-assertions=$LLVM_ASSERTIONS \
+ --enable-optimized=$LLVM_OPTIMIZED \
+ --disable-bindings \
+ || exit 1
+ fi
+else
+ if [ \! -f Makefile.config ]; then
+ $SRC_DIR/configure --prefix=$DT_HOME/local \
+ --enable-targets=arm,x86,powerpc,cbe \
+ --enable-assertions=$LLVM_ASSERTIONS \
+ --enable-optimized=$LLVM_OPTIMIZED \
+ --disable-bindings \
+ || exit 1
+ fi
fi
SUBVERSION=`echo $RC_ProjectSourceVersion | sed -e 's/[^.]*\.\([0-9]*\).*/\1/'`
@@ -158,6 +206,7 @@ if [ "x$MAJ_VER" != "x4" -o "x$MIN_VER" != "x0" ]; then
fi
make $JOBS_FLAG $OPTIMIZE_OPTS UNIVERSAL=1 UNIVERSAL_ARCH="$TARGETS" \
+ UNIVERSAL_SDK_PATH=$SDKROOT \
NO_RUNTIME_LIBS=1 \
LLVM_SUBMIT_VERSION=$LLVM_SUBMIT_VERSION \
LLVM_SUBMIT_SUBVERSION=$LLVM_SUBMIT_SUBVERSION \