--- 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";
-}
-