Skip to content
Snippets Groups Projects
Commit 0caeee07 authored by Hans Wennborg's avatar Hans Wennborg
Browse files

Switch the release script to build with CMake by default (PR21561)

It retains the possibility to use the autoconf build with a
command-line option ('-use-autoconf'), and uses that by default on Darwin since
compiler-rt requires it on that platform.

This commit also removes the "Release-64" flavour and related logic. The script
would previously do two builds unless the '-no-64bit' flag was passed, but on
my machine and from those I asked this always ended up producing two 64-bit builds,
causing much confusion.

It also removes the -build-triple option, which caused the --build= flag to
get passed to ./configure. This was presumably intended for cross-compiling,
but none of the release testers use it. If someone does want to pass it,
they can use '-configure-flags --build=foo' instead.

Differential Revision: http://reviews.llvm.org/D10715

llvm-svn: 242331
parent 449208d9
No related branches found
No related tags found
No related merge requests found
......@@ -29,12 +29,12 @@ RC=""
Triple=""
use_gzip="no"
do_checkout="yes"
do_64bit="yes"
do_debug="no"
do_asserts="no"
do_compare="yes"
BuildDir="`pwd`"
BuildTriple=""
use_autoconf="no"
ExtraConfigureFlags=""
function usage() {
echo "usage: `basename $0` -release X.Y.Z -rc NUM [OPTIONS]"
......@@ -46,15 +46,19 @@ function usage() {
echo " -j NUM Number of compile jobs to run. [default: 3]"
echo " -build-dir DIR Directory to perform testing in. [default: pwd]"
echo " -no-checkout Don't checkout the sources from SVN."
echo " -no-64bit Don't test the 64-bit version. [default: yes]"
echo " -test-debug Test the debug build. [default: no]"
echo " -test-asserts Test with asserts on. [default: no]"
echo " -no-compare-files Don't test that phase 2 and 3 files are identical."
echo " -use-gzip Use gzip instead of xz."
echo " -build-triple TRIPLE The build triple for this machine"
echo " [default: use config.guess]"
echo " -configure-flags FLAGS Extra flags to pass to the configure step."
echo " -use-autoconf Use autoconf instead of cmake"
}
if [ `uname -s` = "Darwin" ]; then
# compiler-rt doesn't yet build with CMake on Darwin.
use_autoconf="yes"
fi
while [ $# -gt 0 ]; do
case $1 in
-release | --release )
......@@ -73,9 +77,9 @@ while [ $# -gt 0 ]; do
shift
Triple="$1"
;;
-build-triple | --build-triple )
-configure-flags | --configure-flags )
shift
BuildTriple="$1"
ExtraConfigureFlags="$1"
;;
-j* )
NumJobs="`echo $1 | sed -e 's,-j\([0-9]*\),\1,g'`"
......@@ -91,9 +95,6 @@ while [ $# -gt 0 ]; do
-no-checkout | --no-checkout )
do_checkout="no"
;;
-no-64bit | --no-64bit )
do_64bit="no"
;;
-test-debug | --test-debug )
do_debug="yes"
;;
......@@ -106,6 +107,9 @@ while [ $# -gt 0 ]; do
-use-gzip | --use-gzip )
use_gzip="yes"
;;
-use-autoconf | --use-autoconf )
use_autoconf="yes"
;;
-help | --help | -h | --h | -\? )
usage
exit 0
......@@ -233,17 +237,20 @@ function configure_llvmCore() {
ObjDir="$3"
case $Flavor in
Release | Release-64 )
Optimized="yes"
Assertions="no"
Release )
BuildType="Release"
Assertions="OFF"
ConfigureFlags="--enable-optimized --disable-assertions"
;;
Release+Asserts )
Optimized="yes"
Assertions="yes"
BuildType="Release"
Assertions="ON"
ConfigureFlags="--enable-optimized --enable-assertions"
;;
Debug )
Optimized="no"
Assertions="yes"
BuildType="Debug"
Assertions="ON"
ConfigureFlags="--disable-optimized --enable-assertions"
;;
* )
echo "# Invalid flavor '$Flavor'"
......@@ -255,22 +262,33 @@ function configure_llvmCore() {
echo "# Using C compiler: $c_compiler"
echo "# Using C++ compiler: $cxx_compiler"
build_triple_option="${BuildTriple:+--build=$BuildTriple}"
cd $ObjDir
echo "# Configuring llvm $Release-$RC $Flavor"
echo "# $BuildDir/llvm.src/configure \
--enable-optimized=$Optimized \
--enable-assertions=$Assertions \
--disable-timestamps \
$build_triple_option"
env CC="$c_compiler" CXX="$cxx_compiler" \
$BuildDir/llvm.src/configure \
--enable-optimized=$Optimized \
--enable-assertions=$Assertions \
--disable-timestamps \
$build_triple_option \
2>&1 | tee $LogDir/llvm.configure-Phase$Phase-$Flavor.log
if [ "$use_autoconf" = "yes" ]; then
echo "#" env CC="$c_compiler" CXX="$cxx_compiler" \
$BuildDir/llvm.src/configure \
$ConfigureFlags --disable-timestamps $ExtraConfigureFlags \
2>&1 | tee $LogDir/llvm.configure-Phase$Phase-$Flavor.log
env CC="$c_compiler" CXX="$cxx_compiler" \
$BuildDir/llvm.src/configure \
$ConfigureFlags --disable-timestamps $ExtraConfigureFlags \
2>&1 | tee $LogDir/llvm.configure-Phase$Phase-$Flavor.log
else
echo "#" env CC="$c_compiler" CXX="$cxx_compiler" \
cmake -G "Unix Makefiles" \
-DCMAKE_BUILD_TYPE=$BuildType -DLLVM_ENABLE_ASSERTIONS=$Assertions \
-DLLVM_ENABLE_TIMESTAMPS=OFF -DLLVM_CONFIGTIME="(timestamp not enabled)" \
$ExtraConfigureFlags $BuildDir/llvm.src \
2>&1 | tee $LogDir/llvm.configure-Phase$Phase-$Flavor.log
env CC="$c_compiler" CXX="$cxx_compiler" \
cmake -G "Unix Makefiles" \
-DCMAKE_BUILD_TYPE=$BuildType -DLLVM_ENABLE_ASSERTIONS=$Assertions \
-DLLVM_ENABLE_TIMESTAMPS=OFF -DLLVM_CONFIGTIME="(timestamp not enabled)" \
$ExtraConfigureFlags $BuildDir/llvm.src \
2>&1 | tee $LogDir/llvm.configure-Phase$Phase-$Flavor.log
fi
cd $BuildDir
}
......@@ -279,16 +297,11 @@ function build_llvmCore() {
Flavor="$2"
ObjDir="$3"
DestDir="$4"
ExtraOpts=""
if [ "$Flavor" = "Release-64" ]; then
ExtraOpts="EXTRA_OPTIONS=-m64"
fi
cd $ObjDir
echo "# Compiling llvm $Release-$RC $Flavor"
echo "# ${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts"
${MAKE} -j $NumJobs VERBOSE=1 $ExtraOpts \
echo "# ${MAKE} -j $NumJobs VERBOSE=1"
${MAKE} -j $NumJobs VERBOSE=1 \
2>&1 | tee $LogDir/llvm.make-Phase$Phase-$Flavor.log
echo "# Installing llvm $Release-$RC $Flavor"
......@@ -305,10 +318,15 @@ function test_llvmCore() {
ObjDir="$3"
cd $ObjDir
${MAKE} -k check-all \
${MAKE} -j $NumJobs -k check-all \
2>&1 | tee $LogDir/llvm.check-Phase$Phase-$Flavor.log
${MAKE} -k unittests \
2>&1 | tee $LogDir/llvm.unittests-Phase$Phase-$Flavor.log
if [ "$use_autoconf" = "yes" ]; then
# In the cmake build, unit tests are run as part of check-all.
${MAKE} -k unittests \
2>&1 | tee $LogDir/llvm.unittests-Phase$Phase-$Flavor.log
fi
cd $BuildDir
}
......@@ -362,9 +380,6 @@ fi
if [ "$do_asserts" = "yes" ]; then
Flavors="$Flavors Release+Asserts"
fi
if [ "$do_64bit" = "yes" ]; then
Flavors="$Flavors Release-64"
fi
for Flavor in $Flavors ; do
echo ""
......@@ -446,10 +461,13 @@ for Flavor in $Flavors ; do
if [ "$do_compare" = "yes" ]; then
echo
echo "# Comparing Phase 2 and Phase 3 files"
for o in `find $llvmCore_phase2_objdir -name '*.o'` ; do
p3=`echo $o | sed -e 's,Phase2,Phase3,'`
if ! cmp --ignore-initial=16 $o $p3 > /dev/null 2>&1 ; then
echo "file `basename $o` differs between phase 2 and phase 3"
for p2 in `find $llvmCore_phase2_objdir -name '*.o'` ; do
p3=`echo $p2 | sed -e 's,Phase2,Phase3,'`
# Substitute 'Phase2' for 'Phase3' in the Phase 2 object file in
# case there are build paths in the debug info.
if ! cmp --ignore-initial=16 <(sed -e 's,Phase2,Phase3,g' $p2) $p3 \
> /dev/null 2>&1 ; then
echo "file `basename $p2` differs between phase 2 and phase 3"
fi
done
fi
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment