201043 default
authorhgs
Tue, 02 Nov 2010 19:23:22 +0530
changeset 79 564bc7b7ad27
parent 72 403e7f6ed6c5
201043
compressionlibs/ziplib/engineering/SGL.GT0334.401 Unit Test Specification zLib.doc
compressionlibs/ziplib/engineering/SGL.GT0334.402 Unit Test Specification EZlib2.doc
compressionlibs/ziplib/engineering/SGL.GT0334.403 Performance Test Specification ezlib.dll and ezip.dll.doc
compressionlibs/ziplib/engineering/SGL.GT0334.404 Manual Stress Test Spec Performance And Backward Compatibility.doc
compressionlibs/ziplib/engineering/SGL.GT0334.405 Decompress Test Specification.doc
compressionlibs/ziplib/engineering/SGL.GT0334.406 Basic Functionality Test Specification PC Libraries.doc
compressionlibs/ziplib/engineering/SGL.GT0334.407 Backward Compatibility Test Specification EZlib2.doc
compressionlibs/ziplib/test/data/pctools/BigSize.doc
compressionlibs/ziplib/test/data/tef/SmallSize.doc
doc/s60boostlibdoc.chm
doc/s60opencdoc.chm
genericservices/mimerecognitionfw/tdata/Word.doc
genericservices/syslibsdocs/SGL.TS0017.003_Base_Services_Functional_Specification.doc
genericservices/syslibsdocs/SGL.TS0021.015_TextI18n_Functional_Specification.doc
genericservices/syslibsdocs/SGL.TS0027.418_Persistent_Data_Services_Functional_Specification.doc
internal/boost/genatsmodules.bat
internal/boost/libxxx_atstemplatexxx_exemodule_blr_hw_component.xml
internal/boost/libxxx_atstemplatexxx_exemodule_blr_winsspd_component.xml
internal/boost/releasenote/Boost_ReleaseNotes.doc
internal/boost/testsession.xml
internal/gcce/eabi/gcce-libu.def
internal/gcce/group/bld.inf
internal/gcce/group/gcce-lib.mmp
internal/gcce/group/gcce-load.mmp
internal/gcce/group/gcce-validate.mmp
internal/gcce/group/gcce_gcce-load_module_blr_hw_component.xml
internal/gcce/group/gcce_gcce-validate_module_blr_hw_component.xml
internal/gcce/group/genatsmodules.bat
internal/gcce/inc/result_log.h
internal/gcce/src/gcce-lib.cpp
internal/gcce/src/gcce-load.cpp
internal/gcce/src/gcce-validate.cpp
internal/group/bld.inf
internal/install/mobileruntime_all_testapps_common.pkg
internal/releasenote/MRT_ReleaseNotes.doc
internal/s60_tracking.xls
internal/twsdcnfrm/group/bld.inf
internal/twsdcnfrm/group/twsdcnfrm.mmp
internal/twsdcnfrm/src/twsdcnfrm.cpp
lowlevellibsandfws/apputils/engineering/features/CClientMessage Design Document v0.1.doc
lowlevellibsandfws/apputils/engineering/features/SGL.GT0334.049 BAFL System Utils Test Specification.doc
lowlevellibsandfws/apputils/engineering/features/SGL.GT0334.116 BAFL Activity Manager Test Specification.doc
lowlevellibsandfws/apputils/engineering/features/SGL.TS0017.203 BAFL Test Specification.doc
lowlevellibsandfws/apputils/engineering/features/SGL.TS0017.322 BAFL System Sound Design.doc
lowlevellibsandfws/apputils/engineering/features/SGL.TS0017.323 BAFL Backup Design.doc
lowlevellibsandfws/apputils/engineering/features/SGL.TS0017.325 BAFL Test How To FAQ.doc
lowlevellibsandfws/apputils/engineering/misc/sys_sounds_func_spec.doc
lowlevellibsandfws/apputils/engineering/stringpool/StringPoolDesign.doc
lowlevellibsandfws/genericusabilitylib/engineering/SGL.GT0461.304.PREQ2177 Test Specification.doc
lowlevellibsandfws/genericusabilitylib/engineering/SGL.TS0017.387 EUserHl Uid Allocations.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0219.155 PREQ806 Design Document.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.103 PREQ967 Comp Int Test Spec.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.201 PREQ967 Design Document.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.217 PREQ1192 Component Design Document.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.227 CR0526 design document.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.228 System Libraries CR0629 Design.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0292.107 CR0759 Design Document v1-0.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0292.509 CR0759 ECOM Component Test Spec.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0304.111 PREQ1480 Design Document v1-0.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0304.112 System Libraries CR0902 Design v1.0.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0304.114 Disable Scanning on Specific Drives Design v1.0.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0329.105 EC043 ECOM Interface Extensions Design Document.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0329.218 EC043 ECOM Interface Extensions Test Specification.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0334.024 CR1182 Reduce ECOM Custom Resolver Load Time Design Document.doc
lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0334.411 CR1182 Test Specification.doc
lowlevellibsandfws/pluginfw/engineering/SGL.TS0017.131 ECOM Uid Allocations.doc
lowlevellibsandfws/pluginfw/engineering/SGL.TS0017.132 ECom Testability How To FAQ.doc
ofdbus/doc/s60Dbusdoc.chm
ofdbus/tsrc/releasenote/DBus_ReleaseNotes.doc
ssl/internal/genatsmodules.bat
ssl/internal/group/bld.inf
ssl/internal/testframework.ini
ssl/internal/testsession.xml
ssl/tsrc/crypto_test/group/crypto_test.mmp
ssl/tsrc/crypto_test/src/crypto_test.cpp
ssl/tsrc/crypto_test/src/crypto_testBlocks.cpp
stdcpp/doc/s60stdcppdoc.chm
stdcpp/install/stdcpp_stub.SIS
stdcpp/install/stdcpp_stub.pkg
stdcpp/internal/genatsmodules.bat
stdcpp/internal/group/bld.inf
stdcpp/internal/install/libstdcpp_manual_tests.pkg
stdcpp/internal/libxxx_atstemplatexxx_exemodule_blr_hw_component.xml
stdcpp/internal/libxxx_atstemplatexxx_exemodule_blr_winsspd_component.xml
stdcpp/internal/libxxx_atstemplatexxx_module_blr_hw_component.xml
stdcpp/internal/libxxx_atstemplatexxx_module_blr_winsspd_component.xml
stdcpp/internal/readme.txt
stdcpp/internal/testframework.ini
stdcpp/tsrc/BC/apps/tiostreams/data/docs/basicfilebuf.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/basicistream.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/example.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/filebuf.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/fpos_state.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/fstream.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/istream.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/ostream.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/streambuf.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/wfstream.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/wifstream.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/wistream.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/wostream.txt
stdcpp/tsrc/BC/apps/tiostreams/data/docs/wstreambuf.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/basicfilebuf.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/basicistream.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/example.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/filebuf.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/fpos_state.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/fstream.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/istream.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/ostream.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/streambuf.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/wfstream.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/wifstream.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/wistream.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/wostream.txt
stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/wstreambuf.txt
stdcpp/tsrc/Stdcpp_test/doc/fstream1_input.txt
stdcpp/tsrc/Stdcpp_test/doc/infile_auto.txt
stdcpp/tsrc/Stdcpp_test/doc/infile_manual.txt
stdcpp/tsrc/Stdcpp_test/doc/nextperm1_good.txt
stdcpp/tsrc/Stdcpp_test/doc/nextperm2_good.txt
stdcpp/tsrc/Stdcpp_test/doc/ostmit_good.txt
stdcpp/tsrc/Stdcpp_test/doc/seek.txt
stdlibs/install/openc_liblogger_stub.pkg
stdlibs/install/openc_liblogger_stub.sis
stdlibs/libcrypt/doc/crypt.3
stdlibs/libcrypt/doc/encrypt.3
stdlibs/libcrypt/doc/setkey.3
utilitylibraries/libutils/doc/s60LibUtilitydoc.chm
Binary file compressionlibs/ziplib/engineering/SGL.GT0334.401 Unit Test Specification zLib.doc has changed
Binary file compressionlibs/ziplib/engineering/SGL.GT0334.402 Unit Test Specification EZlib2.doc has changed
Binary file compressionlibs/ziplib/engineering/SGL.GT0334.403 Performance Test Specification ezlib.dll and ezip.dll.doc has changed
Binary file compressionlibs/ziplib/engineering/SGL.GT0334.404 Manual Stress Test Spec Performance And Backward Compatibility.doc has changed
Binary file compressionlibs/ziplib/engineering/SGL.GT0334.405 Decompress Test Specification.doc has changed
Binary file compressionlibs/ziplib/engineering/SGL.GT0334.406 Basic Functionality Test Specification PC Libraries.doc has changed
Binary file compressionlibs/ziplib/engineering/SGL.GT0334.407 Backward Compatibility Test Specification EZlib2.doc has changed
Binary file compressionlibs/ziplib/test/data/pctools/BigSize.doc has changed
Binary file compressionlibs/ziplib/test/data/tef/SmallSize.doc has changed
Binary file doc/s60boostlibdoc.chm has changed
Binary file doc/s60opencdoc.chm has changed
Binary file genericservices/mimerecognitionfw/tdata/Word.doc has changed
Binary file genericservices/syslibsdocs/SGL.TS0017.003_Base_Services_Functional_Specification.doc has changed
Binary file genericservices/syslibsdocs/SGL.TS0021.015_TextI18n_Functional_Specification.doc has changed
Binary file genericservices/syslibsdocs/SGL.TS0027.418_Persistent_Data_Services_Functional_Specification.doc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/boost/genatsmodules.bat	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,2726 @@
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+rem Redistribution and use in source and binary forms, with or without 
+rem modification, are permitted provided that the following conditions are met:
+
+rem Redistributions of source code must retain the above copyright notice, this 
+rem list of conditions and the following disclaimer.
+rem Redistributions in binary form must reproduce the above copyright notice, 
+rem this list of conditions and the following disclaimer in the documentation 
+rem and/or other materials provided with the distribution.
+rem Neither the name of Nokia Corporation nor the names of its contributors 
+rem may be used to endorse or promote products derived from this software 
+rem without specific prior written permission.
+
+rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+rem AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+rem IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+rem DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+rem FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+rem DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+rem SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+rem CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+rem OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+rem
+rem Description:      
+rem
+@perl -x GenATSModules.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 
+@goto end
+
+#!perl
+use strict;
+use File::Find;
+use File::Copy;
+use Cwd;
+use File::Basename;
+
+
+my $target = "winsspd";
+my $suite;
+my $install = "no";
+my $session = "no";
+my $combinedSession = "no";
+my $sdkversion="";
+my $noXmlsGenList = "play_new";
+my @AllModuleList = ();
+
+my %DirHash;
+
+my $sendEmail = "no";
+my $rootDrive = substr(getcwd(), 0,2);
+my $templateRoot = getcwd();
+my	$ATSRoot = getcwd()."\\ATSINPUT";
+
+if($ENV{'ATS_SETUP'}  ne "")
+{
+ $sendEmail = "yes";
+ $rootDrive = $ENV{'ATS_INDRIVE'};
+ $templateRoot = $ENV{'ATS_TEMPLATEROOT'};
+ $ATSRoot = $ENV{'ATS_ATSOUTDRIVE'};
+}
+
+
+if(scalar @ARGV ==0 || $ARGV[0] =~ /[\-\\\/][h\?]/ || $ARGV[0] =~ /help/ )
+{
+	print <<EOHelp;
+genatsmodules.bat - hardcoded script to generate ATSINPUT folders for mobileruntime and ngi projects	
+Usage:
+	genatsmodules.bat
+		Create ATSINPUT for the default testsuite based on 
+		location it is executed from place in stdlibs/internal 
+		and run and it generates ATSINPUT for stdlibs
+		similiarly place it in ssl/internal or glib/internal or 
+    ngi/internal and run to generate  ATSINPUT for ssl, glib  
+    and ngi respectively	
+  
+  genatsmodules [libname]
+			where libname can be stdlibs, ssl, glib, etc. Creates 
+			ats test drop for given library. Valid from any internal
+			folder of mobileruntime.
+			
+  
+  genatsmodules ngi
+			create ngi testsuite. Valid inside ngi/internal only
+			
+genatsmodules play_new
+			create play_new testsuite. Valid inside play_new/internal only
+				
+	
+      
+	genatsmodules ltp
+			create ltp testsuite. Valid inside stdlibs/internal only
+	
+	genatsmodules lsb
+			create lsb testsuite. Valid inside stdlibs/internal only
+			
+	genatsmodules stdcpp
+			create stdcpp testsuite. Valid inside stdcpp/internal only
+			
+	genatsmodules [libname] install 
+		 where libname can be stdlibs, ssl, glib, ltp, lsb to create a 
+		 ATSINPUT where the dependent mobileruntime libraries are also 
+		 copied and used (It copies the dependent libraries using the 
+		 ATS component files)
+		
+	genatsmodules session [libname] [target] 		
+		where libname is any of the standard libs as shown above and 
+		target can be winsspd, winscw, scarfe, zeus etc. to create 
+		session files for scarfe, winsspd etc. 
+		
+genatsmodules session combined [target] 				
+      will look at the existing ATSINPUT(which can have any 
+      combination of created components and create a combined 
+      session file. This way you get increased flexibility in 
+      the libraries you choose to combine into a single session 
+      file. If the target is a hardware target(that is not winsspd
+      or winscw), the script will first attempt to find a target 
+      specific component file and if not found, the generic hw 
+      component file. 
+	
+
+	Note:
+	ATSINPUT creation is a 2 stage process. First we create 
+	the components and then we run (for example) 
+	"genatsmodules session stdlibs winscw" and 
+	"genatsmodules session stdlibs scarfe" to create the 
+	session files.
+EOHelp
+		exit();
+}
+my $do_armv5 = 1;
+my $do_winscw = 1;
+
+if(scalar @ARGV == 1)
+{
+	if($ARGV[0] eq "session")
+	{
+		die("parameter session must be followed by libname and target platform");
+	}
+	else
+	{
+		$suite = $ARGV[0];
+	}
+}
+elsif(scalar @ARGV == 2)
+{
+	if($ARGV[0] eq  "session")
+	{
+		die("parameter session must be followed by libname and target platform");
+	}
+	elsif($ARGV[1] eq "install")
+	{
+		$suite = $ARGV[0];
+		$install = "yes";
+	}
+	elsif($ARGV[1] eq "armv5")
+	{
+		$do_winscw = 0;
+	}
+	elsif($ARGV[1] eq "winscw")
+	{
+		$do_armv5 = 0; 
+	}
+	else
+	{
+		die("second parameter after target platform $ARGV[0] can only be \"install\" ");
+	}
+}
+elsif(scalar @ARGV == 3)
+{
+		if($ARGV[0] ne "session")
+		{
+			die("invalid combination of parameters. Program expected 1st parameter to be \"session\" ");
+		}
+		else
+		{
+			$session = "yes";
+			$suite = $ARGV[1];
+			$target = $ARGV[2];
+	
+			if($suite eq "combined")
+			{		
+				$combinedSession = "yes";
+	  	}
+			
+		}
+}
+elsif(scalar @ARGV == 4)
+{
+		if($ARGV[0] ne "session")
+		{
+			die("invalid combination of parameters. Program expected 1st parameter to be \"session\" ");
+		}
+		else
+		{
+			$session = "yes";
+			$suite = $ARGV[1];
+			$target = $ARGV[2];
+			$sdkversion = $ARGV[3];
+			if($suite eq "combined")
+			{		
+				$combinedSession = "yes";
+	  	}
+		}
+}
+else
+{
+		die("program recieved too many parameters!");
+}#end of commandline processing
+
+
+	
+if( 0 )
+{
+	die("Please run the script from the appropriate internal folder in the mobileruntime /omerta project!!");
+}
+else
+{
+
+	 my $srcPrefix = getcwd();
+	 $srcPrefix =~ /(.*)internal.*/;
+	 $srcPrefix = $1;
+	 if(rindex($templateRoot, "stdlibs") != -1)
+	 {
+	 	$srcPrefix =~ /(.*)stdlibs.*/;
+	 	$srcPrefix = $1;
+	 	
+	 	if($suite eq "glib")
+	 	{
+	 		$templateRoot = $srcPrefix."/glib/internal/";
+	 	}
+	 	elsif($suite eq "ssl")
+	 	{
+	 		$templateRoot = $srcPrefix."/ssl/internal/";
+	 	}
+	 	elsif($suite eq "ngi" && $session ne "yes")
+	 	{
+	 		print "ngi atsinput creation not supported from mobileruntime\n";
+	 		exit();
+	 	}
+	 }
+	 
+	if(rindex($templateRoot, "glib") != -1)
+	{
+		$suite = "glib";
+	}
+	elsif(rindex($templateRoot, "ssl") != -1)
+	{
+		$suite = "ssl";
+	}
+	elsif(rindex($templateRoot, "ngi") != -1)
+	{
+		$suite = "ngi";
+	}
+}
+
+
+my $optsGroupPath = $templateRoot."/ts/ltp/opts/group/";
+#$optsGroupPath = getcwd()."/ts/ltp/opts/group/";
+my $ltpPath =$templateRoot."/ts/ltp/";
+my $stdcppPath =$templateRoot."/testapps/stlport/";
+my @stdexeList = ("boost","testapps");
+#my $gnuPath =getcwd()."/testapps/gnu/";
+#my $tstdcppPath =getcwd()."/testapps/tstdcpp/";
+
+
+my @generatedModules;
+my %cfglocation;
+
+my $TDIR = "\\internal\\testapps\\";
+
+my @libcModules = ( "libc_loc_blr",  "libc_time_blr", "libc_db_blr","tctype", "tifioctls", "tinet",
+                      "tlibcwchar", "tlink", "tmkfifo", "tmmap", "tmsgqueue",
+		      "tnetdb", "tpipe","tregex", "tsemaphore", "tshm","tsocket" ,
+		      "tstdio", "tstdlib", "tstring", "tsyscalls",
+		      "tsyssim", "twctype", "tselect", "tsysunistd", "twideapis", "twopen", "twchar",
+		      "twcharapi",
+               );
+
+my @libdlModules = ("tlibdl");
+my @libmModules = ("libm_double_blr", "libm_float_blr","libm_ldouble_blr");
+
+
+my @pthreadModules = ( "testcondbroadcast", "testconddestroy", "testcondinit", "testcondsignal", "testcondtimedwait", "testcondwait",
+"tmutex", "tpthread", "testpthreadonce", "testsemclose", "testsemdestroy", "testsemgetvalue", "testseminit", "testsemopen", "testsempost",
+"testsemtimedwait", "testsemtrywait", "testsemunlink", "testsemwait");
+
+
+my @stdliblist = ( "libc", "libpthread", "libdl", "libm", "libz", "libcrypt");
+my @dllList = ("backend.dll", "libc.dll", "LibCIpcClient.dll", "LibCIpcServer.exe", "libdl.dll", "libm.dll", "libpthread.dll", "libcrypt.dll", "libz.dll");
+
+
+my @stdcpplist = (
+  		#		 ["fstream1_input.txt", "stlport_fstream", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  			#	 ["nextperm1_good.txt", "stlport_nextprm", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				# ["nextperm2_good.txt", "stlport_nextprm", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 #["ostmit_good.txt", "stlport_ostmit", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 #["seek.txt", "stlport_seek", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  			#	 ["test.txt", "platsectest6", "/../internal/testapps/doc/", "/General/", "C:\\resource"],
+  			# ["test.txt", "platsectest11", "/../internal/testapps/doc/", "/General/", "C:\\sys"],
+);
+
+my @gliblist = (
+  				 ["1.gmarkup", "markup_test", "/epoc32/winscw/c/", "/General/", "C:"],
+   				 ["1.gmarkup", "markup-test", "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["iochannel-test-infile", "iochannel_test",  "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["iochannel-test-infile", "iochannel-test",  "/epoc32/winscw/c/", "/General/", "C:"],
+#  				 ["casemap.bin",  "unicode-caseconv",  "/epoc32/winscw/c/", "/General/", "C:"],
+#  				 ["casefold.bin", "unicode-caseconv",  "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["utf8.txt", "unicode-encoding","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["casecollate.txt", "unicode-collate","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["utf8_hindi.txt", "tutf8","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["scanfile.txt", "tscanner","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["test.txt", "dir_test","/epoc32/winscw/c/temp/tmp/", "/General/", "C:\\temp\\tmp"],
+  				 ["NormalizationTest.txt", "unicode-normalize","/epoc32/winscw/c/", "/General/", "C:"],
+  				 
+  				 ["helloworld.exe", "spawn_test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["helloworld.exe", "spawn_test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  				 ["libmoduletestplugin_a.dll", "module-test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["libmoduletestplugin_a.dll", "module-test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  				 ["libmoduletestplugin_b.dll", "module-test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["libmoduletestplugin_b.dll", "module-test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  			  				 
+  				 );
+  				 
+my @ngilist = (
+           ["Test.txt", "ngi_sa_runtimetester", "/EPOC32/winscw/c/Private/10202be9/", "/General/", ""],
+  				 ["sa_input_repository.txt", "shared","/EPOC32/armv5/c/TestFramework/", "/armv5_urel/", ""],
+  				 ["sa_input_repository.txt", "shared","/EPOC32/winscw/c/TestFramework/", "/winscw_udeb/", ""],
+  				 ["audiomixingfiles.ini", "ngi_sa_audiomixing","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+  				 ["sa_camera_supported.ini", "ngi_sa_camera","/EPOC32/armv5/c/TestFramework/", "/general/", ""],
+  				 ["sa_clip.ini", "ngi_sa_clip","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+  				 ["devicecapabilitiesdata.ini", "ngi_sa_devicecapabilities","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+   				 ["highlevelaudiofiles.ini", "ngi_sa_highlevelaudio","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+					 ["lowlevelaudiofiles.ini", "ngi_sa_lowlevelaudio","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+					 ["runtimedata.ini", "ngi_sa_runtimetester","/EPOC32/winscw/c/TestFramework/", "/general/", ""],						
+					 ["sa_stream.ini", "ngi_sa_stream","/EPOC32/winscw/c/TestFramework/", "/general/", ""],						
+					 #["*", "ngi_sa_videoplayback","/../graphics/video/internal/sa_videoplayback/data/", "/general/", ""],
+					 ["test.*", "ngi_sa_images","/Epoc32/winscw/c/Data/", "/general/", ""]
+					);
+
+  				 
+
+
+my $validexpansions = "all stdlibs combined";
+my $validLibraries = "ltp opts lsb glib ssl ngi pcts stdcpp gcce libc-locale play_new phall boost";
+if(rindex($validexpansions, $suite)== -1 && rindex($validLibraries, $suite) == -1)
+{
+	die("$suite is not a valid library. Valid options are $validexpansions $validLibraries");
+}
+
+my $dontStrip = 1;
+my	@liblist;
+if($suite eq "all")
+{
+		@liblist = split " ", $validLibraries;
+		@liblist = (@liblist, @stdliblist);
+		
+}#suite all
+elsif($suite eq "ltp")
+{
+	 @liblist = ("ltp", "opts");
+}
+elsif($suite eq "stdlibs")
+{
+		@liblist = @stdliblist;
+}
+elsif($suite eq "ssl")
+{
+	@liblist = ("libcrypto", "libssl");
+}
+else
+{
+		@liblist = ("$suite");
+}
+
+#	foreach my $l(@liblist)
+#	{
+#			print "$l was there\n";
+#	}
+
+
+if($combinedSession eq "yes")
+{
+	GenerateSessionFile("combined", $target,"combined");
+	exit();
+}
+
+if($session eq "yes")
+{
+	my $file = $templateRoot."/testsession.xml";
+	opendir(DIRHANDLE, $ATSRoot) || die("Please try to create Session files only after ATSINPUT/components has been created!");
+	closedir(DIRHANDLE);
+	$dontStrip = 1;
+	
+	if($suite eq "stdlibs")
+	{
+		#my $dst = $ATSRoot."/$suite"."_testsession.xml";
+		#copy($file, $dst);
+		GenerateSessionFile("combined",$target,$suite);
+		exit();
+	}
+	elsif($suite eq "ssl")
+	{
+		my @componentFiles = GetSslXmls();
+		GenerateSessionFile("combined",$target,$suite,\@componentFiles);
+		exit();
+	}
+	else
+	{
+		@generatedModules = GenGenModules($suite);
+		my @componentFiles = GetXmls($suite);
+		GenerateSessionFile("combined",$target,$suite,\@componentFiles);
+		exit();
+	}
+	foreach my $lib(@liblist)
+	{          
+			@generatedModules = GenGenModules($lib);
+			if(scalar @generatedModules != 0)
+			{
+				#print "Generating for $lib\n";
+				GenerateSessionFile($lib, $target,$lib);
+			}
+	}
+	
+	#@generatedModules = GetAllModules();
+	#if(scalar @generatedModules != 0)
+	#{
+	#		GenerateSessionFile("combined",$target, "combined");
+	#}
+	exit();
+}#session generation code
+
+
+if ($suite eq "ltp" || $suite eq "all")
+{
+	my @ltpModules = GetLtpModules();
+	@generatedModules = @ltpModules;
+	DoGen("ltp", ".dll");
+	CopyLtpCfg("ltp");
+	
+	
+	my @saved = @dllList;
+	@dllList = ("ltplib.dll");
+	CopySharedDlls("ltp", \@dllList);
+	TransformXmls("ltp","shared");
+	@dllList = @saved;
+	
+	@generatedModules = GetCompiledModules($optsGroupPath."/bld.inf");
+	DoGen("opts",".dll");
+
+}
+if ($suite eq "glib")
+{
+	my $bldfile = $templateRoot."/testapps/group/bld.inf";
+	my @glibModules = GetCompiledModules($bldfile);
+	@generatedModules = @glibModules;
+	DoGen("glib",".exe");
+	my $gDataRef = \@gliblist;
+	CopyArbitDatFiles("glib",$gDataRef);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList;
+		my @glib2dllList = ("glibbackend.dll", "Libgobject.dll", "libgmodule.dll", "libgthread.dll",
+                "libglib.dll");
+                
+   my  @glib1List = ( "libgobject.dll", "libgmodule.dll", "libgthread.dll",  "libglib.dll", );
+  @dllList = @glib2dllList;
+  CopySharedDlls("glib",\@dllList);     	
+  TransformXmls("glib", "shared");
+   	
+		@dllList = @saved;
+	}#if install
+}#glib
+
+if ($suite eq "phall")
+{
+	my $bldfile = getcwd()."/group/bld.inf";
+	my @hallModules = GetCompiledModules($bldfile);
+	@generatedModules = @hallModules;
+	DoGen($suite,".exe");
+	#my $gDataRef = \@gliblist;
+	#CopyArbitDatFiles("glib",$gDataRef);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList;
+                
+   my  @phallList = ( "libstdcpp.dll" );
+   @dllList = @phallList;
+   CopySharedDlls($suite,\@dllList);     	
+   TransformXmls($suite, "shared");
+   @dllList = @saved;
+   exit;
+	}#if install
+}#phall
+
+if ($suite eq "ssl")
+{
+	my $stripStatus = $dontStrip;
+	$dontStrip = 0;
+	GenCryptoTest();
+	if($install eq "yes")
+	{
+		@dllList = (@dllList, "libcrypto.dll", "libssl.dll");   
+	}#if install
+	$dontStrip = $stripStatus;
+}#ssl
+
+if($suite eq "ngi")
+{
+
+	GenNgiTest();
+	CopyNgiXmls();
+	CopyArbitDatFiles("",\@ngilist);
+
+}
+
+if($suite eq "play_new")
+{
+	my @play_newModules = ("fonttestmodule", "messagingtestmodule","locationtestmodule", "alertstestmodule", 
+	"libxmlstiff","ngisvgtestmodule");
+	@generatedModules = @play_newModules;
+	DoGen("play_new",".dll");
+	
+	 my @list = (
+  				 			 ["*.cfg", "fonttestmodule", "/../fonts/internal/testmodules/fonttestmodule/group/","/General/", ""],
+	 				 			 ["*.xml", "fonttestmodule", "/../fonts/internal/testmodules/fonttestmodule/group/","/", ""],
+	 				 			 
+	 				 			 ["*.cfg", "messagingtestmodule", "/../ngimessaging/internal/testmodules/messagingtestmodule/group/","/General/", ""],
+	 				 			 ["*.xml", "messagingtestmodule", "/../ngimessaging/internal/testmodules/messagingtestmodule/group/","/", ""],
+	 				 			 ["*", "messagingtestmodule", "/EPOC32/winscw/c/messagingtestmodule/","/General/", ""],
+	 				 			 
+	 				 			 ["*.cfg", "locationtestmodule", "/../ngilocation/internal/testmodules/locationtestmodule/group/","/General/", ""],
+	 				 			 ["*.xml", "locationtestmodule", "/../ngilocation/internal/testmodules/locationtestmodule/group/","/", ""],
+	 				 			 
+	 				 			 ["*.cfg", "alertstestmodule", "/../ngialerts/internal/testmodules/alertstestmodule/group/","/General/", ""],
+								 ["*.xml", "alertstestmodule", "/../ngialerts/internal/testmodules/alertstestmodule/group/","/", ""],	 				 			 
+								 ["vertigo.wav", "alertstestmodule", "/Epoc32/winscw/c/alertstestmodule/","/General/", ""],	 				 			 	 				 			 
+	 		
+	 			 			  ["*.cfg", "libxmlstiff", "/../libxmlpp/internal/group/","/General/", ""],
+	 		 	 			  ["*.xml", "libxmlstiff", "/../libxmlpp/internal/group/","/", ""],
+	 		 	 			  ["*.*", "libxmlstiff", "/../libxmlpp/internal/data/","/General/", ""],
+	 		 	 			  
+	 		 	 			  ["*.cfg", "ngisvgtestmodule", "/../ngisvg/internal/testmodules/ngisvgtestmodule/group/","/General/", ""],
+   		 	 			  ["*.xml", "ngisvgtestmodule", "/../ngisvg/internal/testmodules/ngisvgtestmodule/group/","/", ""],
+	 		 	 			  ["*.*", "ngisvgtestmodule", "/epoc32/winscw/c/ngisvgtest/","/General/", ""],
+	 				 			 
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("play_new",$bDataRef);  				 
+	if($install eq "yes")
+	{
+		@generatedModules = GenGenModules("play_new");
+		my @saved = @dllList;
+		my @playList = (
+"ngifonts.dll",
+"ngimessaging.dll",
+"ngisvg.dll",
+"ngilocation.dll",
+"ngialerts.dll",
+"libstdcpp.dll",
+"libxmlpp.dll",
+"FeedsLibXml2xmlpp.dll");
+       @dllList = @playList;
+		CopySharedDlls("play_new",\@dllList);     
+	  TransformXmls("play_new", "shared");
+		@dllList = @saved;
+
+	}#end install
+
+
+}
+
+if($suite eq "boost")
+{
+	#@generatedModules = GetstdcppModules();
+	#DoGen("stdcpp",".dll");
+	CopyLtpCfg("boost");
+	
+	my $bldfile = getcwd()."/filelist.txt";
+	#@generatedModules = GetCompiledModules($bldfile);
+	
+	recurse("testapps");
+	
+	@generatedModules = @AllModuleList;
+	
+	DoGen("boost",".exe");
+	
+	#my @saved = @dllList;
+#	@dllList = ("stdcxxtestengine.dll");
+#	CopySharedDlls("stdcpp", \@dllList);
+#	TransformXmls("stdcpp","shared");
+#	@dllList = @saved;
+	
+	CopyArbitDatFiles("stdcpp",\@stdcpplist);
+	
+	if($install eq "yes")
+	{
+		@generatedModules = GenGenModules("boost");
+		#my @saved = @dllList;
+		#my @cppList = ("libstdcpp.dll");
+     #  @dllList = @cppList;
+	#	CopySharedDlls("stdcpp",\@dllList);     
+	#  TransformXmls("boost", "shared");
+	#	@dllList = @saved;
+	  
+		my @saved = @dllList;
+                
+   my  @phallList = ( "libstdcpp.dll" );
+   @dllList = @phallList;
+   CopySharedDlls($suite,\@dllList);     	
+   TransformXmls($suite, "shared");
+   @dllList = @saved;
+   
+		exit;
+	}#if install
+}
+	
+
+if($suite eq "lsb" || $suite eq "all")
+{
+	my @lsbModules = GetLsbModules();
+	@generatedModules = @lsbModules;
+	DoGen("lsb",".exe");
+	
+	my @depDlls;
+	my $dll;
+	
+	#copying the common dlls
+	@depDlls  = 
+	(
+	 "libapi.dll",
+	 "tcm.dll",
+	 "vlib.dll",
+	);
+		
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	#now copy the cfg files
+	CopyLsbCfg("lsb");	
+	#now copy the extra dependency dlls
+	
+	#dlopen
+	@generatedModules = ("dlopen");
+	
+	
+	
+	@depDlls  = 
+	(
+	 "dynlibtest.1.dll",
+	 "dynlibtest.11.1.dll",
+	 "dynlibtest.11.2.dll",
+	 "dynlibtest.12g.dll",
+	 "dynlibtest.12r.dll",
+	 "dynlibtest.14.1.dll",
+	 "dynlibtest.14.2.dll",
+	 "dynlibtest.14.3.dll",
+	 "dynlibtest.3.1.dll",
+	 "dynlibtest.3.2.dll",
+	 "dynlibtest.3.dll",
+	 "dynlibtest.4.dll",
+	 "dynlibtest.8.dll",
+	 "dynlibtest.9.dll",
+	 "dynlibtest.3.dll",
+	 "dynlibtest.8.dll",
+	);
+	
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#dlclose
+	@generatedModules = ("dlclose");
+	@depDlls = ("dynlibclose.1.dll");
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#dlerror
+	@generatedModules = ("dlerror");
+	@depDlls = ("dynlib.dll");
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#now copy the xmls!
+	my $srcDir = $templateRoot."/ts/lsbsuites/group/";
+	
+	my $dst;
+	
+	foreach my $dllib("dlopen", "dlclose", "dlerror")
+	{
+		$dst  = $ATSRoot."\\components\\lsb_".$dllib."\\";
+		copy($srcDir."/lsb_".$dllib."_module_blr_hw_component.xml", $dst) || die("DIED: unable to copy from $srcDir!\n");
+		copy($srcDir."/lsb_".$dllib."_module_blr_winsspd_component.xml", $dst) || die("DIED: unable to copy from $srcDir!\n");
+	}
+	
+}
+
+if($suite eq "gcce")
+{
+
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	@generatedModules = ("gcce-validate", "gcce-load");
+		
+	my @depDlls  = 
+	(
+		"gcce-lib.dll",
+	);
+	
+	my $suffix = ".exe";
+	my $libname = "gcce";
+	
+	
+	my $src;
+	my $dst;
+	foreach my $module(@generatedModules)
+	{
+		my $relroot = $ATSRoot."\\components\\$libname"."_$module";
+		mkdir $relroot || die("DIED: unable to create dir $module\n");
+		mkdir $relroot."\\armv5_urel" || die("DIED: unable to create dir $relroot\\armv5_urel\n");
+		
+		#GenExeXmls($module,$libname);
+		
+		$src = $rootDrive."\\epoc32\\release\\gcce\\urel\\".$module.$suffix;
+		$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+		$dst = $dst."\\armv5_urel\\";
+		copy($src, $dst)  || warn("unable to copy $src to $dst");
+	}
+	$src = $rootDrive."\\epoc32\\release\\gcce\\urel\\"."gcce-lib.dll";
+	$dst = $ATSRoot."\\components\\gcce_gcce-load";
+	$dst = $dst."\\armv5_urel\\";
+	copy($src, $dst)  || warn("unable to copy $src to $dst");
+	
+	
+	my @list = (
+  				 ["gcce_gcce-load_module_blr_hw_component.xml", "gcce-load", "./","/", ""],
+  				 ["gcce_gcce-validate_module_blr_hw_component.xml", "gcce-validate", "./","/", ""],
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("gcce",$bDataRef);  				 
+
+	
+}#if gcce
+
+
+
+if($suite eq "libc-locale")
+{
+	$dontStrip = 0;
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	@generatedModules = ("tstring");
+	DoGen("libc",".dll");
+	
+	my @localelist = (
+	  				 ["locales.txt", "string", "../libc/internal/testapps/tstring/data/", "/General/", ""],
+	  				 ["tstring_locale_component.xml", "string", "../libc/internal/testapps/tstring/group/", "/", ""],
+	 
+	  				 );
+		
+  my $bDataRef = \@localelist;  				 
+	CopyArbitDatFiles("libc",$bDataRef);  				 
+	#delete($ATSRoot."/components/libc_string/"."libc_string_module_blr_hw_component.xml") || die("unable to delete");
+	my $my_src = $ATSRoot."/components/libc_string/"."tstring_locale_component.xml";
+	my $my_dst = $ATSRoot."/components/libc_string/"."libc_string_module_blr_hw_component.xml";
+	
+	unlink($my_dst) ||warn("unable to delete $my_dst");
+	rename($my_src,$my_dst) || move($my_src,$my_dst) || die("Unable to rename!");
+	
+}#if libc-locale
+
+
+if($suite eq "pcts")
+{
+	my $bldfile = $templateRoot."/group/bld.inf";
+	my @pctsModules = GetCompiledModules($bldfile);
+	@generatedModules = @pctsModules;
+	DoGen("pcts",".exe");
+	
+	my @depDlls;
+	my $dll;
+	
+	
+	#copying the common dlls
+	@depDlls  = 
+	(
+		"vsxlibapi.dll",
+		"rttm.exe",
+		"rtlibapi.dll",
+		"vsxvlib.dll",
+		"vsxgenlib.dll",
+		"vsxtsetlib.dll",
+		"vsxvport.dll",
+	);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList; 
+		@dllList = @depDlls;	
+		CopySharedDlls("pcts", \@depDlls);
+		TransformXmls("pcts","shared");
+		@dllList = @saved;
+		
+		#now copy the cfg files
+		my $dst;
+		my $srcDir = "/epoc32/winscw/c/data/tet/";
+		my $file1 = $srcDir."tet_code";
+		my $file2 = $srcDir."tetexec.cfg";
+		foreach my $module(@generatedModules)
+		{
+			$dst = $ATSRoot."\\components\\pcts_".$module;
+			$dst = $dst."\\General\\";
+			copy($file1, $dst) or die "copy: $! $file1 $dst";
+			copy($file2,$dst) or die "copy: $! $file2 $dst";
+		}
+	}
+		
+	
+	
+	
+	my $dst;	
+	foreach my $module(@generatedModules)
+	{
+		my $file3 = "/epoc32/winscw/c/logs/tet/m.".$module;
+
+		$dst = $ATSRoot."\\components\\pcts_".$module;
+		$dst = $dst."\\General\\";
+		copy($file3, $dst) or die "copy: $! $file3 $dst";
+	}#module
+}
+
+
+
+$dontStrip = 0;
+
+if($suite eq "stdlibs" || $suite eq "all")
+{
+	@generatedModules = ("tzlib");
+	DoGen("libz", ".dll");
+
+	@generatedModules = ("tlibcrypt");
+	DoGen("libcrypt",".dll");
+
+	@generatedModules = @libcModules;
+	DoGen("libc",".dll");
+	GenBackendTest();
+	
+	@generatedModules = ("twchar");
+	CopyDeps("libc","twchar_helloworld.exe");
+	
+	@generatedModules = ("twopen");
+	CopyDeps("libc","twpopenwritechild.exe");
+	CopyDeps("libc","twpopenreadchild.exe");
+
+
+	@generatedModules = @libdlModules;
+	DoGen("libdl",".dll");
+	CopyDeps("libdl","Dll1.dll");
+	CopyDeps("libdl","Dll2.dll");
+	CopyDeps("libdl","DependencyTestDll.dll");
+
+	@generatedModules = @libmModules;
+	DoGen("libm",".dll");
+
+	$TDIR = "\\internal\\";
+	@generatedModules = @pthreadModules;
+	DoGen("libpthread",".dll");
+	CopyDeps("libpthread","testharness.dll");
+
+	CopyDatFiles();
+}
+
+if($install eq "yes")
+{
+	foreach my $lib(@liblist)
+	{   
+		#print "Transforming lib $lib\n";       
+		@generatedModules = GenGenModules($lib);
+		my @oldList = @dllList;
+		if($do_winscw)
+  	{
+  		@dllList = (@dllList, "wsdsoln.dll", "libestw32.dll");
+  		CopySharedDlls($lib,\@dllList,"winscw");     	
+	  	TransformXmls($lib, "shared","winscw");
+  	}
+  	@dllList = @oldList;
+  	if($do_armv5)
+  	{
+	  	CopySharedDlls($lib,\@dllList,"armv5");     	
+	  	TransformXmls($lib, "shared","armv5");
+  	}
+	}#FOREACH
+}#if install
+
+
+# Function added by Roshan G (Dec 4th 2007) - Get list of modules from bld.inf by recursively searching testapps folder
+sub recurse
+{
+  
+	my $path = shift @_;
+	$path .= '/' if($path !~ /\/$/);
+
+  ## print the directory being searched
+ # print "Path : $path,\n";
+
+  ## loop through the files contained in the directory
+  for my $eachFile (glob($path.'*')) {
+	#	print "Entry : $eachFile\n";
+    ## if the file is a directory
+    if( -d $eachFile && basename($eachFile) ne "test_framework") {
+      ## pass the directory to the routine ( recursion )
+      recurse($eachFile);
+    } else {
+
+      ## print the file ... tabbed for readability
+      #print "\t",$eachFile,"\n";
+      if(basename($eachFile) eq "bld.inf")
+      {
+        #print "\t",$eachFile,"\n";
+      	push (@AllModuleList,GetCompiledModules($eachFile));
+      }
+    }
+  }
+ }
+#End of recurse - Dec 4th 2007
+
+#function to generate ModuleList for a compiled bld.inf
+sub GetCompiledModules($)
+{
+	my $file = shift @_;
+	my @moduleList;
+	
+	
+	# Open input file
+	open (INFILE, "<".$file ) || die ("DIED: Can not find $file!");
+
+	while (<INFILE>)
+	{
+		if(/(.*)\.mmp/ && $1 !~ /^\s*\/\//) 
+	  {
+	  		if($_ !~ /\/\/Not for ATS/)
+	  		{
+	  			my $text = $1;
+	  		  $text =~ s/^\s*//;
+	  			push @moduleList, $text;
+	  		}
+	  }
+	}
+	close (INFILE);
+	return @moduleList;
+}
+
+my @groupList;
+sub GetLtpModules()
+{
+        my $prevDir = getcwd();
+        my @rootList = ("kernel", "misc");
+        my @totalgroupList;
+        foreach my $node(@rootList)
+        {
+        	chdir $ltpPath."/$node";
+        	@groupList = ();
+        	find(\&MakeGroupList, ".");
+        	@totalgroupList = (@totalgroupList, @groupList);
+        }
+        chdir $prevDir;
+        return @totalgroupList;
+}
+
+sub GetstdexeModules()
+{
+      my $prevDir = getcwd();
+      my @fullList = ();
+      foreach my $group(@stdexeList)
+      {
+      	my $groupPath = $templateRoot."/testapps/".$group. "/";
+      	chdir $groupPath;
+      	@groupList = ();
+      	find(\&grovelAllMmpFiles, ".");
+      	chdir $prevDir;
+      	@fullList = (@fullList,@groupList);
+      }
+      return @fullList;      
+}
+
+sub grovelAllMmpFiles()
+{
+	if($_ =~ /(.*)\.mmp/ && ! ($_ =~ /manual/))
+	{
+		push @groupList, $1;#get name of module
+	}
+}
+
+sub GetstdcppModules()
+{
+        my $prevDir = getcwd();
+        my @rootList = ("auto");
+        my @totalgroupList;
+        foreach my $node(@rootList)
+        {
+        	chdir $stdcppPath."/$node";
+        	@groupList = ();
+        	find(\&MakeGroupList, ".");
+        	@totalgroupList = (@totalgroupList, @groupList);
+        }
+        chdir $prevDir;
+        my @newmodules = ("tiostreams", "tlocale", "tstl_1", "tstl_2", "tstl_3", "twiostreams");
+        @totalgroupList = (@totalgroupList, @newmodules); 
+        foreach my $mod(@newmodules)
+        {
+         $cfglocation{$mod} = getcwd()."/testapps/bc/$mod/group"."\/$mod.cfg";
+         #print "$cfglocation{$mod} - $mod\n";
+        }
+				return @totalgroupList;
+}
+
+sub GetTstdcppModules()
+{
+      my $prevDir = getcwd();
+      #chdir $tstdcppPath;
+      @groupList = ();
+      find(\&grovelAllMmpFiles, ".");
+      chdir $prevDir;
+      return @groupList;
+}
+
+sub MakeGroupList()
+{
+	my $currentDir = $File::Find::dir;
+	
+	#print "Current dir:$currentDir\n";
+	if( $currentDir =~ /.*\/(.*)\/group/)
+	{
+		if($cfglocation{$1} eq "")
+		{
+			$cfglocation{$1} = getcwd()."\/$1.cfg";
+			push @groupList, $1;#get name of module
+		}#first time in group
+	}#group found
+}#subrtn end
+
+
+#function that generates the ATS setup
+sub DoGen($$)
+{
+	my $libname = shift @_;
+	my $ext = shift @_;
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	
+	GenDirs($libname);
+	my $module;
+	foreach my $listed(@generatedModules)
+	{
+	my @filesToProcess =
+        (
+         "LibXXX_ATSTemplateXXX_module_blr_hw_component.xml",
+         "LibXXX_ATSTemplateXXX_module_blr_winsspd_component.xml",
+         "testframework.ini",
+        );
+		if(rindex($noXmlsGenList, $libname) != -1 )	
+		{
+			@filesToProcess = ("testframework.ini",);
+		}
+
+			if($ext eq ".exe")
+			{
+				GenExeXmls($listed,$libname);
+			}
+			else
+			{
+				#just in case no xml file was supplied
+				
+        my $ref = \@filesToProcess;
+				GenXmls($libname, $listed,$ref);
+			}
+	}#foreach
+	
+	CopyDlls($libname,$ext);
+	#copy the provided cfg, ini and xmls
+	if($libname eq "opts")
+	{
+		CopyOptsCfg($libname);
+	}
+	elsif($libname eq "ltp" || $libname eq "lsb" || $libname eq "glib")
+	{
+	  #copy latter and  dont copy respectively for ltp and lsb
+	}
+	else
+	{
+	  CopyCfgIniXmls($libname);
+	}
+}
+
+sub CopyCfgIniXmls()
+{
+	my $libname = pop @_;
+	
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach my $listed(@generatedModules)
+	{
+	  my $dirname = $listed;
+	  $dirname =~ s/test/t/;
+	  $module = StripModulePrefix($listed);
+	    
+		$src = $libRoot.$libname.$TDIR.$dirname."\\group\\";
+				
+		my $xmlCopied = "0";
+		my @globpattern = ("*.ini", "*.xml","*.cfg");
+		foreach my $pat(@globpattern)
+		{
+			$dst = $ATSRoot."\\components\\".$libname."_".$module;
+			if($pat ne "*.xml")
+			{
+				$dst = $dst."\\General\\";
+			}
+			else
+			{
+				$dst = $dst."\\";
+			}
+			my @filesFound = glob($src."\\$pat");
+			if(scalar @filesFound eq "0")
+			{
+				#print "No files found for module $module $pat!\n";
+				#print $src;
+			}
+			
+			#handcoded
+			if($pat eq "*.cfg" && $xmlCopied eq "0")#rename only if xml not copied
+			{
+				if(scalar @filesFound > 1)
+				{
+					print "Multiple cfg files found. Copying all!\n";
+				}
+				else
+				{
+						$dst = $dst.$listed.".cfg";
+				}
+			}				
+			elsif($pat eq "*.xml")
+			{
+				my $folder = $dst;
+				foreach my $from (@filesFound) 
+				{
+					if($from =~ /winscw_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_winscw_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+					elsif($from =~ /winsspd_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_winsspd_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+					elsif($from =~ /hw_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_hw_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+				}#examine individually			
+				if(scalar @filesFound > 2)
+				{
+					#print "Multiple xml files found!!!\n";
+				}
+				@filesFound = ();
+			}	
+				
+			
+			foreach my $from (@filesFound) 
+			{
+					copy($from, $dst) or die "DIED: copy: $! $from $dst";
+			}#copy individually			
+		}#globpattern
+	}#module
+}#fn
+
+#copy the cfg files for the opts test suite
+sub CopyOptsCfg()
+{
+	my $libname = pop @_;
+	
+	my $libRoot = $optsGroupPath."\\";
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach $module(@generatedModules)
+	{
+		$src = $libRoot.$module."\.cfg";
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($src, $dst) or warn "copy: $! $src $dst";
+	}#module
+}#fn
+
+#copy the lsb cfg files
+sub CopyLsbCfg()
+{
+	my $libname = pop @_;
+	
+	my $module;
+	
+	my $dst;
+	
+	my $srcDir = $templateRoot."/ts/lsbsuites/lsblib/data/";
+		
+	foreach $module(@generatedModules)
+	{
+		my $file1 = $srcDir."tet_code.cfg";
+		my $file2 = $srcDir."tetexec.cfg";
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($file1, $dst) or die "copy: $! $file1 $dst";
+		copy($file2, $dst) or die "copy: $! $file2 $dst";
+	}#module
+}#fn
+
+
+#copy the ltp cfg files
+sub CopyLtpCfg($)
+{
+	my $libname = pop @_;
+	
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach $module(@generatedModules)
+	{
+		$src = $cfglocation{$module};
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($src, $dst) or warn "copy: $! $src $dst";
+	}#module
+}#fn
+
+
+sub CopyDlls($$)
+{
+	my $libname = shift @_;
+	my $suffix = shift @_;
+	
+	my $module;
+	my $src;
+	my $dst;
+	
+	
+	foreach $module(@generatedModules)
+	{
+	  if($do_winscw == 1)
+	  { 	  
+			$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$module.$suffix;
+			$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+			$dst = $dst."\\winscw_udeb\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	  if($do_armv5 == 1)
+	  {
+			$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$module.$suffix;
+			$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+			$dst = $dst."\\armv5_urel\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	}#foreach
+}
+#fn to generate the session file
+sub GenerateSessionFile($$$$)
+{
+	my $libname = shift @_;
+	my $target = shift @_;
+	my $name = shift @_;
+	my $listptr = shift @_;
+	my $outdir = $ATSRoot;
+	my $infile = $templateRoot."\\testsession.xml";
+	chdir $outdir || die("DIED: Unable to chdir!"); 
+	#open INFILE, $infile || die ("DIED: Can not open input file $infile");
+	my $prefix = $name."_".$target;
+	if($sdkversion ne "")
+	{
+		$prefix = $prefix."_".$sdkversion;
+	}
+	
+	open OUTFILE, ">".$outdir."\\".$prefix."_testsession.xml" || die ("DIED: Can not open output file");
+	my $line;
+  my $snippet = $target;
+  if($target ne "winscw" && $target ne "winsspd")
+  {
+  	$snippet = "hw";
+  }
+
+print OUTFILE "<?xml version=\"1.0\"?>\n";
+print OUTFILE "<testsession>\n";
+#print OUTFILE "<symbian-version>$libname"."_".$snippet."_TestDrop_blr_component</symbian-version>\n";	
+print OUTFILE "<symbian-version>Boost_combined_test_session</symbian-version>\n";	
+print OUTFILE "<testitem>at</testitem>\n";	
+print OUTFILE "<resultfile>ATSOUTPUT\\".$prefix."_testsession_results.xml</resultfile>\n";		
+if($sendEmail eq "yes")
+{
+print OUTFILE <<EOEmailNote;
+<email_notification>
+<include_test_cases>false</include_test_cases>
+<message_file>C:\\\\lm.txt </message_file>
+<send_after_rerun>false</send_after_rerun>
+<subject>Boost $snippet testreport</subject>
+<from>swbuild\@nokia.com</from>
+<to>ajith.narayanan\@nokia.com</to>
+<to>hrishikesh.brahmakal\@nokia.com</to>
+<to>santosh.ks\@nokia.com</to>
+<to>shilpa.sharma\@nokia.com</to>
+<to>kasthuri.n-s\@nokia.com</to>
+<to>hema.1.s\@nokia.com</to>
+<to>vineetha.hari-pai\@nokia.com</to>
+<to>madhusudhan.p.reddy\@nokia.com</to>
+</email_notification>
+EOEmailNote
+}
+
+	if($libname ne "combined")
+	{
+		AddAssumedIncludes($libname,$snippet);
+	}
+	else
+	{
+		if($listptr ne "")
+		{
+			AddFileList($libname,$listptr);
+		}
+		else
+		{
+			AddActualIncludes($libname);
+		}
+	}
+   				
+	print OUTFILE "</testsession>\n";
+
+	close(OUTFILE);
+	#close(INFILE);
+}#fn
+
+
+sub AddAssumedIncludes($$)
+{
+	my $libname = shift @_; 
+	my $snippet = shift @_;
+	
+	my $APITest;
+	foreach my $listed(@generatedModules)
+						{
+							$APITest = StripModulePrefix($listed);
+							print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of $target xml for $APITest -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							if($libname eq "all")
+							{
+									print OUTFILE "		 <testplan>ATSINPUT\\components\\$listed\\$listed"."_module_blr_".$snippet."_component.xml</testplan>\n";	 
+							}
+							else
+							{
+									print OUTFILE "		 <testplan>ATSINPUT\\components\\$libname"."_"."$APITest\\$libname"."_$APITest"."_module_blr_".$snippet."_component.xml</testplan>\n";	 
+							}
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	           }#foreach @generatedModules
+}
+
+
+sub AddFileList($$)
+{
+	my $libname = shift @_; 
+	my $listptr = shift @_;
+	my @componentfiles = @$listptr;
+	
+			foreach my $listed(@componentfiles)
+						{
+								print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of $target xml -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							print OUTFILE "		 <testplan>ATSINPUT\\components\\$listed</testplan>\n";	 
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	           }#foreach @componentfiles
+}
+
+
+
+sub GetSslXmls()
+{
+	my $APITest;
+	my @componentfiles;
+	
+	my @emulatorfiles = 
+	(
+	"libssl_ssltest\\libssl_blr_winsspd_component.xml",
+	"libcrypto_crypto_test\\libcrypto_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestss_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestverify_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestenc_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestgen_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltpkcs7_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltpkcs7d_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltreq_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltreq2_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltrsa_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltcrl_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltsid_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltx509_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltx5091_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltx5092_blr_winsspd_component.xml",
+	 );
+	 
+	my @hwfiles =
+	(
+		"libcrypto_openssl\\libcrypto_topenssltestss_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltestverify_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltestenc_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltestgen_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltpkcs7_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltpkcs7d_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltreq_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltreq2_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltrsa_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltcrl_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltsid_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltx509_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltx5091_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltx5092_blr_hw_component.xml",		
+		"libssl_ssltest\\libssl_blr_hw_component.xml",
+		"libcrypto_crypto_test\\libcrypto_blr_hw_component.xml",
+	);
+	if($target eq "winsspd" || $target eq "winscw")
+	{
+		@componentfiles = @emulatorfiles;
+	}
+	else
+	{
+		@componentfiles = @hwfiles;
+	}
+	return @componentfiles;
+}
+
+
+
+sub AddActualIncludes($)
+{
+	my $libname = shift @_; 
+	find(\&XmlComponentFiles, ".");
+	my $key;
+	my $value;
+	while(($key, $value) = each(%DirHash)) 
+	{
+							$value =~ s/\//\\/g;
+							print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of dynamically found $target xml -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							print OUTFILE "		 <testplan>$value</testplan>\n";	 
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	
+	}#while
+}#fn
+
+sub XmlComponentFiles()
+{
+	if($_ !~ /\.xml/ || $_ =~ /manual/)
+	{
+		return;
+	}
+	#print "Processing $_\n";
+	my $dir = getcwd();
+	if($dir =~ /.*(ATSINPUT.*)/)
+	{
+			$dir = $1;
+			if($dir !~ /.*components.*/)
+			{
+				return;
+			}
+			#print "The dir is $dir\n";
+	}
+	else
+	{
+		return;
+	}
+	
+	if($target eq "winsspd" )
+	{
+		if($_ =~ /winsspd/)
+		{
+			#print "Adding $target file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+		}
+	}
+	elsif($target eq "winscw")
+	{
+		if($_ =~ /winscw/)
+		{
+			#print "Adding $target file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+		}
+	}
+	elsif($_ =~ /$target/)
+	{
+		#print "$_ matched $target \n";
+		#print "Adding $target file $_ for $dir\n";
+		$DirHash{$dir} = $dir."/".$_;
+	}
+	elsif($_ =~/hw/)
+	{
+		#print "$_ matched hw";
+		if(scalar $DirHash{$dir} == 0)
+		{
+			#print "Adding hw file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+			#print " and added\n"
+		}
+		else
+		{
+			#print " and not added\n";
+		}
+	}
+}
+
+
+
+sub emptyArray()
+{
+	@generatedModules = ();
+}
+
+sub GenDirs($)
+{
+ my $libname = shift @_;
+ my $dirname;
+ foreach my $module(@generatedModules)
+ {
+  $dirname = StripModulePrefix($module);
+	my $relroot = $ATSRoot."\\components\\$libname"."_$dirname";
+	mkdir $relroot || die("DIED: unable to create dir $dirname\n");
+	mkdir $relroot."\\General" || die("DIED: unable to create dir $relroot\\General\n");
+	if($do_armv5 == 1)
+	{
+		mkdir $relroot."\\armv5_urel" || die("DIED: unable to create dir $relroot\\armv5_urel\n");
+	}
+	if($do_winscw == 1)
+	{
+		mkdir $relroot."\\winscw_udeb" || die("DIED: unable to create dir $relroot\\winscw_udeb\n");
+	}
+ }
+}
+
+sub GenXmls($$$)
+{
+	my $libname = shift @_;
+	my $listedName = shift @_;
+	my $bref = shift @_;
+	my @filesToProcess = @$bref;
+	
+	#strip leading test and t names from module
+	my $moduleName = StripModulePrefix($listedName);
+
+      my $toPath = $ATSRoot."\\components\\$libname"."_$moduleName\\"; 
+        
+
+       my $dst;
+       my $src;
+       foreach $src(@filesToProcess)
+       {
+               $dst = $src;
+               $dst =~ s/ATSTemplateXXX/$moduleName/;
+               $dst =~ s/LibXXX/$libname/;
+             
+
+               if($src eq "testframework.ini")
+               {
+					$dst =  $toPath."General\\".$dst;
+               }
+               else
+               {
+					$dst =  $toPath.$dst;
+               }
+               copy($templateRoot."\\".$src, $dst) || die("DIED: Unable to copy $src to $dst\n");
+               ExpandModuleMacros($dst, $libname, $listedName);
+       }#foreach file
+}
+
+
+sub GenExeXmls()
+{
+	my $moduleName = shift @_;
+	my $libname = shift @_;
+			
+	my $toPath = $ATSRoot."\\components\\$libname"."_$moduleName\\"; 
+  my @filesToProcess =
+  (
+     "LibXXX_ATSTemplateXXX_exemodule_blr_hw_component.xml",
+     "LibXXX_ATSTemplateXXX_exemodule_blr_winsspd_component.xml",
+  );
+	
+	my $dst;
+  my $src;
+  foreach $src(@filesToProcess)
+  {
+        $dst = $src;
+        $dst =~ s/ATSTemplateXXX/$moduleName/;
+        $dst =~ s/LibXXX/$libname/;
+        $dst =~ s/_exemodule_/_module_/;
+				$dst =  $toPath.$dst;
+        copy($templateRoot."\\".$src, $dst) || die("DIED: Unable to copy to $dst\n");
+        ExpandModuleMacros($dst, $libname, $moduleName);
+   }#foreach file
+}
+
+#function to expand the macros existing in a file
+#file is replaced by new version
+#args are relativePath. filename and  $moduleName
+sub ExpandModuleMacros()
+{
+	# Take module name
+	my $moduleName = pop @_;
+	my $libname = pop @_;
+	my $filename = pop @_;
+
+	my $MODULENAME = $moduleName;
+	$MODULENAME =~ tr/[a-z]/[A-Z]/;
+
+	# Open input file
+	open (INFILE, $filename ) || die ("DIED: Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("DIED: Can not open $newOutput");
+
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  s/ATSTemplateXXX/$moduleName/g;
+	  s/LibXXX/$libname/g;
+    	  print OUTFILE $_;
+	}
+
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+}
+
+
+
+sub CopyDeps($$)
+{
+  my $libname = shift @_;
+  my $copyDll = shift @_;
+	my $src;
+	my $dst;
+	foreach my $listed(@generatedModules)
+	{
+				my $module = StripModulePrefix($listed);
+				if($do_winscw == 1)
+				{
+					$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+					$dst = $ATSRoot."\\components\\$libname"."_$module";
+					$dst = $dst."\\winscw_udeb\\";
+					copy($src, $dst)  || warn("unable to copy $src to $dst");
+				}
+				if($do_armv5 == 1)
+				{
+					$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+					$dst = $ATSRoot."\\components\\$libname"."_$module";
+					$dst = $dst."\\armv5_urel\\";
+					copy($src, $dst)  || warn("unable to copy $src to $dst");
+				}
+	}#foreach
+}#fn
+
+#dat file copy
+sub CopyDatFiles()
+{
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+ my @list = (
+  				 ["libcrypt", "tlibcrypt", "group/Test_Data.dat"],
+  				 ["libc", "tnetdb", "data/services.txt"],
+  				 ["libc", "tstring", "data/locales.txt"],
+  				 ["libc", "libc_loc_blr", "data/locales.txt"],
+  				 ["libz", "tzlib", "data/*.*"],
+  				 ["libc", "tlink", "data/*.*"],
+  				 ["libc", "tmmap", "data/*.*"],
+           );
+
+	 my $libname;
+	 my $dirname;
+	 my $glob;
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($libname, $dirname, $glob) = @inarr;
+			my $modulename = StripModulePrefix($dirname);
+			my $src = "$libRoot/$libname/internal/testapps/$dirname/$glob";
+			my $dst = $ATSRoot."\\components\\$libname"."_"."$modulename\\General\\";
+  		if($dirname eq "libc_loc_blr")
+  		{
+  			$src = "$libRoot/libc/src/locales.txt";
+  		}
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  }#ref processing
+}#fn
+
+
+#glib dat file copy
+sub CopyArbitDatFiles($$)
+{
+	
+	 my $libname = shift @_;
+	 my $refArr = shift @_;
+	 my @list = @$refArr;
+	 
+ 	
+	my $fname;
+	my $modulename;
+	my $location;
+	my $atsDst;
+	my $targetDst;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $modulename, $location, $atsDst, $targetDst) = @inarr;
+			#print "[$fname, $modulename, $location, $atsDst, $targetDst]\n";
+			if($location =~ /(.*)\.\.(.*)/)
+			{
+				$location = GetPathPrefix().$2;
+			}
+			else
+			{
+				$location = $rootDrive.$location;
+			}
+			my $src = $location.$fname;
+			my $dst = $ATSRoot."\\components\\$libname"."_".$modulename.$atsDst;
+			if($libname eq "")
+			{
+				$dst = $ATSRoot."\\components\\".$modulename.$atsDst;
+				#print "$dst CHANGED!\n"
+			}
+  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file  $src found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  		
+  		if($targetDst ne "")
+  		{
+  			 		my @filesToChange = ();
+			  		if($atsDst =~ "armv5")
+			  		{
+			  			#armv5 component file
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_hw_component.xml";
+			  			
+			  		}
+			  		elsif($atsDst =~ "winscw")
+			  		{
+			  			#winscw component file
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_winsspd_component.xml";
+			  		}
+			  		else
+			  		{
+			  			#add entry to both xmls
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_hw_component.xml";
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_winsspd_component.xml";
+			  		}
+			  		foreach my $file(@filesToChange)
+			  		{
+			  			$src = $ATSRoot."/components/".$libname."_"."$modulename/".$file;
+			  			ModifyXml($src,$libname,$fname,$atsDst,$targetDst);
+			  		}
+			  }#updating the xmls
+    		
+  }#ref processing
+ 
+  
+}#fn
+
+sub ModifyXml($$$$$)
+{
+	my $filename = shift @_;
+	my $lib = shift @_;
+	my $fname = shift @_;
+	my $atsDst = shift @_;
+	my $targetDst = shift @_;
+	
+	
+	#printf("Modifying $filename with lib= $lib fname= $fname atsDst = $atsDst targetDst = $targetDst\n");
+	
+	# Open input file
+	open (INFILE, $filename ) || die ("Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("Can not open $newOutput");
+
+		
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  if(/\<stif\>/ || /\<execute\>/)
+	  {
+	  	if(/\<stif\>/)
+	  	{
+	  		print OUTFILE "\<stif\>\n";
+	  	}
+	  	else
+	  	{
+	  		print OUTFILE "\<execute\>\n";
+	  	}
+	  	my $type = "data";
+	  	if($atsDst !~ "General")
+			{
+				$type = "binary";
+			}
+			print OUTFILE <<EObinary;
+				
+	  		<install type=\"$type\">
+				<src>$fname</src>
+				<dst>$targetDst\\$fname</dst>
+ 				</install>
+EObinary
+	  }#stif or execute tag found
+	  else
+	  {
+	  	  print OUTFILE $_;
+	  }
+	}#while
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+	
+}#fn
+sub GenGenModules($)
+{
+	my $libname = shift @_;
+	
+		
+	my $src = $ATSRoot."/components/";
+	my @fileList = ();
+	opendir(DIRHANDLE, "$src") || die "Cannot opendir $src";
+  foreach my $name (readdir(DIRHANDLE)) 
+  {
+    if($name =~ /^$libname/)
+    {
+    	if($libname ne "libc" || $name !~ /^libcrypt/) 
+    	{
+    		$name =~ s/^$libname//;
+    		$name =~ s/^_//;
+    		unshift @fileList, $name;
+    	}#excluded libcrypt from libc list
+    }#libname match
+  }#foreach
+  closedir(DIRHANDLE);
+	return @fileList;
+}
+
+
+sub GetAllModules()
+{
+	
+	my $src = $ATSRoot."/components/";
+	my @fileList = ();
+	opendir(DIRHANDLE, "$src") || die "Cannot opendir $src";
+  foreach my $name (readdir(DIRHANDLE)) 
+  {
+    	if($name ne "." && $name ne ".." && $name ne "shared")
+			{
+				unshift @fileList, $name;
+			}
+
+  }#foreach
+  closedir(DIRHANDLE);
+	return @fileList;
+}
+
+
+
+sub TransformXmls($$)
+{
+	my $libname = shift @_;
+	my $shared = shift @_;
+	my $target = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+
+	my $armv5 = 0;
+	my $winscw = 0;
+	if($target eq "armv5")
+	{
+			$armv5 = 1;
+  }	
+  elsif($target eq "winscw")
+  {
+  		$winscw = 1;
+  }
+  else
+  {
+  	$armv5  = $do_armv5;
+  	$winscw = $do_winscw;
+	}
+		
+
+	foreach $module(@generatedModules)
+	{
+	  if($armv5 == 1 && $winscw == 1)
+	  {
+			$src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+		}
+		elsif($armv5 == 1)
+		{
+			$src = $ATSRoot."/components/".$libname."_"."$module/*_hw_component.xml";
+		}
+		elsif($winscw == 1)
+		{
+			$src = $ATSRoot."/components/".$libname."_"."$module/*_winsspd_component.xml";
+		}
+		my @fileList = glob($src);
+		foreach my $file(@fileList)
+		{
+		 	#print"$file to  be transformed!\n";
+			AddLibsInXml($libname,$file,$shared);
+		}
+   }
+}#fn
+
+sub AddLibsInXml($$$)
+{
+	my $libname = shift @_;
+	my $filename = shift @_;
+	my $shared = shift @_;
+	
+	# Open input file
+	open (INFILE, $filename ) || die ("Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("Can not open $newOutput");
+
+	my $drive = "c:";
+	
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  if(/\<stif\>/ || /\<execute\>/)
+	  {
+	  	if(/\<stif\>/)
+	  	{
+	  		print OUTFILE "\<stif\>\n";
+	  	}
+	  	else
+	  	{
+	  		print OUTFILE "\<execute\>\n";
+	  		if($filename =~ /winsspd/)
+				{
+					$drive = "z:";
+				}
+	  	}
+	  	foreach my $installable(@dllList)
+			{
+				print OUTFILE <<EOLine;
+				
+	  		<install type=\"$shared binary\">
+				<src>$installable</src>
+				<dst>$drive\\sys\\bin\\$installable</dst>
+ 				</install>
+EOLine
+			}
+
+	  }
+	  else
+	  {
+	  	  print OUTFILE $_;
+	  }
+	}#while
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+}
+
+sub CopySharedDlls()
+{
+  my $libname = shift @_;
+  my $ref = shift @_;
+  my @ListOfDlls = @$ref;
+  my $target = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+	
+	my $do_armv5 = 0;
+	my $do_winscw = 0;
+	if($target eq "armv5")
+	{
+		$do_armv5 = 1;
+	}
+	elsif($target eq "winscw")
+	{
+		$do_winscw =  1;
+	}
+	else
+	{
+		$do_armv5  = 1;
+		$do_winscw = 1;
+	}
+	
+	
+	mkdir  $ATSRoot."\\components\\shared" || die("Wouldn't make shared folder in $ATSRoot\\components");
+	if($do_winscw == 1)
+	{
+		mkdir  $ATSRoot."\\components\\shared\\winscw_udeb" || die("Wouldn't make shared folder in $ATSRoot\\components\winscw_udeb");
+	}
+	if($do_armv5 == 1)
+	{
+		mkdir  $ATSRoot."\\components\\shared\\armv5_urel" || die("Wouldn't make shared folder in $ATSRoot\\components\armv5_urel");
+	}
+	
+	foreach my $copyDll(@ListOfDlls)
+	{
+		if($do_winscw == 1)
+		{
+			$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+			$dst = $ATSRoot."\\components\\shared";
+			$dst = $dst."\\winscw_udeb\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}	
+		if($do_armv5 == 1)
+		{	
+			$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+			$dst = $ATSRoot."\\components\\shared";
+			$dst = $dst."\\armv5_urel\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	}#foreach
+}#fn
+
+
+sub CopyMultiDlls($)
+{
+  my $libname = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+	foreach my $listed(@generatedModules)
+	{
+		foreach my $copyDll(@dllList)
+		{
+			if($do_winscw == 1)
+			{
+				$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+				$dst = $ATSRoot."\\components\\$libname"."_$listed";
+				$dst = $dst."\\winscw_udeb\\";
+				copy($src, $dst)  || warn("unable to copy $src to $dst");
+			}
+			if($do_armv5 == 1)
+			{
+				$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+				$dst = $ATSRoot."\\components\\$libname"."_$listed";
+				$dst = $dst."\\armv5_urel\\";
+				copy($src, $dst)  || warn("unable to copy $src to $dst");
+			}
+		}#foreach
+	}
+}#fn
+
+sub StripModulePrefix($)
+{
+	my $listed = pop @_;
+	my $module = $listed;
+	if($dontStrip == 0)
+	{
+		$module =~ s/^test//;
+		$module =~ s/^t//;
+		$module =~ s/^libc_//;
+		$module =~ s/^libm_//;
+  }
+  return $module;
+  	
+}
+
+sub GetLsbModules()
+{
+	my @lsbList = 
+	(
+	 "abs",
+"acos",
+"asctime",
+"asin",
+"atan",
+"atan2",
+"atof",
+"atoi",
+"atol",
+"bsearch",
+"calloc",
+"ceil",
+"chdir",
+"clearerr",
+"close",
+"closedir",
+"cos",
+"cosh",
+"creat",
+"lsb_ctime",
+"lsb_difftime",
+"dlclose",
+"dlerror",
+"dlopen",
+"dup",
+"dup2",
+"exp",
+"fabs",
+"fclose",
+"fcntl_x",
+"fdopen",
+"feof",
+"ferror",
+"fflush",
+"fgetpos",
+"fgets",
+"fileno",
+"floor",
+"fmod",
+"fopen",
+"fopen_X",
+"fprintf",
+"fputs",
+"fread",
+"free",
+"freopen",
+"freopen_X",
+"frexp",
+"fseek",
+"fsetpos",
+"fstat",
+"ftell",
+"ftok",
+"ftok_l",
+"fwrite",
+"getc",
+"getcwd",
+"gets",
+"lsb_gmtime",
+"ldexp",
+"link",
+"lsb_localtime",
+"log",
+"log10",
+"longjmp",
+"lseek",
+"malloc",
+"memchr_X",
+"memcmp_X",
+"memcpy_X",
+"memmove",
+"memset_X",
+"mkdir",
+"mkfifo",
+"lsb_mktime",
+"modf",
+"msgctl",
+"msgget",
+"msgsnd",
+"open",
+"opendir",
+"open_x",
+"perror",
+"pipe",
+"pow",
+"printf",
+"qsort",
+"rand",
+"read",
+"readdir",
+"readv_l",
+"realloc",
+"remove",
+"rename",
+"rewind",
+"rewinddir",
+"rmdir",
+"scanf",
+"scanf_X",
+"seekdir",
+"semctl",
+"semget",
+"semop",
+"setbuf",
+"setjmp",
+"shmat",
+"shmdt",
+"shmget",
+"sin",
+"sinh",
+"sqrt",
+"srand",
+"stat",
+"strcat",
+"strchr",
+"strcmp",
+"strcoll_X",
+"strcpy",
+"strcspn",
+"strerror_X",
+"strftime",
+"strftime_X",
+"strlen",
+"strncat",
+"strncmp",
+"strncpy",
+"strpbrk",
+"strptime",
+"strrchr",
+"strspn",
+"strstr",
+"strtod_X",
+"strtok",
+"strtol_X",
+"strxfrm_X",
+"tan",
+"tanh",
+"telldir",
+"telldir_l",
+"lsb_time",
+"tmpfile",
+"tmpnam",
+"ungetc",
+"unlink",
+"utime",
+"vfprintf",
+"vprintf",
+"write",
+"writev_l",
+
+	);
+  return @lsbList;
+}
+
+
+
+sub GenBackendTest()
+{
+
+	my @datList = 
+	(
+	["libc", "tlibcbackend"],
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,".dll");
+	}
+ #now copy xmls			
+ CopyAtsSetup();
+ #extra exes
+ @generatedModules = ("tlibcbackend");
+ CopyDeps("libc","TPopenReadChild.exe");
+ CopyDeps("libc","TPopenWriteChild.exe");
+			
+}#fn
+
+sub CopyAtsSetup()
+{
+	 my $libname = "libc"; 
+	 my @list = (
+  				 ["*.xml", "libcbackend", "/../backend/internal/tlibcbackend/group/","/", ""],
+  				 ["*.cfg", "libcbackend", "/../backend/internal/tlibcbackend/group/","/General/", ""],
+  				 ["*.ini", "libcbackend", "/../backend/internal/tlibcbackend/group/","/General/", ""],
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("libc",$bDataRef);  				 
+
+}#fn
+sub GetPathPrefix()
+{
+	 my $srcPrefix = $templateRoot;
+	 $srcPrefix =~ /(.*)internal.*/;
+	 $srcPrefix = $1;
+	 return $srcPrefix;
+}
+	
+
+#dat file copy
+sub CopyCryptoDat()
+{
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+ my @list = (
+ 								 ["libssl", "ssltest", "libssl/internal/testapps/ssl_test/data/*"],
+ 								 ["libcrypto", "topenssl", "/libcrypto/internal/testapps/topenssl/data/*"],
+           );
+
+	 my $libname;
+	 my $dirname;
+	 my $glob;
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($libname, $dirname, $glob) = @inarr;
+			my $modulename = StripModulePrefix($dirname);
+			my	$srcPrefix = GetPathPrefix();
+			
+			my $src = "$srcPrefix"."$glob";
+			
+			my $dst = $ATSRoot."\\components\\$libname"."_"."$modulename\\General\\";
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  }#ref processing
+}#fn
+
+#Crypto xmls copy
+sub CopyCryptoXmls()
+{
+	  my @list = (
+  				 ["*.xml", "libssl_ssltest/", "/libssl/internal/testapps/ssl_test/group/"],
+   				 ["*.xml", "libcrypto_crypto_test/", "/libcrypto/internal/testapps/crypto_test/group/"],
+   				 ["*.xml", "libcrypto_openssl/", "/libcrypto/internal/testapps/topenssl/group/"],   				    				 			 
+  				 );
+
+	
+	my $fname;
+	my $moduleDst;
+	my $location;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $moduleDst, $location) = @inarr;
+			my $src = GetPathPrefix().$location.$fname;
+			my $dst = $ATSRoot."\\components\\$moduleDst";
+  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no xml file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  	}#ref
+  	
+  	my @crypto_copyList = ("*.txt", "*cfg", "*.ini");
+  	
+  	foreach my $item(@crypto_copyList)
+  	{
+  			$location = "/libcrypto/internal/testapps/crypto_test/group/";
+  			$fname = GetPathPrefix().$location.$item;
+  			my @filesFound = glob($fname);
+  			foreach my $file(@filesFound)
+  			{
+    			$moduleDst = "libcrypto_crypto_test/";	
+  				my $dst = $ATSRoot."\\components\\".$moduleDst."/General/";
+  				copy($file, $dst);
+  			}
+  	}
+}#fn
+
+sub GenCryptoTest()
+{
+
+	my @datList = 
+	(
+	["libssl", "ssltest", ".exe"],
+	["libcrypto", "crypto_test",".dll"],
+	["libcrypto", "openssl",".exe"],
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,$ext);
+	}
+	CopyCryptoDat();
+	CopyCryptoXmls();
+	
+			
+}#fn
+
+
+#ngi xml copy
+sub CopyNgiXmls()
+{
+	  my @list = (
+   				 ["*.xml", "ngi_sa_amrrecording", "/audio/lowlevelaudio/internal/sa_amrrecording/group/"],
+   				 ["*.xml", "ngi_sa_highlevelaudio", "/audio/highlevelaudio/internal/sa_highlevelaudio/group/"],
+  				 ["*.xml", "ngi_sa_audiomixing", "/audio/lowlevelaudio/internal/sa_audiomixing/group/"],
+  				 ["*.xml", "ngi_sa_audiorecording", "/audio/lowlevelaudio/internal/sa_audiorecording/group/"],
+  				 ["*.xml", "ngi_sa_clip", "/audio/lowlevelaudio/internal/sa_clip/group/"],
+  				 ["*.xml", "ngi_sa_lowlevelaudio", "/audio/lowlevelaudio/internal/sa_lowlevelaudio/group/"],
+  				 ["*.xml", "ngi_sa_stream", "/audio/lowlevelaudio/internal/sa_stream/group/"],
+  				 
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_antitearing/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_colortranslation/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_createfb565/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_createfb888/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_heapusage/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_multibb/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_performance/group/"],
+           ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_plswitching/group/"],
+           ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_misc/group/"],
+  				 ["*.xml", "ngi_sa_bitmap", "/graphics/bitmap/internal/sa_bitmap/group/"],
+  				 ["*.xml", "ngi_sa_camera", "/graphics/camera/internal/sa_camera/group/"],
+  				 ["*.xml", "ngi_sa_images", "/graphics/images/internal/sa_images/group/"],
+  				 ["*.xml", "ngi_sa_display", "/graphics/display/internal/sa_display/group/"],
+  				 ["*.xml", "ngi_sa_lights", "/graphics/lights/internal/sa_lights/group/"],
+  				 ["*.xml", "ngi_sa_videoplayback", "/graphics/video/internal/sa_videoplayback/group/"],
+  				 
+  				 ["*.xml", "ngi_sa_input", "/input/input/internal/sa_input/group/"],
+  				 ["*.xml", "ngi_sa_textinput", "/input/textinput/internal/sa_textinput/group/"],
+  				 ["*.xml", "ngi_sa_devicecapabilities", "/system/devicecapabilities/internal/sa_devicecapabilities/group/"],
+  				 ["*.xml", "ngi_sa_devicestatus", "/system/devicestatus/internal/sa_phone/group/"],
+  				 ["*.xml", "ngi_sa_runtimetester", "/system/runtime/internal/sa_runtimetester/group/"],
+  				 ["*.xml", "ngi_sa_timing", "/timing/internal/sa_timing/group/"],
+	  				 );
+
+	
+	my $fname;
+	my $moduleDst;
+	my $location;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $moduleDst, $location) = @inarr;
+			my $src = GetPathPrefix().$location.$fname;
+			my $dst = $ATSRoot."\\components\\$moduleDst";
+			
+			#print "My src is $src\n";
+			#print "My dst is $dst\n";
+			  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			warn("warning: no xml file found to copy from $src!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  	}#ref
+    	
+}#fn
+
+
+sub GenNgiTest()
+{
+
+	my @datList = 
+	(
+	["ngi", "sa_amrrecording", ".dll"],
+	["ngi", "sa_highlevelaudio", ".dll"],
+	["ngi", "sa_audiomixing", ".dll"],
+	["ngi", "sa_audiorecording", ".dll"],
+	["ngi", "sa_clip", ".dll"],
+	["ngi", "sa_lowlevelaudio", ".dll"],
+	["ngi", "sa_stream", ".dll"],
+	["ngi", "sa_bitmap", ".dll"],
+	["ngi", "sa_camera", ".dll"],
+	["ngi", "sa_images", ".dll"],
+	["ngi", "sa_display", ".dll"],
+	["ngi", "sa_lights", ".dll"],	
+	["ngi", "sa_videoplayback", ".dll"],	
+	["ngi", "sa_input", ".dll"],	
+	["ngi", "sa_textinput", ".dll"],
+	["ngi", "sa_devicecapabilities", ".dll"],	
+	["ngi", "sa_devicestatus", ".dll"],	
+	["ngi", "sa_runtimetester", ".dll"],	
+	["ngi", "sa_timing", ".dll"],	
+		
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,$ext);
+	}
+	
+   @generatedModules =("sa_backbuffer");
+   GenDirs($lib);
+   @dllList = 
+   (
+   	"sa_bb_antitearing.dll",
+   	"sa_bb_colortranslation.dll",
+   	"sa_bb_createfb444.dll",
+   	"sa_bb_createfb565.dll",
+   	"sa_bb_createfb888.dll",
+   	"sa_bb_misc.dll",
+   	"sa_bb_heapusage.dll",
+   	"sa_bb_multibb.dll",
+   	"sa_bb_performance.dll",
+   	"sa_bb_plswitch.dll",
+   	"sa_bb_testenv.dll"
+   );
+   CopyMultiDlls("ngi");
+
+	
+ 	mkdir  $ATSRoot."\\components\\shared" || die("Wouldn't make shared folder in $ATSRoot\\components");
+  mkdir  $ATSRoot."\\components\\shared\\winscw_udeb" || die("Wouldn't make shared folder in $ATSRoot\\components\winscw_udeb");
+  mkdir  $ATSRoot."\\components\\shared\\armv5_urel" || die("Wouldn't make shared folder in $ATSRoot\\components\armv5_urel");
+			
+}#fn
+
+
+sub GetXmls()
+{
+  my @foundList;
+  my $libname = shift @_;
+	my @globlist = ();
+	if($target eq "winsspd" && $sdkversion ne "")
+	{
+		@globlist = ("winsspd_".$sdkversion);
+		#print "winsspd ".$sdkversion." selected\n";
+	}
+	elsif($target eq "winsspd")
+	{
+		@globlist = ("winsspd");
+		#print "winsspd selected\n";
+	}
+	elsif($sdkversion ne "")
+	{
+		@globlist = ($target,"hw_".$sdkversion);
+		#print "$target $sdkversion selected\n";
+	}
+	else
+	{
+		@globlist = ($target,"hw");
+		#print "$target $sdkversion selected\n";
+	}
+	
+	foreach my $module(@generatedModules)
+	{
+	  my $glob_to_use = "";
+	  my @fileList;
+	  foreach my $glob(@globlist)
+	  {
+			my $src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+			#print "Analysing $module and  $glob\n";
+			@fileList = glob($src);
+			foreach my $file(@fileList)
+			{
+			 my $pat = $glob."\_component\.xml";
+			 #print "[$file - $glob"."_component.xml"."]\n";
+				if($file =~ /$pat/)
+				{
+					$glob_to_use = $pat;
+					#print "[$file - $glob"."_component.xml"."]\n";
+					last
+				}
+			}#foreach FILE
+			if($glob_to_use ne "")
+			{
+				last;
+			}
+		}#finding glob	
+		if($glob_to_use ne "")
+		{
+				#print "Using the glob $glob_to_use\n";
+				my $src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+				@fileList = glob($src);
+				foreach my $file(@fileList)
+				{
+					#print "[$file - $glob_to_use]\n";
+					if($file =~ /$glob_to_use/)
+					{
+				  	$file =~ /.*components[\\\/](.*)/;
+				  	my $value = $1;
+				  	$value =~ s/\//\\/g;
+				  	#print "adding $value for $module with $glob_to_use\n";
+						unshift @foundList,$value;
+				  }#if
+				}#foreach
+		}#glob is present
+		else
+		{
+			warn("Unable to figure out glob to use for $module. Skipping...\n");
+		}
+	}#each module
+  return @foundList;
+ }#fn
+
+__END__
+:end
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/boost/libxxx_atstemplatexxx_exemodule_blr_hw_component.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,21 @@
+<component>
+		<name>LibXXX_ATSTemplateXXX_blr_hw_component</name>
+		<testset>
+				<id>LibXXX_ATSTemplateXXX_blr</id>
+				<priority>High</priority>
+
+		<install type="binary">
+				<src>ATSTemplateXXX.exe</src>
+				<dst>c:\sys\bin\ATSTemplateXXX.exe</dst>
+		</install> 
+
+		
+		<execute>
+				<file>c:\sys\bin\ATSTemplateXXX.exe</file>
+        <result type="common">
+            <file>c:\LOGS\ATSTemplateXXX.xml</file>
+        </result>
+        <timeout>300</timeout>
+		</execute> 
+</testset>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/boost/libxxx_atstemplatexxx_exemodule_blr_winsspd_component.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,21 @@
+<component>
+		<name>LibXXX_ATSTemplateXXX_blr_winscw_component</name>
+		<testset>
+				<id>LibXXX_ATSTemplateXXX_blr</id>
+				<priority>High</priority>
+		
+		<install type="binary">
+				<src>ATSTemplateXXX.exe</src>
+				<dst>z:\sys\bin\ATSTemplateXXX.exe</dst>
+		</install> 
+
+		
+		<execute>
+				<file>z:\sys\bin\ATSTemplateXXX.exe</file>
+        <result type="common">
+            <file>c:\LOGS\ATSTemplateXXX.xml</file>
+        </result>
+        <timeout>300</timeout>
+		</execute> 
+	</testset>
+</component>
\ No newline at end of file
Binary file internal/boost/releasenote/Boost_ReleaseNotes.doc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/boost/testsession.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<testsession>
+	<symbian-version>Plumhall_Combined_TestDrop_blr_component</symbian-version>
+	<testitem>at</testitem>
+	<resultfile>ATSOUTPUT\testsession_results.xml</resultfile>
+	
+
+	<!-- include_WINSCW_Modules_here -->
+	<!-- include_HW_Modules_here -->
+
+	
+</testsession>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/eabi/gcce-libu.def	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,3 @@
+EXPORTS
+	_Z7do_testiPKciii @ 1 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/group/bld.inf	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,338 @@
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Description:  ?Description
+*
+*/
+
+
+
+PRJ_PLATFORMS
+// specify the platforms your component needs to be built for here
+// defaults to WINS MARM so you can ignore this if you just build these
+DEFAULT GCCE
+
+
+PRJ_MMPFILES
+gcce-validate.mmp
+gcce-lib.mmp
+gcce-load.mmp
+/*
+we might include these latter if needed
+../../../stdlibs/liblogger/internal/testapps/tlibcloggerapp/group/tlibcloggerapp_gcce.mmp
+../../../stdlibs/libipc/internal/tposixipc/group/tipcposixcommon_gcce.mmp
+../../../stdlibs/libipc/internal/tposixipc/group/tipcposixftok_gcce.mmp
+../../../stdlibs/libipc/internal/tposixipc/group/tipcposixmkfifo_gcce.mmp
+../../../stdlibs/libipc/internal/tposixipc/group/tipcposixmq_gcce.mmp
+../../../stdlibs/libipc/internal/tposixipc/group/tipcposixpipe_gcce.mmp
+../../../stdlibs/libipc/internal/tposixipc/group/tipcposixsem_gcce.mmp
+../../../stdlibs/libipc/internal/tposixipc/group/tipcposixshm_gcce.mmp
+../../../stdlibs/libipc/internal/tperf/src/rpipe/group/rpipe_gcce.mmp
+../../../stdlibs/libipc/internal/tperf/src/msgq/group/msgcli_gcce.mmp
+../../../stdlibs/libipc/internal/tperf/src/msgq/group/msgperf_gcce.mmp
+../../../stdlibs/libipc/internal/tperf/src/msgq/group/msgsndrcv_gcce.mmp
+../../../stdlibs/libipc/internal/tperf/src/msgq/group/msgsrv_gcce.mmp
+../../../stdlibs/libipc/group/libcipcserver_gcce.mmp
+../../../stdlibs/libc/internal/testapps/twopen/twpopenwritechild/twpopenwritechild_gcce.mmp
+../../../stdlibs/libc/internal/testapps/twopen/twpopenreadchild/twpopenreadchild_gcce.mmp
+
+../../../stdlibs/libc/internal/testapps/tstdlib/group/testabort_gcce.mmp
+../../../stdlibs/libc/internal/testapps/tstdlib/group/testexit_gcce.mmp
+../../../stdlibs/libc/internal/testapps/tstdlib/group/testexitec_gcce.mmp
+../../../stdlibs/libc/internal/testapps/tstdlib/group/testsystem_gcce.mmp
+../../../stdlibs/libc/internal/testapps/tstdlib/group/test_exit_gcce.mmp
+../../../stdlibs/libc/internal/testapps/tstdlib/group/test_exite_gcce.mmp
+../../../stdlibs/libc/internal/testapps/tstdlib/group/tstdlib_helloworld_gcce.mmp
+*/
+/*
+../../../stdlibs/internal/ts/lsb/tset/group/abs_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/acos_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/asctime_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/asin_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/atan_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/atan2_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/atof_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/atoi_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/atol_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/bsearch_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/calloc_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/ceil_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/chdir_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/clearerr_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/close_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/closedir_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/cos_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/cosh_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/creat_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/dlclose_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/dlerror_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/dlopen_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/dup_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/dup2_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/exp_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fabs_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/fclose_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/fcntl_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/fcntl_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fdopen_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/feof_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/ferror_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/fflush_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fgetpos_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fgets_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fileno_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/floor_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fmod_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fopen_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fopen_x_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/fpathconf_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fprintf_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fputs_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fread_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/free_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/freopen_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/freopen_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/frexp_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fseek_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fsetpos_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/fstat_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/ftell_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/ftok_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/ftok_l_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/fwrite_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/getc_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/getcwd_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/gets_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/ldexp_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/link_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/log_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/log10_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/longjmp_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/lsb_ctime_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/lsb_difftime_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/lsb_gmtime_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/lsb_localtime_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/lsb_mktime_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/lsb_time_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/lseek_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/malloc_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/memchr_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/memcmp_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/memcpy_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/memmove_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/memset_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/mkdir_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/mkfifo_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/modf_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/msgctl_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/msgget_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/msgsnd_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/open_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/opendir_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/open_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/perror_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/pipe_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/pow_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/printf_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/putc_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/puts_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/qsort_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/rand_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/read_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/readdir_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/readv_l_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/realloc_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/remove_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/remove_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/rename_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/rewind_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/rewinddir_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/rmdir_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/scanf_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/scanf_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/seekdir_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/semctl_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/semget_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/semop_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/setbuf_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/setjmp_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/setvbuf_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/shmat_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/shmdt_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/shmget_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/sin_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/sinh_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/sqrt_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/srand_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/stat_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strcat_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strchr_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strcmp_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strcoll_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strcpy_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strcspn_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strerror_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strftime_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strftime_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strlen_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strncat_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strncmp_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strncpy_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strpbrk_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strptime_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strrchr_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strspn_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strstr_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strtod_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strtok_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strtol_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/strxfrm_x_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/tan_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/tanh_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/telldir_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/telldir_l_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/tmpfile_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/tmpnam_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/tzset_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/uname_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/ungetc_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/unlink_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/utime_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/vfprintf_gcce.mmp
+../../../stdlibs/internal/ts/lsb/tset/group/vprintf_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/write_gcce.mmp
+//../../../stdlibs/internal/ts/lsb/tset/group/writev_l_gcce.mmp
+//../../../stdlibs/backend/internal/tlibcbackend/tpopenwritechild/tpopenwritechild_gcce.mmp
+//../../../stdlibs/backend/internal/tlibcbackend/tpopenreadchild/tpopenreadchild_gcce.mmp
+//../../../ssl/libssl/internal/testapps/ssl_test/group/ssl_test_gcce.mmp
+//../../../ssl/libcrypto/internal/testapps/topenssl/group/openssl_app_gcce.mmp
+*/
+/*
+//../../../glib/internal/testapps/group/accumulator_gcce.mmp
+../../../glib/internal/testapps/group/array-test_gcce.mmp
+../../../glib/internal/testapps/group/atomic-test_gcce.mmp
+../../../glib/internal/testapps/group/byte_array_test_gcce.mmp
+../../../glib/internal/testapps/group/cache_test_gcce.mmp
+../../../glib/internal/testapps/group/child-test1_gcce.mmp
+../../../glib/internal/testapps/group/child-test2_gcce.mmp
+../../../glib/internal/testapps/group/closure-marshal_gcce.mmp
+../../../glib/internal/testapps/group/closures_gcce.mmp
+../../../glib/internal/testapps/group/completion-test_gcce.mmp
+../../../glib/internal/testapps/group/completion_test_gcce.mmp
+../../../glib/internal/testapps/group/convert-test_gcce.mmp
+../../../glib/internal/testapps/group/datalist_test_gcce.mmp
+../../../glib/internal/testapps/group/dataset_test_gcce.mmp
+../../../glib/internal/testapps/group/date-test_gcce.mmp
+../../../glib/internal/testapps/group/date_test_gcce.mmp
+../../../glib/internal/testapps/group/defaultiface_gcce.mmp
+../../../glib/internal/testapps/group/dirname-test_gcce.mmp
+../../../glib/internal/testapps/group/dir_test_gcce.mmp
+../../../glib/internal/testapps/group/env-test_gcce.mmp
+../../../glib/internal/testapps/group/file-test_gcce.mmp
+../../../glib/internal/testapps/group/gio-test_gcce.mmp
+../../../glib/internal/testapps/group/gvalue-test_gcce.mmp
+//../../../glib/internal/testapps/group/g_test1_gcce.mmp
+../../../glib/internal/testapps/group/g_test2_gcce.mmp
+../../../glib/internal/testapps/group/hash-test_gcce.mmp
+../../../glib/internal/testapps/group/helloworld_gcce.mmp
+../../../glib/internal/testapps/group/hook_test_gcce.mmp
+../../../glib/internal/testapps/group/ifacecheck_gcce.mmp
+../../../glib/internal/testapps/group/ifaceinherit_gcce.mmp
+../../../glib/internal/testapps/group/ifaceinit_gcce.mmp
+../../../glib/internal/testapps/group/ifaceproperties_gcce.mmp
+../../../glib/internal/testapps/group/iochannel-test_gcce.mmp
+../../../glib/internal/testapps/group/iochannel_test_gcce.mmp
+../../../glib/internal/testapps/group/keyfile-test_gcce.mmp
+../../../glib/internal/testapps/group/keyfile_test_gcce.mmp
+../../../glib/internal/testapps/group/libmoduletestplugin_a_gcce.mmp
+../../../glib/internal/testapps/group/libmoduletestplugin_b_gcce.mmp
+../../../glib/internal/testapps/group/list-test_gcce.mmp
+../../../glib/internal/testapps/group/list_test_gcce.mmp
+../../../glib/internal/testapps/group/log_manual1_gcce.mmp
+../../../glib/internal/testapps/group/log_test_gcce.mmp
+../../../glib/internal/testapps/group/mainloop-test_gcce.mmp
+../../../glib/internal/testapps/group/main_loop_test_gcce.mmp
+../../../glib/internal/testapps/group/mapping-test_gcce.mmp
+../../../glib/internal/testapps/group/markup-escape-test_gcce.mmp
+../../../glib/internal/testapps/group/markup-test_gcce.mmp
+../../../glib/internal/testapps/group/markup_test_gcce.mmp
+../../../glib/internal/testapps/group/mem_profile_test_gcce.mmp
+../../../glib/internal/testapps/group/mem_test_gcce.mmp
+../../../glib/internal/testapps/group/misc_test_gcce.mmp
+../../../glib/internal/testapps/group/module-test_gcce.mmp
+../../../glib/internal/testapps/group/node-test_gcce.mmp
+../../../glib/internal/testapps/group/objects_gcce.mmp
+../../../glib/internal/testapps/group/objects2_gcce.mmp
+../../../glib/internal/testapps/group/option-test_gcce.mmp
+../../../glib/internal/testapps/group/override_gcce.mmp
+../../../glib/internal/testapps/group/patterntest_gcce.mmp
+../../../glib/internal/testapps/group/printf-test_gcce.mmp
+../../../glib/internal/testapps/group/properties_gcce.mmp
+../../../glib/internal/testapps/group/properties2_gcce.mmp
+../../../glib/internal/testapps/group/qsort-test_gcce.mmp
+../../../glib/internal/testapps/group/queue-test_gcce.mmp
+../../../glib/internal/testapps/group/rand-test_gcce.mmp
+../../../glib/internal/testapps/group/references_gcce.mmp
+../../../glib/internal/testapps/group/relation-test_gcce.mmp
+../../../glib/internal/testapps/group/shell-test_gcce.mmp
+../../../glib/internal/testapps/group/signals-multithread_gcce.mmp
+../../../glib/internal/testapps/group/signals-singlethread_gcce.mmp
+../../../glib/internal/testapps/group/slist-test_gcce.mmp
+../../../glib/internal/testapps/group/spawn_test_gcce.mmp
+../../../glib/internal/testapps/group/strfunc-test_gcce.mmp
+../../../glib/internal/testapps/group/string-test_gcce.mmp
+../../../glib/internal/testapps/group/strtod-test_gcce.mmp
+../../../glib/internal/testapps/group/tasyncqueue_gcce.mmp
+../../../glib/internal/testapps/group/testgdate_gcce.mmp
+../../../glib/internal/testapps/group/testgdateparser_gcce.mmp
+../../../glib/internal/testapps/group/testglib_gcce.mmp
+//../../../glib/internal/testapps/group/testgobject_gcce.mmp
+../../../glib/internal/testapps/group/tgstring_gcce.mmp
+../../../glib/internal/testapps/group/thread-test_gcce.mmp
+../../../glib/internal/testapps/group/threadpool-test_gcce.mmp
+../../../glib/internal/testapps/group/timeloop-closure_gcce.mmp
+../../../glib/internal/testapps/group/timeloop_gcce.mmp
+../../../glib/internal/testapps/group/tmanual_gcce.mmp
+../../../glib/internal/testapps/group/tmisc_gcce.mmp
+../../../glib/internal/testapps/group/tnode_gcce.mmp
+../../../glib/internal/testapps/group/toption_gcce.mmp
+../../../glib/internal/testapps/group/tree-test_gcce.mmp
+../../../glib/internal/testapps/group/tscanner_gcce.mmp
+../../../glib/internal/testapps/group/tslist_gcce.mmp
+../../../glib/internal/testapps/group/tthread_gcce.mmp
+../../../glib/internal/testapps/group/ttrash_gcce.mmp
+../../../glib/internal/testapps/group/ttree_gcce.mmp
+../../../glib/internal/testapps/group/tunichar_gcce.mmp
+../../../glib/internal/testapps/group/tutf8_gcce.mmp
+../../../glib/internal/testapps/group/type-test_gcce.mmp
+../../../glib/internal/testapps/group/unicode-caseconv_gcce.mmp
+../../../glib/internal/testapps/group/unicode-collate_gcce.mmp
+../../../glib/internal/testapps/group/unicode-encoding_gcce.mmp
+../../../glib/internal/testapps/group/unicode-normalize_gcce.mmp
+../../../glib/internal/testapps/group/uri-test_gcce.mmp
+*/
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/group/gcce-lib.mmp	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,74 @@
+/*
+ * Filename: utf8-validate.mmp.
+ * This file was generated by CreateTestSuite.bat script.
+ */
+
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Description:   Contains the source for char * to Descriptor8 conversions
+ *
+*/
+
+MACRO			SYMBIAN
+MACRO			HAVE_CONFIG_H
+
+
+#include <domain/osextensions/platform_paths.hrh>
+OSEXT_LAYER_SYSTEMINCLUDE
+
+TARGET          gcce-lib.dll
+TARGETTYPE      dll
+UID               0x1000008d  0xe1000101
+
+EpocAllowDllData
+
+
+
+#ifdef EKA2
+CAPABILITY ALL -TCB
+VENDORID        VID_DEFAULT
+#endif
+
+USERINCLUDE   ../inc
+
+SYSTEMINCLUDE		/epoc32/include 
+SYSTEMINCLUDE		/epoc32/include/osextensions/stdapis
+SYSTEMINCLUDE		/epoc32/include/osextensions/stdapis/glib-2.0
+SYSTEMINCLUDE		/epoc32/include/osextensions/stdapis/glib-2.0/glib
+SYSTEMINCLUDE		/epoc32/include/osextensions/stdapis/glib-2.0/gobject
+
+
+
+SOURCEPATH	../src
+SOURCE			gcce-lib.cpp
+
+
+LIBRARY 		libglib.lib
+LIBRARY 		libc.lib
+LIBRARY			euser.lib
+
+//VENDORID VID_DEFAULT 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/group/gcce-load.mmp	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,77 @@
+/*
+ * Filename: utf8-validate.mmp.
+ * This file was generated by CreateTestSuite.bat script.
+ */
+
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Description:   Contains the source for char * to Descriptor8 conversions
+ *
+*/
+
+MACRO			SYMBIAN
+MACRO			HAVE_CONFIG_H
+
+TARGET			gcce-load.exe
+
+TARGETTYPE		exe
+
+UID               0x1000008d  0xe0001038
+
+
+#ifdef EKA2
+CAPABILITY ALL -TCB
+VENDORID        VID_DEFAULT
+#endif
+
+SYSTEMINCLUDE		/epoc32/include 
+SYSTEMINCLUDE		/epoc32/include/osextensions/stdapis
+SYSTEMINCLUDE		/epoc32/include/osextensions/stdapis/glib-2.0
+SYSTEMINCLUDE		/epoc32/include/osextensions/stdapis/glib-2.0/glib
+SYSTEMINCLUDE		/epoc32/include/osextensions/stdapis/glib-2.0/gobject
+
+
+
+USERINCLUDE   ../inc
+
+
+SOURCEPATH	../src
+SOURCE			gcce-load.cpp
+
+
+#ifdef GCCE
+STATICLIBRARY libcrt0_gcce.lib
+#else
+STATICLIBRARY libcrt0.lib
+#endif
+
+LIBRARY 		gcce-lib.lib
+LIBRARY 		libglib.lib
+LIBRARY 		libc.lib
+LIBRARY			euser.lib
+
+//VENDORID VID_DEFAULT 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/group/gcce-validate.mmp	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,75 @@
+/*
+ * Filename: utf8-validate.mmp.
+ * This file was generated by CreateTestSuite.bat script.
+ */
+
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Description:   Contains the source for char * to Descriptor8 conversions
+ *
+*/
+
+MACRO			SYMBIAN
+MACRO			HAVE_CONFIG_H
+
+TARGET			gcce-validate.exe
+
+TARGETTYPE		exe
+
+UID               0x1000008d  0xe0000038
+
+
+#ifdef EKA2
+CAPABILITY ALL -TCB
+VENDORID        VID_DEFAULT
+#endif
+
+SYSTEMINCLUDE		/epoc32/include 
+SYSTEMINCLUDE		/epoc32/include/osextensions/stdapis
+
+
+USERINCLUDE   ../inc
+
+SOURCEPATH	../src
+SOURCE			gcce-validate.cpp
+
+
+#ifdef GCCE
+STATICLIBRARY libcrt0_gcce.lib
+#else
+STATICLIBRARY libcrt0.lib
+#endif
+
+LIBRARY 		libdl.lib
+LIBRARY 		libz.lib
+LIBRARY 		libm.lib
+LIBRARY 		testharness.lib
+LIBRARY 		libpthread.lib
+LIBRARY 		libc.lib
+LIBRARY			euser.lib
+
+//VENDORID VID_DEFAULT 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/group/gcce_gcce-load_module_blr_hw_component.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,27 @@
+<component>
+		<name>gcce_gcce-load_blr_hw_component</name>
+		<testset>
+				<id>gcce_gcce-load_blr</id>
+				<priority>High</priority>
+
+		<install type="binary">
+				<src>gcce-load.exe</src>
+				<dst>c:\sys\bin\gcce-load.exe</dst>
+		</install> 
+				
+	  		<install type="binary">
+				<src>gcce-lib.dll</src>
+				<dst>c:\sys\bin\gcce-lib.dll</dst>
+ 			</install>
+
+
+		
+		<execute>
+				<file>c:\sys\bin\gcce-load.exe</file>
+        <result type="common">
+            <file>c:\spd_logs\xml\gcce-load.xml</file>
+        </result>
+        <timeout>300</timeout>
+		</execute> 
+</testset>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/group/gcce_gcce-validate_module_blr_hw_component.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,27 @@
+<component>
+		<name>gcce_gcce-validate_blr_hw_component</name>
+		<testset>
+				<id>gcce_gcce-validate_blr</id>
+				<priority>High</priority>
+
+		<install type="binary">
+				<src>gcce-validate.exe</src>
+				<dst>c:\sys\bin\gcce-validate.exe</dst>
+		</install> 
+				
+	  		<install type="binary">
+				<src>testharness.dll</src>
+				<dst>c:\sys\bin\testharness.dll</dst>
+ 			</install>
+
+
+		
+		<execute>
+				<file>c:\sys\bin\gcce-validate.exe</file>
+        <result type="common">
+            <file>c:\spd_logs\xml\gcce-validate.xml</file>
+        </result>
+        <timeout>300</timeout>
+		</execute> 
+</testset>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/group/genatsmodules.bat	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,2365 @@
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+rem Redistribution and use in source and binary forms, with or without 
+rem modification, are permitted provided that the following conditions are met:
+
+rem Redistributions of source code must retain the above copyright notice, this 
+rem list of conditions and the following disclaimer.
+rem Redistributions in binary form must reproduce the above copyright notice, 
+rem this list of conditions and the following disclaimer in the documentation 
+rem and/or other materials provided with the distribution.
+rem Neither the name of Nokia Corporation nor the names of its contributors 
+rem may be used to endorse or promote products derived from this software 
+rem without specific prior written permission.
+
+rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+rem AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+rem IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+rem DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+rem FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+rem DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+rem SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+rem CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+rem OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+rem
+rem Description:      
+rem
+
+@perl -x GenATSModules.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 
+@goto end
+
+#!perl
+use strict;
+use File::Find;
+use File::Copy;
+use Cwd;
+
+my $sendEmail = "no";
+my $target = "winsspd";
+my $suite;
+my $install = "no";
+my $session = "no";
+my $combinedSession = "no";
+my $sdkversion="";
+
+my %DirHash;
+
+
+if(scalar @ARGV ==0 || $ARGV[0] =~ /[\-\\\/][h\?]/ || $ARGV[0] =~ /help/ )
+{
+	print <<EOHelp;
+genatsmodules.bat - hardcoded script to generate ATSINPUT folders for mobileruntime and ngi projects	
+Usage:
+	genatsmodules.bat
+		Create ATSINPUT for the default testsuite based on 
+		location it is executed from place in stdlibs/internal 
+		and run and it generates ATSINPUT for stdlibs
+		similiarly place it in ssl/internal or glib/internal or 
+    ngi/internal and run to generate  ATSINPUT for ssl, glib  
+    and ngi respectively	
+  
+  genatsmodules [libname]
+			where libname can be stdlibs, ssl, glib, etc. Creates 
+			ats test drop for given library. Valid from any internal
+			folder of mobileruntime.
+			
+  
+  genatsmodules ngi
+			create ngi testsuite. Valid inside ngi/internal only
+	
+      
+	genatsmodules ltp
+			create ltp testsuite. Valid inside stdlibs/internal only
+	
+	genatsmodules lsb
+			create lsb testsuite. Valid inside stdlibs/internal only
+			
+	genatsmodules stdcpp
+			create stdcpp testsuite. Valid inside stdcpp/internal only
+			
+	genatsmodules [libname] install 
+		 where libname can be stdlibs, ssl, glib, ltp, lsb to create a 
+		 ATSINPUT where the dependent mobileruntime libraries are also 
+		 copied and used (It copies the dependent libraries using the 
+		 ATS component files)
+		
+	genatsmodules session [libname] [target] 		
+		where libname is any of the standard libs as shown above and 
+		target can be winsspd, winscw, scarfe, zeus etc. to create 
+		session files for scarfe, winsspd etc. 
+		
+genatsmodules session combined [target] 				
+      will look at the existing ATSINPUT(which can have any 
+      combination of created components and create a combined 
+      session file. This way you get increased flexibility in 
+      the libraries you choose to combine into a single session 
+      file. If the target is a hardware target(that is not winsspd
+      or winscw), the script will first attempt to find a target 
+      specific component file and if not found, the generic hw 
+      component file. 
+	
+
+	Note:
+	ATSINPUT creation is a 2 stage process. First we create 
+	the components and then we run (for example) 
+	"genatsmodules session stdlibs winscw" and 
+	"genatsmodules session stdlibs scarfe" to create the 
+	session files.
+EOHelp
+		exit();
+}
+my $do_armv5 = 1;
+my $do_winscw = 1;
+
+if(scalar @ARGV == 1)
+{
+	if($ARGV[0] eq "session")
+	{
+		die("parameter session must be followed by libname and target platform");
+	}
+	else
+	{
+		$suite = $ARGV[0];
+	}
+}
+elsif(scalar @ARGV == 2)
+{
+	if($ARGV[0] eq  "session")
+	{
+		die("parameter session must be followed by libname and target platform");
+	}
+	elsif($ARGV[1] eq "install")
+	{
+		$suite = $ARGV[0];
+		$install = "yes";
+	}
+	elsif($ARGV[1] eq "armv5")
+	{
+		$do_winscw = 0;
+	}
+	elsif($ARGV[1] eq "winscw")
+	{
+		$do_armv5 = 0; 
+	}
+	else
+	{
+		die("second parameter after target platform $ARGV[0] can only be \"install\" ");
+	}
+}
+elsif(scalar @ARGV == 3)
+{
+		if($ARGV[0] ne "session")
+		{
+			die("invalid combination of parameters. Program expected 1st parameter to be \"session\" ");
+		}
+		else
+		{
+			$session = "yes";
+			$suite = $ARGV[1];
+			$target = $ARGV[2];
+	
+			if($suite eq "combined")
+			{		
+				$combinedSession = "yes";
+	  	}
+			
+		}
+}
+elsif(scalar @ARGV == 4)
+{
+		if($ARGV[0] ne "session")
+		{
+			die("invalid combination of parameters. Program expected 1st parameter to be \"session\" ");
+		}
+		else
+		{
+			$session = "yes";
+			$suite = $ARGV[1];
+			$target = $ARGV[2];
+			$sdkversion = $ARGV[3];
+			if($suite eq "combined")
+			{		
+				$combinedSession = "yes";
+	  	}
+		}
+}
+else
+{
+		die("program recieved too many parameters!");
+}#end of commandline processing
+
+
+	
+my $rootDrive = substr(getcwd(), 0,2);
+my $templateRoot = getcwd();
+if(rindex($templateRoot, "internal") == -1 && ($suite ne "stdlibs" && $suite ne "pcts" ) )
+{
+	die("Please run the script from the appropriate internal folder in the mobileruntime /omerta project!!");
+}
+else
+{
+
+	 my $srcPrefix = getcwd();
+	 $srcPrefix =~ /(.*)internal.*/;
+	 $srcPrefix = $1;
+	 if(rindex($templateRoot, "stdlibs") != -1)
+	 {
+	 	$srcPrefix =~ /(.*)stdlibs.*/;
+	 	$srcPrefix = $1;
+	 	
+	 	if($suite eq "glib")
+	 	{
+	 		$templateRoot = $srcPrefix."/glib/internal/";
+	 	}
+	 	elsif($suite eq "ssl")
+	 	{
+	 		$templateRoot = $srcPrefix."/ssl/internal/";
+	 	}
+	 	elsif($suite eq "ngi")
+	 	{
+	 		print "ngi atsinput creation not supported from mobileruntime\n";
+	 		exit();
+	 	}
+	 }
+	 
+	if(rindex($templateRoot, "glib") != -1)
+	{
+		$suite = "glib";
+	}
+	elsif(rindex($templateRoot, "ssl") != -1)
+	{
+		$suite = "ssl";
+	}
+	elsif(rindex($templateRoot, "ngi") != -1)
+	{
+		$suite = "ngi";
+	}
+}
+
+
+my $optsGroupPath = $templateRoot."/ts/ltp/opts/group/";
+#$optsGroupPath = getcwd()."/ts/ltp/opts/group/";
+my $ltpPath =$templateRoot."/ts/ltp/";
+#my $ltpPath =getcwd()."/ts/ltp/";
+my $stdcppPath =getcwd()."/testapps/stlport/";
+my $gnuPath =getcwd()."/testapps/gnu/";
+my $tstdcppPath =getcwd()."/testapps/tstdcpp/";
+my	$ATSRoot = getcwd()."\\ATSINPUT";
+
+my @generatedModules;
+my %cfglocation;
+
+my $TDIR = "\\internal\\testapps\\";
+
+my @libcModules = ( "libc_loc_blr",  "libc_time_blr", "libc_db_blr","tctype", "tifioctls", "tinet",
+                      "tlibcwchar", "tlink", "tmkfifo", "tmmap", "tmsgqueue",
+		      "tnetdb", "tpipe","tregex", "tsemaphore", "tshm","tsocket" ,
+		      "tstdio", "tstdlib", "tstring", "tsyscalls",
+		      "tsyssim", "twctype", "tselect", "tsysunistd", "twideapis", "twopen", "twchar",
+               );
+
+my @libdlModules = ("tlibdl");
+my @libmModules = ("libm_double_blr", "libm_float_blr","libm_ldouble_blr");
+
+
+my @pthreadModules = ( "testcondbroadcast", "testconddestroy", "testcondinit", "testcondsignal", "testcondtimedwait", "testcondwait",
+"tmutex", "tpthread", "testpthreadonce", "testsemclose", "testsemdestroy", "testsemgetvalue", "testseminit", "testsemopen", "testsempost",
+"testsemtimedwait", "testsemtrywait", "testsemunlink", "testsemwait");
+
+
+my @stdliblist = ( "libc", "libpthread", "libdl", "libm", "libz", "libcrypt");
+my @dllList = ("backend.dll", "libc.dll", "LibCIpcClient.dll", "LibCIpcServer.exe", "libdl.dll", "libm.dll", "libpthread.dll", "libcrypt.dll", "libz.dll", "libclogger.dll");
+
+
+my @stdcpplist = (
+  				 ["fstream1_input.txt", "stlport_fstream", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["nextperm1_good.txt", "stlport_nextprm", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["nextperm2_good.txt", "stlport_nextprm", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["ostmit_good.txt", "stlport_ostmit", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["seek.txt", "stlport_seek", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["filebuf-1.tst","filebuf", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["filebuf-1.txt","filebuf", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["filebuf-2.tst","filebuf", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["filebuf-3.tst","filebuf", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["istream_extractor_other-1.tst","istream_extractor_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["istream_extractor_other-1.txt","istream_extractor_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["istream_extractor_other-2.tst","istream_extractor_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["istream_unformatted-1.tst","istream_unformatted", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["istream_unformatted-1.txt","istream_unformatted", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["istream_unformatted-2.tst","istream_unformatted", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["ostream_inserter_char-1.tst","ostream_inserter_char", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["ostream_inserter_other-1.tst","ostream_inserter_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["ostream_inserter_other-2.tst","ostream_inserter_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["infile_auto.txt","multi_thread_auto", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+);
+
+my @gliblist = (
+  				 ["1.gmarkup", "markup_test", "/epoc32/winscw/c/", "/General/", "C:"],
+   				 ["1.gmarkup", "markup-test", "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["iochannel-test-infile", "iochannel_test",  "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["iochannel-test-infile", "iochannel-test",  "/epoc32/winscw/c/", "/General/", "C:"],
+#  				 ["casemap.bin",  "unicode-caseconv",  "/epoc32/winscw/c/", "/General/", "C:"],
+#  				 ["casefold.bin", "unicode-caseconv",  "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["utf8.txt", "unicode-encoding","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["casecollate.txt", "unicode-collate","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["utf8_hindi.txt", "tutf8","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["scanfile.txt", "tscanner","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["test.txt", "dir_test","/epoc32/winscw/c/temp/tmp/", "/General/", "C:\\temp\\tmp"],
+  				 ["NormalizationTest.txt", "unicode-normalize","/epoc32/winscw/c/", "/General/", "C:"],
+  				 
+  				 ["helloworld.exe", "spawn_test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["helloworld.exe", "spawn_test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  				 ["libmoduletestplugin_a.dll", "module-test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["libmoduletestplugin_a.dll", "module-test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  				 ["libmoduletestplugin_b.dll", "module-test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["libmoduletestplugin_b.dll", "module-test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  			  				 
+  				 );
+  				 
+my @ngilist = (
+           ["Test.txt", "ngi_sa_runtimetester", "/EPOC32/winscw/c/Private/10202be9/", "/General/", ""],
+  				 ["sa_input_repository.txt", "shared","/EPOC32/armv5/c/TestFramework/", "/armv5_urel/", ""],
+  				 ["sa_input_repository.txt", "shared","/EPOC32/winscw/c/TestFramework/", "/winscw_udeb/", ""],
+  				 ["audiomixingfiles.ini", "ngi_sa_audiomixing","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+  				 ["sa_camera_supported.ini", "ngi_sa_camera","/EPOC32/armv5/c/TestFramework/", "/general/", ""],
+  				 ["sa_clip.ini", "ngi_sa_clip","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+  				 ["devicecapabilitiesdata.ini", "ngi_sa_devicecapabilities","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+   				 ["highlevelaudiofiles.ini", "ngi_sa_highlevelaudio","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+					 ["lowlevelaudiofiles.ini", "ngi_sa_lowlevelaudio","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+					 ["runtimedata.ini", "ngi_sa_runtimetester","/EPOC32/winscw/c/TestFramework/", "/general/", ""],						
+					 ["sa_stream.ini", "ngi_sa_stream","/EPOC32/winscw/c/TestFramework/", "/general/", ""],						
+					 #["*", "ngi_sa_videoplayback","/../graphics/video/internal/sa_videoplayback/data/", "/general/", ""],
+					 ["test.*", "ngi_sa_images","/EPOC32/release/winscw/udeb/z/", "/general/", ""]
+					);
+
+  				 
+
+
+my $validexpansions = "all stdlibs combined";
+my $validLibraries = "ltp opts lsb glib ssl ngi pcts stdcpp gcce libc-locale";
+if(rindex($validexpansions, $suite)== -1 && rindex($validLibraries, $suite) == -1)
+{
+	die("$suite is not a valid library. Valid options are $validexpansions $validLibraries");
+}
+
+my $dontStrip = 1;
+my	@liblist;
+if($suite eq "all")
+{
+		@liblist = split " ", $validLibraries;
+		@liblist = (@liblist, @stdliblist);
+		
+}#suite all
+elsif($suite eq "ltp")
+{
+	 @liblist = ("ltp", "opts");
+}
+elsif($suite eq "stdlibs")
+{
+		@liblist = @stdliblist;
+}
+elsif($suite eq "ssl")
+{
+	@liblist = ("libcrypto", "libssl");
+}
+else
+{
+		@liblist = ("$suite");
+}
+
+#	foreach my $l(@liblist)
+#	{
+#			print "$l was there\n";
+#	}
+
+
+if($combinedSession eq "yes")
+{
+	GenerateSessionFile("combined", $target);
+	exit();
+}
+
+if($session eq "yes")
+{
+	my $file = $templateRoot."/testsession.xml";
+	opendir(DIRHANDLE, $ATSRoot) || die("Please try to create Session files only after ATSINPUT/components has been created!");
+	closedir(DIRHANDLE);
+	$dontStrip = 1;
+	if($suite eq "ngi" || $suite eq "ssl")
+	{
+		my $dst = $ATSRoot."/$suite"."_testsession.xml";
+		copy($file, $dst);
+		exit();
+	}
+	foreach my $lib(@liblist)
+	{          
+			@generatedModules = GenGenModules($lib);
+			if(scalar @generatedModules != 0)
+			{
+				#print "Generating for $lib\n";
+				GenerateSessionFile($lib, $target);
+			}
+	}
+	
+	#@generatedModules = GetAllModules();
+	#if(scalar @generatedModules != 0)
+	#{
+	#		GenerateSessionFile("combined",$target);
+	#}
+	exit();
+}#session generation code
+
+
+if ($suite eq "ltp" || $suite eq "all")
+{
+	my @ltpModules = GetLtpModules();
+	@generatedModules = @ltpModules;
+	DoGen("ltp", ".dll");
+	CopyLtpCfg("ltp");
+	
+	
+	my @saved = @dllList;
+	@dllList = ("ltplib.dll");
+	CopySharedDlls("ltp", \@dllList);
+	TransformXmls("ltp","shared");
+	@dllList = @saved;
+	
+	@generatedModules = GetCompiledModules($optsGroupPath."/bld.inf");
+	DoGen("opts",".dll");
+
+}
+if ($suite eq "glib")
+{
+	my $bldfile = $templateRoot."/testapps/group/bld.inf";
+	my @glibModules = GetCompiledModules($bldfile);
+	@generatedModules = @glibModules;
+	DoGen("glib",".exe");
+	my $gDataRef = \@gliblist;
+	CopyArbitDatFiles("glib",$gDataRef);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList;
+		my @glib2dllList = ("glibbackend.dll", "Libgobject.dll", "libgmodule.dll", "libgthread.dll",
+                "libglib.dll");
+                
+   my  @glib1List = ( "libgobject.dll", "libgmodule.dll", "libgthread.dll",  "libglib.dll", );
+  @dllList = @glib2dllList;
+  CopySharedDlls("glib",\@dllList);     	
+  TransformXmls("glib", "shared");
+   	
+		@dllList = @saved;
+	}#if install
+}#glib
+
+
+if ($suite eq "ssl")
+{
+	my $stripStatus = $dontStrip;
+	$dontStrip = 0;
+	GenCryptoTest();
+	if($install eq "yes")
+	{
+		@dllList = (@dllList, "libcrypto.dll", "libssl.dll");   
+	}#if install
+	$dontStrip = $stripStatus;
+}#ssl
+
+if($suite eq "ngi")
+{
+
+	GenNgiTest();
+	CopyNgiXmls();
+	CopyArbitDatFiles("",\@ngilist);
+
+}
+
+if($suite eq "stdcpp")
+{
+	@generatedModules = GetstdcppModules();
+	DoGen("stdcpp",".dll");
+	CopyLtpCfg("stdcpp");
+	@generatedModules = GetgnuModules();
+	DoGen("stdcpp",".exe");
+        @generatedModules = GetTstdcppModules();
+	DoGen("stdcpp",".exe");
+	CopyArbitDatFiles("stdcpp",\@stdcpplist);
+	
+	if($install eq "yes")
+	{
+		@generatedModules = GenGenModules("stdcpp");
+		my @saved = @dllList;
+		my @cppList = ("libstdcpp.dll");
+       @dllList = @cppList;
+		CopySharedDlls("stdcpp",\@dllList);     
+	  TransformXmls("stdcpp", "shared");
+		@dllList = @saved;
+	}#if install
+}
+	
+
+if($suite eq "lsb" || $suite eq "all")
+{
+	my @lsbModules = GetLsbModules();
+	@generatedModules = @lsbModules;
+	DoGen("lsb",".exe");
+	
+	my @depDlls;
+	my $dll;
+	
+	#copying the common dlls
+	@depDlls  = 
+	(
+	 "libapi.dll",
+	 "tcm.dll",
+	 "vlib.dll",
+	);
+		
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	#now copy the cfg files
+	CopyLsbCfg("lsb");	
+	#now copy the extra dependency dlls
+	
+	#dlopen
+	@generatedModules = ("dlopen");
+	
+	
+	
+	@depDlls  = 
+	(
+	 "dynlibtest.1.dll",
+	 "dynlibtest.11.1.dll",
+	 "dynlibtest.11.2.dll",
+	 "dynlibtest.12g.dll",
+	 "dynlibtest.12r.dll",
+	 "dynlibtest.14.1.dll",
+	 "dynlibtest.14.2.dll",
+	 "dynlibtest.14.3.dll",
+	 "dynlibtest.3.1.dll",
+	 "dynlibtest.3.2.dll",
+	 "dynlibtest.3.dll",
+	 "dynlibtest.4.dll",
+	 "dynlibtest.8.dll",
+	 "dynlibtest.9.dll",
+	 "dynlibtest.3.dll",
+	 "dynlibtest.8.dll",
+	);
+	
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#dlclose
+	@generatedModules = ("dlclose");
+	@depDlls = ("dynlibclose.1.dll");
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#dlerror
+	@generatedModules = ("dlerror");
+	@depDlls = ("dynlib.dll");
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#now copy the xmls!
+	my $srcDir = $templateRoot."/ts/lsbsuites/group/";
+	
+	my $dst;
+	
+	foreach my $dllib("dlopen", "dlclose", "dlerror")
+	{
+		$dst  = $ATSRoot."\\components\\lsb_".$dllib."\\";
+		copy($srcDir."/lsb_".$dllib."_module_blr_hw_component.xml", $dst) || die("DIED: unable to copy from $srcDir!\n");
+		copy($srcDir."/lsb_".$dllib."_module_blr_winsspd_component.xml", $dst) || die("DIED: unable to copy from $srcDir!\n");
+	}
+	
+}
+
+if($suite eq "gcce")
+{
+
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	@generatedModules = ("gcce-validate", "gcce-load");
+		
+	my @depDlls  = 
+	(
+		"gcce-lib.dll",
+	);
+	
+	my $suffix = ".exe";
+	my $libname = "gcce";
+	
+	
+	my $src;
+	my $dst;
+	foreach my $module(@generatedModules)
+	{
+		my $relroot = $ATSRoot."\\components\\$libname"."_$module";
+		mkdir $relroot || die("DIED: unable to create dir $module\n");
+		mkdir $relroot."\\armv5_urel" || die("DIED: unable to create dir $relroot\\armv5_urel\n");
+		
+		#GenExeXmls($module,$libname);
+		
+		$src = $rootDrive."\\epoc32\\release\\gcce\\urel\\".$module.$suffix;
+		$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+		$dst = $dst."\\armv5_urel\\";
+		copy($src, $dst)  || warn("unable to copy $src to $dst");
+	}
+	$src = $rootDrive."\\epoc32\\release\\gcce\\urel\\"."gcce-lib.dll";
+	$dst = $ATSRoot."\\components\\gcce_gcce-load";
+	$dst = $dst."\\armv5_urel\\";
+	copy($src, $dst)  || warn("unable to copy $src to $dst");
+	
+		$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\"."testharness.dll";
+	  $dst = $ATSRoot."\\components\\gcce_gcce-validate";
+		$dst = $dst."\\armv5_urel\\";
+		copy($src, $dst)  || warn("unable to copy $src to $dst");
+	
+	
+	my @list = (
+  				 ["gcce_gcce-load_module_blr_hw_component.xml", "gcce-load", "./","/", ""],
+  				 ["gcce_gcce-validate_module_blr_hw_component.xml", "gcce-validate", "./","/", ""],
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("gcce",$bDataRef);  				 
+	
+	
+}#if gcce
+
+
+
+if($suite eq "libc-locale")
+{
+	$dontStrip = 0;
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	@generatedModules = ("tstring");
+	DoGen("libc",".dll");
+	
+	my @localelist = (
+	  				 ["locales.txt", "string", "../libc/internal/testapps/tstring/data/", "/General/", ""],
+	  				 ["tstring_locale_component.xml", "string", "../libc/internal/testapps/tstring/group/", "/", ""],
+	 
+	  				 );
+		
+  my $bDataRef = \@localelist;  				 
+	CopyArbitDatFiles("libc",$bDataRef);  				 
+	rename($ATSRoot."/components/libc_string/"."tstring_locale_component.xml", $ATSRoot."/components/libc_string/"."libc_string_module_blr_hw_component.xml");
+	
+}#if libc-locale
+
+
+if($suite eq "pcts")
+{
+	my $bldfile = $templateRoot."/group/bld.inf";
+	my @pctsModules = GetCompiledModules($bldfile);
+	@generatedModules = @pctsModules;
+	DoGen("pcts",".exe");
+	
+	my @depDlls;
+	my $dll;
+	
+	
+	#copying the common dlls
+	@depDlls  = 
+	(
+		"vsxlibapi.dll",
+		"rttm.exe",
+		"rtlibapi.dll",
+		"vsxvlib.dll",
+		"vsxgenlib.dll",
+		"vsxtsetlib.dll",
+		"vsxvport.dll",
+	);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList; 
+		@dllList = @depDlls;	
+		CopySharedDlls("pcts", \@depDlls);
+		TransformXmls("pcts","shared");
+		@dllList = @saved;
+		
+		#now copy the cfg files
+		my $dst;
+		my $srcDir = "/epoc32/winscw/c/data/tet/";
+		my $file1 = $srcDir."tet_code";
+		my $file2 = $srcDir."tetexec.cfg";
+		foreach my $module(@generatedModules)
+		{
+			$dst = $ATSRoot."\\components\\pcts_".$module;
+			$dst = $dst."\\General\\";
+			copy($file1, $dst) or die "copy: $! $file1 $dst";
+			copy($file2,$dst) or die "copy: $! $file2 $dst";
+		}
+	}
+		
+	
+	
+	
+	my $dst;	
+	foreach my $module(@generatedModules)
+	{
+		my $file3 = "/epoc32/winscw/c/logs/tet/m.".$module;
+
+		$dst = $ATSRoot."\\components\\pcts_".$module;
+		$dst = $dst."\\General\\";
+		copy($file3, $dst) or die "copy: $! $file3 $dst";
+	}#module
+}
+
+
+
+$dontStrip = 0;
+
+if($suite eq "stdlibs" || $suite eq "all")
+{
+	@generatedModules = ("tzlib");
+	DoGen("libz", ".dll");
+
+	@generatedModules = ("tlibcrypt");
+	DoGen("libcrypt",".dll");
+
+	@generatedModules = @libcModules;
+	DoGen("libc",".dll");
+	GenBackendTest();
+	
+	@generatedModules = ("twchar");
+	CopyDeps("libc","twchar_helloworld.exe");
+	
+	@generatedModules = ("twopen");
+	CopyDeps("libc","twpopenwritechild.exe");
+	CopyDeps("libc","twpopenreadchild.exe");
+
+
+	@generatedModules = @libdlModules;
+	DoGen("libdl",".dll");
+	CopyDeps("libdl","Dll1.dll");
+	CopyDeps("libdl","Dll2.dll");
+	CopyDeps("libdl","DependencyTestDll.dll");
+
+	@generatedModules = @libmModules;
+	DoGen("libm",".dll");
+
+	$TDIR = "\\internal\\";
+	@generatedModules = @pthreadModules;
+	DoGen("libpthread",".dll");
+	CopyDeps("libpthread","testharness.dll");
+
+	CopyDatFiles();
+}
+
+if($install eq "yes")
+{
+	foreach my $lib(@liblist)
+	{   
+		#print "Transforming lib $lib\n";       
+		@generatedModules = GenGenModules($lib);
+		my @oldList = @dllList;
+		if($do_winscw)
+  	{
+  		@dllList = (@dllList, "wsdsoln.dll", "libestw32.dll");
+  		CopySharedDlls($lib,\@dllList,"winscw");     	
+	  	TransformXmls($lib, "shared","winscw");
+  	}
+  	@dllList = @oldList;
+  	if($do_armv5)
+  	{
+	  	CopySharedDlls($lib,\@dllList,"armv5");     	
+	  	TransformXmls($lib, "shared","armv5");
+  	}
+	}#FOREACH
+}#if install
+
+
+
+#function to generate ModuleList for a compiled bld.inf
+sub GetCompiledModules($)
+{
+	my $file = shift @_;
+	my @moduleList;
+	
+	
+	# Open input file
+	open (INFILE, "<".$file ) || die ("DIED: Can not find $file!");
+
+	while (<INFILE>)
+	{
+		if(/(.*)\.mmp/ && $1 !~ /^\/\//) 
+	  {
+	  		if($_ !~ /\/\/Not for ATS/)
+	  		{
+	  			push @moduleList, $1;
+	  		}
+	  }
+	}
+	close (INFILE);
+	return @moduleList;
+}
+
+my @groupList;
+sub GetLtpModules()
+{
+        my $prevDir = getcwd();
+        my @rootList = ("kernel", "misc");
+        my @totalgroupList;
+        foreach my $node(@rootList)
+        {
+        	chdir $ltpPath."/$node";
+        	@groupList = ();
+        	find(\&MakeGroupList, ".");
+        	@totalgroupList = (@totalgroupList, @groupList);
+        }
+        chdir $prevDir;
+        return @totalgroupList;
+}
+
+sub GetgnuModules()
+{
+      my $prevDir = getcwd();
+      chdir $gnuPath;
+      @groupList = ();
+      find(\&grovelAllMmpFiles, ".");
+      chdir $prevDir;
+      return @groupList;
+}
+
+sub grovelAllMmpFiles()
+{
+	if($_ =~ /(.*)\.mmp/ && ! ($_ =~ /manual/))
+	{
+		push @groupList, $1;#get name of module
+	}
+}
+
+sub GetstdcppModules()
+{
+        my $prevDir = getcwd();
+        my @rootList = ("auto_tests");
+        my @totalgroupList;
+        foreach my $node(@rootList)
+        {
+        	chdir $stdcppPath."/$node";
+        	@groupList = ();
+        	find(\&MakeGroupList, ".");
+        	@totalgroupList = (@totalgroupList, @groupList);
+        }
+        chdir $prevDir;
+        return @totalgroupList;
+}
+
+sub GetTstdcppModules()
+{
+      my $prevDir = getcwd();
+      chdir $tstdcppPath;
+      @groupList = ();
+      find(\&grovelAllMmpFiles, ".");
+      chdir $prevDir;
+      return @groupList;
+}
+
+sub MakeGroupList()
+{
+	my $currentDir = $File::Find::dir;
+	
+	#print "Current dir:$currentDir\n";
+	if( $currentDir =~ /.*\/(.*)\/group/)
+	{
+		if($cfglocation{$1} eq "")
+		{
+			$cfglocation{$1} = getcwd()."\/$1.cfg";
+			push @groupList, $1;#get name of module
+		}#first time in group
+	}#group found
+}#subrtn end
+
+
+#function that generates the ATS setup
+sub DoGen($$)
+{
+	my $libname = shift @_;
+	my $ext = shift @_;
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	
+	GenDirs($libname);
+	my $module;
+	foreach my $listed(@generatedModules)
+	{
+		if($ext eq ".exe")
+		{
+			GenExeXmls($listed,$libname);
+		}
+		else
+		{
+			#just in case no xml file was supplied
+			GenXmls($libname, $listed);
+		}
+	}
+	
+	CopyDlls($libname,$ext);
+	#copy the provided cfg, ini and xmls
+	if($libname eq "opts")
+	{
+		CopyOptsCfg($libname);
+	}
+	elsif($libname eq "ltp" || $libname eq "lsb" || $libname eq "glib")
+	{
+	  #copy latter and  dont copy respectively for ltp and lsb
+	}
+	else
+	{
+	  CopyCfgIniXmls($libname);
+	}
+}
+
+sub CopyCfgIniXmls()
+{
+	my $libname = pop @_;
+	
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach my $listed(@generatedModules)
+	{
+	  my $dirname = $listed;
+	  $dirname =~ s/test/t/;
+	  $module = StripModulePrefix($listed);
+	    
+		$src = $libRoot.$libname.$TDIR.$dirname."\\group\\";
+				
+		my $xmlCopied = "0";
+		my @globpattern = ("*.ini", "*.xml","*.cfg");
+		foreach my $pat(@globpattern)
+		{
+			$dst = $ATSRoot."\\components\\".$libname."_".$module;
+			if($pat ne "*.xml")
+			{
+				$dst = $dst."\\General\\";
+			}
+			else
+			{
+				$dst = $dst."\\";
+			}
+			my @filesFound = glob($src."\\$pat");
+			if(scalar @filesFound eq "0")
+			{
+				#print "No files found for module $module $pat!\n";
+				#print $src;
+			}
+			
+			#handcoded
+			if($pat eq "*.cfg" && $xmlCopied eq "0")#rename only if xml not copied
+			{
+				if(scalar @filesFound > 1)
+				{
+					print "Multiple cfg files found. Copying all!\n";
+				}
+				else
+				{
+						$dst = $dst.$listed.".cfg";
+				}
+			}				
+			elsif($pat eq "*.xml")
+			{
+				my $folder = $dst;
+				foreach my $from (@filesFound) 
+				{
+					if($from =~ /winscw_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_winscw_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+					elsif($from =~ /winsspd_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_winsspd_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+					elsif($from =~ /hw_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_hw_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+				}#examine individually			
+				if(scalar @filesFound > 2)
+				{
+					#print "Multiple xml files found!!!\n";
+				}
+				@filesFound = ();
+			}	
+				
+			
+			foreach my $from (@filesFound) 
+			{
+					copy($from, $dst) or die "DIED: copy: $! $from $dst";
+			}#copy individually			
+		}#globpattern
+	}#module
+}#fn
+
+#copy the cfg files for the opts test suite
+sub CopyOptsCfg()
+{
+	my $libname = pop @_;
+	
+	my $libRoot = $optsGroupPath."\\";
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach $module(@generatedModules)
+	{
+		$src = $libRoot.$module."\.cfg";
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($src, $dst) or warn "copy: $! $src $dst";
+	}#module
+}#fn
+
+#copy the lsb cfg files
+sub CopyLsbCfg()
+{
+	my $libname = pop @_;
+	
+	my $module;
+	
+	my $dst;
+	
+	my $srcDir = $templateRoot."/ts/lsbsuites/lsblib/data/";
+		
+	foreach $module(@generatedModules)
+	{
+		my $file1 = $srcDir."tet_code.cfg";
+		my $file2 = $srcDir."tetexec.cfg";
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($file1, $dst) or die "copy: $! $file1 $dst";
+		copy($file2, $dst) or die "copy: $! $file2 $dst";
+	}#module
+}#fn
+
+
+#copy the ltp cfg files
+sub CopyLtpCfg($)
+{
+	my $libname = pop @_;
+	
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach $module(@generatedModules)
+	{
+		$src = $cfglocation{$module};
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($src, $dst) or warn "copy: $! $src $dst";
+	}#module
+}#fn
+
+
+sub CopyDlls($$)
+{
+	my $libname = shift @_;
+	my $suffix = shift @_;
+	
+	my $module;
+	my $src;
+	my $dst;
+	
+	
+	foreach $module(@generatedModules)
+	{
+	  if($do_winscw == 1)
+	  { 	  
+			$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$module.$suffix;
+			$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+			$dst = $dst."\\winscw_udeb\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	  if($do_armv5 == 1)
+	  {
+			$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$module.$suffix;
+			$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+			$dst = $dst."\\armv5_urel\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	}#foreach
+}
+#fn to generate the session file
+sub GenerateSessionFile($$)
+{
+	my $libname = shift @_;
+	my $target = shift @_;
+	my $outdir = $ATSRoot;
+	my $infile = $templateRoot."\\testsession.xml";
+	chdir $outdir || die("DIED: Unable to chdir!"); 
+	#open INFILE, $infile || die ("DIED: Can not open input file $infile");
+	my $prefix = $libname."_".$target;
+	
+	open OUTFILE, ">".$outdir."\\".$prefix."_testsession.xml" || die ("DIED: Can not open output file");
+	my $line;
+  my $snippet = $target;
+  if($target ne "winscw" && $target ne "winsspd")
+  {
+  	$snippet = "hw";
+  }
+
+print OUTFILE "<?xml version=\"1.0\"?>\n";
+print OUTFILE "<testsession>\n";
+print OUTFILE "<symbian-version>$libname"."_".$snippet."_TestDrop_blr_component</symbian-version>\n";	
+print OUTFILE "<testitem>at</testitem>\n";	
+print OUTFILE "<resultfile>ATSOUTPUT\\".$prefix."_testsession_results.xml</resultfile>\n";		
+if($sendEmail eq "yes")
+{
+print OUTFILE <<EOEmailNote;
+<email_notification>
+<include_test_cases>true</include_test_cases>
+<message_file>C:\\\\lm.txt </message_file>
+<send_after_rerun>false</send_after_rerun>
+<subject>ATS testreport</subject>
+<from>swbuild\@nokia.com</from>
+<to>santosh.ks\@nokia.com</to>
+<to>Imtiyaj.Kaji\@nokia.com</to>
+<to>tp-ap-india-mrt-testdg\@nokia.com</to>
+<to>tp-ap-india-mrt-libsdg\@nokia.com</to>
+<to>subeesh.sivanandan\@nokia.com</to>
+<to>girish.bhat\@nokia.com</to>
+</email_notification>
+EOEmailNote
+}
+	if($libname ne "combined")
+	{
+		AddAssumedIncludes($libname,$snippet);
+	}
+	else
+	{
+		AddActualIncludes($libname);
+	}
+   				
+	print OUTFILE "</testsession>\n";
+
+	close(OUTFILE);
+	#close(INFILE);
+}#fn
+
+
+sub AddAssumedIncludes($$)
+{
+	my $libname = shift @_; 
+	my $snippet = shift @_;
+	
+	my $APITest;
+	foreach my $listed(@generatedModules)
+						{
+							$APITest = StripModulePrefix($listed);
+							print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of $target xml for $APITest -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							if($libname eq "all")
+							{
+									print OUTFILE "		 <testplan>ATSINPUT\\components\\$listed\\$listed"."_module_blr_".$snippet."_component.xml</testplan>\n";	 
+							}
+							else
+							{
+									print OUTFILE "		 <testplan>ATSINPUT\\components\\$libname"."_"."$APITest\\$libname"."_$APITest"."_module_blr_".$snippet."_component.xml</testplan>\n";	 
+							}
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	           }#foreach @generatedModules
+}
+
+sub AddActualIncludes($)
+{
+	my $libname = shift @_; 
+	find(\&XmlComponentFiles, ".");
+	my $key;
+	my $value;
+	while(($key, $value) = each(%DirHash)) 
+	{
+							$value =~ s/\//\\/g;
+							print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of dynamically found $target xml -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							print OUTFILE "		 <testplan>$value</testplan>\n";	 
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	
+	}#while
+}#fn
+
+sub XmlComponentFiles()
+{
+	if($_ !~ /\.xml/ || $_ =~ /manual/)
+	{
+		return;
+	}
+	#print "Processing $_\n";
+	my $dir = getcwd();
+	if($dir =~ /.*(ATSINPUT.*)/)
+	{
+			$dir = $1;
+			if($dir !~ /.*components.*/)
+			{
+				return;
+			}
+			#print "The dir is $dir\n";
+	}
+	else
+	{
+		return;
+	}
+	
+	if($target eq "winsspd" )
+	{
+		if($_ =~ /winsspd/)
+		{
+			#print "Adding $target file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+		}
+	}
+	elsif($target eq "winscw")
+	{
+		if($_ =~ /winscw/)
+		{
+			#print "Adding $target file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+		}
+	}
+	elsif($_ =~ /$target/)
+	{
+		#print "$_ matched $target \n";
+		#print "Adding $target file $_ for $dir\n";
+		$DirHash{$dir} = $dir."/".$_;
+	}
+	elsif($_ =~/hw/)
+	{
+		#print "$_ matched hw";
+		if(scalar $DirHash{$dir} == 0)
+		{
+			#print "Adding hw file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+			#print " and added\n"
+		}
+		else
+		{
+			#print " and not added\n";
+		}
+	}
+}
+
+
+
+sub emptyArray()
+{
+	@generatedModules = ();
+}
+
+sub GenDirs($)
+{
+ my $libname = shift @_;
+ my $dirname;
+ foreach my $module(@generatedModules)
+ {
+  $dirname = StripModulePrefix($module);
+	my $relroot = $ATSRoot."\\components\\$libname"."_$dirname";
+	mkdir $relroot || die("DIED: unable to create dir $dirname\n");
+	mkdir $relroot."\\General" || die("DIED: unable to create dir $relroot\\General\n");
+	if($do_armv5 == 1)
+	{
+		mkdir $relroot."\\armv5_urel" || die("DIED: unable to create dir $relroot\\armv5_urel\n");
+	}
+	if($do_winscw == 1)
+	{
+		mkdir $relroot."\\winscw_udeb" || die("DIED: unable to create dir $relroot\\winscw_udeb\n");
+	}
+ }
+}
+
+sub GenXmls($$)
+{
+	my $listedName = pop @_;
+	my $libname = pop @_;
+	
+	#strip leading test and t names from module
+	my $moduleName = StripModulePrefix($listedName);
+
+      my $toPath = $ATSRoot."\\components\\$libname"."_$moduleName\\"; 
+        my @filesToProcess =
+        (
+         "LibXXX_ATSTemplateXXX_module_blr_hw_component.xml",
+         "LibXXX_ATSTemplateXXX_module_blr_winsspd_component.xml",
+         "testframework.ini",
+        );
+		
+
+       my $dst;
+       my $src;
+       foreach $src(@filesToProcess)
+       {
+               $dst = $src;
+               $dst =~ s/ATSTemplateXXX/$moduleName/;
+               $dst =~ s/LibXXX/$libname/;
+             
+
+               if($src eq "testframework.ini")
+               {
+					$dst =  $toPath."General\\".$dst;
+               }
+               else
+               {
+					$dst =  $toPath.$dst;
+               }
+               copy($templateRoot."\\".$src, $dst) || die("DIED: Unable to copy $src to $dst\n");
+               ExpandModuleMacros($dst, $libname, $listedName);
+       }#foreach file
+}
+
+
+sub GenExeXmls()
+{
+	my $moduleName = shift @_;
+	my $libname = shift @_;
+			
+	my $toPath = $ATSRoot."\\components\\$libname"."_$moduleName\\"; 
+  my @filesToProcess =
+  (
+     "LibXXX_ATSTemplateXXX_exemodule_blr_hw_component.xml",
+     "LibXXX_ATSTemplateXXX_exemodule_blr_winsspd_component.xml",
+  );
+	
+	my $dst;
+  my $src;
+  foreach $src(@filesToProcess)
+  {
+        $dst = $src;
+        $dst =~ s/ATSTemplateXXX/$moduleName/;
+        $dst =~ s/LibXXX/$libname/;
+        $dst =~ s/_exemodule_/_module_/;
+				$dst =  $toPath.$dst;
+        copy($templateRoot."\\".$src, $dst) || die("DIED: Unable to copy to $dst\n");
+        ExpandModuleMacros($dst, $libname, $moduleName);
+   }#foreach file
+}
+
+#function to expand the macros existing in a file
+#file is replaced by new version
+#args are relativePath. filename and  $moduleName
+sub ExpandModuleMacros()
+{
+	# Take module name
+	my $moduleName = pop @_;
+	my $libname = pop @_;
+	my $filename = pop @_;
+
+	my $MODULENAME = $moduleName;
+	$MODULENAME =~ tr/[a-z]/[A-Z]/;
+
+	# Open input file
+	open (INFILE, $filename ) || die ("DIED: Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("DIED: Can not open $newOutput");
+
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  s/ATSTemplateXXX/$moduleName/g;
+	  s/LibXXX/$libname/g;
+    	  print OUTFILE $_;
+	}
+
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+}
+
+
+
+sub CopyDeps($$)
+{
+  my $libname = shift @_;
+  my $copyDll = shift @_;
+	my $src;
+	my $dst;
+	foreach my $listed(@generatedModules)
+	{
+				my $module = StripModulePrefix($listed);
+				if($do_winscw == 1)
+				{
+					$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+					$dst = $ATSRoot."\\components\\$libname"."_$module";
+					$dst = $dst."\\winscw_udeb\\";
+					copy($src, $dst)  || warn("unable to copy $src to $dst");
+				}
+				if($do_armv5 == 1)
+				{
+					$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+					$dst = $ATSRoot."\\components\\$libname"."_$module";
+					$dst = $dst."\\armv5_urel\\";
+					copy($src, $dst)  || warn("unable to copy $src to $dst");
+				}
+	}#foreach
+}#fn
+
+#dat file copy
+sub CopyDatFiles()
+{
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+ my @list = (
+  				 ["libcrypt", "tlibcrypt", "group/Test_Data.dat"],
+  				 ["libc", "tnetdb", "data/services.txt"],
+  				 ["libc", "tstring", "data/locales.txt"],
+  				 ["libc", "libc_loc_blr", "data/locales.txt"],
+  				 ["libz", "tzlib", "data/*.*"],
+  				 ["libc", "tlink", "data/*.*"],
+  				 ["libc", "tmmap", "data/*.*"],
+           );
+
+	 my $libname;
+	 my $dirname;
+	 my $glob;
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($libname, $dirname, $glob) = @inarr;
+			my $modulename = StripModulePrefix($dirname);
+			my $src = "$libRoot/$libname/internal/testapps/$dirname/$glob";
+			my $dst = $ATSRoot."\\components\\$libname"."_"."$modulename\\General\\";
+  		if($dirname eq "libc_loc_blr")
+  		{
+  			$src = "$libRoot/libc/src/locales.txt";
+  		}
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  }#ref processing
+}#fn
+
+
+#glib dat file copy
+sub CopyArbitDatFiles($$)
+{
+	
+	 my $libname = shift @_;
+	 my $refArr = shift @_;
+	 my @list = @$refArr;
+	 
+ 	
+	my $fname;
+	my $modulename;
+	my $location;
+	my $atsDst;
+	my $targetDst;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $modulename, $location, $atsDst, $targetDst) = @inarr;
+			#print "[$fname, $modulename, $location, $atsDst, $targetDst]\n";
+			if($location =~ /(.*)\.\.(.*)/)
+			{
+				$location = GetPathPrefix().$2;
+			}
+			else
+			{
+				$location = $rootDrive.$location;
+			}
+			my $src = $location.$fname;
+			my $dst = $ATSRoot."\\components\\$libname"."_".$modulename.$atsDst;
+			if($libname eq "")
+			{
+				$dst = $ATSRoot."\\components\\".$modulename.$atsDst;
+				#print "$dst CHANGED!\n"
+			}
+  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file  $src found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  		
+  		if($targetDst ne "")
+  		{
+  			 		my @filesToChange = ();
+			  		if($atsDst =~ "armv5")
+			  		{
+			  			#armv5 component file
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_hw_component.xml";
+			  			
+			  		}
+			  		elsif($atsDst =~ "winscw")
+			  		{
+			  			#winscw component file
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_winsspd_component.xml";
+			  		}
+			  		else
+			  		{
+			  			#add entry to both xmls
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_hw_component.xml";
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_winsspd_component.xml";
+			  		}
+			  		foreach my $file(@filesToChange)
+			  		{
+			  			$src = $ATSRoot."/components/".$libname."_"."$modulename/".$file;
+			  			ModifyXml($src,$libname,$fname,$atsDst,$targetDst);
+			  		}
+			  }#updating the xmls
+    		
+  }#ref processing
+ 
+  
+}#fn
+
+sub ModifyXml($$$$$)
+{
+	my $filename = shift @_;
+	my $lib = shift @_;
+	my $fname = shift @_;
+	my $atsDst = shift @_;
+	my $targetDst = shift @_;
+	
+	
+	#printf("Modifying $filename with lib= $lib fname= $fname atsDst = $atsDst targetDst = $targetDst\n");
+	
+	# Open input file
+	open (INFILE, $filename ) || die ("Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("Can not open $newOutput");
+
+		
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  if(/\<stif\>/ || /\<execute\>/)
+	  {
+	  	if(/\<stif\>/)
+	  	{
+	  		print OUTFILE "\<stif\>\n";
+	  	}
+	  	else
+	  	{
+	  		print OUTFILE "\<execute\>\n";
+	  	}
+	  	my $type = "data";
+	  	if($atsDst !~ "General")
+			{
+				$type = "binary";
+			}
+			print OUTFILE <<EObinary;
+				
+	  		<install type=\"$type\">
+				<src>$fname</src>
+				<dst>$targetDst\\$fname</dst>
+ 				</install>
+EObinary
+	  }#stif or execute tag found
+	  else
+	  {
+	  	  print OUTFILE $_;
+	  }
+	}#while
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+	
+}#fn
+sub GenGenModules($)
+{
+	my $libname = shift @_;
+	
+		
+	my $src = $ATSRoot."/components/";
+	my @fileList = ();
+	opendir(DIRHANDLE, "$src") || die "Cannot opendir $src";
+  foreach my $name (readdir(DIRHANDLE)) 
+  {
+    if($name =~ /^$libname/)
+    {
+    	if($libname ne "libc" || $name !~ /^libcrypt/) 
+    	{
+    		$name =~ s/^$libname//;
+    		$name =~ s/^_//;
+    		unshift @fileList, $name;
+    	}#excluded libcrypt from libc list
+    }#libname match
+  }#foreach
+  closedir(DIRHANDLE);
+	return @fileList;
+}
+
+
+sub GetAllModules()
+{
+	
+	my $src = $ATSRoot."/components/";
+	my @fileList = ();
+	opendir(DIRHANDLE, "$src") || die "Cannot opendir $src";
+  foreach my $name (readdir(DIRHANDLE)) 
+  {
+    	if($name ne "." && $name ne ".." && $name ne "shared")
+			{
+				unshift @fileList, $name;
+			}
+
+  }#foreach
+  closedir(DIRHANDLE);
+	return @fileList;
+}
+
+
+
+sub TransformXmls($$)
+{
+	my $libname = shift @_;
+	my $shared = shift @_;
+	my $target = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+
+	my $armv5 = 0;
+	my $winscw = 0;
+	if($target eq "armv5")
+	{
+			$armv5 = 1;
+  }	
+  elsif($target eq "winscw")
+  {
+  		$winscw = 1;
+  }
+  else
+  {
+  	$armv5  = $do_armv5;
+  	$winscw = $do_winscw;
+	}
+		
+
+	foreach $module(@generatedModules)
+	{
+	  if($armv5 == 1 && $winscw == 1)
+	  {
+			$src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+		}
+		elsif($armv5 == 1)
+		{
+			$src = $ATSRoot."/components/".$libname."_"."$module/*_hw_component.xml";
+		}
+		elsif($winscw == 1)
+		{
+			$src = $ATSRoot."/components/".$libname."_"."$module/*_winsspd_component.xml";
+		}
+		my @fileList = glob($src);
+		foreach my $file(@fileList)
+		{
+		 	#print"$file to  be transformed!\n";
+			AddLibsInXml($libname,$file,$shared);
+		}
+   }
+}#fn
+
+sub AddLibsInXml($$$)
+{
+	my $libname = shift @_;
+	my $filename = shift @_;
+	my $shared = shift @_;
+	
+	# Open input file
+	open (INFILE, $filename ) || die ("Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("Can not open $newOutput");
+
+	my $drive = "c:";
+	
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  if(/\<stif\>/ || /\<execute\>/)
+	  {
+	  	if(/\<stif\>/)
+	  	{
+	  		print OUTFILE "\<stif\>\n";
+	  	}
+	  	else
+	  	{
+	  		print OUTFILE "\<execute\>\n";
+	  		if($filename =~ /winsspd/)
+				{
+					$drive = "z:";
+				}
+	  	}
+	  	foreach my $installable(@dllList)
+			{
+				print OUTFILE <<EOLine;
+				
+	  		<install type=\"$shared binary\">
+				<src>$installable</src>
+				<dst>$drive\\sys\\bin\\$installable</dst>
+ 				</install>
+EOLine
+			}
+
+	  }
+	  else
+	  {
+	  	  print OUTFILE $_;
+	  }
+	}#while
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+}
+
+sub CopySharedDlls()
+{
+  my $libname = shift @_;
+  my $ref = shift @_;
+  my @ListOfDlls = @$ref;
+  my $target = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+	
+	my $do_armv5 = 0;
+	my $do_winscw = 0;
+	if($target eq "armv5")
+	{
+		$do_armv5 = 1;
+	}
+	elsif($target eq "winscw")
+	{
+		$do_winscw =  1;
+	}
+	else
+	{
+		$do_armv5  = 1;
+		$do_winscw = 1;
+	}
+	
+	
+	mkdir  $ATSRoot."\\components\\shared" || die("Wouldn't make shared folder in $ATSRoot\\components");
+	if($do_winscw == 1)
+	{
+		mkdir  $ATSRoot."\\components\\shared\\winscw_udeb" || die("Wouldn't make shared folder in $ATSRoot\\components\winscw_udeb");
+	}
+	if($do_armv5 == 1)
+	{
+		mkdir  $ATSRoot."\\components\\shared\\armv5_urel" || die("Wouldn't make shared folder in $ATSRoot\\components\armv5_urel");
+	}
+	
+	foreach my $copyDll(@ListOfDlls)
+	{
+		if($do_winscw == 1)
+		{
+			$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+			$dst = $ATSRoot."\\components\\shared";
+			$dst = $dst."\\winscw_udeb\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}	
+		if($do_armv5 == 1)
+		{	
+			$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+			$dst = $ATSRoot."\\components\\shared";
+			$dst = $dst."\\armv5_urel\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	}#foreach
+}#fn
+
+
+sub CopyMultiDlls($)
+{
+  my $libname = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+	foreach my $listed(@generatedModules)
+	{
+		foreach my $copyDll(@dllList)
+		{
+			if($do_winscw == 1)
+			{
+				$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+				$dst = $ATSRoot."\\components\\$libname"."_$listed";
+				$dst = $dst."\\winscw_udeb\\";
+				copy($src, $dst)  || warn("unable to copy $src to $dst");
+			}
+			if($do_armv5 == 1)
+			{
+				$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+				$dst = $ATSRoot."\\components\\$libname"."_$listed";
+				$dst = $dst."\\armv5_urel\\";
+				copy($src, $dst)  || warn("unable to copy $src to $dst");
+			}
+		}#foreach
+	}
+}#fn
+
+sub StripModulePrefix($)
+{
+	my $listed = pop @_;
+	my $module = $listed;
+	if($dontStrip == 0)
+	{
+		$module =~ s/^test//;
+		$module =~ s/^t//;
+		$module =~ s/^libc_//;
+		$module =~ s/^libm_//;
+  }
+  return $module;
+  	
+}
+
+sub GetLsbModules()
+{
+	my @lsbList = 
+	(
+	 "abs",
+"acos",
+"asctime",
+"asin",
+"atan",
+"atan2",
+"atof",
+"atoi",
+"atol",
+"bsearch",
+"calloc",
+"ceil",
+"chdir",
+"clearerr",
+"close",
+"closedir",
+"cos",
+"cosh",
+"creat",
+"lsb_ctime",
+"lsb_difftime",
+"dlclose",
+"dlerror",
+"dlopen",
+"dup",
+"dup2",
+"exp",
+"fabs",
+"fclose",
+"fcntl_x",
+"fdopen",
+"feof",
+"ferror",
+"fflush",
+"fgetpos",
+"fgets",
+"fileno",
+"floor",
+"fmod",
+"fopen",
+"fopen_X",
+"fprintf",
+"fputs",
+"fread",
+"free",
+"freopen",
+"freopen_X",
+"frexp",
+"fseek",
+"fsetpos",
+"fstat",
+"ftell",
+"ftok",
+"ftok_l",
+"fwrite",
+"getc",
+"getcwd",
+"gets",
+"lsb_gmtime",
+"ldexp",
+"link",
+"lsb_localtime",
+"log",
+"log10",
+"longjmp",
+"lseek",
+"malloc",
+"memchr_X",
+"memcmp_X",
+"memcpy_X",
+"memmove",
+"memset_X",
+"mkdir",
+"mkfifo",
+"lsb_mktime",
+"modf",
+"msgctl",
+"msgget",
+"msgsnd",
+"open",
+"opendir",
+"open_x",
+"perror",
+"pipe",
+"pow",
+"printf",
+"qsort",
+"rand",
+"read",
+"readdir",
+"readv_l",
+"realloc",
+"remove",
+"rename",
+"rewind",
+"rewinddir",
+"rmdir",
+"scanf",
+"scanf_X",
+"seekdir",
+"semctl",
+"semget",
+"semop",
+"setbuf",
+"setjmp",
+"shmat",
+"shmdt",
+"shmget",
+"sin",
+"sinh",
+"sqrt",
+"srand",
+"stat",
+"strcat",
+"strchr",
+"strcmp",
+"strcoll_X",
+"strcpy",
+"strcspn",
+"strerror_X",
+"strftime",
+"strftime_X",
+"strlen",
+"strncat",
+"strncmp",
+"strncpy",
+"strpbrk",
+"strptime",
+"strrchr",
+"strspn",
+"strstr",
+"strtod_X",
+"strtok",
+"strtol_X",
+"strxfrm_X",
+"tan",
+"tanh",
+"telldir",
+"telldir_l",
+"lsb_time",
+"tmpfile",
+"tmpnam",
+"ungetc",
+"unlink",
+"utime",
+"vfprintf",
+"vprintf",
+"write",
+"writev_l",
+
+	);
+  return @lsbList;
+}
+
+
+
+sub GenBackendTest()
+{
+
+	my @datList = 
+	(
+	["libc", "tlibcbackend"],
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,".dll");
+	}
+ #now copy xmls			
+ CopyAtsSetup();
+ #extra exes
+ @generatedModules = ("tlibcbackend");
+ CopyDeps("libc","TPopenReadChild.exe");
+ CopyDeps("libc","TPopenWriteChild.exe");
+			
+}#fn
+
+sub CopyAtsSetup()
+{
+	 my $libname = "libc"; 
+	 my @list = (
+  				 ["*.xml", "libcbackend", "/../backend/internal/tlibcbackend/group/","/", ""],
+  				 ["*.cfg", "libcbackend", "/../backend/internal/tlibcbackend/group/","/General/", ""],
+  				 ["*.ini", "libcbackend", "/../backend/internal/tlibcbackend/group/","/General/", ""],
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("libc",$bDataRef);  				 
+
+}#fn
+sub GetPathPrefix()
+{
+	 my $srcPrefix = $templateRoot;
+	 $srcPrefix =~ /(.*)internal.*/;
+	 $srcPrefix = $1;
+	 return $srcPrefix;
+}
+	
+
+#dat file copy
+sub CopyCryptoDat()
+{
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+ my @list = (
+ 								 ["libssl", "ssltest", "libssl/internal/testapps/ssl_test/data/*"],
+ 								 ["libcrypto", "topenssl", "/libcrypto/internal/testapps/topenssl/data/*"],
+           );
+
+	 my $libname;
+	 my $dirname;
+	 my $glob;
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($libname, $dirname, $glob) = @inarr;
+			my $modulename = StripModulePrefix($dirname);
+			my	$srcPrefix = GetPathPrefix();
+			
+			my $src = "$srcPrefix"."$glob";
+			
+			my $dst = $ATSRoot."\\components\\$libname"."_"."$modulename\\General\\";
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  }#ref processing
+}#fn
+
+#Crypto xmls copy
+sub CopyCryptoXmls()
+{
+	  my @list = (
+  				 ["*.xml", "libssl_ssltest/", "/libssl/internal/testapps/ssl_test/group/"],
+   				 ["*.xml", "libcrypto_crypto_test/", "/libcrypto/internal/testapps/crypto_test/group/"],
+   				 ["*.xml", "libcrypto_openssl/", "/libcrypto/internal/testapps/topenssl/group/"],   				    				 			 
+  				 );
+
+	
+	my $fname;
+	my $moduleDst;
+	my $location;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $moduleDst, $location) = @inarr;
+			my $src = GetPathPrefix().$location.$fname;
+			my $dst = $ATSRoot."\\components\\$moduleDst";
+  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no xml file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  	}#ref
+  	
+  	my @crypto_copyList = ("*.txt", "*cfg", "*.ini");
+  	
+  	foreach my $item(@crypto_copyList)
+  	{
+  			$location = "/libcrypto/internal/testapps/crypto_test/group/";
+  			$fname = GetPathPrefix().$location.$item;
+  			my @filesFound = glob($fname);
+  			foreach my $file(@filesFound)
+  			{
+    			$moduleDst = "libcrypto_crypto_test/";	
+  				my $dst = $ATSRoot."\\components\\".$moduleDst."/General/";
+  				copy($file, $dst);
+  			}
+  	}
+}#fn
+
+sub GenCryptoTest()
+{
+
+	my @datList = 
+	(
+	["libssl", "ssltest", ".exe"],
+	["libcrypto", "crypto_test",".dll"],
+	["libcrypto", "openssl",".exe"],
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,$ext);
+	}
+	CopyCryptoDat();
+	CopyCryptoXmls();
+	
+			
+}#fn
+
+
+#ngi xml copy
+sub CopyNgiXmls()
+{
+	  my @list = (
+   				 ["*.xml", "ngi_sa_amrrecording", "/audio/lowlevelaudio/internal/sa_amrrecording/group/"],
+   				 ["*.xml", "ngi_sa_highlevelaudio", "/audio/highlevelaudio/internal/sa_highlevelaudio/group/"],
+  				 ["*.xml", "ngi_sa_audiomixing", "/audio/lowlevelaudio/internal/sa_audiomixing/group/"],
+  				 ["*.xml", "ngi_sa_audiorecording", "/audio/lowlevelaudio/internal/sa_audiorecording/group/"],
+  				 ["*.xml", "ngi_sa_clip", "/audio/lowlevelaudio/internal/sa_clip/group/"],
+  				 ["*.xml", "ngi_sa_lowlevelaudio", "/audio/lowlevelaudio/internal/sa_lowlevelaudio/group/"],
+  				 ["*.xml", "ngi_sa_stream", "/audio/lowlevelaudio/internal/sa_stream/group/"],
+  				 
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_antitearing/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_colortranslation/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_createfb565/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_createfb888/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_heapusage/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_multibb/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_performance/group/"],
+               ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_plswitching/group/"],
+  				 ["*.xml", "ngi_sa_bitmap", "/graphics/bitmap/internal/sa_bitmap/group/"],
+  				 ["*.xml", "ngi_sa_camera", "/graphics/camera/internal/sa_camera/group/"],
+  				 ["*.xml", "ngi_sa_images", "/graphics/images/internal/sa_images/group/"],
+  				 ["*.xml", "ngi_sa_display", "/graphics/display/internal/sa_display/group/"],
+  				 ["*.xml", "ngi_sa_lights", "/graphics/lights/internal/sa_lights/group/"],
+  				 ["*.xml", "ngi_sa_videoplayback", "/graphics/video/internal/sa_videoplayback/group/"],
+  				 
+  				 ["*.xml", "ngi_sa_input", "/input/input/internal/sa_input/group/"],
+  				 ["*.xml", "ngi_sa_textinput", "/input/textinput/internal/sa_textinput/group/"],
+  				 ["*.xml", "ngi_sa_devicecapabilities", "/system/devicecapabilities/internal/sa_devicecapabilities/group/"],
+  				 ["*.xml", "ngi_sa_devicestatus", "/system/devicestatus/internal/sa_phone/group/"],
+  				 ["*.xml", "ngi_sa_runtimetester", "/system/runtime/internal/sa_runtimetester/group/"],
+  				 ["*.xml", "ngi_sa_timing", "/timing/internal/sa_timing/group/"],
+	  				 );
+
+	
+	my $fname;
+	my $moduleDst;
+	my $location;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $moduleDst, $location) = @inarr;
+			my $src = GetPathPrefix().$location.$fname;
+			my $dst = $ATSRoot."\\components\\$moduleDst";
+			
+			#print "My src is $src\n";
+			#print "My dst is $dst\n";
+			  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			warn("warning: no xml file found to copy from $src!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  	}#ref
+    	
+}#fn
+
+
+sub GenNgiTest()
+{
+
+	my @datList = 
+	(
+	["ngi", "sa_amrrecording", ".dll"],
+	["ngi", "sa_highlevelaudio", ".dll"],
+	["ngi", "sa_audiomixing", ".dll"],
+	["ngi", "sa_audiorecording", ".dll"],
+	["ngi", "sa_clip", ".dll"],
+	["ngi", "sa_lowlevelaudio", ".dll"],
+	["ngi", "sa_stream", ".dll"],
+	["ngi", "sa_bitmap", ".dll"],
+	["ngi", "sa_camera", ".dll"],
+	["ngi", "sa_images", ".dll"],
+	["ngi", "sa_display", ".dll"],
+	["ngi", "sa_lights", ".dll"],	
+	["ngi", "sa_videoplayback", ".dll"],	
+	["ngi", "sa_input", ".dll"],	
+	["ngi", "sa_textinput", ".dll"],
+	["ngi", "sa_devicecapabilities", ".dll"],	
+	["ngi", "sa_devicestatus", ".dll"],	
+	["ngi", "sa_runtimetester", ".dll"],	
+	["ngi", "sa_timing", ".dll"],	
+		
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,$ext);
+	}
+	
+   @generatedModules =("sa_backbuffer");
+   GenDirs($lib);
+   @dllList = 
+   (
+   	"sa_bb_antitearing.dll",
+   	"sa_bb_colortranslation.dll",
+   	"sa_bb_createfb444.dll",
+   	"sa_bb_createfb565.dll",
+   	"sa_bb_createfb888.dll",
+   	"sa_bb_heapusage.dll",
+   	"sa_bb_multibb.dll",
+   	"sa_bb_performance.dll",
+   	"sa_bb_plswitch.dll",
+   	"sa_bb_testenv.dll"
+   );
+   CopyMultiDlls("ngi");
+
+	
+ 	mkdir  $ATSRoot."\\components\\shared" || die("Wouldn't make shared folder in $ATSRoot\\components");
+  mkdir  $ATSRoot."\\components\\shared\\winscw_udeb" || die("Wouldn't make shared folder in $ATSRoot\\components\winscw_udeb");
+  mkdir  $ATSRoot."\\components\\shared\\armv5_urel" || die("Wouldn't make shared folder in $ATSRoot\\components\armv5_urel");
+			
+}#fn
+
+
+__END__
+:end
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/inc/result_log.h	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,146 @@
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Description:
+*
+*/
+
+
+
+#ifndef __RESULT_LOG_H__
+#define __RESULT_LOG_H__
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <stdio.h>
+#include <time.h>
+#include <string.h>
+#include <dirent.h>
+
+
+#undef g_assert
+#define g_assert(expr)			G_STMT_START{	if (expr) { } else	 {g_log (G_LOG_DOMAIN,G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, "file %s: line %d: assertion failed: (%s)",    __FILE__,	 __LINE__,	 #expr);assert_failed  = TRUE;			}}G_STMT_END
+
+	
+// This function is used to generate the xml file used bt ATS
+void testResultXml(char *filename,int passed)
+{
+	char time_buf[50];
+	
+	char result[10];
+	
+	char xmlfilename[256];
+		
+	time_t t = time(NULL);
+	
+	struct tm *tm1 = localtime(&t);
+	
+	char *atsinitmsg 	= 	"<test-report>\n\t<test-batch>";
+	
+	char *atsbatchinit1	=   \
+							"\n\t\t<batch-init>\
+							\n\t\t\t<description></description>\
+							\n\t\t\t<date>";						
+							
+	char *atsbatchinit2 =	"</date>\
+							\n\t\t\t<factory>NA</factory>\
+							\n\t\t\t<component>\
+							\n\t\t\t\t<name>NA</name>\
+							\n\t\t\t\t<version>NA</version>\
+							\n\t\t\t</component>\
+							\n\t\t</batch-init>";
+							
+	char *atsbatchresult=	\
+							"\n\t\t<batch-result>\
+							\n\t\t\t<run-time>00:00:00</run-time>\
+							\n\t\t</batch-result>";
+							
+	char *atsclosemsg	=   \
+							"\n\t</test-batch>\
+							\n</test-report>\n ";
+
+	char *atstestinit	=	"\n\t\t<test-case time-stamp=\"00:00:00\">";
+
+	
+	char *atscaseinit1	=	\
+							"\n\t\t\t<case-init>\
+							\n\t\t\t\t<version></version>\
+							\n\t\t\t\t<id>";
+												
+	char *atscaseinit2 = 	"</id>\
+							\n\t\t\t\t<expected-result description=\"\">0</expected-result>\
+							\n\t\t\t</case-init>";
+							
+	char *atscaseresult1=	\
+							"\n\t\t\t<case-result status=\"";
+							
+	char *atscaseresult2=	"\">\
+							\n\t\t\t\t<actual-result>0</actual-result>\
+							\n\t\t\t\t<run-time>00:00:00</run-time>\
+							\n\t\t\t</case-result>";
+
+	char *atstestclose	=	"\n\t\t</test-case>";
+	
+	/* Check and see if spd_logs/xml is existent or not. If not present create it */
+	DIR *dir;
+	FILE *fp;
+	
+	dir = opendir("c:\\spd_logs");
+	if(!dir)
+		mkdir("c:\\spd_logs",0777);
+	
+	dir = opendir("c:\\spd_logs\\xml");
+	if(!dir)
+		mkdir("c:\\spd_logs\\xml",0777);
+	
+	// create the xml file name
+	strcpy(xmlfilename,"c:\\spd_logs\\xml\\");
+	strcat(xmlfilename,filename);
+	strcat(xmlfilename,".xml");
+	
+	strftime(time_buf,50,"%c",tm1);
+	
+	if(passed != 0)
+		strcpy(result,"FAILED");
+	else
+		strcpy(result,"PASSED");
+	
+	fp = fopen(xmlfilename,"w");
+	
+	if(fp)
+	{
+		fprintf(fp,"%s%s%s%s%s%s%s%s%s%s%s%s%s%s",atsinitmsg,atsbatchinit1,time_buf,atsbatchinit2,atstestinit,
+			atscaseinit1,filename,atscaseinit2,atscaseresult1,result,atscaseresult2,
+			atstestclose,atsbatchresult,atsclosemsg);
+			
+		fclose(fp);	
+	}
+	else
+	{
+	}
+}
+
+#endif //__RESULT_LOG_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/src/gcce-lib.cpp	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,78 @@
+/*
+* ==============================================================================
+*  Name        : gcce-validate.c
+*  Part of     : internal/gcce
+*  Description : This is a test program to test the cross linking of openc libraries with
+*  programs compiled using the gcce compiler
+Copyright © 2006 Nokia Corporation
+All rights reserved.
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this 
+   list of conditions and the following disclaimer. 
+ * Redistributions in binary form must reproduce the above copyright notice, 
+   this list of conditions and the following disclaimer in the documentation 
+   and/or other materials provided with the distribution. 
+ * Neither the name of the <ORGANIZATION> nor the names of its contributors 
+   may be used to endorse or promote products derived from this software 
+   without specific prior written permission. 
+   
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* ==============================================================================
+*/
+
+#include "glib.h"
+#include <stdio.h>
+
+#include "result_log.h"
+
+#define UNICODE_VALID(Char)                   \
+    ((Char) < 0x110000 &&                     \
+     (((Char) & 0xFFFFF800) != 0xD800) &&     \
+     ((Char) < 0xFDD0 || (Char) > 0xFDEF) &&  \
+     ((Char) & 0xFFFE) != 0xFFFE)
+
+
+
+EXPORT_C int do_test (gint         index,
+	 const gchar *text, 
+	 gint         max_len,
+	 gint         offset,
+	 gboolean     valid)
+{
+  const gchar *end;
+  gboolean result;
+  int failed =0;
+  
+  result = g_utf8_validate (text, max_len, &end);
+
+  if (result != valid || end - text != offset)
+    {
+      GString *str;
+      const gchar *p;
+
+      failed++;
+      
+      str = g_string_new (0);
+      for (p = text; *p; p++)
+	g_string_append_printf (str, "\\x%02hhx", *p);
+      g_print ("%d: g_utf8_validate (\"%s\", %d) failed, "
+	       "expected %s %d, got %s %d\n",
+	       index,
+	       str->str, max_len, 
+	       valid ? "TRUE" : "FALSE", offset,
+	       result ? "TRUE" : "FALSE", (gint) (end - text));
+      g_string_free (str, FALSE);
+    }
+    return failed;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/src/gcce-load.cpp	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,344 @@
+/*
+* ==============================================================================
+*  Name        : gcce-validate.c
+*  Part of     : internal/gcce
+*  Description : This is a test program to test the cross linking of openc libraries with
+*  programs compiled using the gcce compiler
+Copyright © 2006 Nokia Corporation
+All rights reserved.
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this 
+   list of conditions and the following disclaimer. 
+ * Redistributions in binary form must reproduce the above copyright notice, 
+   this list of conditions and the following disclaimer in the documentation 
+   and/or other materials provided with the distribution. 
+ * Neither the name of the <ORGANIZATION> nor the names of its contributors 
+   may be used to endorse or promote products derived from this software 
+   without specific prior written permission. 
+   
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* ==============================================================================
+*/
+
+#include <glib.h>
+#include <stdio.h>
+
+#include "result_log.h"
+
+void mrtLogHandler(const gchar* log_domain, GLogLevelFlags log_level,
+					const gchar* message, gpointer user_data)
+{
+	FILE *fp;
+	fp = fopen("c:\\logtests.txt","a");
+	
+	if(fp)
+	{
+		fprintf(fp,message);
+		fprintf(fp,"\n");
+		fclose(fp);
+	}
+}
+
+void mrtPrintHandler(const gchar *message)
+{
+	FILE *fp;
+	fp = fopen("c:\\logtests.txt","a");
+	
+	if(fp)
+	{
+		fprintf(fp,message);
+		fprintf(fp,"\n");
+		fclose(fp);
+	}
+}
+
+
+
+#define UNICODE_VALID(Char)                   \
+    ((Char) < 0x110000 &&                     \
+     (((Char) & 0xFFFFF800) != 0xD800) &&     \
+     ((Char) < 0xFDD0 || (Char) > 0xFDEF) &&  \
+     ((Char) & 0xFFFE) != 0xFFFE)
+
+
+
+
+struct {
+  const gchar *text;
+  gint max_len;
+  gint offset;
+  gboolean valid;
+} test[] = {  
+  /* some tests to check max_len handling */
+  /* length 1 */
+  { "abcde", -1, 5, TRUE },
+  { "abcde", 3, 3, TRUE },
+  { "abcde", 5, 5, TRUE },
+  { "abcde", 7, 5, FALSE },
+  /* length 2 */
+  { "\xc2\xa9\xc2\xa9\xc2\xa9", -1, 6, TRUE }, 
+  { "\xc2\xa9\xc2\xa9\xc2\xa9",  1, 0, FALSE }, 
+  { "\xc2\xa9\xc2\xa9\xc2\xa9",  2, 2, TRUE }, 
+  { "\xc2\xa9\xc2\xa9\xc2\xa9",  3, 2, FALSE }, 
+  { "\xc2\xa9\xc2\xa9\xc2\xa9",  4, 4, TRUE }, 
+  { "\xc2\xa9\xc2\xa9\xc2\xa9",  5, 4, FALSE }, 
+  { "\xc2\xa9\xc2\xa9\xc2\xa9",  6, 6, TRUE }, 
+  { "\xc2\xa9\xc2\xa9\xc2\xa9",  7, 6, FALSE }, 
+  /* length 3 */
+  { "\xe2\x89\xa0\xe2\x89\xa0", -1, 6, TRUE },
+  { "\xe2\x89\xa0\xe2\x89\xa0",  1, 0, FALSE },
+  { "\xe2\x89\xa0\xe2\x89\xa0",  2, 0, FALSE },
+  { "\xe2\x89\xa0\xe2\x89\xa0",  3, 3, TRUE },
+  { "\xe2\x89\xa0\xe2\x89\xa0",  4, 3, FALSE },
+  { "\xe2\x89\xa0\xe2\x89\xa0",  5, 3, FALSE },
+  { "\xe2\x89\xa0\xe2\x89\xa0",  6, 6, TRUE },
+  { "\xe2\x89\xa0\xe2\x89\xa0",  7, 6, FALSE },
+
+  /* examples from http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt */
+  /* greek 'kosme' */
+  { "\xce\xba\xe1\xbd\xb9\xcf\x83\xce\xbc\xce\xb5", -1, 11, TRUE },
+  /* first sequence of each length */
+  { "\x00", -1, 0, TRUE },
+  { "\xc2\x80", -1, 2, TRUE },
+  { "\xe0\xa0\x80", -1, 3, TRUE },
+  { "\xf0\x90\x80\x80", -1, 4, TRUE },
+  { "\xf8\x88\x80\x80\x80", -1, 0, FALSE },
+  { "\xfc\x84\x80\x80\x80\x80", -1, 0, FALSE },
+  /* last sequence of each length */
+  { "\x7f", -1, 1, TRUE },
+  { "\xdf\xbf", -1, 2, TRUE },
+  { "\xef\xbf\xbf", -1, 0, FALSE },
+  { "\xf7\xbf\xbf\xbf", -1, 0, FALSE },
+  { "\xfb\xbf\xbf\xbf\xbf", -1, 0, FALSE },
+  { "\xfd\xbf\xbf\xbf\xbf\xbf", -1, 0, FALSE },
+  /* other boundary conditions */
+  { "\xed\x9f\xbf", -1, 3, TRUE },
+  { "\xee\x80\x80", -1, 3, TRUE },
+  { "\xef\xbf\xbd", -1, 3, TRUE },
+  { "\xf4\x8f\xbf\xbf", -1, 0, FALSE },
+  { "\xf4\x90\x80\x80", -1, 0, FALSE },
+  /* malformed sequences */
+  /* continuation bytes */
+  { "\x80", -1, 0, FALSE },
+  { "\xbf", -1, 0, FALSE },
+  { "\x80\xbf", -1, 0, FALSE },
+  { "\x80\xbf\x80", -1, 0, FALSE },
+  { "\x80\xbf\x80\xbf", -1, 0, FALSE },
+  { "\x80\xbf\x80\xbf\x80", -1, 0, FALSE },
+  { "\x80\xbf\x80\xbf\x80\xbf", -1, 0, FALSE },
+  { "\x80\xbf\x80\xbf\x80\xbf\x80", -1, 0, FALSE },
+
+  /* all possible continuation byte */
+  { "\x80", -1, 0, FALSE },
+  { "\x81", -1, 0, FALSE },
+  { "\x82", -1, 0, FALSE },
+  { "\x83", -1, 0, FALSE },
+  { "\x84", -1, 0, FALSE },
+  { "\x85", -1, 0, FALSE },
+  { "\x86", -1, 0, FALSE },
+  { "\x87", -1, 0, FALSE },
+  { "\x88", -1, 0, FALSE },
+  { "\x89", -1, 0, FALSE },
+  { "\x8a", -1, 0, FALSE },
+  { "\x8b", -1, 0, FALSE },
+  { "\x8c", -1, 0, FALSE },
+  { "\x8d", -1, 0, FALSE },
+  { "\x8e", -1, 0, FALSE },
+  { "\x8f", -1, 0, FALSE },
+  { "\x90", -1, 0, FALSE },
+  { "\x91", -1, 0, FALSE },
+  { "\x92", -1, 0, FALSE },
+  { "\x93", -1, 0, FALSE },
+  { "\x94", -1, 0, FALSE },
+  { "\x95", -1, 0, FALSE },
+  { "\x96", -1, 0, FALSE },
+  { "\x97", -1, 0, FALSE },
+  { "\x98", -1, 0, FALSE },
+  { "\x99", -1, 0, FALSE },
+  { "\x9a", -1, 0, FALSE },
+  { "\x9b", -1, 0, FALSE },
+  { "\x9c", -1, 0, FALSE },
+  { "\x9d", -1, 0, FALSE },
+  { "\x9e", -1, 0, FALSE },
+  { "\x9f", -1, 0, FALSE },
+  { "\xa0", -1, 0, FALSE },
+  { "\xa1", -1, 0, FALSE },
+  { "\xa2", -1, 0, FALSE },
+  { "\xa3", -1, 0, FALSE },
+  { "\xa4", -1, 0, FALSE },
+  { "\xa5", -1, 0, FALSE },
+  { "\xa6", -1, 0, FALSE },
+  { "\xa7", -1, 0, FALSE },
+  { "\xa8", -1, 0, FALSE },
+  { "\xa9", -1, 0, FALSE },
+  { "\xaa", -1, 0, FALSE },
+  { "\xab", -1, 0, FALSE },
+  { "\xac", -1, 0, FALSE },
+  { "\xad", -1, 0, FALSE },
+  { "\xae", -1, 0, FALSE },
+  { "\xaf", -1, 0, FALSE },
+  { "\xb0", -1, 0, FALSE },
+  { "\xb1", -1, 0, FALSE },
+  { "\xb2", -1, 0, FALSE },
+  { "\xb3", -1, 0, FALSE },
+  { "\xb4", -1, 0, FALSE },
+  { "\xb5", -1, 0, FALSE },
+  { "\xb6", -1, 0, FALSE },
+  { "\xb7", -1, 0, FALSE },
+  { "\xb8", -1, 0, FALSE },
+  { "\xb9", -1, 0, FALSE },
+  { "\xba", -1, 0, FALSE },
+  { "\xbb", -1, 0, FALSE },
+  { "\xbc", -1, 0, FALSE },
+  { "\xbd", -1, 0, FALSE },
+  { "\xbe", -1, 0, FALSE },
+  { "\xbf", -1, 0, FALSE },
+  /* lone start characters */
+  { "\xc0\x20", -1, 0, FALSE },
+  { "\xc1\x20", -1, 0, FALSE },
+  { "\xc2\x20", -1, 0, FALSE },
+  { "\xc3\x20", -1, 0, FALSE },
+  { "\xc4\x20", -1, 0, FALSE },
+  { "\xc5\x20", -1, 0, FALSE },
+  { "\xc6\x20", -1, 0, FALSE },
+  { "\xc7\x20", -1, 0, FALSE },
+  { "\xc8\x20", -1, 0, FALSE },
+  { "\xc9\x20", -1, 0, FALSE },
+  { "\xca\x20", -1, 0, FALSE },
+  { "\xcb\x20", -1, 0, FALSE },
+  { "\xcc\x20", -1, 0, FALSE },
+  { "\xcd\x20", -1, 0, FALSE },
+  { "\xce\x20", -1, 0, FALSE },
+  { "\xcf\x20", -1, 0, FALSE },
+  { "\xd0\x20", -1, 0, FALSE },
+  { "\xd1\x20", -1, 0, FALSE },
+  { "\xd2\x20", -1, 0, FALSE },
+  { "\xd3\x20", -1, 0, FALSE },
+  { "\xd4\x20", -1, 0, FALSE },
+  { "\xd5\x20", -1, 0, FALSE },
+  { "\xd6\x20", -1, 0, FALSE },
+  { "\xd7\x20", -1, 0, FALSE },
+  { "\xd8\x20", -1, 0, FALSE },
+  { "\xd9\x20", -1, 0, FALSE },
+  { "\xda\x20", -1, 0, FALSE },
+  { "\xdb\x20", -1, 0, FALSE },
+  { "\xdc\x20", -1, 0, FALSE },
+  { "\xdd\x20", -1, 0, FALSE },
+  { "\xde\x20", -1, 0, FALSE },
+  { "\xdf\x20", -1, 0, FALSE },
+  { "\xe0\x20", -1, 0, FALSE },
+  { "\xe1\x20", -1, 0, FALSE },
+  { "\xe2\x20", -1, 0, FALSE },
+  { "\xe3\x20", -1, 0, FALSE },
+  { "\xe4\x20", -1, 0, FALSE },
+  { "\xe5\x20", -1, 0, FALSE },
+  { "\xe6\x20", -1, 0, FALSE },
+  { "\xe7\x20", -1, 0, FALSE },
+  { "\xe8\x20", -1, 0, FALSE },
+  { "\xe9\x20", -1, 0, FALSE },
+  { "\xea\x20", -1, 0, FALSE },
+  { "\xeb\x20", -1, 0, FALSE },
+  { "\xec\x20", -1, 0, FALSE },
+  { "\xed\x20", -1, 0, FALSE },
+  { "\xee\x20", -1, 0, FALSE },
+  { "\xef\x20", -1, 0, FALSE },
+  { "\xf0\x20", -1, 0, FALSE },
+  { "\xf1\x20", -1, 0, FALSE },
+  { "\xf2\x20", -1, 0, FALSE },
+  { "\xf3\x20", -1, 0, FALSE },
+  { "\xf4\x20", -1, 0, FALSE },
+  { "\xf5\x20", -1, 0, FALSE },
+  { "\xf6\x20", -1, 0, FALSE },
+  { "\xf7\x20", -1, 0, FALSE },
+  { "\xf8\x20", -1, 0, FALSE },
+  { "\xf9\x20", -1, 0, FALSE },
+  { "\xfa\x20", -1, 0, FALSE },
+  { "\xfb\x20", -1, 0, FALSE },
+  { "\xfc\x20", -1, 0, FALSE },
+  { "\xfd\x20", -1, 0, FALSE },
+  /* missing continuation bytes */
+  { "\x20\xc0", -1, 1, FALSE },
+  { "\x20\xe0\x80", -1, 1, FALSE },
+  { "\x20\xf0\x80\x80", -1, 1, FALSE },
+  { "\x20\xf8\x80\x80\x80", -1, 1, FALSE },
+  { "\x20\xfc\x80\x80\x80\x80", -1, 1, FALSE },
+  { "\x20\xdf", -1, 1, FALSE },
+  { "\x20\xef\xbf", -1, 1, FALSE },
+  { "\x20\xf7\xbf\xbf", -1, 1, FALSE },
+  { "\x20\xfb\xbf\xbf\xbf", -1, 1, FALSE },
+  { "\x20\xfd\xbf\xbf\xbf\xbf", -1, 1, FALSE },
+  /* impossible bytes */
+  { "\x20\xfe\x20", -1, 1, FALSE },
+  { "\x20\xff\x20", -1, 1, FALSE },
+  /* overlong sequences */
+  { "\x20\xc0\xaf\x20", -1, 1, FALSE },
+  { "\x20\xe0\x80\xaf\x20", -1, 1, FALSE },
+  { "\x20\xf0\x80\x80\xaf\x20", -1, 1, FALSE },
+  { "\x20\xf8\x80\x80\x80\xaf\x20", -1, 1, FALSE },
+  { "\x20\xfc\x80\x80\x80\x80\xaf\x20", -1, 1, FALSE },
+  { "\x20\xc1\xbf\x20", -1, 1, FALSE },
+  { "\x20\xe0\x9f\xbf\x20", -1, 1, FALSE },
+  { "\x20\xf0\x8f\xbf\xbf\x20", -1, 1, FALSE },
+  { "\x20\xf8\x87\xbf\xbf\xbf\x20", -1, 1, FALSE },
+  { "\x20\xfc\x83\xbf\xbf\xbf\xbf\x20", -1, 1, FALSE },
+  { "\x20\xc0\x80\x20", -1, 1, FALSE },
+  { "\x20\xe0\x80\x80\x20", -1, 1, FALSE },
+  { "\x20\xf0\x80\x80\x80\x20", -1, 1, FALSE },
+  { "\x20\xf8\x80\x80\x80\x80\x20", -1, 1, FALSE },
+  { "\x20\xfc\x80\x80\x80\x80\x80\x20", -1, 1, FALSE },
+  /* illegal code positions */
+  { "\x20\xed\xa0\x80\x20", -1, 1, FALSE },
+  { "\x20\xed\xad\xbf\x20", -1, 1, FALSE },
+  { "\x20\xed\xae\x80\x20", -1, 1, FALSE },
+  { "\x20\xed\xaf\xbf\x20", -1, 1, FALSE },
+  { "\x20\xed\xb0\x80\x20", -1, 1, FALSE },
+  { "\x20\xed\xbe\x80\x20", -1, 1, FALSE },
+  { "\x20\xed\xbf\xbf\x20", -1, 1, FALSE },
+  { "\x20\xed\xa0\x80\xed\xb0\x80\x20", -1, 1, FALSE },
+  { "\x20\xed\xa0\x80\xed\xbf\xbf\x20", -1, 1, FALSE },
+  { "\x20\xed\xad\xbf\xed\xb0\x80\x20", -1, 1, FALSE },
+  { "\x20\xed\xad\xbf\xed\xbf\xbf\x20", -1, 1, FALSE },
+  { "\x20\xed\xae\x80\xed\xb0\x80\x20", -1, 1, FALSE },
+  { "\x20\xed\xae\x80\xed\xbf\xbf\x20", -1, 1, FALSE },
+  { "\x20\xed\xaf\xbf\xed\xb0\x80\x20", -1, 1, FALSE },
+  { "\x20\xed\xaf\xbf\xed\xbf\xbf\x20", -1, 1, FALSE },
+  { "\x20\xef\xbf\xbe\x20", -1, 1, FALSE },
+  { "\x20\xef\xbf\xbf\x20", -1, 1, FALSE },
+
+  { NULL, }
+};
+
+extern int do_test (gint         index, const gchar *text,  gint         max_len,	 gint         offset, gboolean     valid);
+
+int
+main (int argc, char *argv[])
+{
+  gint i;
+ 	  
+  int any_failed = 0;
+  int ret;
+  for (i = 0; test[i].text; i++)
+  {
+  	ret = do_test (i, test[i].text, test[i].max_len, 
+	     test[i].offset, test[i].valid);
+	 any_failed += ret;
+  
+  }
+    
+
+  #ifdef SYMBIAN
+  testResultXml("gcce-load",any_failed);
+  #endif /* EMULATOR */
+  
+  return any_failed ? 1 : 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/gcce/src/gcce-validate.cpp	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,432 @@
+/*
+* ==============================================================================
+*  Name        : gcce-validate.c
+*  Part of     : internal/gcce
+*  Description : This is a test program to test the cross linking of openc libraries with
+*  programs compiled using the gcce compiler
+Copyright © 2006 Nokia Corporation
+All rights reserved.
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this 
+   list of conditions and the following disclaimer. 
+ * Redistributions in binary form must reproduce the above copyright notice, 
+   this list of conditions and the following disclaimer in the documentation 
+   and/or other materials provided with the distribution. 
+ * Neither the name of the <ORGANIZATION> nor the names of its contributors 
+   may be used to endorse or promote products derived from this software 
+   without specific prior written permission. 
+   
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* ==============================================================================
+*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <dlfcn.h>
+#include <pthread.h>
+#include <zlib.h>
+#include <math.h>
+#include <float.h>
+#include <errno.h>
+#include <grp.h>
+#include <pwd.h>
+#include <stdlib.h>
+
+
+
+#include <testharness.h>
+#include "result_log.h"
+
+int TestCond688()
+
+{
+	struct timespec abstime;
+	struct timeval now;
+	gettimeofday(&now,NULL);
+	abstime.tv_sec = now.tv_sec + 5;
+	abstime.tv_nsec = now.tv_usec * 1000;
+
+	TRACE("+TestCond688\n");
+	HarnessCommand lCommandArr[255] = 
+	{
+		{EThreadMain, EMutexInitStaticErrorCheck},
+		{EThreadMain, ECondInit},
+
+		{EThreadMain, EThreadCreate, (void*) EThread1},
+		{EThreadMain, EThreadCreate, (void*) EThread2},
+		{EThreadMain, EThreadCreate, (void*) EThread3},
+		{EThreadMain, EThreadCreate, (void*) EThread4},
+		
+		{EThread1, EMutexLock},
+		{EThread1, EPostSignal},
+		{EThread1, ECondTimedWait,&abstime},
+
+		{EThread2, EMutexLock},
+		{EThread2, EPostSignal},
+		{EThread2, ECondTimedWait,&abstime},
+
+		{EThread3, EMutexLock},
+		{EThread3, EPostSignal},
+		{EThread3, ECondTimedWait,&abstime},
+
+		{EThread4, EMutexLock},
+		{EThread4, EPostSignal},
+		{EThread4, ECondTimedWait,&abstime},
+
+		{EThreadMain, EWaitForSignal},
+		{EThreadMain, EWaitForSignal},
+		{EThreadMain, EWaitForSignal},
+		{EThreadMain, EWaitForSignal},
+
+		{EThreadMain, EWaitTillSuspended, (void*) EThread1},
+		{EThreadMain, EWaitTillSuspended, (void*) EThread2},
+		{EThreadMain, EWaitTillSuspended, (void*) EThread3},
+		{EThreadMain, EWaitTillSuspended, (void*) EThread4},
+
+		{EThreadMain, EMutexLock},
+		{EThreadMain, ECondBroadcast},
+		{EThreadMain, EMutexUnlock},
+
+		{EThread1, EVerifyResult, (void*) 0},
+		{EThread2, EVerifyResult, (void*) 0},
+		{EThread3, EVerifyResult, (void*) 0},
+		{EThread4, EVerifyResult, (void*) 0},
+
+		{EThread1, EMutexUnlock},
+		{EThread2, EMutexUnlock},
+		{EThread3, EMutexUnlock},
+		{EThread4, EMutexUnlock},
+
+		{EThread1, EStop},
+		{EThread2, EStop},
+		{EThread3, EStop},
+		{EThread4, EStop},
+
+		
+		{EThreadMain, EThreadDestroy, (void*) EThread1},
+		{EThreadMain, EThreadDestroy, (void*) EThread2},
+		{EThreadMain, EThreadDestroy, (void*) EThread3},
+		{EThreadMain, EThreadDestroy, (void*) EThread4},
+
+		{EThreadMain, ECondDestroy},
+		{EThreadMain, EMutexDestroy},
+
+		{EThreadMain, EStop},
+		{ENoThread, ELastCommand},
+	};
+
+	TRACE("-TestCond688\n");
+	return LoadHarness(lCommandArr);
+}
+
+
+//sem_getvalue on a semaphore posted n times
+int TestSem316()
+{
+	TRACE("+TestSem316\n");
+	
+	HarnessCommand lCommandArr[255] = 
+	{
+		{EThreadMain, ESemInit,  (void*) NULL},
+		{EThreadMain, ESemPost},
+		{EThreadMain, ESemPost},
+		{EThreadMain, ESemPost},
+		{EThreadMain, ESemPost},
+		{EThreadMain, ESemWait},
+		{EThreadMain, ESemWait},
+
+		{EThreadMain, ESemGetValue},
+		{EThreadMain, ECheckValue, (void*) 2},
+		{EThreadMain, ESemDestroy},
+
+		{EThreadMain, EStop},
+		{ENoThread, ELastCommand},
+	};
+
+	TRACE("-TestSem316\n");
+	return LoadHarness(lCommandArr);
+}
+
+//sem_trywait called on a non posted semaphore
+int TestSem390()
+{
+	TRACE("+TestSem390\n");
+	HarnessCommand lCommandArr[255] = 
+	{
+		{EThreadMain, ESemInit},
+					
+		{EThreadMain, EThreadCreate, (void*) EThread1},
+
+		{EThread1, ESemTryWait},
+		{EThread1, EVerifyErrno, (void*) EAGAIN},
+		{EThread1, EPostSignal},
+		{EThreadMain, EWaitForSignal},
+		{EThread1, EStop},
+
+		{EThreadMain, ESemDestroy},
+		{EThreadMain, EThreadDestroy, (void*) EThread1},
+		{EThreadMain, EStop},
+		{ENoThread, ELastCommand},
+	};
+
+	TRACE("-TestSem390\n");
+	return LoadHarness(lCommandArr);
+}
+
+
+#define FLOAT float
+#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cfloat
+#define IGNORE_ZERO_INF_SIGN		0x10
+
+
+
+
+
+#define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1),  \
+                         (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
+                         
+#define KErrNone 0
+#define KErrGeneral -1                         
+
+
+int  check_float (FLOAT computed, FLOAT expected,FLOAT max_ulp, FLOAT &gen_ulp)
+{
+  int ok = 0;
+  FLOAT diff = 0;
+  FLOAT ulp = 0;
+
+  
+  
+  if (isnan (computed) && isnan (expected))
+  ok = 1;
+  
+  else if (isinf (computed) && isinf (expected))
+    {
+      /* Test for sign of infinities.  */
+      if ((IGNORE_ZERO_INF_SIGN) == 0
+	  && signbit (computed) != signbit (expected))
+	  {
+	  ok = 0;
+	  }
+      else
+	  ok = 1;
+    }
+  /* Don't calc ulp for NaNs or infinities.  */
+  else if (isinf (computed) || isnan (computed) || isinf (expected) || isnan (expected))
+    ok = 0;
+  else
+    {
+    diff = fabsf(computed - expected);
+      /* ilogb (0) isn't allowed.  */
+      if (expected == 0.0)
+	  ulp = diff / ldexpf (1.0, - MANT_DIG);
+      else
+	  ulp = diff / ldexpf (1.0, ilogbf (expected) - MANT_DIG);
+      
+      if ((IGNORE_ZERO_INF_SIGN) == 0
+	  && computed == 0.0 && expected == 0.0
+	  && signbit(computed) != signbit (expected))
+	  ok = 0;
+      else if (ulp == 0.0 || (ulp <= max_ulp ))
+	  ok = 1;
+      else
+	  {
+	  ok = 0;
+	  }
+
+    }
+  gen_ulp = ulp ;  
+  
+  return ok;
+}
+
+
+int atan2_testL()
+{
+ 	// Create temporary variables in stack
+  	//char Tname[]   = "atan2l_test_0_0_0_1";
+  	FLOAT input1   = 0;
+  	FLOAT input2   = 1;
+  	FLOAT expected = 0;
+  	FLOAT max_ulp  = 0; 
+  	FLOAT gen_ulp;
+  	
+  	// Read parameters
+  	
+  	    
+    // Do some testing
+    FLOAT res = atan2f(input1, input2);
+        
+    if(check_float(res, expected, max_ulp, gen_ulp))
+    {
+    	return 0;
+    }
+    else
+    {
+    	return -1;
+    }
+   
+}
+
+
+#define TESTFILE "c:\\foo.gz"
+int Gzprintf()
+{
+    int res = KErrNone ;
+    gzFile file;
+    const char * fname = TESTFILE ;
+    file = gzopen(fname, "wb");
+        if (file == NULL) 
+    {
+     res = KErrGeneral;
+     return res;
+    }   
+    if (gzprintf(file, ", %s!", "hello") != 8) 
+    {
+       return KErrNone;
+    }
+
+    int err = gzclose(file);
+    if(err == 0)
+    {  	
+     	res = KErrNone ;
+    } 
+    else
+    {    	
+        res =res= KErrGeneral;
+    } 
+    return res;
+}
+ 
+ 
+int getpwnam_negL( )
+{
+    //__UHEAP_MARK;
+  	// Create temporary variables in stack
+  	struct passwd* pwd;
+  	char pw_nam[]="abc";
+  	
+    pwd=getpwnam(pw_nam);
+
+    // Set test result
+	if(pwd==NULL)       	
+	{
+		return 0;
+	}
+	else
+	{
+		return -1;
+	}
+       	
+    //__UHEAP_MARKEND;
+ }
+ 
+int check (int thing, int number)
+{
+  if (!thing)
+    {
+	  return -1;
+    }
+  else 
+	  return KErrNone;
+}
+
+/* Complain if first two args don't strcmp as equal.  */
+int equal (const char *a, const char *b, int number)
+{
+  return check(a != NULL && b != NULL && (strcmp((a), (b)) == 0), number);
+}
+
+
+int memcpy2()
+{
+	char one[50];
+	(void) strcpy(one, "abc");
+	(void) memcpy(one, "xyz", 0);
+	return equal(one, "abc", 4);			/* Zero-length copy. */
+}
+
+int strcmp1()
+{
+
+	int retval;
+	//STEP 1
+	retval = check (strcmp ("a", "a") == 0, 2);		/* Identity. */
+	if (retval == KErrNone)
+		retval = check (strcmp ("abc", "abc") == 0, 3);	/* Multicharacter. */
+
+	return retval;
+}
+
+int strcat2()
+{
+	
+	char one[50];
+	int retval;
+
+	//STEP 2
+	(void) strcpy (one, "");
+	(void) strcat (one, "");
+	retval = equal (one, "", 7);			/* Boundary conditions. */
+	if (retval == KErrNone)
+		{
+		(void) strcpy (one, "ab");
+		(void) strcat (one, "");
+		retval = equal (one, "ab", 8);
+		if (retval == KErrNone)
+			{
+			(void) strcpy (one, "");
+			(void) strcat (one, "cd");
+			retval = equal (one, "cd", 9);	
+			}
+		}
+	return retval;
+}
+
+
+
+static int 
+do_test ()
+{
+	int nfns; 
+	int retval =0;
+	int i;
+ int (*pfnArray[])() =
+ {
+	strcat2,
+	strcmp1,
+	memcpy2,
+	getpwnam_negL,
+	Gzprintf,
+	atan2_testL,
+	TestSem390,
+	TestSem316,
+	TestCond688,
+ };
+
+  nfns = (sizeof pfnArray)/(sizeof (int (*)()));
+  for(i=0; i<nfns; i++)
+  {
+  	retval += pfnArray[i]();
+  }
+  return retval;
+}
+
+int
+main (int argc, char *argv[])
+{
+  int retval = 0;
+  retval = do_test();
+  testResultXml("gcce-validate",retval);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/group/bld.inf	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,64 @@
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Description:  This bld.inf is for all testapps comes under mobileruntime library.
+*
+*/
+
+
+
+// *****************stdlibs related testapps********************
+
+#include "../../stdlibs/internal/group/bld.inf"
+
+
+// ****************stdlibs testsuite ******************
+
+#include "../../stdlibs/internal/ts/group/bld.inf"
+
+
+// *****************wsd related testapp*****************
+
+//#include "../../internal/twsdcnfrm/group/bld.inf"
+
+
+// *****************ssl related testapps************************
+
+#include "../../ssl/internal/group/bld.inf"
+
+
+// *****************glib related testapps***********************
+
+#include "../../glib/internal/group/bld.inf"
+
+
+
+//****************stdcpp testsuite ******************
+
+#include "../../stdcpp/internal/group/bld.inf"
+
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/install/mobileruntime_all_testapps_common.pkg	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,47 @@
+;	Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+;	All rights reserved.
+;
+;	Redistribution and use in source and binary forms, with or without 
+;	modification, are permitted provided that the following conditions are met:
+; 	* Redistributions of source code must retain the above copyright notice, this 
+;  	  list of conditions and the following disclaimer. 
+; 	* Redistributions in binary form must reproduce the above copyright notice, 
+;   	this list of conditions and the following disclaimer in the documentation 
+;   	and/or other materials provided with the distribution. 
+; 	*	Neither the name of the <ORGANIZATION> nor the names of its contributors 
+;   	may be used to endorse or promote products derived from this software 
+;   	without specific prior written permission. 
+;   
+;	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+;	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+;	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+;	DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+;	FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+;	DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+;	SERVICES, LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+;	CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+;	OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+;	OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+;
+;Languages
+&EN
+
+;Header
+#{"mrt2_0_all_libs_common.pkg"},(0xE0000002),1,0,0
+
+;Supports S60 3.0
+[0x101F7961], 0, 0, 0, {"S60ProductID"}
+
+;Localised Vendor name
+%{"Nokia Testing EN"}
+
+;Unique Vendor name
+:"Vendor"
+
+;Supports Series 60 v 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+;Install package with repository files
+;@"glib_testapps.sisx",(0xE0207600)
+;@"ssl_testapps.sisx",(0xE0207600)
+;@"..\..\stdlib\internal\install\stdlibs_testapps.sisx",(0x102755AA)
Binary file internal/releasenote/MRT_ReleaseNotes.doc has changed
Binary file internal/s60_tracking.xls has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/twsdcnfrm/group/bld.inf	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,39 @@
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Description:  WSD conformance for standard libraries
+*
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_MMPFILES
+twsdcnfrm.mmp
+
+// end of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/twsdcnfrm/group/twsdcnfrm.mmp	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,56 @@
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+* Description:  WSD conformance for standard libraries
+*
+*/
+
+
+#include <domain/osextensions/platform_paths.hrh>
+OSEXT_LAYER_SYSTEMINCLUDE
+
+TARGET        twsdcnfrm.exe
+TARGETTYPE    exe
+UID           0x100039CE 0xA0001314
+VENDORID      
+
+CAPABILITY		None
+
+SOURCEPATH      ../src
+SOURCE          twsdcnfrm.cpp
+
+SYSTEMINCLUDE     /epoc32/include/stdapis
+
+SYSTEMINCLUDE    /epoc32/include
+
+SYSTEMINCLUDE    /epoc32/include/osextensions/stdapis
+SYSTEMINCLUDE    /epoc32/include/osextensions/stdapis/sys 
+
+STATICLIBRARY    libcrt0.lib 
+LIBRARY          libc.lib 
+LIBRARY          euser.lib 
+
+//end of file
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internal/twsdcnfrm/src/twsdcnfrm.cpp	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,52 @@
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Description:  WSD conformance for standard libraries
+*
+*/
+
+
+#include <stdio.h>
+int main(void)
+{
+	bool flag = true;
+	printf("Running WSD conformance testcase for standard library.\n");
+	while(1)
+	{
+		if(flag)
+			printf("\nPress 'e' or 'E' and Enter to exit: ");
+		flag = !flag;
+		int c = getchar();
+		if (c == 'E' || c == 'e')
+		{
+			break;
+		}
+	}
+	return 0;
+}
+
+// end of file
+
Binary file lowlevellibsandfws/apputils/engineering/features/CClientMessage Design Document v0.1.doc has changed
Binary file lowlevellibsandfws/apputils/engineering/features/SGL.GT0334.049 BAFL System Utils Test Specification.doc has changed
Binary file lowlevellibsandfws/apputils/engineering/features/SGL.GT0334.116 BAFL Activity Manager Test Specification.doc has changed
Binary file lowlevellibsandfws/apputils/engineering/features/SGL.TS0017.203 BAFL Test Specification.doc has changed
Binary file lowlevellibsandfws/apputils/engineering/features/SGL.TS0017.322 BAFL System Sound Design.doc has changed
Binary file lowlevellibsandfws/apputils/engineering/features/SGL.TS0017.323 BAFL Backup Design.doc has changed
Binary file lowlevellibsandfws/apputils/engineering/features/SGL.TS0017.325 BAFL Test How To FAQ.doc has changed
Binary file lowlevellibsandfws/apputils/engineering/misc/sys_sounds_func_spec.doc has changed
Binary file lowlevellibsandfws/apputils/engineering/stringpool/StringPoolDesign.doc has changed
Binary file lowlevellibsandfws/genericusabilitylib/engineering/SGL.GT0461.304.PREQ2177 Test Specification.doc has changed
Binary file lowlevellibsandfws/genericusabilitylib/engineering/SGL.TS0017.387 EUserHl Uid Allocations.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0219.155 PREQ806 Design Document.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.103 PREQ967 Comp Int Test Spec.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.201 PREQ967 Design Document.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.217 PREQ1192 Component Design Document.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.227 CR0526 design document.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0250.228 System Libraries CR0629 Design.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0292.107 CR0759 Design Document v1-0.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0292.509 CR0759 ECOM Component Test Spec.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0304.111 PREQ1480 Design Document v1-0.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0304.112 System Libraries CR0902 Design v1.0.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0304.114 Disable Scanning on Specific Drives Design v1.0.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0329.105 EC043 ECOM Interface Extensions Design Document.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0329.218 EC043 ECOM Interface Extensions Test Specification.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0334.024 CR1182 Reduce ECOM Custom Resolver Load Time Design Document.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/Feature_Documentation/SGL.GT0334.411 CR1182 Test Specification.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/SGL.TS0017.131 ECOM Uid Allocations.doc has changed
Binary file lowlevellibsandfws/pluginfw/engineering/SGL.TS0017.132 ECom Testability How To FAQ.doc has changed
Binary file ofdbus/doc/s60Dbusdoc.chm has changed
Binary file ofdbus/tsrc/releasenote/DBus_ReleaseNotes.doc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ssl/internal/genatsmodules.bat	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,2667 @@
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+rem Redistribution and use in source and binary forms, with or without 
+rem modification, are permitted provided that the following conditions are met:
+
+rem Redistributions of source code must retain the above copyright notice, this 
+rem list of conditions and the following disclaimer.
+rem Redistributions in binary form must reproduce the above copyright notice, 
+rem this list of conditions and the following disclaimer in the documentation 
+rem and/or other materials provided with the distribution.
+rem Neither the name of Nokia Corporation nor the names of its contributors 
+rem may be used to endorse or promote products derived from this software 
+rem without specific prior written permission.
+
+rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+rem AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+rem IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+rem DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+rem FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+rem DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+rem SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+rem CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+rem OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+rem
+rem Description:      
+rem
+
+@perl -x GenATSModules.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 
+@goto end
+
+#!perl
+use strict;
+use File::Find;
+use File::Copy;
+use Cwd;
+
+my $sendEmail = "no";
+my $target = "winsspd";
+my $suite;
+my $install = "no";
+my $session = "no";
+my $combinedSession = "no";
+my $sdkversion="";
+my $noXmlsGenList = "play_new";
+
+my %DirHash;
+
+
+if(scalar @ARGV ==0 || $ARGV[0] =~ /[\-\\\/][h\?]/ || $ARGV[0] =~ /help/ )
+{
+	print <<EOHelp;
+genatsmodules.bat - hardcoded script to generate ATSINPUT folders for mobileruntime and ngi projects	
+Usage:
+	genatsmodules.bat
+		Create ATSINPUT for the default testsuite based on 
+		location it is executed from place in stdlibs/internal 
+		and run and it generates ATSINPUT for stdlibs
+		similiarly place it in ssl/internal or glib/internal or 
+    ngi/internal and run to generate  ATSINPUT for ssl, glib  
+    and ngi respectively	
+  
+  genatsmodules [libname]
+			where libname can be stdlibs, ssl, glib, etc. Creates 
+			ats test drop for given library. Valid from any internal
+			folder of mobileruntime.
+			
+  
+  genatsmodules ngi
+			create ngi testsuite. Valid inside ngi/internal only
+			
+genatsmodules play_new
+			create play_new testsuite. Valid inside play_new/internal only
+				
+	
+      
+	genatsmodules ltp
+			create ltp testsuite. Valid inside stdlibs/internal only
+	
+	genatsmodules lsb
+			create lsb testsuite. Valid inside stdlibs/internal only
+			
+	genatsmodules stdcpp
+			create stdcpp testsuite. Valid inside stdcpp/internal only
+			
+	genatsmodules [libname] install 
+		 where libname can be stdlibs, ssl, glib, ltp, lsb to create a 
+		 ATSINPUT where the dependent mobileruntime libraries are also 
+		 copied and used (It copies the dependent libraries using the 
+		 ATS component files)
+		
+	genatsmodules session [libname] [target] 		
+		where libname is any of the standard libs as shown above and 
+		target can be winsspd, winscw, scarfe, zeus etc. to create 
+		session files for scarfe, winsspd etc. 
+		
+genatsmodules session combined [target] 				
+      will look at the existing ATSINPUT(which can have any 
+      combination of created components and create a combined 
+      session file. This way you get increased flexibility in 
+      the libraries you choose to combine into a single session 
+      file. If the target is a hardware target(that is not winsspd
+      or winscw), the script will first attempt to find a target 
+      specific component file and if not found, the generic hw 
+      component file. 
+	
+
+	Note:
+	ATSINPUT creation is a 2 stage process. First we create 
+	the components and then we run (for example) 
+	"genatsmodules session stdlibs winscw" and 
+	"genatsmodules session stdlibs scarfe" to create the 
+	session files.
+EOHelp
+		exit();
+}
+my $do_armv5 = 1;
+my $do_winscw = 1;
+
+if(scalar @ARGV == 1)
+{
+	if($ARGV[0] eq "session")
+	{
+		die("parameter session must be followed by libname and target platform");
+	}
+	else
+	{
+		$suite = $ARGV[0];
+	}
+}
+elsif(scalar @ARGV == 2)
+{
+	if($ARGV[0] eq  "session")
+	{
+		die("parameter session must be followed by libname and target platform");
+	}
+	elsif($ARGV[1] eq "install")
+	{
+		$suite = $ARGV[0];
+		$install = "yes";
+	}
+	elsif($ARGV[1] eq "armv5")
+	{
+		$do_winscw = 0;
+	}
+	elsif($ARGV[1] eq "winscw")
+	{
+		$do_armv5 = 0; 
+	}
+	else
+	{
+		die("second parameter after target platform $ARGV[0] can only be \"install\" ");
+	}
+}
+elsif(scalar @ARGV == 3)
+{
+		if($ARGV[0] ne "session")
+		{
+			die("invalid combination of parameters. Program expected 1st parameter to be \"session\" ");
+		}
+		else
+		{
+			$session = "yes";
+			$suite = $ARGV[1];
+			$target = $ARGV[2];
+	
+			if($suite eq "combined")
+			{		
+				$combinedSession = "yes";
+	  	}
+			
+		}
+}
+elsif(scalar @ARGV == 4)
+{
+		if($ARGV[0] ne "session")
+		{
+			die("invalid combination of parameters. Program expected 1st parameter to be \"session\" ");
+		}
+		else
+		{
+			$session = "yes";
+			$suite = $ARGV[1];
+			$target = $ARGV[2];
+			$sdkversion = $ARGV[3];
+			if($suite eq "combined")
+			{		
+				$combinedSession = "yes";
+	  	}
+		}
+}
+else
+{
+		die("program recieved too many parameters!");
+}#end of commandline processing
+
+
+	
+my $rootDrive = substr(getcwd(), 0,2);
+my $templateRoot = getcwd();
+if(rindex($templateRoot, "internal") == -1 && ($suite ne "stdlibs" && $suite ne "pcts" ) )
+{
+	die("Please run the script from the appropriate internal folder in the mobileruntime /omerta project!!");
+}
+else
+{
+
+	 my $srcPrefix = getcwd();
+	 $srcPrefix =~ /(.*)internal.*/;
+	 $srcPrefix = $1;
+	 if(rindex($templateRoot, "stdlibs") != -1)
+	 {
+	 	$srcPrefix =~ /(.*)stdlibs.*/;
+	 	$srcPrefix = $1;
+	 	
+	 	if($suite eq "glib")
+	 	{
+	 		$templateRoot = $srcPrefix."/glib/internal/";
+	 	}
+	 	elsif($suite eq "ssl")
+	 	{
+	 		$templateRoot = $srcPrefix."/ssl/internal/";
+	 	}
+	 	elsif($suite eq "ngi" && $session ne "yes")
+	 	{
+	 		print "ngi atsinput creation not supported from mobileruntime\n";
+	 		exit();
+	 	}
+	 }
+	 
+	if(rindex($templateRoot, "glib") != -1)
+	{
+		$suite = "glib";
+	}
+	elsif(rindex($templateRoot, "ssl") != -1)
+	{
+		$suite = "ssl";
+	}
+	elsif(rindex($templateRoot, "ngi") != -1)
+	{
+		$suite = "ngi";
+	}
+}
+
+
+my $optsGroupPath = $templateRoot."/ts/ltp/opts/group/";
+#$optsGroupPath = getcwd()."/ts/ltp/opts/group/";
+my $ltpPath =$templateRoot."/ts/ltp/";
+my $stdcppPath =$templateRoot."/testapps/stlport/";
+my @stdexeList = ("gnu","tstdcpp","stdcxx/tstapps");
+#my $gnuPath =getcwd()."/testapps/gnu/";
+#my $tstdcppPath =getcwd()."/testapps/tstdcpp/";
+my	$ATSRoot = getcwd()."\\ATSINPUT";
+
+my @generatedModules;
+my %cfglocation;
+
+my $TDIR = "\\internal\\testapps\\";
+
+my @libcModules = ( "libc_loc_blr",  "libc_time_blr", "libc_db_blr","tctype", "tifioctls", "tinet",
+                      "tlibcwchar", "tlink", "tmkfifo", "tmmap", "tmsgqueue",
+		      "tnetdb", "tpipe","tregex", "tsemaphore", "tshm","tsocket" ,
+		      "tstdio", "tstdlib", "tstring", "tsyscalls",
+		      "tsyssim", "twctype", "tselect", "tsysunistd", "twideapis", "twopen", "twchar",
+		      "twcharapi",
+               );
+
+my @libdlModules = ("tlibdl");
+my @libmModules = ("libm_double_blr", "libm_float_blr","libm_ldouble_blr");
+
+
+my @pthreadModules = ( "testcondbroadcast", "testconddestroy", "testcondinit", "testcondsignal", "testcondtimedwait", "testcondwait",
+"tmutex", "tpthread", "testpthreadonce", "testsemclose", "testsemdestroy", "testsemgetvalue", "testseminit", "testsemopen", "testsempost",
+"testsemtimedwait", "testsemtrywait", "testsemunlink", "testsemwait");
+
+
+my @stdliblist = ( "libc", "libpthread", "libdl", "libm", "libz", "libcrypt");
+my @dllList = ("backend.dll", "libc.dll", "LibCIpcClient.dll", "LibCIpcServer.exe", "libdl.dll", "libm.dll", "libpthread.dll", "libcrypt.dll", "libz.dll", "liblogger.dll");
+
+
+my @stdcpplist = (
+  				 ["fstream1_input.txt", "stlport_fstream", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["nextperm1_good.txt", "stlport_nextprm", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["nextperm2_good.txt", "stlport_nextprm", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["ostmit_good.txt", "stlport_ostmit", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["seek.txt", "stlport_seek", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["istream_extractor_other-1.tst","istream_extractor_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_extractor_other-1.txt","istream_extractor_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_extractor_other-2.tst","istream_extractor_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_unformatted-1.tst","istream_unformatted", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_unformatted-1.txt","istream_unformatted", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_unformatted-2.tst","istream_unformatted", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ostream_inserter_char-1.tst","ostream_inserter_char", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ostream_inserter_other-1.tst","ostream_inserter_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ostream_inserter_other-2.tst","ostream_inserter_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],  				 
+  				 ["istream_extractor_other-1.tst","w_istream_extractor_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_extractor_other-1.txt","w_istream_extractor_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_extractor_other-2.tst","w_istream_extractor_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_unformatted-1.tst","w_istream_unformatted", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_unformatted-1.txt","w_istream_unformatted", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_unformatted-2.tst","w_istream_unformatted", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ostream_inserter_char-1.tst","w_ostream_inserter_char", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ostream_inserter_other-1.tst","w_ostream_inserter_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ostream_inserter_other-2.tst","w_ostream_inserter_other", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["filebuf_members-1.tst","filebuf_members", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["filebuf_members-1.txt","filebuf_members", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["filebuf_virtuals-1.tst","filebuf_virtuals", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["filebuf_virtuals-1.txt","filebuf_virtuals", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["filebuf_virtuals-2.tst","filebuf_virtuals", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["filebuf_virtuals-3.tst","filebuf_virtuals", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ifstream_members-1.tst","ifstream_members", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ifstream_members-1.txt","ifstream_members", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ios_base_members_static-1.tst","ios_base_members_static", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_seeks-1.tst","istream_seeks", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_seeks-1.txt","istream_seeks", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_seeks-2.tst","istream_seeks", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["istream_seeks-3.tst","istream_seeks", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ofstream_members-1.tst","ofstream_members", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ostream_inserter_char-1.txt","ostream_inserter_char", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["ostream_seeks-1.tst","ostream_seeks", "/../internal/testapps/gnu/io/doc/", "/General/", "C:\\TestFramework\\gnu"],
+  				 ["infile_auto.txt","multi_thread_auto", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+);
+
+my @gliblist = (
+  				 ["1.gmarkup", "markup_test", "/epoc32/winscw/c/", "/General/", "C:"],
+   				 ["1.gmarkup", "markup-test", "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["iochannel-test-infile", "iochannel_test",  "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["iochannel-test-infile", "iochannel-test",  "/epoc32/winscw/c/", "/General/", "C:"],
+#  				 ["casemap.bin",  "unicode-caseconv",  "/epoc32/winscw/c/", "/General/", "C:"],
+#  				 ["casefold.bin", "unicode-caseconv",  "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["utf8.txt", "unicode-encoding","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["casecollate.txt", "unicode-collate","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["utf8_hindi.txt", "tutf8","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["scanfile.txt", "tscanner","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["test.txt", "dir_test","/epoc32/winscw/c/temp/tmp/", "/General/", "C:\\temp\\tmp"],
+  				 ["NormalizationTest.txt", "unicode-normalize","/epoc32/winscw/c/", "/General/", "C:"],
+  				 
+  				 ["helloworld.exe", "spawn_test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["helloworld.exe", "spawn_test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  				 ["libmoduletestplugin_a.dll", "module-test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["libmoduletestplugin_a.dll", "module-test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  				 ["libmoduletestplugin_b.dll", "module-test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["libmoduletestplugin_b.dll", "module-test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  			  				 
+  				 );
+  				 
+my @ngilist = (
+           ["Test.txt", "ngi_sa_runtimetester", "/EPOC32/winscw/c/Private/10202be9/", "/General/", ""],
+  				 ["sa_input_repository.txt", "shared","/EPOC32/armv5/c/TestFramework/", "/armv5_urel/", ""],
+  				 ["sa_input_repository.txt", "shared","/EPOC32/winscw/c/TestFramework/", "/winscw_udeb/", ""],
+  				 ["audiomixingfiles.ini", "ngi_sa_audiomixing","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+  				 ["sa_camera_supported.ini", "ngi_sa_camera","/EPOC32/armv5/c/TestFramework/", "/general/", ""],
+  				 ["sa_clip.ini", "ngi_sa_clip","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+  				 ["devicecapabilitiesdata.ini", "ngi_sa_devicecapabilities","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+   				 ["highlevelaudiofiles.ini", "ngi_sa_highlevelaudio","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+					 ["lowlevelaudiofiles.ini", "ngi_sa_lowlevelaudio","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+					 ["runtimedata.ini", "ngi_sa_runtimetester","/EPOC32/winscw/c/TestFramework/", "/general/", ""],						
+					 ["sa_stream.ini", "ngi_sa_stream","/EPOC32/winscw/c/TestFramework/", "/general/", ""],						
+					 #["*", "ngi_sa_videoplayback","/../graphics/video/internal/sa_videoplayback/data/", "/general/", ""],
+					 ["test.*", "ngi_sa_images","/Epoc32/winscw/c/Data/", "/general/", ""]
+					);
+
+  				 
+
+
+my $validexpansions = "all stdlibs combined";
+my $validLibraries = "ltp opts lsb glib ssl ngi pcts stdcpp gcce libc-locale play_new";
+if(rindex($validexpansions, $suite)== -1 && rindex($validLibraries, $suite) == -1)
+{
+	die("$suite is not a valid library. Valid options are $validexpansions $validLibraries");
+}
+
+my $dontStrip = 1;
+my	@liblist;
+if($suite eq "all")
+{
+		@liblist = split " ", $validLibraries;
+		@liblist = (@liblist, @stdliblist);
+		
+}#suite all
+elsif($suite eq "ltp")
+{
+	 @liblist = ("ltp", "opts");
+}
+elsif($suite eq "stdlibs")
+{
+		@liblist = @stdliblist;
+}
+elsif($suite eq "ssl")
+{
+	@liblist = ("libcrypto", "libssl");
+}
+else
+{
+		@liblist = ("$suite");
+}
+
+#	foreach my $l(@liblist)
+#	{
+#			print "$l was there\n";
+#	}
+
+
+if($combinedSession eq "yes")
+{
+	GenerateSessionFile("combined", $target,"combined");
+	exit();
+}
+
+if($session eq "yes")
+{
+	my $file = $templateRoot."/testsession.xml";
+	opendir(DIRHANDLE, $ATSRoot) || die("Please try to create Session files only after ATSINPUT/components has been created!");
+	closedir(DIRHANDLE);
+	$dontStrip = 1;
+	if($suite eq "ngi" || $suite eq "play_new")
+	{
+		@generatedModules = GenGenModules($suite);
+		my @componentFiles = GetXmls($suite);
+		GenerateSessionFile("combined",$target,$suite,\@componentFiles);
+		exit();
+	}
+	elsif($suite eq "ssl")
+	{
+		my @componentFiles = GetSslXmls();
+		GenerateSessionFile("combined",$target,$suite,\@componentFiles);
+		exit();
+	}
+	elsif($suite eq "stdlibs")
+	{
+		#my $dst = $ATSRoot."/$suite"."_testsession.xml";
+		#copy($file, $dst);
+		GenerateSessionFile("combined",$target,$suite);
+		exit();
+	}
+	foreach my $lib(@liblist)
+	{          
+			@generatedModules = GenGenModules($lib);
+			if(scalar @generatedModules != 0)
+			{
+				#print "Generating for $lib\n";
+				GenerateSessionFile($lib, $target,$lib);
+			}
+	}
+	
+	#@generatedModules = GetAllModules();
+	#if(scalar @generatedModules != 0)
+	#{
+	#		GenerateSessionFile("combined",$target, "combined");
+	#}
+	exit();
+}#session generation code
+
+
+if ($suite eq "ltp" || $suite eq "all")
+{
+	my @ltpModules = GetLtpModules();
+	@generatedModules = @ltpModules;
+	DoGen("ltp", ".dll");
+	CopyLtpCfg("ltp");
+	
+	
+	my @saved = @dllList;
+	@dllList = ("ltplib.dll");
+	CopySharedDlls("ltp", \@dllList);
+	TransformXmls("ltp","shared");
+	@dllList = @saved;
+	
+	@generatedModules = GetCompiledModules($optsGroupPath."/bld.inf");
+	DoGen("opts",".dll");
+
+}
+if ($suite eq "glib")
+{
+	my $bldfile = $templateRoot."/testapps/group/bld.inf";
+	my @glibModules = GetCompiledModules($bldfile);
+	@generatedModules = @glibModules;
+	DoGen("glib",".exe");
+	my $gDataRef = \@gliblist;
+	CopyArbitDatFiles("glib",$gDataRef);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList;
+		my @glib2dllList = ("glibbackend.dll", "Libgobject.dll", "libgmodule.dll", "libgthread.dll",
+                "libglib.dll");
+                
+   my  @glib1List = ( "libgobject.dll", "libgmodule.dll", "libgthread.dll",  "libglib.dll", );
+  @dllList = @glib2dllList;
+  CopySharedDlls("glib",\@dllList);     	
+  TransformXmls("glib", "shared");
+   	
+		@dllList = @saved;
+	}#if install
+}#glib
+
+
+if ($suite eq "ssl")
+{
+	my $stripStatus = $dontStrip;
+	$dontStrip = 0;
+	GenCryptoTest();
+	if($install eq "yes")
+	{
+		@dllList = (@dllList, "libcrypto.dll", "libssl.dll");   
+	}#if install
+	$dontStrip = $stripStatus;
+}#ssl
+
+if($suite eq "ngi")
+{
+
+	GenNgiTest();
+	CopyNgiXmls();
+	CopyArbitDatFiles("",\@ngilist);
+
+}
+
+if($suite eq "play_new")
+{
+	my @play_newModules = ("fonttestmodule", "messagingtestmodule","locationtestmodule", "alertstestmodule", 
+	"libxmlstiff","ngisvgtestmodule");
+	@generatedModules = @play_newModules;
+	DoGen("play_new",".dll");
+	
+	 my @list = (
+  				 			 ["*.cfg", "fonttestmodule", "/../fonts/internal/testmodules/fonttestmodule/group/","/General/", ""],
+	 				 			 ["*.xml", "fonttestmodule", "/../fonts/internal/testmodules/fonttestmodule/group/","/", ""],
+	 				 			 
+	 				 			 ["*.cfg", "messagingtestmodule", "/../ngimessaging/internal/testmodules/messagingtestmodule/group/","/General/", ""],
+	 				 			 ["*.xml", "messagingtestmodule", "/../ngimessaging/internal/testmodules/messagingtestmodule/group/","/", ""],
+	 				 			 ["*", "messagingtestmodule", "/EPOC32/winscw/c/messagingtestmodule/","/General/", ""],
+	 				 			 
+	 				 			 ["*.cfg", "locationtestmodule", "/../ngilocation/internal/testmodules/locationtestmodule/group/","/General/", ""],
+	 				 			 ["*.xml", "locationtestmodule", "/../ngilocation/internal/testmodules/locationtestmodule/group/","/", ""],
+	 				 			 
+	 				 			 ["*.cfg", "alertstestmodule", "/../ngialerts/internal/testmodules/alertstestmodule/group/","/General/", ""],
+								 ["*.xml", "alertstestmodule", "/../ngialerts/internal/testmodules/alertstestmodule/group/","/", ""],	 				 			 
+								 ["vertigo.wav", "alertstestmodule", "/Epoc32/winscw/c/alertstestmodule/","/General/", ""],	 				 			 	 				 			 
+	 		
+	 			 			  ["*.cfg", "libxmlstiff", "/../libxmlpp/internal/group/","/General/", ""],
+	 		 	 			  ["*.xml", "libxmlstiff", "/../libxmlpp/internal/group/","/", ""],
+	 		 	 			  ["*.*", "libxmlstiff", "/../libxmlpp/internal/data/","/General/", ""],
+	 		 	 			  
+	 		 	 			  ["*.cfg", "ngisvgtestmodule", "/../ngisvg/internal/testmodules/ngisvgtestmodule/group/","/General/", ""],
+   		 	 			  ["*.xml", "ngisvgtestmodule", "/../ngisvg/internal/testmodules/ngisvgtestmodule/group/","/", ""],
+	 		 	 			  ["*.*", "ngisvgtestmodule", "/epoc32/winscw/c/ngisvgtest/","/General/", ""],
+	 				 			 
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("play_new",$bDataRef);  				 
+	if($install eq "yes")
+	{
+		@generatedModules = GenGenModules("play_new");
+		my @saved = @dllList;
+		my @playList = (
+"ngifonts.dll",
+"ngimessaging.dll",
+"ngisvg.dll",
+"ngilocation.dll",
+"ngialerts.dll",
+"libstdcpp.dll",
+"libxmlpp.dll",
+"FeedsLibXml2xmlpp.dll");
+       @dllList = @playList;
+		CopySharedDlls("play_new",\@dllList);     
+	  TransformXmls("play_new", "shared");
+		@dllList = @saved;
+
+	}#end install
+
+
+}
+
+if($suite eq "stdcpp")
+{
+	@generatedModules = GetstdcppModules();
+	DoGen("stdcpp",".dll");
+	CopyLtpCfg("stdcpp");
+	@generatedModules = GetstdexeModules();
+	DoGen("stdcpp",".exe");
+	
+	my @saved = @dllList;
+	@dllList = ("stdcxxtestengine.dll");
+	CopySharedDlls("stdcpp", \@dllList);
+	TransformXmls("stdcpp","shared");
+	@dllList = @saved;
+	
+	CopyArbitDatFiles("stdcpp",\@stdcpplist);
+	
+	if($install eq "yes")
+	{
+		@generatedModules = GenGenModules("stdcpp");
+		my @saved = @dllList;
+		my @cppList = ("libstdcpp.dll");
+       @dllList = @cppList;
+		CopySharedDlls("stdcpp",\@dllList);     
+	  TransformXmls("stdcpp", "shared");
+		@dllList = @saved;
+	}#if install
+}
+	
+
+if($suite eq "lsb" || $suite eq "all")
+{
+	my @lsbModules = GetLsbModules();
+	@generatedModules = @lsbModules;
+	DoGen("lsb",".exe");
+	
+	my @depDlls;
+	my $dll;
+	
+	#copying the common dlls
+	@depDlls  = 
+	(
+	 "libapi.dll",
+	 "tcm.dll",
+	 "vlib.dll",
+	);
+		
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	#now copy the cfg files
+	CopyLsbCfg("lsb");	
+	#now copy the extra dependency dlls
+	
+	#dlopen
+	@generatedModules = ("dlopen");
+	
+	
+	
+	@depDlls  = 
+	(
+	 "dynlibtest.1.dll",
+	 "dynlibtest.11.1.dll",
+	 "dynlibtest.11.2.dll",
+	 "dynlibtest.12g.dll",
+	 "dynlibtest.12r.dll",
+	 "dynlibtest.14.1.dll",
+	 "dynlibtest.14.2.dll",
+	 "dynlibtest.14.3.dll",
+	 "dynlibtest.3.1.dll",
+	 "dynlibtest.3.2.dll",
+	 "dynlibtest.3.dll",
+	 "dynlibtest.4.dll",
+	 "dynlibtest.8.dll",
+	 "dynlibtest.9.dll",
+	 "dynlibtest.3.dll",
+	 "dynlibtest.8.dll",
+	);
+	
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#dlclose
+	@generatedModules = ("dlclose");
+	@depDlls = ("dynlibclose.1.dll");
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#dlerror
+	@generatedModules = ("dlerror");
+	@depDlls = ("dynlib.dll");
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#now copy the xmls!
+	my $srcDir = $templateRoot."/ts/lsbsuites/group/";
+	
+	my $dst;
+	
+	foreach my $dllib("dlopen", "dlclose", "dlerror")
+	{
+		$dst  = $ATSRoot."\\components\\lsb_".$dllib."\\";
+		copy($srcDir."/lsb_".$dllib."_module_blr_hw_component.xml", $dst) || die("DIED: unable to copy from $srcDir!\n");
+		copy($srcDir."/lsb_".$dllib."_module_blr_winsspd_component.xml", $dst) || die("DIED: unable to copy from $srcDir!\n");
+	}
+	
+}
+
+if($suite eq "gcce")
+{
+
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	@generatedModules = ("gcce-validate", "gcce-load");
+		
+	my @depDlls  = 
+	(
+		"gcce-lib.dll",
+	);
+	
+	my $suffix = ".exe";
+	my $libname = "gcce";
+	
+	
+	my $src;
+	my $dst;
+	foreach my $module(@generatedModules)
+	{
+		my $relroot = $ATSRoot."\\components\\$libname"."_$module";
+		mkdir $relroot || die("DIED: unable to create dir $module\n");
+		mkdir $relroot."\\armv5_urel" || die("DIED: unable to create dir $relroot\\armv5_urel\n");
+		
+		#GenExeXmls($module,$libname);
+		
+		$src = $rootDrive."\\epoc32\\release\\gcce\\urel\\".$module.$suffix;
+		$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+		$dst = $dst."\\armv5_urel\\";
+		copy($src, $dst)  || warn("unable to copy $src to $dst");
+	}
+	$src = $rootDrive."\\epoc32\\release\\gcce\\urel\\"."gcce-lib.dll";
+	$dst = $ATSRoot."\\components\\gcce_gcce-load";
+	$dst = $dst."\\armv5_urel\\";
+	copy($src, $dst)  || warn("unable to copy $src to $dst");
+	
+	
+	my @list = (
+  				 ["gcce_gcce-load_module_blr_hw_component.xml", "gcce-load", "./","/", ""],
+  				 ["gcce_gcce-validate_module_blr_hw_component.xml", "gcce-validate", "./","/", ""],
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("gcce",$bDataRef);  				 
+
+	
+}#if gcce
+
+
+
+if($suite eq "libc-locale")
+{
+	$dontStrip = 0;
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	@generatedModules = ("tstring");
+	DoGen("libc",".dll");
+	
+	my @localelist = (
+	  				 ["locales.txt", "string", "../libc/internal/testapps/tstring/data/", "/General/", ""],
+	  				 ["tstring_locale_component.xml", "string", "../libc/internal/testapps/tstring/group/", "/", ""],
+	 
+	  				 );
+		
+  my $bDataRef = \@localelist;  				 
+	CopyArbitDatFiles("libc",$bDataRef);  				 
+	#delete($ATSRoot."/components/libc_string/"."libc_string_module_blr_hw_component.xml") || die("unable to delete");
+	my $my_src = $ATSRoot."/components/libc_string/"."tstring_locale_component.xml";
+	my $my_dst = $ATSRoot."/components/libc_string/"."libc_string_module_blr_hw_component.xml";
+	
+	unlink($my_dst) ||warn("unable to delete $my_dst");
+	rename($my_src,$my_dst) || move($my_src,$my_dst) || die("Unable to rename!");
+	
+}#if libc-locale
+
+
+if($suite eq "pcts")
+{
+	my $bldfile = $templateRoot."/group/bld.inf";
+	my @pctsModules = GetCompiledModules($bldfile);
+	@generatedModules = @pctsModules;
+	DoGen("pcts",".exe");
+	
+	my @depDlls;
+	my $dll;
+	
+	
+	#copying the common dlls
+	@depDlls  = 
+	(
+		"vsxlibapi.dll",
+		"rttm.exe",
+		"rtlibapi.dll",
+		"vsxvlib.dll",
+		"vsxgenlib.dll",
+		"vsxtsetlib.dll",
+		"vsxvport.dll",
+	);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList; 
+		@dllList = @depDlls;	
+		CopySharedDlls("pcts", \@depDlls);
+		TransformXmls("pcts","shared");
+		@dllList = @saved;
+		
+		#now copy the cfg files
+		my $dst;
+		my $srcDir = "/epoc32/winscw/c/data/tet/";
+		my $file1 = $srcDir."tet_code";
+		my $file2 = $srcDir."tetexec.cfg";
+		foreach my $module(@generatedModules)
+		{
+			$dst = $ATSRoot."\\components\\pcts_".$module;
+			$dst = $dst."\\General\\";
+			copy($file1, $dst) or die "copy: $! $file1 $dst";
+			copy($file2,$dst) or die "copy: $! $file2 $dst";
+		}
+	}
+		
+	
+	
+	
+	my $dst;	
+	foreach my $module(@generatedModules)
+	{
+		my $file3 = "/epoc32/winscw/c/logs/tet/m.".$module;
+
+		$dst = $ATSRoot."\\components\\pcts_".$module;
+		$dst = $dst."\\General\\";
+		copy($file3, $dst) or die "copy: $! $file3 $dst";
+	}#module
+}
+
+
+
+$dontStrip = 0;
+
+if($suite eq "stdlibs" || $suite eq "all")
+{
+	@generatedModules = ("tzlib");
+	DoGen("libz", ".dll");
+
+	@generatedModules = ("tlibcrypt");
+	DoGen("libcrypt",".dll");
+
+	@generatedModules = @libcModules;
+	DoGen("libc",".dll");
+	GenBackendTest();
+	
+	@generatedModules = ("twchar");
+	CopyDeps("libc","twchar_helloworld.exe");
+	
+	@generatedModules = ("twopen");
+	CopyDeps("libc","twpopenwritechild.exe");
+	CopyDeps("libc","twpopenreadchild.exe");
+
+
+	@generatedModules = @libdlModules;
+	DoGen("libdl",".dll");
+	CopyDeps("libdl","Dll1.dll");
+	CopyDeps("libdl","Dll2.dll");
+	CopyDeps("libdl","DependencyTestDll.dll");
+
+	@generatedModules = @libmModules;
+	DoGen("libm",".dll");
+
+	$TDIR = "\\internal\\";
+	@generatedModules = @pthreadModules;
+	DoGen("libpthread",".dll");
+	CopyDeps("libpthread","testharness.dll");
+
+	CopyDatFiles();
+}
+
+if($install eq "yes")
+{
+	foreach my $lib(@liblist)
+	{   
+		#print "Transforming lib $lib\n";       
+		@generatedModules = GenGenModules($lib);
+		my @oldList = @dllList;
+		if($do_winscw)
+  	{
+  		@dllList = (@dllList, "wsdsoln.dll", "libestw32.dll");
+  		CopySharedDlls($lib,\@dllList,"winscw");     	
+	  	TransformXmls($lib, "shared","winscw");
+  	}
+  	@dllList = @oldList;
+  	if($do_armv5)
+  	{
+	  	CopySharedDlls($lib,\@dllList,"armv5");     	
+	  	TransformXmls($lib, "shared","armv5");
+  	}
+	}#FOREACH
+}#if install
+
+
+
+#function to generate ModuleList for a compiled bld.inf
+sub GetCompiledModules($)
+{
+	my $file = shift @_;
+	my @moduleList;
+	
+	
+	# Open input file
+	open (INFILE, "<".$file ) || die ("DIED: Can not find $file!");
+
+	while (<INFILE>)
+	{
+		if(/(.*)\.mmp/ && $1 !~ /^\/\//) 
+	  {
+	  		if($_ !~ /\/\/Not for ATS/)
+	  		{
+	  			push @moduleList, $1;
+	  		}
+	  }
+	}
+	close (INFILE);
+	return @moduleList;
+}
+
+my @groupList;
+sub GetLtpModules()
+{
+        my $prevDir = getcwd();
+        my @rootList = ("kernel", "misc");
+        my @totalgroupList;
+        foreach my $node(@rootList)
+        {
+        	chdir $ltpPath."/$node";
+        	@groupList = ();
+        	find(\&MakeGroupList, ".");
+        	@totalgroupList = (@totalgroupList, @groupList);
+        }
+        chdir $prevDir;
+        return @totalgroupList;
+}
+
+sub GetstdexeModules()
+{
+      my $prevDir = getcwd();
+      my @fullList = ();
+      foreach my $group(@stdexeList)
+      {
+      	my $groupPath = $templateRoot."/testapps/".$group. "/";
+      	chdir $groupPath;
+      	@groupList = ();
+      	find(\&grovelAllMmpFiles, ".");
+      	chdir $prevDir;
+      	@fullList = (@fullList,@groupList);
+      }
+      return @fullList;      
+}
+
+sub grovelAllMmpFiles()
+{
+	if($_ =~ /(.*)\.mmp/ && ! ($_ =~ /manual/))
+	{
+		push @groupList, $1;#get name of module
+	}
+}
+
+sub GetstdcppModules()
+{
+        my $prevDir = getcwd();
+        my @rootList = ("auto");
+        my @totalgroupList;
+        foreach my $node(@rootList)
+        {
+        	chdir $stdcppPath."/$node";
+        	@groupList = ();
+        	find(\&MakeGroupList, ".");
+        	@totalgroupList = (@totalgroupList, @groupList);
+        }
+        chdir $prevDir;
+        return @totalgroupList;
+}
+
+sub GetTstdcppModules()
+{
+      my $prevDir = getcwd();
+      #chdir $tstdcppPath;
+      @groupList = ();
+      find(\&grovelAllMmpFiles, ".");
+      chdir $prevDir;
+      return @groupList;
+}
+
+sub MakeGroupList()
+{
+	my $currentDir = $File::Find::dir;
+	
+	#print "Current dir:$currentDir\n";
+	if( $currentDir =~ /.*\/(.*)\/group/)
+	{
+		if($cfglocation{$1} eq "")
+		{
+			$cfglocation{$1} = getcwd()."\/$1.cfg";
+			push @groupList, $1;#get name of module
+		}#first time in group
+	}#group found
+}#subrtn end
+
+
+#function that generates the ATS setup
+sub DoGen($$)
+{
+	my $libname = shift @_;
+	my $ext = shift @_;
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	
+	GenDirs($libname);
+	my $module;
+	foreach my $listed(@generatedModules)
+	{
+	my @filesToProcess =
+        (
+         "LibXXX_ATSTemplateXXX_module_blr_hw_component.xml",
+         "LibXXX_ATSTemplateXXX_module_blr_winsspd_component.xml",
+         "testframework.ini",
+        );
+		if(rindex($noXmlsGenList, $libname) != -1 )	
+		{
+			@filesToProcess = ("testframework.ini",);
+		}
+
+			if($ext eq ".exe")
+			{
+				GenExeXmls($listed,$libname);
+			}
+			else
+			{
+				#just in case no xml file was supplied
+				
+        my $ref = \@filesToProcess;
+				GenXmls($libname, $listed,$ref);
+			}
+	}#foreach
+	
+	CopyDlls($libname,$ext);
+	#copy the provided cfg, ini and xmls
+	if($libname eq "opts")
+	{
+		CopyOptsCfg($libname);
+	}
+	elsif($libname eq "ltp" || $libname eq "lsb" || $libname eq "glib")
+	{
+	  #copy latter and  dont copy respectively for ltp and lsb
+	}
+	else
+	{
+	  CopyCfgIniXmls($libname);
+	}
+}
+
+sub CopyCfgIniXmls()
+{
+	my $libname = pop @_;
+	
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach my $listed(@generatedModules)
+	{
+	  my $dirname = $listed;
+	  $dirname =~ s/test/t/;
+	  $module = StripModulePrefix($listed);
+	    
+		$src = $libRoot.$libname.$TDIR.$dirname."\\group\\";
+				
+		my $xmlCopied = "0";
+		my @globpattern = ("*.ini", "*.xml","*.cfg");
+		foreach my $pat(@globpattern)
+		{
+			$dst = $ATSRoot."\\components\\".$libname."_".$module;
+			if($pat ne "*.xml")
+			{
+				$dst = $dst."\\General\\";
+			}
+			else
+			{
+				$dst = $dst."\\";
+			}
+			my @filesFound = glob($src."\\$pat");
+			if(scalar @filesFound eq "0")
+			{
+				#print "No files found for module $module $pat!\n";
+				#print $src;
+			}
+			
+			#handcoded
+			if($pat eq "*.cfg" && $xmlCopied eq "0")#rename only if xml not copied
+			{
+				if(scalar @filesFound > 1)
+				{
+					print "Multiple cfg files found. Copying all!\n";
+				}
+				else
+				{
+						$dst = $dst.$listed.".cfg";
+				}
+			}				
+			elsif($pat eq "*.xml")
+			{
+				my $folder = $dst;
+				foreach my $from (@filesFound) 
+				{
+					if($from =~ /winscw_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_winscw_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+					elsif($from =~ /winsspd_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_winsspd_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+					elsif($from =~ /hw_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_hw_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+				}#examine individually			
+				if(scalar @filesFound > 2)
+				{
+					#print "Multiple xml files found!!!\n";
+				}
+				@filesFound = ();
+			}	
+				
+			
+			foreach my $from (@filesFound) 
+			{
+					copy($from, $dst) or die "DIED: copy: $! $from $dst";
+			}#copy individually			
+		}#globpattern
+	}#module
+}#fn
+
+#copy the cfg files for the opts test suite
+sub CopyOptsCfg()
+{
+	my $libname = pop @_;
+	
+	my $libRoot = $optsGroupPath."\\";
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach $module(@generatedModules)
+	{
+		$src = $libRoot.$module."\.cfg";
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($src, $dst) or warn "copy: $! $src $dst";
+	}#module
+}#fn
+
+#copy the lsb cfg files
+sub CopyLsbCfg()
+{
+	my $libname = pop @_;
+	
+	my $module;
+	
+	my $dst;
+	
+	my $srcDir = $templateRoot."/ts/lsbsuites/lsblib/data/";
+		
+	foreach $module(@generatedModules)
+	{
+		my $file1 = $srcDir."tet_code.cfg";
+		my $file2 = $srcDir."tetexec.cfg";
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($file1, $dst) or die "copy: $! $file1 $dst";
+		copy($file2, $dst) or die "copy: $! $file2 $dst";
+	}#module
+}#fn
+
+
+#copy the ltp cfg files
+sub CopyLtpCfg($)
+{
+	my $libname = pop @_;
+	
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach $module(@generatedModules)
+	{
+		$src = $cfglocation{$module};
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($src, $dst) or warn "copy: $! $src $dst";
+	}#module
+}#fn
+
+
+sub CopyDlls($$)
+{
+	my $libname = shift @_;
+	my $suffix = shift @_;
+	
+	my $module;
+	my $src;
+	my $dst;
+	
+	
+	foreach $module(@generatedModules)
+	{
+	  if($do_winscw == 1)
+	  { 	  
+			$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$module.$suffix;
+			$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+			$dst = $dst."\\winscw_udeb\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	  if($do_armv5 == 1)
+	  {
+			$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$module.$suffix;
+			$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+			$dst = $dst."\\armv5_urel\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	}#foreach
+}
+#fn to generate the session file
+sub GenerateSessionFile($$$$)
+{
+	my $libname = shift @_;
+	my $target = shift @_;
+	my $name = shift @_;
+	my $listptr = shift @_;
+	my $outdir = $ATSRoot;
+	my $infile = $templateRoot."\\testsession.xml";
+	chdir $outdir || die("DIED: Unable to chdir!"); 
+	#open INFILE, $infile || die ("DIED: Can not open input file $infile");
+	my $prefix = $name."_".$target;
+	if($sdkversion ne "")
+	{
+		$prefix = $prefix."_".$sdkversion;
+	}
+	
+	open OUTFILE, ">".$outdir."\\".$prefix."_testsession.xml" || die ("DIED: Can not open output file");
+	my $line;
+  my $snippet = $target;
+  if($target ne "winscw" && $target ne "winsspd")
+  {
+  	$snippet = "hw";
+  }
+
+print OUTFILE "<?xml version=\"1.0\"?>\n";
+print OUTFILE "<testsession>\n";
+#print OUTFILE "<symbian-version>$libname"."_".$snippet."_TestDrop_blr_component</symbian-version>\n";	
+print OUTFILE "<symbian-version>ats_test_session</symbian-version>\n";	
+print OUTFILE "<testitem>at</testitem>\n";	
+print OUTFILE "<resultfile>ATSOUTPUT\\".$prefix."_testsession_results.xml</resultfile>\n";		
+if($sendEmail eq "yes")
+{
+print OUTFILE <<EOEmailNote;
+<email_notification>
+<include_test_cases>true</include_test_cases>
+<message_file>C:\\\\lm.txt </message_file>
+<send_after_rerun>false</send_after_rerun>
+<subject>ATS testreport</subject>
+<from>swbuild\@nokia.com</from>
+<to>santosh.ks\@nokia.com</to>
+<to>Imtiyaj.Kaji\@nokia.com</to>
+<to>tp-ap-india-mrt-testdg\@nokia.com</to>
+<to>tp-ap-india-mrt-libsdg\@nokia.com</to>
+<to>subeesh.sivanandan\@nokia.com</to>
+<to>girish.bhat\@nokia.com</to>
+</email_notification>
+EOEmailNote
+}
+
+	if($libname ne "combined")
+	{
+		AddAssumedIncludes($libname,$snippet);
+	}
+	else
+	{
+		if($listptr ne "")
+		{
+			AddFileList($libname,$listptr);
+		}
+		else
+		{
+			AddActualIncludes($libname);
+		}
+	}
+   				
+	print OUTFILE "</testsession>\n";
+
+	close(OUTFILE);
+	#close(INFILE);
+}#fn
+
+
+sub AddAssumedIncludes($$)
+{
+	my $libname = shift @_; 
+	my $snippet = shift @_;
+	
+	my $APITest;
+	foreach my $listed(@generatedModules)
+						{
+							$APITest = StripModulePrefix($listed);
+							print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of $target xml for $APITest -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							if($libname eq "all")
+							{
+									print OUTFILE "		 <testplan>ATSINPUT\\components\\$listed\\$listed"."_module_blr_".$snippet."_component.xml</testplan>\n";	 
+							}
+							else
+							{
+									print OUTFILE "		 <testplan>ATSINPUT\\components\\$libname"."_"."$APITest\\$libname"."_$APITest"."_module_blr_".$snippet."_component.xml</testplan>\n";	 
+							}
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	           }#foreach @generatedModules
+}
+
+
+sub AddFileList($$)
+{
+	my $libname = shift @_; 
+	my $listptr = shift @_;
+	my @componentfiles = @$listptr;
+	
+			foreach my $listed(@componentfiles)
+						{
+								print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of $target xml -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							print OUTFILE "		 <testplan>ATSINPUT\\components\\$listed</testplan>\n";	 
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	           }#foreach @componentfiles
+}
+
+
+
+sub GetSslXmls()
+{
+	my $APITest;
+	my @componentfiles;
+	
+	my @emulatorfiles = 
+	(
+	"libssl_ssltest\\libssl_blr_winsspd_component.xml",
+	"libcrypto_crypto_test\\libcrypto_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestss_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestverify_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestenc_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestgen_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltpkcs7_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltpkcs7d_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltreq_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltreq2_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltrsa_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltcrl_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltsid_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltx509_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltx5091_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltx5092_blr_winsspd_component.xml",
+	 );
+	 
+	my @hwfiles =
+	(
+		"libcrypto_openssl\\libcrypto_topenssltestss_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltestverify_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltestenc_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltestgen_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltpkcs7_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltpkcs7d_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltreq_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltreq2_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltrsa_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltcrl_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltsid_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltx509_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltx5091_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltx5092_blr_hw_component.xml",		
+		"libssl_ssltest\\libssl_blr_hw_component.xml",
+		"libcrypto_crypto_test\\libcrypto_blr_hw_component.xml",
+	);
+	if($target eq "winsspd" || $target eq "winscw")
+	{
+		@componentfiles = @emulatorfiles;
+	}
+	else
+	{
+		@componentfiles = @hwfiles;
+	}
+	return @componentfiles;
+}
+
+
+
+sub AddActualIncludes($)
+{
+	my $libname = shift @_; 
+	find(\&XmlComponentFiles, ".");
+	my $key;
+	my $value;
+	while(($key, $value) = each(%DirHash)) 
+	{
+							$value =~ s/\//\\/g;
+							print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of dynamically found $target xml -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							print OUTFILE "		 <testplan>$value</testplan>\n";	 
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	
+	}#while
+}#fn
+
+sub XmlComponentFiles()
+{
+	if($_ !~ /\.xml/ || $_ =~ /manual/)
+	{
+		return;
+	}
+	#print "Processing $_\n";
+	my $dir = getcwd();
+	if($dir =~ /.*(ATSINPUT.*)/)
+	{
+			$dir = $1;
+			if($dir !~ /.*components.*/)
+			{
+				return;
+			}
+			#print "The dir is $dir\n";
+	}
+	else
+	{
+		return;
+	}
+	
+	if($target eq "winsspd" )
+	{
+		if($_ =~ /winsspd/)
+		{
+			#print "Adding $target file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+		}
+	}
+	elsif($target eq "winscw")
+	{
+		if($_ =~ /winscw/)
+		{
+			#print "Adding $target file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+		}
+	}
+	elsif($_ =~ /$target/)
+	{
+		#print "$_ matched $target \n";
+		#print "Adding $target file $_ for $dir\n";
+		$DirHash{$dir} = $dir."/".$_;
+	}
+	elsif($_ =~/hw/)
+	{
+		#print "$_ matched hw";
+		if(scalar $DirHash{$dir} == 0)
+		{
+			#print "Adding hw file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+			#print " and added\n"
+		}
+		else
+		{
+			#print " and not added\n";
+		}
+	}
+}
+
+
+
+sub emptyArray()
+{
+	@generatedModules = ();
+}
+
+sub GenDirs($)
+{
+ my $libname = shift @_;
+ my $dirname;
+ foreach my $module(@generatedModules)
+ {
+  $dirname = StripModulePrefix($module);
+	my $relroot = $ATSRoot."\\components\\$libname"."_$dirname";
+	mkdir $relroot || die("DIED: unable to create dir $dirname\n");
+	mkdir $relroot."\\General" || die("DIED: unable to create dir $relroot\\General\n");
+	if($do_armv5 == 1)
+	{
+		mkdir $relroot."\\armv5_urel" || die("DIED: unable to create dir $relroot\\armv5_urel\n");
+	}
+	if($do_winscw == 1)
+	{
+		mkdir $relroot."\\winscw_udeb" || die("DIED: unable to create dir $relroot\\winscw_udeb\n");
+	}
+ }
+}
+
+sub GenXmls($$$)
+{
+	my $libname = shift @_;
+	my $listedName = shift @_;
+	my $bref = shift @_;
+	my @filesToProcess = @$bref;
+	
+	#strip leading test and t names from module
+	my $moduleName = StripModulePrefix($listedName);
+
+      my $toPath = $ATSRoot."\\components\\$libname"."_$moduleName\\"; 
+        
+
+       my $dst;
+       my $src;
+       foreach $src(@filesToProcess)
+       {
+               $dst = $src;
+               $dst =~ s/ATSTemplateXXX/$moduleName/;
+               $dst =~ s/LibXXX/$libname/;
+             
+
+               if($src eq "testframework.ini")
+               {
+					$dst =  $toPath."General\\".$dst;
+               }
+               else
+               {
+					$dst =  $toPath.$dst;
+               }
+               copy($templateRoot."\\".$src, $dst) || die("DIED: Unable to copy $src to $dst\n");
+               ExpandModuleMacros($dst, $libname, $listedName);
+       }#foreach file
+}
+
+
+sub GenExeXmls()
+{
+	my $moduleName = shift @_;
+	my $libname = shift @_;
+			
+	my $toPath = $ATSRoot."\\components\\$libname"."_$moduleName\\"; 
+  my @filesToProcess =
+  (
+     "LibXXX_ATSTemplateXXX_exemodule_blr_hw_component.xml",
+     "LibXXX_ATSTemplateXXX_exemodule_blr_winsspd_component.xml",
+  );
+	
+	my $dst;
+  my $src;
+  foreach $src(@filesToProcess)
+  {
+        $dst = $src;
+        $dst =~ s/ATSTemplateXXX/$moduleName/;
+        $dst =~ s/LibXXX/$libname/;
+        $dst =~ s/_exemodule_/_module_/;
+				$dst =  $toPath.$dst;
+        copy($templateRoot."\\".$src, $dst) || die("DIED: Unable to copy to $dst\n");
+        ExpandModuleMacros($dst, $libname, $moduleName);
+   }#foreach file
+}
+
+#function to expand the macros existing in a file
+#file is replaced by new version
+#args are relativePath. filename and  $moduleName
+sub ExpandModuleMacros()
+{
+	# Take module name
+	my $moduleName = pop @_;
+	my $libname = pop @_;
+	my $filename = pop @_;
+
+	my $MODULENAME = $moduleName;
+	$MODULENAME =~ tr/[a-z]/[A-Z]/;
+
+	# Open input file
+	open (INFILE, $filename ) || die ("DIED: Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("DIED: Can not open $newOutput");
+
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  s/ATSTemplateXXX/$moduleName/g;
+	  s/LibXXX/$libname/g;
+    	  print OUTFILE $_;
+	}
+
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+}
+
+
+
+sub CopyDeps($$)
+{
+  my $libname = shift @_;
+  my $copyDll = shift @_;
+	my $src;
+	my $dst;
+	foreach my $listed(@generatedModules)
+	{
+				my $module = StripModulePrefix($listed);
+				if($do_winscw == 1)
+				{
+					$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+					$dst = $ATSRoot."\\components\\$libname"."_$module";
+					$dst = $dst."\\winscw_udeb\\";
+					copy($src, $dst)  || warn("unable to copy $src to $dst");
+				}
+				if($do_armv5 == 1)
+				{
+					$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+					$dst = $ATSRoot."\\components\\$libname"."_$module";
+					$dst = $dst."\\armv5_urel\\";
+					copy($src, $dst)  || warn("unable to copy $src to $dst");
+				}
+	}#foreach
+}#fn
+
+#dat file copy
+sub CopyDatFiles()
+{
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+ my @list = (
+  				 ["libcrypt", "tlibcrypt", "group/Test_Data.dat"],
+  				 ["libc", "tnetdb", "data/services.txt"],
+  				 ["libc", "tstring", "data/locales.txt"],
+  				 ["libc", "libc_loc_blr", "data/locales.txt"],
+  				 ["libz", "tzlib", "data/*.*"],
+  				 ["libc", "tlink", "data/*.*"],
+  				 ["libc", "tmmap", "data/*.*"],
+           );
+
+	 my $libname;
+	 my $dirname;
+	 my $glob;
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($libname, $dirname, $glob) = @inarr;
+			my $modulename = StripModulePrefix($dirname);
+			my $src = "$libRoot/$libname/internal/testapps/$dirname/$glob";
+			my $dst = $ATSRoot."\\components\\$libname"."_"."$modulename\\General\\";
+  		if($dirname eq "libc_loc_blr")
+  		{
+  			$src = "$libRoot/libc/src/locales.txt";
+  		}
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  }#ref processing
+}#fn
+
+
+#glib dat file copy
+sub CopyArbitDatFiles($$)
+{
+	
+	 my $libname = shift @_;
+	 my $refArr = shift @_;
+	 my @list = @$refArr;
+	 
+ 	
+	my $fname;
+	my $modulename;
+	my $location;
+	my $atsDst;
+	my $targetDst;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $modulename, $location, $atsDst, $targetDst) = @inarr;
+			#print "[$fname, $modulename, $location, $atsDst, $targetDst]\n";
+			if($location =~ /(.*)\.\.(.*)/)
+			{
+				$location = GetPathPrefix().$2;
+			}
+			else
+			{
+				$location = $rootDrive.$location;
+			}
+			my $src = $location.$fname;
+			my $dst = $ATSRoot."\\components\\$libname"."_".$modulename.$atsDst;
+			if($libname eq "")
+			{
+				$dst = $ATSRoot."\\components\\".$modulename.$atsDst;
+				#print "$dst CHANGED!\n"
+			}
+  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file  $src found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  		
+  		if($targetDst ne "")
+  		{
+  			 		my @filesToChange = ();
+			  		if($atsDst =~ "armv5")
+			  		{
+			  			#armv5 component file
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_hw_component.xml";
+			  			
+			  		}
+			  		elsif($atsDst =~ "winscw")
+			  		{
+			  			#winscw component file
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_winsspd_component.xml";
+			  		}
+			  		else
+			  		{
+			  			#add entry to both xmls
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_hw_component.xml";
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_winsspd_component.xml";
+			  		}
+			  		foreach my $file(@filesToChange)
+			  		{
+			  			$src = $ATSRoot."/components/".$libname."_"."$modulename/".$file;
+			  			ModifyXml($src,$libname,$fname,$atsDst,$targetDst);
+			  		}
+			  }#updating the xmls
+    		
+  }#ref processing
+ 
+  
+}#fn
+
+sub ModifyXml($$$$$)
+{
+	my $filename = shift @_;
+	my $lib = shift @_;
+	my $fname = shift @_;
+	my $atsDst = shift @_;
+	my $targetDst = shift @_;
+	
+	
+	#printf("Modifying $filename with lib= $lib fname= $fname atsDst = $atsDst targetDst = $targetDst\n");
+	
+	# Open input file
+	open (INFILE, $filename ) || die ("Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("Can not open $newOutput");
+
+		
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  if(/\<stif\>/ || /\<execute\>/)
+	  {
+	  	if(/\<stif\>/)
+	  	{
+	  		print OUTFILE "\<stif\>\n";
+	  	}
+	  	else
+	  	{
+	  		print OUTFILE "\<execute\>\n";
+	  	}
+	  	my $type = "data";
+	  	if($atsDst !~ "General")
+			{
+				$type = "binary";
+			}
+			print OUTFILE <<EObinary;
+				
+	  		<install type=\"$type\">
+				<src>$fname</src>
+				<dst>$targetDst\\$fname</dst>
+ 				</install>
+EObinary
+	  }#stif or execute tag found
+	  else
+	  {
+	  	  print OUTFILE $_;
+	  }
+	}#while
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+	
+}#fn
+sub GenGenModules($)
+{
+	my $libname = shift @_;
+	
+		
+	my $src = $ATSRoot."/components/";
+	my @fileList = ();
+	opendir(DIRHANDLE, "$src") || die "Cannot opendir $src";
+  foreach my $name (readdir(DIRHANDLE)) 
+  {
+    if($name =~ /^$libname/)
+    {
+    	if($libname ne "libc" || $name !~ /^libcrypt/) 
+    	{
+    		$name =~ s/^$libname//;
+    		$name =~ s/^_//;
+    		unshift @fileList, $name;
+    	}#excluded libcrypt from libc list
+    }#libname match
+  }#foreach
+  closedir(DIRHANDLE);
+	return @fileList;
+}
+
+
+sub GetAllModules()
+{
+	
+	my $src = $ATSRoot."/components/";
+	my @fileList = ();
+	opendir(DIRHANDLE, "$src") || die "Cannot opendir $src";
+  foreach my $name (readdir(DIRHANDLE)) 
+  {
+    	if($name ne "." && $name ne ".." && $name ne "shared")
+			{
+				unshift @fileList, $name;
+			}
+
+  }#foreach
+  closedir(DIRHANDLE);
+	return @fileList;
+}
+
+
+
+sub TransformXmls($$)
+{
+	my $libname = shift @_;
+	my $shared = shift @_;
+	my $target = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+
+	my $armv5 = 0;
+	my $winscw = 0;
+	if($target eq "armv5")
+	{
+			$armv5 = 1;
+  }	
+  elsif($target eq "winscw")
+  {
+  		$winscw = 1;
+  }
+  else
+  {
+  	$armv5  = $do_armv5;
+  	$winscw = $do_winscw;
+	}
+		
+
+	foreach $module(@generatedModules)
+	{
+	  if($armv5 == 1 && $winscw == 1)
+	  {
+			$src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+		}
+		elsif($armv5 == 1)
+		{
+			$src = $ATSRoot."/components/".$libname."_"."$module/*_hw_component.xml";
+		}
+		elsif($winscw == 1)
+		{
+			$src = $ATSRoot."/components/".$libname."_"."$module/*_winsspd_component.xml";
+		}
+		my @fileList = glob($src);
+		foreach my $file(@fileList)
+		{
+		 	#print"$file to  be transformed!\n";
+			AddLibsInXml($libname,$file,$shared);
+		}
+   }
+}#fn
+
+sub AddLibsInXml($$$)
+{
+	my $libname = shift @_;
+	my $filename = shift @_;
+	my $shared = shift @_;
+	
+	# Open input file
+	open (INFILE, $filename ) || die ("Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("Can not open $newOutput");
+
+	my $drive = "c:";
+	
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  if(/\<stif\>/ || /\<execute\>/)
+	  {
+	  	if(/\<stif\>/)
+	  	{
+	  		print OUTFILE "\<stif\>\n";
+	  	}
+	  	else
+	  	{
+	  		print OUTFILE "\<execute\>\n";
+	  		if($filename =~ /winsspd/)
+				{
+					$drive = "z:";
+				}
+	  	}
+	  	foreach my $installable(@dllList)
+			{
+				print OUTFILE <<EOLine;
+				
+	  		<install type=\"$shared binary\">
+				<src>$installable</src>
+				<dst>$drive\\sys\\bin\\$installable</dst>
+ 				</install>
+EOLine
+			}
+
+	  }
+	  else
+	  {
+	  	  print OUTFILE $_;
+	  }
+	}#while
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+}
+
+sub CopySharedDlls()
+{
+  my $libname = shift @_;
+  my $ref = shift @_;
+  my @ListOfDlls = @$ref;
+  my $target = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+	
+	my $do_armv5 = 0;
+	my $do_winscw = 0;
+	if($target eq "armv5")
+	{
+		$do_armv5 = 1;
+	}
+	elsif($target eq "winscw")
+	{
+		$do_winscw =  1;
+	}
+	else
+	{
+		$do_armv5  = 1;
+		$do_winscw = 1;
+	}
+	
+	
+	mkdir  $ATSRoot."\\components\\shared" || die("Wouldn't make shared folder in $ATSRoot\\components");
+	if($do_winscw == 1)
+	{
+		mkdir  $ATSRoot."\\components\\shared\\winscw_udeb" || die("Wouldn't make shared folder in $ATSRoot\\components\winscw_udeb");
+	}
+	if($do_armv5 == 1)
+	{
+		mkdir  $ATSRoot."\\components\\shared\\armv5_urel" || die("Wouldn't make shared folder in $ATSRoot\\components\armv5_urel");
+	}
+	
+	foreach my $copyDll(@ListOfDlls)
+	{
+		if($do_winscw == 1)
+		{
+			$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+			$dst = $ATSRoot."\\components\\shared";
+			$dst = $dst."\\winscw_udeb\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}	
+		if($do_armv5 == 1)
+		{	
+			$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+			$dst = $ATSRoot."\\components\\shared";
+			$dst = $dst."\\armv5_urel\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	}#foreach
+}#fn
+
+
+sub CopyMultiDlls($)
+{
+  my $libname = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+	foreach my $listed(@generatedModules)
+	{
+		foreach my $copyDll(@dllList)
+		{
+			if($do_winscw == 1)
+			{
+				$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+				$dst = $ATSRoot."\\components\\$libname"."_$listed";
+				$dst = $dst."\\winscw_udeb\\";
+				copy($src, $dst)  || warn("unable to copy $src to $dst");
+			}
+			if($do_armv5 == 1)
+			{
+				$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+				$dst = $ATSRoot."\\components\\$libname"."_$listed";
+				$dst = $dst."\\armv5_urel\\";
+				copy($src, $dst)  || warn("unable to copy $src to $dst");
+			}
+		}#foreach
+	}
+}#fn
+
+sub StripModulePrefix($)
+{
+	my $listed = pop @_;
+	my $module = $listed;
+	if($dontStrip == 0)
+	{
+		$module =~ s/^test//;
+		$module =~ s/^t//;
+		$module =~ s/^libc_//;
+		$module =~ s/^libm_//;
+  }
+  return $module;
+  	
+}
+
+sub GetLsbModules()
+{
+	my @lsbList = 
+	(
+	 "abs",
+"acos",
+"asctime",
+"asin",
+"atan",
+"atan2",
+"atof",
+"atoi",
+"atol",
+"bsearch",
+"calloc",
+"ceil",
+"chdir",
+"clearerr",
+"close",
+"closedir",
+"cos",
+"cosh",
+"creat",
+"lsb_ctime",
+"lsb_difftime",
+"dlclose",
+"dlerror",
+"dlopen",
+"dup",
+"dup2",
+"exp",
+"fabs",
+"fclose",
+"fcntl_x",
+"fdopen",
+"feof",
+"ferror",
+"fflush",
+"fgetpos",
+"fgets",
+"fileno",
+"floor",
+"fmod",
+"fopen",
+"fopen_X",
+"fprintf",
+"fputs",
+"fread",
+"free",
+"freopen",
+"freopen_X",
+"frexp",
+"fseek",
+"fsetpos",
+"fstat",
+"ftell",
+"ftok",
+"ftok_l",
+"fwrite",
+"getc",
+"getcwd",
+"gets",
+"lsb_gmtime",
+"ldexp",
+"link",
+"lsb_localtime",
+"log",
+"log10",
+"longjmp",
+"lseek",
+"malloc",
+"memchr_X",
+"memcmp_X",
+"memcpy_X",
+"memmove",
+"memset_X",
+"mkdir",
+"mkfifo",
+"lsb_mktime",
+"modf",
+"msgctl",
+"msgget",
+"msgsnd",
+"open",
+"opendir",
+"open_x",
+"perror",
+"pipe",
+"pow",
+"printf",
+"qsort",
+"rand",
+"read",
+"readdir",
+"readv_l",
+"realloc",
+"remove",
+"rename",
+"rewind",
+"rewinddir",
+"rmdir",
+"scanf",
+"scanf_X",
+"seekdir",
+"semctl",
+"semget",
+"semop",
+"setbuf",
+"setjmp",
+"shmat",
+"shmdt",
+"shmget",
+"sin",
+"sinh",
+"sqrt",
+"srand",
+"stat",
+"strcat",
+"strchr",
+"strcmp",
+"strcoll_X",
+"strcpy",
+"strcspn",
+"strerror_X",
+"strftime",
+"strftime_X",
+"strlen",
+"strncat",
+"strncmp",
+"strncpy",
+"strpbrk",
+"strptime",
+"strrchr",
+"strspn",
+"strstr",
+"strtod_X",
+"strtok",
+"strtol_X",
+"strxfrm_X",
+"tan",
+"tanh",
+"telldir",
+"telldir_l",
+"lsb_time",
+"tmpfile",
+"tmpnam",
+"ungetc",
+"unlink",
+"utime",
+"vfprintf",
+"vprintf",
+"write",
+"writev_l",
+
+	);
+  return @lsbList;
+}
+
+
+
+sub GenBackendTest()
+{
+
+	my @datList = 
+	(
+	["libc", "tlibcbackend"],
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,".dll");
+	}
+ #now copy xmls			
+ CopyAtsSetup();
+ #extra exes
+ @generatedModules = ("tlibcbackend");
+ CopyDeps("libc","TPopenReadChild.exe");
+ CopyDeps("libc","TPopenWriteChild.exe");
+			
+}#fn
+
+sub CopyAtsSetup()
+{
+	 my $libname = "libc"; 
+	 my @list = (
+  				 ["*.xml", "libcbackend", "/../backend/internal/tlibcbackend/group/","/", ""],
+  				 ["*.cfg", "libcbackend", "/../backend/internal/tlibcbackend/group/","/General/", ""],
+  				 ["*.ini", "libcbackend", "/../backend/internal/tlibcbackend/group/","/General/", ""],
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("libc",$bDataRef);  				 
+
+}#fn
+sub GetPathPrefix()
+{
+	 my $srcPrefix = $templateRoot;
+	 $srcPrefix =~ /(.*)internal.*/;
+	 $srcPrefix = $1;
+	 return $srcPrefix;
+}
+	
+
+#dat file copy
+sub CopyCryptoDat()
+{
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+ my @list = (
+ 								 ["libssl", "ssltest", "libssl/internal/testapps/ssl_test/data/*"],
+ 								 ["libcrypto", "topenssl", "/libcrypto/internal/testapps/topenssl/data/*"],
+           );
+
+	 my $libname;
+	 my $dirname;
+	 my $glob;
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($libname, $dirname, $glob) = @inarr;
+			my $modulename = StripModulePrefix($dirname);
+			my	$srcPrefix = GetPathPrefix();
+			
+			my $src = "$srcPrefix"."$glob";
+			
+			my $dst = $ATSRoot."\\components\\$libname"."_"."$modulename\\General\\";
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  }#ref processing
+}#fn
+
+#Crypto xmls copy
+sub CopyCryptoXmls()
+{
+	  my @list = (
+  				 ["*.xml", "libssl_ssltest/", "/libssl/internal/testapps/ssl_test/group/"],
+   				 ["*.xml", "libcrypto_crypto_test/", "/libcrypto/internal/testapps/crypto_test/group/"],
+   				 ["*.xml", "libcrypto_openssl/", "/libcrypto/internal/testapps/topenssl/group/"],   				    				 			 
+  				 );
+
+	
+	my $fname;
+	my $moduleDst;
+	my $location;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $moduleDst, $location) = @inarr;
+			my $src = GetPathPrefix().$location.$fname;
+			my $dst = $ATSRoot."\\components\\$moduleDst";
+  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no xml file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  	}#ref
+  	
+  	my @crypto_copyList = ("*.txt", "*cfg", "*.ini");
+  	
+  	foreach my $item(@crypto_copyList)
+  	{
+  			$location = "/libcrypto/internal/testapps/crypto_test/group/";
+  			$fname = GetPathPrefix().$location.$item;
+  			my @filesFound = glob($fname);
+  			foreach my $file(@filesFound)
+  			{
+    			$moduleDst = "libcrypto_crypto_test/";	
+  				my $dst = $ATSRoot."\\components\\".$moduleDst."/General/";
+  				copy($file, $dst);
+  			}
+  	}
+}#fn
+
+sub GenCryptoTest()
+{
+
+	my @datList = 
+	(
+	["libssl", "ssltest", ".exe"],
+	["libcrypto", "crypto_test",".dll"],
+	["libcrypto", "openssl",".exe"],
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,$ext);
+	}
+	CopyCryptoDat();
+	CopyCryptoXmls();
+	
+			
+}#fn
+
+
+#ngi xml copy
+sub CopyNgiXmls()
+{
+	  my @list = (
+   				 ["*.xml", "ngi_sa_amrrecording", "/audio/lowlevelaudio/internal/sa_amrrecording/group/"],
+   				 ["*.xml", "ngi_sa_highlevelaudio", "/audio/highlevelaudio/internal/sa_highlevelaudio/group/"],
+  				 ["*.xml", "ngi_sa_audiomixing", "/audio/lowlevelaudio/internal/sa_audiomixing/group/"],
+  				 ["*.xml", "ngi_sa_audiorecording", "/audio/lowlevelaudio/internal/sa_audiorecording/group/"],
+  				 ["*.xml", "ngi_sa_clip", "/audio/lowlevelaudio/internal/sa_clip/group/"],
+  				 ["*.xml", "ngi_sa_lowlevelaudio", "/audio/lowlevelaudio/internal/sa_lowlevelaudio/group/"],
+  				 ["*.xml", "ngi_sa_stream", "/audio/lowlevelaudio/internal/sa_stream/group/"],
+  				 
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_antitearing/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_colortranslation/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_createfb565/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_createfb888/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_heapusage/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_multibb/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_performance/group/"],
+           ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_plswitching/group/"],
+           ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_misc/group/"],
+  				 ["*.xml", "ngi_sa_bitmap", "/graphics/bitmap/internal/sa_bitmap/group/"],
+  				 ["*.xml", "ngi_sa_camera", "/graphics/camera/internal/sa_camera/group/"],
+  				 ["*.xml", "ngi_sa_images", "/graphics/images/internal/sa_images/group/"],
+  				 ["*.xml", "ngi_sa_display", "/graphics/display/internal/sa_display/group/"],
+  				 ["*.xml", "ngi_sa_lights", "/graphics/lights/internal/sa_lights/group/"],
+  				 ["*.xml", "ngi_sa_videoplayback", "/graphics/video/internal/sa_videoplayback/group/"],
+  				 
+  				 ["*.xml", "ngi_sa_input", "/input/input/internal/sa_input/group/"],
+  				 ["*.xml", "ngi_sa_textinput", "/input/textinput/internal/sa_textinput/group/"],
+  				 ["*.xml", "ngi_sa_devicecapabilities", "/system/devicecapabilities/internal/sa_devicecapabilities/group/"],
+  				 ["*.xml", "ngi_sa_devicestatus", "/system/devicestatus/internal/sa_phone/group/"],
+  				 ["*.xml", "ngi_sa_runtimetester", "/system/runtime/internal/sa_runtimetester/group/"],
+  				 ["*.xml", "ngi_sa_timing", "/timing/internal/sa_timing/group/"],
+	  				 );
+
+	
+	my $fname;
+	my $moduleDst;
+	my $location;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $moduleDst, $location) = @inarr;
+			my $src = GetPathPrefix().$location.$fname;
+			my $dst = $ATSRoot."\\components\\$moduleDst";
+			
+			#print "My src is $src\n";
+			#print "My dst is $dst\n";
+			  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			warn("warning: no xml file found to copy from $src!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  	}#ref
+    	
+}#fn
+
+
+sub GenNgiTest()
+{
+
+	my @datList = 
+	(
+	["ngi", "sa_amrrecording", ".dll"],
+	["ngi", "sa_highlevelaudio", ".dll"],
+	["ngi", "sa_audiomixing", ".dll"],
+	["ngi", "sa_audiorecording", ".dll"],
+	["ngi", "sa_clip", ".dll"],
+	["ngi", "sa_lowlevelaudio", ".dll"],
+	["ngi", "sa_stream", ".dll"],
+	["ngi", "sa_bitmap", ".dll"],
+	["ngi", "sa_camera", ".dll"],
+	["ngi", "sa_images", ".dll"],
+	["ngi", "sa_display", ".dll"],
+	["ngi", "sa_lights", ".dll"],	
+	["ngi", "sa_videoplayback", ".dll"],	
+	["ngi", "sa_input", ".dll"],	
+	["ngi", "sa_textinput", ".dll"],
+	["ngi", "sa_devicecapabilities", ".dll"],	
+	["ngi", "sa_devicestatus", ".dll"],	
+	["ngi", "sa_runtimetester", ".dll"],	
+	["ngi", "sa_timing", ".dll"],	
+		
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,$ext);
+	}
+	
+   @generatedModules =("sa_backbuffer");
+   GenDirs($lib);
+   @dllList = 
+   (
+   	"sa_bb_antitearing.dll",
+   	"sa_bb_colortranslation.dll",
+   	"sa_bb_createfb444.dll",
+   	"sa_bb_createfb565.dll",
+   	"sa_bb_createfb888.dll",
+   	"sa_bb_misc.dll",
+   	"sa_bb_heapusage.dll",
+   	"sa_bb_multibb.dll",
+   	"sa_bb_performance.dll",
+   	"sa_bb_plswitch.dll",
+   	"sa_bb_testenv.dll"
+   );
+   CopyMultiDlls("ngi");
+
+	
+ 	mkdir  $ATSRoot."\\components\\shared" || die("Wouldn't make shared folder in $ATSRoot\\components");
+  mkdir  $ATSRoot."\\components\\shared\\winscw_udeb" || die("Wouldn't make shared folder in $ATSRoot\\components\winscw_udeb");
+  mkdir  $ATSRoot."\\components\\shared\\armv5_urel" || die("Wouldn't make shared folder in $ATSRoot\\components\armv5_urel");
+			
+}#fn
+
+
+sub GetXmls()
+{
+  my @foundList;
+  my $libname = shift @_;
+	my @globlist = ();
+	if($target eq "winsspd" && $sdkversion ne "")
+	{
+		@globlist = ("winsspd_".$sdkversion);
+		#print "winsspd ".$sdkversion." selected\n";
+	}
+	elsif($target eq "winsspd")
+	{
+		@globlist = ("winsspd");
+		#print "winsspd selected\n";
+	}
+	elsif($sdkversion ne "")
+	{
+		@globlist = ($target,"hw_".$sdkversion);
+		#print "$target $sdkversion selected\n";
+	}
+	else
+	{
+		@globlist = ($target,"hw");
+		#print "$target $sdkversion selected\n";
+	}
+	
+	foreach my $module(@generatedModules)
+	{
+	  my $glob_to_use = "";
+	  my @fileList;
+	  foreach my $glob(@globlist)
+	  {
+			my $src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+			#print "Analysing $module and  $glob\n";
+			@fileList = glob($src);
+			foreach my $file(@fileList)
+			{
+			 my $pat = $glob."\_component\.xml";
+			 #print "[$file - $glob"."_component.xml"."]\n";
+				if($file =~ /$pat/)
+				{
+					$glob_to_use = $pat;
+					#print "[$file - $glob"."_component.xml"."]\n";
+					last
+				}
+			}#foreach FILE
+			if($glob_to_use ne "")
+			{
+				last;
+			}
+		}#finding glob	
+		if($glob_to_use ne "")
+		{
+				#print "Using the glob $glob_to_use\n";
+				my $src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+				@fileList = glob($src);
+				foreach my $file(@fileList)
+				{
+					#print "[$file - $glob_to_use]\n";
+					if($file =~ /$glob_to_use/)
+					{
+				  	$file =~ /.*components[\\\/](.*)/;
+				  	my $value = $1;
+				  	$value =~ s/\//\\/g;
+				  	#print "adding $value for $module with $glob_to_use\n";
+						unshift @foundList,$value;
+				  }#if
+				}#foreach
+		}#glob is present
+		else
+		{
+			warn("Unable to figure out glob to use for $module. Skipping...\n");
+		}
+	}#each module
+  return @foundList;
+ }#fn
+
+__END__
+:end
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ssl/internal/group/bld.inf	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,32 @@
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Description:  This is a bld file to generate all the test applications
+ *
+*/
+
+
+#include "../../tsrc/group/bld.inf"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ssl/internal/testframework.ini	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,73 @@
+#  ===========================================================================
+#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+#
+#Redistribution and use in source and binary forms, with or without 
+#modification, are permitted provided that the following conditions are met:
+#
+#* Redistributions of source code must retain the above copyright notice, this 
+#  list of conditions and the following disclaimer.
+#* Redistributions in binary form must reproduce the above copyright notice, 
+#  this list of conditions and the following disclaimer in the documentation 
+#  and/or other materials provided with the distribution.
+#* Neither the name of Nokia Corporation nor the names of its contributors 
+#  may be used to endorse or promote products derived from this software 
+#  without specific prior written permission.
+#
+#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+#AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+#IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+#DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+#FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+#DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+#SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+#OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+#OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# ============================================================================
+#
+
+#
+# This is STIFTestFramework initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+[Engine_Defaults]
+
+TestReportMode= FullReport		# Possible values are: 'Empty', 'Summary', 'Environment',
+                                                               'TestCases' or 'FullReport'
+
+CreateTestReport= YES			# Possible values: YES or NO
+
+TestReportFilePath= C:\LOGS\TestFramework\
+TestReportFileName= TestReport
+
+TestReportFormat= TXT			# Possible values: TXT or HTML
+TestReportOutput= FILE			# Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE	# Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= C:\testframework\ATSTemplateXXX.cfg
+
+
+[End_Module]
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+[Logger_Defaults]
+
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ssl/internal/testsession.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,326 @@
+<?xml version="1.0"?>
+<testsession>
+	<symbian-version>SSL_CRYPTO_Combined_TestDrop_blr_component</symbian-version>
+	<testitem>at</testitem>
+	<resultfile>ATSOUTPUT\testsession_results.xml</resultfile>
+	
+	<!--Inclusion of winsspd xml for ssltest -->
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libssl_ssltest\libssl_blr_winsspd_component.xml</testplan>
+ <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+
+	<!--Inclusion of Hw xml for ssltest -->
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libssl_ssltest\libssl_blr_hw_component.xml</testplan>
+  <target hardware="scarfe"  build="urel" />
+	</component>
+	
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libssl_ssltest\libssl_blr_hw_component.xml</testplan>
+  <target hardware="zeus"  build="urel" />
+	</component>
+	
+
+	<!--Inclusion of winsspd xml for cryptotest -->
+	
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_crypto_test\libcrypto_blr_winsspd_component.xml</testplan>
+ <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+
+
+	<!--Inclusion of Hw xml for cryptotest -->
+	
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_crypto_test\libcrypto_blr_hw_component.xml</testplan>
+		<target hardware="scarfe" build="urel" />
+	</component>
+
+<!--Inclusion of Zeus xml for cryptotest -->
+	
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_crypto_test\libcrypto_blr_hw_component.xml</testplan>
+		<target hardware="zeus" build="urel" />
+	</component>
+
+	<!--Inclusion of winsspd xmls for topenssl -->
+<!--
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestss_blr_winsspd_component.xml</testplan>
+  <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestverify_blr_winsspd_component.xml</testplan>
+ 	<target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+-->
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestenc_blr_winsspd_component.xml</testplan>
+  <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+	
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestgen_blr_winsspd_component.xml</testplan>
+  <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+	
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltpkcs7_blr_winsspd_component.xml</testplan>
+ 	<target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltpkcs7d_blr_winsspd_component.xml</testplan>
+ 	<target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltreq_blr_winsspd_component.xml</testplan>
+ 	<target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltreq2_blr_winsspd_component.xml</testplan>
+	<target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltrsa_blr_winsspd_component.xml</testplan>
+ 	<target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltcrl_blr_winsspd_component.xml</testplan>
+  <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltsid_blr_winsspd_component.xml</testplan>
+  <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+<!--
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltx509_blr_winsspd_component.xml</testplan>
+  <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>	
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltx5091_blr_winsspd_component.xml</testplan>
+  <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>		
+
+	<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltx5092_blr_winsspd_component.xml</testplan>
+  <target hardware="winsspd" platform="winscw" build="udeb" />
+	</component>
+-->
+	<!--Inclusion of Hw xml for topenssl -->
+	
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestss_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+</component>
+
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestverify_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+</component>
+
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestenc_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>
+	
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestgen_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>
+	
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltpkcs7_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltpkcs7d_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltreq_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>
+
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltreq2_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>
+
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltrsa_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltcrl_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltsid_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltx509_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>	
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltx5091_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>		
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltx5092_blr_hw_component.xml</testplan>
+ <target hardware="scarfe" platform="armv5" build="urel" />
+	</component>
+	
+	<!--Inclusion of Hw xml for topenssl -->
+	
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestss_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+</component>
+
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestverify_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+</component>
+
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestenc_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>
+	
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltestgen_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>
+	
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltpkcs7_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltpkcs7d_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltreq_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>
+
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltreq2_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>
+
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltrsa_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltcrl_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltsid_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltx509_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>	
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltx5091_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>		
+
+<component>
+		<factory>Symbian</factory>
+		 <testplan>ATSINPUT\components\libcrypto_openssl\libcrypto_topenssltx5092_blr_hw_component.xml</testplan>
+ <target hardware="zeus" platform="armv5" build="urel" />
+	</component>
+	
+</testsession>
+
--- a/ssl/tsrc/crypto_test/group/crypto_test.mmp	Thu Oct 14 14:15:50 2010 +0530
+++ b/ssl/tsrc/crypto_test/group/crypto_test.mmp	Tue Nov 02 19:23:22 2010 +0530
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions are met:
@@ -76,7 +76,7 @@
 
 
 LIBRARY         euser.lib
-LIBRARY         stiftestinterface.lib
+LIBRARY	        StifTestInterface.lib
 LIBRARY         libcrypto.lib
 LIBRARY         libc.lib
 
--- a/ssl/tsrc/crypto_test/src/crypto_test.cpp	Thu Oct 14 14:15:50 2010 +0530
+++ b/ssl/tsrc/crypto_test/src/crypto_test.cpp	Tue Nov 02 19:23:22 2010 +0530
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,7 @@
 
 
 // INCLUDE FILES
-#include <Stiftestinterface.h>
+#include <StifTestInterface.h>
 #include "crypto_test.h"
 
 // EXTERNAL DATA STRUCTURES
--- a/ssl/tsrc/crypto_test/src/crypto_testBlocks.cpp	Thu Oct 14 14:15:50 2010 +0530
+++ b/ssl/tsrc/crypto_test/src/crypto_testBlocks.cpp	Tue Nov 02 19:23:22 2010 +0530
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions are met:
@@ -33,7 +33,7 @@
 // INCLUDE FILES
 #include <e32svr.h>
 #include <StifParser.h>
-#include <Stiftestinterface.h>
+#include <StifTestInterface.h>
 #include "crypto_test.h"
 #include "tcrypto_test.h"
 #include <stdio.h>
Binary file stdcpp/doc/s60stdcppdoc.chm has changed
Binary file stdcpp/install/stdcpp_stub.SIS has changed
--- a/stdcpp/install/stdcpp_stub.pkg	Thu Oct 14 14:15:50 2010 +0530
+++ b/stdcpp/install/stdcpp_stub.pkg	Tue Nov 02 19:23:22 2010 +0530
@@ -18,7 +18,7 @@
 &EN
 
 ;Header
-#{"Standard C++ library"},(0x10282872),1,7,0
+#{"Standard C++ library"},(0x10282872),1,7,5
 
 ;Localised Vendor name
 %{"Nokia"}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/internal/genatsmodules.bat	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,2693 @@
+rem
+rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+rem Redistribution and use in source and binary forms, with or without 
+rem modification, are permitted provided that the following conditions are met:
+
+rem Redistributions of source code must retain the above copyright notice, this 
+rem list of conditions and the following disclaimer.
+rem Redistributions in binary form must reproduce the above copyright notice, 
+rem this list of conditions and the following disclaimer in the documentation 
+rem and/or other materials provided with the distribution.
+rem Neither the name of Nokia Corporation nor the names of its contributors 
+rem may be used to endorse or promote products derived from this software 
+rem without specific prior written permission.
+
+rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+rem AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+rem IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+rem DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+rem FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+rem DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+rem SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+rem CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+rem OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+rem
+rem Description:      
+rem
+
+@perl -x GenATSModules.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 
+@goto end
+
+#!perl
+use strict;
+use File::Find;
+use File::Copy;
+use Cwd;
+
+
+my $target = "winsspd";
+my $suite;
+my $install = "no";
+my $session = "no";
+my $combinedSession = "no";
+my $sdkversion="";
+my $noXmlsGenList = "play_new";
+
+my %DirHash;
+
+my $sendEmail = "no";
+my $rootDrive = substr(getcwd(), 0,2);
+my $templateRoot = getcwd();
+my	$ATSRoot = getcwd()."\\ATSINPUT";
+
+if($ENV{'ATS_SETUP'}  ne "")
+{
+ $sendEmail = "yes";
+ $rootDrive = $ENV{'ATS_INDRIVE'};
+ $templateRoot = $ENV{'ATS_TEMPLATEROOT'};
+ $ATSRoot = $ENV{'ATS_ATSOUTDRIVE'};
+}
+
+
+if(scalar @ARGV ==0 || $ARGV[0] =~ /[\-\\\/][h\?]/ || $ARGV[0] =~ /help/ )
+{
+	print <<EOHelp;
+genatsmodules.bat - hardcoded script to generate ATSINPUT folders for mobileruntime and ngi projects	
+Usage:
+	genatsmodules.bat
+		Create ATSINPUT for the default testsuite based on 
+		location it is executed from place in stdlibs/internal 
+		and run and it generates ATSINPUT for stdlibs
+		similiarly place it in ssl/internal or glib/internal or 
+    ngi/internal and run to generate  ATSINPUT for ssl, glib  
+    and ngi respectively	
+  
+  genatsmodules [libname]
+			where libname can be stdlibs, ssl, glib, etc. Creates 
+			ats test drop for given library. Valid from any internal
+			folder of mobileruntime.
+			
+  
+  genatsmodules ngi
+			create ngi testsuite. Valid inside ngi/internal only
+			
+genatsmodules play_new
+			create play_new testsuite. Valid inside play_new/internal only
+				
+	
+      
+	genatsmodules ltp
+			create ltp testsuite. Valid inside stdlibs/internal only
+	
+	genatsmodules lsb
+			create lsb testsuite. Valid inside stdlibs/internal only
+			
+	genatsmodules stdcpp
+			create stdcpp testsuite. Valid inside stdcpp/internal only
+			
+	genatsmodules [libname] install 
+		 where libname can be stdlibs, ssl, glib, ltp, lsb to create a 
+		 ATSINPUT where the dependent mobileruntime libraries are also 
+		 copied and used (It copies the dependent libraries using the 
+		 ATS component files)
+		
+	genatsmodules session [libname] [target] 		
+		where libname is any of the standard libs as shown above and 
+		target can be winsspd, winscw, scarfe, zeus etc. to create 
+		session files for scarfe, winsspd etc. 
+		
+genatsmodules session combined [target] 				
+      will look at the existing ATSINPUT(which can have any 
+      combination of created components and create a combined 
+      session file. This way you get increased flexibility in 
+      the libraries you choose to combine into a single session 
+      file. If the target is a hardware target(that is not winsspd
+      or winscw), the script will first attempt to find a target 
+      specific component file and if not found, the generic hw 
+      component file. 
+	
+
+	Note:
+	ATSINPUT creation is a 2 stage process. First we create 
+	the components and then we run (for example) 
+	"genatsmodules session stdlibs winscw" and 
+	"genatsmodules session stdlibs scarfe" to create the 
+	session files.
+EOHelp
+		exit();
+}
+my $do_armv5 = 1;
+my $do_winscw = 1;
+
+if(scalar @ARGV == 1)
+{
+	if($ARGV[0] eq "session")
+	{
+		die("parameter session must be followed by libname and target platform");
+	}
+	else
+	{
+		$suite = $ARGV[0];
+	}
+}
+elsif(scalar @ARGV == 2)
+{
+	if($ARGV[0] eq  "session")
+	{
+		die("parameter session must be followed by libname and target platform");
+	}
+	elsif($ARGV[1] eq "install")
+	{
+		$suite = $ARGV[0];
+		$install = "yes";
+	}
+	elsif($ARGV[1] eq "armv5")
+	{
+		$do_winscw = 0;
+	}
+	elsif($ARGV[1] eq "winscw")
+	{
+		$do_armv5 = 0; 
+	}
+	else
+	{
+		die("second parameter after target platform $ARGV[0] can only be \"install\" ");
+	}
+}
+elsif(scalar @ARGV == 3)
+{
+		if($ARGV[0] ne "session")
+		{
+			die("invalid combination of parameters. Program expected 1st parameter to be \"session\" ");
+		}
+		else
+		{
+			$session = "yes";
+			$suite = $ARGV[1];
+			$target = $ARGV[2];
+	
+			if($suite eq "combined")
+			{		
+				$combinedSession = "yes";
+	  	}
+			
+		}
+}
+elsif(scalar @ARGV == 4)
+{
+		if($ARGV[0] ne "session")
+		{
+			die("invalid combination of parameters. Program expected 1st parameter to be \"session\" ");
+		}
+		else
+		{
+			$session = "yes";
+			$suite = $ARGV[1];
+			$target = $ARGV[2];
+			$sdkversion = $ARGV[3];
+			if($suite eq "combined")
+			{		
+				$combinedSession = "yes";
+	  	}
+		}
+}
+else
+{
+		die("program recieved too many parameters!");
+}#end of commandline processing
+
+
+	
+if( 0 )
+{
+	die("Please run the script from the appropriate internal folder in the mobileruntime /omerta project!!");
+}
+else
+{
+
+	 my $srcPrefix = getcwd();
+	 $srcPrefix =~ /(.*)internal.*/;
+	 $srcPrefix = $1;
+	 if(rindex($templateRoot, "stdlibs") != -1)
+	 {
+	 	$srcPrefix =~ /(.*)stdlibs.*/;
+	 	$srcPrefix = $1;
+	 	
+	 	if($suite eq "glib")
+	 	{
+	 		$templateRoot = $srcPrefix."/glib/internal/";
+	 	}
+	 	elsif($suite eq "ssl")
+	 	{
+	 		$templateRoot = $srcPrefix."/ssl/internal/";
+	 	}
+	 	elsif($suite eq "ngi" && $session ne "yes")
+	 	{
+	 		print "ngi atsinput creation not supported from mobileruntime\n";
+	 		exit();
+	 	}
+	 }
+	 
+	if(rindex($templateRoot, "glib") != -1)
+	{
+		$suite = "glib";
+	}
+	elsif(rindex($templateRoot, "ssl") != -1)
+	{
+		$suite = "ssl";
+	}
+	
+}
+
+
+my $optsGroupPath = $templateRoot."/ts/ltp/opts/group/";
+#$optsGroupPath = getcwd()."/ts/ltp/opts/group/";
+my $ltpPath =$templateRoot."/ts/ltp/";
+my $stdcppPath =$templateRoot."/testapps/stlport/";
+my @stdexeList = ("tstdcpp","stdcxx/tstapps");
+#my $gnuPath =getcwd()."/testapps/gnu/";
+#my $tstdcppPath =getcwd()."/testapps/tstdcpp/";
+
+
+my @generatedModules;
+my %cfglocation;
+
+my $TDIR = "\\internal\\testapps\\";
+
+my @libcModules = ( "libc_loc_blr",  "libc_time_blr", "libc_db_blr","tctype", "tifioctls", "tinet",
+                      "tlibcwchar", "tlink", "tmkfifo", "tmmap", "tmsgqueue",
+		      "tnetdb", "tpipe","tregex", "tsemaphore", "tshm","tsocket" ,
+		      "tstdio", "tstdlib", "tstring", "tsyscalls",
+		      "tsyssim", "twctype", "tselect", "tsysunistd", "twideapis", "twopen", "twchar",
+		      "twcharapi",
+               );
+
+my @libdlModules = ("tlibdl");
+my @libmModules = ("libm_double_blr", "libm_float_blr","libm_ldouble_blr");
+
+
+my @pthreadModules = ( "testcondbroadcast", "testconddestroy", "testcondinit", "testcondsignal", "testcondtimedwait", "testcondwait",
+"tmutex", "tpthread", "testpthreadonce", "testsemclose", "testsemdestroy", "testsemgetvalue", "testseminit", "testsemopen", "testsempost",
+"testsemtimedwait", "testsemtrywait", "testsemunlink", "testsemwait");
+
+
+my @stdliblist = ( "libc", "libpthread", "libdl", "libm", "libz", "libcrypt");
+ #my @dllList = ("backend.dll", "libc.dll", "LibCIpcClient.dll", "LibCIpcServer.exe", "libdl.dll", "libm.dll", "libpthread.dll", "libcrypt.dll", "libz.dll", "libclogger.dll");
+ my @dllList = ();
+
+
+my @stdcpplist = (
+["basicfilebuf.txt", "twiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+  				 ["fstream1_input.txt", "stlport_fstream", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["nextperm1_good.txt", "stlport_nextprm", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["nextperm2_good.txt", "stlport_nextprm", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["ostmit_good.txt", "stlport_ostmit", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["seek.txt", "stlport_seek", "/../internal/testapps/doc/", "/General/", "C:\\TestFramework\\tstdcpp"],
+  				 ["test.txt", "platsectest6", "/../internal/testapps/tstdcpp/platsec/", "/General/", "c:\\resource"],
+  				 ["test.txt", "platsectest11", "/../internal/testapps/tstdcpp/platsec/", "/General/", "c:\\sys"],
+ 			 ["basicistream.txt", "twiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["example.txt", "tiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["filebuf.txt", "tiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["fpos_state.txt", "tiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["fstream.txt", "tiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["istream.txt", "tiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["ostream.txt", "tiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["streambuf.txt", "tiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["wfstream.txt", "twiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["wifstream.txt", "twiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["wistream.txt", "twiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["wstreambuf.txt", "twiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["wostream.txt", "twiostreams", "/../internal/testapps/bcdrivers/docs/", "/General/", "C:\\TestFramework\\docs"],
+ ["locales.txt", "tlocale", "/../src/", "/General/", "C:\\resource"],
+ ["locales.txt", "tstl_1", "/../src/", "/General/", "C:\\resource"],
+ ["tstl_2_1.cfg", "tstl_2", "/../internal/testapps/bcdrivers/tstl_2/group/", "/General/", "C:\\TestFramework"],
+  ["testframework.ini", "tstl_2", "/../internal/testapps/bcdrivers/tstl_2/group/", "/General/", "C:\\TestFramework"],
+);
+
+my @gliblist = (
+  				 ["1.gmarkup", "markup_test", "/epoc32/winscw/c/", "/General/", "C:"],
+   				 ["1.gmarkup", "markup-test", "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["iochannel-test-infile", "iochannel_test",  "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["iochannel-test-infile", "iochannel-test",  "/epoc32/winscw/c/", "/General/", "C:"],
+#  				 ["casemap.bin",  "unicode-caseconv",  "/epoc32/winscw/c/", "/General/", "C:"],
+#  				 ["casefold.bin", "unicode-caseconv",  "/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["utf8.txt", "unicode-encoding","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["casecollate.txt", "unicode-collate","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["utf8_hindi.txt", "tutf8","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["scanfile.txt", "tscanner","/epoc32/winscw/c/", "/General/", "C:"],
+  				 ["test.txt", "dir_test","/epoc32/winscw/c/temp/tmp/", "/General/", "C:\\temp\\tmp"],
+  				 ["NormalizationTest.txt", "unicode-normalize","/epoc32/winscw/c/", "/General/", "C:"],
+  				 
+  				 ["helloworld.exe", "spawn_test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["helloworld.exe", "spawn_test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  				 ["libmoduletestplugin_a.dll", "module-test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["libmoduletestplugin_a.dll", "module-test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  				 ["libmoduletestplugin_b.dll", "module-test","/epoc32/release/armv5/urel/", "/armv5_urel/", "C:\\sys\\bin"],
+  				 ["libmoduletestplugin_b.dll", "module-test","/epoc32/release/winscw/udeb/", "/winscw_udeb/", "Z:\\sys\\bin"],
+  				 
+  			  				 
+  				 );
+  				 
+my @ngilist = (
+           ["Test.txt", "ngi_sa_runtimetester", "/EPOC32/winscw/c/Private/10202be9/", "/General/", ""],
+  				 ["sa_input_repository.txt", "shared","/EPOC32/armv5/c/TestFramework/", "/armv5_urel/", ""],
+  				 ["sa_input_repository.txt", "shared","/EPOC32/winscw/c/TestFramework/", "/winscw_udeb/", ""],
+  				 ["audiomixingfiles.ini", "ngi_sa_audiomixing","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+  				 ["sa_camera_supported.ini", "ngi_sa_camera","/EPOC32/armv5/c/TestFramework/", "/general/", ""],
+  				 ["sa_clip.ini", "ngi_sa_clip","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+  				 ["devicecapabilitiesdata.ini", "ngi_sa_devicecapabilities","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+   				 ["highlevelaudiofiles.ini", "ngi_sa_highlevelaudio","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+					 ["lowlevelaudiofiles.ini", "ngi_sa_lowlevelaudio","/EPOC32/winscw/c/TestFramework/", "/general/", ""],
+					 ["runtimedata.ini", "ngi_sa_runtimetester","/EPOC32/winscw/c/TestFramework/", "/general/", ""],						
+					 ["sa_stream.ini", "ngi_sa_stream","/EPOC32/winscw/c/TestFramework/", "/general/", ""],						
+					 #["*", "ngi_sa_videoplayback","/../graphics/video/internal/sa_videoplayback/data/", "/general/", ""],
+					 ["test.*", "ngi_sa_images","/Epoc32/winscw/c/Data/", "/general/", ""]
+					);
+
+  				 
+
+
+my $validexpansions = "all stdlibs combined";
+my $validLibraries = "ltp opts lsb glib ssl ngi pcts stdcpp gcce libc-locale play_new phall";
+if(rindex($validexpansions, $suite)== -1 && rindex($validLibraries, $suite) == -1)
+{
+	die("$suite is not a valid library. Valid options are $validexpansions $validLibraries");
+}
+
+my $dontStrip = 1;
+my	@liblist;
+if($suite eq "all")
+{
+		@liblist = split " ", $validLibraries;
+		@liblist = (@liblist, @stdliblist);
+		
+}#suite all
+elsif($suite eq "ltp")
+{
+	 @liblist = ("ltp", "opts");
+}
+elsif($suite eq "stdlibs")
+{
+		@liblist = @stdliblist;
+}
+elsif($suite eq "ssl")
+{
+	@liblist = ("libcrypto", "libssl");
+}
+else
+{
+		@liblist = ("$suite");
+}
+
+#	foreach my $l(@liblist)
+#	{
+#			print "$l was there\n";
+#	}
+
+
+if($combinedSession eq "yes")
+{
+	GenerateSessionFile("combined", $target,"combined");
+	exit();
+}
+
+if($session eq "yes")
+{
+	my $file = $templateRoot."/testsession.xml";
+	opendir(DIRHANDLE, $ATSRoot) || die("Please try to create Session files only after ATSINPUT/components has been created!");
+	closedir(DIRHANDLE);
+	$dontStrip = 1;
+	
+	if($suite eq "stdlibs")
+	{
+		#my $dst = $ATSRoot."/$suite"."_testsession.xml";
+		#copy($file, $dst);
+		GenerateSessionFile("combined",$target,$suite);
+		exit();
+	}
+	elsif($suite eq "ssl")
+	{
+		my @componentFiles = GetSslXmls();
+		GenerateSessionFile("combined",$target,$suite,\@componentFiles);
+		exit();
+	}
+	else
+	{
+		@generatedModules = GenGenModules($suite);
+		my @componentFiles = GetXmls($suite);
+		GenerateSessionFile("combined",$target,$suite,\@componentFiles);
+		exit();
+	}
+	foreach my $lib(@liblist)
+	{          
+			@generatedModules = GenGenModules($lib);
+			if(scalar @generatedModules != 0)
+			{
+				#print "Generating for $lib\n";
+				GenerateSessionFile($lib, $target,$lib);
+			}
+	}
+	
+	#@generatedModules = GetAllModules();
+	#if(scalar @generatedModules != 0)
+	#{
+	#		GenerateSessionFile("combined",$target, "combined");
+	#}
+	exit();
+}#session generation code
+
+
+if ($suite eq "ltp" || $suite eq "all")
+{
+	my @ltpModules = GetLtpModules();
+	@generatedModules = @ltpModules;
+	DoGen("ltp", ".dll");
+	CopyLtpCfg("ltp");
+	
+	
+	my @saved = @dllList;
+	@dllList = ("ltplib.dll");
+	CopySharedDlls("ltp", \@dllList);
+	TransformXmls("ltp","shared");
+	@dllList = @saved;
+	
+	@generatedModules = GetCompiledModules($optsGroupPath."/bld.inf");
+	DoGen("opts",".dll");
+
+}
+if ($suite eq "glib")
+{
+	my $bldfile = $templateRoot."/testapps/group/bld.inf";
+	my @glibModules = GetCompiledModules($bldfile);
+	@generatedModules = @glibModules;
+	DoGen("glib",".exe");
+	my $gDataRef = \@gliblist;
+	CopyArbitDatFiles("glib",$gDataRef);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList;
+		my @glib2dllList = ("glibbackend.dll", "Libgobject.dll", "libgmodule.dll", "libgthread.dll",
+                "libglib.dll");
+                
+   my  @glib1List = ( "libgobject.dll", "libgmodule.dll", "libgthread.dll",  "libglib.dll", );
+  @dllList = @glib2dllList;
+  CopySharedDlls("glib",\@dllList);     	
+  TransformXmls("glib", "shared");
+   	
+		@dllList = @saved;
+	}#if install
+}#glib
+
+if ($suite eq "phall")
+{
+	my $bldfile = getcwd()."/group/bld.inf";
+	my @hallModules = GetCompiledModules($bldfile);
+	@generatedModules = @hallModules;
+	DoGen($suite,".exe");
+	#my $gDataRef = \@gliblist;
+	#CopyArbitDatFiles("glib",$gDataRef);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList;
+                
+   my  @phallList = ( "libstdcpp.dll" );
+   @dllList = @phallList;
+   CopySharedDlls($suite,\@dllList);     	
+   TransformXmls($suite, "shared");
+   @dllList = @saved;
+   exit;
+	}#if install
+}#phall
+
+if ($suite eq "ssl")
+{
+	my $stripStatus = $dontStrip;
+	$dontStrip = 0;
+	GenCryptoTest();
+	if($install eq "yes")
+	{
+		@dllList = (@dllList, "libcrypto.dll", "libssl.dll");   
+	}#if install
+	$dontStrip = $stripStatus;
+}#ssl
+
+if($suite eq "ngi")
+{
+
+	GenNgiTest();
+	CopyNgiXmls();
+	CopyArbitDatFiles("",\@ngilist);
+
+}
+
+if($suite eq "play_new")
+{
+	my @play_newModules = ("fonttestmodule", "messagingtestmodule","locationtestmodule", "alertstestmodule", 
+	"libxmlstiff","ngisvgtestmodule");
+	@generatedModules = @play_newModules;
+	DoGen("play_new",".dll");
+	
+	 my @list = (
+  				 			 ["*.cfg", "fonttestmodule", "/../fonts/internal/testmodules/fonttestmodule/group/","/General/", ""],
+	 				 			 ["*.xml", "fonttestmodule", "/../fonts/internal/testmodules/fonttestmodule/group/","/", ""],
+	 				 			 
+	 				 			 ["*.cfg", "messagingtestmodule", "/../ngimessaging/internal/testmodules/messagingtestmodule/group/","/General/", ""],
+	 				 			 ["*.xml", "messagingtestmodule", "/../ngimessaging/internal/testmodules/messagingtestmodule/group/","/", ""],
+	 				 			 ["*", "messagingtestmodule", "/EPOC32/winscw/c/messagingtestmodule/","/General/", ""],
+	 				 			 
+	 				 			 ["*.cfg", "locationtestmodule", "/../ngilocation/internal/testmodules/locationtestmodule/group/","/General/", ""],
+	 				 			 ["*.xml", "locationtestmodule", "/../ngilocation/internal/testmodules/locationtestmodule/group/","/", ""],
+	 				 			 
+	 				 			 ["*.cfg", "alertstestmodule", "/../ngialerts/internal/testmodules/alertstestmodule/group/","/General/", ""],
+								 ["*.xml", "alertstestmodule", "/../ngialerts/internal/testmodules/alertstestmodule/group/","/", ""],	 				 			 
+								 ["vertigo.wav", "alertstestmodule", "/Epoc32/winscw/c/alertstestmodule/","/General/", ""],	 				 			 	 				 			 
+	 		
+	 			 			  ["*.cfg", "libxmlstiff", "/../libxmlpp/internal/group/","/General/", ""],
+	 		 	 			  ["*.xml", "libxmlstiff", "/../libxmlpp/internal/group/","/", ""],
+	 		 	 			  ["*.*", "libxmlstiff", "/../libxmlpp/internal/data/","/General/", ""],
+	 		 	 			  
+	 		 	 			  ["*.cfg", "ngisvgtestmodule", "/../ngisvg/internal/testmodules/ngisvgtestmodule/group/","/General/", ""],
+   		 	 			  ["*.xml", "ngisvgtestmodule", "/../ngisvg/internal/testmodules/ngisvgtestmodule/group/","/", ""],
+	 		 	 			  ["*.*", "ngisvgtestmodule", "/epoc32/winscw/c/ngisvgtest/","/General/", ""],
+	 				 			 
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("play_new",$bDataRef);  				 
+	if($install eq "yes")
+	{
+		@generatedModules = GenGenModules("play_new");
+		my @saved = @dllList;
+		my @playList = (
+"ngifonts.dll",
+"ngimessaging.dll",
+"ngisvg.dll",
+"ngilocation.dll",
+"ngialerts.dll",
+"libstdcpp.dll",
+"libxmlpp.dll",
+"FeedsLibXml2xmlpp.dll");
+       @dllList = @playList;
+		CopySharedDlls("play_new",\@dllList);     
+	  TransformXmls("play_new", "shared");
+		@dllList = @saved;
+
+	}#end install
+
+
+}
+
+if($suite eq "stdcpp")
+{
+	@generatedModules = GetstdcppModules();
+	DoGen("stdcpp",".dll");
+	CopyLtpCfg("stdcpp");
+	@generatedModules = GetstdexeModules();
+	DoGen("stdcpp",".exe");
+	
+	my @saved = @dllList;
+	@dllList = ("stdcxxtestengine.dll");
+	CopySharedDlls("stdcpp", \@dllList);
+	TransformXmls("stdcpp","shared");
+	@dllList = @saved;
+	
+	CopyArbitDatFiles("stdcpp",\@stdcpplist);
+	
+	if($install eq "yes")
+	{
+		@generatedModules = GenGenModules("stdcpp");
+		my @saved = @dllList;
+		my @cppList = ("libstdcpp.dll");
+       @dllList = @cppList;
+		CopySharedDlls("stdcpp",\@dllList);     
+	  TransformXmls("stdcpp", "shared");
+		@dllList = @saved;
+		exit;
+	}#if install
+}
+	
+
+if($suite eq "lsb" || $suite eq "all")
+{
+	my @lsbModules = GetLsbModules();
+	@generatedModules = @lsbModules;
+	DoGen("lsb",".exe");
+	
+	my @depDlls;
+	my $dll;
+	
+	#copying the common dlls
+	@depDlls  = 
+	(
+	 "libapi.dll",
+	 "tcm.dll",
+	 "vlib.dll",
+	);
+		
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	#now copy the cfg files
+	CopyLsbCfg("lsb");	
+	#now copy the extra dependency dlls
+	
+	#dlopen
+	@generatedModules = ("dlopen");
+	
+	
+	
+	@depDlls  = 
+	(
+	 "dynlibtest.1.dll",
+	 "dynlibtest.11.1.dll",
+	 "dynlibtest.11.2.dll",
+	 "dynlibtest.12g.dll",
+	 "dynlibtest.12r.dll",
+	 "dynlibtest.14.1.dll",
+	 "dynlibtest.14.2.dll",
+	 "dynlibtest.14.3.dll",
+	 "dynlibtest.3.1.dll",
+	 "dynlibtest.3.2.dll",
+	 "dynlibtest.3.dll",
+	 "dynlibtest.4.dll",
+	 "dynlibtest.8.dll",
+	 "dynlibtest.9.dll",
+	 "dynlibtest.3.dll",
+	 "dynlibtest.8.dll",
+	);
+	
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#dlclose
+	@generatedModules = ("dlclose");
+	@depDlls = ("dynlibclose.1.dll");
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#dlerror
+	@generatedModules = ("dlerror");
+	@depDlls = ("dynlib.dll");
+	foreach $dll (@depDlls)
+	{
+		CopyDeps("lsb",$dll);
+	}
+	
+	#now copy the xmls!
+	my $srcDir = $templateRoot."/ts/lsbsuites/group/";
+	
+	my $dst;
+	
+	foreach my $dllib("dlopen", "dlclose", "dlerror")
+	{
+		$dst  = $ATSRoot."\\components\\lsb_".$dllib."\\";
+		copy($srcDir."/lsb_".$dllib."_module_blr_hw_component.xml", $dst) || die("DIED: unable to copy from $srcDir!\n");
+		copy($srcDir."/lsb_".$dllib."_module_blr_winsspd_component.xml", $dst) || die("DIED: unable to copy from $srcDir!\n");
+	}
+	
+}
+
+if($suite eq "gcce")
+{
+
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	@generatedModules = ("gcce-validate", "gcce-load");
+		
+	my @depDlls  = 
+	(
+		"gcce-lib.dll",
+	);
+	
+	my $suffix = ".exe";
+	my $libname = "gcce";
+	
+	
+	my $src;
+	my $dst;
+	foreach my $module(@generatedModules)
+	{
+		my $relroot = $ATSRoot."\\components\\$libname"."_$module";
+		mkdir $relroot || die("DIED: unable to create dir $module\n");
+		mkdir $relroot."\\armv5_urel" || die("DIED: unable to create dir $relroot\\armv5_urel\n");
+		
+		#GenExeXmls($module,$libname);
+		
+		$src = $rootDrive."\\epoc32\\release\\gcce\\urel\\".$module.$suffix;
+		$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+		$dst = $dst."\\armv5_urel\\";
+		copy($src, $dst)  || warn("unable to copy $src to $dst");
+	}
+	$src = $rootDrive."\\epoc32\\release\\gcce\\urel\\"."gcce-lib.dll";
+	$dst = $ATSRoot."\\components\\gcce_gcce-load";
+	$dst = $dst."\\armv5_urel\\";
+	copy($src, $dst)  || warn("unable to copy $src to $dst");
+	
+	
+	my @list = (
+  				 ["gcce_gcce-load_module_blr_hw_component.xml", "gcce-load", "./","/", ""],
+  				 ["gcce_gcce-validate_module_blr_hw_component.xml", "gcce-validate", "./","/", ""],
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("gcce",$bDataRef);  				 
+
+	
+}#if gcce
+
+
+
+if($suite eq "libc-locale")
+{
+	$dontStrip = 0;
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	@generatedModules = ("tstring");
+	DoGen("libc",".dll");
+	
+	my @localelist = (
+	  				 ["locales.txt", "string", "../libc/internal/testapps/tstring/data/", "/General/", ""],
+	  				 ["tstring_locale_component.xml", "string", "../libc/internal/testapps/tstring/group/", "/", ""],
+	 
+	  				 );
+		
+  my $bDataRef = \@localelist;  				 
+	CopyArbitDatFiles("libc",$bDataRef);  				 
+	#delete($ATSRoot."/components/libc_string/"."libc_string_module_blr_hw_component.xml") || die("unable to delete");
+	my $my_src = $ATSRoot."/components/libc_string/"."tstring_locale_component.xml";
+	my $my_dst = $ATSRoot."/components/libc_string/"."libc_string_module_blr_hw_component.xml";
+	
+	unlink($my_dst) ||warn("unable to delete $my_dst");
+	rename($my_src,$my_dst) || move($my_src,$my_dst) || die("Unable to rename!");
+	
+}#if libc-locale
+
+
+if($suite eq "pcts")
+{
+	my $bldfile = $templateRoot."/group/bld.inf";
+	my @pctsModules = GetCompiledModules($bldfile);
+	@generatedModules = @pctsModules;
+	DoGen("pcts",".exe");
+	
+	my @depDlls;
+	my $dll;
+	
+	
+	#copying the common dlls
+	@depDlls  = 
+	(
+		"vsxlibapi.dll",
+		"rttm.exe",
+		"rtlibapi.dll",
+		"vsxvlib.dll",
+		"vsxgenlib.dll",
+		"vsxtsetlib.dll",
+		"vsxvport.dll",
+	);
+	
+	if($install eq "yes")
+	{
+		my @saved = @dllList; 
+		@dllList = @depDlls;	
+		CopySharedDlls("pcts", \@depDlls);
+		TransformXmls("pcts","shared");
+		@dllList = @saved;
+		
+		#now copy the cfg files
+		my $dst;
+		my $srcDir = "/epoc32/winscw/c/data/tet/";
+		my $file1 = $srcDir."tet_code";
+		my $file2 = $srcDir."tetexec.cfg";
+		foreach my $module(@generatedModules)
+		{
+			$dst = $ATSRoot."\\components\\pcts_".$module;
+			$dst = $dst."\\General\\";
+			copy($file1, $dst) or die "copy: $! $file1 $dst";
+			copy($file2,$dst) or die "copy: $! $file2 $dst";
+		}
+	}
+		
+	
+	
+	
+	my $dst;	
+	foreach my $module(@generatedModules)
+	{
+		my $file3 = "/epoc32/winscw/c/logs/tet/m.".$module;
+
+		$dst = $ATSRoot."\\components\\pcts_".$module;
+		$dst = $dst."\\General\\";
+		copy($file3, $dst) or die "copy: $! $file3 $dst";
+	}#module
+}
+
+
+
+$dontStrip = 0;
+
+if($suite eq "stdlibs" || $suite eq "all")
+{
+	@generatedModules = ("tzlib");
+	DoGen("libz", ".dll");
+
+	@generatedModules = ("tlibcrypt");
+	DoGen("libcrypt",".dll");
+
+	@generatedModules = @libcModules;
+	DoGen("libc",".dll");
+	GenBackendTest();
+	
+	@generatedModules = ("twchar");
+	CopyDeps("libc","twchar_helloworld.exe");
+	
+	@generatedModules = ("twopen");
+	CopyDeps("libc","twpopenwritechild.exe");
+	CopyDeps("libc","twpopenreadchild.exe");
+
+
+	@generatedModules = @libdlModules;
+	DoGen("libdl",".dll");
+	CopyDeps("libdl","Dll1.dll");
+	CopyDeps("libdl","Dll2.dll");
+	CopyDeps("libdl","DependencyTestDll.dll");
+
+	@generatedModules = @libmModules;
+	DoGen("libm",".dll");
+
+	$TDIR = "\\internal\\";
+	@generatedModules = @pthreadModules;
+	DoGen("libpthread",".dll");
+	CopyDeps("libpthread","testharness.dll");
+
+	CopyDatFiles();
+}
+
+if($install eq "yes")
+{
+	foreach my $lib(@liblist)
+	{   
+		#print "Transforming lib $lib\n";       
+		@generatedModules = GenGenModules($lib);
+		my @oldList = @dllList;
+		if($do_winscw)
+  	{
+  		@dllList = (@dllList, "wsdsoln.dll", "libestw32.dll");
+  		CopySharedDlls($lib,\@dllList,"winscw");     	
+	  	TransformXmls($lib, "shared","winscw");
+  	}
+  	@dllList = @oldList;
+  	if($do_armv5)
+  	{
+	  	CopySharedDlls($lib,\@dllList,"armv5");     	
+	  	TransformXmls($lib, "shared","armv5");
+  	}
+	}#FOREACH
+}#if install
+
+
+
+#function to generate ModuleList for a compiled bld.inf
+sub GetCompiledModules($)
+{
+	my $file = shift @_;
+	my @moduleList;
+	
+	
+	# Open input file
+	open (INFILE, "<".$file ) || die ("DIED: Can not find $file!");
+
+	while (<INFILE>)
+	{
+		if(/(.*)\.mmp/ && $1 !~ /^\/\//) 
+	  {
+	  		if($_ !~ /\/\/Not for ATS/)
+	  		{
+	  			push @moduleList, $1;
+	  		}
+	  }
+	}
+	close (INFILE);
+	return @moduleList;
+}
+
+my @groupList;
+sub GetLtpModules()
+{
+        my $prevDir = getcwd();
+        my @rootList = ("kernel", "misc");
+        my @totalgroupList;
+        foreach my $node(@rootList)
+        {
+        	chdir $ltpPath."/$node";
+        	@groupList = ();
+        	find(\&MakeGroupList, ".");
+        	@totalgroupList = (@totalgroupList, @groupList);
+        }
+        chdir $prevDir;
+        return @totalgroupList;
+}
+
+sub GetstdexeModules()
+{
+      my $prevDir = getcwd();
+      my @fullList = ();
+      foreach my $group(@stdexeList)
+      {
+      	my $groupPath = $templateRoot."/testapps/".$group. "/";
+      	chdir $groupPath;
+      	@groupList = ();
+      	find(\&grovelAllMmpFiles, ".");
+      	chdir $prevDir;
+      	@fullList = (@fullList,@groupList);
+      }
+      return @fullList;      
+}
+
+sub grovelAllMmpFiles()
+{
+	if($_ =~ /(.*)\.mmp/ && ! ($_ =~ /manual/))
+	{
+		push @groupList, $1;#get name of module
+	}
+}
+
+sub GetstdcppModules()
+{
+        my $prevDir = getcwd();
+        my @rootList = ("auto");
+        my @totalgroupList;
+        foreach my $node(@rootList)
+        {
+        	chdir $stdcppPath."/$node";
+        	@groupList = ();
+        	find(\&MakeGroupList, ".");
+        	@totalgroupList = (@totalgroupList, @groupList);
+        }
+        chdir $prevDir;
+        my @newmodules = ("tiostreams", "tlocale", "tstl_1", "tstl_2", "tstl_3","tstl_4", "twiostreams" );
+        @totalgroupList = (@totalgroupList, @newmodules); 
+        foreach my $mod(@newmodules)
+        {
+         $cfglocation{$mod} = getcwd()."/testapps/bcdrivers/$mod/group"."\/$mod.cfg";
+         #print "$cfglocation{$mod} - $mod\n";
+        }
+				return @totalgroupList;
+}
+
+sub GetTstdcppModules()
+{
+      my $prevDir = getcwd();
+      #chdir $tstdcppPath;
+      @groupList = ();
+      find(\&grovelAllMmpFiles, ".");
+      chdir $prevDir;
+      return @groupList;
+}
+
+sub MakeGroupList()
+{
+	my $currentDir = $File::Find::dir;
+	
+	#print "Current dir:$currentDir\n";
+	if( $currentDir =~ /.*\/(.*)\/group/)
+	{
+		if($cfglocation{$1} eq "")
+		{
+			$cfglocation{$1} = getcwd()."\/$1.cfg";
+			push @groupList, $1;#get name of module
+		}#first time in group
+	}#group found
+}#subrtn end
+
+
+#function that generates the ATS setup
+sub DoGen($$)
+{
+	my $libname = shift @_;
+	my $ext = shift @_;
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+	
+	
+	GenDirs($libname);
+	my $module;
+	foreach my $listed(@generatedModules)
+	{
+	my @filesToProcess =
+        (
+         "LibXXX_ATSTemplateXXX_module_blr_hw_component.xml",
+         "LibXXX_ATSTemplateXXX_module_blr_winsspd_component.xml",
+         "testframework.ini",
+        );
+		if(rindex($noXmlsGenList, $libname) != -1 )	
+		{
+			@filesToProcess = ("testframework.ini",);
+		}
+
+			if($ext eq ".exe")
+			{
+				GenExeXmls($listed,$libname);
+			}
+			else
+			{
+				#just in case no xml file was supplied
+				
+        my $ref = \@filesToProcess;
+				GenXmls($libname, $listed,$ref);
+			}
+	}#foreach
+	
+	CopyDlls($libname,$ext);
+	#copy the provided cfg, ini and xmls
+	if($libname eq "opts")
+	{
+		CopyOptsCfg($libname);
+	}
+	elsif($libname eq "ltp" || $libname eq "lsb" || $libname eq "glib")
+	{
+	  #copy latter and  dont copy respectively for ltp and lsb
+	}
+	else
+	{
+	  CopyCfgIniXmls($libname);
+	}
+}
+
+sub CopyCfgIniXmls()
+{
+	my $libname = pop @_;
+	
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach my $listed(@generatedModules)
+	{
+	  my $dirname = $listed;
+	  $dirname =~ s/test/t/;
+	  $module = StripModulePrefix($listed);
+	    
+		$src = $libRoot.$libname.$TDIR.$dirname."\\group\\";
+				
+		my $xmlCopied = "0";
+		my @globpattern = ("*.ini", "*.xml","*.cfg");
+		foreach my $pat(@globpattern)
+		{
+			$dst = $ATSRoot."\\components\\".$libname."_".$module;
+			if($pat ne "*.xml")
+			{
+				$dst = $dst."\\General\\";
+			}
+			else
+			{
+				$dst = $dst."\\";
+			}
+			my @filesFound = glob($src."\\$pat");
+			if(scalar @filesFound eq "0")
+			{
+				#print "No files found for module $module $pat!\n";
+				#print $src;
+			}
+			
+			#handcoded
+			if($pat eq "*.cfg" && $xmlCopied eq "0")#rename only if xml not copied
+			{
+				if(scalar @filesFound > 1)
+				{
+					print "Multiple cfg files found. Copying all!\n";
+				}
+				else
+				{
+						$dst = $dst.$listed.".cfg";
+				}
+			}				
+			elsif($pat eq "*.xml")
+			{
+				my $folder = $dst;
+				foreach my $from (@filesFound) 
+				{
+					if($from =~ /winscw_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_winscw_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+					elsif($from =~ /winsspd_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_winsspd_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+					elsif($from =~ /hw_component/)
+					{
+						$dst = $folder.$libname."_".$module."_module_blr_hw_component.xml";
+						copy($from, $dst) or die "DIED: copy: $! $from $dst";
+						$xmlCopied = "1";
+					}
+				}#examine individually			
+				if(scalar @filesFound > 2)
+				{
+					#print "Multiple xml files found!!!\n";
+				}
+				@filesFound = ();
+			}	
+				
+			
+			foreach my $from (@filesFound) 
+			{
+					copy($from, $dst) or die "DIED: copy: $! $from $dst";
+			}#copy individually			
+		}#globpattern
+	}#module
+}#fn
+
+#copy the cfg files for the opts test suite
+sub CopyOptsCfg()
+{
+	my $libname = pop @_;
+	
+	my $libRoot = $optsGroupPath."\\";
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach $module(@generatedModules)
+	{
+		$src = $libRoot.$module."\.cfg";
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($src, $dst) or warn "copy: $! $src $dst";
+	}#module
+}#fn
+
+#copy the lsb cfg files
+sub CopyLsbCfg()
+{
+	my $libname = pop @_;
+	
+	my $module;
+	
+	my $dst;
+	
+	my $srcDir = $templateRoot."/ts/lsbsuites/lsblib/data/";
+		
+	foreach $module(@generatedModules)
+	{
+		my $file1 = $srcDir."tet_code.cfg";
+		my $file2 = $srcDir."tetexec.cfg";
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($file1, $dst) or die "copy: $! $file1 $dst";
+		copy($file2, $dst) or die "copy: $! $file2 $dst";
+	}#module
+}#fn
+
+
+#copy the ltp cfg files
+sub CopyLtpCfg($)
+{
+	my $libname = pop @_;
+	
+	my $module;
+	my $src;
+	my $dst;
+		
+	foreach $module(@generatedModules)
+	{
+		$src = $cfglocation{$module};
+		$dst = $ATSRoot."\\components\\".$libname."_".$module;
+		$dst = $dst."\\General\\";
+		copy($src, $dst) or warn "copy: $! $src $dst";
+	}#module
+}#fn
+
+
+sub CopyDlls($$)
+{
+	my $libname = shift @_;
+	my $suffix = shift @_;
+	
+	my $module;
+	my $src;
+	my $dst;
+	
+	
+	foreach $module(@generatedModules)
+	{
+	  if($do_winscw == 1)
+	  { 	  
+			$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$module.$suffix;
+			$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+			$dst = $dst."\\winscw_udeb\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	  if($do_armv5 == 1)
+	  {
+			$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$module.$suffix;
+			$dst = $ATSRoot."\\components\\".$libname."_".StripModulePrefix($module);
+			$dst = $dst."\\armv5_urel\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	}#foreach
+}
+#fn to generate the session file
+sub GenerateSessionFile($$$$)
+{
+	my $libname = shift @_;
+	my $target = shift @_;
+	my $name = shift @_;
+	my $listptr = shift @_;
+	my $outdir = $ATSRoot;
+	my $infile = $templateRoot."\\testsession.xml";
+	chdir $outdir || die("DIED: Unable to chdir!"); 
+	#open INFILE, $infile || die ("DIED: Can not open input file $infile");
+	my $prefix = $name."_".$target;
+	if($sdkversion ne "")
+	{
+		$prefix = $prefix."_".$sdkversion;
+	}
+	
+	open OUTFILE, ">".$outdir."\\".$prefix."_testsession.xml" || die ("DIED: Can not open output file");
+	my $line;
+  my $snippet = $target;
+  if($target ne "winscw" && $target ne "winsspd")
+  {
+  	$snippet = "hw";
+  }
+
+print OUTFILE "<?xml version=\"1.0\"?>\n";
+print OUTFILE "<testsession>\n";
+#print OUTFILE "<symbian-version>$libname"."_".$snippet."_TestDrop_blr_component</symbian-version>\n";	
+print OUTFILE "<symbian-version>stdcpp_combined_test_session</symbian-version>\n";	
+print OUTFILE "<testitem>at</testitem>\n";	
+print OUTFILE "<resultfile>ATSOUTPUT\\".$prefix."_testsession_results.xml</resultfile>\n";		
+if($sendEmail eq "yes")
+{
+print OUTFILE <<EOEmailNote;
+<email_notification>
+<include_test_cases>false</include_test_cases>
+<message_file>C:\\\\lm.txt </message_file>
+<send_after_rerun>false</send_after_rerun>
+<subject>Stdcpp-Plumhall $snippet testreport</subject>
+<from>swbuild\@nokia.com</from>
+<to>ajith.narayanan\@nokia.com</to>
+<to>hrishikesh.brahmakal\@nokia.com</to>
+<to>santosh.ks\@nokia.com</to>
+<to>shilpa.sharma\@nokia.com</to>
+<to>kasthuri.n-s\@nokia.com</to>
+<to>hema.1.s\@nokia.com</to>
+<to>vineetha.hari-pai\@nokia.com</to>
+<to>madhusudhan.p.reddy\@nokia.com</to>
+</email_notification>
+EOEmailNote
+}
+
+	if($libname ne "combined")
+	{
+		AddAssumedIncludes($libname,$snippet);
+	}
+	else
+	{
+		if($listptr ne "")
+		{
+			AddFileList($libname,$listptr);
+		}
+		else
+		{
+			AddActualIncludes($libname);
+		}
+	}
+   				
+	print OUTFILE "</testsession>\n";
+
+	close(OUTFILE);
+	#close(INFILE);
+}#fn
+
+
+sub AddAssumedIncludes($$)
+{
+	my $libname = shift @_; 
+	my $snippet = shift @_;
+	
+	my $APITest;
+	foreach my $listed(@generatedModules)
+						{
+							$APITest = StripModulePrefix($listed);
+							print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of $target xml for $APITest -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							if($libname eq "all")
+							{
+									print OUTFILE "		 <testplan>ATSINPUT\\components\\$listed\\$listed"."_module_blr_".$snippet."_component.xml</testplan>\n";	 
+							}
+							else
+							{
+									print OUTFILE "		 <testplan>ATSINPUT\\components\\$libname"."_"."$APITest\\$libname"."_$APITest"."_module_blr_".$snippet."_component.xml</testplan>\n";	 
+							}
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	           }#foreach @generatedModules
+}
+
+
+sub AddFileList($$)
+{
+	my $libname = shift @_; 
+	my $listptr = shift @_;
+	my @componentfiles = @$listptr;
+	
+			foreach my $listed(@componentfiles)
+						{
+								print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of $target xml -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							print OUTFILE "		 <testplan>ATSINPUT\\components\\$listed</testplan>\n";	 
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	           }#foreach @componentfiles
+}
+
+
+
+sub GetSslXmls()
+{
+	my $APITest;
+	my @componentfiles;
+	
+	my @emulatorfiles = 
+	(
+	"libssl_ssltest\\libssl_blr_winsspd_component.xml",
+	"libcrypto_crypto_test\\libcrypto_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestss_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestverify_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestenc_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltestgen_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltpkcs7_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltpkcs7d_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltreq_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltreq2_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltrsa_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltcrl_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltsid_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltx509_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltx5091_blr_winsspd_component.xml",
+	"libcrypto_openssl\\libcrypto_topenssltx5092_blr_winsspd_component.xml",
+	 );
+	 
+	my @hwfiles =
+	(
+		"libcrypto_openssl\\libcrypto_topenssltestss_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltestverify_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltestenc_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltestgen_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltpkcs7_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltpkcs7d_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltreq_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltreq2_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltrsa_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltcrl_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltsid_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltx509_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltx5091_blr_hw_component.xml",
+		"libcrypto_openssl\\libcrypto_topenssltx5092_blr_hw_component.xml",		
+		"libssl_ssltest\\libssl_blr_hw_component.xml",
+		"libcrypto_crypto_test\\libcrypto_blr_hw_component.xml",
+	);
+	if($target eq "winsspd" || $target eq "winscw")
+	{
+		@componentfiles = @emulatorfiles;
+	}
+	else
+	{
+		@componentfiles = @hwfiles;
+	}
+	return @componentfiles;
+}
+
+
+
+sub AddActualIncludes($)
+{
+	my $libname = shift @_; 
+	find(\&XmlComponentFiles, ".");
+	my $key;
+	my $value;
+	while(($key, $value) = each(%DirHash)) 
+	{
+							$value =~ s/\//\\/g;
+							print OUTFILE  "\n";
+							print OUTFILE "	<!--Inclusion of dynamically found $target xml -->\n";
+							print OUTFILE "	<component>\n";
+							print OUTFILE "		<factory>Symbian</factory>\n";
+							print OUTFILE "		 <testplan>$value</testplan>\n";	 
+							if($target eq "winscw")
+							{
+									print OUTFILE "		<target hardware=\"winscw\" build=\"udeb\" />\n";
+							}
+							elsif($target eq "winsspd")
+							{
+								print OUTFILE " <target hardware=\"winsspd\" platform=\"winscw\" build=\"udeb\" />\n"; 
+							}
+							else
+							{
+										print OUTFILE "		<target hardware=\"$target\" build=\"urel\" />\n";
+							}
+							print OUTFILE "	</component>\n";
+							print OUTFILE "\n";
+	
+	}#while
+}#fn
+
+sub XmlComponentFiles()
+{
+	if($_ !~ /\.xml/ || $_ =~ /manual/)
+	{
+		return;
+	}
+	#print "Processing $_\n";
+	my $dir = getcwd();
+	if($dir =~ /.*(ATSINPUT.*)/)
+	{
+			$dir = $1;
+			if($dir !~ /.*components.*/)
+			{
+				return;
+			}
+			#print "The dir is $dir\n";
+	}
+	else
+	{
+		return;
+	}
+	
+	if($target eq "winsspd" )
+	{
+		if($_ =~ /winsspd/)
+		{
+			#print "Adding $target file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+		}
+	}
+	elsif($target eq "winscw")
+	{
+		if($_ =~ /winscw/)
+		{
+			#print "Adding $target file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+		}
+	}
+	elsif($_ =~ /$target/)
+	{
+		#print "$_ matched $target \n";
+		#print "Adding $target file $_ for $dir\n";
+		$DirHash{$dir} = $dir."/".$_;
+	}
+	elsif($_ =~/hw/)
+	{
+		#print "$_ matched hw";
+		if(scalar $DirHash{$dir} == 0)
+		{
+			#print "Adding hw file $_ for $dir\n";
+			$DirHash{$dir} = $dir."/".$_;
+			#print " and added\n"
+		}
+		else
+		{
+			#print " and not added\n";
+		}
+	}
+}
+
+
+
+sub emptyArray()
+{
+	@generatedModules = ();
+}
+
+sub GenDirs($)
+{
+ my $libname = shift @_;
+ my $dirname;
+ foreach my $module(@generatedModules)
+ {
+  $dirname = StripModulePrefix($module);
+	my $relroot = $ATSRoot."\\components\\$libname"."_$dirname";
+	mkdir $relroot || die("DIED: unable to create dir $dirname\n");
+	mkdir $relroot."\\General" || die("DIED: unable to create dir $relroot\\General\n");
+	if($do_armv5 == 1)
+	{
+		mkdir $relroot."\\armv5_urel" || die("DIED: unable to create dir $relroot\\armv5_urel\n");
+	}
+	if($do_winscw == 1)
+	{
+		mkdir $relroot."\\winscw_udeb" || die("DIED: unable to create dir $relroot\\winscw_udeb\n");
+	}
+ }
+}
+
+sub GenXmls($$$)
+{
+	my $libname = shift @_;
+	my $listedName = shift @_;
+	my $bref = shift @_;
+	my @filesToProcess = @$bref;
+	
+	#strip leading test and t names from module
+	my $moduleName = StripModulePrefix($listedName);
+
+      my $toPath = $ATSRoot."\\components\\$libname"."_$moduleName\\"; 
+        
+
+       my $dst;
+       my $src;
+       foreach $src(@filesToProcess)
+       {
+               $dst = $src;
+               $dst =~ s/ATSTemplateXXX/$moduleName/;
+               $dst =~ s/LibXXX/$libname/;
+             
+
+               if($src eq "testframework.ini")
+               {
+					$dst =  $toPath."General\\".$dst;
+               }
+               else
+               {
+					$dst =  $toPath.$dst;
+               }
+               copy($templateRoot."\\".$src, $dst) || die("DIED: Unable to copy $src to $dst\n");
+               ExpandModuleMacros($dst, $libname, $listedName);
+       }#foreach file
+}
+
+
+sub GenExeXmls()
+{
+	my $moduleName = shift @_;
+	my $libname = shift @_;
+			
+	my $toPath = $ATSRoot."\\components\\$libname"."_$moduleName\\"; 
+  my @filesToProcess =
+  (
+     "LibXXX_ATSTemplateXXX_exemodule_blr_hw_component.xml",
+     "LibXXX_ATSTemplateXXX_exemodule_blr_winsspd_component.xml",
+  );
+	
+	my $dst;
+  my $src;
+  foreach $src(@filesToProcess)
+  {
+        $dst = $src;
+        $dst =~ s/ATSTemplateXXX/$moduleName/;
+        $dst =~ s/LibXXX/$libname/;
+        $dst =~ s/_exemodule_/_module_/;
+				$dst =  $toPath.$dst;
+        copy($templateRoot."\\".$src, $dst) || die("DIED: Unable to copy to $dst\n");
+        ExpandModuleMacros($dst, $libname, $moduleName);
+   }#foreach file
+}
+
+#function to expand the macros existing in a file
+#file is replaced by new version
+#args are relativePath. filename and  $moduleName
+sub ExpandModuleMacros()
+{
+	# Take module name
+	my $moduleName = pop @_;
+	my $libname = pop @_;
+	my $filename = pop @_;
+
+	my $MODULENAME = $moduleName;
+	$MODULENAME =~ tr/[a-z]/[A-Z]/;
+
+	# Open input file
+	open (INFILE, $filename ) || die ("DIED: Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("DIED: Can not open $newOutput");
+
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  s/ATSTemplateXXX/$moduleName/g;
+	  s/LibXXX/$libname/g;
+    	  print OUTFILE $_;
+	}
+
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+}
+
+
+
+sub CopyDeps($$)
+{
+  my $libname = shift @_;
+  my $copyDll = shift @_;
+	my $src;
+	my $dst;
+	foreach my $listed(@generatedModules)
+	{
+				my $module = StripModulePrefix($listed);
+				if($do_winscw == 1)
+				{
+					$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+					$dst = $ATSRoot."\\components\\$libname"."_$module";
+					$dst = $dst."\\winscw_udeb\\";
+					copy($src, $dst)  || warn("unable to copy $src to $dst");
+				}
+				if($do_armv5 == 1)
+				{
+					$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+					$dst = $ATSRoot."\\components\\$libname"."_$module";
+					$dst = $dst."\\armv5_urel\\";
+					copy($src, $dst)  || warn("unable to copy $src to $dst");
+				}
+	}#foreach
+}#fn
+
+#dat file copy
+sub CopyDatFiles()
+{
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+ my @list = (
+  				 ["libcrypt", "tlibcrypt", "group/Test_Data.dat"],
+  				 ["libc", "tnetdb", "data/services.txt"],
+  				 ["libc", "tstring", "data/locales.txt"],
+  				 ["libc", "libc_loc_blr", "data/locales.txt"],
+  				 ["libz", "tzlib", "data/*.*"],
+  				 ["libc", "tlink", "data/*.*"],
+  				 ["libc", "tmmap", "data/*.*"],
+           );
+
+	 my $libname;
+	 my $dirname;
+	 my $glob;
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($libname, $dirname, $glob) = @inarr;
+			my $modulename = StripModulePrefix($dirname);
+			my $src = "$libRoot/$libname/internal/testapps/$dirname/$glob";
+			my $dst = $ATSRoot."\\components\\$libname"."_"."$modulename\\General\\";
+  		if($dirname eq "libc_loc_blr")
+  		{
+  			$src = "$libRoot/libc/src/locales.txt";
+  		}
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  }#ref processing
+}#fn
+
+
+#glib dat file copy
+sub CopyArbitDatFiles($$)
+{
+	
+	 my $libname = shift @_;
+	 my $refArr = shift @_;
+	 my @list = @$refArr;
+	 
+ 	
+	my $fname;
+	my $modulename;
+	my $location;
+	my $atsDst;
+	my $targetDst;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $modulename, $location, $atsDst, $targetDst) = @inarr;
+			#print "[$fname, $modulename, $location, $atsDst, $targetDst]\n";
+			if($location =~ /(.*)\.\.(.*)/)
+			{
+				$location = GetPathPrefix().$2;
+			}
+			else
+			{
+				$location = $rootDrive.$location;
+			}
+			my $src = $location.$fname;
+			my $dst = $ATSRoot."\\components\\$libname"."_".$modulename.$atsDst;
+			if($libname eq "")
+			{
+				$dst = $ATSRoot."\\components\\".$modulename.$atsDst;
+				#print "$dst CHANGED!\n"
+			}
+  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file  $src found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  		
+  		if($targetDst ne "")
+  		{
+  			 		my @filesToChange = ();
+			  		if($atsDst =~ "armv5")
+			  		{
+			  			#armv5 component file
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_hw_component.xml";
+			  			
+			  		}
+			  		elsif($atsDst =~ "winscw")
+			  		{
+			  			#winscw component file
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_winsspd_component.xml";
+			  		}
+			  		else
+			  		{
+			  			#add entry to both xmls
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_hw_component.xml";
+			  			unshift @filesToChange, $libname."_".$modulename."_module_blr_winsspd_component.xml";
+			  		}
+			  		foreach my $file(@filesToChange)
+			  		{
+			  			$src = $ATSRoot."/components/".$libname."_"."$modulename/".$file;
+			  			ModifyXml($src,$libname,$fname,$atsDst,$targetDst);
+			  		}
+			  }#updating the xmls
+    		
+  }#ref processing
+ 
+  
+}#fn
+
+sub ModifyXml($$$$$)
+{
+	my $filename = shift @_;
+	my $lib = shift @_;
+	my $fname = shift @_;
+	my $atsDst = shift @_;
+	my $targetDst = shift @_;
+	
+	
+	#printf("Modifying $filename with lib= $lib fname= $fname atsDst = $atsDst targetDst = $targetDst\n");
+	
+	# Open input file
+	open (INFILE, $filename ) || die ("Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("Can not open $newOutput");
+
+		
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  if(/\<stif\>/ || /\<execute\>/)
+	  {
+	  	if(/\<stif\>/)
+	  	{
+	  		print OUTFILE "\<stif\>\n";
+	  	}
+	  	else
+	  	{
+	  		print OUTFILE "\<execute\>\n";
+	  	}
+	  	my $type = "data";
+	  	if($atsDst !~ "General")
+			{
+				$type = "binary";
+			}
+			print OUTFILE <<EObinary;
+				
+	  		<install type=\"$type\">
+				<src>$fname</src>
+				<dst>$targetDst\\$fname</dst>
+ 				</install>
+EObinary
+	  }#stif or execute tag found
+	  else
+	  {
+	  	  print OUTFILE $_;
+	  }
+	}#while
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+	
+}#fn
+sub GenGenModules($)
+{
+	my $libname = shift @_;
+	
+		
+	my $src = $ATSRoot."/components/";
+	my @fileList = ();
+	opendir(DIRHANDLE, "$src") || die "Cannot opendir $src";
+  foreach my $name (readdir(DIRHANDLE)) 
+  {
+    if($name =~ /^$libname/)
+    {
+    	if($libname ne "libc" || $name !~ /^libcrypt/) 
+    	{
+    		$name =~ s/^$libname//;
+    		$name =~ s/^_//;
+    		unshift @fileList, $name;
+    	}#excluded libcrypt from libc list
+    }#libname match
+  }#foreach
+  closedir(DIRHANDLE);
+	return @fileList;
+}
+
+
+sub GetAllModules()
+{
+	
+	my $src = $ATSRoot."/components/";
+	my @fileList = ();
+	opendir(DIRHANDLE, "$src") || die "Cannot opendir $src";
+  foreach my $name (readdir(DIRHANDLE)) 
+  {
+    	if($name ne "." && $name ne ".." && $name ne "shared")
+			{
+				unshift @fileList, $name;
+			}
+
+  }#foreach
+  closedir(DIRHANDLE);
+	return @fileList;
+}
+
+
+
+sub TransformXmls($$)
+{
+	my $libname = shift @_;
+	my $shared = shift @_;
+	my $target = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+
+	my $armv5 = 0;
+	my $winscw = 0;
+	if($target eq "armv5")
+	{
+			$armv5 = 1;
+  }	
+  elsif($target eq "winscw")
+  {
+  		$winscw = 1;
+  }
+  else
+  {
+  	$armv5  = $do_armv5;
+  	$winscw = $do_winscw;
+	}
+		
+
+	foreach $module(@generatedModules)
+	{
+	  if($armv5 == 1 && $winscw == 1)
+	  {
+			$src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+		}
+		elsif($armv5 == 1)
+		{
+			$src = $ATSRoot."/components/".$libname."_"."$module/*_hw_component.xml";
+		}
+		elsif($winscw == 1)
+		{
+			$src = $ATSRoot."/components/".$libname."_"."$module/*_winsspd_component.xml";
+		}
+		my @fileList = glob($src);
+		foreach my $file(@fileList)
+		{
+		 	#print"$file to  be transformed!\n";
+			AddLibsInXml($libname,$file,$shared);
+		}
+   }
+}#fn
+
+sub AddLibsInXml($$$)
+{
+	my $libname = shift @_;
+	my $filename = shift @_;
+	my $shared = shift @_;
+	
+	# Open input file
+	open (INFILE, $filename ) || die ("Can not find $filename");
+
+	#Open output file
+	my $newOutput = $filename."new";
+	open (OUTFILE, ">".$newOutput ) || die ("Can not open $newOutput");
+
+	my $drive = "c:";
+	
+	# Replace text in files
+	while (<INFILE>)
+	{
+	  if(/\<stif\>/ || /\<execute\>/)
+	  {
+	  	if(/\<stif\>/)
+	  	{
+	  		print OUTFILE "\<stif\>\n";
+	  	}
+	  	else
+	  	{
+	  		print OUTFILE "\<execute\>\n";
+	  		if($filename =~ /winsspd/)
+				{
+					$drive = "z:";
+				}
+	  	}
+	  	foreach my $installable(@dllList)
+			{
+				print OUTFILE <<EOLine;
+				
+	  		<install type=\"$shared binary\">
+				<src>$installable</src>
+				<dst>$drive\\sys\\bin\\$installable</dst>
+ 				</install>
+EOLine
+			}
+
+	  }
+	  else
+	  {
+	  	  print OUTFILE $_;
+	  }
+	}#while
+	# Close filehandles
+	close (INFILE);
+	close (OUTFILE);
+
+	# Rename result file
+	unlink $filename;
+	rename $newOutput,$filename;
+}
+
+sub CopySharedDlls()
+{
+  my $libname = shift @_;
+  my $ref = shift @_;
+  my @ListOfDlls = @$ref;
+  my $target = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+	
+	my $do_armv5 = 0;
+	my $do_winscw = 0;
+	if($target eq "armv5")
+	{
+		$do_armv5 = 1;
+	}
+	elsif($target eq "winscw")
+	{
+		$do_winscw =  1;
+	}
+	else
+	{
+		$do_armv5  = 1;
+		$do_winscw = 1;
+	}
+	
+	
+	mkdir  $ATSRoot."\\components\\shared" || die("Wouldn't make shared folder in $ATSRoot\\components");
+	if($do_winscw == 1)
+	{
+		mkdir  $ATSRoot."\\components\\shared\\winscw_udeb" || die("Wouldn't make shared folder in $ATSRoot\\components\winscw_udeb");
+	}
+	if($do_armv5 == 1)
+	{
+		mkdir  $ATSRoot."\\components\\shared\\armv5_urel" || die("Wouldn't make shared folder in $ATSRoot\\components\armv5_urel");
+	}
+	
+	foreach my $copyDll(@ListOfDlls)
+	{
+		if($do_winscw == 1)
+		{
+			$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+			$dst = $ATSRoot."\\components\\shared";
+			$dst = $dst."\\winscw_udeb\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}	
+		if($do_armv5 == 1)
+		{	
+			$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+			$dst = $ATSRoot."\\components\\shared";
+			$dst = $dst."\\armv5_urel\\";
+			copy($src, $dst)  || warn("unable to copy $src to $dst");
+		}
+	}#foreach
+}#fn
+
+
+sub CopyMultiDlls($)
+{
+  my $libname = shift @_;
+	my $module;
+	my $src;
+	my $dst;
+	foreach my $listed(@generatedModules)
+	{
+		foreach my $copyDll(@dllList)
+		{
+			if($do_winscw == 1)
+			{
+				$src = $rootDrive."\\epoc32\\release\\winscw\\udeb\\".$copyDll;
+				$dst = $ATSRoot."\\components\\$libname"."_$listed";
+				$dst = $dst."\\winscw_udeb\\";
+				copy($src, $dst)  || warn("unable to copy $src to $dst");
+			}
+			if($do_armv5 == 1)
+			{
+				$src = $rootDrive."\\epoc32\\release\\armv5\\urel\\".$copyDll;
+				$dst = $ATSRoot."\\components\\$libname"."_$listed";
+				$dst = $dst."\\armv5_urel\\";
+				copy($src, $dst)  || warn("unable to copy $src to $dst");
+			}
+		}#foreach
+	}
+}#fn
+
+sub StripModulePrefix($)
+{
+	my $listed = pop @_;
+	my $module = $listed;
+	if($dontStrip == 0)
+	{
+		$module =~ s/^test//;
+		$module =~ s/^t//;
+		$module =~ s/^libc_//;
+		$module =~ s/^libm_//;
+  }
+  return $module;
+  	
+}
+
+sub GetLsbModules()
+{
+	my @lsbList = 
+	(
+	 "abs",
+"acos",
+"asctime",
+"asin",
+"atan",
+"atan2",
+"atof",
+"atoi",
+"atol",
+"bsearch",
+"calloc",
+"ceil",
+"chdir",
+"clearerr",
+"close",
+"closedir",
+"cos",
+"cosh",
+"creat",
+"lsb_ctime",
+"lsb_difftime",
+"dlclose",
+"dlerror",
+"dlopen",
+"dup",
+"dup2",
+"exp",
+"fabs",
+"fclose",
+"fcntl_x",
+"fdopen",
+"feof",
+"ferror",
+"fflush",
+"fgetpos",
+"fgets",
+"fileno",
+"floor",
+"fmod",
+"fopen",
+"fopen_X",
+"fprintf",
+"fputs",
+"fread",
+"free",
+"freopen",
+"freopen_X",
+"frexp",
+"fseek",
+"fsetpos",
+"fstat",
+"ftell",
+"ftok",
+"ftok_l",
+"fwrite",
+"getc",
+"getcwd",
+"gets",
+"lsb_gmtime",
+"ldexp",
+"link",
+"lsb_localtime",
+"log",
+"log10",
+"longjmp",
+"lseek",
+"malloc",
+"memchr_X",
+"memcmp_X",
+"memcpy_X",
+"memmove",
+"memset_X",
+"mkdir",
+"mkfifo",
+"lsb_mktime",
+"modf",
+"msgctl",
+"msgget",
+"msgsnd",
+"open",
+"opendir",
+"open_x",
+"perror",
+"pipe",
+"pow",
+"printf",
+"qsort",
+"rand",
+"read",
+"readdir",
+"readv_l",
+"realloc",
+"remove",
+"rename",
+"rewind",
+"rewinddir",
+"rmdir",
+"scanf",
+"scanf_X",
+"seekdir",
+"semctl",
+"semget",
+"semop",
+"setbuf",
+"setjmp",
+"shmat",
+"shmdt",
+"shmget",
+"sin",
+"sinh",
+"sqrt",
+"srand",
+"stat",
+"strcat",
+"strchr",
+"strcmp",
+"strcoll_X",
+"strcpy",
+"strcspn",
+"strerror_X",
+"strftime",
+"strftime_X",
+"strlen",
+"strncat",
+"strncmp",
+"strncpy",
+"strpbrk",
+"strptime",
+"strrchr",
+"strspn",
+"strstr",
+"strtod_X",
+"strtok",
+"strtol_X",
+"strxfrm_X",
+"tan",
+"tanh",
+"telldir",
+"telldir_l",
+"lsb_time",
+"tmpfile",
+"tmpnam",
+"ungetc",
+"unlink",
+"utime",
+"vfprintf",
+"vprintf",
+"write",
+"writev_l",
+
+	);
+  return @lsbList;
+}
+
+
+
+sub GenBackendTest()
+{
+
+	my @datList = 
+	(
+	["libc", "tlibcbackend"],
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,".dll");
+	}
+ #now copy xmls			
+ CopyAtsSetup();
+ #extra exes
+ @generatedModules = ("tlibcbackend");
+ CopyDeps("libc","TPopenReadChild.exe");
+ CopyDeps("libc","TPopenWriteChild.exe");
+			
+}#fn
+
+sub CopyAtsSetup()
+{
+	 my $libname = "libc"; 
+	 my @list = (
+  				 ["*.xml", "libcbackend", "/../backend/internal/tlibcbackend/group/","/", ""],
+  				 ["*.cfg", "libcbackend", "/../backend/internal/tlibcbackend/group/","/General/", ""],
+  				 ["*.ini", "libcbackend", "/../backend/internal/tlibcbackend/group/","/General/", ""],
+  				 );
+ 
+  my $bDataRef = \@list;  				 
+	CopyArbitDatFiles("libc",$bDataRef);  				 
+
+}#fn
+sub GetPathPrefix()
+{
+	 my $srcPrefix = $templateRoot;
+	 $srcPrefix =~ /(.*)internal.*/;
+	 $srcPrefix = $1;
+	 return $srcPrefix;
+}
+	
+
+#dat file copy
+sub CopyCryptoDat()
+{
+	my $libRoot = $templateRoot;
+	$libRoot =~ /(.*)internal.*/;
+	$libRoot = $1;
+
+ my @list = (
+ 								 ["libssl", "ssltest", "libssl/internal/testapps/ssl_test/data/*"],
+ 								 ["libcrypto", "topenssl", "/libcrypto/internal/testapps/topenssl/data/*"],
+           );
+
+	 my $libname;
+	 my $dirname;
+	 my $glob;
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($libname, $dirname, $glob) = @inarr;
+			my $modulename = StripModulePrefix($dirname);
+			my	$srcPrefix = GetPathPrefix();
+			
+			my $src = "$srcPrefix"."$glob";
+			
+			my $dst = $ATSRoot."\\components\\$libname"."_"."$modulename\\General\\";
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no Dat file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  }#ref processing
+}#fn
+
+#Crypto xmls copy
+sub CopyCryptoXmls()
+{
+	  my @list = (
+  				 ["*.xml", "libssl_ssltest/", "/libssl/internal/testapps/ssl_test/group/"],
+   				 ["*.xml", "libcrypto_crypto_test/", "/libcrypto/internal/testapps/crypto_test/group/"],
+   				 ["*.xml", "libcrypto_openssl/", "/libcrypto/internal/testapps/topenssl/group/"],   				    				 			 
+  				 );
+
+	
+	my $fname;
+	my $moduleDst;
+	my $location;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $moduleDst, $location) = @inarr;
+			my $src = GetPathPrefix().$location.$fname;
+			my $dst = $ATSRoot."\\components\\$moduleDst";
+  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			die("DIED: no xml file found to copy!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  	}#ref
+  	
+  	my @crypto_copyList = ("*.txt", "*cfg", "*.ini");
+  	
+  	foreach my $item(@crypto_copyList)
+  	{
+  			$location = "/libcrypto/internal/testapps/crypto_test/group/";
+  			$fname = GetPathPrefix().$location.$item;
+  			my @filesFound = glob($fname);
+  			foreach my $file(@filesFound)
+  			{
+    			$moduleDst = "libcrypto_crypto_test/";	
+  				my $dst = $ATSRoot."\\components\\".$moduleDst."/General/";
+  				copy($file, $dst);
+  			}
+  	}
+}#fn
+
+sub GenCryptoTest()
+{
+
+	my @datList = 
+	(
+	["libssl", "ssltest", ".exe"],
+	["libcrypto", "crypto_test",".dll"],
+	["libcrypto", "openssl",".exe"],
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,$ext);
+	}
+	CopyCryptoDat();
+	CopyCryptoXmls();
+	
+			
+}#fn
+
+
+#ngi xml copy
+sub CopyNgiXmls()
+{
+	  my @list = (
+   				 ["*.xml", "ngi_sa_amrrecording", "/audio/lowlevelaudio/internal/sa_amrrecording/group/"],
+   				 ["*.xml", "ngi_sa_highlevelaudio", "/audio/highlevelaudio/internal/sa_highlevelaudio/group/"],
+  				 ["*.xml", "ngi_sa_audiomixing", "/audio/lowlevelaudio/internal/sa_audiomixing/group/"],
+  				 ["*.xml", "ngi_sa_audiorecording", "/audio/lowlevelaudio/internal/sa_audiorecording/group/"],
+  				 ["*.xml", "ngi_sa_clip", "/audio/lowlevelaudio/internal/sa_clip/group/"],
+  				 ["*.xml", "ngi_sa_lowlevelaudio", "/audio/lowlevelaudio/internal/sa_lowlevelaudio/group/"],
+  				 ["*.xml", "ngi_sa_stream", "/audio/lowlevelaudio/internal/sa_stream/group/"],
+  				 
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_antitearing/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_colortranslation/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_createfb565/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_createfb888/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_heapusage/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_multibb/group/"],
+  				 ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_performance/group/"],
+           ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_plswitching/group/"],
+           ["*.xml", "ngi_sa_backbuffer", "/graphics/backbuffer/internal/sa_bb_misc/group/"],
+  				 ["*.xml", "ngi_sa_bitmap", "/graphics/bitmap/internal/sa_bitmap/group/"],
+  				 ["*.xml", "ngi_sa_camera", "/graphics/camera/internal/sa_camera/group/"],
+  				 ["*.xml", "ngi_sa_images", "/graphics/images/internal/sa_images/group/"],
+  				 ["*.xml", "ngi_sa_display", "/graphics/display/internal/sa_display/group/"],
+  				 ["*.xml", "ngi_sa_lights", "/graphics/lights/internal/sa_lights/group/"],
+  				 ["*.xml", "ngi_sa_videoplayback", "/graphics/video/internal/sa_videoplayback/group/"],
+  				 
+  				 ["*.xml", "ngi_sa_input", "/input/input/internal/sa_input/group/"],
+  				 ["*.xml", "ngi_sa_textinput", "/input/textinput/internal/sa_textinput/group/"],
+  				 ["*.xml", "ngi_sa_devicecapabilities", "/system/devicecapabilities/internal/sa_devicecapabilities/group/"],
+  				 ["*.xml", "ngi_sa_devicestatus", "/system/devicestatus/internal/sa_phone/group/"],
+  				 ["*.xml", "ngi_sa_runtimetester", "/system/runtime/internal/sa_runtimetester/group/"],
+  				 ["*.xml", "ngi_sa_timing", "/timing/internal/sa_timing/group/"],
+	  				 );
+
+	
+	my $fname;
+	my $moduleDst;
+	my $location;
+	
+	#now copy the files appropriately
+	foreach my $ref(@list)
+	{
+			my @inarr = @$ref;
+			($fname, $moduleDst, $location) = @inarr;
+			my $src = GetPathPrefix().$location.$fname;
+			my $dst = $ATSRoot."\\components\\$moduleDst";
+			
+			#print "My src is $src\n";
+			#print "My dst is $dst\n";
+			  		
+  		my @filesFound = glob($src);
+  		if(scalar @filesFound == 0)
+  		{
+  			warn("warning: no xml file found to copy from $src!");
+  		}
+  		foreach my $file(@filesFound)
+  		{
+  			copy($file, $dst) || die("DIED: unable to copy $file to $dst");
+  		}
+  	}#ref
+    	
+}#fn
+
+
+sub GenNgiTest()
+{
+
+	my @datList = 
+	(
+	["ngi", "sa_amrrecording", ".dll"],
+	["ngi", "sa_highlevelaudio", ".dll"],
+	["ngi", "sa_audiomixing", ".dll"],
+	["ngi", "sa_audiorecording", ".dll"],
+	["ngi", "sa_clip", ".dll"],
+	["ngi", "sa_lowlevelaudio", ".dll"],
+	["ngi", "sa_stream", ".dll"],
+	["ngi", "sa_bitmap", ".dll"],
+	["ngi", "sa_camera", ".dll"],
+	["ngi", "sa_images", ".dll"],
+	["ngi", "sa_display", ".dll"],
+	["ngi", "sa_lights", ".dll"],	
+	["ngi", "sa_videoplayback", ".dll"],	
+	["ngi", "sa_input", ".dll"],	
+	["ngi", "sa_textinput", ".dll"],
+	["ngi", "sa_devicecapabilities", ".dll"],	
+	["ngi", "sa_devicestatus", ".dll"],	
+	["ngi", "sa_runtimetester", ".dll"],	
+	["ngi", "sa_timing", ".dll"],	
+		
+	);
+	
+	mkdir $ATSRoot;
+	mkdir $ATSRoot."\\components" || die ("DIED: unable to create component dir");
+
+		
+	my $lib;
+	my $module;
+	my $ext;
+	foreach my $ref(@datList)
+	{
+			my @inarr = @$ref;
+			($lib, $module,$ext) = @inarr;
+			@generatedModules = ($module);
+			GenDirs($lib);
+			CopyDlls($lib,$ext);
+	}
+	
+   @generatedModules =("sa_backbuffer");
+   GenDirs($lib);
+   @dllList = 
+   (
+   	"sa_bb_antitearing.dll",
+   	"sa_bb_colortranslation.dll",
+   	"sa_bb_createfb444.dll",
+   	"sa_bb_createfb565.dll",
+   	"sa_bb_createfb888.dll",
+   	"sa_bb_misc.dll",
+   	"sa_bb_heapusage.dll",
+   	"sa_bb_multibb.dll",
+   	"sa_bb_performance.dll",
+   	"sa_bb_plswitch.dll",
+   	"sa_bb_testenv.dll"
+   );
+   CopyMultiDlls("ngi");
+
+	
+ 	mkdir  $ATSRoot."\\components\\shared" || die("Wouldn't make shared folder in $ATSRoot\\components");
+  mkdir  $ATSRoot."\\components\\shared\\winscw_udeb" || die("Wouldn't make shared folder in $ATSRoot\\components\winscw_udeb");
+  mkdir  $ATSRoot."\\components\\shared\\armv5_urel" || die("Wouldn't make shared folder in $ATSRoot\\components\armv5_urel");
+			
+}#fn
+
+
+sub GetXmls()
+{
+  my @foundList;
+  my $libname = shift @_;
+	my @globlist = ();
+	if($target eq "winsspd" && $sdkversion ne "")
+	{
+		@globlist = ("winsspd_".$sdkversion);
+		#print "winsspd ".$sdkversion." selected\n";
+	}
+	elsif($target eq "winsspd")
+	{
+		@globlist = ("winsspd");
+		#print "winsspd selected\n";
+	}
+	elsif($sdkversion ne "")
+	{
+		@globlist = ($target,"hw_".$sdkversion);
+		#print "$target $sdkversion selected\n";
+	}
+	else
+	{
+		@globlist = ($target,"hw");
+		#print "$target $sdkversion selected\n";
+	}
+	
+	foreach my $module(@generatedModules)
+	{
+	  my $glob_to_use = "";
+	  my @fileList;
+	  foreach my $glob(@globlist)
+	  {
+			my $src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+			#print "Analysing $module and  $glob\n";
+			@fileList = glob($src);
+			foreach my $file(@fileList)
+			{
+			 my $pat = $glob."\_component\.xml";
+			 #print "[$file - $glob"."_component.xml"."]\n";
+				if($file =~ /$pat/)
+				{
+					$glob_to_use = $pat;
+					#print "[$file - $glob"."_component.xml"."]\n";
+					last
+				}
+			}#foreach FILE
+			if($glob_to_use ne "")
+			{
+				last;
+			}
+		}#finding glob	
+		if($glob_to_use ne "")
+		{
+				#print "Using the glob $glob_to_use\n";
+				my $src = $ATSRoot."/components/".$libname."_"."$module/*.xml";
+				@fileList = glob($src);
+				foreach my $file(@fileList)
+				{
+					#print "[$file - $glob_to_use]\n";
+					if($file =~ /$glob_to_use/)
+					{
+				  	$file =~ /.*components[\\\/](.*)/;
+				  	my $value = $1;
+				  	$value =~ s/\//\\/g;
+				  	#print "adding $value for $module with $glob_to_use\n";
+						unshift @foundList,$value;
+				  }#if
+				}#foreach
+		}#glob is present
+		else
+		{
+			warn("Unable to figure out glob to use for $module. Skipping...\n");
+		}
+	}#each module
+  return @foundList;
+ }#fn
+
+__END__
+:end
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/internal/group/bld.inf	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,37 @@
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Description:  This is a bld file to generate all the test applications
+*/
+
+
+#include "../../tsrc/group/bld.inf"
+
+#include "../../tsrc/Stdcpp_test/tstdcpp/multithread/manual/group/bld.inf"
+#include "../../tsrc/Stdcpp_test/tstdcpp/twsd_manual/group/bld.inf"
+#include "../../tsrc/Stdcpp_test/tstdcpp/ood_manual/group/bld.inf"
+#include "../../tsrc/Stdcpp_test/tstdcpp/io_manual/group/bld.inf"
+#include "../../tsrc/Stdcpp_test/stlport/manual/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/internal/install/libstdcpp_manual_tests.pkg	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,69 @@
+;
+;Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+;
+;Redistribution and use in source and binary forms, with or without 
+;modification, are permitted provided that the following conditions are met:
+;
+;* Redistributions of source code must retain the above copyright notice, this 
+;  list of conditions and the following disclaimer.
+;* Redistributions in binary form must reproduce the above copyright notice, 
+;  this list of conditions and the following disclaimer in the documentation 
+;  and/or other materials provided with the distribution.
+;* Neither the name of Nokia Corporation nor the names of its contributors 
+;  may be used to endorse or promote products derived from this software 
+;  without specific prior written permission.
+;
+;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+;AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+;IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+;DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+;FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+;DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+;SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+;CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+;OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+;OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+;
+; Description:  Package file for all stdcpp library testing
+;
+;
+
+;Languages
+&EN
+
+;Header
+#{"libstdcpp_manual_tests"},(0xE0207600),1,0,0
+
+;Supports S60 3.0
+[0x101F7961], 0, 0, 0, {"S60ProductID"}
+
+;Localised Vendor name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+;Files to install
+
+;**********************************libstdcpp manual tests***********************************
+;stlport_istmit
+"\epoc32\winscw\c\TestFramework\testframework.ini"-"!:\testframework\testframework.ini"
+"\epoc32\winscw\c\TestFramework\stlport_istmit.cfg"-"!:\testframework\stlport_istmit.cfg"
+"\epoc32\release\armv5\urel\stlport_istmit.dll"-"!:\sys\bin\stlport_istmit.dll"
+
+;multi_thread_manual
+"\epoc32\release\armv5\urel\multi_thread_manual.exe"-"!:\sys\bin\multi_thread_manual.exe"
+
+;io_manual
+"\epoc32\release\armv5\urel\manual_cin_char1.exe"-"!:\sys\bin\manual_cin_char1.exe"
+"\epoc32\release\armv5\urel\manual_cin_char.exe"-"!:\sys\bin\manual_cin_char.exe"
+"\epoc32\release\armv5\urel\manual_cin_float.exe"-"!:\sys\bin\manual_cin_float.exe"
+"\epoc32\release\armv5\urel\manual_cin_int.exe"-"!:\sys\bin\manual_cin_int.exe"
+"\epoc32\release\armv5\urel\manual_cin_long.exe"-"!:\sys\bin\manual_cin_long.exe"
+"\epoc32\release\armv5\urel\manual_cin_string.exe"-"!:\sys\bin\manual_cin_string.exe"
+"\epoc32\release\armv5\urel\manual_cout_char1.exe"-"!:\sys\bin\manual_cout_char1.exe"
+"\epoc32\release\armv5\urel\manual_cout_char.exe"-"!:\sys\bin\manual_cout_char.exe"
+"\epoc32\release\armv5\urel\manual_cout_float.exe"-"!:\sys\bin\manual_cout_float.exe"
+"\epoc32\release\armv5\urel\manual_cout_int.exe"-"!:\sys\bin\manual_cout_int.exe"
+"\epoc32\release\armv5\urel\manual_cout_long.exe"-"!:\sys\bin\manual_cout_long.exe"
+"\epoc32\release\armv5\urel\manual_cout_string.exe"-"!:\sys\bin\manual_cout_string.exe"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/internal/libxxx_atstemplatexxx_exemodule_blr_hw_component.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,21 @@
+<component>
+		<name>LibXXX_ATSTemplateXXX_blr_hw_component</name>
+		<testset>
+				<id>LibXXX_ATSTemplateXXX_blr</id>
+				<priority>High</priority>
+
+		<install type="binary">
+				<src>ATSTemplateXXX.exe</src>
+				<dst>c:\sys\bin\ATSTemplateXXX.exe</dst>
+		</install> 
+
+		
+		<execute>
+				<file>c:\sys\bin\ATSTemplateXXX.exe</file>
+        <result type="common">
+            <file>c:\LOGS\ATSTemplateXXX.xml</file>
+        </result>
+        <timeout>300</timeout>
+		</execute> 
+</testset>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/internal/libxxx_atstemplatexxx_exemodule_blr_winsspd_component.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,21 @@
+<component>
+		<name>LibXXX_ATSTemplateXXX_blr_winscw_component</name>
+		<testset>
+				<id>LibXXX_ATSTemplateXXX_blr</id>
+				<priority>High</priority>
+		
+		<install type="binary">
+				<src>ATSTemplateXXX.exe</src>
+				<dst>z:\sys\bin\ATSTemplateXXX.exe</dst>
+		</install> 
+
+		
+		<execute>
+				<file>z:\sys\bin\ATSTemplateXXX.exe</file>
+        <result type="common">
+            <file>c:\LOGS\ATSTemplateXXX.xml</file>
+        </result>
+        <timeout>300</timeout>
+		</execute> 
+	</testset>
+</component>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/internal/libxxx_atstemplatexxx_module_blr_hw_component.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,60 @@
+<!--
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<component>
+	<name>LibXXX_ATSTemplateXXX_module_blr_hw_urel_component</name>
+	<testset>
+		<id>ATSTemplateXXX_hw_urel</id>
+		<priority>High</priority>
+		
+		<stif>
+		
+		  
+			
+		
+			<install type="binary">
+				<src>ATSTemplateXXX.dll</src>
+				<dst>c:\sys\bin\ATSTemplateXXX.dll</dst>
+			</install>
+			<install type="data">
+				<src>ATSTemplateXXX.cfg</src>
+				<dst>c:\TestFramework\ATSTemplateXXX.cfg</dst>
+			</install>
+			
+			<install type="data">
+                		<src>Testframework.ini</src>
+                		<dst>c:\testframework\Testframework.ini</dst>
+            		</install>
+     			
+     			<engineini>c:\testframework\Testframework.ini</engineini>
+     		        <run-cases filter="*" timeout="300">
+     		        </run-cases>
+
+		</stif>		
+	</testset>
+
+</component>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/internal/libxxx_atstemplatexxx_module_blr_winsspd_component.xml	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,57 @@
+<!--
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+
+<component>
+	<name>LibXXX_ATSTemplateXXX_module_blr_winsspd_component</name>
+	<testset>
+		<id>LibXXX_ATSTemplateXXX_blr</id>
+		<priority>High</priority>
+		
+		<stif>
+			<install type="binary">
+				<src>ATSTemplateXXX.dll</src>
+				<dst>c:\sys\bin\ATSTemplateXXX.dll</dst>
+			</install>
+			<install type="data">
+				<src>ATSTemplateXXX.cfg</src>
+				<dst>c:\testFramework\ATSTemplateXXX.cfg</dst>
+			</install>
+			
+			<install type="data">
+                		<src>Testframework.ini</src>
+                		<dst>c:\testframework\Testframework.ini</dst>
+            		</install>
+     			
+     			<engineini>c:\testframework\Testframework.ini</engineini>
+     		        <run-cases filter="*" timeout="600">
+     		        </run-cases>
+
+		</stif>		
+	</testset>
+
+</component>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/internal/readme.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,50 @@
+/*
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this 
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation 
+  and/or other materials provided with the distribution.
+* Neither the name of Nokia Corporation nor the names of its contributors 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+This readme describes the way to run stdcpp test cases.
+
+When running the stdcpp test cases please take care of the following:
+
+Steps to be followed to test stdcpp module.
+
+1. The following are manual test cases:
+        a. testapps\stlport\manual\stlport_istmit- STIF based test.Prints instructions on screen. Please follow them. If nothing is printed it is considered as failed.
+        b. testapps\tstdcpp\io_manual - Each test cases in independent exe. Execute separately one by one .To execute the particular exe open "Eshell" and type the exe name and enter. Prints instructions on screen. Please follow them. If nothing is printed it is considered as failed.
+       c. testapps\tstdcpp\multithread\manual - One test case i.e. independent exe Execute it  independently in "Eshell"  by typing the exe name (multi_thread_manual.exe).Prints instructions on screen. Please follow them.Check for multi_thread_manual.xml file generated in \epoc32\winscw\c\LOGS\ for "PASS" or "FAIL".
+
+2. To generate the ATS test drops for complete stdcpp\internal\testapps first build stdcpp from stdcpp\group folder then build all the testapps from stdcpp\internal\testapps\group folder . After that use the batch file "genatsmodules.bat" placed in stlport\internal\. Follow the below mentioned steps.
+                1) Place attached files in stdcpp/internal folder
+                2) run following command 
+                        genatsmodules.bat stdcpp
+                        genatsmodules.bat session stdcpp scarfe
+                        genatsmodules.bat session stdcpp winsspd
+                        genatsmodules.bat session stdcpp zeus
+
+This will generate the "ATSINPUT" folder.       
+
+
+3. To run the test drop in ATS copy the path till "ATSINPUT" and mention the xml filename of worker on which you want to test the testdrop.
+                For example:To test on Winsspd " ..\ATSINPUT\stdcpp_winsspd_testsession.xml"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/internal/testframework.ini	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,71 @@
+#  ===========================================================================
+#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+#
+#Redistribution and use in source and binary forms, with or without 
+#modification, are permitted provided that the following conditions are met:
+#
+#* Redistributions of source code must retain the above copyright notice, this 
+#  list of conditions and the following disclaimer.
+#* Redistributions in binary form must reproduce the above copyright notice, 
+#  this list of conditions and the following disclaimer in the documentation 
+#  and/or other materials provided with the distribution.
+#* Neither the name of Nokia Corporation nor the names of its contributors 
+#  may be used to endorse or promote products derived from this software 
+#  without specific prior written permission.
+#
+#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+#AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+#IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+#DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+#FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+#DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+#SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+#OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+#OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# ============================================================================
+#
+# This is STIFTestFramework initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+[Engine_Defaults]
+
+TestReportMode= FullReport		# Possible values are: 'Empty', 'Summary', 'Environment',
+                                                               'TestCases' or 'FullReport'
+
+CreateTestReport= YES			# Possible values: YES or NO
+
+TestReportFilePath= C:\LOGS\TestFramework\
+TestReportFileName= TestReport
+
+TestReportFormat= TXT			# Possible values: TXT or HTML
+TestReportOutput= FILE			# Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE	# Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+
+[New_Module]
+ModuleName= testscripter
+TestCaseFile= C:\testframework\ATSTemplateXXX.cfg
+
+
+[End_Module]
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+[Logger_Defaults]
+
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/BC/apps/tiostreams/data/docs/basicfilebuf.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Hello World
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/BC/apps/tiostreams/data/docs/basicistream.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,3 @@
+He lifted his head and pondered.
+3.14159
+3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/BC/apps/tiostreams/data/docs/example.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Writing this to a file.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/BC/apps/tiostreams/data/docs/fpos_state.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+fpos_state testcase
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/BC/apps/tiostreams/data/docs/istream.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Shaheen
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/BC/apps/tiostreams/data/docs/ostream.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+osireK
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/BC/apps/tiostreams/data/docs/streambuf.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Sample sentencea
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/BC/apps/tiostreams/data/docs/wistream.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Sample sentence
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/BC/apps/tiostreams/data/docs/wostream.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+woitrK
\ No newline at end of file
Binary file stdcpp/tsrc/BC/apps/tiostreams/data/docs/wstreambuf.txt has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/basicistream.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,3 @@
+He lifted his head and pondered.
+3.1416
+3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/example.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Writing this to a file.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/fpos_state.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+fpos_state testcase
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/istream.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Shaheen
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/wistream.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Sample sentence
\ No newline at end of file
Binary file stdcpp/tsrc/Stdcpp_test/bcdrivers/docs/wstreambuf.txt has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/doc/fstream1_input.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Hello World!!
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/doc/infile_auto.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Hello, this is a test file for automated testing of multi threaded application using stdcpp.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/doc/infile_manual.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,1 @@
+Hello, this is a test file for manually testing multi threaded application using stdcpp.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/doc/nextperm1_good.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,10 @@
+0 1 2 
+0 2 1 
+1 0 2 
+1 2 0 
+2 0 1 
+2 1 0 
+0 1 2 
+0 2 1 
+1 0 2 
+1 2 0 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/doc/nextperm2_good.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,10 @@
+ABC
+ACB
+BAC
+BCA
+CAB
+CBA
+ABC
+ACB
+BAC
+BCA
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/doc/ostmit_good.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,2 @@
+hello
+1524
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdcpp/tsrc/Stdcpp_test/doc/seek.txt	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,2 @@
+Hello this is a test file for seek 
+Input is given .
\ No newline at end of file
--- a/stdlibs/install/openc_liblogger_stub.pkg	Thu Oct 14 14:15:50 2010 +0530
+++ b/stdlibs/install/openc_liblogger_stub.pkg	Tue Nov 02 19:23:22 2010 +0530
@@ -17,7 +17,7 @@
 &EN
 
 ;Header
-#{"Open C LIBLOGGER"},(0x200110CD),1,7,4
+#{"Open C LIBLOGGER"},(0x200110CD),1,7,5
 
 ;Localised Vendor name
 %{"Nokia"}
Binary file stdlibs/install/openc_liblogger_stub.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdlibs/libcrypt/doc/crypt.3	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,174 @@
+.\" Portions Copyright © 2005-2006 Nokia. All rights reserved.
+.\" FreeSec: libcrypt for NetBSD
+.\"
+.\" Copyright (c) 1994 David Burren
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 4. Neither the name of the author nor the names of other contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD: src/lib/libcrypt/crypt.3,v 1.31 2005/02/09 18:03:14 ru Exp $
+.\"
+.Dd January 19, 1997
+.Dt CRYPT 3
+.Os
+.Sh NAME
+.Nm crypt
+.Nd password and data encryption
+.Sh LIBRARY
+.Lb libcrypt
+.Sh SYNOPSIS
+.In unistd.h
+.Ft char *
+.Fn crypt "const char *key" "const char *salt"
+.Sh RETURN VALUES
+The
+.Fn crypt
+function returns a pointer to the encrypted value on success, and NULL on
+failure.
+.Pp
+.Sh DESCRIPTION
+The
+.Fn crypt
+function performs password hashing with additional code added to
+thwart dictionary attack.
+Different algorithms can be used in the hash.
+.\"
+.\" NOTICE:
+.\" If you add more algorithms, make sure to update this list
+.\" and the default used for the Traditional format, below.
+.\"
+Currently the implementation supports
+.Tn Data Encryption Standard (DES) 
+and
+.Tn MD5
+hash algorithms. However, the actual algorithm used during the call to
+.Fn crypt
+depends on the 
+.Fn salt
+parameter.
+.Pp
+The first argument to
+.Fn crypt 
+is the data to hash (usually a password), in a
+.Dv NULL Ns -terminated
+string.
+The second is the salt, in one of two forms:
+.Pp
+.Bl -tag -width Traditional -compact -offset indent
+.It Modular
+If 
+.Fn salt
+begins with the string
+.Dq $digit$
+then the Modular Crypt Format is used.
+.It Traditional
+.Fn salt
+parameter is a two-character string chosen from the set [a-zA-Z0-9./].
+.El
+.Pp
+.Ss "Modular" crypt:
+.Pp
+If
+.Fn salt
+begins with the string
+.Fa $digit$
+then Modular Crypt Format is used.
+The
+.Fa digit
+identifies the algorithm used for encryption. Currently MD5 hash is implemented. So 
+.Fa digit
+will be 1 and hence the second argument to this function will be a string beginning with
+.Dq $1$
+followed by at most 8 characters (actual salt to be used in the encryption), and optionally
+terminated by 
+.Dq $
+.
+If the optional 
+.Dq $
+is included then the characters following the dollar sign are ignored. 
+The output of this operation will be a string
+containing 34 characters in the format
+.Dq $1$<string>$
+.Pp
+.Dq <string>
+consists of the actual salt (the at most 8 characters string following 
+.Dq $1$
+in the 
+.Fn salt),
+followed by 22 bytes of data from the set [a-zA-Z0-9./].
+.El
+.Pp
+Other crypt formats may be easily added.
+An example salt would be:
+.Bl -tag -offset indent
+.It Cm "$4$thesalt$rest"
+.El
+.Pp
+.Ss "Traditional" crypt:
+.Pp
+It is based on Data Encryption Standard algorithm (DES).
+.Fn salt
+is a two-character string chosen from the set [a-zA-Z0-9./]. In order to thwart the 
+Dictionary Attack, the two-character 
+.Fn salt
+is used to perturb the algorithm in 4096 ways.
+.Pp
+The 56-bit key for the DES algorithm is obtained by taking the lowest 7 bits of each 
+of the first eight characters of the 
+.Fn key.
+The key thus obtained is used to encrypt a constant string (a string containing all zeroes).
+.Pp
+The return value of this function is a pointer to a static buffer. So the function
+is not reentrant.
+
+.Sh Example
+.Bd -literal -offset indent
+#include <stdlib.h>
+#include <unistd.h>
+
+void crypt_user()
+{
+	char *p = NULL,
+	     *q = NULL;
+
+	/* Invoke crypt() to perform password hashing */
+	p = crypt("password", "S1");	/* p contains the hash of "password"
+						 * when "S1" is used as the key. DES
+						 * encryption algoritm is used in this
+						 * scenario
+						 */
+
+	q = crypt("password", "$1$Salt1");
+						/* q contains the hash of "password"
+						 * as computed by the MD5 hash algorithm
+						 */
+}
+.Ed
+.Sh SEE ALSO
+.Sh BUGS
+Output of 
+.Fn crypt
+differs from that of Linux's when NULL passed as 
+.Fn salt .
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdlibs/libcrypt/doc/encrypt.3	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,158 @@
+.\" Portions Copyright © 2005-2006 Nokia. All rights reserved.
+.\" FreeSec: libcrypt for NetBSD
+.\"
+.\" Copyright (c) 1994 David Burren
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 4. Neither the name of the author nor the names of other contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD: src/lib/libcrypt/crypt.3,v 1.31 2005/02/09 18:03:14 ru Exp $
+.\"
+.Dd January 19, 1997
+.Dt ENCRYPT 3
+.Os
+.Sh NAME
+.Nm encrypt, setkey
+.Nd encrypt 64-bit messages
+.Sh LIBRARY
+.Lb libcrypt
+.Sh SYNOPSIS
+.In unistd.h
+.Ft void
+.Fn encrypt "char block[64]" "int edflag"
+.In stdlib.h
+.Ft void
+.Fn setkey "const char *key"
+.Sh RETURN VALUES
+The
+.Fn encrypt 
+and 
+.Fn setkey
+functions do not return any value.
+.Sh DESCRIPTION
+.Fn encrypt()
+function encrypts and decrypts 64-bit messages. The algorithm used to perform 
+encryption/decryption is Data Encryption Standard (DES).
+.Pp
+.Fn setkey()
+is invoked to set the key for the DES machine.
+.Fn setkey()'
+s
+.Fn key
+parameter is an array of 64 bytes, and the numerical value of each byte in this
+array is either 0 or 1. The 56-bit key for the DES algorithm is computed from the
+.Fn key
+parameter.
+.Pp
+.Fn encrypt
+function either encrypts or decrypts the data block. The exact operation depends 
+on the value of 
+.Fn edflag
+parameter. 
+.Fn block
+is encrypted if 
+.Fn edflag
+parameter is 0, and decrypted if 1 is being passed as the value of 
+.Fn edflag 
+parameter. 
+.Fn block
+is an array of 64 bytes, wherein the numerical value of each byte is either 0 or 1.
+Like the 
+.Fn setkey'
+s
+.Fn key 
+parameter, 
+.Fn block 
+is a bit vector representation of the actual value that is encoded. It is modified in place
+to return the result.
+.Pp
+.Fn encrypt
+and
+.Fn setkey
+are not reentrant as the key is stored statically.
+
+.Sh ERRORS
+.Fn errno
+should be set to zero prior to calling any of the above functions. The behavior of
+.Fn encrypt
+will be undefined if size of
+.Fn block
+argument is not 64.
+.Sh EXAMPLE
+.Bd -literal -offset indent
+#include <stdlib.h>
+#include <unistd.h>
+
+void encrypt_user()
+{
+	/* bit vector containing the key */
+	char key[64] = 
+	{
+			0, 0, 0, 0, 0, 0, 0, 1,
+			0, 0, 1, 1, 0, 0, 0, 1,
+			1, 1, 0, 1, 1, 0, 0, 1,
+			0, 1, 1, 0, 0, 0, 0, 1,
+			1, 0, 0, 1, 1, 1, 0, 1,
+			1, 1, 0, 0, 0, 0, 0, 1,
+			0, 0, 1, 1, 0, 1, 1, 1,
+			0, 1, 1, 0, 1, 1, 1, 0
+	};
+
+	/* bit vector containing the data block to be encrypted */
+	char block[64] = 
+	{
+		0, 1, 0, 1, 1, 1, 0, 0,
+		1, 1, 0, 1, 0, 1, 0, 1,
+		0, 1, 0, 0, 1, 1, 0, 0,
+		1, 0, 1, 0, 1, 0, 0, 0,
+		0, 0, 1, 1, 1, 1, 0, 1,
+		1, 1, 1, 0, 1, 1, 1, 1,
+		0, 1, 0, 1, 0, 1, 1, 1,
+		1, 1, 0, 1, 1, 0, 1, 0
+	};
+
+	setkey(key);		/* Set the key for DES encryption */
+	
+	/* Perform encryption/decryption of the message block */
+	encrypt(block, 0);	/* Encryption. The input block is modified in place
+					 * to return the output to the user
+					 */
+
+	encrypt(block, 1);	/* Decryption. The input block is modified in place
+					 * to return the result of the decryption operation
+					 */
+}
+.Ed
+.Sh SEE ALSO
+.Sh HISTORY
+.Sh BUGS
+If 
+.Fn encrypt
+is called without priorly invoking 
+.Fn setkey
+the implementation assumes a bit vector consisting of all zeroes as the key
+for the DES algorithm. In this scenaro the outcome of 
+.Fn encrypt
+function is different from that of Linux's.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stdlibs/libcrypt/doc/setkey.3	Tue Nov 02 19:23:22 2010 +0530
@@ -0,0 +1,693 @@
+.\"	$KAME: setkey.8,v 1.89 2003/09/07 22:17:41 itojun Exp $
+.\"
+.\" Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the project nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD: src/usr.sbin/setkey/setkey.8,v 1.34 2005/02/09 18:04:42 ru Exp $
+.\"
+.Dd November 20, 2000
+.Dt SETKEY 8
+.Os
+.\"
+.Sh NAME
+.Nm setkey
+.Nd "manually manipulate the IPsec SA/SP database"
+.\"
+.Sh SYNOPSIS
+.Nm
+.Op Fl v
+.Fl c
+.Nm
+.Op Fl v
+.Fl f Ar filename
+.Nm
+.Op Fl aPlv
+.Fl D
+.Nm
+.Op Fl Pv
+.Fl F
+.Nm
+.Op Fl h
+.Fl x
+.\"
+.Sh DESCRIPTION
+The
+.Nm
+utility adds, updates, dumps, or flushes
+Security Association Database (SAD) entries
+as well as Security Policy Database (SPD) entries in the kernel.
+.Pp
+The
+.Nm
+utility takes a series of operations from the standard input
+(if invoked with
+.Fl c )
+or the file named
+.Ar filename
+(if invoked with
+.Fl f Ar filename ) .
+.Bl -tag -width indent
+.It Fl D
+Dump the SAD entries.
+If with
+.Fl P ,
+the SPD entries are dumped.
+.It Fl F
+Flush the SAD entries.
+If with
+.Fl P ,
+the SPD entries are flushed.
+.It Fl a
+The
+.Nm
+utility
+usually does not display dead SAD entries with
+.Fl D .
+If with
+.Fl a ,
+the dead SAD entries will be displayed as well.
+A dead SAD entry means that
+it has been expired but remains in the system
+because it is referenced by some SPD entries.
+.It Fl h
+Add hexadecimal dump on
+.Fl x
+mode.
+.It Fl l
+Loop forever with short output on
+.Fl D .
+.It Fl v
+Be verbose.
+The program will dump messages exchanged on
+.Dv PF_KEY
+socket, including messages sent from other processes to the kernel.
+.It Fl x
+Loop forever and dump all the messages transmitted to
+.Dv PF_KEY
+socket.
+.Fl xx
+makes each timestamps unformatted.
+.El
+.Ss Configuration syntax
+With
+.Fl c
+or
+.Fl f
+on the command line,
+.Nm
+accepts the following configuration syntax.
+Lines starting with hash signs
+.Pq Ql #
+are treated as comment lines.
+.Bl -tag -width indent
+.It Xo
+.Li add
+.Op Fl 46n
+.Ar src Ar dst Ar protocol Ar spi
+.Op Ar extensions
+.Ar algorithm ...
+.Li ;
+.Xc
+Add an SAD entry.
+.Li add
+can fail with multiple reasons,
+including when the key length does not match the specified algorithm.
+.\"
+.It Xo
+.Li get
+.Op Fl 46n
+.Ar src Ar dst Ar protocol Ar spi
+.Li ;
+.Xc
+Show an SAD entry.
+.\"
+.It Xo
+.Li delete
+.Op Fl 46n
+.Ar src Ar dst Ar protocol Ar spi
+.Li ;
+.Xc
+Remove an SAD entry.
+.\"
+.It Xo
+.Li deleteall
+.Op Fl 46n
+.Ar src Ar dst Ar protocol
+.Li ;
+.Xc
+Remove all SAD entries that match the specification.
+.\"
+.It Xo
+.Li flush
+.Op Ar protocol
+.Li ;
+.Xc
+Clear all SAD entries matched by the options.
+.Fl F
+on the command line achieves the same functionality.
+.\"
+.It Xo
+.Li dump
+.Op Ar protocol
+.Li ;
+.Xc
+Dumps all SAD entries matched by the options.
+.Fl D
+on the command line achieves the same functionality.
+.\"
+.It Xo
+.Li spdadd
+.Op Fl 46n
+.Ar src_range Ar dst_range Ar upperspec Ar policy
+.Li ;
+.Xc
+Add an SPD entry.
+.\"
+.It Xo
+.Li spddelete
+.Op Fl 46n
+.Ar src_range Ar dst_range Ar upperspec Fl P Ar direction
+.Li ;
+.Xc
+Delete an SPD entry.
+.\"
+.It Xo
+.Li spdflush
+.Li ;
+.Xc
+Clear all SPD entries.
+.Fl FP
+on the command line achieves the same functionality.
+.\"
+.It Xo
+.Li spddump
+.Li ;
+.Xc
+Dumps all SPD entries.
+.Fl DP
+on the command line achieves the same functionality.
+.El
+.\"
+.Pp
+Meta-arguments are as follows:
+.Pp
+.Bl -tag -compact -width indent
+.It Ar src
+.It Ar dst
+Source/destination of the secure communication is specified as
+IPv4/v6 address.
+The
+.Nm
+utility
+can resolve a FQDN into numeric addresses.
+If the FQDN resolves into multiple addresses,
+.Nm
+will install multiple SAD/SPD entries into the kernel
+by trying all possible combinations.
+.Fl 4 ,
+.Fl 6
+and
+.Fl n
+restricts the address resolution of FQDN in certain ways.
+.Fl 4
+and
+.Fl 6
+restrict results into IPv4/v6 addresses only, respectively.
+.Fl n
+avoids FQDN resolution and requires addresses to be numeric addresses.
+.\"
+.Pp
+.It Ar protocol
+.Ar protocol
+is one of following:
+.Bl -tag -width Fl -compact
+.It Li esp
+ESP based on rfc2406
+.It Li esp-old
+ESP based on rfc1827
+.It Li ah
+AH based on rfc2402
+.It Li ah-old
+AH based on rfc1826
+.It Li ipcomp
+IPComp
+.It Li tcp
+TCP-MD5 based on rfc2385
+.El
+.\"
+.Pp
+.It Ar spi
+Security Parameter Index
+(SPI)
+for the SAD and the SPD.
+.Ar spi
+must be a decimal number, or a hexadecimal number with
+.Ql 0x
+prefix.
+SPI values between 0 and 255 are reserved for future use by IANA
+and they cannot be used.
+TCP-MD5 associations must use 0x1000 and therefore only have per-host
+granularity at this time.
+.\"
+.Pp
+.It Ar extensions
+take some of the following:
+.Bl -tag -width Fl -compact
+.\"
+.It Fl m Ar mode
+Specify a security protocol mode for use.
+.Ar mode
+is one of following:
+.Li transport , tunnel
+or
+.Li any .
+The default value is
+.Li any .
+.\"
+.It Fl r Ar size
+Specify window size of bytes for replay prevention.
+.Ar size
+must be decimal number in 32-bit word.
+If
+.Ar size
+is zero or not specified, replay check does not take place.
+.\"
+.It Fl u Ar id
+Specify the identifier of the policy entry in SPD.
+See
+.Ar policy .
+.\"
+.It Fl f Ar pad_option
+defines the content of the ESP padding.
+.Ar pad_option
+is one of following:
+.Bl -tag -width random-pad -compact
+.It Li zero-pad
+All of the padding are zero.
+.It Li random-pad
+A series of randomized values are set.
+.It Li seq-pad
+A series of sequential increasing numbers started from 1 are set.
+.El
+.\"
+.It Fl f Li nocyclic-seq
+Do not allow cyclic sequence number.
+.\"
+.It Fl lh Ar time
+.It Fl ls Ar time
+Specify hard/soft life time duration of the SA.
+.El
+.\"
+.Pp
+.It Ar algorithm
+.Bl -tag -width Fl -compact
+.It Fl E Ar ealgo Ar key
+Specify an encryption algorithm
+.Ar ealgo
+for ESP.
+.It Xo
+.Fl E Ar ealgo Ar key
+.Fl A Ar aalgo Ar key
+.Xc
+Specify a encryption algorithm
+.Ar ealgo ,
+as well as a payload authentication algorithm
+.Ar aalgo ,
+for ESP.
+.It Fl A Ar aalgo Ar key
+Specify an authentication algorithm for AH.
+.It Fl C Ar calgo Op Fl R
+Specify a compression algorithm for IPComp.
+If
+.Fl R
+is specified,
+.Ar spi
+field value will be used as the IPComp CPI
+(compression parameter index)
+on wire as is.
+If
+.Fl R
+is not specified,
+the kernel will use well-known CPI on wire, and
+.Ar spi
+field will be used only as an index for kernel internal usage.
+.El
+.Pp
+.Ar key
+must be double-quoted character string, or a series of hexadecimal digits
+preceded by
+.Ql 0x .
+.Pp
+Possible values for
+.Ar ealgo ,
+.Ar aalgo
+and
+.Ar calgo
+are specified in separate section.
+.\"
+.Pp
+.It Ar src_range
+.It Ar dst_range
+These are selections of the secure communication specified as
+IPv4/v6 address or IPv4/v6 address range, and it may accompany
+TCP/UDP port specification.
+This takes the following form:
+.Bd -unfilled
+.Ar address
+.Ar address/prefixlen
+.Ar address[port]
+.Ar address/prefixlen[port]
+.Ed
+.Pp
+.Ar prefixlen
+and
+.Ar port
+must be decimal number.
+The square bracket around
+.Ar port
+is really necessary.
+They are not manpage metacharacters.
+For FQDN resolution, the rules applicable to
+.Ar src
+and
+.Ar dst
+apply here as well.
+.\"
+.Pp
+.It Ar upperspec
+Upper-layer protocol to be used.
+Use one of the words in
+.Pa /etc/protocols
+as
+.Ar upperspec .
+Or
+.Li icmp6 ,
+.Li ip4 ,
+and
+.Li any
+can be specified.
+.Li any
+stands for
+.Dq any protocol .
+Also, use the protocol number.
+Specify a type and/or a code of ICMPv6 when
+upper-layer protocol is ICMPv6.
+The specification can be placed after
+.Li icmp6 .
+A type is separated with a code by single comma.
+A code must be specified anytime.
+When a zero is specified, the kernel deals with it as a wildcard.
+Note that the kernel cannot distinguish a wildcard from that a type
+of ICMPv6 is zero.
+For example, the following means the policy does not require IPsec
+for any inbound Neighbor Solicitation:
+.Pp
+.Dl "spdadd ::/0 ::/0 icmp6 135,0 -P in none;"
+.Pp
+NOTE:
+.Ar upperspec
+does not work against forwarding case at this moment,
+as it requires extra reassembly at forwarding node
+(not implemented at this moment).
+There are many protocols in
+.Pa /etc/protocols ,
+but protocols except of TCP, UDP and ICMP may not be suitable to use with IPsec.
+be cautious when using the protocols.
+.\"
+.Pp
+.It Ar policy
+.Ar policy
+is the one of the following three formats:
+.Bd -ragged -offset indent
+.It Fl P Ar direction Li discard
+.It Fl P Ar direction Li none
+.It Xo Fl P Ar direction Li ipsec
+.Ar protocol/mode/src-dst/level Op ...
+.Xc
+.Ed
+.Pp
+Specify the direction of its policy as
+.Ar direction .
+Either
+.Li out
+or
+.Li in
+are used.
+.Li discard
+means the packet matching indexes will be discarded.
+.Li none
+means that IPsec operation will not take place onto the packet.
+.Li ipsec
+means that IPsec operation will take place onto the packet.
+The part of
+.Ar protocol/mode/src-dst/level
+specifies the rule how to process the packet.
+Either
+.Li ah ,
+.Li esp
+or
+.Li ipcomp
+is to be set as
+.Ar protocol .
+.Ar mode
+is either
+.Li transport
+or
+.Li tunnel .
+If
+.Ar mode
+is
+.Li tunnel ,
+specify the end-points addresses of the SA as
+.Ar src
+and
+.Ar dst
+with
+.Sq -
+between these addresses which is used to specify the SA to use.
+If
+.Ar mode
+is
+.Li transport ,
+both
+.Ar src
+and
+.Ar dst
+can be omitted.
+.Ar level
+is to be one of the following:
+.Li default , use , require
+or
+.Li unique .
+If the SA is not available in every level, the kernel will request
+getting SA to the key exchange daemon.
+.Li default
+means the kernel consults to the system wide default against the specified protocol 
+, for example,
+.Li esp_trans_deflev
+sysctl variable, when the kernel processes the packet.
+.Li use
+means that the kernel use a SA if it is available,
+otherwise the kernel keeps normal operation.
+.Li require
+means SA is required whenever the kernel sends a packet matched
+with the policy.
+.Li unique
+is the same to require.
+In addition, it allows the policy to bind with the unique out-bound SA.
+Specify the policy level 
+.Li unique ,
+.Xr racoon 8
+will configure the SA for the policy.
+If the SA is configured by manual keying for that policy,
+put the decimal number as the policy identifier after
+.Li unique
+separated by colon
+.Ql :\&
+like the following;
+.Li unique:number .
+In order to bind this policy to the SA,
+.Li number
+must be between 1 and 32767.
+It corresponds to
+.Ar extensions Fl u
+of the manual SA configuration.
+In order to use the SA bundle, multiple rules can be defined.
+For example, if an IP header was followed by AH header followed by ESP header
+followed by an upper layer protocol header, the rule
+would be:
+.Dl esp/transport//require ah/transport//require ;
+The rule order is very important.
+.Pp
+Note that
+.Dq Li discard
+and
+.Dq Li none
+are not in the syntax described in
+.Xr ipsec_set_policy 3 .
+There are little differences in the syntax.
+See
+.Xr ipsec_set_policy 3
+for detail.
+.Pp
+.El
+.Pp
+.\"
+.Sh ALGORITHMS
+The following list shows the supported algorithms.
+.Sy protocol
+and
+.Sy algorithm
+are almost orthogonal.
+Followings are the list of authentication algorithms that can be used as
+.Ar aalgo
+in
+.Fl A Ar aalgo
+of
+.Ar protocol
+parameter:
+.Pp
+.Bd -literal -offset indent
+algorithm	keylen (bits)	comment
+hmac-md5	128		ah: rfc2403
+		128		ah-old: rfc2085
+hmac-sha1	160		ah: rfc2404
+		160		ah-old: 128bit ICV (no document)
+keyed-md5	128		ah: 96bit ICV (no document)
+		128		ah-old: rfc1828
+keyed-sha1	160		ah: 96bit ICV (no document)
+		160		ah-old: 128bit ICV (no document)
+null		0 to 2048	for debugging
+hmac-sha2-256	256		ah: 96bit ICV
+				(draft-ietf-ipsec-ciph-sha-256-00)
+		256		ah-old: 128bit ICV (no document)
+hmac-sha2-384	384		ah: 96bit ICV (no document)
+		384		ah-old: 128bit ICV (no document)
+hmac-sha2-512	512		ah: 96bit ICV (no document)
+		512		ah-old: 128bit ICV (no document)
+hmac-ripemd160	160		ah: 96bit ICV (RFC2857)
+				ah-old: 128bit ICV (no document)
+aes-xcbc-mac	128		ah: 96bit ICV (RFC3566)
+		128		ah-old: 128bit ICV (no document)
+tcp-md5		8 to 640	tcp: rfc2385
+.Ed
+.Pp
+Followings are the list of encryption algorithms that can be used as
+.Ar ealgo
+in
+.Fl E Ar ealgo
+of
+.Ar protocol
+parameter:
+.Pp
+.Bd -literal -offset indent
+algorithm	keylen (bits)	comment
+des-cbc		64		esp-old: rfc1829, esp: rfc2405
+3des-cbc	192		rfc2451
+null		0 to 2048	rfc2410
+blowfish-cbc	40 to 448	rfc2451
+cast128-cbc	40 to 128	rfc2451
+des-deriv	64		ipsec-ciph-des-derived-01
+3des-deriv	192		no document
+rijndael-cbc	128/192/256	rfc3602
+aes-ctr		160/224/288	draft-ietf-ipsec-ciph-aes-ctr-03
+.Ed
+.Pp
+Note that the first 128 bits of a key for
+.Li aes-ctr
+will be used as AES key, and remaining 32 bits will be used as nonce.
+.Pp
+Followings are the list of compression algorithms that can be used as
+.Ar calgo
+in
+.Fl C Ar calgo
+of
+.Ar protocol
+parameter:
+.Pp
+.Bd -literal -offset indent
+algorithm	comment
+deflate		rfc2394
+.Ed
+.\"
+.Sh EXIT STATUS
+.Ex -std
+.\"
+.Sh EXAMPLES
+.Bd -literal -offset
+add 3ffe:501:4819::1 3ffe:501:481d::1 esp 123457
+	-E des-cbc 0x3ffe05014819ffff ;
+
+add -6 myhost.example.com yourhost.example.com ah 123456
+	-A hmac-sha1 "AH SA configuration!" ;
+
+add 10.0.11.41 10.0.11.33 esp 0x10001
+	-E des-cbc 0x3ffe05014819ffff
+	-A hmac-md5 "authentication!!" ;
+
+get 3ffe:501:4819::1 3ffe:501:481d::1 ah 123456 ;
+
+flush ;
+
+dump esp ;
+
+spdadd 10.0.11.41/32[21] 10.0.11.33/32[any] any
+	-P out ipsec esp/tunnel/192.168.0.1-192.168.1.2/require ;
+
+add 10.1.10.34 10.1.10.36 tcp 0x1000 -A tcp-md5 "TCP-MD5 BGP secret" ;
+
+.Ed
+.\"
+.Sh SEE ALSO
+.Xr ipsec_set_policy 3 ,
+.Xr racoon 8 ,
+.Xr sysctl 8
+.Rs
+.%T "Changed manual key configuration for IPsec"
+.%O "http://www.kame.net/newsletter/19991007/"
+.%D "October 1999"
+.Re
+.\"
+.Sh HISTORY
+The
+.Nm
+utility first appeared in WIDE Hydrangea IPv6 protocol stack kit.
+The utility was completely re-designed in June 1998.
+.\"
+.Sh BUGS
+The
+.Nm
+utility
+should report and handle syntax errors better.
+.Pp
+For IPsec gateway configuration,
+.Ar src_range
+and
+.Ar dst_range
+with TCP/UDP port number do not work, as the gateway does not reassemble
+packets
+(cannot inspect upper-layer headers).
Binary file utilitylibraries/libutils/doc/s60LibUtilitydoc.chm has changed