--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/toolsandutils/productionbldtools/SupplementalKits.pm Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,192 @@
+#!perl
+
+# SupplementalKits.pl
+
+# Copyright (c) 1997-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:
+#
+
+
+package SupplementalKits;
+
+
+use File::Path;
+use FindBin; # where does this script live?
+#use lib $FindBin::Bin; # use this directory for libraries, to find...
+use KitStandardLocations;
+
+
+
+my $PlatformProductToolsDir = $FindBin::Bin;
+$PlatformProductToolsDir =~ s/common/$Platform/i; # change "common" to platform name in path to tools directory
+unshift (@INC, $PlatformProductToolsDir); # add this to the @INC list of library paths
+require KitPlatformSpecific; # and read the platform-specific definitions
+require $BuildBaseName."_supplementary";
+
+my $scriptFileSupplementaryKits = "InstallSupplementaryKit.pl";
+
+
+
+# ------------------------------------- main routine -----------------------------------
+
+sub SupplementalKits()
+{
+ # set up environment & preserve old values
+ my $OutputDirWithoutDrive = $OutputDir;
+ $OutputDirWithoutDrive =~ s/^\w:(.*)$/$1/i;
+ my $oldEpocRoot = $ENV{EPOCROOT};
+ my $oldPath = $ENV{path};
+ my $oldOutputDir = $ENV{OUTPUTDIR};
+ $ENV{EPOCROOT} ="$OutputDirWithoutDrive\\techview\\";
+ $ENV{path} = "$ENV{EPOCROOT}epoc32\\tools\\;$ENV{EPOCROOT}epoc32\\gcc\\bin\\;".$ENV{path};
+ $ENV{OUTPUTDIR} = "$ProductPath\\SupplementaryProducts";
+
+
+
+ # read [emul] tag and replace it in the files
+ foreach my $package (@replaceEmulPackage)
+ {
+ replaceEmul($package);
+ }
+
+
+ # set up the source directory path for .bin packages
+ foreach my $package (@addSourcePackage)
+ {
+ addSource($package->[0], eval $package->[1]);
+ }
+
+
+ # create Supplementary products directory
+ (mkpath ($ENV{OUTPUTDIR}) or print "WARNING: Unable to create directory $ENV{OUTPUTDIR} - $!\n") if (! -d $ENV{OUTPUTDIR});
+
+
+
+ # main build procedure
+ foreach my $directory (@requiredSupplementaryKits)
+ {
+ print "** Supplemental Kit: building from $directory\n";
+ # set up the source directory path for .src packages in this product
+ chdir ("$SuppKitPath\\$directory\\pkgdef");
+ foreach my $sourcePackage (<$SuppKitPath\\$directory\\pkgdef\\com.symbian.src.*>)
+ {
+ addSource($sourcePackage, $SourceDir);
+ }
+ chdir ("$SuppKitPath\\$directory\\group");
+ system ("bldmake bldfiles");
+ system ("abld makefile");
+ system ("abld target tools");
+ }
+
+
+ # copy Supplementary Products installation script into the right directory
+ my $ProductToolsDir = $FindBin::Bin;
+ $ProductToolsDir =~ s|/|\\|g;
+ system("copy ".$ProductToolsDir."\\".$scriptFileSupplementaryKits." ".$ENV{OUTPUTDIR});
+
+
+
+ # restore environment & finish
+ $ENV{EPOCROOT} = $oldEpocRoot;
+ $ENV{path} = $oldPath;
+ $ENV{OUTPUTDIR} = $oldOutputDir;
+
+}
+
+
+
+
+# ------------------------------------- Sub procedures -----------------------------------
+
+
+# function inserts the leading directory in the src= statement
+sub addSource()
+{
+ my $pkgDefFile = $_[0] ;
+ my $srcDir = $_[1] ;
+
+
+ # read source definition file
+ open (FILE, "<$pkgDefFile") or print "WARNING: Supplementary Kits: Couldn't read file $pkgDefFile\n";
+ my @pkgList = <FILE>;
+ close(FILE);
+ unlink($pkgDefFile);
+
+ # write file with replaced src=
+ open (FILE, ">$pkgDefFile") or print "WARNING: Supplementary Kits: Couldn't write file $pkgDefFile\n";
+ foreach $line (@pkgList)
+ {
+ # insert source directory at start
+ $line =~ s|src="(\\){0,1}|src="$srcDir\\|gi;
+
+ # remove double slashes if present
+ $line =~ s|\\\\|\\|gi ;
+
+ print FILE $line ;
+ }
+ close(FILE);
+}
+
+
+
+
+# function reads [emul] tag and replaces it in the file specified as the parameter
+sub replaceEmul()
+{
+ my $emul = "" ;
+ my $pkgDefFile = $_[0] ;
+
+ # read source definition file
+ open (FILE, "<$pkgDefFile") or print "WARNING: Supplementary Kits: Couldn't read file $pkgDefFile\n";
+ my @pkgList = <FILE>;
+ close(FILE);
+
+
+ # look for definition of [emul]
+ foreach $line (@pkgList)
+ {
+ if ( $line =~ m|emul\]\">(.*?)<|i )
+ {
+ $emul = $1;
+
+ # remove [sdkroot] if present
+ if ( $emul =~ m|\[sdkroot\](.*)|i )
+ {
+ $emul = $1;
+ }
+
+ last;
+ }
+ }
+
+
+ # if [emul] not defined, enter a default
+ if ($emul EQ "")
+ {
+ $emul = "bin\\TechView";
+ }
+
+
+ # write file with replaced emul
+ open (FILE, ">$pkgDefFile") or print "WARNING: Supplementary Kits: Couldn't write file $pkgDefFile\n";
+ foreach $line (@pkgList)
+ {
+ if ($line =~ m|<item|gi)
+ {
+ $line =~ s|\[emul\]|$emul|g ;
+ }
+ print FILE $line ;
+ }
+ close(FILE);
+}