test-release.sh revision 58fba239e472b322633447482013aeae599d56be
1495069e4df9785b1d6fb45971ca20479057b4558Bill Wendling#!/usr/bin/env 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 15783993e79502641d4f2ec82f3db78320b6837f4eBill Wendlingif [ `uname -s` = "FreeBSD" ]; then 16783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling MAKE=gmake 17783993e79502641d4f2ec82f3db78320b6837f4eBill Wendlingelse 18783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling MAKE=make 19783993e79502641d4f2ec82f3db78320b6837f4eBill Wendlingfi 20783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling 2141adc5fb8bd0d81f07d93754868bd9f27b6fd9afBill Wendlingprojects="llvm cfe dragonegg test-suite" 221416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 231416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling# Base SVN URL for the sources. 241416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill WendlingBase_url="http://llvm.org/svn/llvm-project" 251416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 26b91c71299a819e2d20786b629376f119085e8b28Bill WendlingRelease="" 27b91c71299a819e2d20786b629376f119085e8b28Bill WendlingRelease_no_dot="" 28b91c71299a819e2d20786b629376f119085e8b28Bill WendlingRC="" 29b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_checkout="yes" 30b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_ada="no" 31c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsdo_clang="yes" 32c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsdo_dragonegg="no" 331416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingdo_fortran="no" 34c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsdo_objc="yes" 35b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_64bit="yes" 361416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingdo_debug="no" 37a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingdo_asserts="no" 38b91c71299a819e2d20786b629376f119085e8b28Bill WendlingBuildDir="`pwd`" 39b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 40b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction usage() { 41b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "usage: `basename $0` -release X.Y -rc NUM [OPTIONS]" 42b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 43b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -release X.Y The release number to test." 44b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -rc NUM The pre-release candidate number." 45b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -j NUM Number of compile jobs to run. [default: 3]" 46b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -build-dir DIR Directory to perform testing in. [default: pwd]" 47b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-checkout Don't checkout the sources from SVN." 48b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-64bit Don't test the 64-bit version. [default: yes]" 49e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling echo " -enable-ada Build Ada. [default: disable]" 50c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo " -disable-clang Do not test clang. [default: enable]" 51c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo " -enable-dragonegg Test dragonegg. [default: disable]" 521416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo " -enable-fortran Enable Fortran build. [default: disable]" 53e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling echo " -disable-objc Disable ObjC build. [default: enable]" 541416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo " -test-debug Test the debug build. [default: no]" 55a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling echo " -test-asserts Test with asserts on. [default: no]" 56b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 57b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 58b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingwhile [ $# -gt 0 ]; do 59b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $1 in 60b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -release | --release ) 61b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 62b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release="$1" 63b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release_no_dot="`echo $1 | sed -e 's,\.,,'`" 64b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 65b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -rc | --rc | -RC | --RC ) 66b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 67b91c71299a819e2d20786b629376f119085e8b28Bill Wendling RC=$1 68b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 69b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -j* ) 70b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="`echo $1 | sed -e 's,-j\([0-9]*\),\1,g'`" 71b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ -z "$NumJobs" ]; then 72b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 73b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="$1" 74b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 75b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 76b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -build-dir | --build-dir | -builddir | --builddir ) 77b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 78b91c71299a819e2d20786b629376f119085e8b28Bill Wendling BuildDir="$1" 79b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 80b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-checkout | --no-checkout ) 81b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_checkout="no" 82b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 83b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-64bit | --no-64bit ) 84b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_64bit="no" 85b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 86e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling -enable-ada | --enable-ada ) 87b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_ada="yes" 88b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 89c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -disable-clang | --disable-clang ) 90c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands do_clang="no" 91c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ;; 92c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -enable-dragonegg | --enable-dragonegg ) 93c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands do_dragonegg="yes" 94c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ;; 951416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling -enable-fortran | --enable-fortran ) 961416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling do_fortran="yes" 971416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling ;; 98c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling -disable-objc | --disable-objc ) 99c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling do_objc="no" 100c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling ;; 1011416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling -test-debug | --test-debug ) 1021416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling do_debug="yes" 103b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 104a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling -test-asserts | --test-asserts ) 105a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling do_asserts="yes" 106a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling ;; 107b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -help | --help | -h | --h | -\? ) 108b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 109b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 0 110b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 111b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 112b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "unknown option: $1" 113b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 114b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 115b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 116b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 117b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 118b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 119b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 120b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Check required arguments. 121b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$Release" ]; then 1221416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: no release number specified" 123b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 124b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 125b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$RC" ]; then 1261416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: no release candidate number specified" 127b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 128b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 129b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 130d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands# Figure out how many make processes to run. 131d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 132d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.activecpu 2> /dev/null || true` 133d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 134d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 135d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.ncpu 2> /dev/null || true` 136d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 137d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 138d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`grep -c processor /proc/cpuinfo 2> /dev/null || true` 139d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 140b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$NumJobs" ]; then 141b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs=3 142b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 143b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 1441416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling# Go to the build directory (may be different from CWD) 1451416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill WendlingBuildDir=$BuildDir/rc$RC 1461416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingmkdir -p $BuildDir 1471416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingcd $BuildDir 148b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 149f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands# Location of log files. 1501416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill WendlingLogDir=$BuildDir/logs 151f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sandsmkdir -p $LogDir 152f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands 153c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands# Find compilers. 154c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsif [ "$do_dragonegg" = "yes" ]; then 155c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gcc_compiler="$GCC" 156c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gcc_compiler" ]; then 157c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gcc_compiler="`which gcc`" 158c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gcc_compiler" ]; then 159c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "error: cannot find gcc to use with dragonegg" 160c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands exit 1 161c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 162c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 163c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 164c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gxx_compiler="$GXX" 165c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gxx_compiler" ]; then 166c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gxx_compiler="`which g++`" 167c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gxx_compiler" ]; then 168c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "error: cannot find g++ to use with dragonegg" 169c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands exit 1 170c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 171c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 172c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsfi 173c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 174b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 175b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Make sure that the URLs are valid. 176b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction check_valid_urls() { 1771416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling for proj in $projects ; do 1781416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Validating $proj SVN URL" 1791416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 180540d5b7406a9aeb75492adfa58f0b5b4a2b9442aBill Wendling if ! svn ls $Base_url/$proj/tags/RELEASE_$Release_no_dot/rc$RC > /dev/null 2>&1 ; then 1811416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "llvm $Release release candidate $RC doesn't exist!" 1821416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling exit 1 1831416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 1841416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling done 185b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 186b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 187b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Export sources to the the build directory. 188b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction export_sources() { 189b91c71299a819e2d20786b629376f119085e8b28Bill Wendling check_valid_urls 190b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 1911416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling for proj in $projects ; do 1921416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Exporting $proj $Release-RC$RC sources" 1931416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling if ! svn export -q $Base_url/$proj/tags/RELEASE_$Release_no_dot/rc$RC $proj.src ; then 1941416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: failed to export $proj project" 1951416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling exit 1 1961416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 1971416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling done 1981416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 1991416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Creating symlinks" 2001416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir/llvm.src/tools 2011416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling if [ ! -h clang ]; then 2021416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling ln -s $BuildDir/cfe.src clang 2031416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2041416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir/llvm.src/projects 2051416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling if [ ! -h llvm-test ]; then 2061416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling ln -s $BuildDir/test-suite.src llvm-test 2071416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2081416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 209b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 210b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 211b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction configure_llvmCore() { 212b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 213b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 214b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 215b91c71299a819e2d20786b629376f119085e8b28Bill Wendling InstallDir="$4" 216b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 217b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $Flavor in 218b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release | Release-64 ) 219b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 2208a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Assertions="no" 221b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 2228a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Release+Asserts ) 223b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 2248a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Assertions="yes" 225b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 226b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Debug ) 227b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="no" 228b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Assertions="yes" 229b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 230b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 2311416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Invalid flavor '$Flavor'" 232b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 233b91c71299a819e2d20786b629376f119085e8b28Bill Wendling return 234b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 235b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 236b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 2371416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Using C compiler: $c_compiler" 2381416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Using C++ compiler: $cxx_compiler" 2391416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 240b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 241b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Configuring llvm $Release-rc$RC $Flavor" 2421416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# $BuildDir/llvm.src/configure --prefix=$InstallDir \ 243b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 2441416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling --enable-assertions=$Assertions" 245c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands env CC="$c_compiler" CXX="$cxx_compiler" \ 2461416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling $BuildDir/llvm.src/configure --prefix=$InstallDir \ 247b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 248b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-assertions=$Assertions \ 24958fba239e472b322633447482013aeae599d56beDuncan Sands --disable-timestamps \ 2501416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.configure-Phase$Phase-$Flavor.log 2511416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 252b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 253b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 254b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction build_llvmCore() { 255b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 256b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 257b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 258b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="" 259b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 260b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ "$Flavor" = "Release-64" ]; then 261b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="EXTRA_OPTIONS=-m64" 262b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 263b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 264b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 265b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Compiling llvm $Release-rc$RC $Flavor" 266783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling echo "# ${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts" 267783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts \ 2681416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.make-Phase$Phase-$Flavor.log 269b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 270b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Installing llvm $Release-rc$RC $Flavor" 271783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling echo "# ${MAKE} install" 272783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} install \ 2731416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.install-Phase$Phase-$Flavor.log 2741416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 275b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 276b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 277c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsfunction build_dragonegg() { 278c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands Phase="$1" 279c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands Flavor="$2" 280c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVMInstallDir="$3" 281c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands DragonEggObjDir="$4" 282c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVM_CONFIG=$LLVMInstallDir/bin/llvm-config 283c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands TOP_DIR=$BuildDir/dragonegg.src 284c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 285c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Targeted compiler: $gcc_compiler" 286c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 287c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cd $DragonEggObjDir 288c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Compiling phase $Phase dragonegg $Release-rc$RC $Flavor" 289c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo -n "# CXX=$cxx_compiler TOP_DIR=$TOP_DIR GCC=$gcc_compiler " 290c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo -n "LLVM_CONFIG=$LLVM_CONFIG ${MAKE} -f $TOP_DIR/Makefile " 291c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "-j $NumJobs VERBOSE=1" 292c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands CXX="$cxx_compiler" TOP_DIR="$TOP_DIR" GCC="$gcc_compiler" \ 293c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVM_CONFIG="$LLVM_CONFIG" ${MAKE} -f $TOP_DIR/Makefile \ 294c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -j $NumJobs VERBOSE=1 \ 295c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 2>&1 | tee $LogDir/dragonegg-Phase$Phase-$Flavor.log 296c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cd $BuildDir 297c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands} 298c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 299b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction test_llvmCore() { 300b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 301b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 302b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 303b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 304b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 305783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -k check-all \ 3061416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.check-Phase$Phase-$Flavor.log 307783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -k unittests \ 30841adc5fb8bd0d81f07d93754868bd9f27b6fd9afBill Wendling 2>&1 | tee $LogDir/llvm.unittests-Phase$Phase-$Flavor.log 3091416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 310b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 311b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 312630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendlingset -e # Exit if any command fails 313630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendling 314b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_checkout" = "yes" ]; then 315b91c71299a819e2d20786b629376f119085e8b28Bill Wendling export_sources 316b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 317b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 318f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands( 319a854f5d6f9394212319f4e00b6396900f6e62864Bill WendlingFlavors="Release" 3201416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingif [ "$do_debug" = "yes" ]; then 3211416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling Flavors="Debug $Flavors" 3221416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingfi 323a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingif [ "$do_asserts" = "yes" ]; then 324a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling Flavors="$Flavors Release+Asserts" 325a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingfi 326b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_64bit" = "yes" ]; then 327b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavors="$Flavors Release-64" 328b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 329b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 330b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfor Flavor in $Flavors ; do 331b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 332b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 333b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 334b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " Release: $Release-rc$RC" 335b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " Build: $Flavor" 336b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " System Info: " 337b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " `uname -a`" 338b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 339b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 340b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 341fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands c_compiler="$CC" 342fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands cxx_compiler="$CXX" 343fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands 344b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmCore_phase1_objdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-rc$RC.obj 345b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmCore_phase1_installdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-rc$RC.install 346c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands dragonegg_phase1_objdir=$BuildDir/Phase1/$Flavor/DragonEgg-$Release-rc$RC.obj 347b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 348b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmCore_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-rc$RC.obj 349b91c71299a819e2d20786b629376f119085e8b28Bill Wendling llvmCore_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-rc$RC.install 350c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands llvmCore_de_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-rc$RC.obj 351c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands llvmCore_de_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-rc$RC.install 352c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands dragonegg_phase2_objdir=$BuildDir/Phase2/$Flavor/DragonEgg-$Release-rc$RC.obj 353b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 354a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling llvmCore_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-rc$RC.obj 355a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling llvmCore_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-rc$RC.install 356c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands llvmCore_de_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-rc$RC.obj 357c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands llvmCore_de_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-rc$RC.install 358c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands dragonegg_phase3_objdir=$BuildDir/Phase3/$Flavor/DragonEgg-$Release-rc$RC.obj 359a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 360b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_objdir 361b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_installdir 362c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase1_objdir 363c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 364b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_objdir 365b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_installdir 366c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase2_objdir 367c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase2_installdir 368c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase2_objdir 369c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 370a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling rm -rf $llvmCore_phase3_objdir 371a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling rm -rf $llvmCore_phase3_installdir 372c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase3_objdir 373c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase3_installdir 374c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase3_objdir 375b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 376b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_objdir 377b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_installdir 378c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase1_objdir 379c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 380b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_objdir 381b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_installdir 382c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase2_objdir 383c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase2_installdir 384c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase2_objdir 385c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 386a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling mkdir -p $llvmCore_phase3_objdir 387a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling mkdir -p $llvmCore_phase3_installdir 388c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase3_objdir 389c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase3_installdir 390c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase3_objdir 391b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 392b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ############################################################################ 393c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 1: Build llvmCore and clang 394b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Phase 1: Building llvmCore" 395b91c71299a819e2d20786b629376f119085e8b28Bill Wendling configure_llvmCore 1 $Flavor \ 3961416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling $llvmCore_phase1_objdir $llvmCore_phase1_installdir 397b91c71299a819e2d20786b629376f119085e8b28Bill Wendling build_llvmCore 1 $Flavor \ 398b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase1_objdir 399b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 400c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Test clang 401c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_clang" = "yes" ]; then 402c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 403c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 2: Build llvmCore with newly built clang from phase 1. 404c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler=$llvmCore_phase1_installdir/bin/clang 405c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler=$llvmCore_phase1_installdir/bin/clang++ 406c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 2: Building llvmCore" 407c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 2 $Flavor \ 408c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase2_objdir $llvmCore_phase2_installdir 409c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 2 $Flavor \ 410c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase2_objdir 411c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 412c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 413c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 3: Build llvmCore with newly built clang from phase 2. 414c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler=$llvmCore_phase2_installdir/bin/clang 415c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler=$llvmCore_phase2_installdir/bin/clang++ 416c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 3: Building llvmCore" 417c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 3 $Flavor \ 418c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase3_objdir $llvmCore_phase3_installdir 419c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 3 $Flavor \ 420c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase3_objdir 421c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 422c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 423c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Testing: Test phase 3 424c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with clang" 425c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 3 $Flavor $llvmCore_phase3_objdir 426c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 427c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 428c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Compare .o files between Phase2 and Phase3 and report which ones differ. 429c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo 430c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Comparing Phase 2 and Phase 3 files" 431c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands for o in `find $llvmCore_phase2_objdir -name '*.o'` ; do 432c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands p3=`echo $o | sed -e 's,Phase2,Phase3,'` 433c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then 434c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "file `basename $o` differs between phase 2 and phase 3" 435c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 436c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands done 437c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 438a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 439c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Test dragonegg 440c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_dragonegg" = "yes" ]; then 441c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Build dragonegg using the targeted gcc. This isn't necessary, but 442c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # helps avoid using broken versions of gcc (which are legion), tests 443c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # that the targeted gcc is basically sane and is consistent with the 444c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # later phases in which the targeted gcc + dragonegg are used. 445c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler" 446c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler" 447c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 1 $Flavor $llvmCore_phase1_installdir $dragonegg_phase1_objdir 448c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 449c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 450c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 2: Build llvmCore with newly built dragonegg from phase 1. 451c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so" 452c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so" 453c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 2: Building llvmCore with dragonegg" 454c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 2 $Flavor \ 455c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase2_objdir $llvmCore_de_phase2_installdir 456c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 2 $Flavor \ 457c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase2_objdir 458c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 2 $Flavor $llvmCore_de_phase2_installdir $dragonegg_phase2_objdir 459c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 460c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 461c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 3: Build llvmCore with newly built clang from phase 2. 462c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so" 463c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so" 464c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 3: Building llvmCore with dragonegg" 465c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 3 $Flavor \ 466c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase3_objdir $llvmCore_de_phase3_installdir 467c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 3 $Flavor \ 468c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase3_objdir 469c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 3 $Flavor $llvmCore_de_phase3_installdir $dragonegg_phase3_objdir 470c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 471c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 472c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Testing: Test phase 3 473c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so" 474c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so" 475c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with dragonegg" 476c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 3 $Flavor $llvmCore_de_phase3_objdir 477c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 478c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 479c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Compare .o files between Phase2 and Phase3 and report which ones differ. 480c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo 481c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Comparing Phase 2 and Phase 3 files" 48219595dc4d0cb2495c37828530f04b7e47cf0837fDuncan Sands for o in `find $llvmCore_de_phase2_objdir -name '*.o'` \ 48319595dc4d0cb2495c37828530f04b7e47cf0837fDuncan Sands `find $dragonegg_phase2_objdir -name '*.o'` ; do 484c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands p3=`echo $o | sed -e 's,Phase2,Phase3,'` 485c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then 486c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "file `basename $o` differs between dragonegg phase 2 and phase 3" 487c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 488c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands done 489c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 490a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 491c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Otherwise just test the core. 492c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_clang" != "yes" -a "$do_dragonegg" != "yes" ]; then 493c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with system compiler" 494c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 1 $Flavor $llvmCore_phase1_objdir 495c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 496b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 497f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands) 2>&1 | tee $LogDir/testing.$Release-rc$RC.log 498b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 499630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendlingset +e 500630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendling 501b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Woo hoo! 502b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingecho "### Testing Finished ###" 503f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sandsecho "### Logs: $LogDir" 504b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingexit 0 505