test-release.sh revision c248bbab04cb674bde5de8d6e2b2736a574fa0f8
1b91c71299a819e2d20786b629376f119085e8b28Bill Wendling#!/bin/bash 2b91c71299a819e2d20786b629376f119085e8b28Bill Wendling#===-- test-release.sh - Test the LLVM release candidates ------------------===# 3b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# 4b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# The LLVM Compiler Infrastructure 5b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# 6b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# This file is distributed under the University of Illinois Open Source 7b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# License. 8b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# 9b91c71299a819e2d20786b629376f119085e8b28Bill Wendling#===------------------------------------------------------------------------===# 10b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# 11b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Download, build, and test the release candidate for an LLVM release. 12b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# 13b91c71299a819e2d20786b629376f119085e8b28Bill Wendling#===------------------------------------------------------------------------===# 14b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 15b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingset -e 16b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 17b91c71299a819e2d20786b629376f119085e8b28Bill WendlingRelease="" 18b91c71299a819e2d20786b629376f119085e8b28Bill WendlingRelease_no_dot="" 19b91c71299a819e2d20786b629376f119085e8b28Bill WendlingRC="" 20b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_checkout="yes" 21b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_ada="no" 22c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendlingdo_objc="yes" 23b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_fortran="yes" 24b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_64bit="yes" 25b91c71299a819e2d20786b629376f119085e8b28Bill WendlingBuildDir="`pwd`" 26b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 27b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction usage() { 28b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "usage: `basename $0` -release X.Y -rc NUM [OPTIONS]" 29b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 30b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -release X.Y The release number to test." 31b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -rc NUM The pre-release candidate number." 32b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -j NUM Number of compile jobs to run. [default: 3]" 33b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -build-dir DIR Directory to perform testing in. [default: pwd]" 34b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-checkout Don't checkout the sources from SVN." 35b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-64bit Don't test the 64-bit version. [default: yes]" 36b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -ada Build Ada. [default: no]" 37c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling echo " -disable-objc Disable ObjC build. [default: build]" 38b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -disable-fortran Disable Fortran build. [default: build]" 39b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 40b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 41b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingwhile [ $# -gt 0 ]; do 42b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $1 in 43b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -release | --release ) 44b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 45b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release="$1" 46b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release_no_dot="`echo $1 | sed -e 's,\.,,'`" 47b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 48b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -rc | --rc | -RC | --RC ) 49b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 50b91c71299a819e2d20786b629376f119085e8b28Bill Wendling RC=$1 51b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 52b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -j* ) 53b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="`echo $1 | sed -e 's,-j\([0-9]*\),\1,g'`" 54b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ -z "$NumJobs" ]; then 55b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 56b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="$1" 57b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 58b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 59b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -build-dir | --build-dir | -builddir | --builddir ) 60b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 61b91c71299a819e2d20786b629376f119085e8b28Bill Wendling BuildDir="$1" 62b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 63b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-checkout | --no-checkout ) 64b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_checkout="no" 65b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 66b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-64bit | --no-64bit ) 67b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_64bit="no" 68b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 69b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -ada | --ada ) 70b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_ada="yes" 71b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 72c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling -disable-objc | --disable-objc ) 73c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling do_objc="no" 74c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling ;; 75b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -disable-fortran | --disable-fortran ) 76b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "WARNING: Do you *really* need to disable Fortran?" 77b91c71299a819e2d20786b629376f119085e8b28Bill Wendling sleep 5 78b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_fortran="no" 79b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 80b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -help | --help | -h | --h | -\? ) 81b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 82b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 0 83b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 84b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 85b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "unknown option: $1" 86b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 87b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 88b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 89b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 90b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 91b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 92b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 93b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Check required arguments. 94b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$Release" ]; then 95b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "No release number specified!" 96b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 97b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 98b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$RC" ]; then 99b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "No release candidate number specified!" 100b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 101b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 102b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 103d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands# Figure out how many make processes to run. 104d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 105d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.activecpu 2> /dev/null || true` 106d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 107d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 108d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.ncpu 2> /dev/null || true` 109d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 110d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 111d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`grep -c processor /proc/cpuinfo 2> /dev/null || true` 112d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 113b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$NumJobs" ]; then 114b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs=3 115b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 116b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 117b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Location of sources. 118b91c71299a819e2d20786b629376f119085e8b28Bill WendlingllvmCore_srcdir=$BuildDir/llvmCore-$Release-rc$RC.src 119b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingllvmgcc42_srcdir=$BuildDir/llvmgcc42-$Release-rc$RC.src 120b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 121b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Location of log files. 122b91c71299a819e2d20786b629376f119085e8b28Bill WendlingLogDirName="$Release-rc$RC.logs" 123b91c71299a819e2d20786b629376f119085e8b28Bill WendlingLogDir=$BuildDir/$LogDirName 124b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingmkdir -p $LogDir 125b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 126b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# SVN URLs for the sources. 127b91c71299a819e2d20786b629376f119085e8b28Bill WendlingBase_url="http://llvm.org/svn/llvm-project" 128b91c71299a819e2d20786b629376f119085e8b28Bill WendlingllvmCore_RC_url="$Base_url/llvm/tags/RELEASE_$Release_no_dot/rc$RC" 129b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingllvmgcc42_RC_url="$Base_url/llvm-gcc-4.2/tags/RELEASE_$Release_no_dot/rc$RC" 130b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingclang_RC_url="$Base_url/cfe/tags/RELEASE_$Release_no_dot/rc$RC" 131b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingtest_suite_RC_url="$Base_url/test-suite/tags/RELEASE_$Release_no_dot/rc$RC" 132b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 133b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Make sure that the URLs are valid. 134b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction check_valid_urls() { 135b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Validating SVN URLs" 136b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if ! svn ls $llvmCore_RC_url > /dev/null 2>&1 ; then 137b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "llvm $Release release candidate $RC doesn't exist!" 138b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 139b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 140b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if ! svn ls $llvmgcc42_RC_url > /dev/null 2>&1 ; then 141b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "llvm-gcc-4.2 $Release release candidate $RC doesn't exist!" 142b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 143b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 144b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if ! svn ls $clang_RC_url > /dev/null 2>&1 ; then 145b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "clang $Release release candidate $RC doesn't exist!" 146b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 147b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 148b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if ! svn ls $test_suite_RC_url > /dev/null 2>&1 ; then 149b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "test-suite $Release release candidate $RC doesn't exist!" 150b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 151b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 152b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 153b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 154b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Export sources to the the build directory. 155b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction export_sources() { 156b91c71299a819e2d20786b629376f119085e8b28Bill Wendling check_valid_urls 157b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 158b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Exporting llvm $Release-RC$RC sources" 159b91c71299a819e2d20786b629376f119085e8b28Bill Wendling svn export -q $llvmCore_RC_url $llvmCore_srcdir 160b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Exporting llvm-gcc-4.2 $Release-rc$RC sources" 161b91c71299a819e2d20786b629376f119085e8b28Bill Wendling svn export -q $llvmgcc42_RC_url $llvmgcc42_srcdir 162b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Exporting clang $Release-rc$RC sources" 163b91c71299a819e2d20786b629376f119085e8b28Bill Wendling svn export -q $clang_RC_url $llvmCore_srcdir/tools/clang 164b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Exporting llvm test suite $Release-rc$RC sources" 165b91c71299a819e2d20786b629376f119085e8b28Bill Wendling svn export -q $test_suite_RC_url $llvmCore_srcdir/projects/llvm-test 166b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 167b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 168b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction configure_llvmCore() { 169b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 170b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 171b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 172b91c71299a819e2d20786b629376f119085e8b28Bill Wendling InstallDir="$4" 173b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmgccDir="$5" 174b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 175b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $Flavor in 176b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release | Release-64 ) 177b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 178b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Assertions="yes" 179b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 180b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release-Asserts ) 181b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 182b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Assertions="no" 183b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 184b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Debug ) 185b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="no" 186b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Assertions="yes" 187b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 188b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 189b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Invalid flavor $Flavor!" 190b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 191b91c71299a819e2d20786b629376f119085e8b28Bill Wendling return 192b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 193b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 194b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 195b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 196b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Configuring llvm $Release-rc$RC $Flavor" 197cff1dbfa186b2d69237392f0064fe543e10ff119Duncan Sands echo "# $llvmCore_srcdir/configure --prefix=$InstallDir \ 198b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 199b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-assertions=$Assertions \ 200b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --with-llvmgccdir=$llvmgccDir" 201b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_srcdir/configure --prefix=$InstallDir \ 202b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 203b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-assertions=$Assertions \ 204b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --with-llvmgccdir=$llvmgccDir \ 205b91c71299a819e2d20786b629376f119085e8b28Bill Wendling > $LogDir/llvm.configure.$Release-rc$RC-Phase$Phase-$Flavor.log 2>&1 206b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd - 207b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 208b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 209b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction build_llvmCore() { 210b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 211b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 212b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 213b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="" 214b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 215b91c71299a819e2d20786b629376f119085e8b28Bill Wendling CompilerFlags="" 216b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ "$Phase" = "2" ]; then 217b91c71299a819e2d20786b629376f119085e8b28Bill Wendling CompilerFlags="CC=$llvmgccDir/bin/llvm-gcc CXX=$llvmgccDir/bin/llvm-g++" 218b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 219b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ "$Flavor" = "Release-64" ]; then 220b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="EXTRA_OPTIONS=-m64" 221b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 222b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 223b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 224b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Compiling llvm $Release-rc$RC $Flavor" 225b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# make -j $NumJobs VERBOSE=1 $ExtraOpts" 226b91c71299a819e2d20786b629376f119085e8b28Bill Wendling make -j $NumJobs VERBOSE=1 $ExtraOpts $CompilerFlags \ 227b91c71299a819e2d20786b629376f119085e8b28Bill Wendling > $LogDir/llvm.make.$Release-rc$RC-Phase$Phase-$Flavor.log 2>&1 228b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 229b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Installing llvm $Release-rc$RC $Flavor" 230b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# make install" 231b91c71299a819e2d20786b629376f119085e8b28Bill Wendling make install \ 232b91c71299a819e2d20786b629376f119085e8b28Bill Wendling > $LogDir/llvm.install.$Release-rc$RC-Phase$Phase-$Flavor.log 2>&1 233b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd - 234b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 235b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 236b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction test_llvmCore() { 237b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 238b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 239b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 240b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 241b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 242b91c71299a819e2d20786b629376f119085e8b28Bill Wendling make check \ 243b91c71299a819e2d20786b629376f119085e8b28Bill Wendling > $LogDir/llvm.check.$Release-rc$RC-Phase$Phase-$Flavor.log 2>&1 244b91c71299a819e2d20786b629376f119085e8b28Bill Wendling make -C tools/clang test \ 245b91c71299a819e2d20786b629376f119085e8b28Bill Wendling > $LogDir/clang.check.$Release-rc$RC-Phase$Phase-$Flavor.log 2>&1 246b91c71299a819e2d20786b629376f119085e8b28Bill Wendling make unittests \ 247b91c71299a819e2d20786b629376f119085e8b28Bill Wendling > $LogDir/llvm.unittests.$Release-rc$RC-Phase$Phase-$Flavor.log 2>&1 248b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd - 249b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 250b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 251b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction configure_llvm_gcc() { 252b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 253b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 254b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 255b91c71299a819e2d20786b629376f119085e8b28Bill Wendling InstallDir="$4" 256b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmObjDir="$5" 257b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 258c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling languages="c,c++" 259c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling if [ "$do_objc" = "yes" ]; then 260c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling languages="$languages,objc,obj-c++" 261c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling fi 262b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ "$do_fortran" = "yes" ]; then 263b91c71299a819e2d20786b629376f119085e8b28Bill Wendling languages="$languages,fortran" 264b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 265b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ "$do_ada" = "yes" ]; then 266b91c71299a819e2d20786b629376f119085e8b28Bill Wendling languages="$languages,ada" 267b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 268b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 269b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 270b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Configuring llvm-gcc $Release-rc$RC $Flavor" 271b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# $llvmgcc42_srcdir/configure --prefix=$InstallDir \ 272b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --program-prefix=llvm- --enable-llvm=$llvmObjDir \ 273b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-languages=$languages \ 274b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --with-gxx-include-dir=/usr/include/c++/4.2.1" 275b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmgcc42_srcdir/configure --prefix=$InstallDir \ 276b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --program-prefix=llvm- --enable-llvm=$llvmObjDir \ 277b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-languages=$languages \ 278b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --with-gxx-include-dir=/usr/include/c++/4.2.1 \ 279b91c71299a819e2d20786b629376f119085e8b28Bill Wendling > $LogDir/llvm-gcc.configure.$Release-rc$RC-Phase$Phase-$Flavor.log 2>&1 280b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd - 281b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 282b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 283b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction build_llvm_gcc() { 284b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 285b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 286b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 287b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmgccDir="$4" 288b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 289b91c71299a819e2d20786b629376f119085e8b28Bill Wendling CompilerFlags="" 290b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ "$Phase" = "2" ]; then 291b91c71299a819e2d20786b629376f119085e8b28Bill Wendling CompilerFlags="CC=$llvmgccDir/bin/llvm-gcc CXX=$llvmgccDir/bin/llvm-g++" 292b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 293b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 294b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 295b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Compiling llvm-gcc $Release-rc$RC $Flavor" 296b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# make -j $NumJobs bootstrap LLVM_VERSION_INFO=$Release" 297b91c71299a819e2d20786b629376f119085e8b28Bill Wendling make -j $NumJobs bootstrap LLVM_VERSION_INFO=$Release $CompilerFlags \ 298b91c71299a819e2d20786b629376f119085e8b28Bill Wendling > $LogDir/llvm-gcc.make.$Release-rc$RC-Phase$Phase-$Flavor.log 2>&1 299b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 300b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Installing llvm-gcc $Release-rc$RC $Flavor" 301b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# make install" 302b91c71299a819e2d20786b629376f119085e8b28Bill Wendling make install \ 303b91c71299a819e2d20786b629376f119085e8b28Bill Wendling > $LogDir/llvm-gcc.install.$Release-rc$RC-Phase$Phase-$Flavor.log 2>&1 304b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd - 305b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 306b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 307b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_checkout" = "yes" ]; then 308b91c71299a819e2d20786b629376f119085e8b28Bill Wendling export_sources 309b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 310b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 311b91c71299a819e2d20786b629376f119085e8b28Bill Wendling( 312b91c71299a819e2d20786b629376f119085e8b28Bill WendlingFlavors="Debug Release Release-Asserts" 313b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_64bit" = "yes" ]; then 314b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavors="$Flavors Release-64" 315b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 316b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 317b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfor Flavor in $Flavors ; do 318b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 319b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 320b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 321b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " Release: $Release-rc$RC" 322b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " Build: $Flavor" 323b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " System Info: " 324b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " `uname -a`" 325b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 326b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 327b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 328b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmCore_phase1_objdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-rc$RC.obj 329b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmCore_phase1_installdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-rc$RC.install 330b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 331b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmCore_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-rc$RC.obj 332b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmCore_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-rc$RC.install 333b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 334b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_objdir 335b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_installdir 336b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_objdir 337b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_installdir 338b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 339b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_objdir 340b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_installdir 341b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_objdir 342b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_installdir 343b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 344b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmgcc42_phase1_objdir=$BuildDir/Phase1/$Flavor/llvmgcc42-$Release-rc$RC.obj 345b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmgcc42_phase1_installdir=$BuildDir/Phase1/$Flavor/llvmgcc42-$Release-rc$RC.install 346b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 347b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmgcc42_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmgcc42-$Release-rc$RC.obj 348b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmgcc42_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmgcc42-$Release-rc$RC.install 349b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 350b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmgcc42_phase1_objdir 351b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmgcc42_phase1_installdir 352b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmgcc42_phase2_objdir 353b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmgcc42_phase2_installdir 354b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 355b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmgcc42_phase1_objdir 356b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmgcc42_phase1_installdir 357b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmgcc42_phase2_objdir 358b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmgcc42_phase2_installdir 359b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 360b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ############################################################################ 361b91c71299a819e2d20786b629376f119085e8b28Bill Wendling # Phase 1: Build llvmCore and llvmgcc42 362b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Phase 1: Building llvmCore" 363b91c71299a819e2d20786b629376f119085e8b28Bill Wendling configure_llvmCore 1 $Flavor \ 364b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase1_objdir $llvmCore_phase1_installdir \ 365b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmgcc42_phase1_installdir 366b91c71299a819e2d20786b629376f119085e8b28Bill Wendling build_llvmCore 1 $Flavor \ 367b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase1_objdir 368b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 369b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Phase 1: Building llvmgcc42" 370b91c71299a819e2d20786b629376f119085e8b28Bill Wendling configure_llvm_gcc 1 $Flavor \ 371b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmgcc42_phase1_objdir $llvmgcc42_phase1_installdir \ 372b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase1_objdir 373b91c71299a819e2d20786b629376f119085e8b28Bill Wendling build_llvm_gcc 1 $Flavor \ 374b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmgcc42_phase1_objdir $llvmgcc42_phase1_installdir 375b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 376b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ############################################################################ 377b91c71299a819e2d20786b629376f119085e8b28Bill Wendling # Phase 2: Build llvmCore with newly built llvmgcc42 from phase 1. 378b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Phase 2: Building llvmCore" 379b91c71299a819e2d20786b629376f119085e8b28Bill Wendling configure_llvmCore 2 $Flavor \ 380b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase2_objdir $llvmCore_phase2_installdir \ 381b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmgcc42_phase1_installdir 382b91c71299a819e2d20786b629376f119085e8b28Bill Wendling build_llvmCore 2 $Flavor \ 383b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase2_objdir 384b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 385b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Phase 2: Building llvmgcc42" 386b91c71299a819e2d20786b629376f119085e8b28Bill Wendling configure_llvm_gcc 2 $Flavor \ 387b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmgcc42_phase2_objdir $llvmgcc42_phase2_installdir \ 388b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase2_objdir 389b91c71299a819e2d20786b629376f119085e8b28Bill Wendling build_llvm_gcc 2 $Flavor \ 390b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmgcc42_phase2_objdir $llvmgcc42_phase1_installdir 391b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 392b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Testing - built with llvmgcc42" 393b91c71299a819e2d20786b629376f119085e8b28Bill Wendling test_llvmCore 2 $Flavor $llvmCore_phase2_objdir 394b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 395b91c71299a819e2d20786b629376f119085e8b28Bill Wendling) 2>&1 | tee $LogDir/testing.$Release-rc$RC.log 396b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 397b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Woo hoo! 398b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingecho "### Testing Finished ###" 399b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingecho "### Logs: $LogDir" 400b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingexit 0 401