MAKE=make
fi
-projects="llvm cfe dragonegg test-suite"
+projects="llvm cfe dragonegg compiler-rt libcxx test-suite clang-tools-extra"
# Base SVN URL for the sources.
Base_url="http://llvm.org/svn/llvm-project"
do_64bit="yes"
do_debug="no"
do_asserts="no"
+do_compare="yes"
BuildDir="`pwd`"
function usage() {
echo " -disable-objc Disable ObjC build. [default: enable]"
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."
}
while [ $# -gt 0 ]; do
-test-asserts | --test-asserts )
do_asserts="yes"
;;
+ -no-compare-files | --no-compare-files )
+ do_compare="no"
+ ;;
-help | --help | -h | --h | -\? )
usage
exit 0
done
}
-# Export sources to the the build directory.
+# Export sources to the build directory.
function export_sources() {
check_valid_urls
if [ ! -h clang ]; then
ln -s ../../cfe.src clang
fi
+ cd $BuildDir/llvm.src/tools/clang/tools
+ if [ ! -h clang-tools-extra ]; then
+ ln -s ../../../../clang-tools-extra.src extra
+ fi
cd $BuildDir/llvm.src/projects
- if [ ! -h llvm-test ]; then
- ln -s ../../test-suite.src llvm-test
+ if [ ! -h test-suite ]; then
+ ln -s ../../test-suite.src test-suite
+ fi
+ if [ ! -h compiler-rt ]; then
+ ln -s ../../compiler-rt.src compiler-rt
+ fi
+ if [ ! -h libcxx ]; then
+ ln -s ../../libcxx.src libcxx
fi
cd $BuildDir
}
# Test clang
if [ "$do_clang" = "yes" ]; then
- ############################################################################
+ ########################################################################
# Phase 2: Build llvmCore with newly built clang from phase 1.
c_compiler=$llvmCore_phase1_installdir/bin/clang
cxx_compiler=$llvmCore_phase1_installdir/bin/clang++
build_llvmCore 2 $Flavor \
$llvmCore_phase2_objdir
- ############################################################################
+ ########################################################################
# Phase 3: Build llvmCore with newly built clang from phase 2.
c_compiler=$llvmCore_phase2_installdir/bin/clang
cxx_compiler=$llvmCore_phase2_installdir/bin/clang++
build_llvmCore 3 $Flavor \
$llvmCore_phase3_objdir
- ############################################################################
+ ########################################################################
# Testing: Test phase 3
echo "# Testing - built with clang"
test_llvmCore 3 $Flavor $llvmCore_phase3_objdir
- ############################################################################
- # Compare .o files between Phase2 and Phase3 and report which ones differ.
- 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"
- fi
- done
+ ########################################################################
+ # Compare .o files between Phase2 and Phase3 and report which ones
+ # differ.
+ 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"
+ fi
+ done
+ fi
fi
# Test dragonegg
cxx_compiler="$gxx_compiler"
build_dragonegg 1 $Flavor $llvmCore_phase1_installdir $dragonegg_phase1_objdir
- ############################################################################
+ ########################################################################
# Phase 2: Build llvmCore with newly built dragonegg from phase 1.
c_compiler="$gcc_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so"
cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase1_objdir/dragonegg.so"
$llvmCore_de_phase2_objdir
build_dragonegg 2 $Flavor $llvmCore_de_phase2_installdir $dragonegg_phase2_objdir
- ############################################################################
- # Phase 3: Build llvmCore with newly built clang from phase 2.
+ ########################################################################
+ # Phase 3: Build llvmCore with newly built dragonegg from phase 2.
c_compiler="$gcc_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so"
cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase2_objdir/dragonegg.so"
echo "# Phase 3: Building llvmCore with dragonegg"
$llvmCore_de_phase3_objdir
build_dragonegg 3 $Flavor $llvmCore_de_phase3_installdir $dragonegg_phase3_objdir
- ############################################################################
+ ########################################################################
# Testing: Test phase 3
c_compiler="$gcc_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so"
cxx_compiler="$gxx_compiler -fplugin=$dragonegg_phase3_objdir/dragonegg.so"
echo "# Testing - built with dragonegg"
test_llvmCore 3 $Flavor $llvmCore_de_phase3_objdir
- ############################################################################
+ ########################################################################
# Compare .o files between Phase2 and Phase3 and report which ones differ.
echo
echo "# Comparing Phase 2 and Phase 3 files"