cross-plat-dev-utils/patch-files/diffs/patch-0f5e3a7fb6af.patch
changeset 18 de5b887c98f7
parent 14 eb060913c963
child 19 d2fccb2bbe1a
--- a/cross-plat-dev-utils/patch-files/diffs/patch-0f5e3a7fb6af.patch	Tue May 18 19:36:14 2010 +0100
+++ b/cross-plat-dev-utils/patch-files/diffs/patch-0f5e3a7fb6af.patch	Fri Jun 04 13:09:28 2010 +0100
@@ -336,7 +336,7 @@
  Destructor for E32ExportTable class.
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/e32tools/elf2e32/source/e32imagefile.cpp /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/e32tools/elf2e32/source/e32imagefile.cpp
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/e32tools/elf2e32/source/e32imagefile.cpp	2010-05-18 19:32:30.877348862 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/e32tools/elf2e32/source/e32imagefile.cpp	2010-05-15 14:32:45.000000000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/e32tools/elf2e32/source/e32imagefile.cpp	2010-05-21 08:06:04.801225978 +0100
 @@ -21,6 +21,7 @@
  
  // get E32ImageHeader class...
@@ -511,7 +511,7 @@
  using std::cout;
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/e32tools/elf2e32/source/parametermanager.cpp /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/e32tools/elf2e32/source/parametermanager.cpp
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/e32tools/elf2e32/source/parametermanager.cpp	2010-05-18 19:32:30.889348502 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/e32tools/elf2e32/source/parametermanager.cpp	2010-05-15 16:38:48.000000000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/e32tools/elf2e32/source/parametermanager.cpp	2010-06-04 12:41:24.559881231 +0100
 @@ -25,6 +25,7 @@
  #include "parametermanager.h"
  #include "errorhandler.h"
@@ -549,7 +549,7 @@
  		
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/e32tools/elf2e32/source/parametermanager.h /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/e32tools/elf2e32/source/parametermanager.h
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/e32tools/elf2e32/source/parametermanager.h	2010-05-18 19:32:30.889348502 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/e32tools/elf2e32/source/parametermanager.h	2010-05-15 14:32:45.000000000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/e32tools/elf2e32/source/parametermanager.h	2010-06-04 12:41:24.576355460 +0100
 @@ -81,7 +81,7 @@
  	typedef std::map<string, const OptionDesc *, OptionCompare> OptionMap;
  	typedef vector<char *> LibSearchPaths;
@@ -2922,7 +2922,7 @@
  			break;
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/cpp-raptor/group/exports.inf /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/cpp-raptor/group/exports.inf
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/cpp-raptor/group/exports.inf	2010-05-18 19:32:31.900848497 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/cpp-raptor/group/exports.inf	2010-05-17 19:43:29.133345451 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/cpp-raptor/group/exports.inf	2010-06-04 12:39:35.436355000 +0100
 @@ -15,6 +15,6 @@
  *
  */
@@ -2933,10 +2933,11 @@
 +../win32/bin/cpp.exe ../../tools/sbs/win32/bv/bin/cpp.exe
 +../win32/i686-pc-mingw32/bin/cc1.exe ../../tools/sbs/win32/bv/i686-pc-mingw32/bin/cc1.exe
 +../win32/i686-pc-mingw32/bin/libiconv-2.dll ../../tools/sbs/win32/bv/i686-pc-mingw32/bin/libiconv-2.dll
+Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin: depcrunch.py
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin: recipestats.py
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/bin/sbs /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin/sbs
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/bin/sbs	2010-05-18 19:32:34.709348670 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin/sbs	2010-05-17 18:47:53.024843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin/sbs	2010-06-04 12:09:24.955849000 +0100
 @@ -1,5 +1,5 @@
  #!/bin/bash
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -3012,7 +3013,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/bin/sbs.bat /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin/sbs.bat
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/bin/sbs.bat	2010-05-18 19:32:34.709348670 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin/sbs.bat	2010-05-17 18:47:53.024843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin/sbs.bat	2010-06-04 12:09:24.955849000 +0100
 @@ -1,5 +1,5 @@
  @rem
 -@rem Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -3071,6 +3072,17 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin: sbs_filter.bat
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin: sbs_filter.py
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/bin: timelines.py
+diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/examples/os_properties.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/examples/os_properties.xml
+--- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/examples/os_properties.xml	2010-05-18 19:32:34.713348619 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/examples/os_properties.xml	2010-06-04 12:09:24.959850000 +0100
+@@ -18,6 +18,7 @@
+ 		<set name='POSTLINKER_SUPPORTS_WDP' value=''/>
+ 		<set name='SUPPORTS_STDCPP_NEWLIB' value=''/>
+ 		<set name='RVCT_PRE_INCLUDE' value='$(EPOCINCLUDE)/rvct2_2/rvct2_2.h'/>
++		<set name="SUPPORTS_ABIV1_IMPLIBS" value='1'/>
+ 	</var>
+ 	
+ </build>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/group/exports.inf /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/group/exports.inf
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/group/exports.inf	2010-05-18 19:32:34.713348619 +0100
 +++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/group/exports.inf	2010-05-09 13:36:29.473288000 +0100
@@ -3492,7 +3504,7 @@
 +../win32/bin/talon.exe ../../tools/sbs/win32/bin/talon.exe
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/arm.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/arm.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/arm.xml	2010-05-18 19:32:34.717348918 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/arm.xml	2010-05-17 18:47:53.028843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/arm.xml	2010-06-04 12:09:24.959850000 +0100
 @@ -1,51 +1,62 @@
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build ../../schema/build/2_0.xsd">
@@ -3572,7 +3584,7 @@
  		<set name="STATIC_LIBRARY_DIR" value="$(EPOCROOT)/epoc32/release/$(VARIANTPLATFORM)/$(VARIANTTYPE)"/>
  		<set name="STATIC_RUNTIME_DIR" value="$(EPOCROOT)/epoc32/release/$(VARIANTPLATFORM)/$(VARIANTTYPE)"/>
  		<set name="SYMBIAN_CC_MESSAGE_OPTION" value="$(CC_WARNINGS_CONTROL_OPTION) $(CC_ERRORS_CONTROL_OPTION)"/>
-@@ -58,22 +69,16 @@
+@@ -58,23 +69,16 @@
  		<set name="TARGET" value=""/>
  		<set name="UNIX_SLASH_FOR_CC_ABS_PATHS" value="0"/>
  		<set name="UNRESOLVED_SYMBOL_REF_OPTION" value=""/>
@@ -3593,32 +3605,35 @@
  		<set name="TARGET_ARCH_OPTION" value="$(CC.ARMV5)"/>
  		<set name="LINKER_ARCH_OPTION" value="$(LD.ARMV5)"/>
 -		<set name="ARMFPU" value="$(CC.SOFTVFP_MAYBE_VFPV2)"/>
+-		<set name="GENERATE_ABIV1_IMPLIBS" value="$(SUPPORTS_ABIV1_IMPLIBS)"/>
 +		<set name="COMPILER_FPU_DEFAULT" value="$(CC.SOFTVFP_MAYBE_VFPV2)"/>
 +		<set name="POSTLINKER_FPU_DEFAULT" value="$(PL.SOFTVFP_MAYBE_VFPV2)"/>
- 		<set name="GENERATE_ABIV1_IMPLIBS" value="$(SUPPORTS_ABIV1_IMPLIBS)"/>
  	</var>
  	<var name="v6">
-@@ -85,7 +90,8 @@
+ 		<set name="TRADITIONAL_PLATFORM" value="ARMV6"/>
+@@ -85,7 +89,9 @@
  		<set name="TARGET_ARCH_OPTION" value="$(CC.ARMV6)"/>
  		<set name="LINKER_ARCH_OPTION" value="$(LD.ARMV6)"/>
  		<set name="STATIC_RUNTIME_DIR" value="$(EPOCROOT)/epoc32/release/armv5/$(VARIANTTYPE)"/>
 -		<set name="ARMFPU" value="$(CC.SOFTVFP_MAYBE_VFPV2)"/>
 +		<set name="COMPILER_FPU_DEFAULT" value="$(CC.SOFTVFP_MAYBE_VFPV2)"/>
 +		<set name="POSTLINKER_FPU_DEFAULT" value="$(PL.SOFTVFP_MAYBE_VFPV2)"/>
++		<set name="SUPPORTS_ABIV1_IMPLIBS" value=""/>
  	</var>
  	<var name="v7">
  		<set name="TRADITIONAL_PLATFORM" value="ARMV7"/>
-@@ -95,7 +101,8 @@
+@@ -95,7 +101,9 @@
  		<set name="DEBUG_FORMAT" value="$(CC.DWARF3)"/>
  		<set name="TARGET_ARCH_OPTION" value="$(CC.ARMV7)"/>
  		<set name="LINKER_ARCH_OPTION" value="$(LD.ARMV7)"/>
 -		<set name="ARMFPU" value="$(CC.SOFTVFP_MAYBE_VFPV3)"/>
 +		<set name="COMPILER_FPU_DEFAULT" value="$(CC.SOFTVFP_MAYBE_VFPV3)"/>
 +		<set name="POSTLINKER_FPU_DEFAULT" value="$(PL.SOFTVFP_MAYBE_VFPV3)"/>
++		<set name="SUPPORTS_ABIV1_IMPLIBS" value=""/>
  	</var>
  	<var name="9e" extends="v5">
  		<set name="VARIANTPLATFORM" value="arm9e"/>
-@@ -121,6 +128,9 @@
+@@ -121,6 +129,9 @@
  	<alias name="armv5_urel_gcce4_3_3" meaning="arm.v5.urel.gcce4_3_3"/>
  	<alias name="armv5_udeb_gcce4_3_3" meaning="arm.v5.udeb.gcce4_3_3"/>
  	
@@ -3628,9 +3643,35 @@
  	<alias name="armv6_urel" meaning="arm.v6.urel.rvct2_2"/>
  	<alias name="armv6_udeb" meaning="arm.v6.udeb.rvct2_2"/>
  	<alias name="armv7_urel" meaning="arm.v7.urel.rvct3_1"/>
+diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/carbide.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/carbide.xml
+--- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/carbide.xml	2010-05-18 19:32:34.717348918 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/carbide.xml	2010-06-04 12:09:24.963850000 +0100
+@@ -27,6 +27,22 @@
+ 			<config name="armv9e_urel"/>
+ 			<config name="armv9e_udeb"/>
+ 		</config>
++		<config name="armv5_gcce" abstract="true">
++			<config name="armv5_urel_gcce"/>
++			<config name="armv5_udeb_gcce"/>
++		</config>
++		<config name="armv6_gcce" abstract="true">
++			<config name="armv6_urel_gcce"/>
++			<config name="armv6_udeb_gcce"/>
++		</config>
++		<config name="armv7_gcce" abstract="true">
++			<config name="armv7_urel_gcce"/>
++			<config name="armv7_udeb_gcce"/>
++		</config>
++		<config name="armv9e_gcce" abstract="true">
++			<config name="armv9e_urel_gcce"/>
++			<config name="armv9e_udeb_gcce"/>
++		</config>
+ 	</config>
+ 
+ 	<config name="winscw" abstract="true">
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/gcce.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/gcce.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/gcce.xml	2010-05-18 19:32:34.717348918 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/gcce.xml	2010-05-17 18:47:53.032843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/gcce.xml	2010-06-04 12:09:24.963850000 +0100
 @@ -1,108 +1,128 @@
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build ../../schema/build/2_0.xsd">
@@ -3818,7 +3859,7 @@
  </build>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/gcc.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/gcc.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/gcc.xml	2010-05-18 19:32:34.717348918 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/gcc.xml	2010-05-17 19:30:38.665334296 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/gcc.xml	2010-06-04 12:39:38.836352000 +0100
 @@ -1,32 +1,32 @@
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build ../../schema/build/2_0.xsd">
@@ -3896,7 +3937,7 @@
  		<set name='LIBS.LINUX' value='$(LIBS) pthread'/>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/gccxml.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/gccxml.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/gccxml.xml	2010-05-18 19:32:34.717348918 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/gccxml.xml	2010-05-17 18:47:53.032843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/gccxml.xml	2010-06-04 12:09:24.963850000 +0100
 @@ -1,21 +1,20 @@
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build ../../schema/build/2_0.xsd">
@@ -3945,7 +3986,7 @@
  		<set name='RVCTLIB' value='$(RVCT22LIB)'/>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/interfaces.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/interfaces.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/interfaces.xml	2010-05-18 19:32:34.717348918 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/interfaces.xml	2010-05-17 18:47:53.032843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/interfaces.xml	2010-06-04 12:09:24.963850000 +0100
 @@ -5,15 +5,17 @@
  	<var name="default.interfaces">
  		<!-- interfaces corresponding to target types -->
@@ -3967,7 +4008,7 @@
  		<set name="INTERFACE.var" value="Symbian.var"/>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/locations.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/locations.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/locations.xml	2010-05-18 19:32:34.717348918 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/locations.xml	2010-05-17 18:47:53.032843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/locations.xml	2010-06-04 12:09:24.963850000 +0100
 @@ -30,7 +30,7 @@
  		<env name='SBS_GNUTOUCH' default='/bin/touch' type='tool'/>
  		<env name='SBS_GNUFIND' default='/usr/bin/find' type='tool'/>
@@ -3991,19 +4032,30 @@
  		<!-- Place where intermediate files are built -->
  		<env name='SBS_BUILD_DIR' default='$(EPOCROOT)/epoc32/build' type='path'/>
  
-@@ -107,7 +108,7 @@
+@@ -107,7 +108,8 @@
  		<set name='BASE_USER_DEFAULT_PLATFORMS' value='ARMV5 ARMV7 WINSCW'/>
  
  		<set name='BUILD_INCLUDE' value=''/>
 -		<set name='CREATEVMAP' value='$(PYTHON) $(SBS_HOME)/bin/createvmap.py' type='tool'/>
 +		<set name='CREATEVMAP' value='$(PYTHON) $(SBS_HOME)/bin/createvmap.py' type='script'/>
++		<set name='DEPCRUNCH' value='$(PYTHON) $(SBS_HOME)/bin/depcrunch.py' type='script'/>
  		<set name='CREATEVMAPCPP' value='$(SBS_BVCPP)' type='tool'/>
  		<set name='FEATURELISTFILES' value=''/>
  		<set name='FEATUREVARIANTNAME' value=''/>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/make.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/make.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/make.xml	2010-05-18 19:32:34.717348918 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/make.xml	2010-05-17 18:47:53.032843000 +0100
-@@ -47,6 +47,9 @@
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/make.xml	2010-06-04 12:09:24.963850000 +0100
+@@ -13,6 +13,9 @@
+ 		<set name='TALON_TIMEOUT' value='600000'/>
+ 		<set name='TALON_DESCRAMBLE' value='1'/>
+ 		
++		<!-- Work around for RVCT compile failures -->
++		<set name='DELETE_ON_FAILED_COMPILE' value='1'/>
++		
+ 		<!-- Command-line for initialisation -->
+ 		<set name="initialise" value=""/>
+ 
+@@ -47,9 +50,12 @@
  
  		<!-- is the text output with -j buffered or scrambled? -->
  		<set name="scrambled" value="true"/>
@@ -4012,20 +4064,58 @@
 +		<set name="copylogfromannofile" value="false"/>
  	</var>
  	
- 	<alias name="make" meaning="make_engine"/>
-@@ -67,6 +70,9 @@
+-	<alias name="make" meaning="make_engine"/>
++	<alias name="make" meaning="make_engine" type="engine"/>
+ 
+ 	<!-- use the talon shell -->
+ 	<var name="make_no_talon_engine" extends="make_engine">
+@@ -57,7 +63,7 @@
+ 	        <set name='USE_TALON' value=''/>
+ 	</var>
+ 
+-	<alias name="make_no_talon" meaning="make_no_talon_engine"/>
++	<alias name="make_no_talon" meaning="make_no_talon_engine" type="engine"/>
+ 
+ 	<!-- other derived versions of GNU make -->
+ 
+@@ -67,9 +73,13 @@
  		<set name="build" value="$(EMAKE) HAVE_ORDERONLY= -r"/>
  		<set name="scrambled" value="false"/>
  		<set name='TALON_DESCRAMBLE' value=''/>
++		<set name='DELETE_ON_FAILED_COMPILE' value=''/>
 +
 +		<!-- workaround for damaged log output from emake -->
 +		<set name="copylogfromannofile" value="true"/>
  	</var>
  
- 	<alias name="emake" meaning="emake_engine"/>
+-	<alias name="emake" meaning="emake_engine"/>
++	<alias name="emake" meaning="emake_engine" type="engine"/>
+ 	
+ 	<!-- use the talon shell -->
+ 	<var name="emake_no_talon_engine" extends="emake_engine">
+@@ -77,7 +87,7 @@
+ 	        <set name='USE_TALON' value=''/>
+ 	</var>
+ 
+-	<alias name="emake_no_talon" meaning="emake_no_talon_engine"/>
++	<alias name="emake_no_talon" meaning="emake_no_talon_engine" type="engine"/>
+ 	
+ 	<!-- Raptor make engine for PVMgmake -->
+ 	<var name="pvmgmake_engine" extends="make_engine">
+@@ -85,8 +95,9 @@
+ 		<set name="build" value="$(PVMGMAKE) HAVE_ORDERONLY=true  -r"/>
+ 		<set name="scrambled" value="false" />
+ 		<set name='TALON_DESCRAMBLE' value=''/>
++		<set name='DELETE_ON_FAILED_COMPILE' value=''/>
+ 	</var>
+ 
+-	<alias name="pvmgmake" meaning="pvmgmake_engine"/>
++	<alias name="pvmgmake" meaning="pvmgmake_engine" type="engine"/>
+ 
+ </build>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/msvc.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/msvc.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/msvc.xml	2010-05-18 19:32:34.721348727 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/msvc.xml	2010-05-17 18:47:53.032843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/msvc.xml	2010-06-04 12:09:24.963850000 +0100
 @@ -1,11 +1,11 @@
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build ../../schema/build/2_0.xsd">
@@ -4084,7 +4174,7 @@
  		<set name='IMPORTLIBPATH' value='$(RELEASEPATHROOT)/tools/udeb'/>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/root.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/root.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/root.xml	2010-05-18 19:32:34.721348727 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/root.xml	2010-05-17 18:47:53.032843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/root.xml	2010-06-04 12:09:24.967850000 +0100
 @@ -11,6 +11,8 @@
  	-->
  
@@ -4094,9 +4184,17 @@
  		<varRef ref="root.places"/>
  		<varRef ref="root.properties"/>
  		
+@@ -43,6 +45,7 @@
+ 		<set name='POSTLINKER_SUPPORTS_WDP' value='1'/>
+ 		<set name='SUPPORTS_STDCPP_NEWLIB' value='1'/>
+ 		<set name="RVCT_PRE_INCLUDE" value="$(EPOCINCLUDE)/rvct/rvct.h"/>
++		<set name="SUPPORTS_ABIV1_IMPLIBS" value=''/>
+ 	</var>
+ 	
+ 	<!-- Placeholder for the root.changes variant. This will typically be
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/rvct.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/rvct.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/rvct.xml	2010-05-18 19:32:34.721348727 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/rvct.xml	2010-05-17 18:47:53.032843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/rvct.xml	2010-06-04 12:09:24.967850000 +0100
 @@ -1,66 +1,62 @@
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build ../../schema/build/2_0.xsd">
@@ -4195,7 +4293,7 @@
  		<set name="LIBPATH" value=""/>
  		<set name="LIBRARY" value=""/>
  		<set name="LICENSERETRY_OPTION" value=""/>
-@@ -69,25 +65,35 @@
+@@ -69,25 +65,34 @@
  		<set name="LINKER_DEFAULT_LIBS" value=""/>
  		<set name="LINKER_DEFAULT_LIB_PATHS" value=""/>
  		<set name="LINKER_ENTRY_OPTION" value="--entry"/>
@@ -4223,11 +4321,10 @@
  		<set name="SO_NAME_OPTION" value="--soname"/>
  		<set name="STATIC_LIBS_PATH" value="$(RVCTLIB)/armlib"/>
  		<set name="STDCPP_INCLUDE" value="$(EPOCINCLUDE)/stdapis"/>
--		<set name="SYMBIAN_LD_MESSAGE_OPTION" value="$(LD_WARNINGS_CONTROL_OPTION) $(LD_ERRORS_CONTROL_OPTION)"/>
-+		<set name="STDLIB_OPTION" value="--no_scanlib"/>
- 		<set name="SUPPORTS_ABIV1_IMPLIBS" value="1"/>		
++		<set name="STDLIB_OPTION" value="--no_scanlib"/>	
+ 		<set name="SYMBIAN_LD_MESSAGE_OPTION" value="$(LD_WARNINGS_CONTROL_OPTION) $(LD_ERRORS_CONTROL_OPTION)"/>
+-		<set name="SUPPORTS_ABIV1_IMPLIBS" value="1"/>		
 -		<set name="TARGET_RELOCATION_OPTION" value="" />
-+		<set name="SYMBIAN_LD_MESSAGE_OPTION" value="$(LD_WARNINGS_CONTROL_OPTION) $(LD_ERRORS_CONTROL_OPTION)"/>
  		<set name="SYMVER_OPTION" value="--symver_soname"/>
 +		<set name="TARGET_RELOCATION_OPTION" value=""/>
  		<set name="TEMP_FILES_OPTION" value=""/>
@@ -4236,7 +4333,11 @@
  		<set name="TRANASM_FLAGS" value="-n -s"/>
  		<set name="TRANASM_INPUT_OPTION" value=""/>
  		<set name="TRANASM_OUTPUT_OPTION" value="-o="/>
-@@ -98,10 +104,7 @@
+@@ -95,13 +100,11 @@
+ 		<set name="UNDEFINED_SYMBOL_REF_OPTION" value=""/>
+ 		<set name="UNIX_SLASH_FOR_CC_ABS_PATHS" value="0"/>
+ 		<set name="UNRESOLVED_SYMBOL_REF_OPTION" value=""/>
++		<set name="USE_RVCT22_DELETE_WORKAROUND" value=""/>
  		<set name="USERINCLUDE" value=""/>
  		<set name="USER_LIBS_PATH_OPTION" value="--userlibpath"/>
  		<set name="VFE_OPTION" value="--no_vfe"/>
@@ -4251,7 +4352,7 @@
  </build>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/variants.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/variants.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/variants.xml	2010-05-18 19:32:34.721348727 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/variants.xml	2010-05-17 18:47:53.036842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/variants.xml	2010-06-04 12:09:24.967850000 +0100
 @@ -6,10 +6,23 @@
  	
  	-->
@@ -4276,6 +4377,15 @@
  	<!-- Run this variant to turn on trace compiler -->
  	<var name="tracecompiler">
  		<set name='USE_TRACE_COMPILER' value='1'/>
+@@ -68,7 +82,7 @@
+ 		<!-- PLATMACROS.LINUX is set from PLATMACROS.WINDOWS -->
+ 		<append name="TRADITIONAL_PLATFORM" value='SMP' separator="" />
+ 		<append name="VARIANTPLATFORM" value="smp" separator=""/>
+-		<set name="GENERATE_ABIV1_IMPLIBS" value=""/>
++		<set name="SUPPORTS_ABIV1_IMPLIBS" value=""/>
+ 	</var>
+ 
+ 	<!-- emit formatted releasable information into the logs for post-build parsing -->
 @@ -77,67 +91,40 @@
  	</var>
  
@@ -4367,7 +4477,7 @@
  		<set name="OWN_LIBRARY_OPTION" value="-Ono_known_library"/>
  		<set name="RELOCATABLE_IMAGE_OPTION" value="--reloc"/>
  		<set name="SPLIT_OPTION" value="--split"/>
-@@ -147,23 +134,24 @@
+@@ -147,23 +134,25 @@
  		<set name="STATIC_LIBS_LIST" value="h_t__uf.l(switch8.o)"/>
  		<set name="RUNTIME_LIBS_LIST" value="drtaeabi.dso dfpaeabi.dso dfprvct2_2.dso drtrvct2_2.dso"/>
  		<set name="USER_STATIC_RUNTIME_LIB" value="usrt2_2.lib"/>
@@ -4380,6 +4490,7 @@
 +		<set name="PL.SOFTVFP_MAYBE_VFPV2" value="softvfp"/>
  		<set name="CC.ARMV5" value="--cpu 5T"/>
  		<set name="CC.ARMV6" value="--cpu 6"/>
++		<set name="USE_RVCT22_DELETE_WORKAROUND" value="1" />
  	</var>
  
  	<var name="rvct3_1" extends="rvct">
@@ -4397,7 +4508,7 @@
  		<set name="OWN_LIBRARY_OPTION" value="--library_interface=aeabi_clib"/>
  		<set name="RELOCATABLE_IMAGE_OPTION" value=""/>
  		<set name="SPLIT_OPTION" value=""/>
-@@ -173,47 +161,48 @@
+@@ -173,47 +162,48 @@
  		<set name="STATIC_LIBS_LIST" value="h_5.l"/>
  		<set name="RUNTIME_LIBS_LIST" value="drtaeabi.dso dfpaeabi.dso dfprvct3_1.dso drtrvct3_1.dso"/>
  		<set name="USER_STATIC_RUNTIME_LIB" value="usrt3_1.lib"/>
@@ -4462,7 +4573,7 @@
  	</var>
  
  	<var name="urel">
-@@ -262,4 +251,17 @@
+@@ -262,4 +252,17 @@
  		<set name='OPTION_CW' value='-cwd include'/>
  	</var>
  
@@ -4482,7 +4593,7 @@
  </build>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/winscw.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/winscw.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/config/winscw.xml	2010-05-18 19:32:34.721348727 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/winscw.xml	2010-05-17 18:47:53.036842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/config/winscw.xml	2010-06-04 12:09:24.967850000 +0100
 @@ -1,24 +1,31 @@
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build ../../schema/build/2_0.xsd">
@@ -4537,7 +4648,7 @@
  		<set name="INTERFACE.stddll" value="Emulator.stddll"/>
  		<set name="INTERFACE.exexp" value="Emulator.exexp"/>
  		<set name="INTERFACE.fsy" value="Emulator.fsy"/>
-@@ -40,100 +48,100 @@
+@@ -40,104 +48,106 @@
  		<set name="INTERFACE.pdd" value="Emulator.pdd"/>
  		<set name="INTERFACE.pdl" value="Emulator.pdl"/>
  		<set name="INTERFACE.plugin" value="Emulator.plugin"/>
@@ -4694,23 +4805,27 @@
 +		<set name="PLATMACROS.LINUX" value="$(PLATMACROS.WINDOWS)"/>
  	</var>
  
