# the default.
# -compileflags Next argument specifies extra options passed to make when
# building LLVM.
+# -use-gmake Use gmake instead of the default make command to build
+# llvm and run tests.
#
# ---------------- Options to configure llvm-test ----------------------------
# -extraflags Next argument specifies extra options that are passed to
$nickname="";
$NOTEST=0;
$NORUNNINGTESTS=0;
+$MAKECMD="make";
while (scalar(@ARGV) and ($_ = $ARGV[0], /^[-+]/)) {
shift;
if (/^-norunningtests$/) { $NORUNNINGTESTS = 1; next; }
if (/^-parallel$/) { $MAKEOPTS = "$MAKEOPTS -j2 -l3.0"; next; }
if (/^-release$/) { $MAKEOPTS = "$MAKEOPTS ENABLE_OPTIMIZED=1 ".
- "OPTIMIZE_OPTION=-O2"; next; }
+ "OPTIMIZE_OPTION=-O2";
+ $BUILDTYPE="release"; next; }
if (/^-enable-llcbeta$/) { $PROGTESTOPTS .= " ENABLE_LLCBETA=1"; next; }
if (/^-disable-llc$/) { $PROGTESTOPTS .= " DISABLE_LLC=1";
$CONFIGUREARGS .= " --disable-llc_diffs"; next; }
if (/^-compileflags/) {
$MAKEOPTS = "$MAKEOPTS $ARGV[0]"; shift; next;
}
+ if (/^-use-gmake/) {
+ $MAKECMD = "gmake"; shift; next;
+ }
if (/^-extraflags/) {
$PROGTESTOPTS .= " EXTRA_FLAGS=\'$ARGV[0]\'"; shift; next;
}
$CONFIGUREARGS .= " --enable-jit";
}
-die "Must specify 0 or 3 options!" if (@ARGV != 0 and @ARGV != 3);
+
+if (@ARGV != 0 and @ARGV != 3){
+ foreach $x (@ARGV){
+ print "$x\n";
+ }
+ print "Must specify 0 or 3 options!";
+}
if (@ARGV == 3) {
$CVSRootDir = $ARGV[0];
$WebDir = $ARGV[2];
}
+if($CVSRootDir eq "" or
+ $BuildDir eq "" or
+ $WebDir eq ""){
+ die("please specify a cvs root directory, a build directory, and a ".
+ "web directory");
+ }
+
if($nickname eq ""){
die ("Please invoke NewNightlyTest.pl with command line option \"-nickname <nickname>\"");
}
+if($BUILDTYPE ne "release"){
+ $BUILDTYPE = "debug";
+}
+
##############################################################
#
#define the file names we'll use
my ($dir,$name) = @_;
chomp($dir);
if ( $VERBOSE ) { print "Changing To: $name ($dir)\n"; }
- chdir($dir) || die "Cannot change directory to: $name ($dir) ";
+ $result = chdir($dir);
+ if(!$result){
+ print "ERROR!!! Cannot change directory to: $name ($dir) because $!";
+ return false;
+ }
+ return true;
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
##############################################################
if (!$NOCHECKOUT && !$NOBUILD) {
my $EXTRAFLAGS = "--enable-spec --with-objroot=.";
- if ( $VERBOSE )
- {
+ if ( $VERBOSE ){
print "CONFIGURE STAGE:\n";
print "(time -p $NICE ./configure $CONFIGUREARGS $EXTRAFLAGS) > $BuildLog 2>&1\n";
}
system "(time -p $NICE ./configure $CONFIGUREARGS $EXTRAFLAGS) > $BuildLog 2>&1";
if ( $VERBOSE )
{
- print "BUILD STAGE:\n";
- print "(time -p $NICE make $MAKEOPTS) >> $BuildLog 2>&1\n";
+ print "BUILD STAGE:\n";
+ print "(time -p $NICE $MAKECMD $MAKEOPTS) >> $BuildLog 2>&1\n";
}
# Build the entire tree, capturing the output into $BuildLog
- system "(time -p $NICE make $MAKEOPTS) >> $BuildLog 2>&1";
+ system "(time -p $NICE $MAKECMD $MAKEOPTS) >> $BuildLog 2>&1";
}
#my $NumLibraries = scalar(grep(!/executable/, @Linked));
#my $NumObjects = `grep ']\: Compiling ' $BuildLog | wc -l` + 0;
-my $a_file_sizes="";
-my $o_file_sizes="";
-if(!$BuildError){
- ChangeDir( "$BuildDir", "Build Directory" );
- $afiles = `find . -iname '*.a' -ls`;
- $ofiles = `find . -iname '*.o' -ls`;
- @AFILES = split "\n", $afiles;
- $a_file_sizes="";
- foreach $x (@AFILES){
- $x =~ m/.+\s+.+\s+.+\s+.+\s+.+\s+.+\s+(.+)\s+.+\s+.+\s+.+\s+(.+)/;
- $a_file_sizes.="$1 $2\n";
- }
- @OFILES = split "\n", $ofiles;
- $o_file_sizes="";
- foreach $x (@OFILES){
- $x =~ m/.+\s+.+\s+.+\s+.+\s+.+\s+.+\s+(.+)\s+.+\s+.+\s+.+\s+(.+)/;
- $o_file_sizes.="$1 $2\n";
- }
-}
my $ConfigTimeU = GetRegexNum "^user", 0, "([0-9.]+)", "$BuildLog";
my $ConfigTimeS = GetRegexNum "^sys", 0, "([0-9.]+)", "$BuildLog";
$BuildStatus = "Skipped by user";
$BuildError = 1;
}
-elsif (`grep '^make[^:]*: .*Error' $BuildLog | wc -l` + 0 ||
- `grep '^make: \*\*\*.*Stop.' $BuildLog | wc -l`+0) {
+elsif (`grep '^$MAKECMD\[^:]*: .*Error' $BuildLog | wc -l` + 0 ||
+ `grep '^$MAKECMD: \*\*\*.*Stop.' $BuildLog | wc -l`+0) {
$BuildStatus = "Error: compilation aborted";
$BuildError = 1;
print "\n***ERROR BUILDING TREE\n\n";
}
if ($BuildError) { $NODEJAGNU=1; }
+my $a_file_sizes="";
+my $o_file_sizes="";
+if(!$BuildError){
+ if ( $VERBOSE ){
+ print "Organizing size of .o and .a files\n";
+ }
+ ChangeDir( "$BuildDir/llvm", "Build Directory" );
+ $afiles = `find . -iname '*.a' -ls`;
+ $ofiles = `find . -iname '*.o' -ls`;
+ @AFILES = split "\n", $afiles;
+ $a_file_sizes="";
+ foreach $x (@AFILES){
+ $x =~ m/.+\s+.+\s+.+\s+.+\s+.+\s+.+\s+(.+)\s+.+\s+.+\s+.+\s+(.+)/;
+ $a_file_sizes.="$1 $2 $BUILDTYPE\n";
+ }
+ @OFILES = split "\n", $ofiles;
+ $o_file_sizes="";
+ foreach $x (@OFILES){
+ $x =~ m/.+\s+.+\s+.+\s+.+\s+.+\s+.+\s+(.+)\s+.+\s+.+\s+.+\s+(.+)/;
+ $o_file_sizes.="$1 $2 $BUILDTYPE\n";
+ }
+}
+else{
+ $a_file_sizes="No data due to a bad build.";
+ $o_file_sizes="No data due to a bad build.";
+}
+
+
##############################################################
#
# Running dejagnu tests
if(!$NODEJAGNU) {
if($VERBOSE)
{
- print "DEJAGNU FEATURE/REGRESSION TEST STAGE:\n";
- print "(time -p make $MAKEOPTS check) > $dejagnu_output 2>&1\n";
+ print "DEJAGNU FEATURE/REGRESSION TEST STAGE:\n";
+ print "(time -p $MAKECMD $MAKEOPTS check) > $dejagnu_output 2>&1\n";
}
#Run the feature and regression tests, results are put into testrun.sum
#Full log in testrun.log
- system "(time -p make $MAKEOPTS check) > $dejagnu_output 2>&1";
+ system "(time -p $MAKECMD $MAKEOPTS check) > $dejagnu_output 2>&1";
#Copy the testrun.log and testrun.sum to our webdir
CopyFile("test/testrun.log", $DejagnuLog);
#
##############################################################
sub TestDirectory {
- my $SubDir = shift;
-
- ChangeDir( "projects/llvm-test/$SubDir", "Programs Test Subdirectory" );
-
- my $ProgramTestLog = "$Prefix-$SubDir-ProgramTest.txt";
- #my $ProgramTestLog = "$Prefix-MultiSource-ProgramTest.txt"; #CHANGE ME!
-
- # Run the programs tests... creating a report.nightly.csv file
- if (!$NOTEST) {
- print "make -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv "
- . "TEST=nightly > $ProgramTestLog 2>&1\n";
- system "make -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv "
- . "TEST=nightly > $ProgramTestLog 2>&1";
- $llcbeta_options=`make print-llcbeta-option`;
- }
+ my $SubDir = shift;
+
+ ChangeDir( "$BuildDir/llvm/projects/llvm-test/$SubDir", "Programs Test Subdirectory" ) || return ("", "");
+
+ my $ProgramTestLog = "$Prefix-$SubDir-ProgramTest.txt";
+
+ # Run the programs tests... creating a report.nightly.csv file
+ if (!$NOTEST) {
+ print "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv ".
+ "TEST=nightly > $ProgramTestLog 2>&1\n";
+ system "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv ".
+ "TEST=nightly > $ProgramTestLog 2>&1";
+ $llcbeta_options=`$MAKECMD print-llcbeta-option`;
+ }
- my $ProgramsTable;
- if (`grep '^make[^:]: .*Error' $ProgramTestLog | wc -l` + 0){
- $TestError = 1;
- $ProgramsTable="Error running test $SubDir\n";
- print "ERROR TESTING\n";
- } elsif (`grep '^make[^:]: .*No rule to make target' $ProgramTestLog | wc -l` + 0) {
- $TestError = 1;
- $ProgramsTable="Makefile error running tests $SubDir!\n";
- print "ERROR TESTING\n";
- } else {
- $TestError = 0;
+ my $ProgramsTable;
+ if (`grep '^$MAKECMD\[^:]: .*Error' $ProgramTestLog | wc -l` + 0){
+ $TestError = 1;
+ $ProgramsTable="Error running test $SubDir\n";
+ print "ERROR TESTING\n";
+ } elsif (`grep '^$MAKECMD\[^:]: .*No rule to make target' $ProgramTestLog | wc -l` + 0) {
+ $TestError = 1;
+ $ProgramsTable="Makefile error running tests $SubDir!\n";
+ print "ERROR TESTING\n";
+ } else {
+ $TestError = 0;
+ #
+ # Create a list of the tests which were run...
+ #
+ system "egrep 'TEST-(PASS|FAIL)' < $ProgramTestLog ".
+ "| sort > $Prefix-multisourceprogramstable.txt";
+ }
+ $ProgramsTable = ReadFile "report.nightly.csv";
- #
- # Create a list of the tests which were run...
- #
- system "egrep 'TEST-(PASS|FAIL)' < $ProgramTestLog "
- . "| sort > $Prefix-multisourceprogramstable.txt";
- }
- $ProgramsTable = ReadFile "report.nightly.csv";
-
- ChangeDir( "../../..", "Programs Test Parent Directory" );
- return ($ProgramsTable, $llcbeta_options);
+ ChangeDir( "../../..", "Programs Test Parent Directory" );
+ return ($ProgramsTable, $llcbeta_options);
}
-$patrickjenkins=1;
-if(!$patrickjenkins){
- if ( $VERBOSE ) {
- print "Modified Multisource Olden test stage\n";
- }
- ($MultiSourceProgramsTable, $multisource_llcbeta_options) = TestDirectory("MultiSource/");
- ChangeDir( "../../..", "Programs Test Parent Directory" );
-
-
- WriteFile "$WebDir/multisourceprogramstable.txt", $MultiSourceProgramsTable;
-}
-if (!$BuildError && $patrickjenkins) {
- if ( $VERBOSE ) {
- print "SingleSource TEST STAGE\n";
- }
- ($SingleSourceProgramsTable, $llcbeta_options) = TestDirectory("SingleSource");
- WriteFile "$Prefix-singlesourceprogramstable.txt", $SingleSourceProgramsTable;
- if ( $VERBOSE ) {
- print "MultiSource TEST STAGE\n";
- }
- ($MultiSourceProgramsTable, $llcbeta_options) = TestDirectory("MultiSource");
- WriteFile "$Prefix-multisourceprogramstable.txt", $MultiSourceProgramsTable;
- if ( ! $NOEXTERNALS ) {
+if (!$BuildError) {
if ( $VERBOSE ) {
- print "External TEST STAGE\n";
+ print "SingleSource TEST STAGE\n";
}
- ($ExternalProgramsTable, $llcbeta_options) = TestDirectory("External");
- WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable;
- system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ".
- " $Prefix-externalprogramstable.txt | sort > $Prefix-Tests.txt";
- } else {
- $ExternalProgramsTable = "External TEST STAGE SKIPPED\n";
+ ($SingleSourceProgramsTable, $llcbeta_options) = TestDirectory("SingleSource");
if ( $VERBOSE ) {
- print "External TEST STAGE SKIPPED\n";
+ print "SingleSource returned $SingleSourceProgramsTable\n";
}
- system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ".
- " | sort > $Prefix-Tests.txt";
- }
- WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable;
+ WriteFile "$Prefix-singlesourceprogramstable.txt", $SingleSourceProgramsTable;
+ if ( $VERBOSE ) {
+ print "MultiSource TEST STAGE\n";
+ }
+ ($MultiSourceProgramsTable, $llcbeta_options) = TestDirectory("MultiSource");
+ WriteFile "$Prefix-multisourceprogramstable.txt", $MultiSourceProgramsTable;
+ if ( $VERBOSE ) {
+ print "MultiSource returned $MultiSourceProgramsTable\n";
+ }
+ if ( ! $NOEXTERNALS ) {
+ if ( $VERBOSE ) {
+ print "External TEST STAGE\n";
+ }
+ ($ExternalProgramsTable, $llcbeta_options) = TestDirectory("External");
+ WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable;
+ system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ".
+ " $Prefix-externalprogramstable.txt | sort > $Prefix-Tests.txt";
+ } else {
+ $ExternalProgramsTable = "External TEST STAGE SKIPPED\n";
+ if ( $VERBOSE ) {
+ print "External TEST STAGE SKIPPED\n";
+ }
+ system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ".
+ " | sort > $Prefix-Tests.txt";
+ }
+ WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable;
}
##############################################################
"Olden Test Directory");
# Clean out previous results...
- system "$NICE make $MAKEOPTS clean > /dev/null 2>&1";
+ system "$NICE $MAKECMD $MAKEOPTS clean > /dev/null 2>&1";
# Run the nightly test in this directory, with LARGE_PROBLEM_SIZE and
# GET_STABLE_NUMBERS enabled!
- if( $VERBOSE ) { print "make -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv.out TEST=nightly " .
+ if( $VERBOSE ) { print "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv.out TEST=nightly " .
" LARGE_PROBLEM_SIZE=1 GET_STABLE_NUMBERS=1 > /dev/null 2>&1\n"; }
- system "make -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv.out TEST=nightly " .
+ system "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv.out TEST=nightly " .
" LARGE_PROBLEM_SIZE=1 GET_STABLE_NUMBERS=1 > /dev/null 2>&1";
system "cp report.nightly.csv $OldenTestsLog";
} #else {