test-release.sh revision 64acc57b23530aee37d224f48293cb764c4290a8
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." 4564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo " -final The final release candidate." 46b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -j NUM Number of compile jobs to run. [default: 3]" 47b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -build-dir DIR Directory to perform testing in. [default: pwd]" 48b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-checkout Don't checkout the sources from SVN." 49b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-64bit Don't test the 64-bit version. [default: yes]" 50e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling echo " -enable-ada Build Ada. [default: disable]" 51c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo " -disable-clang Do not test clang. [default: enable]" 52c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo " -enable-dragonegg Test dragonegg. [default: disable]" 531416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo " -enable-fortran Enable Fortran build. [default: disable]" 54e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling echo " -disable-objc Disable ObjC build. [default: enable]" 551416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo " -test-debug Test the debug build. [default: no]" 56a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling echo " -test-asserts Test with asserts on. [default: no]" 57b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 58b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 59b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingwhile [ $# -gt 0 ]; do 60b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $1 in 61b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -release | --release ) 62b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 63b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release="$1" 64b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release_no_dot="`echo $1 | sed -e 's,\.,,'`" 65b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 66b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -rc | --rc | -RC | --RC ) 67b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 6864acc57b23530aee37d224f48293cb764c4290a8Bill Wendling RC="rc$1" 6964acc57b23530aee37d224f48293cb764c4290a8Bill Wendling ;; 7064acc57b23530aee37d224f48293cb764c4290a8Bill Wendling -final | --final ) 7164acc57b23530aee37d224f48293cb764c4290a8Bill Wendling RC=final 72b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 73b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -j* ) 74b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="`echo $1 | sed -e 's,-j\([0-9]*\),\1,g'`" 75b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ -z "$NumJobs" ]; then 76b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 77b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="$1" 78b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 79b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 80b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -build-dir | --build-dir | -builddir | --builddir ) 81b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 82b91c71299a819e2d20786b629376f119085e8b28Bill Wendling BuildDir="$1" 83b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 84b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-checkout | --no-checkout ) 85b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_checkout="no" 86b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 87b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-64bit | --no-64bit ) 88b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_64bit="no" 89b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 90e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling -enable-ada | --enable-ada ) 91b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_ada="yes" 92b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 93c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -disable-clang | --disable-clang ) 94c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands do_clang="no" 95c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ;; 96c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -enable-dragonegg | --enable-dragonegg ) 97c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands do_dragonegg="yes" 98c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ;; 991416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling -enable-fortran | --enable-fortran ) 1001416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling do_fortran="yes" 1011416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling ;; 102c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling -disable-objc | --disable-objc ) 103c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling do_objc="no" 104c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling ;; 1051416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling -test-debug | --test-debug ) 1061416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling do_debug="yes" 107b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 108a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling -test-asserts | --test-asserts ) 109a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling do_asserts="yes" 110a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling ;; 111b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -help | --help | -h | --h | -\? ) 112b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 113b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 0 114b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 115b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 116b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "unknown option: $1" 117b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 118b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 119b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 120b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 121b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 122b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 123b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 124b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Check required arguments. 125b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$Release" ]; then 1261416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: no release number specified" 127b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 128b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 129b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$RC" ]; then 1301416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: no release candidate number specified" 131b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 132b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 133b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 134d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands# Figure out how many make processes to run. 135d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 136d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.activecpu 2> /dev/null || true` 137d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 138d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 139d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.ncpu 2> /dev/null || true` 140d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 141d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 142d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`grep -c processor /proc/cpuinfo 2> /dev/null || true` 143d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 144b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$NumJobs" ]; then 145b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs=3 146b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 147b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 1481416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling# Go to the build directory (may be different from CWD) 14964acc57b23530aee37d224f48293cb764c4290a8Bill WendlingBuildDir=$BuildDir/$RC 1501416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingmkdir -p $BuildDir 1511416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingcd $BuildDir 152b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 153f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands# Location of log files. 1541416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill WendlingLogDir=$BuildDir/logs 155f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sandsmkdir -p $LogDir 156f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands 157c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands# Find compilers. 158c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsif [ "$do_dragonegg" = "yes" ]; then 159c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gcc_compiler="$GCC" 160c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gcc_compiler" ]; then 161c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gcc_compiler="`which gcc`" 162c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gcc_compiler" ]; then 163c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "error: cannot find gcc to use with dragonegg" 164c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands exit 1 165c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 166c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 167c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 168c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gxx_compiler="$GXX" 169c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gxx_compiler" ]; then 170c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gxx_compiler="`which g++`" 171c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gxx_compiler" ]; then 172c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "error: cannot find g++ to use with dragonegg" 173c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands exit 1 174c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 175c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 176c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsfi 177c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 178b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 179b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Make sure that the URLs are valid. 180b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction check_valid_urls() { 1811416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling for proj in $projects ; do 1821416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Validating $proj SVN URL" 1831416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 18464acc57b23530aee37d224f48293cb764c4290a8Bill Wendling if ! svn ls $Base_url/$proj/tags/RELEASE_$Release_no_dot/$RC > /dev/null 2>&1 ; then 1851416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "llvm $Release release candidate $RC doesn't exist!" 1861416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling exit 1 1871416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 1881416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling done 189b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 190b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 191b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Export sources to the the build directory. 192b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction export_sources() { 193b91c71299a819e2d20786b629376f119085e8b28Bill Wendling check_valid_urls 194b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 1951416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling for proj in $projects ; do 1961416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Exporting $proj $Release-RC$RC sources" 19764acc57b23530aee37d224f48293cb764c4290a8Bill Wendling if ! svn export -q $Base_url/$proj/tags/RELEASE_$Release_no_dot/$RC $proj.src ; then 1981416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: failed to export $proj project" 1991416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling exit 1 2001416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2011416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling done 2021416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2031416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Creating symlinks" 2041416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir/llvm.src/tools 2051416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling if [ ! -h clang ]; then 206ac6d7e49117fc12b81eb9dcddda08debedcf2360Bill Wendling ln -s ../../cfe.src clang 2071416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2081416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir/llvm.src/projects 2091416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling if [ ! -h llvm-test ]; then 210ac6d7e49117fc12b81eb9dcddda08debedcf2360Bill Wendling ln -s ../../test-suite.src llvm-test 2111416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2121416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 213b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 214b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 215b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction configure_llvmCore() { 216b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 217b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 218b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 219b91c71299a819e2d20786b629376f119085e8b28Bill Wendling InstallDir="$4" 220b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 221b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $Flavor in 222b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release | Release-64 ) 223b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 2248a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Assertions="no" 225b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 2268a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Release+Asserts ) 227b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 2288a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Assertions="yes" 229b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 230b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Debug ) 231b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="no" 232b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Assertions="yes" 233b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 234b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 2351416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Invalid flavor '$Flavor'" 236b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 237b91c71299a819e2d20786b629376f119085e8b28Bill Wendling return 238b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 239b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 240b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 2411416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Using C compiler: $c_compiler" 2421416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Using C++ compiler: $cxx_compiler" 2431416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 244b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 24564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Configuring llvm $Release-$RC $Flavor" 2461416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# $BuildDir/llvm.src/configure --prefix=$InstallDir \ 247b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 2481416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling --enable-assertions=$Assertions" 249c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands env CC="$c_compiler" CXX="$cxx_compiler" \ 2501416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling $BuildDir/llvm.src/configure --prefix=$InstallDir \ 251b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 252b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-assertions=$Assertions \ 25358fba239e472b322633447482013aeae599d56beDuncan Sands --disable-timestamps \ 2541416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.configure-Phase$Phase-$Flavor.log 2551416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 256b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 257b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 258b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction build_llvmCore() { 259b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 260b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 261b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 262b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="" 263b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 264b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ "$Flavor" = "Release-64" ]; then 265b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="EXTRA_OPTIONS=-m64" 266b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 267b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 268b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 26964acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Compiling llvm $Release-$RC $Flavor" 270783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling echo "# ${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts" 271783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts \ 2721416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.make-Phase$Phase-$Flavor.log 273b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 27464acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Installing llvm $Release-$RC $Flavor" 275783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling echo "# ${MAKE} install" 276783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} install \ 2771416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.install-Phase$Phase-$Flavor.log 2781416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 279b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 280b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 281c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsfunction build_dragonegg() { 282c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands Phase="$1" 283c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands Flavor="$2" 284c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVMInstallDir="$3" 285c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands DragonEggObjDir="$4" 286c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVM_CONFIG=$LLVMInstallDir/bin/llvm-config 287c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands TOP_DIR=$BuildDir/dragonegg.src 288c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 289c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Targeted compiler: $gcc_compiler" 290c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 291c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cd $DragonEggObjDir 29264acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Compiling phase $Phase dragonegg $Release-$RC $Flavor" 293c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo -n "# CXX=$cxx_compiler TOP_DIR=$TOP_DIR GCC=$gcc_compiler " 294c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo -n "LLVM_CONFIG=$LLVM_CONFIG ${MAKE} -f $TOP_DIR/Makefile " 295c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "-j $NumJobs VERBOSE=1" 296c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands CXX="$cxx_compiler" TOP_DIR="$TOP_DIR" GCC="$gcc_compiler" \ 297c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVM_CONFIG="$LLVM_CONFIG" ${MAKE} -f $TOP_DIR/Makefile \ 298c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -j $NumJobs VERBOSE=1 \ 299c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 2>&1 | tee $LogDir/dragonegg-Phase$Phase-$Flavor.log 300c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cd $BuildDir 301c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands} 302c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 303b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction test_llvmCore() { 304b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 305b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 306b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 307b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 308b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 309783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -k check-all \ 3101416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.check-Phase$Phase-$Flavor.log 311783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -k unittests \ 31241adc5fb8bd0d81f07d93754868bd9f27b6fd9afBill Wendling 2>&1 | tee $LogDir/llvm.unittests-Phase$Phase-$Flavor.log 3131416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 314b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 315b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 316630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendlingset -e # Exit if any command fails 317630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendling 318b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_checkout" = "yes" ]; then 319b91c71299a819e2d20786b629376f119085e8b28Bill Wendling export_sources 320b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 321b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 322f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands( 323a854f5d6f9394212319f4e00b6396900f6e62864Bill WendlingFlavors="Release" 3241416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingif [ "$do_debug" = "yes" ]; then 3251416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling Flavors="Debug $Flavors" 3261416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingfi 327a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingif [ "$do_asserts" = "yes" ]; then 328a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling Flavors="$Flavors Release+Asserts" 329a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingfi 330b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_64bit" = "yes" ]; then 331b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavors="$Flavors Release-64" 332b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 333b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 334b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfor Flavor in $Flavors ; do 335b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 336b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 337b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 33864acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo " Release: $Release-$RC" 339b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " Build: $Flavor" 340b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " System Info: " 341b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " `uname -a`" 342b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 343b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 344b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 345fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands c_compiler="$CC" 346fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands cxx_compiler="$CXX" 347fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands 34864acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase1_objdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-$RC.obj 34964acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase1_installdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-$RC.install 35064acc57b23530aee37d224f48293cb764c4290a8Bill Wendling dragonegg_phase1_objdir=$BuildDir/Phase1/$Flavor/DragonEgg-$Release-$RC.obj 351b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 35264acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-$RC.obj 35364acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-$RC.install 35464acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-$RC.obj 35564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-$RC.install 35664acc57b23530aee37d224f48293cb764c4290a8Bill Wendling dragonegg_phase2_objdir=$BuildDir/Phase2/$Flavor/DragonEgg-$Release-$RC.obj 357b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 35864acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-$RC.obj 35964acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-$RC.install 36064acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-$RC.obj 36164acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-$RC.install 36264acc57b23530aee37d224f48293cb764c4290a8Bill Wendling dragonegg_phase3_objdir=$BuildDir/Phase3/$Flavor/DragonEgg-$Release-$RC.obj 363a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 364b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_objdir 365b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_installdir 366c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase1_objdir 367c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 368b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_objdir 369b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_installdir 370c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase2_objdir 371c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase2_installdir 372c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase2_objdir 373c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 374a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling rm -rf $llvmCore_phase3_objdir 375a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling rm -rf $llvmCore_phase3_installdir 376c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase3_objdir 377c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase3_installdir 378c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase3_objdir 379b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 380b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_objdir 381b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_installdir 382c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase1_objdir 383c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 384b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_objdir 385b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_installdir 386c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase2_objdir 387c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase2_installdir 388c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase2_objdir 389c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 390a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling mkdir -p $llvmCore_phase3_objdir 391a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling mkdir -p $llvmCore_phase3_installdir 392c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase3_objdir 393c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase3_installdir 394c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase3_objdir 395b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 396b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ############################################################################ 397c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 1: Build llvmCore and clang 398b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Phase 1: Building llvmCore" 399b91c71299a819e2d20786b629376f119085e8b28Bill Wendling configure_llvmCore 1 $Flavor \ 4001416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling $llvmCore_phase1_objdir $llvmCore_phase1_installdir 401b91c71299a819e2d20786b629376f119085e8b28Bill Wendling build_llvmCore 1 $Flavor \ 402b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase1_objdir 403b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 404c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Test clang 405c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_clang" = "yes" ]; then 406c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 407c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 2: Build llvmCore with newly built clang from phase 1. 408c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler=$llvmCore_phase1_installdir/bin/clang 409c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler=$llvmCore_phase1_installdir/bin/clang++ 410c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 2: Building llvmCore" 411c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 2 $Flavor \ 412c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase2_objdir $llvmCore_phase2_installdir 413c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 2 $Flavor \ 414c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase2_objdir 415c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 416c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 417c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 3: Build llvmCore with newly built clang from phase 2. 418c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler=$llvmCore_phase2_installdir/bin/clang 419c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler=$llvmCore_phase2_installdir/bin/clang++ 420c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 3: Building llvmCore" 421c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 3 $Flavor \ 422c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase3_objdir $llvmCore_phase3_installdir 423c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 3 $Flavor \ 424c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase3_objdir 425c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 426c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 427c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Testing: Test phase 3 428c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with clang" 429c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 3 $Flavor $llvmCore_phase3_objdir 430c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 431c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 432c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Compare .o files between Phase2 and Phase3 and report which ones differ. 433c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo 434c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Comparing Phase 2 and Phase 3 files" 435c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands for o in `find $llvmCore_phase2_objdir -name '*.o'` ; do 436c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands p3=`echo $o | sed -e 's,Phase2,Phase3,'` 437c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then 438c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "file `basename $o` differs between phase 2 and phase 3" 439c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 440c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands done 441c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 442a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 443c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Test dragonegg 444c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_dragonegg" = "yes" ]; then 445c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Build dragonegg using the targeted gcc. This isn't necessary, but 446c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # helps avoid using broken versions of gcc (which are legion), tests 447c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # that the targeted gcc is basically sane and is consistent with the 448c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # later phases in which the targeted gcc + dragonegg are used. 449c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler" 450c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler" 451c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 1 $Flavor $llvmCore_phase1_installdir $dragonegg_phase1_objdir 452c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 453c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 454c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 2: Build llvmCore with newly built dragonegg from phase 1. 455c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so" 456c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so" 457c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 2: Building llvmCore with dragonegg" 458c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 2 $Flavor \ 459c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase2_objdir $llvmCore_de_phase2_installdir 460c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 2 $Flavor \ 461c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase2_objdir 462c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 2 $Flavor $llvmCore_de_phase2_installdir $dragonegg_phase2_objdir 463c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 464c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 465c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 3: Build llvmCore with newly built clang from phase 2. 466c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so" 467c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so" 468c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 3: Building llvmCore with dragonegg" 469c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 3 $Flavor \ 470c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase3_objdir $llvmCore_de_phase3_installdir 471c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 3 $Flavor \ 472c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase3_objdir 473c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 3 $Flavor $llvmCore_de_phase3_installdir $dragonegg_phase3_objdir 474c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 475c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 476c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Testing: Test phase 3 477c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so" 478c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so" 479c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with dragonegg" 480c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 3 $Flavor $llvmCore_de_phase3_objdir 481c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 482c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ############################################################################ 483c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Compare .o files between Phase2 and Phase3 and report which ones differ. 484c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo 485c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Comparing Phase 2 and Phase 3 files" 48619595dc4d0cb2495c37828530f04b7e47cf0837fDuncan Sands for o in `find $llvmCore_de_phase2_objdir -name '*.o'` \ 48719595dc4d0cb2495c37828530f04b7e47cf0837fDuncan Sands `find $dragonegg_phase2_objdir -name '*.o'` ; do 488c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands p3=`echo $o | sed -e 's,Phase2,Phase3,'` 489c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then 490c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "file `basename $o` differs between dragonegg phase 2 and phase 3" 491c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 492c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands done 493c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 494a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 495c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Otherwise just test the core. 496c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_clang" != "yes" -a "$do_dragonegg" != "yes" ]; then 497c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with system compiler" 498c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 1 $Flavor $llvmCore_phase1_objdir 499c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 500b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 50164acc57b23530aee37d224f48293cb764c4290a8Bill Wendling) 2>&1 | tee $LogDir/testing.$Release-$RC.log 502b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 503630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendlingset +e 504630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendling 505b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Woo hoo! 506b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingecho "### Testing Finished ###" 507f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sandsecho "### Logs: $LogDir" 508b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingexit 0 509