Author: void Date: Tue Nov 13 16:03:46 2007 New Revision: 44071 URL: http://llvm.org/viewvc/llvm-project?rev=44071&view=rev Log: Apple way build changes
Modified: llvm-gcc-4.2/trunk/build_gcc Modified: llvm-gcc-4.2/trunk/build_gcc URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/build_gcc?rev=44071&r1=44070&r2=44071&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/build_gcc (original) +++ llvm-gcc-4.2/trunk/build_gcc Tue Nov 13 16:03:46 2007 @@ -6,7 +6,9 @@ # -arch arguments are different than configure arguments. We need to # translate them. -TRANSLATE_ARCH="sed -e s/ppc/powerpc/ -e s/i386/i686/" +TRANSLATE_ARCH="sed -e s/ppc/powerpc/ -e s/i386/i686/ -e s/ppc64/powerpc64/" +TRANSLATE_TARGETS="sed -e s/ppc/powerpc/ -e s/i386/i686/ -e s/x86_64// \ + -e s/powerpc64// -e s/ppc64//" # Build GCC the "Apple way". # Parameters: @@ -20,7 +22,7 @@ # 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. -TARGETS=`echo $2 | $TRANSLATE_ARCH` +TARGETS=`echo $2 | $TRANSLATE_TARGETS` # The GNU makefile target ('bootstrap' by default). BOOTSTRAP=${BOOTSTRAP-bootstrap} @@ -33,7 +35,11 @@ # $RC_NONARCH_CFLAGS (and mysteriously prepends '-pipe' thereto). # We will allow this to override the default $CFLAGS and $CXXFLAGS. -CFLAGS="-g -O2 ${RC_NONARCH_CFLAGS/-pipe/}" +if [ "x$LLVM_DEBUG" == "x" ]; then + CFLAGS="-g -O2 ${RC_NONARCH_CFLAGS/-pipe/}" +else + CFLAGS="-g" +fi # This isn't a parameter; it is the architecture of the current machine. BUILD=`arch | $TRANSLATE_ARCH` @@ -71,6 +77,13 @@ # LLVM_BIN_DIR - This is the place where llvm-gcc/llvm-g++ symlinks get installed. LLVM_BIN_DIR=/Developer/usr/bin +# LLVM_ARCHS - This tells us which architectures we'd like the libraries to be +# build for. The default is 4-way. +if [ "x$LLVM_ARCHS" == "x" ]; then + LLVM_ARCHS="ppc i386 ppc64 x86_64" +fi + +# LLVM LOCAL end # The current working directory is where the build will happen. # It may already contain a partial result of an interrupted build, @@ -109,18 +122,26 @@ 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 + # Also remove libstdc++ since it is built from a separate project. rm -rf $SRC_DIR/libstdc++-v3 || exit 1 # Clean out old specs files rm -f /usr/lib/gcc/*/4.0.0/specs # These are the configure and build flags that are used. -CONFIGFLAGS="--disable-checking -enable-werror \ + +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=c,objc,c++,obj-c++ \ --program-prefix=llvm- \ - --program-suffix=-$MAJ_VERS \ + --program-transform-name=/^[cg][^.-]*$/s/$/-$MAJ_VERS/ \ --with-gxx-include-dir=/usr/include/c++/$LIBSTDCXX_VERSION \ --with-slibdir=/usr/lib \ --build=$BUILD-apple-darwin$DARWIN_VERS" @@ -129,6 +150,7 @@ if [ "$ENABLE_LLVM" == true ]; then CONFIGFLAGS="$CONFIGFLAGS --enable-llvm=/usr/local" fi +# LLVM LOCAL end # Figure out how many make processes to run. SYSCTL=`sysctl -n hw.activecpu` @@ -176,7 +198,7 @@ # Add the compiler we just built to the path, giving it appropriate names. # LLVM LOCAL Support for non /usr $DEST_ROOT D=$DIR/dst-$BUILD-$BUILD$DEST_ROOT/bin -ln -f $D/gcc-$MAJ_VERS $D/gcc || exit 1 +ln -f $D/llvm-gcc $D/gcc || exit 1 ln -f $D/gcc $D/$BUILD-apple-darwin$DARWIN_VERS-gcc || exit 1 # LLVM LOCAL Support for non /usr $DEST_ROOT PATH=$DIR/dst-$BUILD-$BUILD$DEST_ROOT/bin:$PATH @@ -206,8 +228,17 @@ done PATH=$DIR/bin:$PATH +# Determine which cross-compilers we should build. If our build architecture is +# one of our hosts, add all of the targets to the list. +if echo $HOSTS | grep $BUILD +then + CROSS_TARGETS=`echo $TARGETS $HOSTS | tr ' ' '\n' | sort -u` +else + CROSS_TARGETS="$HOSTS" +fi + # Build the cross-compilers, using the compiler we just built. -for t in $TARGETS ; do +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 @@ -220,16 +251,16 @@ make $MAKEFLAGS DESTDIR=$DIR/dst-$BUILD-$t install-gcc install-target \ CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" || exit 1 - # Add the compiler we just built to the path. -# LLVM LOCAL Support for non /usr $DEST_ROOT + # Add the compiler we just built to the path. + # LLVM LOCAL Support for non /usr $DEST_ROOT PATH=$DIR/dst-$BUILD-$t/$DEST_ROOT/bin:$PATH fi done # Rearrange various libraries, for no really good reason. -for t in $TARGETS ; do +for t in $CROSS_TARGETS ; do DT=$DIR/dst-$BUILD-$t -# LLVM LOCAL begin Support for non /usr $DEST_ROOT + # LLVM LOCAL begin Support for non /usr $DEST_ROOT 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 @@ -275,13 +306,14 @@ # Clean out DEST_DIR in case -noclean was passed to buildit. rm -rf * || exit 1 -# LLVM LOCAL Don't install HTML docs. +# LLVM LOCAL begin - Don't install HTML docs. if [ "$ENABLE_LLVM" == false ]; then -# HTML documentation -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 + # HTML documentation + 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 +# LLVM LOCAL end - Don't install docs. # Manual pages mkdir -p .$DEST_ROOT/share || exit 1 @@ -328,24 +360,24 @@ $DIR/dst-*-$TARG0$DEST_ROOT/bin/*gcov* || exit 1 # The fully-named drivers, which have the same target on every host. for t in $TARGETS ; do +# APPLE LOCAL LLVM build_gcc bug with non-/usr $DEST_ROOT 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-llvm-gcc-$MAJ_VERS || exit 1 + $DIR/dst-*-$t/$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-gcc || exit 1 +# APPLE LOCAL LLVM build_gcc bug with non-/usr $DEST_ROOT 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-llvm-g++-$MAJ_VERS || exit 1 + $DIR/dst-*-$t/$DEST_ROOT/bin/$t-apple-darwin$DARWIN_VERS-g++ || exit 1 done # lib 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 \ +# APPLE LOCAL LLVM build_gcc bug with non-/usr $DEST_ROOT + cp -Rp $DIR/dst-$BUILD-$t/$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS \ .$DEST_ROOT/lib/gcc || exit 1 done # And copy libgomp stuff by hand... for t in $TARGETS ; do - if [ ! -d .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ ]; then - mkdir -p .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ || exit 1 - fi for h in $HOSTS ; do if [ $h = $t ] ; then cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/libgomp.a \ @@ -353,17 +385,11 @@ 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 - if [ ! -d .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/ ]; then - mkdir -p .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/ || exit 1 - fi cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/ppc64/libgomp.a \ .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/ || exit 1 cp -p $DIR/dst-$h-$t$DEST_ROOT/lib/ppc64/libgomp.spec \ .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/ppc64/ || exit 1 elif [ $h = 'i686' ] ; then - if [ ! -d .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/x86_64/ ]; then - mkdir -p .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/x86_64/ || exit 1 - fi 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 \ @@ -377,7 +403,8 @@ cp -p /usr/lib/libstdc++.6.dylib \ .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/libstdc++.dylib \ || exit 1 - strip -x -c .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/libstdc++.dylib || exit 1 +# LLVM LOCAL +# strip -x -c .$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS/libstdc++.dylib || exit 1 done # include @@ -406,19 +433,19 @@ # Add extra man page symlinks for 'c++' and for arch-specific names. MDIR=$DEST_DIR$DEST_ROOT/share/man/man1 -ln -f $MDIR/llvm-g++-$MAJ_VERS.1 $MDIR/llvm-c++-$MAJ_VERS.1 || exit 1 +ln -f $MDIR/llvm-g++.1 $MDIR/llvm-c++.1 || exit 1 for t in $TARGETS ; do - ln -f $MDIR/llvm-gcc-$MAJ_VERS.1 $MDIR/$t-apple-darwin$DARWIN_VERS-llvm-gcc-$MAJ_VERS.1 \ + ln -f $MDIR/llvm-gcc.1 $MDIR/$t-apple-darwin$DARWIN_VERS-llvm-gcc.1 \ || exit 1 - ln -f $MDIR/llvm-g++-$MAJ_VERS.1 $MDIR/$t-apple-darwin$DARWIN_VERS-llvm-g++-$MAJ_VERS.1 \ + ln -f $MDIR/llvm-g++.1 $MDIR/$t-apple-darwin$DARWIN_VERS-llvm-g++.1 \ || exit 1 done # Build driver-driver using fully-named drivers for h in $HOSTS ; do - $DEST_DIR$DEST_ROOT/bin/$h-apple-darwin$DARWIN_VERS-llvm-gcc-$VERS \ + $h-apple-darwin$DARWIN_VERS-gcc \ $ORIG_SRC_DIR/driverdriver.c \ - -DPDN="\"-apple-darwin$DARWIN_VERS-llvm-gcc-$VERS\"" \ + -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/ \ @@ -426,9 +453,9 @@ -L$DIR/obj-$h-$BUILD/libiberty/ \ -o $DEST_DIR/$DEST_ROOT/bin/tmp-$h-llvm-gcc-$MAJ_VERS || exit 1 - $DEST_DIR$DEST_ROOT/bin/$h-apple-darwin$DARWIN_VERS-llvm-gcc-$VERS \ + $h-apple-darwin$DARWIN_VERS-gcc \ $ORIG_SRC_DIR/driverdriver.c \ - -DPDN="\"-apple-darwin$DARWIN_VERS-llvm-g++-$VERS\"" \ + -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/ \ @@ -472,7 +499,7 @@ ######################################## # Remove debugging information from DEST_DIR. -find $DEST_DIR -perm -0111 \! -name fixinc.sh \ +find $DEST_DIR -perm -0111 \! -name \*.dylib \! -name fixinc.sh \ \! -name mkheaders \! -name libstdc++.dylib -type f -print \ | xargs strip || exit 1 # APPLE LOCAL begin LLVM - Strip with -Sx instead of -SX _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits