URL
https://opencores.org/ocsvn/socgen/socgen/trunk
Subversion Repositories socgen
[/] [socgen/] [trunk/] [tools/] [sys/] [build_generate] - Rev 135
Compare with Previous | Blame | View Log
eval 'exec `which perl` -S $0 ${1+"$@"}'if 0;#/****************************************************************************/#/* */#/* SOCGEN Design for Reuse toolset */#/* */#/* Version 1.0.0 */#/* */#/* Author(s): */#/* - John Eaton, z3qmtr45@gmail.com */#/* */#/****************************************************************************/#/* */#/* */#/* Copyright 2016 John T Eaton */#/* */#/* Licensed under the Apache License, Version 2.0 (the "License"); */#/* you may not use this file except in compliance with the License. */#/* You may obtain a copy of the License at */#/* */#/* http://www.apache.org/licenses/LICENSE-2.0 */#/* */#/* Unless required by applicable law or agreed to in writing, software */#/* distributed under the License is distributed on an "AS IS" BASIS, */#/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */#/* See the License for the specific language governing permissions and */#/* limitations under the License. */#/* */#/* */#/****************************************************************************/############################################################################# 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,"library=s" => \$library,"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 -library library_name -component component_name -version version_name ";print "\n";exit 1;}##############################################################################################################################################################my $home = cwd();my @cmd_list = ();##############################################################################################################################################################my $parser = XML::LibXML->new();my $lib_comp_sep = yp::lib::find_lib_comp_sep($vendor,$library,$component);#/*********************************************************************************************/#/ */#/ Create filelists for simulation, synthesis and linting */#/ */#/ */#/*********************************************************************************************/my @filelist = yp::lib::parse_component_brothers("$vendor","$library","$component","$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("//ipxact:componentGenerator/ipxact:name")){my($gen_name) = $i_name ->findnodes('../ipxact:name/text()')->to_literal ;my($gen_generatorExe) = $i_name ->findnodes('../ipxact:generatorExe/text()')->to_literal ;my($gen_phase) = $i_name ->findnodes('../ipxact:phase/text()')->to_literal ;my $cmd;$cmd = " -prefix $prefix -vendor $vendor -library $library -component $component -version $version ";foreach my $i_name ($spirit_component_file->findnodes("//ipxact:componentGenerator[ipxact:name/text() = '$gen_name']/ipxact:parameters/ipxact:parameter")){my($gen_param) = $i_name ->findnodes('./ipxact:value/text()')->to_literal ;my($gen_param_name) = $i_name ->findnodes('./ipxact:name/text()')->to_literal ;if ($gen_param_name eq "in_pipe") {$cmd = "$cmd <${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}/${gen_param}";}elsif($gen_param_name eq "out_pipe") {$cmd = "$cmd >${home}${prefix}/${vendor}__${library}${lib_comp_sep}${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("//ipxact:componentGenerator[ipxact:name/text() = '$gen_name']/ipxact: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";# if (system($New_cmd)) {}}}}}}@cmd_list = sys::lib::trim_sort(@cmd_list);my $cmd;my $phase;foreach my $Cmd_line (@cmd_list){( $phase,$cmd) = split( /\::/ , $Cmd_line);if (system($cmd)) {}}1
