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 2177bf8661cd147d7569355d4a562c2ac8160b290cBill Wendlingprojects="llvm cfe dragonegg compiler-rt libcxx test-suite clang-tools-extra" 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="" 293c031bdef960479def2e01f28be506dcbdeb8758Bill WendlingTriple="" 30d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendlinguse_gzip="no" 31b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_checkout="yes" 32b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_ada="no" 33c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsdo_clang="yes" 34c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsdo_dragonegg="no" 351416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingdo_fortran="no" 36c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsdo_objc="yes" 37b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdo_64bit="yes" 381416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingdo_debug="no" 39a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingdo_asserts="no" 401adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendlingdo_compare="yes" 41b91c71299a819e2d20786b629376f119085e8b28Bill WendlingBuildDir="`pwd`" 42b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 43b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction usage() { 44b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "usage: `basename $0` -release X.Y -rc NUM [OPTIONS]" 45b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 46b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -release X.Y The release number to test." 47b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -rc NUM The pre-release candidate number." 4864acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo " -final The final release candidate." 493c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling echo " -triple TRIPLE The target triple for this machine." 50b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -j NUM Number of compile jobs to run. [default: 3]" 51b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -build-dir DIR Directory to perform testing in. [default: pwd]" 52b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-checkout Don't checkout the sources from SVN." 53b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " -no-64bit Don't test the 64-bit version. [default: yes]" 54e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling echo " -enable-ada Build Ada. [default: disable]" 55c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo " -disable-clang Do not test clang. [default: enable]" 56c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo " -enable-dragonegg Test dragonegg. [default: disable]" 571416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo " -enable-fortran Enable Fortran build. [default: disable]" 58e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling echo " -disable-objc Disable ObjC build. [default: enable]" 591416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo " -test-debug Test the debug build. [default: no]" 60a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling echo " -test-asserts Test with asserts on. [default: no]" 611adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling echo " -no-compare-files Don't test that phase 2 and 3 files are identical." 62d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling echo " -use-gzip Use gzip instead of xz." 63b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 64b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 65b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingwhile [ $# -gt 0 ]; do 66b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $1 in 67b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -release | --release ) 68b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 69b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release="$1" 70b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release_no_dot="`echo $1 | sed -e 's,\.,,'`" 71b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 72b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -rc | --rc | -RC | --RC ) 73b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 7464acc57b23530aee37d224f48293cb764c4290a8Bill Wendling RC="rc$1" 7564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling ;; 7664acc57b23530aee37d224f48293cb764c4290a8Bill Wendling -final | --final ) 7764acc57b23530aee37d224f48293cb764c4290a8Bill Wendling RC=final 78b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 793c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling -triple | --triple ) 803c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling shift 813c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling Triple="$1" 823c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling ;; 83b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -j* ) 84b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="`echo $1 | sed -e 's,-j\([0-9]*\),\1,g'`" 85b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ -z "$NumJobs" ]; then 86b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 87b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs="$1" 88b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 89b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 90b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -build-dir | --build-dir | -builddir | --builddir ) 91b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 92b91c71299a819e2d20786b629376f119085e8b28Bill Wendling BuildDir="$1" 93b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 94b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-checkout | --no-checkout ) 95b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_checkout="no" 96b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 97b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -no-64bit | --no-64bit ) 98b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_64bit="no" 99b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 100e7e9a60df6ea92460337569e24746f390cbd56e3Bill Wendling -enable-ada | --enable-ada ) 101b91c71299a819e2d20786b629376f119085e8b28Bill Wendling do_ada="yes" 102b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 103c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -disable-clang | --disable-clang ) 104c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands do_clang="no" 105c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ;; 106c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -enable-dragonegg | --enable-dragonegg ) 107c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands do_dragonegg="yes" 108c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands ;; 1091416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling -enable-fortran | --enable-fortran ) 1101416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling do_fortran="yes" 1111416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling ;; 112c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling -disable-objc | --disable-objc ) 113c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling do_objc="no" 114c248bbab04cb674bde5de8d6e2b2736a574fa0f8Bill Wendling ;; 1151416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling -test-debug | --test-debug ) 1161416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling do_debug="yes" 117b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 118a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling -test-asserts | --test-asserts ) 119a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling do_asserts="yes" 120a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling ;; 1211adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling -no-compare-files | --no-compare-files ) 1221adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling do_compare="no" 1231adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ;; 124d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling -use-gzip | --use-gzip ) 125d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling use_gzip="yes" 126d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling ;; 127b91c71299a819e2d20786b629376f119085e8b28Bill Wendling -help | --help | -h | --h | -\? ) 128b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 129b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 0 130b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 131b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 132b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "unknown option: $1" 133b91c71299a819e2d20786b629376f119085e8b28Bill Wendling usage 134b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 135b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 136b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 137b91c71299a819e2d20786b629376f119085e8b28Bill Wendling shift 138b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 139b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 140b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Check required arguments. 141b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$Release" ]; then 1421416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: no release number specified" 143b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 144b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 145b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$RC" ]; then 1461416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: no release candidate number specified" 147b91c71299a819e2d20786b629376f119085e8b28Bill Wendling exit 1 148b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 1493c031bdef960479def2e01f28be506dcbdeb8758Bill Wendlingif [ -z "$Triple" ]; then 1503c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling echo "error: no target triple specified" 1513c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling exit 1 1523c031bdef960479def2e01f28be506dcbdeb8758Bill Wendlingfi 153b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 154d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands# Figure out how many make processes to run. 155d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 156d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.activecpu 2> /dev/null || true` 157d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 158d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 159d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`sysctl -n hw.ncpu 2> /dev/null || true` 160d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 161d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsif [ -z "$NumJobs" ]; then 162d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sands NumJobs=`grep -c processor /proc/cpuinfo 2> /dev/null || true` 163d357d747ded75c3eae9238f23e1c05d621d915e8Duncan Sandsfi 164b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ -z "$NumJobs" ]; then 165b91c71299a819e2d20786b629376f119085e8b28Bill Wendling NumJobs=3 166b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 167b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 1681416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling# Go to the build directory (may be different from CWD) 16964acc57b23530aee37d224f48293cb764c4290a8Bill WendlingBuildDir=$BuildDir/$RC 1701416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingmkdir -p $BuildDir 1711416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingcd $BuildDir 172b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 173f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands# Location of log files. 1741416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill WendlingLogDir=$BuildDir/logs 175f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sandsmkdir -p $LogDir 176f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands 1773c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling# Final package name. 1783c031bdef960479def2e01f28be506dcbdeb8758Bill WendlingPackage=clang+llvm-$Release 1793c031bdef960479def2e01f28be506dcbdeb8758Bill Wendlingif [ $RC != "final" ]; then 1803c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling Package=$Package-$RC 1813c031bdef960479def2e01f28be506dcbdeb8758Bill Wendlingfi 1823c031bdef960479def2e01f28be506dcbdeb8758Bill WendlingPackage=$Package-$Triple 1833c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling 184c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands# Find compilers. 185c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsif [ "$do_dragonegg" = "yes" ]; then 186c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gcc_compiler="$GCC" 187c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gcc_compiler" ]; then 188c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gcc_compiler="`which gcc`" 189c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gcc_compiler" ]; then 190c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "error: cannot find gcc to use with dragonegg" 191c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands exit 1 192c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 193c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 194c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 195c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gxx_compiler="$GXX" 196c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gxx_compiler" ]; then 197c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands gxx_compiler="`which g++`" 198c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ -z "$gxx_compiler" ]; then 199c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "error: cannot find g++ to use with dragonegg" 200c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands exit 1 201c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 202c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 203c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsfi 204c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 205ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison# Make sure that a required program is available 206ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaisonfunction check_program_exists() { 207ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison local program="$1" 208ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison if ! type -P $program > /dev/null 2>&1 ; then 209ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison echo "program '$1' not found !" 210ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison exit 1 211ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison fi 212ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison} 213ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison 2143c031bdef960479def2e01f28be506dcbdeb8758Bill Wendlingif [ `uname -s` != "Darwin" ]; then 2153c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling check_program_exists 'chrpath' 2163c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling check_program_exists 'file' 2173c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling check_program_exists 'objdump' 2183c031bdef960479def2e01f28be506dcbdeb8758Bill Wendlingfi 219b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 220b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Make sure that the URLs are valid. 221b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction check_valid_urls() { 2221416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling for proj in $projects ; do 2231416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Validating $proj SVN URL" 2241416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 22564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling if ! svn ls $Base_url/$proj/tags/RELEASE_$Release_no_dot/$RC > /dev/null 2>&1 ; then 226dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines echo "$proj $Release release candidate $RC doesn't exist!" 2271416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling exit 1 2281416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2291416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling done 230b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 231b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 232c8e41c591741b3da1077f7000274ad040bef8002Sylvestre Ledru# Export sources to the build directory. 233b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction export_sources() { 234b91c71299a819e2d20786b629376f119085e8b28Bill Wendling check_valid_urls 235b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 2361416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling for proj in $projects ; do 23736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines echo "# Exporting $proj $Release-$RC sources" 23864acc57b23530aee37d224f48293cb764c4290a8Bill Wendling if ! svn export -q $Base_url/$proj/tags/RELEASE_$Release_no_dot/$RC $proj.src ; then 2391416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "error: failed to export $proj project" 2401416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling exit 1 2411416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 2421416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling done 2431416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2441416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Creating symlinks" 2451416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir/llvm.src/tools 2461416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling if [ ! -h clang ]; then 247ac6d7e49117fc12b81eb9dcddda08debedcf2360Bill Wendling ln -s ../../cfe.src clang 2481416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 24977bf8661cd147d7569355d4a562c2ac8160b290cBill Wendling cd $BuildDir/llvm.src/tools/clang/tools 25077bf8661cd147d7569355d4a562c2ac8160b290cBill Wendling if [ ! -h clang-tools-extra ]; then 25177bf8661cd147d7569355d4a562c2ac8160b290cBill Wendling ln -s ../../../../clang-tools-extra.src extra 25277bf8661cd147d7569355d4a562c2ac8160b290cBill Wendling fi 2531416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir/llvm.src/projects 25477bf8661cd147d7569355d4a562c2ac8160b290cBill Wendling if [ ! -h test-suite ]; then 25577bf8661cd147d7569355d4a562c2ac8160b290cBill Wendling ln -s ../../test-suite.src test-suite 2561416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling fi 257e4576266f49169ad0ae112d9cb565e7d7c4bf24eBill Wendling if [ ! -h compiler-rt ]; then 258e4576266f49169ad0ae112d9cb565e7d7c4bf24eBill Wendling ln -s ../../compiler-rt.src compiler-rt 259e4576266f49169ad0ae112d9cb565e7d7c4bf24eBill Wendling fi 26077bf8661cd147d7569355d4a562c2ac8160b290cBill Wendling if [ ! -h libcxx ]; then 26177bf8661cd147d7569355d4a562c2ac8160b290cBill Wendling ln -s ../../libcxx.src libcxx 26277bf8661cd147d7569355d4a562c2ac8160b290cBill Wendling fi 2631416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 264b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 265b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 266b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction configure_llvmCore() { 267b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 268b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 269b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 270b91c71299a819e2d20786b629376f119085e8b28Bill Wendling InstallDir="$4" 271b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 272b91c71299a819e2d20786b629376f119085e8b28Bill Wendling case $Flavor in 273b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Release | Release-64 ) 274b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 2758a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Assertions="no" 276b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 2778a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Release+Asserts ) 278b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="yes" 2798a6e53e1162663dd2bc1da783fe2ff5947fba9e0Duncan Sands Assertions="yes" 280b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 281b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Debug ) 282b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Optimized="no" 283b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Assertions="yes" 284b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 285b91c71299a819e2d20786b629376f119085e8b28Bill Wendling * ) 2861416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Invalid flavor '$Flavor'" 287b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 288b91c71299a819e2d20786b629376f119085e8b28Bill Wendling return 289b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ;; 290b91c71299a819e2d20786b629376f119085e8b28Bill Wendling esac 291b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 2921416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Using C compiler: $c_compiler" 2931416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# Using C++ compiler: $cxx_compiler" 2941416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 295b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 29664acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Configuring llvm $Release-$RC $Flavor" 2971416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling echo "# $BuildDir/llvm.src/configure --prefix=$InstallDir \ 298b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 2991416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling --enable-assertions=$Assertions" 300c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands env CC="$c_compiler" CXX="$cxx_compiler" \ 3011416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling $BuildDir/llvm.src/configure --prefix=$InstallDir \ 302b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-optimized=$Optimized \ 303b91c71299a819e2d20786b629376f119085e8b28Bill Wendling --enable-assertions=$Assertions \ 30458fba239e472b322633447482013aeae599d56beDuncan Sands --disable-timestamps \ 3051416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.configure-Phase$Phase-$Flavor.log 3061416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 307b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 308b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 309b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction build_llvmCore() { 310b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 311b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 312b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 313b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="" 314b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 315b91c71299a819e2d20786b629376f119085e8b28Bill Wendling if [ "$Flavor" = "Release-64" ]; then 316b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ExtraOpts="EXTRA_OPTIONS=-m64" 317b91c71299a819e2d20786b629376f119085e8b28Bill Wendling fi 318b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 319b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 32064acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Compiling llvm $Release-$RC $Flavor" 321783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling echo "# ${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts" 322783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts \ 3231416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.make-Phase$Phase-$Flavor.log 324b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 32564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Installing llvm $Release-$RC $Flavor" 326783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling echo "# ${MAKE} install" 327783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} install \ 3281416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.install-Phase$Phase-$Flavor.log 3291416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 330b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 331b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 332c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sandsfunction build_dragonegg() { 333c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands Phase="$1" 334c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands Flavor="$2" 335c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVMInstallDir="$3" 336c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands DragonEggObjDir="$4" 337c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVM_CONFIG=$LLVMInstallDir/bin/llvm-config 338c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands TOP_DIR=$BuildDir/dragonegg.src 339c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 340c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Targeted compiler: $gcc_compiler" 341c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 342c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cd $DragonEggObjDir 34364acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo "# Compiling phase $Phase dragonegg $Release-$RC $Flavor" 344c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo -n "# CXX=$cxx_compiler TOP_DIR=$TOP_DIR GCC=$gcc_compiler " 345c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo -n "LLVM_CONFIG=$LLVM_CONFIG ${MAKE} -f $TOP_DIR/Makefile " 346c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "-j $NumJobs VERBOSE=1" 347c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands CXX="$cxx_compiler" TOP_DIR="$TOP_DIR" GCC="$gcc_compiler" \ 348c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands LLVM_CONFIG="$LLVM_CONFIG" ${MAKE} -f $TOP_DIR/Makefile \ 349c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands -j $NumJobs VERBOSE=1 \ 350c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 2>&1 | tee $LogDir/dragonegg-Phase$Phase-$Flavor.log 351c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cd $BuildDir 352c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands} 353c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 354b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfunction test_llvmCore() { 355b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Phase="$1" 356b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavor="$2" 357b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ObjDir="$3" 358b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 359b91c71299a819e2d20786b629376f119085e8b28Bill Wendling cd $ObjDir 360783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -k check-all \ 3611416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling 2>&1 | tee $LogDir/llvm.check-Phase$Phase-$Flavor.log 362783993e79502641d4f2ec82f3db78320b6837f4eBill Wendling ${MAKE} -k unittests \ 36341adc5fb8bd0d81f07d93754868bd9f27b6fd9afBill Wendling 2>&1 | tee $LogDir/llvm.unittests-Phase$Phase-$Flavor.log 3641416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling cd $BuildDir 365b91c71299a819e2d20786b629376f119085e8b28Bill Wendling} 366b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 367ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison# Clean RPATH. Libtool adds the build directory to the search path, which is 368ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison# not necessary --- and even harmful --- for the binary packages we release. 369ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaisonfunction clean_RPATH() { 3703c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling if [ `uname -s` = "Darwin" ]; then 3713c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling return 3723c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling fi 373ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison local InstallPath="$1" 374ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison for Candidate in `find $InstallPath/{bin,lib} -type f`; do 375ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison if file $Candidate | grep ELF | egrep 'executable|shared object' > /dev/null 2>&1 ; then 376ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison rpath=`objdump -x $Candidate | grep 'RPATH' | sed -e's/^ *RPATH *//'` 377ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison if [ -n "$rpath" ]; then 378ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison newrpath=`echo $rpath | sed -e's/.*\(\$ORIGIN[^:]*\).*/\1/'` 379ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison chrpath -r $newrpath $Candidate 2>&1 > /dev/null 2>&1 380ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison fi 381ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison fi 382ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison done 383ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison} 384ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison 3853c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling# Create a package of the release binaries. 3863c031bdef960479def2e01f28be506dcbdeb8758Bill Wendlingfunction package_release() { 3873c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling cwd=`pwd` 3883c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling cd $BuildDir/Phase3/Release 3893c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling mv llvmCore-$Release-$RC.install $Package 390d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling if [ "$use_gzip" = "yes" ]; then 391d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling tar cfz $BuildDir/$Package.tar.gz $Package 392d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling else 393d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling tar cfJ $BuildDir/$Package.tar.xz $Package 394d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling fi 3953c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling mv $Package llvmCore-$Release-$RC.install 3963c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling cd $cwd 3973c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling} 3983c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling 399630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendlingset -e # Exit if any command fails 400630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendling 401b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_checkout" = "yes" ]; then 402b91c71299a819e2d20786b629376f119085e8b28Bill Wendling export_sources 403b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 404b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 405f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sands( 406a854f5d6f9394212319f4e00b6396900f6e62864Bill WendlingFlavors="Release" 4071416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingif [ "$do_debug" = "yes" ]; then 4081416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling Flavors="Debug $Flavors" 4091416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendlingfi 410a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingif [ "$do_asserts" = "yes" ]; then 411a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling Flavors="$Flavors Release+Asserts" 412a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendlingfi 413b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingif [ "$do_64bit" = "yes" ]; then 414b91c71299a819e2d20786b629376f119085e8b28Bill Wendling Flavors="$Flavors Release-64" 415b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfi 416b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 417b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingfor Flavor in $Flavors ; do 418b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 419b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 420b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 42164acc57b23530aee37d224f48293cb764c4290a8Bill Wendling echo " Release: $Release-$RC" 422b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " Build: $Flavor" 423b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " System Info: " 424b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo " `uname -a`" 425b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "********************************************************************************" 426b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "" 427b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 428fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands c_compiler="$CC" 429fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands cxx_compiler="$CXX" 430fbc0dec7b4dc94a667c2b8af6748a742da95353dDuncan Sands 43164acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase1_objdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-$RC.obj 43264acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase1_installdir=$BuildDir/Phase1/$Flavor/llvmCore-$Release-$RC.install 43364acc57b23530aee37d224f48293cb764c4290a8Bill Wendling dragonegg_phase1_objdir=$BuildDir/Phase1/$Flavor/DragonEgg-$Release-$RC.obj 434b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 43564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-$RC.obj 43664acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-$Release-$RC.install 43764acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase2_objdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-$RC.obj 43864acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase2_installdir=$BuildDir/Phase2/$Flavor/llvmCore-DragonEgg-$Release-$RC.install 43964acc57b23530aee37d224f48293cb764c4290a8Bill Wendling dragonegg_phase2_objdir=$BuildDir/Phase2/$Flavor/DragonEgg-$Release-$RC.obj 440b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 44164acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-$RC.obj 44264acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-$Release-$RC.install 44364acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase3_objdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-$RC.obj 44464acc57b23530aee37d224f48293cb764c4290a8Bill Wendling llvmCore_de_phase3_installdir=$BuildDir/Phase3/$Flavor/llvmCore-DragonEgg-$Release-$RC.install 44564acc57b23530aee37d224f48293cb764c4290a8Bill Wendling dragonegg_phase3_objdir=$BuildDir/Phase3/$Flavor/DragonEgg-$Release-$RC.obj 446a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 447b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_objdir 448b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase1_installdir 449c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase1_objdir 450c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 451b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_objdir 452b91c71299a819e2d20786b629376f119085e8b28Bill Wendling rm -rf $llvmCore_phase2_installdir 453c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase2_objdir 454c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase2_installdir 455c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase2_objdir 456c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 457a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling rm -rf $llvmCore_phase3_objdir 458a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling rm -rf $llvmCore_phase3_installdir 459c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase3_objdir 460c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $llvmCore_de_phase3_installdir 461c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands rm -rf $dragonegg_phase3_objdir 462b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 463b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_objdir 464b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase1_installdir 465c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase1_objdir 466c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 467b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_objdir 468b91c71299a819e2d20786b629376f119085e8b28Bill Wendling mkdir -p $llvmCore_phase2_installdir 469c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase2_objdir 470c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase2_installdir 471c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase2_objdir 472c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 473a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling mkdir -p $llvmCore_phase3_objdir 474a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling mkdir -p $llvmCore_phase3_installdir 475c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase3_objdir 476c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $llvmCore_de_phase3_installdir 477c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands mkdir -p $dragonegg_phase3_objdir 478b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 479b91c71299a819e2d20786b629376f119085e8b28Bill Wendling ############################################################################ 480c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 1: Build llvmCore and clang 481b91c71299a819e2d20786b629376f119085e8b28Bill Wendling echo "# Phase 1: Building llvmCore" 482b91c71299a819e2d20786b629376f119085e8b28Bill Wendling configure_llvmCore 1 $Flavor \ 4831416dc29d8573e58c8b2d7fe0715f3e289d03ab8Bill Wendling $llvmCore_phase1_objdir $llvmCore_phase1_installdir 484b91c71299a819e2d20786b629376f119085e8b28Bill Wendling build_llvmCore 1 $Flavor \ 485b91c71299a819e2d20786b629376f119085e8b28Bill Wendling $llvmCore_phase1_objdir 486ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison clean_RPATH $llvmCore_phase1_installdir 487b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 488c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Test clang 489c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_clang" = "yes" ]; then 4901adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 491c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 2: Build llvmCore with newly built clang from phase 1. 492c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler=$llvmCore_phase1_installdir/bin/clang 493c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler=$llvmCore_phase1_installdir/bin/clang++ 494c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 2: Building llvmCore" 495c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 2 $Flavor \ 496c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase2_objdir $llvmCore_phase2_installdir 497c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 2 $Flavor \ 498c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase2_objdir 499ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison clean_RPATH $llvmCore_phase2_installdir 500c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 5011adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 502c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 3: Build llvmCore with newly built clang from phase 2. 503c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler=$llvmCore_phase2_installdir/bin/clang 504c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler=$llvmCore_phase2_installdir/bin/clang++ 505c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 3: Building llvmCore" 506c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 3 $Flavor \ 507c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase3_objdir $llvmCore_phase3_installdir 508c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 3 $Flavor \ 509c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_phase3_objdir 510ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison clean_RPATH $llvmCore_phase3_installdir 511c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 5121adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 513c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Testing: Test phase 3 514c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with clang" 515c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 3 $Flavor $llvmCore_phase3_objdir 516c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 5171adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 5181adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling # Compare .o files between Phase2 and Phase3 and report which ones 5191adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling # differ. 5201adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling if [ "$do_compare" = "yes" ]; then 521cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling echo 522cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling echo "# Comparing Phase 2 and Phase 3 files" 523cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling for o in `find $llvmCore_phase2_objdir -name '*.o'` ; do 524cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling p3=`echo $o | sed -e 's,Phase2,Phase3,'` 525cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then 526cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling echo "file `basename $o` differs between phase 2 and phase 3" 527cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling fi 528cbece8c2a6c06b3c14e35228b326e629f936c458Bill Wendling done 5291adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling fi 530c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 531a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 532c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Test dragonegg 533c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_dragonegg" = "yes" ]; then 534c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Build dragonegg using the targeted gcc. This isn't necessary, but 535c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # helps avoid using broken versions of gcc (which are legion), tests 536c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # that the targeted gcc is basically sane and is consistent with the 537c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # later phases in which the targeted gcc + dragonegg are used. 538c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler" 539c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler" 540c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 1 $Flavor $llvmCore_phase1_installdir $dragonegg_phase1_objdir 541c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 5421adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 543c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Phase 2: Build llvmCore with newly built dragonegg from phase 1. 544c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so" 545c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so" 546c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 2: Building llvmCore with dragonegg" 547c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 2 $Flavor \ 548c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase2_objdir $llvmCore_de_phase2_installdir 549c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 2 $Flavor \ 550c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase2_objdir 551c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 2 $Flavor $llvmCore_de_phase2_installdir $dragonegg_phase2_objdir 552ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison clean_RPATH $llvmCore_de_phase2_installdir 553c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 5541adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 5558cf79f86b7861de21e76209137c6498bad26d2b6Duncan Sands # Phase 3: Build llvmCore with newly built dragonegg from phase 2. 556c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so" 557c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so" 558c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Phase 3: Building llvmCore with dragonegg" 559c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands configure_llvmCore 3 $Flavor \ 560c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase3_objdir $llvmCore_de_phase3_installdir 561c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_llvmCore 3 $Flavor \ 562c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands $llvmCore_de_phase3_objdir 563c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands build_dragonegg 3 $Flavor $llvmCore_de_phase3_installdir $dragonegg_phase3_objdir 564ea8e1447d1f563f743b6b73739f4ff0912595752Arnaud A. de Grandmaison clean_RPATH $llvmCore_de_phase3_installdir 565c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 5661adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 567c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Testing: Test phase 3 568c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands c_compiler="$gcc_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so" 569c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so" 570c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with dragonegg" 571c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 3 $Flavor $llvmCore_de_phase3_objdir 572c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands 5731adc215ddcadcfaaa07a8e93f48a8f62c4561afeBill Wendling ######################################################################## 574c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Compare .o files between Phase2 and Phase3 and report which ones differ. 575c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo 576c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Comparing Phase 2 and Phase 3 files" 57719595dc4d0cb2495c37828530f04b7e47cf0837fDuncan Sands for o in `find $llvmCore_de_phase2_objdir -name '*.o'` \ 57819595dc4d0cb2495c37828530f04b7e47cf0837fDuncan Sands `find $dragonegg_phase2_objdir -name '*.o'` ; do 579c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands p3=`echo $o | sed -e 's,Phase2,Phase3,'` 580c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then 581c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "file `basename $o` differs between dragonegg phase 2 and phase 3" 582c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 583c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands done 584c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 585a854f5d6f9394212319f4e00b6396900f6e62864Bill Wendling 586c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands # Otherwise just test the core. 587c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands if [ "$do_clang" != "yes" -a "$do_dragonegg" != "yes" ]; then 588c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands echo "# Testing - built with system compiler" 589c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands test_llvmCore 1 $Flavor $llvmCore_phase1_objdir 590c1aef0884c1749a59b16ed3b5ee8b6bf67eabb8cDuncan Sands fi 591b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingdone 59264acc57b23530aee37d224f48293cb764c4290a8Bill Wendling) 2>&1 | tee $LogDir/testing.$Release-$RC.log 593b91c71299a819e2d20786b629376f119085e8b28Bill Wendling 5943c031bdef960479def2e01f28be506dcbdeb8758Bill Wendlingpackage_release 5953c031bdef960479def2e01f28be506dcbdeb8758Bill Wendling 596630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendlingset +e 597630243a8c2d40df137b64246b7ed4363962fd9b4Bill Wendling 598b91c71299a819e2d20786b629376f119085e8b28Bill Wendling# Woo hoo! 599b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingecho "### Testing Finished ###" 600d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendlingif [ "$use_gzip" = "yes" ]; then 601d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling echo "### Package: $Package.tar.gz" 602d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendlingelse 603d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendling echo "### Package: $Package.tar.xz" 604d49c8fca79093f3eaaae3ee03ada65ef258f80b8Bill Wendlingfi 605f0bf9dfc1f7755a6233e41fd6f259c4ee08a40dcDuncan Sandsecho "### Logs: $LogDir" 606b91c71299a819e2d20786b629376f119085e8b28Bill Wendlingexit 0 607