mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 12:19:53 +00:00
Update Apple's build script for llvmCore. <rdar://problem/12914321>
This change is basically just copying changes that we've used for Apple's clang builds to the script used for building llvmCore. Besides cleaning it up to use xcrun to locate the proper versions of tools, especially for cross compiling, it fixes the build to work with newer versions of clang that honor SDKROOT settings in the environment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172138 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5d0f061779
commit
1b8eeb327e
@ -77,6 +77,37 @@ rm $SRC_DIR/Makefile || exit 1
|
||||
# Now create our own by editing the top-level Makefile, deleting every line marked "Apple-style":
|
||||
sed -e '/[Aa]pple-style/d' -e '/include.*GNUmakefile/d' $ORIG_SRC_DIR/Makefile > $SRC_DIR/Makefile || exit 1
|
||||
|
||||
SUBVERSION=`echo $RC_ProjectSourceVersion | sed -e 's/.*\.\([0-9]*\).*/\1/'`
|
||||
if [ "x$SUBVERSION" != "x$RC_ProjectSourceVersion" ]; then
|
||||
LLVM_SUBMIT_SUBVERSION=`printf "%02d" $SUBVERSION`
|
||||
RC_ProjectSourceVersion=`echo $RC_ProjectSourceVersion | sed -e 's/\..*//'`
|
||||
LLVM_SUBMIT_VERSION=$RC_ProjectSourceVersion
|
||||
fi
|
||||
if [ "x$LLVM_SUBMIT_SUBVERSION" = "x00" -o "x$LLVM_SUBMIT_SUBVERSION" = "x0" ]; then
|
||||
LLVM_VERSION="$LLVM_SUBMIT_VERSION"
|
||||
else
|
||||
LLVM_VERSION="$LLVM_SUBMIT_VERSION-$LLVM_SUBMIT_SUBVERSION"
|
||||
fi
|
||||
LLVM_VERSION_INFO="'\" Apple Build #$LLVM_VERSION\"'"
|
||||
|
||||
# Figure out how many make processes to run.
|
||||
SYSCTL=`sysctl -n hw.activecpu`
|
||||
# sysctl -n hw.* does not work when invoked via B&I chroot /BuildRoot.
|
||||
# Builders can default to 2, since even if they are single processor,
|
||||
# nothing else is running on the machine.
|
||||
if [ -z "$SYSCTL" ]; then
|
||||
SYSCTL=2
|
||||
fi
|
||||
JOBS_FLAG="-j $SYSCTL"
|
||||
|
||||
COMMON_CONFIGURE_OPTS="\
|
||||
--prefix=$DEST_DIR$DEST_ROOT \
|
||||
--enable-assertions=$LLVM_ASSERTIONS \
|
||||
--enable-optimized=$LLVM_OPTIMIZED \
|
||||
--disable-bindings"
|
||||
|
||||
COMMON_MAKEFLAGS=$JOBS_FLAG $OPTIMIZE_OPTS UNIVERSAL=1 UNIVERSAL_ARCH="$HOSTS" UNIVERSAL_SDK_PATH=$SDKROOT NO_RUNTIME_LIBS=1 DISABLE_EDIS=1 REQUIRES_RTTI=1 DEBUG_SYMBOLS=1 LLVM_SUBMIT_VERSION=$LLVM_SUBMIT_VERSION LLVM_SUBMIT_SUBVERSION=$LLVM_SUBMIT_SUBVERSION CXXFLAGS=-DLLVM_VERSION_INFO="$LLVM_VERSION_INFO" VERBOSE=1
|
||||
|
||||
# Build the LLVM tree universal.
|
||||
mkdir -p $DIR/obj-llvm || exit 1
|
||||
cd $DIR/obj-llvm || exit 1
|
||||
@ -89,6 +120,7 @@ if [ "$ARM_HOSTED_BUILD" = yes ]; then
|
||||
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}`
|
||||
ln -s $T $DIR/bin/$prog
|
||||
echo '#!/bin/sh' > $P || exit 1
|
||||
echo 'exec '$T' "$@"' >> $P || exit 1
|
||||
chmod a+x $P || exit 1
|
||||
@ -97,80 +129,56 @@ if [ "$ARM_HOSTED_BUILD" = yes ]; then
|
||||
for prog in clang clang++ ; do
|
||||
P=$DIR/bin/arm-apple-darwin$DARWIN_VERS-${prog}
|
||||
T=`xcrun -sdk $SDKROOT -find ${prog}`
|
||||
ln -s $T $DIR/bin/$prog
|
||||
echo '#!/bin/sh' > $P || exit 1
|
||||
echo 'exec '$T' -arch armv7 -isysroot '${SDKROOT}' "$@"' >> $P || exit 1
|
||||
chmod a+x $P || exit 1
|
||||
done
|
||||
|
||||
PATH=$DIR/bin:$PATH
|
||||
fi
|
||||
|
||||
if [ "$ARM_HOSTED_BUILD" = yes ]; then
|
||||
configure_opts="--enable-targets=arm --host=arm-apple-darwin10 \
|
||||
--target=arm-apple-darwin10 --build=i686-apple-darwin10"
|
||||
elif [ "$IOS_SIM_BUILD" = yes ]; then
|
||||
# Use a non-standard "darwin_sim" host triple to trigger a cross-build.
|
||||
configure_opts="--enable-targets=x86 --host=i686-apple-darwin_sim \
|
||||
--build=i686-apple-darwin10"
|
||||
unset SDKROOT && \
|
||||
$SRC_DIR/configure $COMMON_CONFIGURE_OPTS \
|
||||
--enable-targets=arm \
|
||||
--host=arm-apple-darwin10 \
|
||||
--target=arm-apple-darwin10 \
|
||||
--build=i686-apple-darwin10 \
|
||||
--program-prefix="" \
|
||||
|| exit 1
|
||||
|
||||
make $COMMON_MAKEFLAGS SDKROOT=
|
||||
if [ $? != 0 ] ; then
|
||||
echo "error: LLVM 'make' failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
else
|
||||
configure_opts="--enable-targets=arm,x86"
|
||||
fi
|
||||
# not $ARM_HOSTED_BUILD
|
||||
|
||||
if [ "$IOS_SIM_BUILD" = yes ]; then
|
||||
# Use a non-standard "darwin_sim" host triple to trigger a cross-build.
|
||||
configure_opts="--enable-targets=x86 --host=i686-apple-darwin_sim \
|
||||
--build=i686-apple-darwin10"
|
||||
else
|
||||
configure_opts="--enable-targets=arm,x86"
|
||||
fi
|
||||
|
||||
if [ "$ARM_HOSTED_BUILD" != yes ]; then
|
||||
if [ $SDKROOT ]; then
|
||||
CPPFLAGS="$CPPFLAGS -isysroot $SDKROOT"
|
||||
fi
|
||||
for host in $HOSTS; do :; done
|
||||
CPPFLAGS="$CPPFLAGS -arch $host"
|
||||
fi
|
||||
|
||||
if [ \! -f Makefile.config ]; then
|
||||
$SRC_DIR/configure --prefix=$DEST_DIR$DEST_ROOT $configure_opts \
|
||||
--enable-assertions=$LLVM_ASSERTIONS \
|
||||
--enable-optimized=$LLVM_OPTIMIZED \
|
||||
--disable-bindings \
|
||||
$SRC_DIR/configure $COMMON_CONFIGURE_OPTS $configure_opts \
|
||||
--program-prefix="" \
|
||||
CPPFLAGS="$CPPFLAGS" \
|
||||
|| exit 1
|
||||
fi
|
||||
|
||||
SUBVERSION=`echo $RC_ProjectSourceVersion | sed -e 's/.*\.\([0-9]*\).*/\1/'`
|
||||
|
||||
if [ "x$SUBVERSION" != "x$RC_ProjectSourceVersion" ]; then
|
||||
LLVM_SUBMIT_SUBVERSION=`printf "%02d" $SUBVERSION`
|
||||
RC_ProjectSourceVersion=`echo $RC_ProjectSourceVersion | sed -e 's/\..*//'`
|
||||
LLVM_SUBMIT_VERSION=$RC_ProjectSourceVersion
|
||||
fi
|
||||
|
||||
if [ "x$LLVM_SUBMIT_SUBVERSION" = "x00" -o "x$LLVM_SUBMIT_SUBVERSION" = "x0" ]; then
|
||||
LLVM_VERSION="$LLVM_SUBMIT_VERSION"
|
||||
else
|
||||
LLVM_VERSION="$LLVM_SUBMIT_VERSION-$LLVM_SUBMIT_SUBVERSION"
|
||||
fi
|
||||
|
||||
# Figure out how many make processes to run.
|
||||
SYSCTL=`sysctl -n hw.activecpu`
|
||||
# sysctl -n hw.* does not work when invoked via B&I chroot /BuildRoot.
|
||||
# Builders can default to 2, since even if they are single processor,
|
||||
# nothing else is running on the machine.
|
||||
if [ -z "$SYSCTL" ]; then
|
||||
SYSCTL=2
|
||||
fi
|
||||
JOBS_FLAG="-j $SYSCTL"
|
||||
|
||||
make $JOBS_FLAG $OPTIMIZE_OPTS UNIVERSAL=1 UNIVERSAL_ARCH="$HOSTS" \
|
||||
UNIVERSAL_SDK_PATH=$SDKROOT \
|
||||
NO_RUNTIME_LIBS=1 \
|
||||
DISABLE_EDIS=1 \
|
||||
REQUIRES_RTTI=1 \
|
||||
DEBUG_SYMBOLS=1 \
|
||||
LLVM_SUBMIT_VERSION=$LLVM_SUBMIT_VERSION \
|
||||
LLVM_SUBMIT_SUBVERSION=$LLVM_SUBMIT_SUBVERSION \
|
||||
CXXFLAGS="-DLLVM_VERSION_INFO='\" Apple Build #$LLVM_VERSION\"'" \
|
||||
VERBOSE=1
|
||||
|
||||
if [ $? != 0 ] ; then
|
||||
make $COMMON_MAKEFLAGS
|
||||
if [ $? != 0 ] ; then
|
||||
echo "error: LLVM 'make' failed!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
################################################################################
|
||||
@ -185,14 +193,7 @@ rm -rf * || exit 1
|
||||
cd $DIR/obj-llvm || exit 1
|
||||
|
||||
# Install the tree into the destination directory.
|
||||
make $LOCAL_MAKEFLAGS $OPTIMIZE_OPTS UNIVERSAL=1 UNIVERSAL_ARCH="$HOSTS" \
|
||||
NO_RUNTIME_LIBS=1 \
|
||||
DISABLE_EDIS=1 \
|
||||
DEBUG_SYMBOLS=1 \
|
||||
LLVM_SUBMIT_VERSION=$LLVM_SUBMIT_VERSION \
|
||||
LLVM_SUBMIT_SUBVERSION=$LLVM_SUBMIT_SUBVERSION \
|
||||
OPTIMIZE_OPTION='-O3' VERBOSE=1 install
|
||||
|
||||
make $COMMON_MAKEFLAGS install
|
||||
if ! test $? == 0 ; then
|
||||
echo "error: LLVM 'make install' failed!"
|
||||
exit 1
|
||||
@ -263,9 +264,10 @@ cd $SYM_DIR || exit 1
|
||||
rm -rf * || exit 1
|
||||
|
||||
# Generate .dSYM files
|
||||
DSYMUTIL=`xcrun -find dsymutil`
|
||||
find $DEST_DIR -perm -0111 -type f \
|
||||
! \( -name '*.la' -o -name gccas -o -name gccld -o -name llvm-config -o -name '*.a' \) \
|
||||
-print | xargs -n 1 -P ${SYSCTL} dsymutil
|
||||
-print | xargs -n 1 -P ${SYSCTL} ${DSYMUTIL}
|
||||
|
||||
# Save .dSYM files and .a archives
|
||||
cd $DEST_DIR || exit 1
|
||||
|
Loading…
Reference in New Issue
Block a user