summaryrefslogtreecommitdiff
path: root/utils/release
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2011-10-20 11:13:04 +0000
committerDuncan Sands <baldrick@free.fr>2011-10-20 11:13:04 +0000
commitc1aef0884c1749a59b16ed3b5ee8b6bf67eabb8c (patch)
tree91ae2e5affaba0112f1839627b136a37cf32707a /utils/release
parent84dc1f0aaff02b7f60c655af6bd5ea0be5e72d9e (diff)
downloadllvm-c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8c.tar.gz
llvm-c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8c.tar.bz2
llvm-c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8c.tar.xz
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142577 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/release')
-rwxr-xr-xutils/release/test-release.sh211
1 files changed, 174 insertions, 37 deletions
diff --git a/utils/release/test-release.sh b/utils/release/test-release.sh
index 4255324194..7d56f3872c 100755
--- a/utils/release/test-release.sh
+++ b/utils/release/test-release.sh
@@ -28,8 +28,10 @@ Release_no_dot=""
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 @@ function usage() {
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 @@ while [ $# -gt 0 ]; do
-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 @@ cd $BuildDir
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 @@ function configure_llvmCore() {
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 @@ function build_llvmCore() {
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 @@ for Flavor in $Flavors ; do
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