- 	<var name="winscw_udeb" extends="winscw_base">
+-	<var name="winscw_udeb" extends="winscw_base">
 -		<set name='FULLVARIANTPATH' value='winscw/udeb'/>
 -		<set name='VARIANTTYPE' value='udeb'/>
-+		<set name="FULLVARIANTPATH" value="winscw/udeb"/>
-+		<set name="VARIANTTYPE" value="udeb"/>
- 
+-
 -		<append name='CDEFS' value='_DEBUG'/>
 -		<append name='CFLAGS' value='-g -O0 -inline off'/>
 -		<append name='LFLAGS' value='-g'/>
++	<var name="winscw_debug">
++		<set name="FULLVARIANTPATH" value="winscw/udeb"/>
++		<set name="VARIANTTYPE" value="udeb"/>
++
 +		<append name="CDEFS" value="_DEBUG"/>
 +		<append name="CFLAGS" value="-g -O0 -inline off"/>
 +		<append name="LFLAGS" value="-g"/>
  	</var>
- 
- 	<var name="winscw_urel" extends="winscw_base">
++	<alias name="winscw_udeb" meaning="winscw_base.winscw_debug"/>
+ 
+-	<var name="winscw_urel" extends="winscw_base">
 -		<set name='FULLVARIANTPATH' value='winscw/urel'/>
 -		<set name='VARIANTTYPE' value='urel'/>
++	<var name="winscw_release">
 +		<set name="FULLVARIANTPATH" value="winscw/urel"/>
 +		<set name="VARIANTTYPE" value="urel"/>
  
@@ -4719,22 +4834,39 @@
 +		<append name="CDEFS" value="NDEBUG"/>
 +		<append name="CFLAGS" value="-O4,s"/>
  	</var>
++	<alias name="winscw_urel" meaning="winscw_base.winscw_release"/>
  
  	<group name="winscw">
+-		<varRef ref="winscw_urel"/>
+-		<varRef ref="winscw_udeb"/>
++		<aliasRef ref="winscw_urel"/>
++		<aliasRef ref="winscw_udeb"/>
+ 	</group>
+ </build>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/base.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/base.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/base.xml	2010-05-18 19:32:34.721348727 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/base.xml	2010-05-17 18:47:53.036842000 +0100
-@@ -16,6 +16,7 @@
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/base.xml	2010-06-04 12:09:24.967850000 +0100
+@@ -16,7 +16,9 @@
  		<param name='PROJECT_META' default=''/>     <!-- my.mmp  -->
  		<param name='DATE' default=''/>
  		<param name='DUMPBCINFO' default=''/>
 +		<param name='FLMDEBUG'  default=''/>
  		<param name='PLATFORM' default=''/>
++		<param name='PYTHON' default=''/> <!-- allow python scripts to be used in general flms -->
  		<param name='GNUMAKE38'/>
  		<param name='GNUCP'/>
+ 		<param name='GNUCAT'/>
+@@ -83,6 +85,7 @@
+ 	</interface>
+ 	<interface name="base.resource" extends="base.flm" flm="resource.flm">
+ 		<param name='BINCOPYDIRS' default=''/>
++		<param name='DEPCRUNCH'/>
+ 		<param name='MMPDEFS' default=''/>
+ 		<param name='GNUCPP'/>
+ 		<param name='GNUSED'/>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/bitmap.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/bitmap.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/bitmap.flm	2010-05-18 19:32:34.721348727 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/bitmap.flm	2010-05-17 18:47:53.036842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/bitmap.flm	2010-06-04 12:09:24.967850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -4828,7 +4960,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/build.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/build.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/build.flm	2010-05-18 19:32:34.721348727 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/build.flm	2010-05-17 18:47:53.036842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/build.flm	2010-06-04 12:09:24.967850000 +0100
 @@ -24,36 +24,31 @@
  
  .PHONY:: PP_EXPORTS
@@ -4899,7 +5031,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/build.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/build.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/build.xml	2010-05-18 19:32:34.721348727 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/build.xml	2010-05-17 18:47:53.036842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/build.xml	2010-06-04 12:09:24.971850000 +0100
 @@ -9,6 +9,7 @@
  		<param name='CONFIGS' default=''/>
  		<param name='CLI_OPTIONS' default=''/>
@@ -4910,7 +5042,7 @@
  </build>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2ani.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2ani.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2ani.flm	2010-05-18 19:32:34.725348467 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2ani.flm	2010-05-17 18:47:53.040843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2ani.flm	2010-06-04 12:09:24.971850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -4949,7 +5081,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2defaults.mk /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2defaults.mk
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2defaults.mk	2010-05-18 19:32:34.725348467 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2defaults.mk	2010-05-17 18:47:53.040843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2defaults.mk	2010-06-04 12:09:24.975850000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -5005,7 +5137,7 @@
 +endif
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2dll.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2dll.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2dll.flm	2010-05-18 19:32:34.725348467 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2dll.flm	2010-05-17 18:47:53.040843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2dll.flm	2010-06-04 12:09:24.975850000 +0100
 @@ -28,7 +28,7 @@
  
  # Default Linker settings for this target type
@@ -5025,7 +5157,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2exe.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2exe.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2exe.flm	2010-05-18 19:32:34.725348467 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2exe.flm	2010-05-17 18:47:53.040843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2exe.flm	2010-06-04 12:09:24.975850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -5056,7 +5188,7 @@
  CDEFS:=$(CDEFS) __EXE__
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2exexp.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2exexp.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2exexp.flm	2010-05-18 19:32:34.725348467 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2exexp.flm	2010-05-17 18:47:53.040843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2exexp.flm	2010-06-04 12:09:24.975850000 +0100
 @@ -52,10 +52,10 @@
  LINKER_ENTRYPOINT_LIBDEP:=$(STATIC_RUNTIME_DIR)/$(FIRSTLIB)
  
@@ -5072,14 +5204,14 @@
  ifeq ("$(NEED_ENTRYPOINT_LIBRARY)","True")
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2.flm	2010-05-18 19:32:34.725348467 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2.flm	2010-05-17 18:47:53.040843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2.flm	2010-06-04 12:09:24.971850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
  # All rights reserved.
  # This component and the accompanying materials are made available
  # under the terms of the License "Eclipse Public License v1.0"
-@@ -16,15 +16,37 @@
+@@ -16,21 +16,50 @@
  #
  #
  
@@ -5106,7 +5238,8 @@
 +#   test (FEATUREVARIANTNAME=="" and FEATUREVARIANT=="") or
 +#        (FEATUREVARIANTNAME!="" and FEATUREVARIANT==1)
 +#
-+
+ 
+-$(if $(FLMDEBUG),$(info <flm name='e32abiv2' target='$(TARGET)' type='$(TARGETTYPE)' outputpath='$(OUTPUTPATH)' metasource='$(METASOURCE)' postlinkfiletype='$(POSTLINKFILETYPE)' />))
 +DOBUILD:=
 +ifeq ($(FEATUREVARIANTSAFE),)
 +  DOBUILD:=$(if $(or $(call equal,$(FEATUREVARIANTNAME),),\
@@ -5119,26 +5252,72 @@
 +endif
 +
 +ifeq ($(DOBUILD),1)
- 
- $(if $(FLMDEBUG),$(info <flm name='e32abiv2' target='$(TARGET)' type='$(TARGETTYPE)' outputpath='$(OUTPUTPATH)' metasource='$(METASOURCE)' postlinkfiletype='$(POSTLINKFILETYPE)' />))
- 
-@@ -141,7 +163,6 @@
++
++$(if $(FLMDEBUG),$(info <debug><flm name='e32abiv2' target='$(TARGET)' type='$(TARGETTYPE)' outputpath='$(OUTPUTPATH)' metasource='$(METASOURCE)' postlinkfiletype='$(POSTLINKFILETYPE)' /></debug>))
++
++# Enable DELETE_ON_FAILED_COMPILE work around for failed RVCT 2.2 compiles
++ifneq ($(DELETE_ON_FAILED_COMPILE),)
++RVCT22_DELETE_WORKAROUND:=|| { $$(GNURM) $$@; exit 1; }
++endif # ifneq ($(DELETE_ON_FAILED_COMPILE),)
+ 
+ # Strip switch-type parameters
+ #
+ POSTLINKTARGETTYPE:=$(strip $(POSTLINKTARGETTYPE))
++TARGETEXT:=$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(POSTLINKFILETYPE))
++
+ UID1:=$(strip $(UID1))
+ UID2:=$(strip $(UID2))
+ UID3:=$(strip $(UID3))
+@@ -106,9 +135,9 @@
+ 
+ # Postlinkable targets need to be linked and elf2e32'd
+ ifneq ($(DOPOSTLINK),)
+-    E32TARGET:=$(RELEASABLEPATH)/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(POSTLINKFILETYPE))
+-    LINK_TARGET:=$(RELEASABLEPATH)/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(POSTLINKFILETYPE)).sym
+-    MAPFILE:=$(RELEASABLEPATH)/$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(POSTLINKFILETYPE)).map
++    E32TARGET:=$(RELEASABLEPATH)/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(TARGETEXT)
++    LINK_TARGET:=$(RELEASABLEPATH)/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(TARGETEXT).sym
++    MAPFILE:=$(RELEASABLEPATH)/$(TARGET).$(TARGETEXT).map
+ else
+   E32TARGET:=
+   LINK_TARGET:=
+@@ -141,23 +170,19 @@
    ifeq ($($(BUILDMARKER_IMPORTLIBTARGET_DSO)),)
      IMPORTLIBTARGET_DSO:=$(TMP_IMPORTLIBTARGET_ROOT).dso
      IMPORTLIBTARGETVERSIONED_DSO:=$(VER_E32IMPORTLIBBASE).dso
 -    $(eval $(BUILDMARKER_IMPORTLIBTARGET_DSO):=1)
    endif
  
-   # ABIv1 .lib (for specific builds, toolchains and host OS platforms only)
-@@ -156,7 +177,6 @@
+-  # ABIv1 .lib (for specific builds, toolchains and host OS platforms only)
++  # ABIv1 .lib (for specific kits and toolchains only)
+   IMPORTLIBTARGET_LIB:=
+   IMPORTLIBTARGETVERSIONED_LIB:=
+   BUILDMARKER_IMPORTLIBTARGET_LIB:=TARGET_$(subst :,,$(VER_E32IMPORTLIBBASE)).lib
+-  # Only for builds that require and support them, and only on windows
+-  ifeq ($(OSTYPE),cygwin)
+-  ifeq ($(GENERATE_ABIV1_IMPLIBS),1)
++  # Only for kits that require and tools that support them
++  ifneq ($(SUPPORTS_ABIV1_IMPLIBS),)
+     WHATRELEASE:=$(WHATRELEASE) $(if $(EXPLICITVERSION),,$(TMP_IMPORTLIBTARGET_ROOT).lib)
+     WHATRELEASE:=$(WHATRELEASE) $(VER_E32IMPORTLIBBASE).lib
      ifeq ($($(BUILDMARKER_IMPORTLIBTARGET_LIB)),)
        IMPORTLIBTARGET_LIB:=$(TMP_IMPORTLIBTARGET_ROOT).lib
        IMPORTLIBTARGETVERSIONED_LIB:=$(VER_E32IMPORTLIBBASE).lib
 -      $(eval $(BUILDMARKER_IMPORTLIBTARGET_LIB):=1)
-     endif
+-    endif
    endif
    endif
-@@ -223,7 +243,7 @@
+ endif
+@@ -167,7 +192,7 @@
+ # put the hex version number in the right place
+ ifeq ($(LINKAS),)
+   LINKASNAME=$(TARGET)
+-  LINKASTYPE=$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(POSTLINKFILETYPE))
++  LINKASTYPE=$(TARGETEXT)
+ else
+   SPLIT_LINKAS=$(subst ., ,$(LINKAS))
+   LINKASNAME=$(word 1,$(SPLIT_LINKAS))
+@@ -223,7 +248,7 @@
  	DSODEFFILENAMEBASE:=$(TARGET){$(VERSIONHEX)}
  endif
  GENERATED_DSO:=$(call dblquote,$(INTERMEDIATEPATH)/$(DSODEFFILENAMEBASE).dso)
@@ -5147,7 +5326,7 @@
  
  ## IMPORT LIBRARY  ###########################################################
  
-@@ -251,6 +271,10 @@
+@@ -251,6 +276,10 @@
  # ABIv2 .dso
  ifneq ($(IMPORTLIBTARGET_DSO),) # check that we haven't tried to specify this target already
  
@@ -5158,7 +5337,7 @@
    ifneq ($(EXPLICITVERSION),)
      TARGETS:=$(strip $(TARGETS) $(IMPORTLIBTARGETVERSIONED_DSO))
  
-@@ -279,9 +303,6 @@
+@@ -279,9 +308,6 @@
  		$(call startrule,importlibtarget_unfrozen,FORCESUCCESS) \
  		$(GNUCP) $$(call dblquote,$$<) $$(call dblquote,$$@) \
  		$(call endrule,importlibtarget_unfrozen)
@@ -5168,7 +5347,7 @@
      endef
  
      define importlibtarget_unfrozen_ver
-@@ -289,8 +310,6 @@
+@@ -289,8 +315,6 @@
  		$(call startrule,importlibversioned_unfrozen,FORCESUCCESS) \
  		$(GNUCP) "$(GENERATED_DSO)" "$$@" \
  		$(call endrule,importlibversioned_unfrozen)
@@ -5177,7 +5356,7 @@
      endef
  
      ifeq ($(EXPLICITVERSION),)
-@@ -307,8 +326,6 @@
+@@ -307,8 +331,6 @@
  	   $(call startrule,importlibtarget,FORCESUCCESS) \
  	   $(GNUCP) "$$<" "$$@" \
  	   $(call endrule,importlibtarget)
@@ -5186,7 +5365,7 @@
        endef
  
        ifeq ($(EXPLICITVERSION),)
-@@ -325,8 +342,6 @@
+@@ -325,8 +347,6 @@
  	 	  --dso=$$(call dblquote,$$@) 				   \
  	 	  --linkas=$(call dblquote,$(LINKASVERSIONED)) \
  	      $(call endrule,importlibversioned)
@@ -5195,7 +5374,7 @@
        endef
        $(eval $(importlibtargetversioned_func))
      endif #  ifneq ($(DEFFILE),)
-@@ -335,7 +350,10 @@
+@@ -335,7 +355,10 @@
  
  # ABIv1 .lib
  ifneq ($(IMPORTLIBTARGETVERSIONED_LIB),) # check that we haven't tried to specify this target already
@@ -5207,7 +5386,7 @@
  
    define abiv1_generatelib
  
-@@ -351,12 +369,12 @@
+@@ -351,12 +374,12 @@
      # If unfrozen, .lib files are based on the .def file generated by the final postlink
      $(IMPORTLIBTARGETVERSIONED_LIB): $(if $(EXPORTUNFROZEN),$(E32TARGET),$(PREPPEDDEFFILE))
  	$(call startrule,importlibversioned_abiv1) \
@@ -5222,7 +5401,7 @@
  		--linkAs=$(call dblquote,$(LINKASVERSIONED)) \
  		--inter ; fi \
  	$(call endrule,importlibversioned_abiv1)
-@@ -388,7 +406,22 @@
+@@ -388,7 +411,22 @@
  # Generating the import library is enough if TARGETTYPE=implib #############
  
  ifneq ($(DOPOSTLINK),)
@@ -5246,7 +5425,7 @@
  endif # ifneq ($(DOPOSTLINK),)
  
  ifneq ($(TARGETTYPE),implib)
-@@ -534,7 +567,7 @@
+@@ -534,7 +572,7 @@
  endef
  $(eval $(artarget_func))
  
@@ -5255,7 +5434,7 @@
  endif
  
  
-@@ -542,8 +575,7 @@
+@@ -542,8 +580,7 @@
  # Targettype is some type of DLL or EXE (or derivative)
  ifneq ($(LINK_TARGET),)
  
@@ -5265,7 +5444,7 @@
  located_STATICLIBRARIES:=$(foreach L,$(STATICLIBRARY),$(STATIC_LIBRARY_DIR)/$(L).lib)
  e32abiv2_LIBS:=$(EXPTARGET) $(LINKER_STUB_LIBRARY) $(if $(STATIC_RUNTIME_LIB),$(STATIC_RUNTIME_DIR)/$(STATIC_RUNTIME_LIB),) $(located_STATICLIBRARIES)
  # DLLS and EXEs - These objects are linked by a linker
-@@ -556,12 +588,10 @@
+@@ -556,12 +593,10 @@
  REDUCED_RUNTIME_LIBS_LIST:=$(subst $(TARGET).dso,,$(RUNTIME_LIBS_LIST))
  
  ifeq ($(VARIANTTYPE),udeb)
@@ -5280,7 +5459,7 @@
  
  else
  # NORMAL
-@@ -574,19 +604,16 @@
+@@ -574,19 +609,16 @@
  ifeq ($(HAS_DEDICATED_OP_NEWDEL_LIB),1)
    e32abiv2_LIBS:=$(e32abiv2_LIBS) $(addprefix $(RUNTIME_LIBS_PATH)/,$(NEWLIB))
  endif
@@ -5303,7 +5482,7 @@
  endif
  
  # NOTE: the groupin10 macro must be used before a call to the "startrule" macro
-@@ -596,36 +623,76 @@
+@@ -596,36 +628,76 @@
  # outside the relevant tags but it is also unavoidable.
  define linktarget_func
  ## The actual link target, dependencies and build step
@@ -5393,15 +5572,17 @@
  WHATRELEASE:=$(WHATRELEASE) $(MAPFILE)
  
  endif # if TARGETTYPE lib
-@@ -646,6 +713,7 @@
+@@ -645,7 +717,9 @@
+ # USE_TRACE_COMPILER defaults to blank in Raptor config.
  # Users can turn TC on by setting it to 1 in user config.
  ifneq ($(USE_TRACE_COMPILER),)
++  # TARGETEXT is already set
    include $(FLMHOME)/tracecompiler.mk
 +  WHATRELEASE:=$(WHATRELEASE) $(TRACE_DICTIONARY) $(AUTOGEN_HEADER)
  endif
  
  CC_CPPONLY_ARGS:=$(SYMBIAN_CCFLAGS) $(if $(DEBUG_INFO),-g) $(DEBUG_FORMAT) \
-@@ -655,7 +723,7 @@
+@@ -655,7 +729,7 @@
    $(EXPORT_VTBL_OPTION) $(NO_UNALIGNED_ACCESS) $(VFE_OPTION) $(AAPCS_OPTION) \
    $(CPPONLYOPTION) $(INSTRUCTION_SET) \
    $(if $(ALWAYS_BUILD_AS_ARM),$(ARM_INSTRUCTION_SET),$(THUMB_INSTRUCTION_SET) $(call makemacrodef,-D,$(COMPILER_THUMB_DEFINES))) \
@@ -5410,7 +5591,7 @@
  
  ## COMPILE CPP Files #################################################################
  
-@@ -674,7 +742,7 @@
+@@ -674,7 +748,7 @@
    $(EXPORT_VTBL_OPTION) $(NO_UNALIGNED_ACCESS) $(VFE_OPTION) $(AAPCS_OPTION) \
    $(COMPILE_ONLY_OPTION) $(INSTRUCTION_SET) \
    $(if $(ALWAYS_BUILD_AS_ARM),$(ARM_INSTRUCTION_SET),$(THUMB_INSTRUCTION_SET) $(call makemacrodef,-D,$(COMPILER_THUMB_DEFINES))) \
@@ -5419,7 +5600,7 @@
  
  ifeq ($(STDCPP),1)
  SYSTEMINCLUDE:=$(SYSTEMINCLUDE) $(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(STDCPP_INCLUDE)))
-@@ -705,7 +773,7 @@
+@@ -705,7 +779,7 @@
  $(eval DEPENDFILE:=$(wildcard $(DEPENDFILENAME)))
  
  # $4 is for language specific options (e.g. C++ vs C)
@@ -5428,7 +5609,7 @@
  	$(call startrule,compile,,$(2))		\
  		$(if $(PERTURBSTARTTIME), $(RANSLEEP) $(PERTURBMSECS) ;,) \
  		$(if $(MULTIFILE_ENABLED), echo $(2) $(3) > $(MULTIFILE_VIAFILE) ;,) \
-@@ -716,24 +784,27 @@
+@@ -716,24 +790,27 @@
  			$(if $(USE_PROFILER_FEEDBACK),--profile=$(call dblquote,$(ARM_PROFILER_FILE)),) \
  			$(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS))				\
  			$(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\
@@ -5442,7 +5623,8 @@
 +			$(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(1).d)) \
                          $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \
  			$(if $(MULTIFILE_ENABLED),--multifile $(OUTPUT_OPTION) $(MULTIFILEOBJECT) \
- 			--via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<))  \
+-			--via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<))  \
++			--via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<)) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \
  	$(call endrule,compile)
  
 -CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
@@ -5463,7 +5645,25 @@
  endif
  
  # individual source file compilation
-@@ -809,24 +880,27 @@
+@@ -780,7 +857,7 @@
+ 			$(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(USERINCLUDE)))      \
+ 			$(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE)))  \
+ 			$(if $(NOHIDEALL),--no_hide_all,) \
+-			$$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) \
++			$$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \
+ 	$(call endrule,e32cpponly)
+ 
+ CLEANTARGETS:=$$(CLEANTARGETS) $(CPPONLYTARGET)
+@@ -793,7 +870,7 @@
+ define e32abiv2_listing
+ # $1 is the sourcefile
+ 
+-$(eval LISTINGTARGET:=$(strip $(call extractandmap,$(CPPFILEEXTENSIONS) $(CFILEEXTENSIONS),.$(subst _,.,$(call sanitise,$(FULLVARIANTPATH))).$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(POSTLINKFILETYPE)).lst,$1)))
++$(eval LISTINGTARGET:=$(strip $(call extractandmap,$(CPPFILEEXTENSIONS) $(CFILEEXTENSIONS),.$(subst _,.,$(call sanitise,$(FULLVARIANTPATH))).$(TARGET).$(TARGETEXT).lst,$1)))
+ $(eval DEPENDFILENAME:=$(call map2listfile,$1).d)
+ $(eval DEPENDFILE:=$(wildcard $(DEPENDFILENAME)))
+ 
+@@ -809,24 +886,27 @@
  			$(OPTION_COMPILER) 						\
  			$(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS))				\
  			$(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$(call concat, $(PREINCLUDE_OPTION) ,$(call dblquote,$(PREINCLUDE)))\
@@ -5474,8 +5674,9 @@
  			$(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$(call dblquote,$(SYSTEMINCLUDE)))  \
  			$(if $(NOHIDEALL),--no_hide_all,) \
 -			$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME)) \
+-			$$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) \
 +			$(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME))) \
- 			$$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) \
++			$$(call dblquote, $$<) $(OUTPUT_OPTION) $$(@) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \
  	$(call endrule,e32listing)
  
  CLEANTARGETS:=$$(CLEANTARGETS) $(LISTINGTARGET)
@@ -5498,7 +5699,14 @@
  endif
  
  endef
-@@ -852,17 +926,32 @@
+@@ -846,23 +926,38 @@
+ # separate arguments are interpreted as a single argument when passed to bash
+ FIVESPACES=$(BLANK)     $(BLANK)
+ 
+-FREEZEGUARD:=TARGET_$(TARGET)_$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(POSTLINKFILETYPE))_$(IMPORTLIBPATH)_EFREEZE
++FREEZEGUARD:=TARGET_$(TARGET)_$(TARGETEXT)_$(IMPORTLIBPATH)_EFREEZE
+ 
+ define e32freeze
  
  FREEZE:: $(1)
  	$(call startrule,freeze,,$(RESOLVED_DEFFILE)) \
@@ -5538,7 +5746,16 @@
  endif
  
  endif
-@@ -912,24 +1001,26 @@
+@@ -892,7 +987,7 @@
+ 			$(call makemacrodef,-D,$(COMPILER_INTERWORK_DEFINES) $(CDEFS) $(CIADEFS)) $(CPP_LANG_OPTION)      \
+ 	 		$(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(USERINCLUDE)))     \
+ 	 		$(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(SYSTEMINCLUDE))) \
+-	 		$$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \
++	 		$$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \
+ 	$(call endrule,cia2cpp2o)
+ 
+ 
+@@ -912,24 +1007,26 @@
         $(if $(PREINCLUDE),$(PREINCLUDE_OPTION) ,)$$(call concat, $(PREINCLUDE_OPTION) ,$$(call dblquote,$(PREINCLUDE))) \
         $(if $(USERINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(USERINCLUDE))) \
         $(if $(SYSTEMINCLUDE),$(COMPILER_SYSTEM_INCLUDE_OPTION),)$$(call concat, $(COMPILER_SYSTEM_INCLUDE_OPTION),$$(call dblquote,$(SYSTEMINCLUDE))) \
@@ -5552,7 +5769,7 @@
 -	$(CC) $(e32abiv2_PREFILE_OPTIONS) $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) && \
 -	$(CC) -M $(e32abiv2_PREFILE_OPTIONS) --depend_format=unix \
 -	  $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) > $(call dblquote,$(e32abiv2_PREFILE).d) \
-+	$(CC) $(e32abiv2_PREFILE_OPTIONS) $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) \
++	$(CC) $(e32abiv2_PREFILE_OPTIONS) $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \
 +	$(if $(NO_DEPEND_GENERATE),,&& $(CC) -M $(e32abiv2_PREFILE_OPTIONS) --depend_format=unix $(OUTPUT_OPTION) $$@ $$(call dblquote,$1) > $(call dblquote,$(e32abiv2_PREFILE).d)) \
  	$(call endrule,cia2cpp)
  
@@ -5574,18 +5791,20 @@
  endif
  
  endef
-@@ -960,21 +1051,26 @@
+@@ -960,21 +1057,26 @@
  	$(call startrule,asmcompile,,$(2)) \
  		$(if $(PERTURBSTARTTIME),$(RANSLEEP) $(PERTURBMSECS) ;,) \
  		$(CC) $(e32abiv2_asm_OPTIONS) \
 -		$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME)) \
+-	 	$$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \
 +		$(if $(NO_DEPEND_GENERATE),,$(DEPEND_OPTION) $(call dblquote,$(DEPENDFILENAME))) \
- 	 	$$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \
++	 	$$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \
  	$(call endrule,asmcompile)
 +ifeq ($(NO_DEPEND_GENERATE),)
  	$(call startrule,asmdependencies) \
  		$(CC) -M $(subst --no_rtti,,$(e32abiv2_asm_OPTIONS)) --depend_format=unix \
- 	  	$(OUTPUT_OPTION) $$@ $$(call dblquote,$2) > $(call dblquote,$(DEPENDFILENAME)) \
+-	  	$(OUTPUT_OPTION) $$@ $$(call dblquote,$2) > $(call dblquote,$(DEPENDFILENAME)) \
++	  	$(OUTPUT_OPTION) $$@ $$(call dblquote,$2) > $(call dblquote,$(DEPENDFILENAME)) $(if $(USE_RVCT22_DELETE_WORKAROUND),$(RVCT22_DELETE_WORKAROUND)) \
  	$(call endrule,asmdependencies)
 +endif
  
