taskswitcher/testapplications/generator/generator/generate.pl
changeset 117 c63ee96dbe5f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/testapplications/generator/generator/generate.pl	Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,162 @@
+use strict;
+use File::Find;
+
+my $appnum = shift;
+my $baseuid = 0xA000018A;
+my $baseuidstr = uid( 1 );
+my $base = `cd`;
+$base =~s/(\s+)$//; #remove linefeed from end
+my $patternbase = $base."\\pattern";
+my $globaliter = 0;
+
+generate();
+
+sub generate()
+    {
+    my $i = 0;
+    for ( $i=1; $i<=$appnum; $i++ ) 
+        {
+        $globaliter = $i;
+        createappdir($globaliter);
+        find( \&reader, $patternbase );        
+        }    
+    createpkg();
+    creategroup();
+    system "perl devide_sis.pl $appnum";
+    }
+
+sub uid
+    {
+    my $iter = shift;
+    my $uuid = $baseuid + $iter -1;
+    my $hu = sprintf '%#X',  $uuid;
+    $hu =~s/X/x/;
+    return $hu;
+    }
+
+sub reader()     
+    {
+    my $file=$_;
+	my $winpath=$File::Find::name;
+	$winpath=~s/\//\\/g;	
+	my $nefilepath = "";
+	if ( -f $file && not($winpath =~/svn/) )
+        {
+        $nefilepath = newpath( $winpath, $globaliter );
+        my $appuid = uid( $globaliter );
+        rewritefile( $winpath, $nefilepath, $globaliter, $appuid );
+        }
+    }
+    
+sub newpath()
+{
+    my $patternpath = shift;
+    my $iter = shift;
+    my $appdir = "helloworldbasic".$iter;
+    my $appbasicfilepath = "basic".$iter;
+    my $appBasicfilepath = "Basic".$iter;
+    $patternpath =~ s/basic1/$appbasicfilepath/;    
+    $patternpath =~ s/Basic1/$appBasicfilepath/;    
+    $patternpath =~ s/pattern/$appdir/;
+    return $patternpath; 
+}    
+
+sub createappdir()
+{
+   my $iter = shift;
+   my $appdir = "helloworldbasic".$iter;
+   my $src = $appdir."\\src";
+   my $inc = $appdir."\\inc";
+   my $data = $appdir."\\data";
+   my $sis = $appdir."\\sis";
+   my $group = $appdir."\\group";
+   system "mkdir $appdir";
+   system "mkdir $src";
+   system "mkdir $inc";
+   system "mkdir $data";   
+   system "mkdir $sis";  
+   system "mkdir $group";  
+}
+
+sub rewritefile()
+{
+    my $input = shift;
+    my $output = shift;
+    my $iter = shift;
+    my $uid = shift;
+    my $basic = "basic".$iter;
+    my $Basic = "Basic".$iter;
+    my $World = "World".$iter;
+    
+    open FRI, $input or die "Couldn't open $input to read";
+    binmode FRI;
+    open FWO, ">$output" or die "Couldn't open $output to write";
+    binmode FWO;
+    while( <FRI> )
+        {
+        my $line = $_;
+        $line =~ s/basic1/$basic/g;
+        $line =~ s/Basic1/$Basic/g;
+        $line =~ s/World1/$World/g;
+        $line =~ s/$baseuidstr/$uid/gi;
+        print FWO $line;
+        }
+    close FRI;
+    close FWO;
+}
+
+sub createpkg()
+{
+    system "mkdir sis";
+    open FRS, ".\\pattern\\sis\\helloworldbasic_armv5.pkg" or die "Couldn't open pkg file to read";
+    binmode FRS;
+    open FWS, ">sis\\helloworldbasic_armv5.pkg" or die "Couldn't open pkg file to write";
+    binmode FWS;
+    my @exports;
+    my $begin = 0;
+        
+    while ( <FRS> )
+        {
+        my $line = $_;
+        print FWS $line;
+        if ($line =~ /;Files/)
+            {
+            $begin = 1;
+            }
+        if ($begin == 1)
+            {
+            push(@exports, $line);
+            }    
+        }        
+    close FRS;
+    
+    for (my $i=2; $i<=$globaliter; $i++)
+        {
+        my $basic = "basic".$i;
+        my $Basic = "Basic".$i;
+        my $it = 0;
+        while (defined($exports[$it]))
+            {     
+            my $line = $exports[$it];       
+            $line =~ s/basic1/$basic/g;
+            $line =~ s/Basic1/$Basic/g;
+            print FWS $line;
+            $it++;
+            } 
+        print FWS "\r\n\r\n";    
+        }
+    close FWS;
+}   
+
+sub creategroup()
+    {
+    system "mkdir group";
+    open FWG, ">group\\bld.inf" or die "Couldn't open bld.inf file to write";
+    binmode FWG;
+    for (my $i=1; $i<=$globaliter; $i++)
+        {
+        my $path = "../helloworldbasic".$i."/group/bld.inf";
+        print FWG "\#include \"$path\"\r\n";
+        }
+    }
+    close FWG;