toolsandutils/productionbldtools/SupplementalKits.pm
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /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);
+}