@@ -5607,7 +5826,44 @@
  endif
  
  CREATABLEPATHS:=$$(CREATABLEPATHS) $(INTERMEDIATEPATH)
-@@ -1116,7 +1212,6 @@
+@@ -1000,7 +1102,7 @@
+         # Default values
+         ROMFILETYPE:=file
+         ROMFILE:=$(TARGET).$(REQUESTEDTARGETEXT)
+-        ROMPATH:=sys/bin/
++        ROMPATH:=$(if $(TARGETPATH),$(TARGETPATH)/,sys/bin/)
+         ROMDECORATIONS:=
+         ROMFILETYPE_RAM:=data
+         ROMFILE_RAM:=$(TARGET).$(REQUESTEDTARGETEXT)
+@@ -1021,6 +1123,7 @@
+         endif
+ 
+ 
++        DATATEXT:=
+         ifeq ($(TESTCODE),TRUE)
+         	# Add 'TEST' to the .iby filename
+         	ROMTEST:=test
+@@ -1031,8 +1134,6 @@
+                     DATATEXT:="data=/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TEST_OPTION).bat test/$(MODULE).$(TEST_OPTION).bat"
+                 endif
+             endif
+-        else
+-        	DATATEXT:=
+         endif
+ 
+         # ROMTARGET
+@@ -1078,8 +1179,8 @@
+ 	        $(call startrule,rombuild)	\
+ 	        $(GNUMKDIR) -p $(ROMDIR) \
+             $(if $(ROMFILE_CREATED_$(TOBLDINF)),,&& echo -e "// $(subst $(EPOC_ROOT)/,,$(ROMFILENAME))\n//\n$(DATATEXT)" > $(ROMFILENAME)) \
+-            $(if $(BUILDROMTARGET),&& echo "$(ROMFILETYPE)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET).$(REQUESTEDTARGETEXT)   $(1)$(ROMDECORATIONS)" >> $(ROMFILENAME))	\
+-	        $(if $(RAMTARGET),&& echo "$(ROMFILETYPE_RAM)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET).$(REQUESTEDTARGETEXT)   $(ROMPATH_RAM)$(ROMFILE_RAM)$(ROMDECORATIONS_RAM)" >> $(ROMFILENAME))	\
++            $(if $(BUILDROMTARGET),&& echo "$(ROMFILETYPE)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(REQUESTEDTARGETEXT)   $(1)$(ROMDECORATIONS)" >> $(ROMFILENAME))	\
++	        $(if $(RAMTARGET),&& echo "$(ROMFILETYPE_RAM)=/epoc32/release/##$(ABIDIR)##/##BUILD##/$(TARGET)$(if $(EXPLICITVERSION),{$(VERSIONHEX)},).$(REQUESTEDTARGETEXT)   $(ROMPATH_RAM)$(ROMFILE_RAM)$(ROMDECORATIONS_RAM)" >> $(ROMFILENAME))	\
+ 	        $(call endrule,buildromfiletarget)
+     endef
+ 
+@@ -1116,7 +1217,6 @@
      PREVIOUSVARIANTTYPE:=$(VARIANTTYPE)
  
      WHATRELEASE:=$(WHATRELEASE) $(ROMFILENAME)
@@ -5615,7 +5871,7 @@
  endif
  
  # Deal with test code batch files generation.
-@@ -1127,7 +1222,6 @@
+@@ -1127,7 +1227,6 @@
      BATCHFILE_CREATED_$(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH):=1
      TARGET_CREATED_$(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)_$(TARGET):=1
      WHATRELEASE:=$(WHATRELEASE) $(EPOCROOT)/epoc32/data/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)
@@ -5623,7 +5879,7 @@
  endif
  
  ###################### End of Build ROMFILE target ######################
-@@ -1167,12 +1261,12 @@
+@@ -1167,12 +1266,12 @@
  $(call makepath,$(CREATABLEPATHS))
  
  ## Clean up
@@ -5642,7 +5898,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2fsy.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2fsy.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2fsy.flm	2010-05-18 19:32:34.725348467 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2fsy.flm	2010-05-17 18:47:53.040843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2fsy.flm	2010-06-04 12:09:24.975850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -5676,7 +5932,13 @@
  CANIGNORENONCALLABLE:=1
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2kdll.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2kdll.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2kdll.flm	2010-05-18 19:32:34.725348467 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2kdll.flm	2010-05-17 18:47:53.044842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2kdll.flm	2010-06-04 12:09:24.975850000 +0100
+@@ -1,4 +1,4 @@
+-# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
++# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+ # All rights reserved.
+ # This component and the accompanying materials are made available
+ # under the terms of the License "Eclipse Public License v1.0"
 @@ -27,7 +27,7 @@
  
  # Determine what kind of entrypoint option to set
@@ -5686,9 +5948,17 @@
  
  ifeq ("$(NEED_ENTRYPOINT_LIBRARY)","True")
  LINKER_ENTRYPOINT_SETTING:=$(LINKER_ENTRYPOINT_SETTING) $(LINKER_ENTRYPOINT_LIBDEP)
+@@ -48,6 +48,7 @@
+ IMPORTLIBRARYREQUIRED:=1
+ endif
+ POSTLINKDEFFILE:=$(DEFFILE)
++SUPPORT_FREEZE:=1
+ 
+ # No exception support for kernel code?
+ EXCEPTIONS:=$(NO_EXCEPTIONS)
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2kext.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2kext.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2kext.flm	2010-05-18 19:32:34.725348467 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2kext.flm	2010-05-17 18:47:53.044842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2kext.flm	2010-06-04 12:09:24.975850000 +0100
 @@ -34,7 +34,7 @@
  
  # Default Linker settings for this target type
@@ -5700,7 +5970,7 @@
  LINKER_ENTRYPOINT_SETTING:=$(LINKER_ENTRYPOINT_SETTING) $(LINKER_ENTRYPOINT_LIBDEP)
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2ldd.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2ldd.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2ldd.flm	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2ldd.flm	2010-05-17 18:47:53.044842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2ldd.flm	2010-06-04 12:09:24.975850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -5734,7 +6004,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2pdd.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2pdd.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2pdd.flm	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2pdd.flm	2010-05-17 18:47:53.044842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2pdd.flm	2010-06-04 12:09:24.979850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -5767,7 +6037,7 @@
  UID2:=100039d0
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2pdl.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2pdl.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2pdl.flm	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2pdl.flm	2010-05-17 18:47:53.044842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2pdl.flm	2010-06-04 12:09:24.979850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -5802,7 +6072,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm: e32abiv2pdll.flm
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2plugin.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2plugin.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2plugin.flm	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2plugin.flm	2010-05-17 18:47:53.044842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2plugin.flm	2010-06-04 12:09:24.979850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -5866,7 +6136,7 @@
  endif
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2stddll.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2stddll.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2stddll.flm	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2stddll.flm	2010-05-17 18:47:53.044842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2stddll.flm	2010-06-04 12:09:24.979850000 +0100
 @@ -29,7 +29,7 @@
  
  # Default Linker settings for this target type
@@ -5878,7 +6148,7 @@
  ifeq ("$(NEED_ENTRYPOINT_LIBRARY)","True")
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2stdexe.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2stdexe.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2stdexe.flm	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2stdexe.flm	2010-05-17 18:47:53.044842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2stdexe.flm	2010-06-04 12:09:24.979850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -5914,7 +6184,7 @@
  # STDEXEs need the c runtime library
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2textnotifier2.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2textnotifier2.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2textnotifier2.flm	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2textnotifier2.flm	2010-05-17 18:47:53.048842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2textnotifier2.flm	2010-06-04 12:09:24.979850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -5948,7 +6218,7 @@
  POSTLINKDEFFILE:=$(DEFFILE)
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2var2.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2var2.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2var2.flm	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2var2.flm	2010-05-17 18:47:53.048842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2var2.flm	2010-06-04 12:09:24.979850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -5992,7 +6262,7 @@
  # other invocations so we are going to save it on a stack
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2var.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2var.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/e32abiv2var.flm	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2var.flm	2010-05-17 18:47:53.048842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/e32abiv2var.flm	2010-06-04 12:09:24.979850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -6036,7 +6306,7 @@
  # other invocations so we are going to save it on a stack
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/emulator.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/emulator.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/emulator.xml	2010-05-18 19:32:34.729348906 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/emulator.xml	2010-05-17 18:47:53.048842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/emulator.xml	2010-06-04 12:09:24.979850000 +0100
 @@ -89,7 +89,6 @@
  		<param name='OPT.DEFINE'/>
  		<param name='OPT.DEFFILE'/>
@@ -6081,7 +6351,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/gccxml.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/gccxml.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/gccxml.flm	2010-05-18 19:32:34.733348925 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/gccxml.flm	2010-05-17 18:47:53.048842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/gccxml.flm	2010-06-04 12:09:24.983850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -6146,7 +6416,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/msvctools.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/msvctools.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/msvctools.flm	2010-05-18 19:32:34.733348925 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/msvctools.flm	2010-05-17 18:47:53.052842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/msvctools.flm	2010-06-04 12:09:24.983850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -6225,7 +6495,7 @@
 +$(call raptor_release,$(INSTALLTARGET))
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/msvctools.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/msvctools.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/msvctools.xml	2010-05-18 19:32:34.733348925 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/msvctools.xml	2010-05-17 18:47:53.052842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/msvctools.xml	2010-06-04 12:09:24.987850000 +0100
 @@ -42,7 +42,6 @@
  		<param name='OPT.LISTING'/>
  		<param name='OPT.OBJECTFILE'/>
@@ -6236,64 +6506,327 @@
  		<param name='OPT.SYSINCLUDE'/>
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/resource.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/resource.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/resource.flm	2010-05-18 19:32:34.733348925 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/resource.flm	2010-05-17 18:47:53.052842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/resource.flm	2010-06-04 12:09:24.987850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
  # All rights reserved.
  # This component and the accompanying materials are made available
  # under the terms of the License "Eclipse Public License v1.0"
