taskswitcher/testapplications/generator/generator/generate.pl
changeset 117 c63ee96dbe5f
equal deleted inserted replaced
115:3ab5c078b490 117:c63ee96dbe5f
       
     1 use strict;
       
     2 use File::Find;
       
     3 
       
     4 my $appnum = shift;
       
     5 my $baseuid = 0xA000018A;
       
     6 my $baseuidstr = uid( 1 );
       
     7 my $base = `cd`;
       
     8 $base =~s/(\s+)$//; #remove linefeed from end
       
     9 my $patternbase = $base."\\pattern";
       
    10 my $globaliter = 0;
       
    11 
       
    12 generate();
       
    13 
       
    14 sub generate()
       
    15     {
       
    16     my $i = 0;
       
    17     for ( $i=1; $i<=$appnum; $i++ ) 
       
    18         {
       
    19         $globaliter = $i;
       
    20         createappdir($globaliter);
       
    21         find( \&reader, $patternbase );        
       
    22         }    
       
    23     createpkg();
       
    24     creategroup();
       
    25     system "perl devide_sis.pl $appnum";
       
    26     }
       
    27 
       
    28 sub uid
       
    29     {
       
    30     my $iter = shift;
       
    31     my $uuid = $baseuid + $iter -1;
       
    32     my $hu = sprintf '%#X',  $uuid;
       
    33     $hu =~s/X/x/;
       
    34     return $hu;
       
    35     }
       
    36 
       
    37 sub reader()     
       
    38     {
       
    39     my $file=$_;
       
    40 	my $winpath=$File::Find::name;
       
    41 	$winpath=~s/\//\\/g;	
       
    42 	my $nefilepath = "";
       
    43 	if ( -f $file && not($winpath =~/svn/) )
       
    44         {
       
    45         $nefilepath = newpath( $winpath, $globaliter );
       
    46         my $appuid = uid( $globaliter );
       
    47         rewritefile( $winpath, $nefilepath, $globaliter, $appuid );
       
    48         }
       
    49     }
       
    50     
       
    51 sub newpath()
       
    52 {
       
    53     my $patternpath = shift;
       
    54     my $iter = shift;
       
    55     my $appdir = "helloworldbasic".$iter;
       
    56     my $appbasicfilepath = "basic".$iter;
       
    57     my $appBasicfilepath = "Basic".$iter;
       
    58     $patternpath =~ s/basic1/$appbasicfilepath/;    
       
    59     $patternpath =~ s/Basic1/$appBasicfilepath/;    
       
    60     $patternpath =~ s/pattern/$appdir/;
       
    61     return $patternpath; 
       
    62 }    
       
    63 
       
    64 sub createappdir()
       
    65 {
       
    66    my $iter = shift;
       
    67    my $appdir = "helloworldbasic".$iter;
       
    68    my $src = $appdir."\\src";
       
    69    my $inc = $appdir."\\inc";
       
    70    my $data = $appdir."\\data";
       
    71    my $sis = $appdir."\\sis";
       
    72    my $group = $appdir."\\group";
       
    73    system "mkdir $appdir";
       
    74    system "mkdir $src";
       
    75    system "mkdir $inc";
       
    76    system "mkdir $data";   
       
    77    system "mkdir $sis";  
       
    78    system "mkdir $group";  
       
    79 }
       
    80 
       
    81 sub rewritefile()
       
    82 {
       
    83     my $input = shift;
       
    84     my $output = shift;
       
    85     my $iter = shift;
       
    86     my $uid = shift;
       
    87     my $basic = "basic".$iter;
       
    88     my $Basic = "Basic".$iter;
       
    89     my $World = "World".$iter;
       
    90     
       
    91     open FRI, $input or die "Couldn't open $input to read";
       
    92     binmode FRI;
       
    93     open FWO, ">$output" or die "Couldn't open $output to write";
       
    94     binmode FWO;
       
    95     while( <FRI> )
       
    96         {
       
    97         my $line = $_;
       
    98         $line =~ s/basic1/$basic/g;
       
    99         $line =~ s/Basic1/$Basic/g;
       
   100         $line =~ s/World1/$World/g;
       
   101         $line =~ s/$baseuidstr/$uid/gi;
       
   102         print FWO $line;
       
   103         }
       
   104     close FRI;
       
   105     close FWO;
       
   106 }
       
   107 
       
   108 sub createpkg()
       
   109 {
       
   110     system "mkdir sis";
       
   111     open FRS, ".\\pattern\\sis\\helloworldbasic_armv5.pkg" or die "Couldn't open pkg file to read";
       
   112     binmode FRS;
       
   113     open FWS, ">sis\\helloworldbasic_armv5.pkg" or die "Couldn't open pkg file to write";
       
   114     binmode FWS;
       
   115     my @exports;
       
   116     my $begin = 0;
       
   117         
       
   118     while ( <FRS> )
       
   119         {
       
   120         my $line = $_;
       
   121         print FWS $line;
       
   122         if ($line =~ /;Files/)
       
   123             {
       
   124             $begin = 1;
       
   125             }
       
   126         if ($begin == 1)
       
   127             {
       
   128             push(@exports, $line);
       
   129             }    
       
   130         }        
       
   131     close FRS;
       
   132     
       
   133     for (my $i=2; $i<=$globaliter; $i++)
       
   134         {
       
   135         my $basic = "basic".$i;
       
   136         my $Basic = "Basic".$i;
       
   137         my $it = 0;
       
   138         while (defined($exports[$it]))
       
   139             {     
       
   140             my $line = $exports[$it];       
       
   141             $line =~ s/basic1/$basic/g;
       
   142             $line =~ s/Basic1/$Basic/g;
       
   143             print FWS $line;
       
   144             $it++;
       
   145             } 
       
   146         print FWS "\r\n\r\n";    
       
   147         }
       
   148     close FWS;
       
   149 }   
       
   150 
       
   151 sub creategroup()
       
   152     {
       
   153     system "mkdir group";
       
   154     open FWG, ">group\\bld.inf" or die "Couldn't open bld.inf file to write";
       
   155     binmode FWG;
       
   156     for (my $i=1; $i<=$globaliter; $i++)
       
   157         {
       
   158         my $path = "../helloworldbasic".$i."/group/bld.inf";
       
   159         print FWG "\#include \"$path\"\r\n";
       
   160         }
       
   161     }
       
   162     close FWG;