sbs version 2.15.1
authorJon Chatten
Thu, 26 Aug 2010 13:41:01 +0100
changeset 630 31ef8a13d4f4
parent 629 541af5ee3ed9
child 631 9435b9008a58
sbs version 2.15.1
sbsv2/raptor/RELEASE-NOTES.html
sbsv2/raptor/lib/config/default.xml
sbsv2/raptor/lib/config/gcc_x86.xml
sbsv2/raptor/lib/config/locations.xml
sbsv2/raptor/lib/config/x86.xml
sbsv2/raptor/lib/flm/e32abiv2.flm
sbsv2/raptor/lib/flm/e32abiv2defaults.mk
sbsv2/raptor/lib/flm/e32abiv2exexp.flm
sbsv2/raptor/lib/flm/e32link.mk
sbsv2/raptor/lib/flm/gnumakefile.flm
sbsv2/raptor/lib/flm/resource.mk
sbsv2/raptor/notes/x86_initial.txt
sbsv2/raptor/python/raptor_meta.py
sbsv2/raptor/python/raptor_version.py
sbsv2/raptor/test/metadata/project/bld.infs/multiple_plats.inf
sbsv2/raptor/test/smoke_suite/resource_once.py
sbsv2/raptor/test/smoke_suite/test_resources/resource/group/simple.inf
sbsv2/raptor/test/smoke_suite/test_resources/resource/group/simpleresource.mmp
sbsv2/raptor/test/smoke_suite/test_resources/resource/simpleresource.rss
sbsv2/raptor/test/smoke_suite/test_resources/simple/bld.inf
sbsv2/raptor/test/smoke_suite/test_resources/simple_dll/bld.inf
sbsv2/raptor/test/smoke_suite/test_resources/simple_implib/bld.inf
sbsv2/raptor/test/smoke_suite/test_resources/simple_lib/bld.inf
sbsv2/raptor/test/unit_suite/raptor_meta_unit.py
--- a/sbsv2/raptor/RELEASE-NOTES.html	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/RELEASE-NOTES.html	Thu Aug 26 13:41:01 2010 +0100
@@ -6,6 +6,15 @@
 
 <h1>Release Notes for Symbian Build System v2</h1>
 
+<h2>version 2.15.1</h2>
+
+<h3>Defect Fixes</h3>
+<ul>
+<li><a href="http://developer.symbian.org/bugs/show_bug.cgi?id=3523">SF Bug 3523</a> - gnumakefile.flm workaround for romstuff.mke changes uses wrong output file</li>
+<li><a href="http://developer.symbian.org/bugs/show_bug.cgi?id=3374">SF Bug 3374</a> -  Issues with Raptor support for X86 prototype (2.15)</li>
+<li>Fix resource header generation - was being done for every language thus causing clashes in parallel builds</li>
+</ul>
+
 <h2>version 2.15.0</h2>
 
 <h3>New Features</h3>
--- a/sbsv2/raptor/lib/config/default.xml	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/config/default.xml	Thu Aug 26 13:41:01 2010 +0100
@@ -27,6 +27,7 @@
 		<groupRef ref="tools"/>
 		<groupRef ref="tools2"/>
 		<groupRef ref="winscw"/>
+		<groupRef ref="x86"/>
 	</group>
 
 </build>
--- a/sbsv2/raptor/lib/config/gcc_x86.xml	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/config/gcc_x86.xml	Thu Aug 26 13:41:01 2010 +0100
@@ -3,9 +3,9 @@
 	<!-- build variant for GCC x86 toolchains -->
 	<var name="gccx86_base">
 		<set name="TOOLCHAIN" value="GCC"/>
-		<set name="PLATMACROS.TOOLCHAIN" value="X86GCC"/>
+		<set name="PLATMACROS.TOOLCHAIN" value="X86GCC GCC32"/>
 		
-		<set name="TRADITIONAL_PLATFORM" value="X86GCC"/>
+		<set name="TRADITIONAL_PLATFORM" value="X86"/>
 		<set name="VARIANTPLATFORM" value="x86"/>
 
 		<!-- toolchain tools -->
@@ -39,7 +39,7 @@
 		<set name="CODE_SEGMENT_START" value="-Ttext"/>
 		<set name="COMMANDFILE_OPTION" value="@"/>
 		<set name="COMPILE_ONLY_OPTION" value="-c"/>
-		<set name="COMPILER_CIA_FLAGS" value="-fomit-frame-pointer"/>
+		<set name="COMPILER_CIA_FLAGS" value="-O1 -fomit-frame-pointer"/>
 		<set name="COMPILER_FPU_OPTION" value=""/>		
 		<set name="COMPILER_INTERWORK_DEFINES" value=""/>
 		<set name="COMPILER_SYSTEM_INCLUDE_OPTION" value="-I"/>
@@ -57,7 +57,7 @@
 		<set name="FPMODE_OPTION" value=""/>
 		<set name="HEADER_FILES_CONTROL_OPTION" value=""/>
 		<set name="INSTRUCTION_SET" value=""/>
-		<set name="KERNEL_STATIC_RUNTIME_LIB" value="ksrt3_1.lib"/>
+		<set name="KERNEL_STATIC_RUNTIME_LIB" value=""/>
 		<set name="LD_ERRORS_CONTROL_OPTION" value=""/>
 		<set name="LD_WARNINGS_CONTROL_OPTION" value=""/>
 		<set name="LIBPATH" value=""/>
--- a/sbsv2/raptor/lib/config/locations.xml	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/config/locations.xml	Thu Aug 26 13:41:01 2010 +0100
@@ -103,9 +103,9 @@
 		<set name='PERL' value='$(SBS_PERL)' type='tool'/>
 		<set name='PYTHON' value='$(SBS_PYTHON)' type='tool' versionCommand='$(PYTHON) -V' versionResult='Python 2\.[4567].*'/>
 		
-		<set name='DEFAULT_PLATFORMS' value='ARMV5 ARMV7 WINSCW'/>
-		<set name='BASE_DEFAULT_PLATFORMS' value='ARMV5 ARMV7 WINSCW ARMV5SMP'/>
-		<set name='BASE_USER_DEFAULT_PLATFORMS' value='ARMV5 ARMV7 WINSCW'/>
+		<set name='DEFAULT_PLATFORMS' value='ARMV5 ARMV7 WINSCW X86'/>
+		<set name='BASE_DEFAULT_PLATFORMS' value='ARMV5 ARMV7 WINSCW ARMV5SMP X86'/>
+		<set name='BASE_USER_DEFAULT_PLATFORMS' value='ARMV5 ARMV7 WINSCW X86'/>
 
 		<set name='BUILD_INCLUDE' value=''/>
 		<set name='CREATEVMAP' value='$(PYTHON) $(SBS_HOME)/bin/createvmap.py' type='script'/>