-@@ -101,8 +101,6 @@
- 	@if [ ! -f $$@ ]; then echo "DATADIR: /$(RSSBASENAME)" > $$@ ; fi
- 	@echo -e "\n/z$(TARGETPATH)/$(TARGET_lower).rsc : $(RSSBASENAME).rpp" >> $$@
+@@ -48,119 +48,121 @@
+ # Ensure that RELEASABLES and CLEANTARGETS cannot expand indefinitely in successive calls to this flm:
+ CLEANTARGETS:=
+ RELEASABLES:=
++CREATABLEPATHS:=
+ 
+ # There is only one resource header (.rsg) file and we only
+ # make that if we are asked.
+ RSGDIR:=$(EPOCROOT)/epoc32/include
++# If there are multiple LANGUAGES then it is the last one in the list
++# which produces the header.
++HEADLANG:=$(lastword $(LANGUAGES:SC=sc))
+ ifneq ($(or $(HEADER),$(HEADERONLY)),)
+         RESOURCEHEADER:=$(RSGDIR)/$(HEADER)
+ 
+-        # If there are multiple LANGUAGES then it is the last one in the list
+-        # which produces the header.
+-        HEADLANG:=$(lastword $(LANGUAGES:SC=sc))
+ else
+-	HEADLANG:=
+     RESOURCEHEADER:=
+ endif
+ 
+ # we create intermediate .rpp and .d files
+-INTERBASE:=$(OUTPUTPATH)/$(TARGET_lower)$(if $(TARGETPATH),_$(subst /,_,$(TARGETPATH)),)
++INTERBASE_TMP:=$(OUTPUTPATH)/$(TARGET_lower)_$(notdir $(basename $(SOURCE)))
+ 
+-################################## localisation ###########################$(GNUMKDIR)#############
+-# Only make copies for full resource builds
+ 
+-# Initialise to prevent RELEASABLES spill-over between calls
+-DESTRPP:=
+-INFOFILE:=
+-
+-ifeq ($(HEADERONLY),)
+-
+-RSSBASENAME:=$(call lowercase,$(basename $(notdir $(SOURCE))))
+-DESTRPP:=$(EPOCROOT)/epoc32/localisation/$(RSSBASENAME)/rsc/$(RSSBASENAME).rpp
+-$(call makepath,$(EPOCROOT)/epoc32/localisation/$(RSSBASENAME)/rsc)
++# common pre-processor options
+ 
+-INFOFILE:=$(EPOCROOT)/epoc32/localisation/group/$(RSSBASENAME).info
+-# If there are MULTIPLE languages then copy the .rpp for the last one
+-RPPLANG:=$(lastword $(LANGUAGES:SC=sc))
++# We really should be using -iquote with a recent cpp.  This is a note for when we do update:
++#CPPOPT:=-nostdinc -undef -Wno-trigraphs -D_UNICODE -include $(PRODUCT_INCLUDE)\
++# -I$(dir $(SOURCE)) $(foreach I, $(USERINCLUDE),-iquote $(I) ) $(foreach J,$(SYSTEMINCLUDE),-I $(J) )
+ 
+-# Copy .rpp files from epoc32/build/ to epoc32/localisation/x/rsc/x.rpp and create .info files in localisation
+-define CreateRppAndInfo
++CPPOPT:=-nostdinc -undef -Wno-trigraphs -D_UNICODE -include $(PRODUCT_INCLUDE)\
++ -I$(dir $(SOURCE)) $(foreach I, $(USERINCLUDE),-I$(I) ) -I- $(foreach J,$(SYSTEMINCLUDE),-I$(J) )
+ 
+-ifeq ($(RESOURCE_$(call sanitise,$(SOURCE))),)
+-RESOURCE_$(call sanitise,$(SOURCE)):=1
++CREATABLEPATHS:=$(CREATABLEPATHS) $(RSCDIR) $(RSGDIR) $(OUTPUTPATH) 
+ 
+-RESOURCE:: $(DESTRPP) $(INFOFILE)
++# We intend to generate the resource in an intermediate location and copy to the targetpath to
++# ensure that when the "same" resource is built into separare target paths, it doesn't have to be 
++# completely recreated each time - just copied.
++RSCCOPYDIRS:=$(RSCDIR)
+ 
+-$(DESTRPP): $(INTERBASE)_$(RPPLANG).rpp
+-	$(call startrule,rppfilecopy,FORCESUCCESS) \
+-	$(GNUCP) $$< $$@ \
+-	$(call endrule,rppfilecopy)
++# additional binary resource copies performed based on BINCOPYDIRS
++ifneq ($(BINCOPYDIRS),)
++        RSCCOPYDIRS:=$(RSCCOPYDIRS) $(subst //,/,$(patsubst %,%/$(if $(TARGETPATH),/z/$(TARGETPATH),),$(BINCOPYDIRS)))
++endif
++CREATABLEPATHS:=$(CREATABLEPATHS) $(RSCCOPYDIRS)
+ 
+-$(INFOFILE)::
+-	@if [ ! -d $(EPOCROOT)/epoc32/localisation/group ]; then $(GNUMKDIR) -p $(EPOCROOT)/epoc32/localisation/group; fi
+-	@if [ ! -f $$@ ]; then echo "DATADIR: /$(RSSBASENAME)" > $$@ ; fi
+-	@echo -e "\n/z$(TARGETPATH)/$(TARGET_lower).rsc : $(RSSBASENAME).rpp" >> $$@
++###############################################################################
  
 -CLEANTARGETS:=$$(CLEANTARGETS) $(DESTRPP) $(INFOFILE)
--
- endif
- endef
- 
-@@ -114,7 +112,7 @@
- $(call makepath,$(INTERBASE))
- 
- # common pre-processor options
+ 
+-endif
+-endef
++define preprocessresource
++# $1 is the RPPFILE		(eg. /epoc32/build/xxx/b_sc.rpp)
++# $2 is the LANGUAGE		(eg. sc or 01 or 02 ...)
++# $3 is the "primary" language on which all the others depend
+ 
+-$(eval $(call CreateRppAndInfo))
+-endif
+-################################# end of localisation ###################################
++  ifeq ($(TARGET_$(call sanitise,$1)),)
++    TARGET_$(call sanitise,$1):=1
++    $(if $(FLMDEBUG),$$(info <debug>preprocessresource: $1 LANG:$2 dep $3</debug>))
+ 
+-# make the output directories while reading makefile - some build engines prefer this
+-$(call makepath,$(INTERBASE))
+ 
+-# common pre-processor options
 -CPPOPT:=-nostdinc -undef -D_UNICODE -include $(PRODUCT_INCLUDE)\
-+CPPOPT:=-nostdinc -undef -Wno-trigraphs -D_UNICODE -include $(PRODUCT_INCLUDE)\
-  -I$(dir $(SOURCE)) $(foreach I, $(USERINCLUDE),-I$(I) ) -I- $(foreach J,$(SYSTEMINCLUDE),-I$(J) )
- 
- CREATABLEPATHS:=$(RSCDIR) $(RSGDIR) $(OUTPUTPATH)
-@@ -174,7 +172,6 @@
- 
-    ifeq ($(TARGET_$(call sanitise,$2)),)
-            TARGET_$(call sanitise,$2):=1
+- -I$(dir $(SOURCE)) $(foreach I, $(USERINCLUDE),-I$(I) ) -I- $(foreach J,$(SYSTEMINCLUDE),-I$(J) )
++    # Correct dependency information when a header file can't be found.
++    # If the c preprocessor can't find a dependency it appears as it did in the #include statement
++    # e.g. "filename.mbg" or "filename.rsg" in the dependency file.
++
++ifneq ($(NO_DEPEND_GENERATE),)
++    # This version minimises the size of dependency files, to contain only .mbg and .rsg deps.
++    # It allows resources to be built in the right order but doesn't impose the weight of
++    # of full dependency information which can overwhelm make in large builds.
++    # The strategy is filter lines which don't have .rsg or .mbg dependencies in them and
++    # to sift each line to leave out non-relevant things like other header files, .hrh 
++    # files etc.  In the end don't print anything at all if we did not find the target.
+ 
+-CREATABLEPATHS:=$(RSCDIR) $(RSGDIR) $(OUTPUTPATH)
++define  DEPENDENCY_CORRECTOR
++{ $(DEPCRUNCH) --extensions rsg,mbg --assume '$$$$(EPOCROOT)/epoc32/include' ; } 
++endef
+ 
+-# additional binary resource copies performed based on BINCOPYDIRS
+-RSCCOPYDIRS:=
+-ifneq ($(BINCOPYDIRS),)
+-        RSCCOPYDIRS:=$(subst //,/,$(patsubst %,%/$(if $(TARGETPATH),/z/$(TARGETPATH),),$(BINCOPYDIRS)))
+-        CREATABLEPATHS:=$(CREATABLEPATHS) $(RSCCOPYDIRS)
++else
++    # This can correct the dependencies by assuming that the file will be in epoc32\include as this is the default
++    DEPENDENCY_CORRECTOR:=$(GNUSED)  -r 's% ([^ \/]+\.((rsg)|(mbg)))% $(EPOCROOT)\/epoc32\/include\/\1%ig' 
+ endif
+ 
+-###############################################################################
+-define preprocessresource
+-# $(1) is the RPPFILE		(eg. /epoc32/build/xxx/b_sc.rpp)
+-# $(2) is the related RESOURCEFILE if any (eg. /a/b.rsc)
+-# $(3) is the LANGUAGE		(eg. sc or 01 or 02 ...)
+ 
+-  ifeq ($(TARGET_$(call sanitise,$1)),)
+-    TARGET_$(call sanitise,$1):=1
+-    $(if $(FLMDEBUG),$(info preprocessresource: $(1) for $(2) LANG:$(3)))
++    ifeq "$1" "$3"
++        RESOURCE_DEPS:: $1.d
+ 
+-    RESOURCE_DEPS:: $(1).d
+-    $(1).d: $(SOURCE)
++        $1.d: $(SOURCE)
+ 	  $(call startrule,resourcedependencies,FORCESUCCESS) \
+-	  $(GNUCPP) -C -DLANGUAGE_$(3) -DLANGUAGE_$(subst sc,SC,$(3)) $(call makemacrodef,-D,$(MMPDEFS))\
+-	  $(CPPOPT) $(SOURCE) -M -MG -MT"$(1)" | \
+-	  $(GNUSED)  -r 's# ([^ \/]+\.((rsg)|(mbg)))# $(EPOCROOT)\/epoc32\/include\/\1#ig' > $(1).d \
++	  $(GNUCPP) -DLANGUAGE_$2 -DLANGUAGE_$(subst sc,SC,$2) $(call makemacrodef,-D,$(MMPDEFS))\
++	  $(CPPOPT) $(SOURCE) -M -MG -MT"$1" | \
++	  $$(DEPENDENCY_CORRECTOR) >$$@ \
+ 	  $(call endrule,resourcedependencies)
+ 
+-    $(1): $(1).d
++         $1 : $1.d
++
++    else
++         $1 : $3
++    endif
++
++    $1:
+ 	  $(call startrule,resourcepreprocess,FORCESUCCESS) \
+-	  $(GNUCPP) -C -DLANGUAGE_$(3) -DLANGUAGE_$(subst sc,SC,$(3)) $(call makemacrodef,-D,$(MMPDEFS))\
++	  $(GNUCPP) -C -DLANGUAGE_$2 -DLANGUAGE_$(subst sc,SC,$2) $(call makemacrodef,-D,$(MMPDEFS))\
+ 	  $(CPPOPT) $(SOURCE) -o $$@ \
+ 	  $(call endrule,resourcepreprocess)
++    endif
+ 
+-    CLEANTARGETS:= $$(CLEANTARGETS) $(1)
++    CLEANTARGETS:= $$(CLEANTARGETS) $1
+ 
+-    $(eval DEPENDFILENAME:=$(1).d)
++    ifeq "$(MAKEFILE_GROUP)" "RESOURCE"
++    ifeq "$1" "$3"
++      $(eval DEPENDFILENAME:=$1.d)
+     $(eval DEPENDFILE:=$(wildcard $(DEPENDFILENAME)))
+ 
+     CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
+     ifneq "$(DEPENDFILE)" ""
+       ifeq "$(filter %CLEAN,$(call uppercase,$(MAKECMDGOALS)))" ""
++          ifeq "$(MAKEFILE_GROUP)" "RESOURCE"
+         -include $(DEPENDFILE)
+       endif
+     endif
++      endif
++    endif
+ 
+   endif
+ endef # preprocessresource #
+@@ -168,43 +170,30 @@
+ ###############################################################################
+ define copyresource
+ # $(1) is the source
+-# $(2) is the destination
++# $(2) is the space separated list of destinations which must be filenames
+ 
+-RELEASABLES:=$$(RELEASABLES) $(2)
++   RELEASABLES:=$$(RELEASABLES) $(2)
+ 
+-   ifeq ($(TARGET_$(call sanitise,$2)),)
+-           TARGET_$(call sanitise,$2):=1
 -        CLEANTARGETS:=$$(CLEANTARGETS) $2
- 
-         RESOURCE:: $2
-         ## perform additional copies of binaries
-@@ -201,7 +198,6 @@
+-
+-        RESOURCE:: $2
+-        ## perform additional copies of binaries
+-        #
+-        # Only certain builds require further copies of the generated resource binaries
+-        #
+-        $(2): $(1)
+-		$(call startrule,resourcecopy,FORCESUCCESS) \
+-		$(GNUCP) $$< $$@ \
+-		$(call endrule,resourcecopy)
+-
+-   endif
++   $(info <finalcopy source='$1'>$2</finalcopy>)
+ 
+ endef # copyresource #
+ 
+ ###############################################################################
+ define generateresource
+ 
+-# $(1) is the resource filename e.g. /a/b/resource.rsc
++# $(1) is the intermediate resource filename with path e.g. /a/b/resource.rsc
+ # $(2) is the preprocessed resource to make it from
+ # $(3) is the language e.g. sc or 01 or 02
++# $(4) is the target resource filename without path
+ 
+-    RELEASABLES:=$$(RELEASABLES) $(1)
  
          ifeq ($(TARGET_$(call sanitise,$1)),)
                  TARGET_$(call sanitise,$1):=1
 -            CLEANTARGETS:=$$(CLEANTARGETS) $(1)
  
-             $(if $(FLMDEBUG),$(info generateresource: $(1) from $(2) LANG:$(3)),)
- 
-@@ -236,7 +232,6 @@
+-            $(if $(FLMDEBUG),$(info generateresource: $(1) from $(2) LANG:$(3)),)
++            $(if $(FLMDEBUG),$(info <debug>generateresource: $(1) from $(2) LANG:$(3)</debug>),)	
++            $(if $(FLMDEBUG),$(info <debug>generateresource: copies: $(sort $(patsubst %,%/$(notdir $(1)),$(RSCCOPYDIRS)))</debug>))
+ 
++            CLEANTARGETS:=$$(CLEANTARGETS) $(1)
+ 
+             RESOURCE:: $(1)
+ 
+@@ -214,11 +203,15 @@
+ 			$(call endrule,resourcecompile)
+ 
+         endif
++
+ #	Whether or not we have generated this resource for some other variant, check if there
+ #       are any new copies to be made for this variant. e.g. winscw requires that we make
+-#       some extra copies.
++#       some extra copies.  We tried to copy after running rcomp itself but we still need these
++#       targets for the sake of dependencies or, for example, if someone merely adds a new copy 
++#       when the resource is up-to-date
++
++        $(call copyresource,$1,$(sort $(patsubst %,%/$4,$(RSCCOPYDIRS))))
+ 
+-        $(foreach F,$(sort $(patsubst %,%/$(notdir $(1)),$(RSCCOPYDIRS))),$(call copyresource,$(1),$(F)))
+ 
+         # individual source file compilation
+         SOURCETARGET_$(call sanitise,$(SOURCE)): $(1)
+@@ -236,8 +229,7 @@
  
          ifeq ($(TARGET_$(call sanitise,$1)),)
                  TARGET_$(call sanitise,$1):=1
 -                CLEANTARGETS:= $$(CLEANTARGETS) $(1)
-                 $(if $(FLMDEBUG),$(info resourceheader: $(1) from $(2) LANG:$(3)))
+-                $(if $(FLMDEBUG),$(info resourceheader: $(1) from $(2) LANG:$(3)))
++                $(if $(FLMDEBUG),$(info <debug>resourceheader: $(1) from $(2) LANG:$(3)</debug>))
  
                  RESOURCE:: $(1)
-@@ -282,7 +277,6 @@
+ 
+@@ -260,19 +252,28 @@
+ # We always create at least the header
+ # even if we sometimes don't create the resources
+ ifneq ($(RESOURCEHEADER),)
+-        $(eval $(call generateresourceheader,$(RESOURCEHEADER),$(INTERBASE)_$(HEADLANG).rpp,$(HEADLANG)))
++        $(eval $(call generateresourceheader,$(RESOURCEHEADER),$(INTERBASE_TMP)_$(HEADLANG).rpp,$(HEADLANG)))
+ endif
+ 
++# The one on which the others will depend i.e. they will 
++# "sit in it's dependency slipstream" or in other words
++# We only have to make one dependency file because all of
++# the other languages will benefit from the dependency file
++# belonging to this language.
++PRIMARYRPPFILE:=$(INTERBASE_TMP)_$(HEADLANG).rpp
+ ifeq ($(HEADERONLY),)
+         # generate a resource file for each language
+         # For sc we generate $(RESBASE).rsc and define LANGUAGE_SC and LANGUAGE_sc.
+-        $(foreach L,$(LANGUAGES:SC=sc),$(eval $(call preprocessresource,$(INTERBASE)_$(L).rpp,$(RESBASE).r$(L),$(L))))
+-        $(foreach L,$(LANGUAGES:SC=sc),$(eval $(call generateresource,$(RESBASE).r$(L),$(INTERBASE)_$(L).rpp,$(L))))
++        $(foreach L,$(LANGUAGES:SC=sc),$(eval $(call preprocessresource,$(INTERBASE_TMP)_$(L).rpp,$(L),$(PRIMARYRPPFILE))))
++
++        ifeq "$(MAKEFILE_GROUP)" "RESOURCE"
++            $(foreach L,$(LANGUAGES:SC=sc),$(eval $(call generateresource,$(INTERBASE_TMP).r$(L),$(INTERBASE_TMP)_$(L).rpp,$(L),$(TARGET_lower).r$(L))))
++        endif
+ else
+         # No resources are going to be made so unless we specifically ask for it, there will be no
+         # preprocessed file from which to create the header:
+ 
+-        $(eval $(call preprocessresource,$(INTERBASE)_$(HEADLANG).rpp,,$(HEADLANG)))
++        $(eval $(call preprocessresource,$(INTERBASE_TMP)_$(HEADLANG).rpp,,$(HEADLANG),$(PRIMARYRPPFILE)))
+ 
+ endif
+ 
+@@ -282,20 +283,19 @@
  ifneq ($(RFIFILE),)
    RESOURCE:: $(RFIFILE)
    RELEASABLES:=$(RELEASABLES) $(RFIFILE)
 -  CLEANTARGETS:=$(CLEANTARGETS) $(RFIFILE)
-   CREATABLEPATHS:=$(CREATABLEPATHS) $(dir $(RFIFILE))
- 
-   RPPFILES:=$(foreach L,$(LANGUAGES:SC=sc),$(INTERBASE)_$(L).rpp)
-@@ -291,11 +285,11 @@
+-  CREATABLEPATHS:=$(CREATABLEPATHS) $(dir $(RFIFILE))
++  CREATABLEPATHS:=$(CREATABLEPATHS) $(dir $(RFIFILE))/
+ 
+-  RPPFILES:=$(foreach L,$(LANGUAGES:SC=sc),$(INTERBASE)_$(L).rpp)
+-  $(eval $(call generaterfifile,$(RFIFILE),$(RPPFILES),$(addsuffix .d,$(RPPFILES))))
++  RPPFILES:=$(foreach L,$(LANGUAGES:SC=sc),$(INTERBASE_TMP)_$(L).rpp)
++  $(eval $(call generaterfifile,$(RFIFILE),$(RPPFILES),$(PRIMARYRPPFILE).d))
+ endif
  
  
  ## Clean up
@@ -6311,7 +6844,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm: run.mk
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/standard.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/standard.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/standard.xml	2010-05-18 19:32:34.737348805 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/standard.xml	2010-05-17 18:47:53.056842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/standard.xml	2010-06-04 12:09:24.987850000 +0100
 @@ -5,11 +5,12 @@
  		<param name='ALWAYS_BUILD_AS_ARM' default=''/>
  		<param name='SET_ARMINC' default=''/>
@@ -6335,7 +6868,15 @@
  		<param name='LINKEROPTION_ARMCC' default=''/>
  		<param name='LISTING_OPTION' default='-S'/>
  		<param name='MMPDEFS' default=''/>
-@@ -58,9 +60,9 @@
+@@ -38,6 +40,7 @@
+ 		<param name='SOURCE' default=''/>
+ 		<param name='TARGET'/>
+ 		<param name='TARGET_lower'/>
++		<param name='TARGETPATH' default=''/>
+ 		<param name='LTCG' default=''/>
+ 		<param name='LTCG_OPTION' default='--ltcg'/>
+ 		<param name='TARGETTYPE'/>
+@@ -58,9 +61,9 @@
  		<param name='EPOCSTACKSIZE' default=''/>
  		<param name='EPOCFIXEDPROCESS' default=''/>
  		<param name='EPOCALLOWDLLDATA' default=''/>
@@ -6346,15 +6887,16 @@
  		<param name='STDCPP' default=''/>
  		<param name='NOSTDCPP' default=''/>
  		<param name='NEWLIB' default=''/>
-@@ -72,7 +74,6 @@
+@@ -72,7 +75,7 @@
  		<param name='CC.VAL.SOFTVFP_MAYBE_VFPV2' default=''/>
  		<param name='CODE_SEGMENT_START' default=''/>
  		<param name='TOOLCHAIN' default=''/>
 -		<param name='TOOLCHAINVERSION' default=''/>
++		<param name='USE_RVCT22_DELETE_WORKAROUND' default=''/>
  	</interface>
  	<interface name="Symbian.e32abiv2" extends="Symbian.mmp" flm="e32abiv2.flm">
  		<param name='SUPPORTS_STDCPP_NEWLIB' default='1'/>
-@@ -92,8 +93,9 @@
+@@ -92,8 +95,9 @@
  		<param name='CFLAGS'/>
  		<param name='COMMANDFILE_OPTION'/>
  		<param name='COMPILE_ONLY_OPTION'/>
@@ -6365,7 +6907,7 @@
  		<param name='COMPILER_INTERWORK_DEFINES'/>
  		<param name='COMPILER_SYSTEM_INCLUDE_OPTION'/>
  		<param name='COMPILER_THUMB_DEFINES'/>
-@@ -105,7 +107,6 @@
+@@ -105,7 +109,6 @@
  		<param name='DEBUG_FORMAT'/>
  		<param name='DEBUG_INFO'/>
  		<param name='DEPEND_OPTION'/>
@@ -6373,7 +6915,7 @@
  		<param name='ELF2E32'/>
  		<param name='EFREEZE'/>
  		<param name='EFREEZE_REMOVE_OPTION' default=''/>
-@@ -116,6 +117,7 @@
+@@ -116,14 +119,15 @@
  		<param name='FEATURELISTFILES' default=''/>
  		<param name='FEATUREVARIANT' default=''/>
  		<param name='FEATUREVARIANTNAME' default=''/>
@@ -6381,7 +6923,8 @@
  		<param name='FPMODE_OPTION'/>
  		<param name='FROMELF'/>
  		<param name='FULLVARIANTPATH'/>
-@@ -124,6 +126,7 @@
+-		<param name='GENERATE_ABIV1_IMPLIBS' default=''/>		
+ 		<param name='RVCT3_1' default=''/>
  		<param name='LD'/>
  		<param name='LD_ERRORS_CONTROL_OPTION'/>
  		<param name='LD_WARNINGS_CONTROL_OPTION'/>
@@ -6389,7 +6932,7 @@
  		<param name='LIBPATH'/>
  		<param name='LICENSERETRY_OPTION' default=''/>
  		<param name='LINKER_ADD_STATIC_RUNTIME'/>
-@@ -144,6 +147,8 @@
+@@ -144,6 +148,8 @@
  		<param name='PERL'/>
  		<param name='PERTURBSTARTTIME'/>
  		<param name='PERTURBMSECS' default='500'/>
@@ -6398,7 +6941,7 @@
  		<param name='PREPDEF'/>
  		<param name='PREINCLUDE'/>
  		<param name='PREINCLUDE_OPTION'/>
-@@ -158,6 +163,7 @@
+@@ -158,6 +164,7 @@
  		<param name='RVCTBIN'/>
  		<param name='RVCTINC'/>
  		<param name='RVCTLIB'/>
@@ -6406,7 +6949,7 @@
  		<param name='RW_BASE_OPTION'/>
  		<param name='SBSV1MAKE'/>
  		<param name='NMAKE'/>
-@@ -167,6 +173,7 @@
+@@ -167,10 +174,12 @@
  		<param name='SPLIT_OPTION'/>
  		<param name='KERNEL_STATIC_RUNTIME_LIB'/>
  		<param name='USER_STATIC_RUNTIME_LIB'/>
@@ -6414,7 +6957,12 @@
  		<param name='STATIC_LIBS_LIST'/>
  		<param name='STATIC_LIBS_PATH'/>
  		<param name='STATIC_LIBRARY_DIR'/>
-@@ -207,6 +214,10 @@
+ 		<param name='STATIC_RUNTIME_DIR'/>
++		<param name='SUPPORTS_ABIV1_IMPLIBS'/>		
+ 		<param name='SYMBIAN_CCFLAGS'/>
+ 		<param name='SYMBIAN_LD_MESSAGE_OPTION'/>
+ 		<param name='SYMBIAN_LINK_FLAGS'/>
+@@ -207,6 +216,10 @@
  		<param name='TARGETTYPE' default="dll"/>
  		<param name='UID1' default="10000079"/>
  	</interface>
@@ -6425,7 +6973,7 @@
  	<interface name="Symbian.stddll" extends="Symbian.e32abiv2" flm="e32abiv2stddll.flm">
  		<param name='TARGETTYPE' default="stddll"/>
  		<param name='UID1' default="10000079"/>
-@@ -229,6 +240,8 @@
+@@ -229,6 +242,8 @@
  	</interface>
  	<interface name="Symbian.plugin" extends="Symbian.dll" flm="e32abiv2plugin.flm">
  	</interface>
@@ -6436,7 +6984,7 @@
  	<interface name="Symbian.implib" extends="Symbian.dll" flm="e32abiv2implib.flm">
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/stringtable.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/stringtable.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/stringtable.flm	2010-05-18 19:32:34.737348805 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/stringtable.flm	2010-05-17 18:47:53.056842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/stringtable.flm	2010-06-04 12:09:24.987850000 +0100
 @@ -33,9 +33,7 @@
  
  EXPORT::
@@ -6485,7 +7033,7 @@
 -# 
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/template_ext.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/template_ext.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/template_ext.flm	2010-05-18 19:32:34.737348805 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/template_ext.flm	2010-05-17 18:47:53.056842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/template_ext.flm	2010-06-04 12:09:24.991849000 +0100
 @@ -81,11 +81,10 @@
  # to be target specific to the unique targets
  # that we have created.
@@ -6527,7 +7075,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tools2common.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools2common.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tools2common.flm	2010-05-18 19:32:34.749348513 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools2common.flm	2010-05-17 18:47:53.068842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools2common.flm	2010-06-04 12:09:25.003850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -6609,7 +7157,7 @@
  ## The End
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tools2exe.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools2exe.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tools2exe.flm	2010-05-18 19:32:34.749348513 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools2exe.flm	2010-05-17 18:47:53.068842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools2exe.flm	2010-06-04 12:09:25.003850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -6658,7 +7206,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tools2lib.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools2lib.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tools2lib.flm	2010-05-18 19:32:34.749348513 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools2lib.flm	2010-05-17 18:47:53.068842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools2lib.flm	2010-06-04 12:09:25.003850000 +0100
 @@ -19,7 +19,7 @@
  LIBTARGET:=$(RELEASEPATH)/$(TARGET).a
  
@@ -6670,7 +7218,7 @@
  ## Common build steps (compiling)
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tools.xml /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools.xml
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tools.xml	2010-05-18 19:32:34.745348494 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools.xml	2010-05-17 18:47:53.068842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tools.xml	2010-06-04 12:09:25.003850000 +0100
 @@ -27,6 +27,7 @@
  		<param name='SYSTEMINCLUDE' default=''/>
  		<param name='TARGET'/>
@@ -6697,7 +7245,7 @@
  	<interface name="Tools.lib" extends="Tools.common" flm="tools2lib.flm">
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tracecompiler.mk /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tracecompiler.mk
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/tracecompiler.mk	2010-05-18 19:32:34.749348513 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tracecompiler.mk	2010-05-17 18:47:53.068842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/tracecompiler.mk	2010-06-04 12:09:25.007850000 +0100
 @@ -1,5 +1,4 @@
 -#
 -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -6705,53 +7253,116 @@
  # All rights reserved.
  # This component and the accompanying materials are made available
  # under the terms of the License "Eclipse Public License v1.0"
-@@ -13,15 +12,44 @@
+@@ -13,61 +12,221 @@
  #
  # Description: 
  # Run Trace Compiler on source files to generate trace headers and decode files
 -#
  
++# Expected inputs:
++# TARGETEXT
++
 +# Set project name as <mmp_name>
  TRACE_PRJNAME:=$(basename $(notdir $(PROJECT_META)))
-+
-+TARGETEXT:=$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(POSTLINKFILETYPE))
-+
- # Find out TRACE_PATH
-+# first look for .*/traces/traces_<target_name>_<target_extension>
-+TRACE_PATH:=$(strip $(foreach DIR,$(USERINCLUDE),$(filter %/traces/traces_$(TARGET)_$(TARGETEXT),$(DIR))))
-+
+-# Find out TRACE_PATH
+-TRACE_PATH:=$(strip $(foreach DIR,$(USERINCLUDE),$(filter %/traces_$(TRACE_PRJNAME),$(DIR))))
+-ifeq ($(TRACE_PATH),)
+-TRACE_PATH:=$(strip $(foreach DIR,$(USERINCLUDE),$(filter %/traces,$(DIR))))
++OLDTC_TRACE_PRJNAME:=$(TRACE_PRJNAME)
++TRACE_RELEASABLE_ID:=$(TARGET)_$(TARGETEXT)
++
++define get_trace_path
++$(firstword $(filter %$1, $(USERINCLUDE) $(SYSTEMINCLUDE)))
++endef
++
++$(if $(FLMDEBUG),$(info <debug>INCLUDES=$(USERINCLUDE) $(SYSTEMINCLUDE)</debug>))
++$(if $(FLMDEBUG),$(info <debug>TARGET=$(TARGET) TARGETEXT=$(TARGETEXT)</debug>))
++
++# Find out TRACE_PATH  by looking for the trace folder in SYSTEMINCLUDE and USERINCLUDES
++# traces/traces_<target_name>_<target_extension>
++TRACE_PATH:=$(call get_trace_path,/traces/traces_$(TRACE_RELEASABLE_ID))
 +ifneq ($(TRACE_PATH),)
-+# set project name as <target_name>_<target_extension> instead of <mmp_name>
-+TRACE_PRJNAME:=$(TARGET)_$(TARGETEXT)
-+endif
-+
-+# if not found look for .*/traces_<mmp_name>
-+ifeq ($(TRACE_PATH),)
- TRACE_PATH:=$(strip $(foreach DIR,$(USERINCLUDE),$(filter %/traces_$(TRACE_PRJNAME),$(DIR))))
-+endif
-+
-+# if not found look for .*/traces
- ifeq ($(TRACE_PATH),)
- TRACE_PATH:=$(strip $(foreach DIR,$(USERINCLUDE),$(filter %/traces,$(DIR))))
++  TRACE_PRJNAME:=$(TRACE_RELEASABLE_ID)
++else # obsolete forms for compatibility
++  # traces_<target_name>_<target_ext>
++  TRACE_PATH:=$(call get_trace_path,/traces_$(TARGET)_$(TARGETEXT))
++  ifneq ($(TRACE_PATH),)
++    # set project name as <target_name>_<target_ext> instead of <mmp_name>
++    # to trick old TCom into finding the path.
++    OLDTC_TRACE_PRJNAME:=$(TARGET)_$(TARGETEXT)
++  else
++    # traces_<target_name>_<target_type>
++    TRACE_PATH:=$(call get_trace_path,/traces_$(TARGET)_$(TARGETTYPE))
++    ifneq ($(TRACE_PATH),)
++      # set project name as <target_name>_<target_type> instead of <mmp_name>
++      # to trick old TCom into finding the path.
++      OLDTC_TRACE_PRJNAME:=$(TARGET)_$(TARGETTYPE)
++    else
++      # traces_<mmp_name>
++      TRACE_PATH:=$(call get_trace_path,/traces_$(TRACE_PRJNAME))
++   
++      # traces
++      ifeq ($(TRACE_PATH),)
++       TRACE_PATH:=$(call get_trace_path,/traces)
++      endif
++    endif
++  endif
  endif
  
-+# if not found look for .*/traces_<target_name>_<target_type>
-+ifeq ($(TRACE_PATH),)
-+TRACE_PATH:=$(strip $(foreach DIR,$(USERINCLUDE),$(filter %/traces_$(TARGET)_$(TARGETTYPE),$(DIR))))
-+# set project name as <target_name>_<target_type> instead of <mmp_name>
-+TRACE_PRJNAME:=$(TARGET)_$(TARGETTYPE)
-+endif
 +
 +# initialise (so what output will be correct if we don't actually run the TC)
 +TRACE_DICTIONARY:=
 +AUTOGEN_HEADER:=
-+
-+$(if $(FLMDEBUG),$(info <debug>TRACE_PATH = $(TRACE_PATH)</debug>))
++$(if $(FLMDEBUG),$(info <debug>TRACE_PATH='$(TRACE_PATH)'   TRACE_RELEASABLE_ID='$(TRACE_RELEASABLE_ID)'</debug>))
 +
  # Run trace compiler only if TRACE_PATH exists
  ifneq ($(TRACE_PATH),)
- TRACE_MARKER:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_PRJNAME)_$(UID_TC).done
-@@ -37,14 +65,24 @@
+-TRACE_MARKER:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_PRJNAME)_$(UID_TC).done
++TRACE_MARKER:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).done
+ TRACE_HEADERS:=
+ 
+-TRACE_SOURCE_LIST:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_PRJNAME)_$(UID_TC).sourcelist
++TRACE_SOURCE_LIST:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist
++TRACE_VARIANT_SOURCE_LIST:=$(OUTPUTPATH)/$(VARIANTPLATFORM)/$(VARIANTTYPE)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist
++
++# The sourcelist_grouped_write macro allows us to construct a source list file, 10 objects at a time
++# to avoid limits on argument lengths and sizes on Windows.
++# $1 = list of source files
++# $2 = ">" or ">>" i.e. for creating the file.
++define sourcelist_grouped_write
++	$(call startrule,sourcelist_write) \
++	$(if $1,echo -en '$(subst $(CHAR_SPACE),\n,$(strip $(wordlist 1,10,$1)))\n' $2 $$@,true) \
++	$(call endrule,sourcelist_write) 
++	$(if $1,$(call sourcelist_grouped_write,$(wordlist 11,$(words $1),$1),>>),)
++endef
++
++# Write the list of sources for this variant to a file
++# Make the combined sourcelist for this target depend on it
++# It's all to do with how make treats this file when it 
++# does exist. We are forcing it evaluate the target rule here 
++# even if the file is in place by making it PHONY. In other 
++# words, this is forcing the variant source list to always 
++# be written but later on we might not write to the combined 
++# source list if it isn't going to change.
++define sourcelist_write
++$(TRACE_SOURCE_LIST): $(TRACE_VARIANT_SOURCE_LIST)
+ 
+-# 1. Append to or create the list of source files for trace compiler to process
+-# 2. Check if the hash in trace marker remain unchanged. If not, remove marker so trace compiler will run again. 
+-X:=$(shell set -x ; $(GNUMKDIR) -p $(TRACE_MARKER_PATH) ; $(GNUTOUCH) $(TRACE_SOURCE_LIST) ; echo -e "$(subst $(CHAR_SPACE),\\n,$(SOURCE))" | $(GNUSORT) -u $(TRACE_SOURCE_LIST) - > $(TRACE_SOURCE_LIST).tmp && $(GNUMV) $(TRACE_SOURCE_LIST).tmp $(TRACE_SOURCE_LIST) ; $(GNUMD5SUM) -c $(TRACE_MARKER) || $(GNURM) $(TRACE_MARKER))
++.PHONY:: $(TRACE_VARIANT_SOURCE_LIST)
+ 
+-$(if $(FLMDEBUG),$(info <debug>Trace Compiler sourcelist generation output: $(X)</debug>))
++$(TRACE_VARIANT_SOURCE_LIST): $(SOURCE) 
++	$(call sourcelist_grouped_write,$(SOURCE),>)
++
++endef
++
++$(eval $(sourcelist_write))
++$(eval $(call GenerateStandardCleanTarget,$(TRACE_VARIANT_SOURCE_LIST),,))
++
++
++$(if $(FLMDEBUG),$(info <debug>Trace Compiler SOURCES: $(SOURCE)</debug>))
  
  $(TRACE_MARKER) : $(SOURCE)
  
@@ -6762,49 +7373,130 @@
  ifeq ($(GUARD_$(call sanitise,$(TRACE_MARKER))),)
  GUARD_$(call sanitise,$(TRACE_MARKER)):=1
  
++$(if $(FLMDEBUG),$(info <debug>PAST MARKER='$(TRACE_RELEASABLE_ID)'</debug>))
 +# The trace compiler likes to change . into _ so we must do the same in the case of mmps with a name like
 +# fred.prd.mmp we want fred_prd
 +TRACE_PRJNAME_SANITISED:=$(subst .,_,$(TRACE_PRJNAME))
-+
-+TRACE_DICTIONARY:=$(EPOCROOT)/epoc32/ost_dictionaries/$(TRACE_PRJNAME_SANITISED)_0x$(UID_TC)_Dictionary.xml
-+AUTOGEN_HEADER:=$(EPOCROOT)/epoc32/include/internal/SymbianTraces/autogen/$(TRACE_PRJNAME_SANITISED)_0x$(UID_TC)_TraceDefinitions.h
++OLDTC_TRACE_PRJNAME_SANITISED:=$(subst .,_,$(OLDTC_TRACE_PRJNAME))
++
 +
  JAVA_COMMAND:=$(SBS_JAVATC)
  TRACE_COMPILER_PATH:=$(EPOCROOT)/epoc32/tools
- TRACE_COMPILER_START:=-classpath $(TRACE_COMPILER_PATH)/tracecompiler com.nokia.tracecompiler.TraceCompiler
+-TRACE_COMPILER_START:=-classpath $(TRACE_COMPILER_PATH)/tracecompiler com.nokia.tracecompiler.TraceCompiler
  
 -TRACE_HEADERS:=$(foreach SRC,$(SOURCE),$(TRACE_PATH)/$(basename $(notdir $(SRC)))Traces.h)
- 
++# declare the trace_compile macro but only do it once in the build
++ifeq ($(trace_compile),)
+ 
++# Find out which macro to declare - the one supporting the new CLI 
++# or the old one.  First try to find TraceCompilerMain.class 
++# If it is there then it might be the new posix-like interface
++TRACE_VER:=
++TRACE_VSTR:=
++
++TCClass:=$(wildcard  $(TRACE_COMPILER_PATH)/tracecompiler/com/nokia/tracecompiler/TraceCompilerMain.class)
++ifneq ($(TCClass),) 
++# Get the version string from the TC (assume it's the new one)
++TRACE_COMPILER_START:=-classpath $(TRACE_COMPILER_PATH)/tracecompiler com.nokia.tracecompiler.TraceCompilerMain
++TRACE_VSTR:=$(firstword $(subst TraceCompiler version ,,$(shell $(JAVA_COMMAND) $(TRACE_COMPILER_START) --version)))
++# check if it looks like a version that supports the new cli interface: supporting up to verion 9 in the future.
++TRACE_VER:=$(findstring new,$(foreach version,2 3 4 5 6 7 8 9,$(patsubst $(version).%,new,$(TRACE_VSTR))))
++endif
++$(if $(FLMDEBUG),$(info <debug>TRACE_VSTR=$(TRACE_VSTR) TRACE_VER=$(TRACE_VER)</debug>))
++
++
++# 0. Generate a combined sourcelist from all variants. 
++# 0.1 Write the combined list to a temporary file
++# 0.2 Check if there are new files since the last build
++#      md5 stored in the trace marker.
++# 0.3 Rewrite the combined sourcelist if new sourcefiles have appeared
++#      since the last build
  # 1. Use pipe to send inputs to trace compiler to process
  # 2. Create a hash regarding to source names and put it in marker.
