--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bldsystemtools/commonbldutils/abldcache.pl Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,175 @@
+#!perl
+
+# Copyright (c) 2005-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:
+#
+
+use File::Path;
+use Data::Dumper;
+
+$Data::Dumper::Deepcopy = 1;
+
+#-----------------GLOBAL VARIABLES------------------------#
+
+my $command;
+my $source;
+my $target;
+my $component;
+my $flag = 0;
+my $plats = 0;
+
+my @temp;
+my %output;
+my %project_platforms;
+my @components;
+
+my $platform;
+
+#--------------------------------------------------------#
+
+#Check that correct number of arguments were specified by the user
+#If not then print out Usage instructions to the command window
+Usage() if (@ARGV!=1);
+
+$platform = $ARGV[0];
+
+my %logfiles = (
+ "GT2.log" => "M:\\logs\\$platform\\GT2.log",
+ "TV2.log" => "M:\\logs\\$platform\\TV2.log",
+ "JAVA2.log" => "M:\\logs\\$platform\\java2.log",
+ );
+
+foreach my $file (keys %logfiles)
+{
+ $plats = 0;
+
+ open(LOGFILE, $logfiles{$file}) || warn "Warning: can't open $logfiles{$file} : $!";
+
+ while(my $line = <LOGFILE>)
+ {
+ my $exists = 0;
+ if($line =~ m%^=== Stage=.*\s==\s(.*)\n%i)
+ {
+ $component = "$1 ";
+ }
+
+ if($line =~ m%-- abld -what\s(.*)%i)
+ {
+ foreach my $entry (@components)
+ {
+ $exists = 1 if($entry eq $component);
+ }
+
+ push @components, $component if ($exists == 0);
+
+ $command = "$1 -what";
+ $flag = 1;
+ @temp =();
+ }
+
+ if(($line =~ m%Chdir (M:)?(.*)%i)&&($flag == 1))
+ {
+ $source = "$2 ";
+ $target = $component.$source.$command;
+ }
+
+ if(($line =~ m%^(\\EPOC32\\.*)\n%i)&&($flag == 1))
+ {
+ push @temp, $1;
+ }
+ # Match ..\..\..\..\..\..\..\..\..\..\epoc32
+ if(($line =~ m%^((\.\.\\){1,}EPOC32\\.*)\n%i)&&($flag == 1))
+ {
+ push @temp, $1;
+ }
+
+ if(($line =~ m%^\+\+\+ HiRes End%i)&&($flag == 1))
+ {
+ $flag = 0;
+ my @files = @temp;
+ $output{$target} = \@files;
+ }
+
+ if($line =~ m%^project platforms%i)
+ {
+ $plats = 1;
+ next
+ }
+
+ if($plats == 1)
+ {
+ $plats = 0;
+ $line =~ s/^\s+//;
+ $line =~ s/\n$//;
+ my @platforms = split(/ /, $line);
+ $project_platforms{$component} = \@platforms;
+ }
+ }
+}
+
+foreach my $comp (@components)
+{
+ $comp =~ s/\s$//;
+ my %abldcache;
+ my %self;
+ my $path;
+
+ foreach my $hashelement (keys %output)
+ {
+ $hashelement =~ /(.*)\s(\\src.*?)\s/;
+ my $temp_element = $1;
+ if ($temp_element eq $comp)
+ {
+ $path = $2;
+ $path =~ s/\\src/src/;
+ my $newkey = $hashelement;
+ $newkey =~ s/.*\s\\src/\\src/;
+ $newkey = "'".$newkey."'";
+ $abldcache{$newkey} = $output{$hashelement};
+ $abldcache{"'plats'"} = $project_platforms{$comp." "};
+ }
+ }
+
+ $self{abldcache} = \%abldcache;
+
+ mkpath ("M:\\abldcache\\$path", 0, 0744);
+
+ open OUTFILE, "> M:\\abldcache\\$path\\cache"
+ or die "ERROR: Can't open M:\\abldcache\\$path\\cache for output\n$!";
+
+ print OUTFILE Data::Dumper->Dump(per_key('$self->{abldcache}->', $self{abldcache})), "\n";
+
+ close OUTFILE;
+}
+
+sub per_key
+{
+ my($name, $href) = @_;
+ my @hkeys = keys %$href;
+ ([@$href{@hkeys}], [map {"$name\{$_}"} @hkeys])
+}
+
+
+sub Usage
+ {
+ print <<USAGE_EOF;
+
+USAGE
+----------
+perl abldcache <platform>
+
+USAGE_EOF
+
+ exit 1;
+ }
\ No newline at end of file