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