--- a/sbsv2/raptor/lib/config/x86.xml	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/config/x86.xml	Thu Aug 26 13:41:01 2010 +0100
@@ -37,13 +37,13 @@
 		<!-- macros -->
 		<set name="PLATMACROS.WINDOWS" value="$(PLATMACROS.TOOLCHAIN) EPOC32 $(PLATMACROS.CONFIG) $(PLATMACROS.VAR)"/>
 		<set name="PLATMACROS.LINUX" value="$(PLATMACROS.WINDOWS)"/>
-		<set name="PLATMACROS.CONFIG" value=""/>
+		<set name="PLATMACROS.CONFIG" value="X86 GENERIC_X86"/>
 		<set name="PLATMACROS.VAR" value=""/>
 		<set name="PLATMACROS.TOOLCHAIN" value=""/>
 		
 		<set name="BLDINF_OUTPUTPATH" value="$(SBS_BUILD_DIR)"/>
 		<set name="CAPABILITY" value=""/>
-		<set name="CDEFS" value="__X86__ _UNICODE __SYMBIAN32__ __EPOC32__ __PRODUCT_INCLUDE__=&quot;$(PRODUCT_INCLUDE)&quot; $(MMPDEFS)"/>
+		<set name="CDEFS" value="__X86__ _UNICODE __SYMBIAN32__ __EPOC32__ PRODUCT_INCLUDE=&quot;$(PRODUCT_INCLUDE)&quot; $(MMPDEFS)"/>
 		<set name="CODE_SEGMENT_START" value=""/>
 		<set name="COMPILER_FPU_DEFAULT" value=""/>
 		<set name="COMPILER_NO_HIDE_ALL_OPTION" value=""/>
--- a/sbsv2/raptor/lib/flm/e32abiv2.flm	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/flm/e32abiv2.flm	Thu Aug 26 13:41:01 2010 +0100
@@ -262,19 +262,25 @@
   include $(FLMHOME)/e32importlib.mk
 endif
 
-ifneq ($(IMPORTLIBRARYREQUIRED),)
-ifneq ($(or $(DEFFILE),$(EXPORTUNFROZEN)),)
-# Both ABIv2 .dso and ABIv1 .lib import library generation require a processed .def file,
-# unless EXPORTUNFROZEN is being used
-PREPPEDDEFFILE:=
-ifneq ($(DEFFILE),)
-  ifeq ($(EXPORTUNFROZEN),)
-    PREPPEDDEFFILE:=$(INTERMEDIATEPATH)/$(TARGET).prep
-    CLEANTARGETS:=$(CLEANTARGETS) $(PREPPEDDEFFILE)
-    $(eval $(importlibtarget_prepfile_$(BASE_ARCH)))
+# A processed .def file is required for:
+# 1: ABIv2 .dso and ABIv1 .lib import library generation
+# 2: linking where the build fixes exports using a .exp file
+# That is, in both cases, unless EXPORTUNFROZEN is being used
+ifneq ($(or $(IMPORTLIBRARYREQUIRED),$(FIX_EXPORTS_USING_EXP_FILE)),)
+  ifneq ($(or $(DEFFILE),$(EXPORTUNFROZEN)),)
+    PREPPEDDEFFILE:=
+    ifneq ($(DEFFILE),)
+      ifeq ($(EXPORTUNFROZEN),)
+        PREPPEDDEFFILE:=$(INTERMEDIATEPATH)/$(TARGET).prep
+        CLEANTARGETS:=$(CLEANTARGETS) $(PREPPEDDEFFILE)
+        $(eval $(importlibtarget_prepfile_$(BASE_ARCH)))
+      endif
+    endif
   endif
 endif
 
+ifneq ($(IMPORTLIBRARYREQUIRED),)
+ifneq ($(or $(DEFFILE),$(EXPORTUNFROZEN)),)
 # ABIv2 .dso
 ifneq ($(IMPORTLIBTARGET_DSO),) # check that we haven't tried to specify this target already
 
@@ -478,8 +484,6 @@
 CIA_CPPFILES:=
 ifeq ($(TRANSFORM_CIA),1)
   CIA_CPPFILES:=$(call relocatefiles,$(INTERMEDIATEPATH),$(call extractandmap,$(CIAFILEEXTENSIONS),_.cpp,$(CIAFILES)))
-else
-
 endif
 
 ## LINK ######################################################################
@@ -559,8 +563,12 @@
 # Runtime libraries which has no deps.
 
 define artarget_func
+
+# Ensure that, when generating .via files, that they do not start with a blank line - some versions of GCC's AR reject
+# any further content in the file if the first line is empty
+
 $(ARTARGET): $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT),$(LINKOBJECTS)) $(STDCPPTAGFILE)