-@@ -56,18 +94,21 @@
+ # 3. Show source names that are processed by trace compiler
++
++ifeq ($(TRACE_VER),new)
++define trace_compile
++
++$(TRACE_SOURCE_LIST):
++	$(call startrule,sourcelist_combine) \
++	$(GNUCAT) $(TRACE_SOURCE_LIST) $$^ 2>/dev/null | $(GNUSORT) -u > $$@.new && \
++	$(GNUMD5SUM) -c $(TRACE_MARKER) 2>/dev/null ||  \
++	  $(GNUCP) $$@.new $$@ \
++	$(call endrule,sourcelist_combine)
++
++$(TRACE_MARKER) : $(PROJECT_META) $(TRACE_SOURCE_LIST)
++	$(call startrule,tracecompile) \
++	( $(GNUCAT) $(TRACE_SOURCE_LIST); \
++	  echo -en "*ENDOFSOURCEFILES*\n" ) | \
++	$(JAVA_COMMAND) $(TRACE_COMPILER_START) $(if $(FLMDEBUG),-d,) --uid=$(UID_TC) --project=$(TRACE_PRJNAME) --mmp=$(PROJECT_META) --traces=$(TRACE_PATH) &&  \
++	$(GNUMD5SUM) $(TRACE_SOURCE_LIST).new > $$@ 2>/dev/null && \
++	{ $(GNUTOUCH) $(TRACE_DICTIONARY) $(AUTOGEN_HEADER); \
++	 $(GNUCAT) $(TRACE_SOURCE_LIST) ; true ; } \
++	$(call endrule,tracecompile)
++endef
++
++else # Old inteface
++TRACE_COMPILER_START:=-classpath $(TRACE_COMPILER_PATH)/tracecompiler com.nokia.tracecompiler.TraceCompiler
++
+ define trace_compile
+-$(TRACE_MARKER) : $(PROJECT_META)
++
++$(TRACE_SOURCE_LIST):
++	$(call startrule,sourcelist_combine) \
++	$(GNUCAT) $(TRACE_SOURCE_LIST) $$^ 2>/dev/null | $(GNUSORT) -u > $$@.new && \
++	$(GNUMD5SUM) -c $(TRACE_MARKER) 2>/dev/null ||  \
++	  $(GNUCP) $$@.new $$@ \
++	$(call endrule,sourcelist_combine)
++
++$(TRACE_MARKER) : $(PROJECT_META) $(TRACE_SOURCE_LIST)
+ 	$(call startrule,tracecompile) \
+-	( echo -en "$(TRACE_PRJNAME)\n$(PROJECT_META)\n"; \
++	( echo -en "$(OLDTC_TRACE_PRJNAME)\n$(PROJECT_META)\n"; \
  	  $(GNUCAT) $(TRACE_SOURCE_LIST); \
  	  echo -en "*ENDOFSOURCEFILES*\n" ) | \
  	$(JAVA_COMMAND) $(TRACE_COMPILER_START) $(UID_TC) && \
 -	$(GNUMD5SUM) $(TRACE_SOURCE_LIST) > $(TRACE_MARKER) ; \
 -	$(GNUCAT) $(TRACE_SOURCE_LIST) \
-+	$(GNUMD5SUM) $(TRACE_SOURCE_LIST) > $(TRACE_MARKER) && \
++	$(GNUMD5SUM) $(TRACE_SOURCE_LIST).new > $$@ 2>/dev/null && \
 +	{ $(GNUTOUCH) $(TRACE_DICTIONARY) $(AUTOGEN_HEADER); \
 +	 $(GNUCAT) $(TRACE_SOURCE_LIST) ; true ; } \
  	$(call endrule,tracecompile)
  endef
  
++# End - new/old trace compiler
++endif
++
++# End - tracecompile is defined
++endif
++
++ifeq ($(TRACE_VER),new)
++TRACE_DICTIONARY:=$(EPOCROOT)/epoc32/ost_dictionaries/$(TRACE_PRJNAME_SANITISED)_0x$(UID_TC)_Dictionary.xml
++AUTOGEN_HEADER:=$(EPOCROOT)/epoc32/include/platform/symbiantraces/autogen/$(TRACE_PRJNAME_SANITISED)_0x$(UID_TC)_TraceDefinitions.h
++else
++TRACE_DICTIONARY:=$(EPOCROOT)/epoc32/ost_dictionaries/$(OLDTC_TRACE_PRJNAME_SANITISED)_0x$(UID_TC)_Dictionary.xml
++AUTOGEN_HEADER:=$(EPOCROOT)/epoc32/include/internal/symbiantraces/autogen/$(OLDTC_TRACE_PRJNAME_SANITISED)_0x$(UID_TC)_TraceDefinitions.h
++endif
++
  $(eval $(trace_compile))
  
 -$(eval $(call GenerateStandardCleanTarget,$(TRACE_HEADERS) $(TRACE_PATH)/tracebuilder.cache $(TRACE_MARKER) $(TRACE_SOURCE_LIST),,))
 +$(eval $(call GenerateStandardCleanTarget, $(TRACE_PATH)/tracebuilder.cache $(TRACE_MARKER) $(TRACE_SOURCE_LIST),,))
  
- # End sanity guard
+-# End sanity guard
++$(call makepath,$(TRACE_PATH) $(dir $(TRACE_DICTIONARY) $(AUTOGEN_HEADER)))
++# End  - guard that prevents repeated calls to TCom
  endif
  
 +$(eval $(call GenerateStandardCleanTarget,$(TRACE_HEADERS),,))
 +
++# End - Nothing to trace (not trace path in include)
  else
  # Indicate to following parts of the FLM that we actually won't run
  # trace compiler so they can set dependencies accordingly.
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/win32dll.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/win32dll.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/win32dll.flm	2010-05-18 19:32:34.753348601 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/win32dll.flm	2010-05-17 18:47:53.072842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/win32dll.flm	2010-06-04 12:09:25.007850000 +0100
 @@ -30,5 +30,5 @@
  include $(FLMHOME)/win32.flm
  
@@ -6814,7 +7506,7 @@
  endif
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/win32.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/win32.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/win32.flm	2010-05-18 19:32:34.749348513 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/win32.flm	2010-05-17 18:47:53.072842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/win32.flm	2010-06-04 12:09:25.007850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -6861,7 +7553,15 @@
    CFLAGS:=$(CFLAGS) $(OPT.DEPEND)
  endif
  
-@@ -197,7 +205,7 @@
+@@ -191,13 +199,14 @@
+ endif
+ 
+ 
+-BINTARGET:=$(BINDIR)/$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE))
++TARGETEXT:=$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE))
++BINTARGET:=$(BINDIR)/$(TARGET).$(TARGETEXT)
+ 
+ 
  # Run trace compiler #####################################
  TRACE_MARKER_PATH:=$(OUTPUTPATH)
  
@@ -6870,15 +7570,26 @@
    ifeq ($(UID2),)
      USE_TRACE_COMPILER:=
    else
-@@ -211,6 +219,7 @@
+@@ -210,7 +219,9 @@
+ # USE_TRACE_COMPILER defaults to blank in Raptor config.
  # Users can turn TC on by setting it to 1 in user config.
  ifneq ($(USE_TRACE_COMPILER),) 
++  # TARGETEXT must be set before here
    include $(FLMHOME)/tracecompiler.mk
 +  TC_RELEASABLES:=$(TRACE_DICTIONARY) $(AUTOGEN_HEADER)
  endif
  
  
-@@ -243,7 +252,6 @@
+@@ -218,7 +229,7 @@
+ ## IMPORT LIBRARY ##
+ ####################
+ 
+-IMPORTLIBLINKAS:=$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE))
++IMPORTLIBLINKAS:=$(TARGET).$(TARGETEXT)
+ # LINKAS, if supplied, only applies to IMPLIB TARGETTYPEs
+ ifeq ($(BASE_TYPE),importlib)
+   ifneq ($(LINKAS),)
+@@ -243,7 +254,6 @@
  ifeq ($(SUPPORTS_IMPORT_LIBRARY),1)
    ifneq ($(NOEXPORTLIBRARY),1)
      ifneq ($(TARGET_$(call sanitise,$(IMPORTLIBTARGET))),1)
@@ -6886,15 +7597,19 @@
        RELEASABLES:=$(RELEASABLES) $(if $(or $(EXPORTUNFROZEN),$(DEFFILE)),$(IMPORTLIBTARGET))
  
        # import libraries are generated to the UDEB release directory
-@@ -290,7 +298,6 @@
-     BINTARGETSTATICLINK:=$(BINDIRSTATICLINK)/$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE))
+@@ -287,10 +297,9 @@
+   #############
+ 
+   ifeq ($(COPY_FOR_STATIC_LINKAGE),1)
+-    BINTARGETSTATICLINK:=$(BINDIRSTATICLINK)/$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE))
++    BINTARGETSTATICLINK:=$(BINDIRSTATICLINK)/$(TARGET).$(TARGETEXT)
    endif
  
 -  CLEANTARGETS:=$(CLEANTARGETS) $(BINTARGET) $(BINTARGETSTATICLINK)
    RELEASABLES:=$(RELEASABLES) $(BINTARGET) $(BINTARGETSTATICLINK)
  
    # work on a local source files list
-@@ -368,20 +375,21 @@
+@@ -368,20 +377,21 @@
      $(eval DEPENDFILENAME:=$(call mapwin32file,$(1),.o.d))
      $(eval DEPENDFILE:=$(wildcard $(DEPENDFILENAME)))
  
@@ -6923,7 +7638,7 @@
          -include $(DEPENDFILE)
        endif
      endif
-@@ -412,24 +420,28 @@
+@@ -412,24 +422,28 @@
    STDMWCINCLUDEPATHS:=$(if $(MWCSym2Includes),$(MWCSym2Includes),$(MWCSYM2INCLUDES))
  
    define win32resourcecompile
@@ -6959,7 +7674,7 @@
          -include $(DEPENDFILE)
        endif
      endif
-@@ -463,7 +475,6 @@
+@@ -463,7 +477,6 @@
        # link map file (urel only)
        ifeq ($(VARIANTTYPE),urel)
          MAP:=$(OPT.MAP)$(BINTARGET).map
@@ -6967,7 +7682,25 @@
          RELEASABLES:=$(RELEASABLES) $(BINTARGET).map
        endif
      endif
-@@ -677,12 +688,11 @@
+@@ -524,7 +537,7 @@
+     TMP_IMPLIB:=$(BLDDIR)/$(TARGET).lib
+     TMP_INFFILE:=$(BLDDIR)/$(TARGET).inf
+     TMP_SYMFILE:=$(if $(OPEN_ENVIRONMENT),$(BLDDIR)/$(TARGET).sym,)
+-    TMP_TARGET:=$(BLDDIR)/$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE))
++    TMP_TARGET:=$(BLDDIR)/$(TARGET).$(TARGETEXT)
+     TMP_DEFFILE:=$(BLDDIR)/$(TARGET).def
+ 
+     CLEANTARGETS:=$(CLEANTARGETS) $(TMP_IMPLIB) $(TMP_INFFILE) $(TMP_TARGET) $(TMP_DEFFILE) $(TMP_SYMFILE)
+@@ -565,7 +578,7 @@
+ 		$(call groupin10,$(notdir $(OBJECTFILES))) ;
+ 	    $(call startrule,win32stageonelink) \
+ 	    $(if $(SUPPORTS_STDCPP_NEWLIB),$(if $(STATICLIBFILES),$(CHECKLIB) $(CHECKLIB_TYPE) $(OPT.CHECKLIB.WIN32) $(STATICLIBFILES) &&,),) \
+-	    MWSym2LibraryFiles="$(MWSym2LibraryFiles)" $(LD) $(LFLAGS) $(OPT.MENTRYPOINT)$(ENTRYSYMBOL) $(OPT.EXPORT)$(EXPORT_TYPE) $(OPT.NOCOMPACTIMPORTLIB) $(OPT.ADDCOMMAND) "out:$(TARGET).$(if $(REQUESTEDTARGETEXT),$(REQUESTEDTARGETEXT),$(TARGETTYPE))" $(OPT.WARNINGS) off $(OPT.IMPLIB)"$(TMP_IMPLIB)" $(OPT.OUT)"$(TMP_TARGET)" $(LINKER_FIRSTSTATLIBFILE) $(NEWLIBFILE) $(WIN32_LIBRARIES) $(STATICLIBFILES) $(LINKLIBFILES) $(OPT.LIBPATH)$(BLDDIR) $(OPT.SEARCH) @$(OBJECTFILES_LRF) \
++	    MWSym2LibraryFiles="$(MWSym2LibraryFiles)" $(LD) $(LFLAGS) $(OPT.MENTRYPOINT)$(ENTRYSYMBOL) $(OPT.EXPORT)$(EXPORT_TYPE) $(OPT.NOCOMPACTIMPORTLIB) $(OPT.ADDCOMMAND) "out:$(TARGET).$(TARGETEXT)" $(OPT.WARNINGS) off $(OPT.IMPLIB)"$(TMP_IMPLIB)" $(OPT.OUT)"$(TMP_TARGET)" $(LINKER_FIRSTSTATLIBFILE) $(NEWLIBFILE) $(WIN32_LIBRARIES) $(STATICLIBFILES) $(LINKLIBFILES) $(OPT.LIBPATH)$(BLDDIR) $(OPT.SEARCH) @$(OBJECTFILES_LRF) \
+ 	    $(call endrule,win32stageonelink)
+     endef
+     $(eval $(win32stageonelink))
+@@ -677,12 +690,11 @@
    BATCHFILE_CREATED_$(BATCHDIR)$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH):=1
    TARGET_CREATED_$(EPOCROOT)/epoc32/release/$(VARIANTPLATFORM)/$(VARIANTTYPE)/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)_$(TARGET):=1
    RELEASABLES:=$(RELEASABLES) $(EPOCROOT)/epoc32/release/$(VARIANTPLATFORM)/$(VARIANTTYPE)/z/test/$(MODULE)/$(VARIANTPLATFORM).$(TESTPATH)
@@ -6986,7 +7719,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm: win32pdll.flm
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/win32plugin.flm /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/win32plugin.flm
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/lib/flm/win32plugin.flm	2010-05-18 19:32:34.753348601 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/win32plugin.flm	2010-05-17 18:47:53.076842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/lib/flm/win32plugin.flm	2010-06-04 12:09:25.011850000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -7024,7 +7757,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor: notes
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/filter_interface.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/filter_interface.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/filter_interface.py	2010-05-18 19:32:34.785348756 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/filter_interface.py	2010-05-17 18:47:53.080842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/filter_interface.py	2010-06-04 12:09:25.019850000 +0100
 @@ -18,7 +18,7 @@
  
  class Filter(object):
@@ -7124,9 +7857,89 @@
 +	
 +
 +# the end
+diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/filter_list.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/filter_list.py
+--- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/filter_list.py	2010-05-18 19:32:34.785348756 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/filter_list.py	2010-06-04 12:09:25.019850000 +0100
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
++# Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+ # All rights reserved.
+ # This component and the accompanying materials are made available
+ # under the terms of the License "Eclipse Public License v1.0"
+@@ -19,6 +19,7 @@
+ import os
+ import sys
+ import raptor
++import re
+ import filter_interface
+ import pluginbox
+ import traceback
+@@ -64,7 +65,23 @@
+ 		"""Nothing to do for stdout"""
+ 		return True
+ 
++def SplitList(listString):
++	"""turn a CLI filter string into a list of (class, param) pairs.
+ 
++	for example, "foo[a,b],bar[c,d]"
++	
++	becomes [ ("foo", ["a","b"]) , ("bar", ["c","d"]) ]
++	"""
++	matches = re.findall("(\w+)(\[([^\[\]]*)\])?,?", listString)
++	
++	pairs = []
++	for m in matches:
++		classname = m[0]
++		if len(m[2]) > 0:
++			pairs.append( (classname, m[2].split(",")) )
++		else:
++			pairs.append( (classname, []) )
++	return pairs
+ 
+ class FilterList(filter_interface.Filter):
+ 
+@@ -81,14 +98,31 @@
+ 		# Find all the filter plugins
+ 		self.pbox = pbox
+ 		possiblefilters = self.pbox.classesof(filter_interface.Filter)
++		filterdict = {}
++		for p in possiblefilters:
++			name = p.__name__.lower()
++			if name in filterdict:
++				raise ValueError("filters found in SBS_HOME/python/plugins which have duplicate name: %s " % p.__name__)
++			else:
++				filterdict[name] = p
++		
++		# turn "filternames" into a list of (classname, parameters) pairs
++		filterCalls = SplitList(filternames)
++		
++		# look for each filter class in the box
+ 		unfound = []
+ 		self.filters = []
+-		for f in filternames:
+-			unfound.append(f) # unfound unless we find it
+-			for pl in possiblefilters:
+-				if pl.__name__.upper() == f.upper():
+-					self.filters.append(pl())
+-					unfound = unfound[:-1]
++		for (f, params) in filterCalls:
++			# if the filter exists and is a valid filter use it
++			if f.lower() in filterdict:
++				if params:
++					self.filters.append(filterdict[f.lower()](params))
++				else:
++					self.filters.append(filterdict[f.lower()]())
++			else:
++				# record missing filters
++				unfound.append(f)
++
+ 		if unfound != []:
+ 			raise ValueError("requested filters not found: %s \
+ 			\nAvailable filters are: %s" % (str(unfound), self.format_output_list(possiblefilters)))
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/filter_utils.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/filter_utils.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/filter_utils.py	2010-05-18 19:32:34.785348756 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/filter_utils.py	2010-05-17 18:47:53.080842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/filter_utils.py	2010-06-04 12:09:25.019850000 +0100
 @@ -198,12 +198,16 @@
  	def isError(self, aLine):
  		"""Convenience matcher for basic errors.
@@ -7172,7 +7985,7 @@
 +		return False
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/generic_path.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/generic_path.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/generic_path.py	2010-05-18 19:32:34.785348756 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/generic_path.py	2010-05-17 18:47:53.084842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/generic_path.py	2010-06-04 12:09:25.019850000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -7227,7 +8040,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/mmpparser.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/mmpparser.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/mmpparser.py	2010-05-18 19:32:34.785348756 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/mmpparser.py	2010-05-17 18:47:53.084842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/mmpparser.py	2010-06-04 12:09:25.019850000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -7255,7 +8068,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins: filter_bz2log.py
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_carbide.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_carbide.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_carbide.py	2010-05-18 19:32:34.785348756 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_carbide.py	2010-05-17 18:47:53.084842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_carbide.py	2010-06-04 12:09:25.023849000 +0100
 @@ -129,5 +129,4 @@
  		FilterCarbide.stdout.write("Overall Errors: %d\n" % self.__errors)
  		FilterCarbide.stdout.write("Overall Warnings: %d\n\n" % self.__warnings)
@@ -7267,7 +8080,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins: filter_check.py
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_checksource.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_checksource.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_checksource.py	2010-05-18 19:32:34.785348756 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_checksource.py	2010-05-17 18:47:53.084842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_checksource.py	2010-06-04 12:09:25.023849000 +0100
 @@ -224,11 +224,11 @@
  				
  				# Do the check for each file 	
@@ -7293,7 +8106,7 @@
  			if not os.path.exists(path):
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_clean.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_clean.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_clean.py	2010-05-18 19:32:34.785348756 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_clean.py	2010-05-17 18:47:53.084842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_clean.py	2010-06-04 12:09:25.023849000 +0100
 @@ -51,17 +51,23 @@
  		
  			if self.removeTargets:
@@ -7397,9 +8210,11 @@
 -
  # the end				
  
+Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins: filter_component.py
+Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins: filter_copyfile.py
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_logfile.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_logfile.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_logfile.py	2010-05-18 19:32:34.785348756 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_logfile.py	2010-05-17 18:47:53.088843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_logfile.py	2010-06-04 12:09:25.023849000 +0100
 @@ -16,6 +16,7 @@
  # Will ultimately do everything that scanlog does
  #
@@ -7419,7 +8234,7 @@
  					return False
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_splitlog.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_splitlog.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_splitlog.py	2010-05-18 19:32:34.785348756 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_splitlog.py	2010-05-17 18:47:53.088843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_splitlog.py	2010-06-04 12:09:25.027850000 +0100
 @@ -16,6 +16,7 @@
  # Will ultimately do everything that scanlog does
  #
@@ -7440,7 +8255,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins: filter_tagcount.py
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_terminal.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_terminal.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_terminal.py	2010-05-18 19:32:34.789348356 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_terminal.py	2010-05-17 18:47:53.088843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_terminal.py	2010-06-04 12:09:25.027850000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -7579,7 +8394,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins: filter_whatcomp.py
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_what.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_what.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/plugins/filter_what.py	2010-05-18 19:32:34.789348356 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_what.py	2010-05-17 18:47:53.088843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/plugins/filter_what.py	2010-06-04 12:09:25.027850000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -7656,7 +8471,20 @@
  		self.what = build_parameters.doWhat
  
  		self.outfile = sys.stdout
-@@ -78,6 +107,11 @@
+@@ -63,12 +92,6 @@
+ 		# when --check and --what are called
+ 		self.repetitions = {}
+ 		
+-		"Regex for old what output"
+-		if "win" in self.buildparameters.platform:
+-			self.regex = re.compile("^[a-zA-Z]:\S+$")
+-		else:
+-			self.regex = re.compile("^/\S+$")
+-		
+ 		"Regex for targets"
+ 		self.target_regex = re.compile("^<(build|stringtable|resource|bitmap)>.*")
+ 			
+@@ -78,6 +101,11 @@
  		"Regex for zip exports"
  		self.zip_export_regex = re.compile("^<member>.*")
  		
@@ -7668,7 +8496,7 @@
  		self.ok = True		
  		return self.ok
  	
-@@ -87,10 +121,22 @@
+@@ -87,13 +115,21 @@
  		for line in text.splitlines():
  			line = line.rstrip()
  			
@@ -7687,11 +8515,13 @@
  				self.repetitions[line] = 0
  				
  			if self.repetitions[line] == 0:
-+				
- 				if self.regex.match(line) and (self.what or self.check):
- 					"Print the whole line"
- 					self.print_file(line, (-1), len(line))
-@@ -116,10 +162,34 @@
+-				if self.regex.match(line) and (self.what or self.check):
+-					"Print the whole line"
+-					self.print_file(line, (-1), len(line))
+ 					
+ 				if self.target_regex.match(line):
+ 					"Grab the filename between <build> and </build>" 
+@@ -116,10 +152,34 @@
  					
  					self.print_file(line, start, end)
  						
@@ -7726,10 +8556,11 @@
  	def close(self):
  		if self.outfile_close:
  			self.outfile.close()
+Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python: raptor_api.py
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python: raptor_buildplatform.py
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_cache.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_cache.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_cache.py	2010-05-18 19:32:34.789348356 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_cache.py	2010-05-17 18:47:53.092842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_cache.py	2010-06-04 12:09:25.031849000 +0100
 @@ -143,7 +143,6 @@
  			self.WarnDuplicate("group", self.groups[obj.name], obj)
  			return
@@ -7764,7 +8595,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_cli.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_cli.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_cli.py	2010-05-18 19:32:34.789348356 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_cli.py	2010-05-17 18:47:53.092842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_cli.py	2010-06-04 12:09:25.031849000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -7772,7 +8603,21 @@
  # All rights reserved.
  # This component and the accompanying materials are made available
  # under the terms of the License "Eclipse Public License v1.0"
-@@ -34,7 +34,7 @@
+@@ -18,13 +18,8 @@
+ # by a raptor.Raptor object.
+ #
+ 
+-import re
+ import types
+ import raptor
+-import os
+-import sys
+-import tempfile
+-from raptor_utilities import getOSPlatform
+ 
+ from optparse import OptionParser # for parsing command line parameters
+ 
+@@ -34,7 +29,7 @@
  # raptor_cli module attributes
  
  parser = OptionParser(prog = raptor.name,
@@ -7781,7 +8626,7 @@
  
  Targets:
  
-@@ -47,7 +47,7 @@
+@@ -47,7 +42,7 @@
  LIBRARY        Create import libraries from frozen .DEF files
  LISTING        Create assembler listing files for source files
  REALLYCLEAN    Same as CLEAN but also remove exported files
@@ -7790,7 +8635,7 @@
  ROMFILE        Create an IBY file to be included in a ROM
  TARGET         Create main executables
  WHAT           List all releaseable targets
-@@ -87,6 +87,9 @@
+@@ -87,6 +82,9 @@
  parser.add_option("--export-only",action="store_true",dest="doExportOnly",
  				help="Generate exports only and do not create any make files.")
  
@@ -7800,7 +8645,7 @@
  parser.add_option("-f","--logfile",action="store",dest="logfile",
  				help="Name of the log file, or '-' for stdout.")
  
-@@ -117,6 +120,9 @@
+@@ -117,6 +115,9 @@
  parser.add_option("--no-depend-include",action="store_true",dest="noDependInclude",
  				help="Do not include generated dependency files. This is only useful for extremely large non-incremental builds.")
  				
@@ -7810,7 +8655,26 @@
  parser.add_option("-o","--orderlayers",action="store_true",dest="sys_def_order_layers",
  				help="Build layers in the System Definition XML file in the order listed or, if given, in the order of -l options.")
  
-@@ -144,10 +150,15 @@
+@@ -126,6 +127,18 @@
+ parser.add_option("-q","--quiet",action="store_true",dest="quiet",
+ 				help="Run quietly, not generating output messages.")
+ 
++parser.add_option("--query",action="append",dest="query",
++				help="""Access various build settings and options using a basic API. The current options are:
++				
++				* aliases - return all the values that can be sensibly used with the sbs -c option.
++				
++				* products - return all the values that can be "." appended to an alias to specialise it for a product build.
++				
++				* config[x] - return a set of values that represent the build configuration "x". Typically "x" will be an alias name or an alias followed by "." followed by a product.
++				
++				Multiple --query options can be given.
++				""")
++
+ parser.add_option("-s","--sysdef",action="store",dest="sys_def_file",
+ 				help="System Definition XML filename.")
+ 
+@@ -144,10 +157,15 @@
  
  				  "forced" -  Check all tool versions. Don't use cached results.
  			""")
@@ -7826,11 +8690,14 @@
  					"off" - Parse bld.infs serially 
  				     """)
  
-@@ -236,12 +247,7 @@
- 
- 	# the leftover_args are either variable assignments of the form a=b
- 	# or target names.
+@@ -234,14 +252,8 @@
+ 	# parse the full set of arguments
+ 	(options, leftover_args) = parser.parse_args(expanded_args)
+ 
+-	# the leftover_args are either variable assignments of the form a=b
+-	# or target names.
 -	regex = re.compile("^(.+)=(.*)$")
++	# the leftover_args are target names.
  	for leftover in leftover_args:
 -		assignment = regex.findall(leftover)
 -		if len(assignment) > 0:
@@ -7839,7 +8706,7 @@
  			Raptor.AddTarget(leftover)
  
  	# Define the dictionary of functions to be used.
-@@ -260,11 +266,13 @@
+@@ -260,19 +272,23 @@
  				 'quiet' : Raptor.RunQuietly,
  				 'debugoutput' : Raptor.SetDebugOutput,
  				 'doExportOnly' : Raptor.SetExportOnly,
@@ -7852,8 +8719,10 @@
 +				 'noDependGenerate': Raptor.SetNoDependGenerate,
  				 'number_of_jobs': Raptor.SetJobs,
  				 'project_name' :  Raptor.AddProject,
++				 'query' : Raptor.AddQuery,
  				 'filter_list' : Raptor.FilterList,
-@@ -273,6 +281,7 @@
+ 				 'ignore_os_detection': Raptor.IgnoreOsDetection,
+ 				 'check' :  Raptor.SetCheck,
  				 'what' :  Raptor.SetWhat,
  				 'tries' : Raptor.SetTries,
  				 'toolcheck' : Raptor.SetToolCheck,
@@ -7863,7 +8732,7 @@
  				'parallel_parsing' : Raptor.SetParallelParsing,
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_data.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_data.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_data.py	2010-05-18 19:32:34.793348934 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_data.py	2010-05-17 18:47:53.096843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_data.py	2010-06-04 12:09:25.035850000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -8444,16 +9313,30 @@
  		"""Returns a list of BuildUnits.
  
  		This function must be overridden by derived classes.
-@@ -830,6 +829,8 @@
+@@ -830,10 +829,13 @@
  
  class Variant(Model, Config):
  
-+	__slots__ = ('cache','name','host','extends','ops','variantRefs','allOperations')
++	__slots__ = ('cache','name','type','host','extends','ops','variantRefs','allOperations')
 +
  	def __init__(self, name = ""):
  		Model.__init__(self)
  		Config.__init__(self)
-@@ -868,20 +869,10 @@
+ 		self.name = name
++		self.type = ""
+ 
+ 		# Operations defined inside this variant.
+ 		self.ops = []
+@@ -854,6 +856,8 @@
+ 				self.host = value
+ 		elif name == "extends":
+ 			self.extends = value
++		elif name == "type":
++			self.type = value
+ 		else:
+ 			raise InvalidPropertyError()
+ 
+@@ -868,20 +872,10 @@
  	def Valid(self):
  		return self.name
  
