mmtestenv/mmtesttools/Build/winsMmBuild.pl
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmtestenv/mmtesttools/Build/winsMmBuild.pl	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,338 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+# Full build equiv that builds WINSCW targets only
+
+use strict;
+
+my $ARGC = @ARGV;
+if  (($ARGV[0] eq "-h") ||
+     ($ARGV[0] eq "--h") ||
+     ($ARGV[0] eq "-help") ||
+     ($ARGV[0] eq "--help") ||
+     ($ARGV[0] eq "help")
+	 )
+	{
+	print "\n";
+	print "winsMmBuild - Builds for WINSCW only\n\n";
+	print "Syntax :	winsMmBuild [-x] [-k] [-c] [-dir=directory] [-a3flog]\n";
+	print "-cw		WINSCW build - NOTE: does nothing as this is default\n";
+	print "-x		include optional elements\n";
+	print "-f		build A3F DevSound instead of DevSound\n";
+	print "-l		build Legacy DevSound instead of A3F (ignored if -f given)\n";
+	print "-k		keep going\n";
+	print "-c		clean build\n";
+	print "-dir		location of TestTools\\Build directory\n";
+	print "-a3flog		enables A3F logging\n";
+	print "-iclTestdata	builds ICL test data\n";
+	exit 0;
+	}
+
+
+use Getopt::Long;
+my %optctl = ();
+keys(%optctl)=5;
+unless (GetOptions (\%optctl, "x", "f", "l", "c", "cw" , "k", "dir=s", "a3flog","iclTestdata")) 
+  {exit 1;}
+
+my $ccover_target = "winscw";
+
+	my $targetToolsDir = "..\\..\\..\\..\\..\\TargetTools\\Build";
+	my $testToolsDir = "..\\..\\mmtesttools\\Build";
+	my $targetToolsExists = 0;
+	if (-d $targetToolsDir)
+		{
+		$targetToolsExists = 1;
+		print "TargetTools directory exists: $targetToolsDir\n"
+		}
+
+# main 
+	{
+	
+	##################  A3F Section #######################################
+	my $a3f_define = 'SYMBIAN_MULTIMEDIA_A3FDEVSOUND';
+	my $search_item = '#define\s+'.$a3f_define;  # looking for this
+	my $hrh_filename = "$ENV{EPOCROOT}epoc32\\include\\variant\\Symbian_OS.hrh"; # assign hrh file and location
+	my $found_search_item = 0; #false
+	my $iclTest = " --iclTestdata " if ($optctl{"iclTestdata"});
+	# print "HRH filename is : $hrh_filename\n";
+	
+ 	if ($optctl{"f"})
+	 	{
+	 	# This displays the content of the hash table
+	 	# use it to confirm the "f" entry has been added.
+	 	#
+	 	#  my $key;  # holds the command line options
+	 	#  my $value; # redundant for hash entry as only a key is used.
+		#  while (($key, $value) = each(%optctl))
+		#  	{
+		#   	print $key.", ".$value."\n";
+		#  	}
+
+		# opens up the hrh file for reading
+		open(FILEHANDLE, "<", $hrh_filename) or die "Unable to open $hrh_filename for reading. $!\n";
+
+		my @file_data=<FILEHANDLE>; # read all file data into array
+
+		#check the contents of the array (i.e. the contents of the file)
+		for(@file_data)
+			{
+			# print "$_\n";  #display the line in the file
+			
+			# search line for string of interest: =~ is equals, !~ is not equal
+			if(($_ =~ m/$search_item/i))
+				{
+				$found_search_item = 1;  #found the macro 
+				# print "Search item found: $_\n";    #display the line containing the search item
+				}
+			else
+				{
+				# Search item not found, do nothing
+				}
+			} #for loop 
+
+		close(FILEHANDLE) or die "Can't close file $hrh_filename.\n";  # readonly file
+		
+		if(!$found_search_item)  #search item has not been found
+			{
+			# print warning
+			print "Modifying file $hrh_filename to enable A3F as -f flag has been used.\n";
+			
+			# open file for append
+			open(FILEHANDLE, ">>", $hrh_filename) or die "Unable to open $hrh_filename for appending. $!\n";
+			print FILEHANDLE "\n#define $a3f_define\n"; # append macro to the file
+
+			close(FILEHANDLE) or die "Can't close appended file $hrh_filename.\n";  # readonly file
+			}
+			
+	 	# Now remove the "f" from the hash table so there is no chance of it being passed
+	 	# to anything called in this file.
+	 	######## NOTE removal of flag from Hash table ############
+	 	delete($optctl{f});   
+	 	
+	 	# This displays the content of the hash table
+	 	# use it to confirm the "f" entry has been removed.
+	 	#
+		# while (($key, $value) = each(%optctl))
+		#  	{
+		#  	print $key.", ".$value."\n";
+		#  	}
+		
+	 	} # if $optctl{"f"}
+ 	elsif ($optctl{"l"})
+ 		{
+ 		 ########### Remove the macro from the hrh as "-f" is not specified  ###############
+ 		
+ 		$found_search_item = 0 ; # false
+		# opens up the original hrh file for reading
+		open(FILEHANDLE, "<", $hrh_filename) or die "Unable to open $hrh_filename for reading. $!\n";
+
+		# temporary file
+		my $temp_hrh_filename = "$ENV{EPOCROOT}epoc32\\include\\variant\\temp_Symbian_OS.hrh";
+		# open temporary file for writing
+		open(TEMPFILEHANDLE, ">", $temp_hrh_filename) or die "can't open tempory file $temp_hrh_filename. $!\n";
+		
+		my @file_data=<FILEHANDLE>; # read all original hrh file data into array
+
+		#check the contents of the array (i.e. the contents of the file)
+		for(@file_data)
+			{
+			# print "$_\n";  #display the line in the file
+			
+			# search line for string of interest: =~ is equals, !~ is not equal
+			if(($_ =~ m/(.*)$search_item(.*)/i))
+				{
+				#display a warning message (only do so once)
+				if( !$found_search_item )
+					{
+					print "Modifying file $hrh_filename to disable A3F as -l flag has been used.\n";
+					}
+				
+				# write line excluding the #define bit to temp file. (to preserve any other bits in this line. e.g.: comment delimiters)
+				print TEMPFILEHANDLE $1." ".$2."\n";
+				$found_search_item = 1 ; # true
+				# Do not write line to the file as we want to remove it.
+				}
+			else
+				{
+				print TEMPFILEHANDLE $_;  # copy unchanged line to temporary file
+				}
+			} #for loop 
+
+		close(FILEHANDLE) or die "Can't close file $hrh_filename.$!\n";  # readonly file
+		close(TEMPFILEHANDLE) or die "Can't close file $temp_hrh_filename. $!\n";  # temp file
+		if($found_search_item)
+			{
+			my $orig_hrh_filename = "$ENV{EPOCROOT}epoc32\\include\\variant\\orig.hrh";
+			rename($hrh_filename, $orig_hrh_filename) or die "can't rename $hrh_filename to $orig_hrh_filename: $!\n";
+			rename($temp_hrh_filename, $hrh_filename)  or die "can't rename $temp_hrh_filename to $hrh_filename: $!\n";
+			unlink $orig_hrh_filename;  # delete the original as it is no longer needed
+			}
+		else
+			{
+			unlink $temp_hrh_filename;  # no changes to be made so delete the temporary file
+			}
+		
+ 		}  # main else for A3F
+ 	
+	##################  End A3F Section ####################################
+	
+	##################  A3F Logging Section ####################################
+
+	my $search_item = "SYMBIAN_MULTIMEDIA_A3F_ENABLE_LOGGING";  # looking for this	
+	my $hrh_filename = "$ENV{EPOCROOT}epoc32\\include\\variant\\Symbian_OS.hrh"; # assign hrh file and location
+	my $found_search_item = 0; #false
+	
+ 	if ($optctl{"a3flog"})
+	 	{
+		# opens up the hrh file for reading
+		open(FILEHANDLE, "<", $hrh_filename) or die "Unable to open $hrh_filename for reading. $!\n";
+
+		my @file_data=<FILEHANDLE>; # read all file data into array
+
+		#check the contents of the array (i.e. the contents of the file)
+		for(@file_data)
+			{
+			# search line for string of interest: =~ is equals, !~ is not equal
+			if(($_ =~ m/$search_item/i))
+				{
+				$found_search_item = 1;  #found the macro 
+				}
+			else
+				{
+				# Search item not found, do nothing
+				}
+			} #for loop 
+
+		close(FILEHANDLE) or die "Can't close file $hrh_filename.\n";  # readonly file
+		
+		if(!$found_search_item)  #search item has not been found
+			{
+			# open file for append
+			open(FILEHANDLE, ">>", $hrh_filename) or die "Unable to open $hrh_filename for appending. $!\n";
+			print FILEHANDLE "\n#define $search_item\n"; # append macro to the file
+			close(FILEHANDLE) or die "Can't close appended file $hrh_filename.\n";  # readonly file
+			}
+			
+	 	# Now remove the "log" from the hash table so there is no chance of it being passed
+	 	# to anything called in this file.
+	 	######## NOTE removal of flag from Hash table ############
+	 	delete($optctl{log});   		
+	 	} # if $optctl{"log"}
+ 	else
+ 		{
+ 		 ########### Remove the macro from the hrh as "-a3flog" is not specified  ###############
+ 		
+ 		$found_search_item = 0 ; # false
+		# opens up the original hrh file for reading
+		open(FILEHANDLE, "<", $hrh_filename) or die "Unable to open $hrh_filename for reading. $!\n";
+
+		# temporary file
+		my $temp_hrh_filename = "$ENV{EPOCROOT}epoc32\\include\\variant\\temp_Symbian_OS.hrh";
+		# open temporary file for writing
+		open(TEMPFILEHANDLE, ">", $temp_hrh_filename) or die "can't open tempory file $temp_hrh_filename. $!\n";
+		
+		my @file_data=<FILEHANDLE>; # read all original hrh file data into array
+
+		#check the contents of the array (i.e. the contents of the file)
+		for(@file_data)
+			{
+			# search line for string of interest: =~ is equals, !~ is not equal
+			if(($_ =~ m/$search_item/i))
+				{
+				#display a warning message
+				print "Removing $_ from file $hrh_filename as -a3flog flag has not been used to indicate an A3F logging build is required.\n";
+				$found_search_item = 1 ; # true
+				# Do not write line to the file as we want to remove it.
+				}
+			else
+				{
+				# Ensure the last newline after the macro is not written to the file.
+				# the last new line was added by the macro append in the previous section.
+				# The asssumes the macro is the last entry in the file. If it is not then 
+				# the if statement should be removed and the print statement left on its own
+				# to copy the last line to file.
+				if(!$found_search_item)  
+					{
+					print TEMPFILEHANDLE $_;  # copy unchanged line to temporary file
+					}
+				}
+			} #for loop 
+
+		close(FILEHANDLE) or die "Can't close file $hrh_filename.$!\n";  # readonly file
+		close(TEMPFILEHANDLE) or die "Can't close file $temp_hrh_filename. $!\n";  # temp file
+		if($found_search_item)
+			{
+			my $orig_hrh_filename = "$ENV{EPOCROOT}epoc32\\include\\variant\\orig.hrh";
+			rename($hrh_filename, $orig_hrh_filename) or die "can't rename $hrh_filename to $orig_hrh_filename: $!\n";
+			rename($temp_hrh_filename, $hrh_filename)  or die "can't rename $temp_hrh_filename to $hrh_filename: $!\n";
+			unlink $orig_hrh_filename;  # delete the original as it is no longer needed
+			}
+		else
+			{
+			unlink $temp_hrh_filename;  # no changes to be made so delete the temporary file
+			}
+		
+ 		}  # main else for A3F
+ 		
+	##################  End A3F Logging Section ####################################
+	
+
+	my $optional = "-x " if ($optctl{"x"});
+	my $keep = "-k " if ($optctl{"k"});
+	my $target = ""; # default to all
+	my $build = "winscw";
+
+	if($optctl{"dir"})
+		{
+		my $dir = $optctl{"dir"};
+		chdir $dir or die "Can't cd $dir - $!";
+		}
+
+
+	if($optctl{"cw"})
+		{
+		$build = "winscw";
+		}
+
+	my $command;
+
+	# mmbuild [-x] [-k] setup
+	$command = "mmbuild " . $optional . $keep . "setup". $iclTest;
+	(system ($command)==0 )or die "Couldn't execute $command";
+	
+	if ($optctl{"c"})
+		{
+		# mmbuild -t clean (throw away result - so we ignore any no-export errors)
+		$command = "mmbuild -t clean >\$NULL 2>&1";
+		print $command, "\n";
+		(system ($command)==0 )or die "Couldn't execute $command";
+		}
+
+
+
+	# mmbuild [-k] build
+	$command = "mmbuild ". $keep. "build " . $build. $iclTest;
+	(system ($command)==0 )or die "Couldn't execute $command";
+
+	# mmbuild -t [-k] build
+	$command = "mmbuild -t ". $keep. "build ". $build. $iclTest;
+	(system ($command)==0 )or die "Couldn't execute $command";
+
+	# mmbuild -t  -b[-k] build
+	$command = "mmbuild -t -b ". $keep. "build ". $build. $iclTest;
+	(system ($command)==0 )or die "Couldn't execute $command";
+
+	}