[llvm-commits] [llvm] r142577 - /llvm/trunk/utils/release/test-release.sh

Duncan Sands baldrick at free.fr
Thu Oct 20 04:13:04 PDT 2011


Author: baldrick
Date: Thu Oct 20 06:13:04 2011
New Revision: 142577

URL: http://llvm.org/viewvc/llvm-project?rev=142577&view=rev
Log:
Add support for testing dragonegg.  This is disabled by default.
In fact this commit is not intended to change anything unless you
use one of the new command line flags.

Modified:
    llvm/trunk/utils/release/test-release.sh

Modified: llvm/trunk/utils/release/test-release.sh
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/release/test-release.sh?rev=142577&r1=142576&r2=142577&view=diff
==============================================================================
--- llvm/trunk/utils/release/test-release.sh (original)
+++ llvm/trunk/utils/release/test-release.sh Thu Oct 20 06:13:04 2011
@@ -28,8 +28,10 @@
 RC=""
 do_checkout="yes"
 do_ada="no"
-do_objc="yes"
+do_clang="yes"
+do_dragonegg="no"
 do_fortran="no"
+do_objc="yes"
 do_64bit="yes"
 do_debug="no"
 do_asserts="no"
@@ -45,6 +47,8 @@
     echo " -no-checkout      Don't checkout the sources from SVN."
     echo " -no-64bit         Don't test the 64-bit version. [default: yes]"
     echo " -enable-ada       Build Ada. [default: disable]"
+    echo " -disable-clang    Do not test clang. [default: enable]"
+    echo " -enable-dragonegg Test dragonegg. [default: disable]"
     echo " -enable-fortran   Enable Fortran build. [default: disable]"
     echo " -disable-objc     Disable ObjC build. [default: enable]"
     echo " -test-debug       Test the debug build. [default: no]"
@@ -82,6 +86,12 @@
         -enable-ada | --enable-ada )
             do_ada="yes"
             ;;
+        -disable-clang | --disable-clang )
+            do_clang="no"
+            ;;
+        -enable-dragonegg | --enable-dragonegg )
+            do_dragonegg="yes"
+            ;;
         -enable-fortran | --enable-fortran )
             do_fortran="yes"
             ;;
@@ -140,9 +150,29 @@
 LogDir=$BuildDir/logs
 mkdir -p $LogDir
 
-# Find a compilers.
+# Find compilers.
 c_compiler="$CC"
 cxx_compiler="$CXX"
+if [ "$do_dragonegg" = "yes" ]; then
+    gcc_compiler="$GCC"
+    if [ -z "$gcc_compiler" ]; then
+        gcc_compiler="`which gcc`"
+        if [ -z "$gcc_compiler" ]; then
+            echo "error: cannot find gcc to use with dragonegg"
+            exit 1
+        fi
+    fi
+
+    gxx_compiler="$GXX"
+    if [ -z "$gxx_compiler" ]; then
+        gxx_compiler="`which g++`"
+        if [ -z "$gxx_compiler" ]; then
+            echo "error: cannot find g++ to use with dragonegg"
+            exit 1
+        fi
+    fi
+fi
+
 
 # Make sure that the URLs are valid.
 function check_valid_urls() {
@@ -214,7 +244,7 @@
     echo "# $BuildDir/llvm.src/configure --prefix=$InstallDir \
         --enable-optimized=$Optimized \
         --enable-assertions=$Assertions"
-    env CC=$c_compiler CXX=$cxx_compiler \
+    env CC="$c_compiler" CXX="$cxx_compiler" \
     $BuildDir/llvm.src/configure --prefix=$InstallDir \
         --enable-optimized=$Optimized \
         --enable-assertions=$Assertions \
@@ -245,6 +275,28 @@
     cd $BuildDir
 }
 
