test-release.sh revision cbece8c2a6c06b3c14e35228b326e629f936c458
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" 381adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendlingdo_compare="yes" 39b91c71299a819e2d20786b629376f119085e8b28Bill WendlingBuildDir="`pwd`" 40b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 41b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction usage() { 42b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "usage: `basename $0` -release X.Y -rc NUM [OPTIONS]" 43b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 44b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -release X.Y The release number to test." 45b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -rc NUM The pre-release candidate number." 4664acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo " -final The final release candidate." 47b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -j NUM Number of compile jobs to run. [default: 3]" 48b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -build-dir DIR Directory to perform testing in. [default: pwd]" 49b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-checkout Don't checkout the sources from SVN." 50b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-64bit Don't test the 64-bit version. [default: yes]" 51e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling echo " -enable-ada Build Ada. [default: disable]" 52c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo " -disable-clang Do not test clang. [default: enable]" 53c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo " -enable-dragonegg Test dragonegg. [default: disable]" 541416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo " -enable-fortran Enable Fortran build. [default: disable]" 55e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling echo " -disable-objc Disable ObjC build. [default: enable]" 561416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo " -test-debug Test the debug build. [default: no]" 57a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling echo " -test-asserts Test with asserts on. [default: no]" 581adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling echo " -no-compare-files Don't test that phase 2 and 3 files are identical." 59b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 60b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 61b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingwhile [ $# -gt 0 ]; do 62b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $1 in 63b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -release | --release ) 64b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 65b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release="$1" 66b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release_no_dot="`echo $1 | sed -e 's,\.,,'`" 67b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 68b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -rc | --rc | -RC | --RC ) 69b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 7064acc57b23530aee37d224f48293cb764c4290a8Bill Wendling RC="rc$1" 7164acc57b23530aee37d224f48293cb764c4290a8Bill Wendling ;; 7264acc57b23530aee37d224f48293cb764c4290a8Bill Wendling -final | --final ) 7364acc57b23530aee37d224f48293cb764c4290a8Bill Wendling RC=final 74b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 75b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -j* ) 76b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="`echo $1 | sed -e 's,-j\([0-9]*\),\1,g'`" 77b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ -z "$NumJobs" ]; then 78b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 79b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="$1" 80b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 81b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 82b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -build-dir | --build-dir | -builddir | --builddir ) 83b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 84b91c71299a819e2d20786b629376f119085e8b28Bill Wendling BuildDir="$1" 85b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 86b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-checkout | --no-checkout ) 87b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_checkout="no" 88b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 89b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-64bit | --no-64bit ) 90b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_64bit="no" 91b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 92e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling -enable-ada | --enable-ada ) 93b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_ada="yes" 94b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 95c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -disable-clang | --disable-clang ) 96c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands do_clang="no" 97c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ;; 98c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -enable-dragonegg | --enable-dragonegg ) 99c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands do_dragonegg="yes" 100c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ;; 1011416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling -enable-fortran | --enable-fortran ) 1021416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling do_fortran="yes" 1031416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling ;; 104c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling -disable-objc | --disable-objc ) 105c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling do_objc="no" 106c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling ;; 1071416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling -test-debug | --test-debug ) 1081416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling do_debug="yes" 109b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 110a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling -test-asserts | --test-asserts ) 111a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling do_asserts="yes" 112a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling ;; 1131adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling -no-compare-files | --no-compare-files ) 1141adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling do_compare="no" 1151adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ;; 116b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -help | --help | -h | --h | -\? ) 117b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 118b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 0 119b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 120b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 121b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "unknown option: $1" 122b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 123b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 124b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 125b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 126b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 127b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 128b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 129b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Check required arguments. 130b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$Release" ]; then 1311416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: no release number specified" 132b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 133b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 134b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$RC" ]; then 1351416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: no release candidate number specified" 136b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 137b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 138b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 139d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands# Figure out how many make processes to run. 140d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 141d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.activecpu 2> /dev/null || true` 142d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 143d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 144d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.ncpu 2> /dev/null || true` 145d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 146d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 147d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`grep -c processor /proc/cpuinfo 2> /dev/null || true` 148d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 149b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$NumJobs" ]; then 150b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs=3 151b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 152b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 1531416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling# Go to the build directory (may be different from CWD) 15464acc57b23530aee37d224f48293cb764c4290a8Bill WendlingBuildDir=$BuildDir/$RC 1551416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingmkdir -p $BuildDir 1561416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingcd $BuildDir 157b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 158f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands# Location of log files. 1591416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill WendlingLogDir=$BuildDir/logs 160f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sandsmkdir -p $LogDir 161f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands 162c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands# Find compilers. 163c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsif [ "$do_dragonegg" = "yes" ]; then 164c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gcc_compiler="$GCC" 165c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gcc_compiler" ]; then 166c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gcc_compiler="`which gcc`" 167c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gcc_compiler" ]; then 168c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "error: cannot find gcc to use with dragonegg" 169c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands exit 1 170c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 171c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 172c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 173c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gxx_compiler="$GXX" 174c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gxx_compiler" ]; then 175c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gxx_compiler="`which g++`" 176c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gxx_compiler" ]; then 177c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "error: cannot find g++ to use with dragonegg" 178c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands exit 1 179c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 180c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 181c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsfi 182c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 183b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 184b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Make sure that the URLs are valid. 185b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction check_valid_urls() { 1861416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling for proj in $projects ; do 1871416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Validating $proj SVN URL" 1881416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 18964acc57b23530aee37d224f48293cb764c4290a8Bill Wendling if ! svn ls $Base_url/$proj/tags/RELEASE_$Release_no_dot/$RC > /dev/null 2>&1 ; then 1901416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "llvm $Release release candidate $RC doesn't exist!" 1911416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling exit 1 1921416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 1931416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling done 194b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 195b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 196b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Export sources to the the build directory. 197b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction export_sources() { 198b91c71299a819e2d20786b629376f119085e8b28Bill Wendling check_valid_urls 199b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 2001416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling for proj in $projects ; do 2011416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Exporting $proj $Release-RC$RC sources" 20264acc57b23530aee37d224f48293cb764c4290a8Bill Wendling if ! svn export -q $Base_url/$proj/tags/RELEASE_$Release_no_dot/$RC $proj.src ; then 2031416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: failed to export $proj project" 2041416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling exit 1 2051416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2061416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling done 2071416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2081416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Creating symlinks" 2091416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir/llvm.src/tools 2101416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling if [ ! -h clang ]; then 211ac6d7e49117fc12b81eb9dcddda08debedcf2360Bill Wendling ln -s ../../cfe.src clang 2121416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2131416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir/llvm.src/projects 2141416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling if [ ! -h llvm-test ]; then 215ac6d7e49117fc12b81eb9dcddda08debedcf2360Bill Wendling ln -s ../../test-suite.src llvm-test 2161416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2171416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 218b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 219b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 220b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction configure_llvmCore() { 221b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 222b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 223b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 224b91c71299a819e2d20786b629376f119085e8b28Bill Wendling InstallDir="$4" 225b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 226b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $Flavor in 227b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release | Release-64 ) 228b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 2298a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Assertions="no" 230b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 2318a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Release+Asserts ) 232b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 2338a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Assertions="yes" 234b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 235b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Debug ) 236b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="no" 237b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Assertions="yes" 238b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 239b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 2401416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Invalid flavor '$Flavor'" 241b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 242b91c71299a819e2d20786b629376f119085e8b28Bill Wendling return 243b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 244b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 245b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 2461416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Using C compiler: $c_compiler" 2471416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Using C++ compiler: $cxx_compiler" 2481416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 249b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 25064acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Configuring llvm $Release-$RC $Flavor" 2511416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# $BuildDir/llvm.src/configure --prefix=$InstallDir \ 252b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 2531416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling --enable-assertions=$Assertions" 254c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands env CC="$c_compiler" CXX="$cxx_compiler" \ 2551416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling $BuildDir/llvm.src/configure --prefix=$InstallDir \ 256b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 257b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-assertions=$Assertions \ 25858fba239e472b322633447482013aeae599d56beDuncan Sands --disable-timestamps \ 2591416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.configure-Phase$Phase-$Flavor.log 2601416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 261b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 262b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 263b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction build_llvmCore() { 264b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 265b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 266b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 267b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="" 268b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 269b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ "$Flavor" = "Release-64" ]; then 270b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="EXTRA_OPTIONS=-m64" 271b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 272b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 273b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 27464acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Compiling llvm $Release-$RC $Flavor" 275783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling echo "# ${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts" 276783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts \ 2771416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.make-Phase$Phase-$Flavor.log 278b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 27964acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Installing llvm $Release-$RC $Flavor" 280783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling echo "# ${MAKE} install" 281783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} install \ 2821416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.install-Phase$Phase-$Flavor.log 2831416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 284b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 285b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 286c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsfunction build_dragonegg() { 287c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands Phase="$1" 288c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands Flavor="$2" 289c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVMInstallDir="$3" 290c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands DragonEggObjDir="$4" 291c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVM_CONFIG=$LLVMInstallDir/bin/llvm-config 292c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands TOP_DIR=$BuildDir/dragonegg.src 293c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 294c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Targeted compiler: $gcc_compiler" 295c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 296c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cd $DragonEggObjDir 29764acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Compiling phase $Phase dragonegg $Release-$RC $Flavor" 298c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo -n "# CXX=$cxx_compiler TOP_DIR=$TOP_DIR GCC=$gcc_compiler " 299c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo -n "LLVM_CONFIG=$LLVM_CONFIG ${MAKE} -f $TOP_DIR/Makefile " 300c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "-j $NumJobs VERBOSE=1" 301c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands CXX="$cxx_compiler" TOP_DIR="$TOP_DIR" GCC="$gcc_compiler" \ 302c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVM_CONFIG="$LLVM_CONFIG" ${MAKE} -f $TOP_DIR/Makefile \ 303c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -j $NumJobs VERBOSE=1 \ 304c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 2>&1 | tee $LogDir/dragonegg-Phase$Phase-$Flavor.log 305c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cd $BuildDir 306c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands} 307c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 308b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction test_llvmCore() { 309b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 310b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 311b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 312b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 313b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 314783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -k check-all \ 3151416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.check-Phase$Phase-$Flavor.log 316783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -k unittests \ 31741adc5fb8bd0d81f07d93754868bd9f27b6fd9afBill Wendling 2>&1 | tee $LogDir/llvm.unittests-Phase$Phase-$Flavor.log 3181416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 319b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 320b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 321630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendlingset -e # Exit if any command fails 322630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendling 323b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_checkout" = "yes" ]; then 324b91c71299a819e2d20786b629376f119085e8b28Bill Wendling export_sources 325b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 326b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 327f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands( 328a854f5d6f9394212319f4e00b6396900f6e62864Bill WendlingFlavors="Release" 3291416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingif [ "$do_debug" = "yes" ]; then 3301416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling Flavors="Debug $Flavors" 3311416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingfi 332a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingif [ "$do_asserts" = "yes" ]; then 333a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling Flavors="$Flavors Release+Asserts" 334a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingfi 335b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_64bit" = "yes" ]; then 336b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavors="$Flavors Release-64" 337b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 338b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 339b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfor Flavor in $Flavors ; do 340b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 341b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 342b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 34364acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo " Release: $Release-$RC" 344b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " Build: $Flavor" 345b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " System Info: " 346b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " `uname -a`" 347b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 348b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 349b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 350fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands c_compiler="$CC" 351fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands cxx_compiler="$CXX" 352fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands 35364acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase1_objdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-$RC.obj 35464acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase1_installdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-$RC.install 35564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling dragonegg_phase1_objdir=$BuildDir/Phase1/$Flavor/DragonEgg-$Release-$RC.obj 356b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 35764acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-$RC.obj 35864acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-$RC.install 35964acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-$RC.obj 36064acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-$RC.install 36164acc57b23530aee37d224f48293cb764c4290a8Bill Wendling dragonegg_phase2_objdir=$BuildDir/Phase2/$Flavor/DragonEgg-$Release-$RC.obj 362b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 36364acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-$RC.obj 36464acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-$RC.install 36564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-$RC.obj 36664acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-$RC.install 36764acc57b23530aee37d224f48293cb764c4290a8Bill Wendling dragonegg_phase3_objdir=$BuildDir/Phase3/$Flavor/DragonEgg-$Release-$RC.obj 368a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 369b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_objdir 370b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_installdir 371c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase1_objdir 372c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 373b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_objdir 374b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_installdir 375c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase2_objdir 376c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase2_installdir 377c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase2_objdir 378c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 379a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling rm -rf $llvmCore_phase3_objdir 380a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling rm -rf $llvmCore_phase3_installdir 381c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase3_objdir 382c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase3_installdir 383c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase3_objdir 384b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 385b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_objdir 386b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_installdir 387c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase1_objdir 388c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 389b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_objdir 390b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_installdir 391c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase2_objdir 392c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase2_installdir 393c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase2_objdir 394c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 395a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling mkdir -p $llvmCore_phase3_objdir 396a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling mkdir -p $llvmCore_phase3_installdir 397c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase3_objdir 398c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase3_installdir 399c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase3_objdir 400b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 401b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ############################################################################ 402c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 1: Build llvmCore and clang 403b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Phase 1: Building llvmCore" 404b91c71299a819e2d20786b629376f119085e8b28Bill Wendling configure_llvmCore 1 $Flavor \ 4051416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling $llvmCore_phase1_objdir $llvmCore_phase1_installdir 406b91c71299a819e2d20786b629376f119085e8b28Bill Wendling build_llvmCore 1 $Flavor \ 407b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase1_objdir 408b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 409c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Test clang 410c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_clang" = "yes" ]; then 4111adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 412c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 2: Build llvmCore with newly built clang from phase 1. 413c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler=$llvmCore_phase1_installdir/bin/clang 414c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler=$llvmCore_phase1_installdir/bin/clang++ 415c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 2: Building llvmCore" 416c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 2 $Flavor \ 417c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase2_objdir $llvmCore_phase2_installdir 418c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 2 $Flavor \ 419c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase2_objdir 420c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 4211adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 422c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 3: Build llvmCore with newly built clang from phase 2. 423c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler=$llvmCore_phase2_installdir/bin/clang 424c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler=$llvmCore_phase2_installdir/bin/clang++ 425c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 3: Building llvmCore" 426c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 3 $Flavor \ 427c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase3_objdir $llvmCore_phase3_installdir 428c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 3 $Flavor \ 429c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase3_objdir 430c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 4311adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 432c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Testing: Test phase 3 433c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with clang" 434c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 3 $Flavor $llvmCore_phase3_objdir 435c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 4361adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 4371adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling # Compare .o files between Phase2 and Phase3 and report which ones 4381adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling # differ. 4391adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling if [ "$do_compare" = "yes" ]; then 440cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling echo 441cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling echo "# Comparing Phase 2 and Phase 3 files" 442cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling for o in `find $llvmCore_phase2_objdir -name '*.o'` ; do 443cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling p3=`echo $o | sed -e 's,Phase2,Phase3,'` 444cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then 445cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling echo "file `basename $o` differs between phase 2 and phase 3" 446cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling fi 447cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling done 4481adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling fi 449c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 450a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 451c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Test dragonegg 452c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_dragonegg" = "yes" ]; then 453c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Build dragonegg using the targeted gcc. This isn't necessary, but 454c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # helps avoid using broken versions of gcc (which are legion), tests 455c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # that the targeted gcc is basically sane and is consistent with the 456c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # later phases in which the targeted gcc + dragonegg are used. 457c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler" 458c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler" 459c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 1 $Flavor $llvmCore_phase1_installdir $dragonegg_phase1_objdir 460c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 4611adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 462c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 2: Build llvmCore with newly built dragonegg from phase 1. 463c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so" 464c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so" 465c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 2: Building llvmCore with dragonegg" 466c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 2 $Flavor \ 467c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase2_objdir $llvmCore_de_phase2_installdir 468c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 2 $Flavor \ 469c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase2_objdir 470c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 2 $Flavor $llvmCore_de_phase2_installdir $dragonegg_phase2_objdir 471c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 4721adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 473c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 3: Build llvmCore with newly built clang from phase 2. 474c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so" 475c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so" 476c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 3: Building llvmCore with dragonegg" 477c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 3 $Flavor \ 478c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase3_objdir $llvmCore_de_phase3_installdir 479c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 3 $Flavor \ 480c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase3_objdir 481c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 3 $Flavor $llvmCore_de_phase3_installdir $dragonegg_phase3_objdir 482c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 4831adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 484c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Testing: Test phase 3 485c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so" 486c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so" 487c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with dragonegg" 488c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 3 $Flavor $llvmCore_de_phase3_objdir 489c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 4901adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 491c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Compare .o files between Phase2 and Phase3 and report which ones differ. 492c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo 493c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Comparing Phase 2 and Phase 3 files" 49419595dc4d0cb2495c37828530f04b7e47cf0837fDuncan Sands for o in `find $llvmCore_de_phase2_objdir -name '*.o'` \ 49519595dc4d0cb2495c37828530f04b7e47cf0837fDuncan Sands `find $dragonegg_phase2_objdir -name '*.o'` ; do 496c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands p3=`echo $o | sed -e 's,Phase2,Phase3,'` 497c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then 498c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "file `basename $o` differs between dragonegg phase 2 and phase 3" 499c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 500c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands done 501c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 502a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 503c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Otherwise just test the core. 504c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_clang" != "yes" -a "$do_dragonegg" != "yes" ]; then 505c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with system compiler" 506c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 1 $Flavor $llvmCore_phase1_objdir 507c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 508b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 50964acc57b23530aee37d224f48293cb764c4290a8Bill Wendling) 2>&1 | tee $LogDir/testing.$Release-$RC.log 510b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 511630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendlingset +e 512630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendling 513b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Woo hoo! 514b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingecho "### Testing Finished ###" 515f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sandsecho "### Logs: $LogDir" 516b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingexit 0 517