build/tools/gencmd.pl
branchRCL_3
changeset 25 28f63f2a6ccb
parent 16 e541da0d3b0d
--- a/build/tools/gencmd.pl	Wed Apr 28 13:55:34 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:  
-#    Generate xml that can give input for symbian tbs build system 
-#
-# ============================================================================
-#  Name     : gencmd.pl
-#  Part of  : Generate cmd file from input file
-#  Origin   : S60 2.0,NMP
-#  Created  : Tue Oct 6 11:32:47 2003
-#  Version  : 1.0
-#  Description: 
-#    Generate xml that can give input for symbian tbs build system 
-#	
-#	
-# structure of input file: 
-# <[build]>         open specific build tag, not required, multiply allowed ( like <[build]><[build1]> )
-#   [build] is given with parameter -b 
-#   if [build] not match with given -b parameter, all lines inside this tag will ignore
-# <\>               close specific build tag
-#
-# <#[name]>         open task block
-#  cd \             specify directory where followed lines will be launch
-#  command.cmd      command that will launch in above directory. command can be whatever (perl, cmd, exe...)
-#  cd \temp         redefine directory where followed lines will be launch
-#  command2.cmd     command that will launch in above directory. command can be whatever (perl, cmd, exe...)
-# <\#>              close task block, close also specific build tag if open
-#
-# <parallel>        open parallel block, all task blocks that located inside same parallel block will be run parallel in tbs
-# <\parallel>       close parallel block, close also task block and specific build tag
-#
-# comment (\\,#) and empty lines ingnore 
-#
-# example:
-#
-# <parallel>                        1st parallel block
-# <#commonengine>                   first task
-# cd \S60\commonengine\group       
-# call bldmake bldfiles -k          command that will lauch 1st state
-# call abld export -k               command that will lauch 2nd state
-# <\#>
-#  
-# <#bldvariant>                     second task
-# <S60_3_1>                         specify directory for 'S60_3_1' build
-# cd \S60\misc\release\bldvariant\Series_60_3_1_elaf\group
-# <\>
-# <S60_3_2><S60_3_3>                specify directory for 'S60_3_2' and 'S60_3_3' build
-# cd \S60\misc\release\bldvariant\elaf\group
-# <\>
-# call bldmake bldfiles -k          command that will lauch 1st state
-# call abld export -k               command that will lauch 2nd state
-# call abld export -w               command that will lauch 3rd state
-# <\#>
-# <\parallel>
-#
-# <parallel>                        2nd parallel block
-# <#build_platforms>
-# cd \s60\build_platforms\group
-# call bldmake bldfiles -k          command that will lauch 4th state
-# call abld export -k               command that will lauch 5th state
-# <\#>
-# <\parallel>
-#
-
-use strict;
-use File::Find;     # for finding
-use File::Basename; # for fileparse
-use Getopt::Long;
-
-#
-# Variables...
-#
-my $version = "V1.0";
-my $inputfile; # input filename
-my $build; # S60_2X
-my $outputfile; # input filename
-my $component = "";
-my ($cmdfile, $xmlfile, $product_name);
-my $skip = 0;
-my ($c, $i, $j);
-
-if ( !GetOptions('i=s' => \$inputfile, 'b=s' => \$build, 'o=s' =>\$outputfile))
-{
-	&error_msg("Invalid arguments\n");
-}
-
-#
-# Hello text
-#
-hello();
-
-$build =~ tr/A-Z/a-z/; #Change all capitals to small    
-  
-open (INPUT,"$inputfile") or &error_msg("Cannot open $inputfile");
-  open (XML_FILE,">$outputfile") or &error_msg("Cannot open $outputfile");
-  pre_xml(\*XML_FILE);
-  gen_xml_file(\*XML_FILE);
-  post_xml(\*XML_FILE);
-  close XML_FILE;
-close INPUT;
-
-sub gen_xml_file {
-  my ($outputfile)=@_;
-  my $parallel = 0;
-  my $component_name = "";
-  my $component_path = "\\";
-  my @component_command;
-  my %component_parallel;
-  my $id = 1;
-  my $stage = 1;
-  
-  while (<INPUT>) {
-    next if (/^\/\//); # Skip comment lines
-    next if (/^#/); # Skip comment lines
-    next if (/^ *$/); # Skip empty lines 
-  
-  #  $_ =~ s/\//\\/g;    #Change / marks to \
-    $_ =~ tr/A-Z/a-z/; #Change all capitals to small    
-  
-    chomp; #Remove line feed and carriage return  
- 
-# parallel block opened, components should build parallel 
-    if (/^<parallel>/){
-      $parallel = 1;
-      next;
-    }
-# parallel block closed, write components that can build parallel to output file
-    if (/^<\\parallel>/){
-      my $loop = 1;
-      my $line = 0;
-      while ($loop) {
-        my $found = 0;
-        foreach $c (keys %component_parallel)
-        {
-          my @temp;
-#            print "  $c : $i = $component_parallel{$c}[$i] : \n";
-            @temp=keys %{$component_parallel{$c}[$line]};
-            $j = "";
-            $j = @temp[0];
-            if ($j ne "") {
-              print $outputfile "\t\t<Execute ID=\"$id\" Stage=\"$stage\" Component=\"$c\" Cwd=\"$j\" CommandLine=\"$component_parallel{$c}[$line]{$j}\"/>\n";
-#              print "   \;command path = $j:command = $component_parallel{$c}[$line]{$j}\;\n";
-              $found = 1;
-              $id++;
-            }
-        }
-        $line++;
-
-        if (!$found) {
-          $loop = 0;
-        }
-        else {
-                  $stage++;
-
-        }
-      }
-
-# clear variables
-      %component_parallel =();
-      $component_path = "\\";
-      $parallel = 0;
-      next;
-    }
-# component block end
-    if (/^<\\#/){
-    	if (!$skip) {
-    	  $component_parallel{$component_name}=[@component_command];
-  		}
-  	  $skip = 0;
-  	  @component_command = ();
-  	  next;
-  	}
-# block end
-    if (/^<\\>/) {
-  	  $skip = 0;
-  		next;
-    }
-    
-    next if ($skip);
-    if (!/^</) {
-# get path for xml
-      if (/^cd /){
-      	$component_path = $_;
-      	$component_path =~ s/^cd //;
-    	  next;
-    	}
-    	my $rec = {};
-# store command to @component_command variable
-    	$rec->{$component_path} = $_;
-      push (@component_command, $rec);
-  		next;
-    }
-    
-# get component name for xml
-    if (/^<\#/){
-    	$component_name = $_;
-    	$component_name =~ s/^<\#//;
-    	$component_name =~ s/>\Z//;
-  	  next;
-  	}
-  	
-# check build version, if not match skip next lines
-    elsif (!/<$build>/){
-    	$skip = 1;
-    	next;
-  	}
-  }
-}
-
-
-sub hello
-{
-print "\nThis is gencmd.pl Version $version (C)Nokia Corporation 2002-2003\n"; 
-}
-
-sub error_msg ($){
-  my($ErrorMsg);
-  ($ErrorMsg)=@_;
-  my $given_command=$0;
-  $given_command =~ s/.*\\(\w+\.\w+)$/$1/;
-  print "";
-  print "\n";
-  print "Error: $ErrorMsg \n\n";
-  print "Usage: \n$given_command -b <build_name> -i <input file name> -o <output file>\n";
-  print "Example:  \n$given_command bldmefirst.txt -b S60_3_1 -i data\bldmelast.txt -o \epoc32\tools\s60Build\bldmelast.xml\n";
-  print "Example2: \n$given_command bldmefirst.txt -b S60_3_1_western -i data\variant_build.txt -o \epoc32\tools\s60Build\variant_build_western.xml\n";
-  print "\n";  
-  die "\n";    
-}
-
-# write pre information to output file
-sub pre_xml {
-  my ($outputfile)=@_;
-  print $outputfile "<?xml version=\"1.0\"?>\n";
-  print $outputfile "\t<!DOCTYPE Build  [\n";
-  print $outputfile "\t<!ELEMENT Product (Commands)>\n";
-  print $outputfile "\t<!ATTLIST Product name CDATA #REQUIRED>\n";
-  print $outputfile "\t<!ELEMENT Commands (Execute+ | SetEnv*)>\n";
-  print $outputfile "\t<!ELEMENT Execute EMPTY>\n";
-  print $outputfile "\t<!ATTLIST Execute ID CDATA #REQUIRED>\n";
-  print $outputfile "\t<!ATTLIST Execute Stage CDATA #REQUIRED>\n";
-  print $outputfile "\t<!ATTLIST Execute Component CDATA #REQUIRED>\n";
-  print $outputfile "\t<!ATTLIST Execute Cwd CDATA #REQUIRED>\n";
-  print $outputfile "\t<!ATTLIST Execute CommandLine CDATA #REQUIRED>\n";
-  print $outputfile "\t<!ELEMENT SetEnv EMPTY>\n";
-  print $outputfile "\t<!ATTLIST SetEnv Order ID #REQUIRED>\n";
-  print $outputfile "\t<!ATTLIST SetEnv Name CDATA #REQUIRED>\n";
-  print $outputfile "\t<!ATTLIST SetEnv Value CDATA #REQUIRED>\n";
-  print $outputfile "]>\n\n";
-  print $outputfile "<Product Name=\"$product_name\">\n";
-  print $outputfile "\t<Commands>\n";
-  print $outputfile "\t\t<!--Set Env-->\n";
-  print $outputfile "\t\t<SetEnv Order=\"1\" Name=\"EPOCROOT\" Value=\"\\\"/>\n";
-  print $outputfile "\t\t<SetEnv Order=\"2\" Name=\"PATH\" Value=\"\\epoc32\\gcc\\bin\;\\epoc32\\tools\;\%PATH\%\"/>\n\n";
-}
-
-# write post information to output file
-sub post_xml {
-  my ($outputfile)=@_;
-  print $outputfile "\t</Commands>\n";
-  print $outputfile "</Product>\n";
-}
-