-	$(if $(MULTIFILE_ENABLED),,@echo "$(STDCPPTAGFILE)" > $(VIAFILE);
+	$(if $(MULTIFILE_ENABLED),,@echo $(if $(STDCPPTAGFILE),"$(STDCPPTAGFILE)",-n "") > $(VIAFILE);
 	$(call groupin10,$(LINKOBJECTS)) ;)
 	$(call startrule,ar,FORCESUCCESS) \
 	$$(call dblquote,$(AR)) $(ARCHIVER_CREATE_OPTION) $$@ $(if $(MULTIFILE_ENABLED),$(MULTIFILEOBJECT),$(COMMANDFILE_OPTION)$(VIAFILE)) \
@@ -829,7 +837,7 @@
 $(if $(MULTIFILE_ENABLED),$(eval $(call e32abiv2_compile,$(MULTIFILEOBJECT),$(CPPFILES),$(CFILES),$(CPP_LANG_OPTION))),$(foreach F,$(CPPFILES),$(eval $(call e32abiv2_compile,$(call mapcpp2object,$(F)),$(F),$(CPP_LANG_OPTION)))))
 $(if $(MULTIFILE_ENABLED),,$(foreach F,$(CFILES),$(eval $(call e32abiv2_compile,$(call mapc2object,$(F)),$(F),$(C_LANG_OPTION)))))
 ifneq ($(TRANSFORM_CIA),1)
-  $(if $(MULTIFILE_ENABLED),,$(foreach F,$(CIAFILES),$(eval $(call e32abiv2_compile,$(call mapcia2object,$(F)),$(F),$(CPP_LANG_OPTION) $(COMPILER_CIA_FLAGS)))))
+  $(if $(MULTIFILE_ENABLED),,$(foreach F,$(CIAFILES),$(eval $(call e32abiv2_compile,$(call mapcia2object,$(F)),$(F),$(CPP_LANG_OPTION) $(COMPILER_CIA_FLAGS) $(call makemacrodef,-D,$(CIADEFS))))))
 endif
 
 CLEANTARGETS:=$(CLEANTARGETS) $(if $(MULTIFILE_ENABLED),$(MULTIFILE_VIAFILE) $(MULTIFILEOBJECT),$(CPPFILES_LINKOBJECTS) $(CFILES_LINKOBJECTS) $(CIAFILES_LINKOBJECTS)) $(if $(GENERATELINKERFEEDBACK),$(FEEDBACKFILE))
--- a/sbsv2/raptor/lib/flm/e32abiv2defaults.mk	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/flm/e32abiv2defaults.mk	Thu Aug 26 13:41:01 2010 +0100
@@ -38,17 +38,17 @@
 
 
 # Reset these variables as they change for every single target type
-# LINKER_ENTRYPOINT_ADORNMENT will be blank for GCCE; for RVCT it will look like "(uc_exe_.o)"
-# LINKER_ENTRYPOINT_DECORATION will be blank for RVCT; for GCCE it will look like "-u _E32Startup"
-# LINKER_SEPARATOR is a comma for GCCE as g++ is used for linking; for RVCT is should be a space, but
+# LINKER_ENTRYPOINT_ADORNMENT will be blank for GCC; for RVCT it will look like "(uc_exe_.o)"
+# LINKER_ENTRYPOINT_DECORATION will be blank for RVCT; for GCC it will look like "-u _E32Startup"
+# LINKER_SEPARATOR is a comma for GCC as g++ is used for linking; for RVCT is should be a space, but
 # as make strips trailing spaces, we use the CHAR_SPACE variable.
 
 LINKER_ENTRYPOINT_ADORNMENT:=
 LINKER_ENTRYPOINT_DECORATION:=
 LINKER_SEPARATOR:=
 
-# For GCCE
-ifeq ($(TOOLCHAIN),GCCE)
+# For GCC
+ifneq ($(findstring GCC,$(TOOLCHAIN)),)
 LINKER_ENTRYPOINT_DECORATION:=$(if $(call isoneof,$(TARGETTYPE),exexp exe),-Wl$(CHAR_COMMA)-u$(CHAR_COMMA)$(LINKER_ENTRYPOINT_PREFIX)$(ENTRYPOINT),-Wl$(CHAR_COMMA)-u$(CHAR_COMMA)$(LINKER_ENTRYPOINT_PREFIX)$(ENTRYPOINT))
 LINKER_SEPARATOR:=$(CHAR_COMMA)
 endif
@@ -96,7 +96,7 @@
 endif
 
 # "ARMFPU" overrides for 'fpu-ness' in compiler and postlinker calls in .mmp files are currently only
-# supported for RVCT-based builds, GCCE builds always make use of the interface defined defaults.
-ifeq ($(TOOLCHAIN),GCCE)
+# supported for RVCT-based builds, other builds always make use of the interface defined defaults.
+ifneq ($(TOOLCHAIN),RVCT)
   ARMFPU:=
 endif
--- a/sbsv2/raptor/lib/flm/e32abiv2exexp.flm	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/flm/e32abiv2exexp.flm	Thu Aug 26 13:41:01 2010 +0100
@@ -54,7 +54,7 @@
 ifeq ("$(TOOLCHAIN)","RVCT")
 LINKER_ENTRYPOINT_SETTING:=$(LINKER_ENTRYPOINT_PREFIX)$(ENTRYPOINT) $(call dblquote,$(STATIC_RUNTIME_DIR)/$(FIRSTLIB)($(FIRSTLIB_OBJECTFILE)))
 else
-# GCCE
+# GCC
 LINKER_ENTRYPOINT_SETTING:=$(LINKER_ENTRYPOINT_PREFIX)$(ENTRYPOINT) -Wl,-u$(LINKER_SEPARATOR)$(LINKER_ENTRYPOINT_PREFIX)$(ENTRYPOINT)$(LINKER_SEPARATOR)$(call dblquote,$(STATIC_RUNTIME_DIR)/$(FIRSTLIB))
 endif
 
--- a/sbsv2/raptor/lib/flm/e32link.mk	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/flm/e32link.mk	Thu Aug 26 13:41:01 2010 +0100
@@ -22,12 +22,12 @@
   # 'exports' generation involves taking a list of the known exports, passing them to
   # gendef.pl to create a temporary .def file, prepdef-ing this .def file and then
   # passing this along to the import library generation tool to create the .lib.exp.
-  # This is invoked for components with knowN interfaces that aren't making use of a .mmp
+  # This is invoked for components with known interfaces that aren't making use of a .mmp
   # listed .def file
   #
   # 'deffile' generation takes the .def file used in the component build, for components
   # that either require a .def file or where a .def file is used to override default behaviour.
-  # The .def file will already have been predef-ed during import library processing, so it's
+  # The .def file will already have been prepdef-ed during initial .def file processing, so it's
   # just a matter of running the import library generation tool on the temporary .def file to
   # create the .lib.exp
   #
--- a/sbsv2/raptor/lib/flm/gnumakefile.flm	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/flm/gnumakefile.flm	Thu Aug 26 13:41:01 2010 +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).
 # All rights reserved.
 # This component and the accompanying materials are made available
 # under the terms of the License "Eclipse Public License v1.0"
@@ -172,15 +172,17 @@
 endef
 
 DO_NOTHING:: $(UNIQ)_DO_NOTHING 
-$(UNIQ)_DO_NOTHING: ;
+$(UNIQ)_DO_NOTHING: 
 
 $(foreach EXTTRG,$(EXTMAKETARGETS),$(eval $(call callgnumake,$(EXTTRG))))
 
 ## Do ROMFILE target in romstuff.mke
