diff options
Diffstat (limited to 'contrib/llvm/utils/buildit')
-rw-r--r-- | contrib/llvm/utils/buildit/GNUmakefile | 131 | ||||
-rwxr-xr-x | contrib/llvm/utils/buildit/build_llvm | 373 |
2 files changed, 0 insertions, 504 deletions
diff --git a/contrib/llvm/utils/buildit/GNUmakefile b/contrib/llvm/utils/buildit/GNUmakefile deleted file mode 100644 index 54577e2..0000000 --- a/contrib/llvm/utils/buildit/GNUmakefile +++ /dev/null @@ -1,131 +0,0 @@ -# LLVM LOCAL file build machinery -# LLVM Compiler Makefile for use by buildit. -# -# This makefile is intended only for use with B&I buildit. For "normal" builds -# use the conventional top-level makefile. -# -# You can specify TARGETS=ppc (or i386) on the buildit command line to limit the -# build to just one target. The default is for ppc and i386. The compiler -# targetted at this host gets built anyway, but not installed unless it's listed -# in TARGETS. - -# Include the set of standard Apple makefile definitions. -ifndef CoreOSMakefiles -CoreOSMakefiles = $(MAKEFILEPATH)/CoreOS -endif -include $(CoreOSMakefiles)/Standard/Standard.make - -# Enable Apple extensions to (gnu)make. -USE_APPLE_PB_SUPPORT = all - -RC_ARCHS := ppc i386 -HOSTS = $(RC_ARCHS) -targets = echo $(RC_ARCHS) -TARGETS := $(shell $(targets)) - -SRCROOT = . - -SRC = $(shell cd $(SRCROOT) && pwd | sed s,/private,,) -OBJROOT = $(SRC)/obj -SYMROOT = $(OBJROOT)/../sym -DSTROOT = $(OBJROOT)/../dst - -####################################################################### - -PREFIX = /Developer/usr/local - -# Unless assertions are forced on in the GMAKE command line, disable them. -ifndef ENABLE_ASSERTIONS -ENABLE_ASSERTIONS := no -endif - -# Default is optimized build. -ifeq ($(LLVM_DEBUG),1) -LLVM_OPTIMIZED := no -else -LLVM_OPTIMIZED := yes -endif - -# Default to not install libLTO.dylib. -INSTALL_LIBLTO := no - -# Default to do a native build, not a cross-build for an ARM host or simulator. -ARM_HOSTED_BUILD := no -IOS_SIM_BUILD := no - -ifndef RC_ProjectSourceVersion -RC_ProjectSourceVersion = 9999 -endif - -ifndef RC_ProjectSourceSubversion -RC_ProjectSourceSubversion = 0 -endif - -# NOTE : Always put version numbers at the end because they are optional. -install: $(OBJROOT) $(SYMROOT) $(DSTROOT) - cd $(OBJROOT) && \ - $(SRC)/utils/buildit/build_llvm "$(RC_ARCHS)" "$(TARGETS)" \ - $(SRC) $(PREFIX) $(DSTROOT) $(SYMROOT) \ - $(ENABLE_ASSERTIONS) $(LLVM_OPTIMIZED) $(INSTALL_LIBLTO) \ - $(ARM_HOSTED_BUILD) $(IOS_SIM_BUILD) \ - $(RC_ProjectSourceVersion) $(RC_ProjectSourceSubversion) - -EmbeddedHosted: - $(MAKE) ARM_HOSTED_BUILD=yes PREFIX=/usr/local install - -# When building for the iOS simulator, MACOSX_DEPLOYMENT_TARGET is not set -# by default, but it needs to be set when building tools that run on the host -# (e.g., tblgen), so set it here. -EmbeddedSim: - export MACOSX_DEPLOYMENT_TARGET=`sw_vers -productVersion`; \ - $(MAKE) IOS_SIM_BUILD=yes PREFIX=$(SDKROOT)/usr/local install - -# installhdrs does nothing, because the headers aren't useful until -# the compiler is installed. -installhdrs: - -# We build and install in one shell script. -build: - -installsrc: - @echo - @echo ++++++++++++++++++++++ - @echo + Installing sources + - @echo ++++++++++++++++++++++ - @echo - if [ $(SRCROOT) != . ]; then \ - $(PAX) -rw . $(SRCROOT); \ - fi - find -d "$(SRCROOT)" \( -type d -a -name .svn -o \ - -type f -a -name .DS_Store -o \ - -name \*~ -o -name .\#\* \) \ - -exec rm -rf {} \; - rm -rf "$(SRCROOT)/test" - -####################################################################### - -clean: - @echo - @echo ++++++++++++ - @echo + Cleaning + - @echo ++++++++++++ - @echo - @if [ -d $(OBJROOT) -a "$(OBJROOT)" != / ]; then \ - echo '*** DELETING ' $(OBJROOT); \ - rm -rf $(OBJROOT); \ - fi - @if [ -d $(SYMROOT) -a "$(SYMROOT)" != / ]; then \ - echo '*** DELETING ' $(SYMROOT); \ - rm -rf $(SYMROOT); \ - fi - @if [ -d $(DSTROOT) -a "$(DSTROOT)" != / ]; then \ - echo '*** DELETING ' $(DSTROOT); \ - rm -rf $(DSTROOT); \ - fi - -####################################################################### - -$(OBJROOT) $(SYMROOT) $(DSTROOT): - mkdir -p $@ - -.PHONY: install installsrc clean EmbeddedHosted EmbeddedSim diff --git a/contrib/llvm/utils/buildit/build_llvm b/contrib/llvm/utils/buildit/build_llvm deleted file mode 100755 index 39ec1cc..0000000 --- a/contrib/llvm/utils/buildit/build_llvm +++ /dev/null @@ -1,373 +0,0 @@ -#!/bin/sh -# LLVM LOCAL file B&I - -set -x - -# Build LLVM the "Apple way". -# Parameters: - -# The first parameter is a space-separated list of the architectures the -# compilers will run on. For instance, "ppc i386". If the current machine -# isn't in the list, it will (effectively) be added. -HOSTS="$1" - -# The second parameter is a space-separated list of the architectures the -# compilers will generate code for. If the current machine isn't in the list, a -# compiler for it will get built anyway, but won't be installed. -# FIXME: The list of targets is currently hard-coded and TARGETS is not used. -TARGETS="$2" - -# The third parameter is the path to the compiler sources. There should be a -# shell script named 'configure' in this directory. This script makes a copy... -ORIG_SRC_DIR="$3" - -# The fourth parameter is the location where the LLVM will be installed. You can -# move it once it's built, so this mostly controls the layout of $DEST_DIR. -DEST_ROOT="$4" - -# The fifth parameter is the place where the compiler will be copied once it's -# built. -DEST_DIR="$5" - -# The sixth parameter is a directory in which to place information (like -# unstripped executables and generated source files) helpful in debugging the -# resulting compiler. -SYM_DIR="$6" - -# The seventh parameter is a yes/no that indicates whether assertions should be -# enabled in the LLVM libs/tools. -LLVM_ASSERTIONS="$7" - -# The eighth parameter is a yes/no that indicates whether this is an optimized -# build. -LLVM_OPTIMIZED="$8" - -# The ninth parameter is a yes/no that indicates whether libLTO.dylib -# should be installed. -INSTALL_LIBLTO="$9" - -# A yes/no parameter that controls whether to cross-build for an ARM host. -ARM_HOSTED_BUILD="${10}" - -# A yes/no parameter that controls whether to cross-build for the iOS simulator -IOS_SIM_BUILD="${11}" - -# The version number of the submission, e.g. 1007. -LLVM_SUBMIT_VERSION="${12}" - -# The subversion number of the submission, e.g. 03. -LLVM_SUBMIT_SUBVERSION="${13}" - -# The current working directory is where the build will happen. It may already -# contain a partial result of an interrupted build, in which case this script -# will continue where it left off. -DIR=`pwd` - -DARWIN_VERS=`uname -r | sed 's/\..*//'` -echo DARWIN_VERS = $DARWIN_VERS - -################################################################################ -# Run the build. - -# Create the source tree we'll actually use to build, deleting -# tcl since it doesn't actually build properly in a cross environment -# and we don't really need it. -SRC_DIR=$DIR/src -rm -rf $SRC_DIR || exit 1 -mkdir $SRC_DIR || exit 1 -ln -s $ORIG_SRC_DIR/* $SRC_DIR/ || exit 1 -# We can't use the top-level Makefile as-is. Remove the soft link: -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 - -# Build the LLVM tree universal. -mkdir -p $DIR/obj-llvm || exit 1 -cd $DIR/obj-llvm || exit 1 - -if [ "$ARM_HOSTED_BUILD" = yes ]; 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} - T=`xcrun -sdk $SDKROOT -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 -elif [ $DARWIN_VERS -gt 9 ]; then - # 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="/Developer/usr/bin:$PATH" - 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 [ "$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" -else - configure_opts="--enable-targets=arm,x86,powerpc,cbe" -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 \ - || 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 - -GCC_VER=`cc --version 2>/dev/null | sed 1q` - -if echo "$GCC_VER" | grep GCC > /dev/null; then - GCC_VER=`echo $GCC_VER | sed -e 's/.*(GCC) \([0-9.][0-9.]*\).*/\1/'` - MAJ_VER=`echo $GCC_VER | sed 's/\..*//'` - MIN_VER=`echo $GCC_VER | sed 's/[^.]*\.\([0-9]*\).*/\1/'` -fi - -JOBS_FLAG="" - -# Note: If compiling with GCC 4.0, don't pass the -jN flag. Building universal -# already has parallelism and we don't want to make the builders hit swap by -# firing off too many gccs at the same time. -if [ "x$MAJ_VER" != "x4" -o "x$MIN_VER" != "x0" ]; then - # Figure out how many make processes to run. - SYSCTL=`sysctl -n hw.activecpu` - - # hw.activecpu only available in 10.2.6 and later - if [ -z "$SYSCTL" ]; then - SYSCTL=`sysctl -n hw.ncpu` - fi - - # 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" -fi - -make $JOBS_FLAG $OPTIMIZE_OPTS UNIVERSAL=1 UNIVERSAL_ARCH="$HOSTS" \ - UNIVERSAL_SDK_PATH=$SDKROOT \ - NO_RUNTIME_LIBS=1 \ - DISABLE_EDIS=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 - echo "error: LLVM 'make' failed!" - exit 1 -fi - -################################################################################ -# Construct the actual destination root, by copying stuff from $DIR/dst-* to -# $DEST_DIR, with occasional 'lipo' commands. - -cd $DEST_DIR || exit 1 - -# Clean out DEST_DIR in case -noclean was passed to buildit. -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 - -if ! test $? == 0 ; then - echo "error: LLVM 'make install' failed!" - exit 1 -fi - -# Install Version.h -LLVM_MINOR_VERSION=`echo $LLVM_SUBMIT_SUBVERSION | sed -e 's,0*\([1-9][0-9]*\),\1,'` -if [ "x$LLVM_MINOR_VERSION" = "x" ]; then - LLVM_MINOR_VERSION=0 -fi -RC_ProjectSourceSubversion=`printf "%d" $LLVM_MINOR_VERSION` -echo "#define LLVM_VERSION ${RC_ProjectSourceVersion}" > $DEST_DIR$DEST_ROOT/include/llvm/Version.h -echo "#define LLVM_MINOR_VERSION ${RC_ProjectSourceSubversion}" >> $DEST_DIR$DEST_ROOT/include/llvm/Version.h - -if [ "x$LLVM_DEBUG" != "x1" ]; then - # Strip local symbols from llvm libraries. - # - # Use '-l' to strip i386 modules. N.B. that flag doesn't work with kext or - # PPC objects! - strip -Sl $DEST_DIR$DEST_ROOT/lib/*.[oa] - for f in `ls $DEST_DIR$DEST_ROOT/lib/*.so`; do - strip -Sxl $f - done -fi - -# Copy over the tblgen utility. -cp `find $DIR -name tblgen` $DEST_DIR$DEST_ROOT/bin - -# Remove .dir files -cd $DEST_DIR$DEST_ROOT -rm -f bin/.dir etc/llvm/.dir lib/.dir - -# Remove PPC64 fat slices. -cd $DEST_DIR$DEST_ROOT/bin -if [ $MACOSX_DEPLOYMENT_TARGET = "10.4" ]; then - find . -perm 755 -type f \! \( -name '*gccas' -o -name '*gccld' -o -name llvm-config \) \ - -exec lipo -extract ppc -extract i386 {} -output {} \; -elif [ $MACOSX_DEPLOYMENT_TARGET = "10.5" ]; then - find . -perm 755 -type f \! \( -name '*gccas' -o -name '*gccld' -o -name llvm-config \) \ - -exec lipo -extract ppc7400 -extract i386 {} -output {} \; -else - find . -perm 755 -type f \! \( -name '*gccas' -o -name '*gccld' -o -name llvm-config \) \ - -exec lipo -extract ppc7400 -extract i386 -extract x86_64 {} -output {} \; -fi - -# The Hello dylib is an example of how to build a pass. No need to install it. -rm $DEST_DIR$DEST_ROOT/lib/LLVMHello.dylib - -# Compress manpages -MDIR=$DEST_DIR$DEST_ROOT/share/man/man1 -gzip -f $MDIR/* - -################################################################################ -# Create SYM_DIR with information required for debugging. - -# Figure out how many make processes to run. -SYSCTL=`sysctl -n hw.activecpu` - -# hw.activecpu only available in 10.2.6 and later -if [ -z "$SYSCTL" ]; then - SYSCTL=`sysctl -n hw.ncpu` -fi - -# 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 - -cd $SYM_DIR || exit 1 - -# Clean out SYM_DIR in case -noclean was passed to buildit. -rm -rf * || exit 1 - -# Generate .dSYM files -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 - -# Save .dSYM files and .a archives -cd $DEST_DIR || exit 1 -find . \( -path \*.dSYM/\* -or -name \*.a \) -print \ - | cpio -pdml $SYM_DIR || exit 1 - -# Save source files. -mkdir $SYM_DIR/src || exit 1 -cd $DIR || exit 1 -find obj-* -name \*.\[chy\] -o -name \*.cpp -print \ - | cpio -pdml $SYM_DIR/src || exit 1 - -################################################################################ -# Install and strip libLTO.dylib - -cd $DEST_DIR$DEST_ROOT -if [ "$INSTALL_LIBLTO" = "yes" ]; then - DT_HOME="$DEST_DIR/Developer/usr" - mkdir -p $DT_HOME/lib - mv lib/libLTO.dylib $DT_HOME/lib/libLTO.dylib - - # Save a copy of the unstripped dylib - mkdir -p $SYM_DIR/Developer/usr/lib - cp $DT_HOME/lib/libLTO.dylib $SYM_DIR/Developer/usr/lib/libLTO.dylib - - # Use '-l' to strip i386 modules. N.B. that flag doesn't work with kext or - # PPC objects! - strip -arch all -Sl $DT_HOME/lib/libLTO.dylib - - if [ "x$DISABLE_USR_LINKS" == "x" ]; then - # Add a symlink in /usr/lib for B&I. - mkdir -p $DEST_DIR/usr/lib/ - (cd $DEST_DIR/usr/lib && \ - ln -s ../../Developer/usr/lib/libLTO.dylib ./libLTO.dylib) - fi -else - rm -f lib/libLTO.dylib -fi -rm -f lib/libLTO.a lib/libLTO.la - -################################################################################ -# Remove debugging information from DEST_DIR. - -cd $DIR || exit 1 - -find $DEST_DIR -name \*.a -print | xargs ranlib || exit 1 -find $DEST_DIR -name \*.dSYM -print | xargs rm -r || exit 1 - -# Strip debugging information from files -# -# Use '-l' to strip i386 modules. N.B. that flag doesn't work with kext or -# PPC objects! -find $DEST_DIR -perm -0111 -type f \ - ! \( -name '*.la' -o -name gccas -o -name gccld -o -name llvm-config \) \ - -print | xargs -n 1 -P ${SYSCTL} strip -arch all -Sl - -chgrp -h -R wheel $DEST_DIR -chgrp -R wheel $DEST_DIR - -################################################################################ -# Remove the docs directory - -rm -rf $DEST_DIR$DEST_ROOT/docs - -################################################################################ -# w00t! Done! - -exit 0 |