#! /usr/sepp/bin/perl -w

############################################################
## Copyright: 2011 Integrated Sytems Laboratory, ETH Zurich
##            http://www.iis.ee.ethz.ch/~sha3
############################################################
use strict;

# v0.1 - kgf@ee.ethz.ch - Thu Aug 25 20:26:46 CEST 2011
# one attempt to compile everything

# constants
my $VER="10.0b";
my $LIB="final";
my $LOG="compile_all.log";


my @ALGS= qw| ethz_blake ethz_groestl ethz_jh ethz_keccak ethz_sha2 ethz_skein
              gmu_blake  gmu_groestl  gmu_jh  gmu_keccak  gmu_sha2  gmu_skein 
              shabziger|;

#my @ALGS= qw| ethz_blake|;
my %CNT = ("Warning" => 0,
           "Error"   => 0);



print "\n","=" x 75,"\n";
print "Starting script at: ";
print `date`;
print "=" x 75,"\n\n";
              
if (-d $LIB){
 print "Removing the Modelsim library [$LIB]\n\n";
 system ("rm -rf $LIB");
}
system ("vlib-${VER} ${LIB}");

open (LOG, "> $LOG") or die "  ERROR: Can not open log file $LOG\n";


foreach my $a (@ALGS){
 print "  Compiling [$a] \n";
 if (open (LST, "< ../../$a/sourcecode/source.list")){
   my @FILES=(LST);
   close(LST);
   
   foreach my $f(@FILES){
     chomp($f);
     print "    Compiling : $f\n";
     my @res=`vcom-${VER} -work ${LIB} -check_synthesis ../../$a/sourcecode/$f`;
     foreach my $r (@res){
       print LOG $r;
       if ($r=~/^\s*\*\* (Warning|Error)/){
         $CNT{$1}++;
         print "      ".$r 
       }
     }  

   }
 }
 else{
   print "    Error: could not access ../../$a/sourcecode/source.list\n";
 }
}              


# close teh log file 
close(LOG);

print "\nDONE!\n\n  Log file = $LOG\n\n";
print "\n","=" x 75,"\n";
if ($CNT{"Warning"} + $CNT{"Error"} gt 0 ){
   printf("RESULT: A total of %d Warning(s) and %d Error(s) were encountered\n",$CNT{"Warning"},$CNT{"Error"});
}
else {
  print "RESULT: Compilation Successful\n";
}
print "\n\n";

Generated on Tue Nov 22 15:16:34 CET 2011
Home