@@ -8475,7 +9358,7 @@
  		"""Returns a list of all operations in this variant.
  
  		The list elements are themselves lists; the overall structure of the
-@@ -892,16 +883,16 @@
+@@ -892,16 +886,16 @@
  
  		if not self.allOperations:
  			if self.extends:
@@ -8497,7 +9380,7 @@
  
  		name = self.name
  		vars = [self]
-@@ -909,32 +900,46 @@
+@@ -909,32 +903,46 @@
  		for m in self.modifiers:
  			name = name + "." + m.name
  			vars.append(m)
@@ -8556,7 +9439,11 @@
  
  class Alias(Model, Config):
  
-@@ -946,8 +951,8 @@
+@@ -943,11 +951,12 @@
+ 		Config.__init__(self)
+ 		self.name = name
+ 		self.meaning = ""
++		self.type = ""
  		self.varRefs = []
  		self.variants = []
  
@@ -8567,12 +9454,14 @@
  
  	def SetProperty(self, key, val):
  		if key == "name":
-@@ -956,45 +961,53 @@
+@@ -956,45 +965,55 @@
  			self.meaning = val
  
  			for u in val.split("."):
 -				self.varRefs.append( VariantRef(u) )
 +				self.varRefs.append( VariantRef(ref = u) )
++		elif key == "type":
++			self.type = val
  		else:
  			raise InvalidPropertyError()
  
@@ -8635,7 +9524,7 @@
  		except KeyError:
  			raise BadReferenceError(self.ref)
  
-@@ -1018,41 +1031,39 @@
+@@ -1018,41 +1037,39 @@
  		else:
  			raise InvalidChildError()
  
@@ -8695,7 +9584,7 @@
  
  		return units
  
-@@ -1062,19 +1073,102 @@
+@@ -1062,19 +1079,102 @@
  	def __init__(self, ref=None):
  		Reference.__init__(self, ref)
  
@@ -8803,7 +9692,7 @@
  	# For use in dealing with tools that return non-ascii version strings.
  	nonascii = ""
  	identity_chartable = chr(0)
-@@ -1084,7 +1178,7 @@
+@@ -1084,7 +1184,7 @@
  		nonascii += chr(c)
  		identity_chartable += " "
  
@@ -8812,7 +9701,7 @@
  		self.name = name
  		self.command = command
  		self.versioncommand = versioncommand
-@@ -1097,7 +1191,6 @@
+@@ -1097,7 +1197,6 @@
  		# version until someone proves that it's OK
  		self.valid = False
  
@@ -8820,7 +9709,7 @@
  
  	def expand(self, toolset):
  		self.versioncommand = toolset.ExpandAll(self.versioncommand)
-@@ -1117,7 +1210,7 @@
+@@ -1117,7 +1216,7 @@
  				# If it really is not a simple command then we won't be able to get a date and
  				# we won't be able to tell if it is altered or updated - too bad!
  				testfile = generic_path.Where(self.command)
@@ -8829,7 +9718,7 @@
  				if testfile is None:
  					raise Exception("Can't be found in path")
  
-@@ -1127,18 +1220,20 @@
+@@ -1127,18 +1226,20 @@
  			testfile_stat = os.stat(testfile)
  			self.date = testfile_stat.st_mtime
  		except Exception,e:
@@ -8853,7 +9742,7 @@
  		except Exception,e:
  			versionoutput=None
  
-@@ -1148,12 +1243,11 @@
+@@ -1148,12 +1249,11 @@
  		versionoutput_a = versionoutput.translate(Tool.identity_chartable,"")
  
  		if versionoutput_a and self.vre.search(versionoutput_a) != None:
@@ -8868,7 +9757,7 @@
  
  def envhash(irrelevant_vars):
  	"""Determine something unique about this environment to identify it.
-@@ -1175,6 +1269,9 @@
+@@ -1175,6 +1275,9 @@
  	write() is used to flush the cache to disc.
  	"""
  	# The raptor shell - this is not mutable.
@@ -8878,7 +9767,7 @@
  	hostbinaries = os.path.join(os.environ['SBS_HOME'], 
  	                            os.environ['HOSTPLATFORM_DIR'])
  	                            
-@@ -1256,7 +1353,6 @@
+@@ -1256,7 +1359,6 @@
  								log.Info("Ignoring garbled toolcheck cache: %s (%s)\n", self.cachefilename, str(e))
  								self.__toolcheckcache = {}
  								
@@ -8886,7 +9775,7 @@
  						else:
  							log.Info("Toolcheck cache %s ignored - environment changed\n", self.cachefilename)
  					else:
-@@ -1316,8 +1412,11 @@
+@@ -1316,8 +1418,11 @@
  
  			self.log.Debug("toolcheck done: %s -key: %s" % (tool.name, tool.key))
  
@@ -8899,7 +9788,7 @@
  
  			# Tool failures are cached just like successes - don't want to repeat them
  			cache[tool.key] =  { "name" : tool.name, "valid" : tool.valid, "age" : 0 , "date" : tool.date }
-@@ -1356,6 +1455,11 @@
+@@ -1356,6 +1461,11 @@
  				self.log.Info("Could not write toolcheck cache: %s", str(e))
  		return self.valid
  
@@ -8911,7 +9800,7 @@
  
  class Evaluator(object):
  	"""Determine the values of variables under different Configurations.
-@@ -1364,11 +1468,11 @@
+@@ -1364,11 +1474,11 @@
  
  	refRegex = re.compile("\$\((.+?)\)")
  
@@ -8925,7 +9814,7 @@
  
  		specName = "none"
  		configName = "none"
-@@ -1377,14 +1481,18 @@
+@@ -1377,14 +1487,18 @@
  		opsLists = []
  
  		if buildUnit:
@@ -8947,7 +9836,7 @@
  		for opsList in opsLists:
  			for op in opsList:
  				# applying an Operation to a non-existent variable
-@@ -1394,13 +1502,20 @@
+@@ -1394,13 +1508,20 @@
  				except KeyError:
  					oldValue = ""
  
@@ -8969,7 +9858,7 @@
  
  		if self.gathertools:
  			self.tools = tools.values()
-@@ -1417,8 +1532,7 @@
+@@ -1417,8 +1538,7 @@
  			unresolved = False
  			for k, v in self.dict.items():
  				if v.find('$(' + k + ')') != -1:
@@ -8979,7 +9868,7 @@
  				else:
  					expanded = self.ExpandAll(v, specName, configName)
  
-@@ -1466,20 +1580,24 @@
+@@ -1466,20 +1586,24 @@
  
  		refs = Evaluator.refRegex.findall(value)
  
@@ -9011,7 +9900,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_makefile.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_makefile.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_makefile.py	2010-05-18 19:32:34.793348934 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_makefile.py	2010-05-17 18:47:53.096843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_makefile.py	2010-06-04 12:09:25.035850000 +0100
 @@ -134,6 +134,15 @@
  
  		return True
@@ -9042,7 +9931,7 @@
  			yield str(mf.filename)
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_make.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_make.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_make.py	2010-05-18 19:32:34.793348934 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_make.py	2010-05-17 18:47:53.096843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_make.py	2010-06-04 12:09:25.035850000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -9050,7 +9939,7 @@
  # All rights reserved.
  # This component and the accompanying materials are made available
  # under the terms of the License "Eclipse Public License v1.0"
-@@ -20,27 +20,120 @@
+@@ -20,27 +20,123 @@
  import os
  import random
  import raptor
@@ -9103,7 +9992,10 @@
 +def AnnoFileParseOutput(annofile):
 +	""" A generator that extracts log output from an emake annotation file, 
 +	    perform an XML-unescape on it and "yields" it line by line.  """
-+	af = open(annofile, "r")
++	if isinstance(annofile,str):
++		af = open(annofile, "r")
++	else:
++		af = annofile
 +
 +	inOutput = False
 +
@@ -9176,7 +10068,7 @@
  		# look for an alias first as this gives end-users a chance to modify
  		# the shipped variant rather than completely replacing it.
  		if engine in Raptor.cache.aliases:
-@@ -48,12 +141,14 @@
+@@ -48,12 +144,14 @@
  		elif engine in Raptor.cache.variants:
  			avar = Raptor.cache.FindNamedVariant(engine)
  		else:
@@ -9194,7 +10086,20 @@
  			evaluator = Raptor.GetEvaluator( None, units[0] , gathertools=True)
  
  			# shell
-@@ -75,6 +170,25 @@
+@@ -64,6 +162,12 @@
+ 			self.talontimeout = str(evaluator.Get("TALON_TIMEOUT"))
+ 			self.talonretries = str(evaluator.Get("TALON_RETRIES"))
+ 
++			# work around for RVCT 2.2 failed compiles
++			delete_on_failed_compile_s = evaluator.Get("DELETE_ON_FAILED_COMPILE")
++			self.delete_on_failed_compile = ""
++			if delete_on_failed_compile_s is not None and delete_on_failed_compile_s != "":
++				self.delete_on_failed_compile = "1"
++
+ 			# commands
+ 			self.initCommand = evaluator.Get("initialise")
+ 			self.buildCommand = evaluator.Get("build")
+@@ -75,6 +179,25 @@
  			self.jobsOption = evaluator.Get("jobs")
  			self.defaultMakeOptions = evaluator.Get("defaultoptions")
  
@@ -9220,7 +10125,7 @@
  			# buffering
  			self.scrambled = (evaluator.Get("scrambled") == "true")
  
-@@ -101,14 +215,13 @@
+@@ -101,14 +224,13 @@
  				self.selectors = []
  
  		except KeyError:
@@ -9237,7 +10142,7 @@
  
  
  		if self.usetalon:
-@@ -123,7 +236,7 @@
+@@ -123,7 +245,7 @@
   component='$$COMPONENT_NAME'\
   bldinf='$$COMPONENT_META' mmp='$$PROJECT_META'\
   config='$$SBS_CONFIGURATION' platform='$$PLATFORM'\
@@ -9246,7 +10151,7 @@
  export TALON_RECIPEATTRIBUTES TALON_SHELL TALON_TIMEOUT
  USE_TALON:=%s
  
-@@ -135,7 +248,21 @@
+@@ -135,7 +257,21 @@
  """
  		
  
@@ -9268,11 +10173,12 @@
  # generated by %s %s
  
  HOSTPLATFORM:=%s
-@@ -143,12 +270,13 @@
+@@ -143,22 +279,49 @@
  OSTYPE:=%s
  FLMHOME:=%s
  SHELL:=%s
 +THIS_FILENAME:=$(firstword $(MAKEFILE_LIST))
++DELETE_ON_FAILED_COMPILE:=%s 
  
  %s
  
@@ -9283,7 +10189,9 @@
  			 " ".join(raptor.hostplatform),
  			 raptor.hostplatform_dir,
  			 self.raptor.filesystem,
-@@ -157,8 +285,32 @@
+ 			 str(self.raptor.systemFLM),
+ 			 self.shellpath,
++			 self.delete_on_failed_compile,
  			 talon_settings,
  			 self.raptor.systemFLM.Append('globals.mk') )
  
@@ -9295,11 +10203,11 @@
 +$(FLMHOME)/user/final.mk:
 +$(FLMHOME)/user/default.flm:
 +$(FLMHOME)/user/globals.mk:
-+
+ 
+-		self.makefile_epilogue = """
 +.DEFAULT::
 +	@echo "<warning>Missing dependency detected: $@</warning>"
- 
--		self.makefile_epilogue = """
++
 +"""
 +
 +		# Only output timings if requested on CLI
@@ -9317,7 +10225,7 @@
  
  include %s
  
-@@ -168,14 +320,17 @@
+@@ -168,14 +331,17 @@
  		"""Generate a set of makefiles, or one big Makefile."""
  
  		if not self.valid:
@@ -9337,7 +10245,7 @@
  										   selectors = self.selectors,
  										   filenamebase = str(toplevel.File()),
  										   prologue = self.makefile_prologue,
-@@ -190,11 +345,10 @@
+@@ -190,11 +356,10 @@
  			self.many = not self.raptor.writeSingleMakefile
  
  			# add a makefile for each spec under each config
@@ -9351,7 +10259,7 @@
  
  				# make sure the config_wide spec item is put out first so that it
  				# can affect everything.
-@@ -207,16 +361,22 @@
+@@ -207,16 +372,22 @@
  						ordered_specs.append(s)
  
  				if config_wide_spec is not None:
@@ -9378,7 +10286,7 @@
  
  
  	def WriteConfiguredSpec(self, parentMakefileSet, spec, config, useAllInterfaces):
-@@ -233,9 +393,10 @@
+@@ -233,9 +404,10 @@
  		guard = None
  		if hasInterface:
  			# find the Interface (it may be a ref)
@@ -9391,7 +10299,7 @@
  				self.raptor.Error("No interface for '%s'", spec.name)
  				return
  
-@@ -268,12 +429,12 @@
+@@ -268,12 +440,12 @@
  				md5hash.update(value)
  
  			# parameters required by the interface
@@ -9406,7 +10314,7 @@
  				for k,v in evaluator.ResolveMatching(g.patternre):
  					addparam(k,v,g.default)
  
-@@ -301,7 +462,7 @@
+@@ -301,7 +473,7 @@
  
  		# generate the call to the FLM
  		if iface is not None:
@@ -9415,7 +10323,7 @@
  
  		# recursive includes
  
-@@ -341,7 +502,7 @@
+@@ -341,7 +513,7 @@
  				return False
  
  		# Save file names to a list, to allow the order to be reversed
@@ -9424,7 +10332,7 @@
  
  		# Iterate through args passed to raptor, searching for CLEAN or REALLYCLEAN
  		clean_flag = False
-@@ -354,6 +515,9 @@
+@@ -354,6 +526,9 @@
  		if clean_flag:
  			fileName_list.reverse()
  
@@ -9434,7 +10342,7 @@
  		# Process each file in turn
  		for makefile in fileName_list:
  			if not os.path.exists(makefile):
-@@ -364,7 +528,7 @@
+@@ -364,7 +539,7 @@
  			command = self.buildCommand
  
  			if self.makefileOption:
@@ -9443,7 +10351,7 @@
  
  			if self.raptor.keepGoing and self.keepGoingOption:
  				command += " " + self.keepGoingOption
-@@ -377,12 +541,20 @@
+@@ -377,12 +552,20 @@
  			command += " " + self.defaultMakeOptions
  			# Can supply options on the commandline to override default settings.
  			if len(self.raptor.makeOptions) > 0:
@@ -9466,7 +10374,7 @@
  			if self.usetalon:
  				# use the descrambler if we set it up
  				command += ' TALON_DESCRAMBLE=' 
-@@ -401,7 +573,7 @@
+@@ -401,7 +584,7 @@
  
  			# targets go at the end, if the makefile supports them
  			addTargets = self.raptor.targets[:]
@@ -9475,7 +10383,7 @@
  			if addTargets and ignoreTargets:
  				for target in self.raptor.targets:
  					if re.match(ignoreTargets, target):
-@@ -410,6 +582,23 @@
+@@ -410,6 +593,23 @@
  			if addTargets:
  				command += " " + " ".join(addTargets)
  
@@ -9499,7 +10407,7 @@
  			self.raptor.Info("Executing '%s'", command)
  
  			# execute the build.
-@@ -417,6 +606,10 @@
+@@ -417,6 +617,10 @@
  			# bufsize=1 means "line buffered"
  			#
  			try:
@@ -9510,7 +10418,7 @@
  				makeenv=os.environ.copy()
  				if self.usetalon:
  					makeenv['TALON_RECIPEATTRIBUTES']="none"
-@@ -423,28 +616,55 @@
+@@ -423,28 +627,55 @@
  					makeenv['TALON_SHELL']=self.talonshell
  					makeenv['TALON_BUILDID']=str(self.buildID)
  					makeenv['TALON_TIMEOUT']=str(self.talontimeout)
@@ -9573,7 +10481,7 @@
  				if returncode != 0  and not self.raptor.keepGoing:
  					self.Tidy()
  					return False
-@@ -452,6 +672,9 @@
+@@ -452,6 +683,9 @@
  			except Exception,e:
  				self.raptor.Error("Exception '%s' during '%s'", str(e), command)
  				self.Tidy()
@@ -9583,7 +10491,7 @@
  				return False
  
  		# run any shutdown script
-@@ -496,7 +719,7 @@
+@@ -496,7 +730,7 @@
  			looking = (os.system(command) != 0)
  			tries += 1
  		if looking:
@@ -9594,7 +10502,7 @@
  		
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_meta.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_meta.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_meta.py	2010-05-18 19:32:34.793348934 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_meta.py	2010-05-17 18:47:53.100842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_meta.py	2010-06-04 12:09:25.039849000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -9602,7 +10510,7 @@
  # All rights reserved.
  # This component and the accompanying materials are made available
  # under the terms of the License "Eclipse Public License v1.0"
-@@ -31,6 +31,7 @@
+@@ -31,9 +31,11 @@
  import generic_path
  import subprocess
  import zipfile
@@ -9610,7 +10518,11 @@
  from mmpparser import *
  
  import time
-@@ -232,6 +233,19 @@
++import generic_path
+ 
+ 
+ PiggyBackedBuildPlatforms = {'ARMV5':['GCCXML']}
+@@ -232,6 +234,19 @@
  	return commentDetail
  
  
@@ -9630,7 +10542,7 @@
  # Classes
  
  class MetaDataError(Exception):
-@@ -284,9 +298,8 @@
+@@ -284,9 +299,8 @@
  	def call(self, aArgs, sourcefilename):
  		""" Override call so that we can do our own error handling."""
  		tool = self._ExternalTool__Tool
