OpenCores
URL https://opencores.org/ocsvn/socgen/socgen/trunk

Subversion Repositories socgen

[/] [socgen/] [trunk/] [tools/] [sys/] [build_sw_master] - Diff between revs 131 and 133

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 131 Rev 133
Line 53... Line 53...
use Cwd;
use Cwd;
use XML::LibXML;
use XML::LibXML;
use lib './tools';
use lib './tools';
use sys::lib;
use sys::lib;
use yp::lib;
use yp::lib;
 
use Parallel::ForkManager;
 
 
 
 
$OUTPUT_AUTOFLUSH = 1; # set autoflush of stdout to TRUE.
$OUTPUT_AUTOFLUSH = 1; # set autoflush of stdout to TRUE.
 
 
 
 
############################################################################
############################################################################
Line 96... Line 98...
my $home = cwd();
my $home = cwd();
 
 
my $prefix   = yp::lib::get_workspace();
my $prefix   = yp::lib::get_workspace();
   $prefix   = "/${prefix}";
   $prefix   = "/${prefix}";
 
 
 
my $number_of_cpus   = yp::lib::get_number_of_cpus();
 
 
my @vendors = yp::lib::find_vendors();
my @vendors = yp::lib::find_vendors();
 
 
foreach my $vendor (@vendors)
foreach my $vendor (@vendors)
 {
 {
         print "$vendor   \n ";
         print "$vendor   \n ";
Line 149... Line 153...
      my $codeSet_name        = $i_name ->findnodes('./text()')->to_literal ;
      my $codeSet_name        = $i_name ->findnodes('./text()')->to_literal ;
      my $codeSet_vendor      = $i_name ->findnodes('../socgen:vendor/text()')->to_literal ;
      my $codeSet_vendor      = $i_name ->findnodes('../socgen:vendor/text()')->to_literal ;
      my $codeSet_library     = $i_name ->findnodes('../socgen:library/text()')->to_literal ;
      my $codeSet_library     = $i_name ->findnodes('../socgen:library/text()')->to_literal ;
      my $codeSet_component   = $i_name ->findnodes('../socgen:component/text()')->to_literal ;
      my $codeSet_component   = $i_name ->findnodes('../socgen:component/text()')->to_literal ;
      my $codeSet_version     = $i_name ->findnodes('../socgen:version/text()')->to_literal ;
      my $codeSet_version     = $i_name ->findnodes('../socgen:version/text()')->to_literal ;
 
      my $codeSet_prefix      = "${prefix}/${vendor}__${library}/children";
 
 
 
 
 
      print "$codeSet_name    $codeSet_prefix           $codeSet_vendor $codeSet_library $codeSet_component  $codeSet_version  \n ";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
##############################################################################
 
##
 
##############################################################################
 
 
 
 
 
 
 
my @cmd_list  = ();
 
 
 
 
 
 
 
 
 
my $lib_comp_sep    = yp::lib::find_lib_comp_sep($codeSet_vendor,$codeSet_library,$codeSet_component);
 
 
 
 
 
 
 
 
 
#/*********************************************************************************************/
 
#/                                                                                            */
 
#/  Create filelists for simulation, synthesis and linting                                    */
 
#/                                                                                            */
 
#/                                                                                            */
 
#/*********************************************************************************************/
 
 
 
my  @filelist =       yp::lib::parse_component_brothers("$codeSet_vendor","$codeSet_library","$codeSet_component","$codeSet_version");
 
 
 
foreach $line (@filelist)
 
   {
 
   $_ = $line;
 
   if(/::(\S+)::(\S+)::(\S+)::(\S+)::/)
 
     {
 
     $new_library        = $2;
 
     $new_component      = $3;
 
     $new_vendor         = $1;
 
     $new_version        = $4;
 
 
 
 
 
     my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact_component($new_vendor,$new_library,$new_component,$new_version));
 
 
 
     foreach  my   $i_name ($spirit_component_file->findnodes("//spirit:componentGenerator/spirit:name"))
 
       {
 
       my($gen_name)            = $i_name ->findnodes('../spirit:name/text()')->to_literal ;
 
       my($gen_generatorExe)    = $i_name ->findnodes('../spirit:generatorExe/text()')->to_literal ;
 
       my($gen_phase)           = $i_name ->findnodes('../spirit:phase/text()')->to_literal ;
 
 
      print "$codeSet_name  $codeSet_vendor $codeSet_library $codeSet_component  $codeSet_version  \n ";
       my $cmd;
 
       $cmd = "   -prefix $codeSet_prefix -vendor $codeSet_vendor     -library $codeSet_library  -component $codeSet_component -version $codeSet_version  ";
 
 
     $cmd ="./tools/sys/build_generate -prefix ${prefix}/${vendor}__${library}/children  -vendor ${codeSet_vendor} -library ${codeSet_library}   -component  ${codeSet_component}  -version ${codeSet_version}    \n";
       foreach  my   $i_name ($spirit_component_file->findnodes("//spirit:componentGenerator[spirit:name/text() = '$gen_name']/spirit:parameters/spirit:parameter"))
 
          {
 
          my($gen_param)             = $i_name ->findnodes('./spirit:value/text()')->to_literal ;
 
          my($gen_param_name)        = $i_name ->findnodes('./spirit:name/text()')->to_literal ;
 
 
 
          if   ($gen_param_name eq "in_pipe")     {$cmd =  "$cmd <${home}${codeSet_prefix}/${codeSet_vendor}__${codeSet_library}${lib_comp_sep}${codeSet_component}/${gen_param}";}
 
          elsif($gen_param_name eq "out_pipe")    {$cmd =  "$cmd >${home}${codeSet_prefix}/${codeSet_vendor}__${codeSet_library}${lib_comp_sep}${codeSet_component}/${gen_param}";}
 
          elsif($gen_param_name)                  {$cmd =  "$cmd -${gen_param_name} $gen_param ";}
 
          else                                    {$cmd =  "$cmd $gen_param";}
 
          }
 
 
 
       foreach  my   $i_name ($spirit_component_file->findnodes("//spirit:componentGenerator[spirit:name/text() = '$gen_name']/spirit:vendorExtensions/socgen:envIdentifier"))
 
          {
 
          my($gen_envidentifier)  = $i_name ->findnodes('./text()')->to_literal ;
 
 
 
          my $New_cmd =  "  ${gen_generatorExe}  -envidentifier $gen_envidentifier      ${cmd}\n";
 
          if(${gen_generatorExe} )
 
              {
 
              push  @cmd_list, "${gen_phase}::$New_cmd";
 
              }
 
          }
 
       }
 
     }
 
   }
 
 
 
 
 
 
 
               my $manager = new Parallel::ForkManager( $number_of_cpus );
 
               @cmd_list      = sys::lib::trim_sort(@cmd_list);
 
               my $cmd;
 
               my $phase;
 
 
 
               foreach my $Cmd_line (@cmd_list)
 
                   {
 
                   ( $phase,$cmd) = split( /\::/ , $Cmd_line);
 
                   $manager->start and next;
     if (system($cmd)) {}
     if (system($cmd)) {}
 
                   $manager->finish;
 
                   }
 
 
 
               $manager->wait_all_children;
 
               print "Software COMPLETE \n";
      }
      }
 
 
}
}
 
 
}
}
Line 166... Line 266...
 
 
 
 
   return(0);
   return(0);
   }
   }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.