external tools cannot specify path.
authorlorewang
Wed, 24 Nov 2010 14:12:23 +0800
changeset 706 5221386d044b
parent 705 67449e76cb84
child 708 0757c2976f96
external tools cannot specify path.
imgtools/buildrom/group/release.txt
imgtools/buildrom/tools/buildrom.pm
imgtools/buildrom/tools/externaltools.pm
--- a/imgtools/buildrom/group/release.txt	Tue Nov 23 14:07:04 2010 +0800
+++ b/imgtools/buildrom/group/release.txt	Wed Nov 24 14:12:23 2010 +0800
@@ -1,3 +1,8 @@
+Version 3.32.1 (BUILDROM)
+===============
+Released by Lorence Wang, 24/11/2010
+	1) ou1cimx1#657440 [MCL]external tools cannot specify path.
+
 Version 3.32.0 (BUILDROM)
 ===============
 Released by Ross Qin, 18/11/2010
--- a/imgtools/buildrom/tools/buildrom.pm	Tue Nov 23 14:07:04 2010 +0800
+++ b/imgtools/buildrom/tools/buildrom.pm	Wed Nov 24 14:12:23 2010 +0800
@@ -68,7 +68,7 @@
 
 my $BuildromMajorVersion = 3 ;
 my $BuildromMinorVersion = 32;
-my $BuildromPatchVersion = 0;
+my $BuildromPatchVersion = 1;
 
 
 sub print_usage
@@ -4827,11 +4827,11 @@
 		my $plat = "armv5";				
 		$plat = &get_abiv2mode() ? $plat."_abiv1" : $plat."_abiv2";		
 
-		foreach my $plat(@platlist) 
+		foreach my $plattmp(@platlist) 
 		{
-			if(($aDllFile =~ /[\/\\]($plat)[\/\\]/i) or ($aDllFile =~ /[\/\\]($plat\.\w+)[\/\\]/i ))
+			if(($aDllFile =~ /[\/\\]($plattmp)[\/\\]/i) or ($aDllFile =~ /[\/\\]($plattmp)\.\w+[\/\\]/i ))
 			{
-				$platName = $1;
+				$platName = uc $1;
 				last;
 			}
 		}		
@@ -4839,7 +4839,7 @@
 		
 		# Map files will be referred for all ARM platforms, 
 		# and for BSF platforms which cutomizes ARM platforms.
-		if($rootPlatName =~ /^armv5|$plat$/i){
+		if($rootPlatName =~ /^(armv5|$plat)$/i){
 			my $mapfile = "${aDllFile}.map";
 			
 			open MAPFILE, "$mapfile" or die "Can't open $mapfile\n";
--- a/imgtools/buildrom/tools/externaltools.pm	Tue Nov 23 14:07:04 2010 +0800
+++ b/imgtools/buildrom/tools/externaltools.pm	Wed Nov 24 14:12:23 2010 +0800
@@ -36,11 +36,22 @@
 	my @toolModules = split(/,/,$toolList);
 	foreach my $tool (@toolModules) {
 		# An optional command line can be passed to the tool if it is of the form "<toolname>[:<cmdline>]"
-		if ($tool !~ /^([^:]+)(:(.*))?$/) {
+		if ($tool !~ /^((\w:)?[^:]+)(:(.*))?$/) {
 			print "No tool specified as parameter for external tool invocation\n";
 		}
 		my $toolName = $1;
-		my $toolCmdLine = $3;
+		my $toolCmdLine = $4;
+		if($toolName =~ /^(.*)[\\\/]([^\\\/]+)$/){
+			$toolName = $2;
+			my $path = $1;
+			if($path =~ /^EPOCROOT/){
+				my $epocroot = $ENV{EPOCROOT};
+				$epocroot =~ s-\\-\/-g;
+				$epocroot .= "\/" unless ($epocroot =~ /\/$/);
+				$path =~ s-^EPOCROOT[\/\\]?-$epocroot-;
+			}
+			push (@INC, $path);
+		}
 		if($toolName =~ /configpaging/i){			 
 			my %info = (name=>"configpaging", args=>$toolCmdLine ); 
 			push @{$invocations{"invocationpoint2"}}, \%info;