+function build_dragonegg() {
+    Phase="$1"
+    Flavor="$2"
+    LLVMInstallDir="$3"
+    DragonEggObjDir="$4"
+    LLVM_CONFIG=$LLVMInstallDir/bin/llvm-config
+    TOP_DIR=$BuildDir/dragonegg.src
+
+    echo "# Targeted compiler: $gcc_compiler"
+
+    cd $DragonEggObjDir
+    echo "# Compiling phase $Phase dragonegg $Release-rc$RC $Flavor"
+    echo -n "# CXX=$cxx_compiler TOP_DIR=$TOP_DIR GCC=$gcc_compiler "
+    echo -n "LLVM_CONFIG=$LLVM_CONFIG ${MAKE} -f $TOP_DIR/Makefile "
+    echo "-j $NumJobs VERBOSE=1"
+    CXX="$cxx_compiler" TOP_DIR="$TOP_DIR" GCC="$gcc_compiler" \
+    LLVM_CONFIG="$LLVM_CONFIG" ${MAKE} -f $TOP_DIR/Makefile \
+        -j $NumJobs VERBOSE=1 \
+            2>&1 | tee $LogDir/dragonegg-Phase$Phase-$Flavor.log
+    cd $BuildDir
+}
+
 function test_llvmCore() {
     Phase="$1"
     Flavor="$2"
@@ -289,70 +341,155 @@
 
     llvmCore_phase1_objdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-rc$RC.obj
     llvmCore_phase1_installdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-rc$RC.install
+    dragonegg_phase1_objdir=$BuildDir/Phase1/$Flavor/DragonEgg-$Release-rc$RC.obj
 
     llvmCore_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-rc$RC.obj
     llvmCore_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-rc$RC.install
+    llvmCore_de_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-rc$RC.obj
+    llvmCore_de_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-rc$RC.install
+    dragonegg_phase2_objdir=$BuildDir/Phase2/$Flavor/DragonEgg-$Release-rc$RC.obj
 
     llvmCore_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-rc$RC.obj
     llvmCore_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-rc$RC.install
+    llvmCore_de_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-rc$RC.obj
+    llvmCore_de_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-rc$RC.install
+    dragonegg_phase3_objdir=$BuildDir/Phase3/$Flavor/DragonEgg-$Release-rc$RC.obj
 
     rm -rf $llvmCore_phase1_objdir
     rm -rf $llvmCore_phase1_installdir
+    rm -rf $dragonegg_phase1_objdir
+
     rm -rf $llvmCore_phase2_objdir
     rm -rf $llvmCore_phase2_installdir
+    rm -rf $llvmCore_de_phase2_objdir
+    rm -rf $llvmCore_de_phase2_installdir
+    rm -rf $dragonegg_phase2_objdir
+
     rm -rf $llvmCore_phase3_objdir
     rm -rf $llvmCore_phase3_installdir
+    rm -rf $llvmCore_de_phase3_objdir
+    rm -rf $llvmCore_de_phase3_installdir
+    rm -rf $dragonegg_phase3_objdir
 
     mkdir -p $llvmCore_phase1_objdir
     mkdir -p $llvmCore_phase1_installdir
+    mkdir -p $dragonegg_phase1_objdir
+
     mkdir -p $llvmCore_phase2_objdir
     mkdir -p $llvmCore_phase2_installdir
+    mkdir -p $llvmCore_de_phase2_objdir
+    mkdir -p $llvmCore_de_phase2_installdir
+    mkdir -p $dragonegg_phase2_objdir
+
     mkdir -p $llvmCore_phase3_objdir
     mkdir -p $llvmCore_phase3_installdir
+    mkdir -p $llvmCore_de_phase3_objdir
+    mkdir -p $llvmCore_de_phase3_installdir
+    mkdir -p $dragonegg_phase3_objdir
 
     ############################################################################
-    # Phase 1: Build llvmCore and llvmgcc42
+    # Phase 1: Build llvmCore and clang
     echo "# Phase 1: Building llvmCore"
     configure_llvmCore 1 $Flavor \
         $llvmCore_phase1_objdir $llvmCore_phase1_installdir
     build_llvmCore 1 $Flavor \
         $llvmCore_phase1_objdir
 
-    ############################################################################
-    # Phase 2: Build llvmCore with newly built clang from phase 1.
-    c_compiler=$llvmCore_phase1_installdir/bin/clang
-    cxx_compiler=$llvmCore_phase1_installdir/bin/clang++
-    echo "# Phase 2: Building llvmCore"
-    configure_llvmCore 2 $Flavor \
-        $llvmCore_phase2_objdir $llvmCore_phase2_installdir
-    build_llvmCore 2 $Flavor \
-        $llvmCore_phase2_objdir
-
-    ############################################################################
-    # Phase 3: Build llvmCore with newly built clang from phase 2.
-    c_compiler=$llvmCore_phase2_installdir/bin/clang
-    cxx_compiler=$llvmCore_phase2_installdir/bin/clang++
-    echo "# Phase 3: Building llvmCore"
-    configure_llvmCore 3 $Flavor \
-        $llvmCore_phase3_objdir $llvmCore_phase3_installdir
-    build_llvmCore 3 $Flavor \
-        $llvmCore_phase3_objdir
+    # Test clang
+    if [ "$do_clang" = "yes" ]; then
+        ############################################################################
+        # Phase 2: Build llvmCore with newly built clang from phase 1.
+        c_compiler=$llvmCore_phase1_installdir/bin/clang
+        cxx_compiler=$llvmCore_phase1_installdir/bin/clang++
+        echo "# Phase 2: Building llvmCore"
+        configure_llvmCore 2 $Flavor \
+            $llvmCore_phase2_objdir $llvmCore_phase2_installdir
+        build_llvmCore 2 $Flavor \
+            $llvmCore_phase2_objdir
+
+        ############################################################################
+        # Phase 3: Build llvmCore with newly built clang from phase 2.
+        c_compiler=$llvmCore_phase2_installdir/bin/clang
+        cxx_compiler=$llvmCore_phase2_installdir/bin/clang++
+        echo "# Phase 3: Building llvmCore"
+        configure_llvmCore 3 $Flavor \
+            $llvmCore_phase3_objdir $llvmCore_phase3_installdir
+        build_llvmCore 3 $Flavor \
+            $llvmCore_phase3_objdir
+
+        ############################################################################
+        # Testing: Test phase 3
+        echo "# Testing - built with clang"
+        test_llvmCore 3 $Flavor $llvmCore_phase3_objdir
+
+        ############################################################################
+        # Compare .o files between Phase2 and Phase3 and report which ones differ.
+        echo
+        echo "# Comparing Phase 2 and Phase 3 files"
+        for o in `find $llvmCore_phase2_objdir -name '*.o'` ; do
+            p3=`echo $o | sed -e 's,Phase2,Phase3,'`
+            if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then
+                echo "file `basename $o` differs between phase 2 and phase 3"
+            fi
+        done
+    fi
 
-    ############################################################################
-    # Testing: Test phase 3
-    echo "# Testing - built with clang"
-    test_llvmCore 3 $Flavor $llvmCore_phase3_objdir
+    # Test dragonegg
+    if [ "$do_dragonegg" = "yes" ]; then
+        # Build dragonegg using the targeted gcc.  This isn't necessary, but
+        # helps avoid using broken versions of gcc (which are legion), tests
+        # that the targeted gcc is basically sane and is consistent with the
+        # later phases in which the targeted gcc + dragonegg are used.
+        c_compiler="$gcc_compiler"
+        cxx_compiler="$gxx_compiler"
+        build_dragonegg 1 $Flavor $llvmCore_phase1_installdir $dragonegg_phase1_objdir
+
+        ############################################################################
+        # Phase 2: Build llvmCore with newly built dragonegg from phase 1.
+        c_compiler="$gcc_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so"
+        cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so"
+        echo "# Phase 2: Building llvmCore with dragonegg"
+        configure_llvmCore 2 $Flavor \
+            $llvmCore_de_phase2_objdir $llvmCore_de_phase2_installdir
+        build_llvmCore 2 $Flavor \
+            $llvmCore_de_phase2_objdir
+        build_dragonegg 2 $Flavor $llvmCore_de_phase2_installdir $dragonegg_phase2_objdir
+
+        ############################################################################
+        # Phase 3: Build llvmCore with newly built clang from phase 2.
+        c_compiler="$gcc_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so"
+        cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so"
+        echo "# Phase 3: Building llvmCore with dragonegg"
+        configure_llvmCore 3 $Flavor \
+            $llvmCore_de_phase3_objdir $llvmCore_de_phase3_installdir
+        build_llvmCore 3 $Flavor \
+            $llvmCore_de_phase3_objdir
+        build_dragonegg 3 $Flavor $llvmCore_de_phase3_installdir $dragonegg_phase3_objdir
+
+        ############################################################################
+        # Testing: Test phase 3
+        c_compiler="$gcc_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so"
+        cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so"
+        echo "# Testing - built with dragonegg"
+        test_llvmCore 3 $Flavor $llvmCore_de_phase3_objdir
+
+        ############################################################################
+        # Compare .o files between Phase2 and Phase3 and report which ones differ.
+        echo
+        echo "# Comparing Phase 2 and Phase 3 files"
+        for o in `find $llvmCore_de_phase2_objdir -name '*.o'` ; do
+            p3=`echo $o | sed -e 's,Phase2,Phase3,'`
+            if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then
+                echo "file `basename $o` differs between dragonegg phase 2 and phase 3"
+            fi
+        done
+    fi
 
-    ############################################################################
-    # Compare .o files between Phase2 and Phase3 and report which ones differ.
-    echo
-    echo "# Comparing Phase 2 and Phase 3 files"
-    for o in `find $llvmCore_phase2_objdir -name '*.o'` ; do
-        p3=`echo $o | sed -e 's,Phase2,Phase3,'`
-        if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then
-            echo "file `basename $o` differs between phase 2 and phase 3"
-        fi
-    done
+    # Otherwise just test the core.
+    if [ "$do_clang" != "yes" -a "$do_dragonegg" != "yes" ]; then
+        echo "# Testing - built with system compiler"
+        test_llvmCore 1 $Flavor $llvmCore_phase1_objdir
+    fi
 done
 ) 2>&1 | tee $LogDir/testing.$Release-rc$RC.log
 





More information about the llvm-commits mailing list