-ifeq ($(ROMFILE_$(call sanitise,$(EXTMAKEFILENAME))),)
-ROMFILE_$(call sanitise,$(EXTMAKEFILENAME)):=1
+ROMFILEUNIQ:=$(call sanitise,$(DIRECTORY)$(EXTMAKEFILENAME)$(TO_ROOT)$(EPOCBLD)$(TO_BLDINF)$(PLATFORM))
 
-ROMDIR:=$(subst $(OLD_EPOCROOT),$(OLD_EPOCROOT)epoc32/rom/,$(TO_BLDINF))
+ifeq ($(ROMFILE_$(ROMFILEUNIQ)),)
+ROMFILE_$(ROMFILEUNIQ):=1
+TOBLDINF:=$(dir $(subst :,,$(subst $(OLD_EPOCROOT),,$(COMPONENT_META))))
+ROMDIR:=$(OLD_EPOCROOT)epoc32/rom/$(TOBLDINF)
 
 define RomfileRomstuff
 ROMFILE::
--- a/sbsv2/raptor/lib/flm/resource.mk	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/lib/flm/resource.mk	Thu Aug 26 13:41:01 2010 +0100
@@ -31,7 +31,7 @@
 
     $3: $(SOURCE)
 	$(call startrule,resourcedependencies,FORCESUCCESS) \
-	$(GNUCPP) -DLANGUAGE_$(3) -DLANGUAGE_$(subst sc,SC,$2) $(call makemacrodef,-D,$(MMPDEFS))\
+	$(GNUCPP) -DLANGUAGE_$(2) -DLANGUAGE_$(subst sc,SC,$2) $(call makemacrodef,-D,$(MMPDEFS))\
 	$(CPPOPT) $(SOURCE) -M -MG -MT"$1" | \
 	$$(DEPENDENCY_CORRECTOR) >$3 \
 	$(call endrule,resourcedependencies)
@@ -43,33 +43,15 @@
 endef # resource.deps #
 
 ###############################################################################
-# $1 is the name of the intermediate RESOURCEFILE
-# $2 is the LANGUAGE		(eg. sc or 01 or 02 ...)
-# Uses $(RESOURCEHEADER),$(SOURCE),$(HEADLANG),$(MMPDEFS) apart from some tools
-define resource.build
-    $(if $(FLMDEBUG),$$(info <debug>resource.build: $1 LANG:$2 </debug>))
 
+# Must be a separate macro since we 
+define resource.decideheader
       DOHEADER:=
       ifeq ($(HEADLANG),$2)
         ifneq ($(RESOURCEHEADER),)
           RESOURCE:: $(RESOURCEHEADER)
 
           DOHEADER:=-h$(RESOURCEHEADER)
-          # strictly speaking if $1 is made then the header file should be there too
-          # but suppose someone adds a header statement to their MMP after doing a build?
-          # so here we recreate the resource header if its missing even if the intermediate resource
-          # has actually been built.  The problem is: what if the rpp file is not there (oops)? 
-          # So this is not perfect but I think that the situation is fairly unlikely.
-          # We can afford to put in an if statement for the rsg file - it's not a race condition because
-          # $1 is done and the build engine guarantees that it's there so no resource header
-          # can be attempted while we're trying to test.
-          $(RESOURCEHEADER) : $1
-	    $(call startrule,resourcecompile.headerfill,FORCESUCCESS) \
-	    if [ ! -f "$(RESOURCEHEADER)" ]; then $(GNUCPP)  -DLANGUAGE_$2 \
-	      -DLANGUAGE_$(subst sc,SC,$(2)) $(call makemacrodef,-D,$(MMPDEFS))\
-	      $(CPPOPT) $(SOURCE) -o $1.rpp; fi && \
-	    if [ ! -f "$(RESOURCEHEADER)" ]; then $(RCOMP) -m045,046,047 -u -h$$@ -s$1.rpp; fi \
-	    $(call endrule,resourcecompile.headerfill)
 
           # we will add the resourceheader to RELEASABLES globally
         endif
@@ -79,16 +61,44 @@
         # "leader" for this resource
         $1: $(PRIMARYFILE)
       endif
+endef
+
+# $1 is the name of the intermediate RESOURCEFILE
+# $2 is the LANGUAGE		(eg. sc or 01 or 02 ...)
+# Uses $(RESOURCEHEADER),$(SOURCE),$(HEADLANG),$(MMPDEFS) apart from some tools
+define resource.build
+    $(if $(FLMDEBUG),$$(info <debug>resource.build: $1 LANG:$2 </debug>))
+
+    $(eval $(resource.decideheader))
+
+    ifneq ($(DOHEADER),)
+        # Strictly speaking if $1 is made then the header file should be there too
+        # but suppose someone adds a header statement to their MMP after doing a build?
+        # so here we recreate the resource header if its missing even if the intermediate resource
+        # has actually been built.  The problem is: what if the rpp file is not there (oops)? 
+        # So this is not perfect but I think that the situation is fairly unlikely.
+        # We can afford to put in an if statement for the rsg file - it's not a race condition because
+        # $1 is done and the build engine guarantees that it's there so no resource header
+        # can be attempted while we're trying to test.
+        $(RESOURCEHEADER) : $1
+	    $(call startrule,resourcecompile.headerfill,FORCESUCCESS) \
+	    if [ ! -f "$(RESOURCEHEADER)" ]; then $(GNUCPP)  -DLANGUAGE_$2 \
+	      -DLANGUAGE_$(subst sc,SC,$(2)) $(call makemacrodef,-D,$(MMPDEFS))\
+	      $(CPPOPT) $(SOURCE) -o $1.rpp; fi && \
+	    if [ ! -f "$(RESOURCEHEADER)" ]; then $(RCOMP) -m045,046,047 -u -h$$@ -s$1.rpp; fi \
+	    $(call endrule,resourcecompile.headerfill)
+    endif
 
 
-      RESOURCE:: $1
 
-      $1: $(SOURCE)
-	  $(call startrule,resourcecompile,FORCESUCCESS) \
-	  $(GNUCPP)  -DLANGUAGE_$2 -DLANGUAGE_$(subst sc,SC,$(2)) $(call makemacrodef,-D,$(MMPDEFS))\
-	  $(CPPOPT) $(SOURCE) -o $1.rpp && \
-	  $(RCOMP) -m045,046,047 -u $$(DOHEADER) -o$$@ -s$1.rpp \
-	  $(call endrule,resourcecompile)
+    RESOURCE:: $1
+    
+    $1: $(SOURCE)
+	$(call startrule,resourcecompile,FORCESUCCESS) \
+	$(GNUCPP)  -DLANGUAGE_$2 -DLANGUAGE_$(subst sc,SC,$(2)) $(call makemacrodef,-D,$(MMPDEFS))\
+	$(CPPOPT) $(SOURCE) -o $1.rpp && \
+	$(RCOMP) -m045,046,047 -u $(DOHEADER) -o$$@ -s$1.rpp \
+	$(call endrule,resourcecompile)
 
     SOURCETARGET_$(call sanitise,$(SOURCE)): $1
     CLEANTARGETS:=$$(CLEANTARGETS) $1 $1.rpp 
