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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [tools/] [sys/] [build_generate] - Rev 121

Go to most recent revision | Compare with Previous | Blame | View Log

eval 'exec `which perl` -S $0 ${1+"$@"}'
   if 0;

#/**********************************************************************/
#/*                                                                    */
#/*             -------                                                */
#/*            /   SOC  \                                              */
#/*           /    GEN   \                                             */
#/*          /    TOOL    \                                            */
#/*          ==============                                            */
#/*          |            |                                            */
#/*          |____________|                                            */
#/*                                                                    */
#/*                                                                    */
#/*                                                                    */
#/*                                                                    */
#/*  Author(s):                                                        */
#/*      - John Eaton, jt_eaton@opencores.org                          */
#/*                                                                    */
#/**********************************************************************/
#/*                                                                    */
#/*    Copyright (C) <2010-2011>  <Ouabache Design Works>              */
#/*                                                                    */
#/*  This source file may be used and distributed without              */
#/*  restriction provided that this copyright statement is not         */
#/*  removed from the file and that any derivative work contains       */
#/*  the original copyright notice and the associated disclaimer.      */
#/*                                                                    */
#/*  This source file is free software; you can redistribute it        */
#/*  and/or modify it under the terms of the GNU Lesser General        */
#/*  Public License as published by the Free Software Foundation;      */
#/*  either version 2.1 of the License, or (at your option) any        */
#/*  later version.                                                    */
#/*                                                                    */
#/*  This source is distributed in the hope that it will be            */
#/*  useful, but WITHOUT ANY WARRANTY; without even the implied        */
#/*  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR           */
#/*  PURPOSE.  See the GNU Lesser General Public License for more      */
#/*  details.                                                          */
#/*                                                                    */
#/*  You should have received a copy of the GNU Lesser General         */
#/*  Public License along with this source; if not, download it        */
#/*  from http://www.opencores.org/lgpl.shtml                          */
#/*                                                                    */
#/**********************************************************************/


############################################################################
# General PERL config
############################################################################
use Getopt::Long;
use English;
use File::Basename;
use Cwd;
use XML::LibXML;
use lib './tools';
use sys::lib;
use yp::lib;


$OUTPUT_AUTOFLUSH = 1; # set autoflush of stdout to TRUE.



############################################################################
### Process the options
############################################################################

Getopt::Long::config("require_order", "prefix=-");
GetOptions("h","help",
           "prefix=s" => \$prefix,
           "vendor=s" => \$vendor,
           "project=s" => \$project,
           "component=s" => \$component,
           "version=s" => \$version
) || die "(use '$program_name -h' for help)";


##############################################################################
## Help option
##############################################################################
if ( $opt_h or $opt_help )   { print "\n build_generate -prefix /work -vendor vendor_name -project project_name -component component_name -version version_name ";
    print "\n";
    exit 1;
  }


##############################################################################
## 
##############################################################################


my $home = cwd();


#############################################################################
## 
## 
#############################################################################




print "\nGENERATE  $prefix  $vendor  $project  $component $version \n" ;


my $parser = XML::LibXML->new();

my $lib_comp_sep    = yp::lib::find_lib_comp_sep($vendor,$project);
my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact("spirit:component",$vendor,$project,$component,$version));

foreach my $view ($spirit_component_file->findnodes('//spirit:component/spirit:model/spirit:views/spirit:view')) 
       {
       my($view_name)   = $view->findnodes('./spirit:name/text()')->to_literal ;

       #/**********************************************************************/
       #/*                                                                    */
       #/*                                                                    */
       #/*                                                                    */
       #/*                                                                    */
       #/*                                                                    */
       #/**********************************************************************/
    
       foreach  my   $i_name ($spirit_component_file->findnodes("//spirit:componentGenerator/spirit:name"))
          {
          my($gen_name)            = $i_name ->findnodes('./text()')->to_literal ;
          my($gen_phase)           = $i_name ->findnodes('../spirit:phase/text()')->to_literal ;
          my($gen_apiType)         = $i_name ->findnodes('../spirit:apiType/text()')->to_literal ;
          my($gen_generatorExe)    = $i_name ->findnodes('../spirit:generatorExe/text()')->to_literal ;
          my($gen_group)           = $i_name ->findnodes('../spirit:group/text()')->to_literal ;
    
          my $cmd;   
          $cmd = 
          "${gen_generatorExe} -view $view_name -prefix $prefix -vendor $vendor -project $project -component $component -version $version  ";
    
          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}${prefix}/${vendor}__${project}${lib_comp_sep}/${component}/${gen_param}";}
             elsif($gen_param_name eq "out_pipe")    {$cmd =  "$cmd >${home}${prefix}/${vendor}__${project}${lib_comp_sep}/${component}/${gen_param}";}
             elsif($gen_param_name)                  {$cmd =  "$cmd -${gen_param_name} $gen_param ";}
             else                                    {$cmd =  "$cmd $gen_param";}
             }
             $cmd =  "${cmd}\n";

             if($gen_group)
               {
               if($gen_group eq $view_name )
                 {
                 if (system($cmd)) {}
                 }
               }
             else
               {
               if (system($cmd)) {}
               }
          }
       }
   






1

           


       














Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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