@@ -9641,7 +10553,7 @@
  			# the actual call differs between Windows and Unix
  			if raptor_utilities.getOSFileSystem() == "unix":
  				p = subprocess.Popen(commandline, \
-@@ -332,7 +345,7 @@
+@@ -332,7 +346,7 @@
  				raise MetaDataError("Errors in %s" % str(sourcefilename))
  
  		except Exception,e:
@@ -9650,7 +10562,7 @@
  
  		return 0	# all OK
  
-@@ -398,11 +411,13 @@
+@@ -398,11 +412,13 @@
  	on the selected build platform.  This class provides a generic means of wrapping
  	up the preprocessing of such files."""
  
@@ -9665,7 +10577,7 @@
  		@param log 		A class with Debug(<string>), Info(<string>) and Error(<string>) methods
  		"""
  		self.filename = aFilename
-@@ -410,6 +425,7 @@
+@@ -410,6 +426,7 @@
  		# Dictionary with key of build platform and a text string of processed output as values
  		self.__PreProcessedContent = {}
  		self.log = log
@@ -9673,7 +10585,7 @@
  
  		self.__gnucpp = gnucpp
  		if gnucpp is None:
-@@ -436,7 +452,7 @@
+@@ -436,7 +453,7 @@
  			else:
  				metatarget = "'$(PARSETARGET)'"
  			generateDepsOptions = "-MD -MF%s -MT%s" % (adepfilename, metatarget)
@@ -9682,7 +10594,7 @@
  			try:
  				os.makedirs(os.path.dirname(adepfilename))
  			except Exception, e:
-@@ -515,15 +531,17 @@
+@@ -515,15 +532,17 @@
  	on the selected build platform.  This class provides a generic means of wrapping
  	up the preprocessing of such files."""
  
@@ -9703,7 +10615,37 @@
  
  		self.__gnucpp = gnucpp
  		if gnucpp is None:
-@@ -878,8 +896,8 @@
+@@ -750,9 +769,13 @@
+ 			biloc="." # Someone building with a relative raptor path
+ 
+ 		self.__StandardVariables = {}
+-		# Relative step-down to the root - let's try ignoring this for now, as it
+-		# should amount to the same thing in a world where absolute paths are king
++		# The source root directory is SRCROOT if set in the environment
++		# Set TO_ROOT to SRCROOT in case SBS_BUILD_DIR is on a different drive
++		if 'SRCROOT' in os.environ:
++			self.__StandardVariables['TO_ROOT'] = str(generic_path.Path(os.environ['SRCROOT']))
++		else:
+ 		self.__StandardVariables['TO_ROOT'] = ""
++		
+ 		# Top-level bld.inf location
+ 		self.__StandardVariables['TO_BLDINF'] = biloc
+ 		self.__StandardVariables['EXTENSION_ROOT'] = eiloc
+@@ -820,8 +843,11 @@
+ 			eiloc="." # Someone building with a relative raptor path
+ 
+ 		self.__StandardVariables = {}
+-		# Relative step-down to the root - let's try ignoring this for now, as it
+-		# should amount to the same thing in a world where absolute paths are king
++		# The source root directory is SRCROOT if set in the environment	
++		# Set TO_ROOT to SRCROOT in case SBS_BUILD_DIR is on a different drive
++		if 'SRCROOT' in os.environ:
++			self.__StandardVariables['TO_ROOT'] = str(generic_path.Path(os.environ['SRCROOT']))
++		else:
+ 		self.__StandardVariables['TO_ROOT'] = ""
+ 		# Top-level bld.inf location
+ 		self.__StandardVariables['TO_BLDINF'] = biloc
+@@ -878,8 +904,8 @@
  class BldInfFile(MetaDataFile):
  	"""Representation of a Symbian bld.inf file"""
  
@@ -9714,7 +10656,17 @@
  		self.__Raptor = log
  		self.testManual = 0
  		self.testAuto = 0
-@@ -1194,7 +1212,9 @@
+@@ -1053,6 +1079,9 @@
+ 			if (re.search(r'^\s*START ',extensionLine, re.I)):
+ 				start = extensionLine
+ 			elif re.search(r'^\s*END\s*$',extensionLine, re.I):
++				if start == "":
++					self.log.Error("unmatched END statement in %s section", aType, bldinf=str(self.filename))
++				else:
+ 				extensionObjects.append(Extension(self.filename, start, options, aBuildPlatform, self.__Raptor))
+ 				start = ""
+ 				options = []
+@@ -1194,7 +1223,9 @@
  		super(MMPRaptorBackend,self).__init__()
  		self.platformblock = None
  		self.__Raptor = aRaptor
@@ -9725,7 +10677,7 @@
  		self.ResourceVariants = []
  		self.BitmapVariants = []
  		self.StringTableVariants = []
-@@ -1208,11 +1228,12 @@
+@@ -1208,11 +1239,12 @@
  		self.__systeminclude = ""
  		self.__bitmapSourcepath = self.__sourcepath
  		self.__current_resource = ""
@@ -9739,7 +10691,7 @@
  
  		self.__TARGET = ""
  		self.__TARGETEXT = ""
-@@ -1283,16 +1304,15 @@
+@@ -1283,16 +1315,15 @@
  		elif varname == 'PAGED':
  			self.BuildVariant.AddOperation(raptor_data.Set(varname, "1"))
  			self.__debug( "Set switch PAGE ON")
@@ -9758,7 +10710,7 @@
  			self.BuildVariant.AddOperation(raptor_data.Set("PAGEDCODE_OPTION", "unpaged"))
  			self.__debug( "Set switch PAGEDCODE OFF")
  			self.BuildVariant.AddOperation(raptor_data.Set("PAGEDDATA_OPTION", "unpaged"))
-@@ -1314,6 +1334,7 @@
+@@ -1314,6 +1345,7 @@
  			self.BuildVariant.AddOperation(raptor_data.Set("PAGEDCODE_OPTION", "unpaged"))
  			self.__debug( "Set switch " + varname + " ON")
  			self.__pageConflict.append(varname)
@@ -9766,7 +10718,7 @@
  		elif varname == 'UNPAGEDDATA':
  			self.BuildVariant.AddOperation(raptor_data.Set("PAGEDDATA_OPTION", "unpaged"))
  			self.__debug( "Set switch " + varname + " ON")
-@@ -1322,6 +1343,7 @@
+@@ -1322,6 +1354,7 @@
  		elif varname == 'NOLINKTIMECODEGENERATION':
  			self.BuildVariant.AddOperation(raptor_data.Set("LTCG",""))
  			self.__debug( "Set switch " + varname + " OFF")
@@ -9774,7 +10726,7 @@
  		elif varname == 'NOMULTIFILECOMPILATION':
  			self.BuildVariant.AddOperation(raptor_data.Set("MULTIFILE_ENABLED",""))
  			self.__debug( "Set switch " + varname + " OFF")
-@@ -1331,13 +1353,19 @@
+@@ -1331,13 +1364,19 @@
  				self.__debuggable = "udeb urel"
  			else:
  				self.__Raptor.Warn("DEBUGGABLE keyword ignored as DEBUGGABLE_UDEBONLY is already specified")
@@ -9794,7 +10746,7 @@
  		else:
  			self.__debug( "Set switch "+toks[0]+" ON")
  			self.BuildVariant.AddOperation(raptor_data.Set(prefix+varname, "1"))
-@@ -1423,9 +1451,12 @@
+@@ -1423,9 +1462,12 @@
  
  		elif varname=='CAPABILITY':
  			for cap in toks[1]:
@@ -9809,7 +10761,7 @@
  		elif varname=='DEFFILE':
  			self.__defFileRoot = self.__currentMmpFile
  			self.deffile = toks[1]
-@@ -1450,8 +1481,10 @@
+@@ -1450,14 +1492,16 @@
  
  				# add in the minor number
  				minor = 0
@@ -9821,7 +10773,15 @@
  
  				self.__versionhex = "%04x%04x" % (major, minor)
  				self.BuildVariant.AddOperation(raptor_data.Set(varname, "%d.%d" %(major, minor)))
-@@ -1517,7 +1550,8 @@
+-				self.BuildVariant.AddOperation(raptor_data.Set(varname+"HEX", self.__versionhex))
++				self.BuildVariant.AddOperation(raptor_data.Set("VERSIONHEX", self.__versionhex))
+ 				self.__debug("Set "+toks[0]+"  OPTION to " + toks[1])
+-				self.__debug("Set "+toks[0]+"HEX OPTION to " + "%04x%04x" % (major,minor))
++				self.__debug("Set VERSIONHEX OPTION to " + self.__versionhex)
+ 
+ 			else:
+ 				self.__Raptor.Warn("Invalid version supplied to VERSION (%s), using default value" % toks[1])
+@@ -1517,7 +1561,8 @@
  					toks1 = re.sub("[,'\[\]]", "", toks1).replace("//","/")
  				self.__debug("Set "+toks[0]+" to " + toks1)
  				self.BuildVariant.AddOperation(raptor_data.Set(varname,toks1))
@@ -9831,7 +10791,7 @@
  		else:
  			self.__debug("Set "+toks[0]+" to " + str(toks[1]))
  			self.BuildVariant.AddOperation(raptor_data.Set(varname,"".join(toks[1])))
-@@ -1687,7 +1721,7 @@
+@@ -1687,7 +1732,7 @@
  	def getDefaultResourceTargetPath(self, targettype):
  		# the different default TARGETPATH values should come from the
  		# configuration rather than being hard-coded here.
@@ -9840,7 +10800,7 @@
  			return "resource/plugins"
  		if targettype == "pdl":
  			return "resource/printers"
-@@ -1884,7 +1918,7 @@
+@@ -1884,7 +1929,7 @@
  		self.__currentLineNumber += 1
  		self.__debug("Start BITMAP "+toks[1])
  
@@ -9849,7 +10809,7 @@
  		# Use BMTARGET and BMTARGET_lower because that prevents
  		# confusion with the TARGET and TARGET_lower of our parent MMP
  		# when setting the OUTPUTPATH.  This in turn allows us to
-@@ -1974,7 +2008,7 @@
+@@ -1974,7 +2019,7 @@
  		self.__debug("stringtable: " + toks[1])
  		self.__debug("adjusted stringtable source=" + source)
  
@@ -9858,7 +10818,7 @@
  		self.__currentStringTableVariant.AddOperation(raptor_data.Set("SOURCE", source))
  		self.__currentStringTableVariant.AddOperation(raptor_data.Set("EXPORTPATH", ""))
  		self.__stringtableExported = False
-@@ -2142,6 +2176,9 @@
+@@ -2142,6 +2187,9 @@
  		self.BuildVariant.AddOperation(raptor_data.Set("DEFFILEKEYWORD", deffile_keyword))
  		self.__debug("Set DEFFILEKEYWORD to '%s'",deffile_keyword)
  
@@ -9868,7 +10828,7 @@
  		# if this target type has a default TARGETPATH other than "" for
  		# resources then we need to add that default to all resources which
  		# do not explicitly set the TARGETPATH themselves.
-@@ -2167,16 +2204,20 @@
+@@ -2167,16 +2215,20 @@
  			self.ResourceVariants[i].AddOperation(raptor_data.Set("MAIN_TARGET_lower", self.__TARGET.lower()))
  			self.ResourceVariants[i].AddOperation(raptor_data.Set("MAIN_REQUESTEDTARGETEXT", self.__TARGETEXT.lower()))
  
@@ -9891,7 +10851,7 @@
  
  			if MMPRaptorBackend.supportedCapabilities.has_key(capability):
  				capabilityFlag1 = capabilityFlag1 ^ invert
-@@ -2205,12 +2246,21 @@
+@@ -2205,12 +2257,21 @@
  			for x in self.__pageConflict:
  				if x == "PAGEDCODE" or x == "UNPAGEDCODE":
  					self.__Raptor.Warn("Both PAGEDCODE and UNPAGEDCODE are specified. The last one %s will take effect" % x)
@@ -9913,7 +10873,7 @@
  
  		# Set Debuggable
  		self.BuildVariant.AddOperation(raptor_data.Set("DEBUGGABLE", self.__debuggable))
-@@ -2229,6 +2279,27 @@
+@@ -2229,6 +2290,27 @@
  		"""Target type in lower case - the standard format"""
  		return self.__targettype.lower()
  
@@ -9941,7 +10901,7 @@
  	def resolveDefFile(self, aTARGET, aBuildPlatform):
  		"""Returns a fully resolved DEFFILE entry depending on .mmp file location and TARGET, DEFFILE and NOSTRICTDEF
  		entries in the .mmp file itself (where appropriate).
-@@ -2283,6 +2354,32 @@
+@@ -2283,6 +2365,32 @@
  		return resolvedDefFile
  
  
@@ -9974,7 +10934,7 @@
  class MetaReader(object):
  	"""Entry point class for Symbian metadata processing.
  
-@@ -2299,10 +2396,10 @@
+@@ -2299,10 +2407,10 @@
  		# Get the version of CPP that we are using
  		metadata = self.__Raptor.cache.FindNamedVariant("meta")
  		evaluator = self.__Raptor.GetEvaluator(None, raptor_data.BuildUnit(metadata.name, [metadata]) )
@@ -9989,7 +10949,7 @@
  
  		# Only read each variant.cfg once
  		variantCfgs = {}
-@@ -2321,24 +2418,35 @@
+@@ -2321,24 +2429,35 @@
  		# with the same "export platform".
  		exports = {}
  
@@ -10032,7 +10992,7 @@
  
  			# Apply OS variant provided we are not ignoring this
  			if not self.__Raptor.ignoreOsDetection:
-@@ -2350,11 +2458,11 @@
+@@ -2350,11 +2469,11 @@
  			# is this a feature variant config or an ordinary variant
  			fv = evaluator.Get("FEATUREVARIANTNAME")
  			if fv:
@@ -10046,7 +11006,7 @@
  				variantCfg = generic_path.Path(variantCfg)
  				if not variantCfg in variantCfgs:
  					# get VARIANT_HRH from the variant.cfg file
-@@ -2369,19 +2477,18 @@
+@@ -2369,19 +2488,18 @@
  
  			detail['VARIANT_HRH'] = variantHRH
  			self.__Raptor.Info("'%s' uses variant hrh file '%s'", buildConfig.name, variantHRH)
@@ -10070,7 +11030,7 @@
  
  			# make a key that identifies this platform uniquely
  			# - used to tell us whether we have done the pre-processing
-@@ -2390,7 +2497,8 @@
+@@ -2390,7 +2508,8 @@
  			key = str(detail['VARIANT_HRH']) \
  			 	+ str(detail['EPOCROOT']) \
  		    	+ detail['SYSTEMINCLUDE'] \
@@ -10080,7 +11040,7 @@
  
  		    # Keep a short version of the key for use in filenames.
  			uniq = hashlib.md5()
-@@ -2426,11 +2534,7 @@
+@@ -2426,11 +2545,7 @@
  			# Is this an unseen build platform?
  			# concatenate all the values we care about in a fixed order
  			# and use that as a signature for the platform.
@@ -10093,7 +11053,7 @@
  
  			items.extend(interfaces)
  			platform = ""
-@@ -2452,20 +2556,8 @@
+@@ -2452,20 +2567,8 @@
  		# that are supposedly platform independent (e.g. PRJ_PLATFORMS)
  		self.defaultPlatform = self.ExportPlatforms[0]
  
@@ -10115,7 +11075,7 @@
  		"""Take a list of bld.inf files and return a list of build specs.
  
  		The returned specification nodes will be suitable for all the build
-@@ -2475,7 +2567,7 @@
+@@ -2475,7 +2578,7 @@
  		# we need a Filter node per export platform
  		exportNodes = []
  		for i,ep in enumerate(self.ExportPlatforms):
@@ -10124,7 +11084,7 @@
  
  			# what configurations is this node active for?
  			for config in ep['configs']:
-@@ -2486,7 +2578,7 @@
+@@ -2486,7 +2589,7 @@
  		# we need a Filter node per build platform
  		platformNodes = []
  		for i,bp in enumerate(self.BuildPlatforms):
@@ -10133,7 +11093,7 @@
  
  			# what configurations is this node active for?
  			for config in bp['configs']:
-@@ -2502,18 +2594,18 @@
+@@ -2502,18 +2605,18 @@
  
  		# check that each bld.inf exists and add a Specification node for it
  		# to the nodes of the export and build platforms that it supports.
@@ -10158,7 +11118,7 @@
  				if not self.__Raptor.keepGoing:
  					return []
  
-@@ -2545,6 +2637,7 @@
+@@ -2545,6 +2648,7 @@
  		# before we can do anything else (because raptor itself must do
  		# some exports before the MMP files that include them can be
  		# processed).
@@ -10166,7 +11126,7 @@
  		for i,p in enumerate(exportNodes):
  			exportPlatform = self.ExportPlatforms[i]
  			for s in p.GetChildSpecs():
-@@ -2555,10 +2648,12 @@
+@@ -2555,10 +2659,12 @@
  					self.__Raptor.Error("%s",e.Text)
  					if not self.__Raptor.keepGoing:
  						return []
@@ -10180,7 +11140,7 @@
  			self.__Raptor.Info("Processing Exports only")
  			return[]
  
-@@ -2601,8 +2696,8 @@
+@@ -2601,8 +2707,8 @@
  
  		def LeftPortionOf(pth,sep):
  			""" Internal function to return portion of str that is to the left of sep. 
@@ -10191,7 +11151,7 @@
  			return pth[0:length]
  			
  		modulePath = LeftPortionOf(LeftPortionOf(os.path.dirname(aBldInfPath), "group"), "ongoing")
-@@ -2615,37 +2710,30 @@
+@@ -2615,37 +2721,30 @@
  		return moduleName
  
  
@@ -10240,7 +11200,7 @@
  
  		# get the relevant build platforms
  		listedPlatforms = bldInfFile.getBuildPlatforms(self.defaultPlatform)
-@@ -2655,34 +2743,36 @@
+@@ -2655,34 +2754,36 @@
  													self.__baseuserdefaultplatforms)
  
  
@@ -10288,7 +11248,7 @@
  
  	def ProcessExports(self, componentNode, exportPlatform):
  		"""Do the exports for a given platform and skeleton bld.inf node.
-@@ -2694,18 +2784,18 @@
+@@ -2694,18 +2795,18 @@
  		[some MMP files #include exported .mmh files]
  		"""
  		if exportPlatform["TESTCODE"]:
@@ -10311,7 +11271,7 @@
  			exportwhatlog="<whatlog bldinf='%s' mmp='' config=''>\n" % bldinf_filename
  			for export in exports:
  				expSrc = export.getSource()
-@@ -2728,11 +2818,11 @@
+@@ -2728,11 +2829,11 @@
  							# export the file
  							exportwhatlog += self.CopyExport(fromFile, toFile, bldinf_filename)
  						else:
@@ -10325,7 +11285,7 @@
  							if members != None:
  								exportwhatlog += members
  							exportwhatlog += "</archive>\n"
-@@ -2767,8 +2857,10 @@
+@@ -2767,8 +2868,10 @@
  
  			sourceMTime = 0
  			destMTime = 0
@@ -10337,7 +11297,7 @@
  				destMTime = os.stat(dest_str)[stat.ST_MTIME]
  			except OSError, e:
  				if sourceMTime == 0:
-@@ -2782,6 +2874,9 @@
+@@ -2782,6 +2885,9 @@
  				if os.path.exists(dest_str):
  					os.chmod(dest_str,stat.S_IREAD | stat.S_IWRITE)
  				shutil.copyfile(source_str, dest_str)
@@ -10347,7 +11307,7 @@
  				self.__Raptor.Info("Copied %s to %s", source_str, dest_str)
  			else:
  				self.__Raptor.Info("Up-to-date: %s", dest_str)
-@@ -2845,7 +2940,7 @@
+@@ -2845,7 +2951,7 @@
  				for file in files:
  					if not file.endswith('/'):
  						expfilename = str(generic_path.Join(destination, file))
@@ -10356,7 +11316,7 @@
  
  				self.__Raptor.PrintXML("<clean bldinf='" + bldinf_filename + "' mmp='' config=''>\n")
  				self.__Raptor.PrintXML("<zipmarker>" + markerfilename + "</zipmarker>\n")
-@@ -2876,6 +2971,11 @@
+@@ -2876,6 +2982,11 @@
  						expfile = open(expfilename, 'wb')
  						expfile.write(exportzip.read(file))
  						expfile.close()
@@ -10368,7 +11328,7 @@
  						# Each file keeps its modified time the same as what it was before unzipping
  						accesstime = time.time()
  						datetime = exportzip.getinfo(file).date_time
-@@ -2885,7 +2985,7 @@
+@@ -2885,7 +2996,7 @@
  						os.utime(expfilename,(accesstime, modifiedtime))
  
  						filecount += 1
@@ -10377,7 +11337,7 @@
  					except IOError, e:
  						message = "Could not unzip %s to %s: file %s: %s" %(source, destination, expfilename, str(e))
  						if not self.__Raptor.keepGoing:
-@@ -2899,7 +2999,7 @@
+@@ -2899,7 +3010,7 @@
  			self.__Raptor.PrintXML("<zipmarker>" + markerfilename +	"</zipmarker>\n")
  			self.__Raptor.PrintXML("</clean>\n")
  
@@ -10386,7 +11346,7 @@
  			self.__Raptor.Warn("Problem while unzipping export %s to %s: %s",source,destination,str(e))
  
  		self.__Raptor.Info("Unzipped %d files from %s to %s", filecount, source, destination)
-@@ -2915,12 +3015,12 @@
+@@ -2915,12 +3026,12 @@
  			return	# feature variation does not run extensions at all
  		
  		if buildPlatform["TESTCODE"]:
@@ -10402,7 +11362,15 @@
  
  		for i,extension in enumerate(extensions):
  			if self.__Raptor.projects:
-@@ -2999,14 +3099,20 @@
+@@ -2979,7 +3090,6 @@
+ 				value = options[option].replace('$(EPOCROOT)', '$(EPOCROOT)/')
+ 				value = value.replace('$(', '$$$$(')
+ 				value = value.replace('$/', '/').replace('$;', ':')
+-				value = value.replace('$/', '/').replace('$;', ':')
+ 
+ 				if customInterface:
+ 					var.AddOperation(raptor_data.Set(option, value))
+@@ -2999,14 +3109,20 @@
  		gnuList = []
  		makefileList = []
  
@@ -10426,7 +11394,7 @@
  			projectname = mmpFileEntry.filename.File().lower()
  
  			if self.__Raptor.projects:
-@@ -3024,7 +3130,8 @@
+@@ -3024,7 +3140,8 @@
  
  			mmpFile = MMPFile(foundmmpfile,
  								   self.__gnucpp,
@@ -10436,7 +11404,7 @@
  								   log = self.__Raptor)
  
  			mmpFilename = mmpFile.filename
-@@ -3058,7 +3165,7 @@
+@@ -3058,7 +3175,7 @@
  				continue
  			
  			# now build the specification tree
@@ -10445,7 +11413,7 @@
  			var = backend.BuildVariant
  
  			var.AddOperation(raptor_data.Set("PROJECT_META", str(mmpFilename)))
-@@ -3094,7 +3201,7 @@
+@@ -3094,7 +3211,7 @@
  
  			# Although not part of the MMP, some MMP-based build specs additionally require knowledge of their
  			# container bld.inf exported headers
@@ -10454,7 +11422,7 @@
  				destination = export.getDestination()
  				if isinstance(destination, list):
  					exportfile = str(destination[0])
-@@ -3108,6 +3215,16 @@
+@@ -3108,6 +3225,16 @@
  			mmpSpec.AddVariant(var)
  			componentNode.AddChild(mmpSpec)
  
@@ -10471,7 +11439,7 @@
  			# resources, stringtables and bitmaps are sub-nodes of this project
  			# (do not add these for feature variant builds)
  			
-@@ -3150,7 +3267,7 @@
+@@ -3150,7 +3277,7 @@
  					self.projectList.remove(projectname)
  
  			self.__Raptor.Debug("%i gnumakefile extension makefiles for %s",
@@ -10480,8 +11448,12 @@
  			var = raptor_data.Variant()
  			gnuSpec = raptor_data.Specification("gnumakefile " + str(g.getMakefileName()))
  			interface = buildPlatform["ext_makefile"]
-@@ -3182,7 +3299,7 @@
- 					projectList.remove(projectname)
+@@ -3179,10 +3306,10 @@
+ 					self.__Raptor.Debug("Skipping %s", str(m.getMakefileName()))
+ 					continue
+ 				elif projectname in self.projectList:
+-					projectList.remove(projectname)
++					self.projectList.remove(projectname)
  
  			self.__Raptor.Debug("%i makefile extension makefiles for %s",
 -						len(makefileList), str(componentNode.bldinf.filename))
@@ -10489,7 +11461,7 @@
  			var = raptor_data.Variant()
  			gnuSpec = raptor_data.Specification("makefile " + str(m.getMakefileName()))
  			interface = buildPlatform["ext_makefile"]
-@@ -3203,17 +3320,6 @@
+@@ -3203,17 +3330,6 @@
  			gnuSpec.AddVariant(var)
  			componentNode.AddChild(gnuSpec)
  
@@ -10509,7 +11481,7 @@
  		# Form path to kif.xml and path to buildinfo.txt
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor.py	2010-05-18 19:32:34.789348356 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor.py	2010-05-17 18:47:53.092842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor.py	2010-06-04 12:09:25.031849000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -10676,9 +11648,7 @@
 +		self.unfurl_all(build)
 +
 +		sp = self.specs
- 
--	def extend(self, c):
--		self.components.extend(c)
++
 +		build.AssertBuildOK()
 +
 +		m = self.realise_makefile(build, sp)
@@ -10691,9 +11661,15 @@
 +
 +
 +		return result
-+
-+
-+
+ 
+-	def extend(self, c):
+-		self.components.extend(c)
+ 	
+-	def append(self, c):
+-		self.components.append(c)
+ 
+-	def GenerateSpecs(self, genericspecs, configs):
+-		"""Return a build spec hierarchy for a ComponentGroup. This involves parsing the component MetaData (bld.infs, mmps). 
 +class Project(ModelNode):
 +	"""A project or, in symbian-speak, an MMP
 +	"""
@@ -10745,9 +11721,7 @@
 +	def __init__(self, name, componentlist=[]):
 +		super(Layer,self).__init__(name)
 +		self.name = name
- 	
--	def append(self, c):
--		self.components.append(c)
++
 +		for c in componentlist:
 +			if isinstance(c, raptor_xml.SystemModelComponent):
 +				# this component came from a system_definition.xml
@@ -10755,9 +11729,7 @@
 +			else:
 +				# this is a plain old bld.inf file from the command-line
 +				self.children.add(Component(c))
- 
--	def GenerateSpecs(self, genericspecs, configs):
--		"""Return a build spec hierarchy for a ComponentGroup. This involves parsing the component MetaData (bld.infs, mmps). 
++
 +	def unfurl(self, build):
 +		"""Discover the children of this layer. This involves parsing the component MetaData (bld.infs, mmps).
  		Takes a raptor object as a parameter (build), together with a list of Configurations.
@@ -10806,8 +11778,10 @@
 -		if metaReader:
 -			for c in metaReader.BuildPlatforms:
 -				self.dependencies.update(c["METADEPS"])
--
--
++				build.Error(e.Text)
+ 
++		self.unfurled = True
+ 
 -	def CreateMakefile(self, makefilename_base, engine, named = False):
 -		if len(self.specs) <= 0:
 -			return None
@@ -10819,19 +11793,17 @@
 -
 -		# insert the start time into the Makefile name?
 -		makefile.path = makefile.path.replace("%TIME", build.timestring)
-+				build.Error(e.Text)
- 
+-
 -		engine.Write(makefile, self.specs, self.configs)
-+		self.unfurled = True
  
 -		return makefile
- 
 +	def meta_realise(self, build):
 +		"""Generate specs that can be used to "take care of" finding out more
 +		about this metaunit - i.e. one doesn't want to parse it immediately
 +		but to create a makefile that will parse it.
 +		In this case it allows bld.infs to be parsed in parallel by make."""
  
+-
 -	def GenerateMetadataSpecs(self, configs):
  		# insert the start time into the Makefile name?
  
@@ -10840,22 +11812,19 @@
  
  		# Pass certain CLI flags through to the makefile-generating sbs calls
  		cli_options = ""
-@@ -206,34 +338,53 @@
+@@ -206,34 +338,50 @@
  		if build.quiet == True:
  			cli_options += " -q"
  
-+		if build.timing == True:
-+			cli_options += " --timing"
- 		
--		nc = len(self.components)
--		number_blocks = 16
 +		if build.noDependInclude == True:
 +			cli_options += " --no-depend-include"
 +
 +		if build.noDependGenerate == True:
 +			cli_options += " --no-depend-generate"
 +
-+
+ 		
+-		nc = len(self.components)
+-		number_blocks = 16
 +		nc = len(self.children)
 +		number_blocks = build.jobs
  		block_size = (nc / number_blocks) + 1
@@ -10902,7 +11871,7 @@
  				pass
  			
  			# add some basic data in a component-wide variant
-@@ -242,13 +393,19 @@
+@@ -242,13 +390,19 @@
  			var.AddOperation(raptor_data.Set("MAKEFILE_PATH", makefile_path))
  			var.AddOperation(raptor_data.Set("CONFIGS", configList))
  			var.AddOperation(raptor_data.Set("CLI_OPTIONS", cli_options))
@@ -10924,7 +11893,7 @@
  			try:
  				interface = build.cache.FindNamedInterface("build.makefiles")
  				specNode.SetInterface(interface)
-@@ -256,15 +413,30 @@
+@@ -256,15 +410,30 @@
  				build.Error("Can't find flm interface 'build.makefiles' ")
  				
  			spec_nodes.append(specNode)
@@ -10950,16 +11919,29 @@
  			
  
 -		## possibly some error handling here?
--
+ 
 -		self.specs = spec_nodes
  
- 
+-
 -class BuildCompleteException(Exception):
 +class BuildCannotProgressException(Exception):
  	pass
  
  # raptor module classes
-@@ -326,8 +498,8 @@
+@@ -276,9 +445,10 @@
+ 	created by the Main function. When operated by an IDE several Raptor
+ 	objects may be created and operated at the same time."""
+ 
+-
++	# mission enumeration
+ 	M_BUILD = 1
+-	M_VERSION = 2	
++	M_QUERY = 2
++	M_VERSION = 3
+ 
+ 	def __init__(self, home = None):
+ 
+@@ -326,8 +496,8 @@
  		# things to initialise
  		self.args = []
  
@@ -10970,7 +11952,7 @@
  		self.commandlineComponents = []
  
  		self.systemModel = None
-@@ -343,8 +515,10 @@
+@@ -343,9 +513,12 @@
  		self.maker = None
  		self.debugOutput = False
  		self.doExportOnly = False
@@ -10979,17 +11961,19 @@
  		self.noDependInclude = False
 +		self.noDependGenerate = False
  		self.projects = set()
++		self.queries = []
  
  		self.cache = raptor_cache.Cache(self)
-@@ -360,6 +534,7 @@
+ 		self.override = {env: str(self.home)}
+@@ -360,6 +533,7 @@
  		# what platform and filesystem are we running on?
  		self.filesystem = raptor_utilities.getOSFileSystem()
  
-+		self.timing = False
++		self.timing = True # Needed by filters such as copy_file to monitor progress
  		self.toolset = None
  
  		self.starttime = time.time()
-@@ -374,6 +549,9 @@
+@@ -374,6 +548,9 @@
  		return True
  
  	def AddConfigName(self, name):
@@ -10999,7 +11983,7 @@
  		self.configNames.append(name)
  		return True
  
-@@ -439,6 +617,16 @@
+@@ -439,6 +616,16 @@
  
  	def SetExportOnly(self, TrueOrFalse):
  		self.doExportOnly = TrueOrFalse
@@ -11016,7 +12000,7 @@
  		return True
  
  	def SetNoBuild(self, TrueOrFalse):
-@@ -449,6 +637,10 @@
+@@ -449,6 +636,10 @@
  		self.noDependInclude = TrueOrFalse
  		return True
  		
@@ -11027,12 +12011,12 @@
  	def SetKeepGoing(self, TrueOrFalse):
  		self.keepGoing = TrueOrFalse
  		return True
-@@ -503,10 +695,16 @@
+@@ -503,10 +694,16 @@
  
  		return True
  
 +	def SetTiming(self, TrueOrFalse):
-+		self.timing = TrueOrFalse
++		self.Info("--timing switch no longer has any effect - build timing is now permanently on")
 +		return True
 +
  	def SetParallelParsing(self, type):
@@ -11044,7 +12028,19 @@
  		elif type == "off":
  			self.doParallelParsing = False
  		else:
-@@ -529,7 +727,7 @@
+@@ -519,6 +716,11 @@
+ 		self.projects.add(projectName.lower())
+ 		return True
+ 
++	def AddQuery(self, q):
++		self.queries.append(q)
++		self.mission = Raptor.M_QUERY
++		return True
++	
+ 	def FilterList(self, value):
+ 		self.filterList = value
+ 		return True
+@@ -529,7 +731,7 @@
  
  	def PrintVersion(self,dummy):
  		global name
@@ -11053,7 +12049,7 @@
  		self.mission = Raptor.M_VERSION
  		return False
  
-@@ -538,7 +736,7 @@
+@@ -538,7 +740,7 @@
  	def Introduction(self):
  		"""Print a header of useful information about Raptor"""
  
@@ -11062,7 +12058,7 @@
  
  		self.Info("%s %s", env, str(self.home))
  		self.Info("Set-up %s", str(self.raptorXML))
-@@ -546,8 +744,8 @@
+@@ -546,8 +748,8 @@
  		self.Info("Current working directory %s", os.getcwd())
  		
  		# the inherited environment
@@ -11073,7 +12069,35 @@
  
  		# and some general debug stuff
  		self.Debug("Platform %s", "-".join(hostplatform))
-@@ -659,32 +857,6 @@
+@@ -597,8 +799,10 @@
+ 		self.args = args
+ 
+ 		# assuming self.CLI = "raptor_cli"
+-		more_to_do = raptor_cli.GetArgs(self, args)
++		if not raptor_cli.GetArgs(self, args):
++			self.skipAll = True		# nothing else to do
+ 
++	def ParseCommandLineTargets(self):
+ 		# resolve inter-argument dependencies.
+ 		# --what or --check implies the WHAT target and FilterWhat Filter
+ 		if self.doWhat or self.doCheck:
+@@ -631,9 +835,13 @@
+ 				self.filterList += ",filterclean"
+ 				if is_suspicious_clean:
+ 					self.Warn('CLEAN, CLEANEXPORT and a REALLYCLEAN should not be combined with other targets as the result is unpredictable.')
++			else:
++				""" Copyfile implements the <copy> tag which is primarily useful with cluster builds.
++				    It allows file copying to occur on the primary build host rather than on the cluster.
++				    This is more efficient.
++				"""
++				self.filterList += ",filtercopyfile"
+ 
+-		if not more_to_do:
+-			self.skipAll = True		# nothing else to do
+ 
+ 	def ProcessConfig(self):
+ 		# this function will perform additional processing of config
+@@ -659,32 +867,6 @@
  
  		self.cache.Load(self.systemFLM)
  
@@ -11106,7 +12130,7 @@
  	def GetBuildUnitsToBuild(self, configNames):
  		"""Return a list of the configuration objects that correspond to the 
  		   list of configuration names in the configNames parameter.
-@@ -700,15 +872,7 @@
+@@ -700,15 +882,7 @@
  			else:
  				configNames.append(self.defaultConfig)
  
@@ -11123,7 +12147,7 @@
  
  		for b in buildUnitsToBuild:
  			self.Info("Buildable configuration '%s'", b.name)
-@@ -770,13 +934,13 @@
+@@ -770,13 +944,13 @@
  				systemModel.DumpLayerInfo(layer)
  
  				if systemModel.IsLayerBuildable(layer):
@@ -11139,7 +12163,7 @@
  	def FindSysDefIn(self, aDir = None):
  		# Find a system definition file
  
-@@ -801,22 +965,12 @@
+@@ -801,22 +975,12 @@
  			dir = generic_path.Path(aDir)
  
  		bldInf = dir.Append(self.buildInformation)
@@ -11162,7 +12186,7 @@
  	def GenerateGenericSpecs(self, configsToBuild):
  		# if a Configuration has any config-wide interfaces
  		# then add a Specification node to call each of them.
-@@ -832,7 +986,7 @@
+@@ -832,7 +996,7 @@
  					filter.AddConfigCondition(c.name)
  				else:
  					# create a new node
@@ -11171,7 +12195,7 @@
  					filter.AddConfigCondition(c.name)
  					for i in iface.split():
  						spec = raptor_data.Specification(i)
-@@ -842,50 +996,25 @@
+@@ -842,50 +1006,25 @@
  					configWide[iface] = filter
  					genericSpecs.append(filter)
  
@@ -11205,13 +12229,13 @@
  	def GetEvaluator(self, specification, configuration, gathertools=False):
  		""" this will perform some caching later """
 -		return raptor_data.Evaluator(self, specification, configuration, gathertools=gathertools)
--
--
++		return raptor_data.Evaluator(specification, configuration, gathertools=gathertools, cache = self.cache)
+ 
+ 
 -	def areMakefilesUptodate(self):
 -		return False
-+		return raptor_data.Evaluator(specification, configuration, gathertools=gathertools, cache = self.cache)
- 
- 
+-
+-
 -	def Make(self, makefile):
 -
 -		if self.maker.Make(makefile):
@@ -11229,7 +12253,7 @@
  
  
  	def Report(self):
-@@ -898,10 +1027,10 @@
+@@ -898,10 +1037,10 @@
  		self.Info("Run time %s seconds" % self.runtime)
  
  	def AssertBuildOK(self):
@@ -11242,7 +12266,14 @@
  
  		return True
  
-@@ -934,17 +1063,17 @@
+@@ -928,23 +1067,23 @@
+ 			self.raptor_params = BuildStats(self)
+ 
+ 			# Open the requested plugins using the pluginbox
+-			self.out.open(self.raptor_params, self.filterList.split(','), self.pbox)
++			self.out.open(self.raptor_params, self.filterList, self.pbox)
+ 
+ 			# log header
  			self.out.write("<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n")
  
  			namespace = "http://symbian.com/xml/build/log"
@@ -11263,7 +12294,7 @@
  	def CloseLog(self):
  		if self.logOpen:
  			self.out.summary()
-@@ -976,6 +1105,30 @@
+@@ -976,6 +1115,30 @@
  		self.out.write("<info" + self.attributeString(attributes) + ">" +
  		               escape(format % extras) + "</info>\n")
  
@@ -11294,7 +12325,7 @@
  	def Debug(self, format, *extras, **attributes):
  		"Send a debugging message to the configured channel"
  
-@@ -1019,28 +1172,11 @@
+@@ -1019,28 +1182,11 @@
  		if format:
  			self.out.write(format % extras)
  
@@ -11326,7 +12357,7 @@
  		# Look for bld.infs or sysdefs in the current dir if none were specified
  		if self.systemDefinitionFile == None and len(self.commandlineComponents) == 0:
  			if not self.preferBuildInfoToSystemDefinition:
-@@ -1049,38 +1185,39 @@
+@@ -1049,38 +1195,64 @@
  				if self.systemDefinitionFile == None:
  					aComponent = self.FindComponentIn(cwd)
  					if aComponent:
@@ -11370,13 +12401,38 @@
 +				for c in cg:
 +					newcg.add(c)
 +			layers = [newcg]
++
++		return layers
++
++	def Query(self):
++		"process command-line queries."
  
 -		return componentGroups
-+		return layers
++		if self.mission != Raptor.M_QUERY:
++			return 0
++		
++		# establish an object cache based on the current settings
++		self.LoadCache()
++			
++		# our "self" is a valid object for initialising an API Context
++		import raptor_api
++		api = raptor_api.Context(self)
++		
++		print "<sbs version='%s'>" % raptor_version.numericversion()
++		
++		for q in self.queries:
++			try:
++				print api.stringquery(q)
++				
++			except Exception, e:
++				self.Error("exception '%s' with query '%s'", str(e), q)
++		
++		print "</sbs>"	
++		return self.errorCode
  
  	def Build(self):
  
-@@ -1102,20 +1239,24 @@
+@@ -1102,20 +1274,24 @@
  
  			# find out what configurations to build
  			self.AssertBuildOK()
@@ -11406,7 +12462,7 @@
  
  			# check the configurations (tools versions)
  			self.AssertBuildOK()
-@@ -1123,35 +1264,36 @@
+@@ -1123,35 +1299,36 @@
  			if self.toolcheck != 'off':
  				self.CheckConfigs(buildUnitsToBuild)
  			else:
@@ -11421,9 +12477,9 @@
 +					self.maker = raptor_make.MakeEngine(self, self.makeEngine)
 +				except raptor_make.BadMakeEngineException,e:
 +					self.Error("Unable to use make engine: %s " % str(e))
++					
  
 -			# if self.doParallelParsing and not (len(componentGroups) == 1 and len(componentGroups[0]) == 1):
-+
 +			self.AssertBuildOK()
 +
 +			# if self.doParallelParsing and not (len(layers) == 1 and len(layers[0]) == 1):
@@ -11449,17 +12505,38 @@
  					# create specs for a specific group of components
 -					cg.GenerateSpecs(generic_specs, buildUnitsToBuild)
 -					self.WriteMetadataDepsMakefile(cg)	
-+					l.realise(self)
- 					
+-					
 -					# generate the makefiles for one group of specs
 -					self.MakeComponentGroup(cg)
--
++					l.realise(self)
+ 
 -		except BuildCompleteException,b:
 +		except BuildCannotProgressException,b:
  			if str(b) != "":
  				self.Info(str(b))
  
-@@ -1185,6 +1327,8 @@
+@@ -1176,15 +1353,29 @@
+ 		build.ConfigFile()
+ 		build.ProcessConfig()
+ 		build.CommandLine(argv)
++		build.ParseCommandLineTargets()
+ 
+ 		return build 
+ 
++	@classmethod
++	def CreateCommandlineAnalysis(cls, argv):
++		""" Perform an analysis run where a build is not performed. """
++		build = Raptor()
++		build.AssertBuildOK()
++		build.ConfigFile()
++		build.ProcessConfig()
++		build.CommandLine(argv)
++		# Don't parse command line targets - they don't make any sense if you're not doing a build
++
++		return build
+ 
+ 
+ # Class for passing constricted parameters to filters
  class BuildStats(object):
  
  	def __init__(self, raptor_instance):
@@ -11468,7 +12545,7 @@
  		self.logFileName = raptor_instance.logFileName
  		self.quiet = raptor_instance.quiet
  		self.doCheck = raptor_instance.doCheck
-@@ -1212,17 +1356,7 @@
+@@ -1212,17 +1403,10 @@
  	# object which represents a build
  	b = Raptor.CreateCommandlineBuild(argv)
  
@@ -11479,7 +12556,9 @@
 -	build = b
 -	log = b
 -
--
++	if b.mission == Raptor.M_QUERY:
++		return b.Query()
+ 
 -	result = b.Build()
 -
 -	return result
@@ -11488,9 +12567,79 @@
  
  def DisplayBanner():
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python: raptor_timing.py
+diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_utilities.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_utilities.py
+--- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_utilities.py	2010-05-18 19:32:34.793348934 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_utilities.py	2010-06-04 12:09:25.039849000 +0100
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
++# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+ # All rights reserved.
+ # This component and the accompanying materials are made available
+ # under the terms of the License "Eclipse Public License v1.0"
+@@ -20,6 +20,8 @@
+ import os.path
+ import re
+ import sys
++import stat
++import shutil
+ 
+ dosSlashRegEx = re.compile(r'\\')
+ unixSlashRegEx = re.compile(r'/')
+@@ -189,3 +191,50 @@
+ 		return
+ 
+ nulllog = NullLog()
++
++def copyfile(_source, _destination):
++	"""Copy the source file to the destination file (create a directory
++	   to copy into if it does not exist). Don't copy if the destination
++	   file exists and has an equal or newer modification time."""
++	source = generic_path.Path(str(_source).replace('%20',' '))
++	destination = generic_path.Path(str(_destination).replace('%20',' '))
++	dest_str = str(destination)
++	source_str = str(source)
++
++	try:
++
++
++		destDir = destination.Dir()
++		if not destDir.isDir():
++			os.makedirs(str(destDir))
++			shutil.copyfile(source_str, dest_str)
++			return 
++		# Destination file exists so we have to think about updating it
++		sourceMTime = 0
++		destMTime = 0
++		sourceStat = 0
++		try:
++			sourceStat = os.stat(source_str)
++			sourceMTime = sourceStat[stat.ST_MTIME]
++		except OSError, e:
++			message = "Source of copyfile does not exist:  " + str(source)
++			raise IOError(message)
++		try:
++			destMTime = os.stat(dest_str)[stat.ST_MTIME]
++		except OSError, e:
++			pass # destination doesn't have to exist
++
++		if destMTime == 0 or destMTime < sourceMTime:
++			if os.path.exists(dest_str):
++				os.chmod(dest_str,stat.S_IREAD | stat.S_IWRITE)
++			shutil.copyfile(source_str, dest_str)
++
++			# Ensure that the destination file remains executable if the source was also:
++			os.chmod(dest_str,sourceStat[stat.ST_MODE] | stat.S_IREAD | stat.S_IWRITE | stat.S_IWGRP ) 
++
++
++	except Exception,e:
++		message = "Could not update " + dest_str + " from " + source_str + " : " + str(e)
++		raise IOError(message)
++
++	return 
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_version.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_version.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_version.py	2010-05-18 19:32:34.793348934 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_version.py	2010-05-17 18:47:53.100842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_version.py	2010-06-04 12:09:25.039849000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -11507,7 +12656,7 @@
 -def Version():
 +# replace CHANGESET with the Hg changeset for ANY release
 +
-+version=(2,13,0,"2010-04-12","symbian build system","CHANGESET")
++version=(2,14,1,"2010-06-03","symbian build system","CHANGESET")
 +
 +def numericversion():
 +	"""Raptor version string"""
@@ -11520,7 +12669,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python: raptor_version.py.bak
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_xml.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_xml.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/python/raptor_xml.py	2010-05-18 19:32:34.793348934 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_xml.py	2010-05-17 18:47:53.100842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/python/raptor_xml.py	2010-06-04 12:09:25.039849000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -11536,7 +12685,7 @@
 +	def __init__(self, aBldInfFile, aLayerName, aContainerNames, aSystemDefinitionFile, aSystemDefinitionBase, aSystemDefinitionVersion):
  		generic_path.Path.__init__(self, aBldInfFile.Absolute().path)
  		self.__ContainerNames = aContainerNames
-+		self.__LayerName = aLayerName
++		self.__LayerName = aLayerName
  		self.__SystemDefinitionFile = aSystemDefinitionFile
  		self.__SystemDefinitionBase = aSystemDefinitionBase
  		self.__SystemDefinitionVersion = aSystemDefinitionVersion
@@ -11545,24 +12694,41 @@
  		return self.__SystemDefinitionBase
  
 -	def GetSystemDefinitionFile(self):
-+	def GetSystemDefinitionVersion(self):
++	def GetSystemDefinitionVersion(self):
  		return self.__SystemDefinitionVersion
  
-+	def GetLayerName(self):
++	def GetLayerName(self):
 +		return self.__LayerName
 +
  	def GetContainerName(self, aContainerType):
  		if self.__ContainerNames.has_key(aContainerType):
  		  return self.__ContainerNames[aContainerType]
-@@ -174,6 +178,7 @@
+@@ -174,10 +178,12 @@
  		self.__SystemDefinitionFile = aSystemDefinitionFile.GetLocalString()
  		self.__SystemDefinitionBase = aSystemDefinitionBase.GetLocalString()
  		self.__Version = {'MAJOR':0,'MID':0,'MINOR':0}
-+		self.__IdAttribute = "name"
++		self.__IdAttribute = "name"
  		self.__ComponentRoot = ""
  		self.__TotalComponents = 0
  		self.__LayerList = []
-@@ -222,6 +227,10 @@
+ 		self.__LayerDetails = {}
++		self.__MissingBldInfs = {}
+ 
+ 		self.__DOM = None
+ 		self.__SystemDefinitionElement = None
+@@ -203,6 +209,11 @@
+ 		return self.__LayerDetails[aLayer]
+ 
+ 	def IsLayerBuildable(self, aLayer):
++		if aLayer in self.__MissingBldInfs:
++			for missingbldinf in self.__MissingBldInfs[aLayer]:
++				self.__Logger.Error("System Definition layer \"%s\" from system definition file \"%s\" " + \
++								    "refers to non existent bld.inf file %s", aLayer, self.__SystemDefinitionFile, missingbldinf)
++
+ 		if len(self.GetLayerComponents(aLayer)):
+ 			return True
+ 		return False
+@@ -222,6 +234,10 @@
  	def DumpInfo(self):
  		self.__Logger.Info("Found %d bld.inf references in %s within %d layers:", len(self.GetAllComponents()), self.__SystemDefinitionFile, len(self.GetLayerNames()))
  		self.__Logger.Info("\t%s", ", ".join(self.GetLayerNames()))
@@ -11573,35 +12739,35 @@
  
  	def __Read(self):
  		if not os.path.exists(self.__SystemDefinitionFile):
-@@ -259,42 +268,62 @@
+@@ -259,42 +275,62 @@
  
  		if self.__Version['MAJOR'] == 1 and self.__Version['MID'] > 2:
  			self.__ComponentRoot = self.__SystemDefinitionBase
 -		elif self.__Version['MAJOR'] == 2:
 -			# 2.0.0 format supports SOURCEROOT as an environment specified base - we respect this, unless
-+		elif self.__Version['MAJOR'] == 2 or self.__Version['MAJOR'] == 3:
-+			# 2.0.x and 3.0.0 formats support SOURCEROOT or SRCROOT as an environment specified base - we respect this, unless
++		elif self.__Version['MAJOR'] == 2 or self.__Version['MAJOR'] == 3:
++			# 2.0.x and 3.0.0 formats support SOURCEROOT or SRCROOT as an environment specified base - we respect this, unless
  			# explicitly overridden on the command line
 -			if os.environ.has_key('SOURCEROOT'):
-+			if os.environ.has_key('SRCROOT'):
-+				self.__ComponentRoot = generic_path.Path(os.environ['SRCROOT'])
-+			elif os.environ.has_key('SOURCEROOT'):
++			if os.environ.has_key('SRCROOT'):
++				self.__ComponentRoot = generic_path.Path(os.environ['SRCROOT'])
++			elif os.environ.has_key('SOURCEROOT'):
  				self.__ComponentRoot = generic_path.Path(os.environ['SOURCEROOT'])
-+				
++
  			if self.__SystemDefinitionBase and self.__SystemDefinitionBase != ".":
  				self.__ComponentRoot = self.__SystemDefinitionBase
 -				if os.environ.has_key('SOURCEROOT'):
-+				if os.environ.has_key('SRCROOT'):
-+					self.__Logger.Info("Command line specified System Definition file base \'%s\' overriding environment SRCROOT \'%s\'", self.__SystemDefinitionBase, os.environ['SRCROOT'])
-+				elif os.environ.has_key('SOURCEROOT'):
++				if os.environ.has_key('SRCROOT'):
++					self.__Logger.Info("Command line specified System Definition file base \'%s\' overriding environment SRCROOT \'%s\'", self.__SystemDefinitionBase, os.environ['SRCROOT'])
++				elif os.environ.has_key('SOURCEROOT'):
  					self.__Logger.Info("Command line specified System Definition file base \'%s\' overriding environment SOURCEROOT \'%s\'", self.__SystemDefinitionBase, os.environ['SOURCEROOT'])
  		else:
  			self.__Logger.Error("Cannot process schema version %s of file %s", version.string, self.__SystemDefinitionFile)
  			return False
  
-+		if self.__Version['MAJOR'] >= 3:
-+			# id is the unique identifier for 3.0 and later schema
-+			self.__IdAttribute = "id"
++		if self.__Version['MAJOR'] >= 3:
++			# id is the unique identifier for 3.0 and later schema
++			self.__IdAttribute = "id"
 +
  		return True
  
@@ -11625,14 +12791,14 @@
  
  		return component
  
-+	def __GetEffectiveLayer(self, aElement):
-+		#' return the ID of the topmost item which has an ID. For 1.x and 2.x, this will always be layer, for 3.x, it will be the topmost ID'd element in the file
-+		# never call this on the root element
-+		if aElement.parentNode.hasAttribute(self.__IdAttribute):
-+			return self.__GetEffectiveLayer(aElement.parentNode)
-+		elif aElement.hasAttribute(self.__IdAttribute):
-+			return aElement.getAttribute(self.__IdAttribute)
-+		return ""
++	def __GetEffectiveLayer(self, aElement):
++		#' return the ID of the topmost item which has an ID. For 1.x and 2.x, this will always be layer, for 3.x, it will be the topmost ID'd element in the file
++		# never call this on the root element
++		if aElement.parentNode.hasAttribute(self.__IdAttribute):
++			return self.__GetEffectiveLayer(aElement.parentNode)
++		elif aElement.hasAttribute(self.__IdAttribute):
++			return aElement.getAttribute(self.__IdAttribute)
++		return ""
 +
  	def __GetElementContainers(self, aElement, aContainers):
  		# take a <unit/> element and creates a type->name dictionary of all of its parent containers
@@ -11644,7 +12810,7 @@
  
  			if name:
  				aContainers[parent.tagName] = name
-@@ -305,8 +334,9 @@
+@@ -305,8 +341,9 @@
  		"""Search for XML <unit/> elements with 'bldFile' attributes and resolve concrete bld.inf locations
  		with an appreciation of different schema versions."""
  
@@ -11656,7 +12822,7 @@
  
  			if not self.__LayerDetails.has_key(currentLayer):
  				self.__LayerDetails[currentLayer] = []
-@@ -320,10 +350,10 @@
+@@ -320,10 +357,10 @@
  			if bldFileValue:
  				bldInfRoot = self.__ComponentRoot
  
@@ -11670,23 +12836,31 @@
  					# version 2.x.x schema paths are subject to a "root" attribute off-set, if it exists
  					rootValue = aElement.getAttribute("root")
  
-@@ -338,8 +368,14 @@
+@@ -338,16 +375,29 @@
  
  				group = generic_path.Path(bldFileValue)
  
-+				if self.__Version['MAJOR'] < 3:
-+					# absolute paths are not changed by root var in 1.x and 2.x
++				if self.__Version['MAJOR'] < 3:
++					# absolute paths are not changed by root var in 1.x and 2.x
  				if not group.isAbsolute() and bldInfRoot:
  					group = generic_path.Join(bldInfRoot, group)
-+				else:
-+					# only absolute paths are changed by root var in 3.x
-+					if group.isAbsolute() and bldInfRoot:
-+						group = generic_path.Join(bldInfRoot, group)
++				else:
++					# only absolute paths are changed by root var in 3.x
++					if group.isAbsolute() and bldInfRoot:
++						group = generic_path.Join(bldInfRoot, group)
  
  				bldinf = generic_path.Join(group, "bld.inf").FindCaseless()
  
-@@ -347,7 +383,7 @@
- 					self.__Logger.Error("No bld.inf found at %s in %s", group.GetLocalString(), self.__SystemDefinitionFile)
+ 				if bldinf == None:
+-					self.__Logger.Error("No bld.inf found at %s in %s", group.GetLocalString(), self.__SystemDefinitionFile)
++					# recording layers containing non existent bld.infs
++					bldinfname = group.GetLocalString()
++					bldinfname = bldinfname + 'bld.inf'
++					layer = self.__GetEffectiveLayer(aElement)
++					if not layer in self.__MissingBldInfs:
++						self.__MissingBldInfs[layer]=[]
++					self.__MissingBldInfs[layer].append(bldinfname)
++
  				else:
  					component = self.__CreateComponent(bldinf, aElement)
 -					layer = component.GetContainerName("layer")
@@ -11697,7 +12871,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor: RELEASE-NOTES.html
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/schema/build/log/1_0.xsd /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/schema/build/log/1_0.xsd
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/schema/build/log/1_0.xsd	2010-05-18 19:32:34.797348465 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/schema/build/log/1_0.xsd	2010-05-17 18:47:53.100842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/schema/build/log/1_0.xsd	2010-06-04 12:09:25.043850000 +0100
 @@ -3,7 +3,7 @@
  
  	<xsd:annotation>
@@ -11721,7 +12895,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util: build
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/config.h /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/config.h
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/config.h	2010-05-18 19:32:34.797348465 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/config.h	2010-05-17 18:47:53.584842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/config.h	2010-06-04 12:09:25.536350000 +0100
 @@ -1,5 +1,5 @@
  /*
 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -11739,7 +12913,7 @@
  #define HAS_SETENV 1
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/gccprogram.mk /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/gccprogram.mk
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/gccprogram.mk	2010-05-18 19:32:35.141349393 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/gccprogram.mk	2010-05-17 18:47:53.976844000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/gccprogram.mk	2010-06-04 12:09:28.348350000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -11758,7 +12932,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/install-linux/package_sbs.sh /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/install-linux/package_sbs.sh
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/install-linux/package_sbs.sh	2010-05-18 19:32:35.141349393 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/install-linux/package_sbs.sh	2010-05-17 18:47:53.984845000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/install-linux/package_sbs.sh	2010-06-04 12:09:28.348350000 +0100
 @@ -1,6 +1,6 @@
  #!/bin/bash
  
@@ -11778,7 +12952,7 @@
  	grep -v 'util/build'  | 
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/install-windows/raptorinstallermaker.py /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/install-windows/raptorinstallermaker.py
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/install-windows/raptorinstallermaker.py	2010-05-18 19:32:35.169348622 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/install-windows/raptorinstallermaker.py	2010-05-17 18:47:54.040845000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/install-windows/raptorinstallermaker.py	2010-06-04 12:09:28.376350000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -11943,7 +13117,7 @@
  cleanup()
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/install-windows/raptorinstallerscript.nsi /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/install-windows/raptorinstallerscript.nsi
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/install-windows/raptorinstallerscript.nsi	2010-05-18 19:32:35.169348622 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/install-windows/raptorinstallerscript.nsi	2010-05-17 18:47:54.040845000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/install-windows/raptorinstallerscript.nsi	2010-06-04 12:09:28.376350000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -12033,7 +13207,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon: chomp.h
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/lock.c /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/lock.c
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/lock.c	2010-05-18 19:32:35.173348431 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/lock.c	2010-05-17 18:47:54.048842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/lock.c	2010-06-04 12:09:28.380350000 +0100
 @@ -12,7 +12,7 @@
  * Contributors:
  *
@@ -12045,7 +13219,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/Makefile /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/Makefile
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/Makefile	2010-05-18 19:32:35.173348431 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/Makefile	2010-05-17 18:47:54.044845000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/Makefile	2010-06-04 12:09:28.380350000 +0100
 @@ -1,4 +1,4 @@
 -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
 +# Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
@@ -12090,7 +13264,7 @@
 +
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/process.c /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/process.c
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/process.c	2010-05-18 19:32:35.173348431 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/process.c	2010-05-17 18:47:54.048842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/process.c	2010-06-04 12:09:28.384350000 +0100
 @@ -1,5 +1,5 @@
  /*
 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -12116,7 +13290,7 @@
  	
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/talon.c /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/talon.c
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/talon.c	2010-05-18 19:32:35.173348431 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/talon.c	2010-05-17 18:47:54.048842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/talon.c	2010-06-04 12:09:28.384350000 +0100
 @@ -1,5 +1,5 @@
  /*
 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -12262,7 +13436,7 @@
  	
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/testbuffer.c /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/testbuffer.c
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/testbuffer.c	2010-05-18 19:32:35.173348431 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/testbuffer.c	2010-05-17 18:47:54.052842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/testbuffer.c	2010-06-04 12:09:28.384350000 +0100
 @@ -1,5 +1,5 @@
  /*
 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -12285,7 +13459,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon: testchomp.c
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/testprocess.c /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/testprocess.c
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/testprocess.c	2010-05-18 19:32:35.177348591 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/testprocess.c	2010-05-17 18:47:54.052842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/testprocess.c	2010-06-04 12:09:28.388350000 +0100
 @@ -1,5 +1,5 @@
  /*
 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -12310,7 +13484,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests: run.sh
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/t3.mk /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t3.mk
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/t3.mk	2010-05-18 19:32:35.177348591 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t3.mk	2010-05-17 18:47:54.052842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t3.mk	2010-06-04 12:09:28.388350000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -12330,7 +13504,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/t4.mk /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t4.mk
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/t4.mk	2010-05-18 19:32:35.177348591 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t4.mk	2010-05-17 18:47:54.052842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t4.mk	2010-06-04 12:09:28.388350000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -12362,7 +13536,7 @@
  
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/t5.mk /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t5.mk
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/t5.mk	2010-05-18 19:32:35.177348591 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t5.mk	2010-05-17 18:47:54.052842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t5.mk	2010-06-04 12:09:28.388350000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -12381,7 +13555,7 @@
 Only in /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests: t6.mk
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/t.mk /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t.mk
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/t.mk	2010-05-18 19:32:35.177348591 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t.mk	2010-05-17 18:47:54.052842000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/t.mk	2010-06-04 12:09:28.388350000 +0100
 @@ -14,6 +14,7 @@
  # Description: 
  #
@@ -12392,7 +13566,7 @@
  COMPONENT_LAYER:=base
 diff -u -r -b -B -E -x '*.hg*' -x '*cross-plat-dev-utils*' -x '*baseline.txt' -x '*README' -x '*TODO' -x '*NEWS' -x '*.pyc' -x '*~' -x '*linux-unknown-libc2_11*' /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/xcopystdin.mk /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/xcopystdin.mk
 --- /home/imk/symbian/epocroot-pdk-3.0.i/latest_build/build/sbsv2/raptor/util/talon/tests/xcopystdin.mk	2010-05-18 19:32:35.177348591 +0100
-+++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/xcopystdin.mk	2010-05-17 18:47:54.056843000 +0100
++++ /home/imk/symbian/epocroot-pdk-3.0.i/linux_build/sbsv2/raptor/util/talon/tests/xcopystdin.mk	2010-06-04 12:09:28.388350000 +0100
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).