--- a/sbsv2/raptor/notes/x86_initial.txt	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/notes/x86_initial.txt	Thu Aug 26 13:41:01 2010 +0100
@@ -22,11 +22,9 @@
 sbs -c x86_urel
 sbs -c x86_udeb
 
-If a component supports a build for X86GCC or ARMV5 then it will support a
-build using Raptor's x86 support if requested i.e. if one of the above build
-configurations is used and, for example, the component's bld.inf file has an
-empty PRJ_PLATFORMS section or PRJ_PLATFORMS is populated with X86GCC, ARMV5,
-DEFAULT, BASEDEFAULT etc.
+A component supports a build using the above x86 configurations if its
+bld.inf file has an empty or missing PRJ_PLATFORMS section or PRJ_PLATFORMS is
+populated specifically with X86, DEFAULT, BASEDEFAULT or BASEUSERDEFAULT.
 
 The above x86 group and aliases check that the GCC installation is version 3.4.5
 but, other than that, it is the end user's responsibility to provide a toolchain
--- a/sbsv2/raptor/python/raptor_meta.py	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/python/raptor_meta.py	Thu Aug 26 13:41:01 2010 +0100
@@ -38,7 +38,7 @@
 import generic_path
 
 
-PiggyBackedBuildPlatforms = {'ARMV5':['GCCXML', 'X86GCC']}
+PiggyBackedBuildPlatforms = {'ARMV5':['GCCXML']}
 
 PlatformDefaultDefFileDir = {'WINSCW':'bwins',
 				  'ARMV5' :'eabi',
@@ -47,7 +47,7 @@
 				  'ARMV6':'eabi',
 				  'ARMV7' : 'eabi',
 				  'ARMV7SMP' : 'eabi',
-				  'X86GCC' : ['bx86gcc', 'eabi']}
+				  'X86' : ['bx86gcc', 'eabi']}
 
 def getVariantCfgDetail(aEPOCROOT, aVariantCfgFile):
 	"""Obtain pertinent build related detail from the Symbian variant.cfg file.
@@ -2484,12 +2484,13 @@
 			# We therefore check exisitance of the primary located file if a secondary location is available, and use the
 			# secondary location if required (recording the fact that the secondary file has been used, as this can influence
 			# downstream processing).
+			# Secondary locations are found as follows : resolvedPrimaryLocation/../secondaryLocation/resolvedDefFileName
 			if secondaryDefaultDefFileDir:
 				primaryFileCheck = raptor_utilities.resolveSymbianPath(self.__defFileRoot, resolvedDefFile, 'DEFFILE', "", str(aBuildPlatform['EPOCROOT']))
 			
 				if not os.path.exists(primaryFileCheck):
 					isSecondaryDefaultDefFile = True
-					resolvedDefFile = '../'+secondaryDefaultDefFileDir+'/'+os.path.basename(resolvedDefFile)
+					resolvedDefFile = "{0}/../{1}/{2}".format(os.path.dirname(resolvedDefFile), secondaryDefaultDefFileDir, os.path.basename(resolvedDefFile))
 
 			resolvedDefFile = raptor_utilities.resolveSymbianPath(self.__defFileRoot, resolvedDefFile, 'DEFFILE', "", str(aBuildPlatform['EPOCROOT']))
 
--- a/sbsv2/raptor/python/raptor_version.py	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/python/raptor_version.py	Thu Aug 26 13:41:01 2010 +0100
@@ -19,7 +19,7 @@
 #
 # both of these are done automatically by the installer builder.
 
-version=(2,15,0,"ISODATE","symbian build system","CHANGESET")
+version=(2,15,1,"ISODATE","symbian build system","CHANGESET")
 
 def numericversion():
 	"""Raptor version string"""
--- a/sbsv2/raptor/test/metadata/project/bld.infs/multiple_plats.inf	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/test/metadata/project/bld.infs/multiple_plats.inf	Thu Aug 26 13:41:01 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* 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"
@@ -17,5 +17,5 @@
 
 
 PRJ_PLATFORMS
-ARMV5 WINSCW TOOLS
+ARMV5 WINSCW TOOLS X86
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/resource_once.py	Thu Aug 26 13:41:01 2010 +0100
@@ -0,0 +1,48 @@
+#
+# Copyright (c) 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"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+from raptor_tests import SmokeTest
+
+def run():
+	t = SmokeTest()
+	t.name =  "resource_once"
+	t.description = "Ensure we only generate the resource header once even when there are many languages.  Make sure that the right language (96) is used for the headerfile."
+	t.command = "sbs  -b smoke_suite/test_resources/resource/group/simple.inf -c winscw_udeb -m ${SBSMAKEFILE} -f ${SBSLOGFILE}; XX=$?; cat ${SBSLOGFILE}; exit $XX" 
+	t.usebash = True
+	t.targets = [
+		"$(EPOCROOT)/epoc32/include/testresource.hrh",
+		"$(EPOCROOT)/epoc32/include/testresource_badef.rh",
+		"$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.rsc",
+		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.rsc",
+		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.rsc",
+		"$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r37",
+		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.r37",
+		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.r37",
+		"$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r94",
+		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.r94",
+		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.r94",
+		"$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r96",
+		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.r96",
+		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.r96",
+		"$(EPOCROOT)/epoc32/include/testresource.rsg",
+		"$(EPOCROOT)/epoc32/release/winscw/udeb/testresource.exe"
+		]
+	t.countmatch = [["rcomp.*-h.*rsg.*r96",1],  # must see r96 once
+	                ["rcomp.*-h.*rsg",1]]  # must not see any other language
+	t.run()
+
+	t.print_result()
+	return t
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/group/simple.inf	Thu Aug 26 13:41:01 2010 +0100
@@ -0,0 +1,25 @@
+/*
+* 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+PRJ_EXPORTS
+../inc/testresource.hrh /epoc32/include/testresource.hrh
+testresource_badef.rh /epoc32/include/testresource_badef.rh
+
+
+PRJ_MMPFILES
+simpleresource.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/group/simpleresource.mmp	Thu Aug 26 13:41:01 2010 +0100
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2009-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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+TARGET                  testresource
+TARGETTYPE              EXE
+LIBRARY                 euser.lib
+SECUREID                0x10003a5c
+SYSTEMINCLUDE   /epoc32/include
+SOURCEPATH              ../
+SOURCE                  test.cpp 
+EPOCSTACKSIZE 8192
+EPOCHEAPSIZE 0x5000 65535
+EPOCPROCESSPRIORITY low
+capability TCB ProtServ DiskAdmin AllFiles PowerMgmt CommDD
+
+UID     0x1000008d 0x10005342
+VENDORID 0x70000001
+USERINCLUDE     ../inc
+SYSTEMINCLUDE   /epoc32/include
+
+MACRO SHOULD_BE_DEFINED
+
+
+START RESOURCE          simpleresource.rss
+TARGET testresource
+// Test backslash to forward slash conversion here:
+TARGETPATH              resource\testresource
+HEADER
+LANG sc 37 94 96 
+END
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/resource/simpleresource.rss	Thu Aug 26 13:41:01 2010 +0100
@@ -0,0 +1,330 @@
+/*
+* Copyright (c) 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* LOGWRAP.RSS
+*
+*/
+
+
+#include <testresource_badef.rh>
+#include <e32capability.h>
+
+#include "../inc/testresource.rh"
+#include "../inc/testresource.hrh"
+#include "testresource.rls"
+
+
+// MACRO statements in .mmp files should be reflected in resource preprocessing
+#ifndef SHOULD_BE_DEFINED
+#error "mmp MACRO SHOULD_BE_DEFINED is not defined!"
+#endif
+
+// Initial configuration
+RESOURCE CONFIG r_log_initial_config
+	{
+	size = 1000; // Maximum number of events
+	recent = 20; // Maximum size of recent lists
+	age = 2592000; // 30 days
+	}
+
+  RESOURCE ARRAY r_log_initial_events
+   	{
+   	items = 
+   		{
+  		ETYPE { uid = KLogCallEventType; description = LOG_CALL_EVENT_TYPE; },
+  		ETYPE { uid = KLogDataEventType; description = LOG_DATA_EVENT_TYPE; },
+  		ETYPE { uid = KLogFaxEventType; description = LOG_FAX_EVENT_TYPE; },
+  		ETYPE { uid = KLogShortMessageEventType; description = LOG_SHORT_MESSAGE_EVENT_TYPE; },
+  		ETYPE { uid = KLogTaskSchedulerEventType; description = LOG_TASK_SCHEDULER_EVENT_TYPE; },
+  		ETYPE { uid = KLogPacketDataEventType; description = LOG_PACKET_DATA_EVENT_TYPE; },
+
+
+  		ETYPE { uid = KLogLbsSelfLocateEventType; description = LOG_LBS_SELF_LOCATE_EVENT_TYPE; },
+  		ETYPE { uid = KLogLbsExternalLocateEventType; description = LOG_LBS_EXTERNAL_LOCATE_EVENT_TYPE; },
+ 		ETYPE { uid = KLogLbsTransmitLocationEventType; description = LOG_LBS_TRANSMIT_LOCATION_EVENT_TYPE; },
+ 		ETYPE { uid = KLogLbsNetworkLocateEventType; description = LOG_LBS_NETWORK_LOCATE_EVENT_TYPE; },
+ 		ETYPE { uid = KLogLbsAssistanceDataEventType; description = LOG_LBS_ASSISTANCE_DATA_EVENT_TYPE; }
+
+   		};
+   	}
+
+
+
+RESOURCE ARRAY r_log_security
+//
+// [See logwrap.rh for the definitions of SECURITY and CAPABILITY.]
+//
+// This structure defines settings for platform security in the Log engine.
+// All event types defined above in 'r_log_initial_events' need to be policed.
+// The server must always determine whether a client thread has the required
+// capability to read/write a log event(s) of a built-in type.  Each operation
+// may have from one to seven capabilities defined for it.  All operations on 
+// built in types _MUST_ have an associated security policy defined here.  If no
+// security is required, then use 'cap=ECapability_None'.  The CAPABILITY values
+// defined here will provide constructor arguments for TSecurityPolicy objects.
+// The maximum number of CAPABILITY(s) for each read or write operation is 7.
+// ( a read_caps or a write_caps { contains <= 7 CAPABILITY{}   statements }  )
+// Note that SID-based security isn't supported in the Log Engine.
+//
+	{
+	items = 
+		{
+		SECURITY 
+			{ 
+			uid = KLogCallEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadUserData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteUserData; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogDataEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadUserData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteUserData; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogFaxEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadUserData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteUserData; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogShortMessageEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadUserData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteUserData; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogTaskSchedulerEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadUserData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapability_None; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogPacketDataEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadUserData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteUserData; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogLbsSelfLocateEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadDeviceData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteDeviceData; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogLbsExternalLocateEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadDeviceData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteDeviceData; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogLbsTransmitLocationEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadDeviceData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteDeviceData; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogLbsNetworkLocateEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadDeviceData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteDeviceData; }
+				};
+			},
+		SECURITY 
+			{ 
+			uid=KLogLbsAssistanceDataEventType;	
+			read_caps=
+				{
+				CAPABILITY { cap=ECapabilityReadDeviceData; }
+				};
+			write_caps=
+				{
+				CAPABILITY { cap=ECapabilityWriteDeviceData; }
+				};
+			}
+		};
+	}
+
+
+// Index entries
+RESOURCE ARRAY r_log_indexes
+	{
+	items =
+		{
+		INDEX
+			{
+			name = "Index1"; // do not translate
+			table = "Event"; // do not translate
+			keys = 
+				{
+				KEY { col = "Id"; } // do not translate
+				};
+			},
+		INDEX
+			{
+			name = "Index2"; // do not translate
+			table = "Event"; // do not translate
+			keys =
+				{
+				KEY { col = "ETime"; } // do not translate
+				};
+			},
+		INDEX
+			{
+			name = "Index3"; // do not translate
+			table = "String"; // do not translate
+			keys = 
+				{
+				KEY { col = "Id"; } // do not translate
+				};
+			}
+		};
+	}
+
+// Recent list setup
+RESOURCE ARRAY r_log_recent
+	{
+	items =
+		{
+		RECENT
+			{
+			id = KLogRecentIncomingCalls;
+			duplicate = ELogRemotePartyField|ELogContactField|ELogNumberField;
+			conditions = 
+				{
+				MATCH { field = ELogEventTypeField; value = KLogCallEventType; },
+				MATCH { field = ELogDirectionField; string = LOG_DIR_IN; },
+				MATCH { field = ELogDirectionField; string = LOG_DIR_IN_ALT; }
+				};
+			},
+		RECENT
+			{
+			id = KLogRecentOutgoingCalls;
+			duplicate = ELogRemotePartyField|ELogContactField|ELogNumberField;
+			conditions = 
+				{
+				MATCH { field = ELogEventTypeField; value = KLogCallEventType; },
+				MATCH { field = ELogDirectionField; string = LOG_DIR_OUT; },
+				MATCH { field = ELogDirectionField; string = LOG_DIR_OUT_ALT; }
+				};
+			},
+		RECENT
+			{
+			id = KLogRecentMissedCalls;
+			duplicate = ELogRemotePartyField|ELogContactField|ELogNumberField;
+			conditions = 
+				{
+				MATCH { field = ELogEventTypeField; value = KLogCallEventType; },
+				MATCH { field = ELogDirectionField; string = LOG_DIR_MISSED; },
+				MATCH { field = ELogDirectionField; string = LOG_DIR_MISSED_ALT; }
+				};
+			}
+		};
+	}
+
+
+// Direction
+RESOURCE LBUF r_log_dir_in { txt = LOG_DIR_IN; }
+RESOURCE LBUF r_log_dir_out { txt = LOG_DIR_OUT; }
+RESOURCE LBUF r_log_dir_in_alt { txt = LOG_DIR_IN_ALT; }
+RESOURCE LBUF r_log_dir_out_alt { txt = LOG_DIR_OUT_ALT; }
+RESOURCE LBUF r_log_dir_fetched { txt = LOG_DIR_FETCHED; }
+RESOURCE LBUF r_log_dir_missed { txt = LOG_DIR_MISSED; }
+RESOURCE LBUF r_log_dir_missed_alt { txt = LOG_DIR_MISSED_ALT; }
+
+
+// Delivery
+RESOURCE LBUF r_log_del_pending { txt = LOG_DEL_PENDING; }
+RESOURCE LBUF r_log_del_sent { txt = LOG_DEL_SENT; }
+RESOURCE LBUF r_log_del_failed { txt = LOG_DEL_FAILED; }
+RESOURCE LBUF r_log_del_none { txt = LOG_DEL_NONE; }
+RESOURCE LBUF r_log_del_done { txt = LOG_DEL_DONE; }
+RESOURCE LBUF r_log_del_not_sent { txt = LOG_DEL_NOT_SENT; }
+RESOURCE LBUF r_log_del_scheduled { txt = LOG_DEL_SCHEDULED; }
+
+// Other
+RESOURCE LBUF r_log_remote_unknown { txt = LOG_REMOTE_UNKNOWN; }
+RESOURCE LBUF r_log_remote_multiple { txt = LOG_REMOTE_MULTIPLE; }
+RESOURCE LBUF r_log_subject_none { txt = LOG_SUBJECT_NONE; }
+RESOURCE LBUF r_log_subject_data_message { txt = LOG_SUBJECT_DATA_MESSAGE; }
+
+// Connection
+RESOURCE LBUF r_log_con_connected { txt = LOG_CON_CONNECTED; }
+RESOURCE LBUF r_log_con_connecting { txt = LOG_CON_CONNECTING; }
+RESOURCE LBUF r_log_con_disconnecting { txt = LOG_CON_DISCONNECTING; }
+RESOURCE LBUF r_log_con_disconnected{ txt = LOG_CON_DISCONNECTED; }
+RESOURCE LBUF r_log_con_suspended{ txt = LOG_CON_SUSPENDED; }
+
+// Delivery
+RESOURCE LBUF r_log_del_notified { txt = LOG_DEL_NOTIFIED; } 
+RESOURCE LBUF r_log_del_expired { txt = LOG_DEL_EXPIRED; }  
--- a/sbsv2/raptor/test/smoke_suite/test_resources/simple/bld.inf	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple/bld.inf	Thu Aug 26 13:41:01 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-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,7 +16,7 @@
 */
 
 PRJ_PLATFORMS
-ARMV5 ARMV7 WINSCW ARMV5SMP
+ARMV5 ARMV7 WINSCW ARMV5SMP X86
 
 PRJ_MMPFILES
 simple.mmp
--- a/sbsv2/raptor/test/smoke_suite/test_resources/simple_dll/bld.inf	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_dll/bld.inf	Thu Aug 26 13:41:01 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2000-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"
@@ -18,7 +18,7 @@
 
 
 PRJ_PLATFORMS
-ARMV5 ARMV6 ARMV7 WINSCW ARMV5SMP
+ARMV5 ARMV6 ARMV7 WINSCW ARMV5SMP X86
 
 PRJ_MMPFILES
 
--- a/sbsv2/raptor/test/smoke_suite/test_resources/simple_implib/bld.inf	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_implib/bld.inf	Thu Aug 26 13:41:01 2010 +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"
@@ -17,7 +17,7 @@
 
 
 PRJ_PLATFORMS
-WINSCW ARMV5 ARMV5SMP
+WINSCW ARMV5 ARMV5SMP X86
 
 PRJ_MMPFILES
 simple_implib.mmp
--- a/sbsv2/raptor/test/smoke_suite/test_resources/simple_lib/bld.inf	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/simple_lib/bld.inf	Thu Aug 26 13:41:01 2010 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-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,7 +16,7 @@
 */
 
 PRJ_PLATFORMS
-ARMV5 ARMV7 WINSCW
+ARMV5 ARMV7 WINSCW X86
 
 PRJ_MMPFILES
 simple.mmp
--- a/sbsv2/raptor/test/unit_suite/raptor_meta_unit.py	Wed Aug 18 17:23:33 2010 +0300
+++ b/sbsv2/raptor/test/unit_suite/raptor_meta_unit.py	Thu Aug 26 13:41:01 2010 +0100
@@ -138,7 +138,7 @@
 								 'METADEPS' : [] 
 							   }
 
-		self.X86GCC          = { 'PLATFORM': 'X86GCC',
+		self.X86GCC          = { 'PLATFORM': 'X86',
 							     'EPOCROOT': self.__epocroot,
 							     'VARIANT_HRH': self.variant_hrh,
 							     'SYSTEMINCLUDE' : '',
@@ -221,9 +221,9 @@
 		self.assertEquals(bp, aExpectedBldInfPlatforms)
 
 		buildableBldInfBuildPlatforms = raptor_meta.getBuildableBldInfBuildPlatforms(bp,
-				'ARMV5 ARMV7 WINSCW',
-				'ARMV5 ARMV5SMP ARMV7 WINSCW',
-				'ARMV5 ARMV7 WINSCW')
+				'ARMV5 ARMV7 WINSCW X86',
+				'ARMV5 ARMV5SMP ARMV7 WINSCW X86',
+				'ARMV5 ARMV7 WINSCW X86')
 		
 		for expectedBuildablePlatform in aExpectedBuildablePlatforms:
 			self.assertTrue(expectedBuildablePlatform in buildableBldInfBuildPlatforms)
@@ -236,17 +236,17 @@
 		bldInfTestRoot = self.__testRoot.Append('metadata/project/bld.infs')
 				
 		self.__testBuildPlatforms(bldInfTestRoot, 'no_prj_platforms.inf', 
-								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86GCC'])
+								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'no_plats.inf', 
-								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86GCC'])
+								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'default_plats.inf', 
-								  ['DEFAULT'], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86GCC'])
+								  ['DEFAULT'], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'default_plats_minus_plat.inf', 
-								  ['DEFAULT', '-WINSCW'], ['ARMV7', 'ARMV5', 'GCCXML', 'X86GCC'])
+								  ['DEFAULT', '-WINSCW'], ['ARMV7', 'ARMV5', 'GCCXML', 'X86'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'single_plat.inf', 
-								  ['ARMV5'], ['ARMV5', 'GCCXML', 'X86GCC'])
+								  ['ARMV5'], ['ARMV5', 'GCCXML'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'multiple_plats.inf', 
-								  ['ARMV5', 'WINSCW', 'TOOLS'], ['ARMV5', 'WINSCW', 'TOOLS', 'GCCXML', 'X86GCC'])
+								  ['ARMV5', 'WINSCW', 'TOOLS', 'X86'], ['ARMV5', 'WINSCW', 'TOOLS', 'GCCXML', 'X86'])
 		return
 	
 	def __testBldInfTestCode(self, aTestRoot, aBldInf, aActual, aExpected):
@@ -730,17 +730,17 @@
 			# Some configurations support both a primary location and a secondary location for .def files
 			# In these cases, if the primary location .def file doesn't exist the secondary is used.
 			primaryDefFileDir = "eabi"
-			secondaryDefFileLoc = ""
+			secondaryDefFileDir = ""
 			if testPlat['PLATFORM'] == "WINSCW":
 				primaryDefFileDir = "bwins"
-			elif testPlat['PLATFORM'] == "X86GCC":
+			elif testPlat['PLATFORM'] == "X86":
 				primaryDefFileDir = "bx86gcc"
-				secondaryDefFileLoc = self.__OSRoot+'/test/eabi'
+				secondaryDefFileDir = "eabi"
 											
 			defFileTests.extend([
 				DefFileTest(
 					self.__OSRoot+'/test/'+primaryDefFileDir+'/targetu.def',
-					secondaryDefFileLoc+'/targetu.def',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/targetu.def',
 					'/test/component/mmpfile.mmp',
 					'',
 					'target.exe',
@@ -748,7 +748,7 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/test/'+primaryDefFileDir+'/target.def',
-					secondaryDefFileLoc+'/target.def',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/target.def',
 					'/test/component/mmpfile.mmp',
 					'',
 					'target.exe',
@@ -756,7 +756,7 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/test/'+primaryDefFileDir+'/targetu.DEF',
-					secondaryDefFileLoc+'/targetu.DEF',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/targetu.DEF',
 					'/test/component/mmpfile.mmp',
 					'target.DEF',
 					'target.exe',
@@ -764,7 +764,7 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/test/'+primaryDefFileDir+'/target2.DEF',
-					secondaryDefFileLoc+'/target2.DEF',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/target2.DEF',
 					'/test/component/mmpfile.mmp',
 					'target2.DEF',
 					'target.exe',
@@ -772,7 +772,7 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/test/component/target2u.DEF',
-					secondaryDefFileLoc+'/target2u.DEF',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/target2u.DEF',
 					'/test/component/mmpfile.mmp',
 					'./target2.DEF',
 					'target.exe',
@@ -780,7 +780,7 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/test/component/target2.DEF',
-					secondaryDefFileLoc+'/target2.DEF',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/target2.DEF',
 					'/test/component/mmpfile.mmp',
 					'./target2.DEF',
 					'target.exe',
@@ -788,7 +788,7 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/test/component/'+primaryDefFileDir+'/target3u.DEF',
-					secondaryDefFileLoc+'/target3u.DEF',
+					self.__OSRoot+'/test/component/'+secondaryDefFileDir+'/target3u.DEF',
 					'/test/component/mmpfile.mmp',
 					'./~/target3.DEF',
 					'target.exe',
@@ -796,7 +796,7 @@
 					testPlat),
 				DefFileTest(
 					epocroot+'/epoc32/include/def/'+primaryDefFileDir+'/targetu.def',
-					secondaryDefFileLoc+'/targetu.def',
+					epocroot+'/epoc32/include/def/'+secondaryDefFileDir+'/targetu.def',
 					'/test/component/mmpfile.mmp',
 					'/epoc32/include/def/~/target.def',
 					'target.exe',
@@ -804,7 +804,7 @@
 					testPlat),
 				DefFileTest(
 					epocroot+'/epoc32/release/'+releaseDir+'/target.def',
-					secondaryDefFileLoc+'/target.def',
+					epocroot+'/epoc32/release/'+secondaryDefFileDir+'/target.def',
 					'/test/component/mmpfile.mmp',
 					'/epoc32/release/'+releaseDir+'/target.def',
 					'target.exe',
@@ -812,7 +812,7 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/deffiles/targetu.def',
-					secondaryDefFileLoc+'/targetu.def',
+					self.__OSRoot+'/'+secondaryDefFileDir+'/targetu.def',
 					'/test/component/mmpfile.mmp',
 					'/deffiles/target.def',
 					'target.exe',