catch up to default wip
authorRichard Taylor <richard.i.taylor@nokia.com>
Wed, 17 Feb 2010 17:03:27 +0000
branchwip
changeset 330 f3b3d9f9a008
parent 329 b2c00b774e4f (diff)
parent 231 0f26bc078e36 (current diff)
child 331 638166b27f05
child 335 e69156db0290
catch up to default
sbsv2/raptor/RELEASE-NOTES.txt
sbsv2/raptor/lib/flm/e32abiv2.flm
--- a/sbsv2/raptor/RELEASE-NOTES.txt	Wed Feb 17 16:37:10 2010 +0000
+++ b/sbsv2/raptor/RELEASE-NOTES.txt	Wed Feb 17 17:03:27 2010 +0000
@@ -1,806 +1,818 @@
-Release Notes for Symbian Build System v2
-
-version 2.12.2
-
-Defect Fixes:
-- SF Bug 1569 - excessive recompilation in incremental tracecompiler builds
-- Better error messages for make-engine selection.
-  e.g. "sbs -e arm" will now produce a useful error message rather than 
-  a traceback. "arm" is a real variant but it's not a make engine.  In
-  the past sbs would have tried to use it and would have failed with a
-  complicated traceback. Also doesn't traceback for non-existent make engines.
-- sbs_filter chose wrong embedded default python version. Set to 2.6.4 now.
-- FilterCheck did not check files when run from sbs_filter
-- Remove old references to python 2.5.2
-- Escape filenames with special XML characters inside <member> tags
-
-
-version 2.12.1
-
-Defect Fixes:
-- SF Bug 1494 - sbs --what does not report Trace Compiler output
-- sbs -c winscw.tracecompiler uses wrong UID and doesn't generate traces
-- SF Bug 1519 - Raptor output files may contain unescaped left angle brackets as XML character data
-
-
-version 2.12.0
-
-New Features:
-- New 'Patchable Constants' target type: TARGETTYPE pdll
-- Combine Linking and Postlinking into a single step - performance improvement.
-- Support exit codes from next version of the trace compiler which will issue them
-- New sbs_filter script and batchfile to ease the use of sbs_filter.py.  
-  Allows filters to be executed over a log after a build has been done.
-    e.g.
-
-  	sbs_filter --filters=FilterWhat < logfile.log 
-
-    (This runs a "--what" without regenerating any makefiles or reparsing
-    the matadata.)
-- New (beta) FilterWhatComp filter.  Simulates abld log output for
-  use with parse_what.pl for packing up zips by component.  Whatcomp output
-  uses the incoming epocroot value.  i.e. if epocroot is relative then so is
-  the what output.  e.g. if EPOCROOT=\ then the output will be of the form:
-
-	"\epoc32\release\armv5\...."  
-
-  If it's "..\myepocroot" then the output will be:
-
-	"..\myepocroot\epoc32\release\armv5".  
-
-  If it's absolute then the what output will also be absolute.
-- New FilterCheck filter.  This can be used with sbs_filter to perform the 
-  equivalent of --check using the log output from a build.  It is more
-  efficient than --check because the metadata is not parsed and no makefiles
-  are generated. e.g.
-
-	sbs_filter --filters=FilterCheck < logfile.log 
-
-- New (beta) graphical build visualisation tool (bin/timelines.py). 
-  Requires pygame and PyOpenGL. e.g.
-
-	python timelines.py < filename.log
-
-- New (beta) log analyser (recipestats.py) for recording the total time spent 
-  in each type of recipe in the build. e.g.
-
-	python recipestats.py < filename.log > stats.csv
-
-  The output is in CSV format.  
-
-Defect Fixes:
-- fix for ARM9E + ARMV5 pre-processing confusion
-- SF bug 1606: template_ext.flm wrongly creates dependencies to OTHER_CFG targets
-- SF bug 1570: Adding then removing a capability can produce incorrect 
-  result: e.g. ALL TCB -TCB becomes ALL -TCB but it should be just ALL
-
-Other Changes:
-- Default to using Python 2.6.4 on windows (no change in compatibility with 
-  older versions of Python).
-
-
-version 2.11.3
-
-Defect Fixes:
-DPDEF142616 Raptor: Variables can be set unnecessarily prior to TEM execution
-Fix for: filter terminal flags up when recipe truncated
-SF bug 170: invalid XML output when a zip file is missing
-SF bug 518: unpaged keyword in mmp files is not parsed properly
-
-
-version 2.11.2
-
-Defect Fixes:
-DPDEF143176 raptor does not respect STDCPP mmp file keyword
-
-
-version 2.11.1
-
-Other Changes:
-GCCE 4.4.1 variant added
-Restored python 2.4 compatibility
-Minor TOOLS2 --what corrections
-Retain Linux execute permissions on unpacked :zip archives
-Prototype of extended timing API added
-Option --noexport added for parallel parsing
-Made --noexport and --export-only mutually exclusive
-SBS_PYTHONPATH insulates sbs from the global PYTHONPATH
-Removed spurious bracket in e32abiv2textnotifier2
-More robust to multiple import library definitions
-
-
-version 2.11.0
-
-New Features:
-Parallel parsing of meta-data
-New keyword APPLY for MMP files
-SAX filter plugin base-class
-
-Defect Fixes:
-DPDEF142895 Raptor does the wrong thing with the ARMFPU keyword
-DPDEF143020 The savespace variant overrides elf2e32's return code
-DPDEF143046 BYTEPAIRCOMPRESSTARGET and INFLATECOMPRESSTARGET not in FLM interface
-Improved error reporting for --check and --what
-
-
-version 2.10.2
-
-Defect Fixes:
-DPDEF142958 regression - ARMV6 and __ARMV6__ are not defined for armv6_urel builds
-DPDEF142730 Raptor crashes with improper VERSION syntax
-DPDEF142928 RVCT 4.0: Linker error when the MMP files modifies the --cpu option
-
-
-version 2.10.1
-
-Defect Fixes:
-DPDEF142666 Cannot remove frozen exports from EABI DEF file in SBSv2
-DPDEF142745 OPTION_REPLACE problems with RVCT 4.0
-DPDEF140622 feature variant configuration file with non exist file set to 'FEATURELISTFILES'
-DPDEF141195 Raptor doesn't handle spaces in tool paths
-DPDEF142616 Raptor: Variables can be set unnecessarily prior to TEM execution
-DPDEF142455 Disable warning L6780W for certain components
-DPDEF142447 GCC-E: Raptor compiles CIA files as Thumb
-DPDEF142448 GCC-E: Raptor tries to build ABIV1 import libraries
-DPDEF142451 GCC-E: Raptor treats C files as C++ files.
-
-
-version 2.10.0
-
-New Features:
-Support for GCCE compiler
-More efficient Feature Variation support
-
-
-version 2.9.3
-
-Defect Fixes:
-DPDEF142166 Raptor sometimes invokes checklib.exe with incorrect parameters
-DPDEF141354 EXPORTUNFROZEN fails in target builds if .savespace is applied
-DPDEF141533 Inconsistent log output
-DPDEF141604 file winscw.auto.bat is released two times
-DPDEF141787 Raptor treats EFREEZE info message as warnings
-	
-Other Changes:
-talon can read commands from a temporary file as well as with -c
-
-
-version 2.9.2
-
-Defect Fixes:
-DPDEF141531 Incorrect RVCT variables passed to TEM
-DPDEF141837 Some problems with dependency (.d) files
-DEF140258 Aborting SBSv2 mid-build often leads to corrupt .d files which prevent rebuilds
-DPDEF142049 Garbage in the Raptor log file
-DPDEF141954 Raptor: "tools" config static libraries can have incorrect compilation macros
-DPDEF141974 Raptor: "tools" builds can fail when done in combination with "tools2" builds
-
-Other Changes:
-Static libraries cannot be feature variant
-Option --no-depend-include for very big builds
-
-
-version 2.9.1
-
-Defect Fixes:
-DPDEF141503 RMTPClient::StartTransport Panic when using emulated test tranport plugin
-DPDEF141688 ARMV6 builds with SBSv2 have problems with missing DEF files
-	
-
-version 2.9.0
-
-New Features:
-Talon shell to reduce memory usage and improve stability.
-Support for RVCT 4.0 advanced features.
-Optionally use SBS_CYGWIN, SBS_MINGW and SBS_PYTHON to locate tools.
-Makefile to build host tools on Linux.
-Single-file compilation for IDE integration.
-Splitlog and CheckSource filters.
-
-Defect Fixes:
-DPDEF141523 Raptor links kernel-side components to scppnwdl.dso
-DPDEF141418 Raptor turns echo on
-DPDEF141495 Raptor doesn't deal correctly with SOURECEPATH beginning with '/'
-DPDEF141388 raptor inserts epoc32\include at start of systeminclude path	
-
-
-version 2.8.6
-
-DPDEF135505 Some TEMs have race conditions for simultaneous urel and udeb. cp fails.
-DPDEF141498 If make crashes, Raptor exits with 0 errors
-DPDEF141071 Raptor: GCCXML build does not support the VAR2 TARGETTYPE
-DPDEF140816 STDCPP keyword in mmp file not interpreted by gccxml tool chain
-DPDEF137727 [Raptor Rollout] Raptor fails to build certain .mbg and .rsg files
-DPDEF137494 SBSv2: preprocessor warnings and errors might cause invalid XML in log
-DPDEF140731 Missing dependency files when building from clean
-DPDEF140540 [System Build]: Changes of Raptor cause 94_331 build failed
-DPDEF141129 raptor generates unknown origin file
-
-Other Changes:
-Fix to support trace compiler switch
-Better message for duplicate objects, states which file overrides which.
-Refactor to avoid "defects" of missing OS variants.
-
-
-version 2.8.5
-
-Defect Fixes:
-DPDEF141102 SBS doesn't set the paging attribute of excutables correctly
-DPDEF140731 Missing dependency files when building from clean
-DPDEF135620 Workaround for broken static libraries
-
-
-version 2.8.4
-
-Defect Fixes:
-DPDEF140839 RComp crashes if it's built with sbs
-DPDEF140929 OPTION GCCE in MMP files generates a build warning
-DPDEF135436 SBSv2 - Python traceback when illegal characters appear on command line
-
-
-version 2.8.3
-
-Defect Fixes:
-DPDEF139904 Raptor: .def file FREEZE attempted for ARMV5 when it shouldn't be
-DPDEF140589 Raptor: .def file FREEZE attempted for WINSCW when it shouldn't be
-DPDEF140456 Raptor build error with -c tools_rel
-DPDEF139759 Raptor warning regarding EXPORTSUNFROZEN is ambiguous
-DPDEF135436 SBSv2 - Python traceback when illegal characters appear on command line
-INC140156 SBSv2 crashes when build QtWebkit for ARMV5
-
-Other Changes:
-Add <info> to show which variant.hrh file is used.
-Replaced the corrupted awk.exe in cygwin distro.
-Fix previous trace compiler auto run mechanism.
-ROMFILE improvements.
-
-
-version 2.8.2
-
-Defect Fixes:
-DPDEF140540 [System Build]: Changes of Raptor cause 94_331 build failed
-
-Other Changes:
-Tolerate XML schema 1_0 files where possible.
-Treat system definition schema 1.[3-9] files the same as schema 1.4 files.
-Remove checksource and its python site-packages.
-
-
-version 2.8.1
-
-Defect Fixes:
-DPDEF140165 SBS error when creating info.xml on component base_omaph2
-DPDEF132996 Location of generated auto.bat files is inconsistent
-
-Other Changes:
-Feature variant "ln -f" fails intermittently in parallel builds.
-Traceback when "group" elements are redefined in XML.
-Trace compiler should run automatically if a trace path exists.
-Need a workaround for Carbide Missing SDK problem.
-
-
-version 2.8.0
-
-New Features:
-XML schema 2.0 with new alias and group elements.
-
-Removed:
-XML config element (use var instead).
-XML .first and .last mechanism (use alias or group instead).
-
-Defect Fixes:
-DPDEF140082 SBS cause env to dirty state
-DPDEF138565 SBSV2 doesn't define the correct macros for ARMV6
-DPDEF139950 SBSv2 Filter Handling not Robust enough - bad filters stop build.
-DEF139686 [TCL Build] coredumpserver compile warnings in DP00458
-
-
-version 2.7.2
-
-Defect Fixes:
-DPDEF139420 Raptor config does not correctly handle mifconv causing resource build errors
-DPDEF138679 Raptor does not create a DEFFILE when building for winscw_urel
-DPDEF139692 SBSV2: 'virtual memory exhausted' when building multiple variants
-DPDEF136321 SBSv2: Zip exports not cleaned
-INC139622 OPTION_REPLACE does not work properly in SBSv2
-
-Other Changes:
-Added utility.prebuilt FLM.
-
-
-version 2.7.1
-
-Defect Fixes:
-DPDEF138366 [T15379] Raptor raise some warnings when build Coredumpserver
-DPDEF139405 SBSV2: Trace compilation fails with large numbers of files.
-DPDEF139572 SBSV2: Changes to '--cpu' option syntax breaks existing MMP files.
-DPDEF139456 Toolcheck file is not created if EPOCROOT is \
-DPDEF133766 Poor SBSv2 reallyclean performance
-DPDEF135780 SBSV2: REALLYCLEAN is not cleaning all files
-
-
-version 2.7.0
-
-New Features:
-DS.1744 Recognize LINKEROPTION in MMP file
-DS.1744 Compiled objects on local filesystem (SBS_BUILD_DIR)
-
-Partial Deliveries:
-DS.1744 CheckSource in Raptor
-
-Defect Fixes:
-DPDEF138293 Carbide: Raptor doesn't resolve variant.cfg entries starting with "\" correctly
-
-
-version 2.6.5
-
-Defect Fixes:
-DPDEF138930 Raptor needs to change to match new trace compiler interface
-
-
-version 2.6.4
-
-Defect Fixes:
-DPDEF138527 [TCL Build] Miss tracecompiler.mk and exclude group for Raptor export
-DPDEF138484 Raptor uses wrong guard causing trace compiler ignores some projects.
-DPDEF138720 BV product folders have missing map files
-DPDEF138721 Raptor uses wrong lib when mmp keyword FIRSTLIB presents.
-DPDEF138053 SBSv2: tools platform: tools not installed by the time they need to be used.
-DPDEF138164 Carbide: Raptor crashes on unrecognised buildinfo.txt content
-DPDEF138296 SBSV2 disables all TOOLS2 compiler warnings
-DPDEF138329 Raptor generates marker file for trace compiler when it's not done
-DPDEF138352 SBSv2: rollout - unsplit EC makefiles not generating correct deps 4 missing .mbg
-DPDEF138480 SBSv2: rollout. Created files sometimes have insufficient permissions on Windows
-DPDEF137511 SBSv2 doesn't behave correctly with the default paging policy
-
-
-version 2.6.3
-
-Defect Fixes:
-DPDEF133508 Number of errors is counted wrong
-DPDEF138098 UID issue in Trace Compiler for Raptor 
-DPDEF138296 SBSV2 disables all TOOLS2 compiler warnings
-
-
-version 2.6.2
-
-Defect Fixes:
-DPDEF135330 Raptor Rollout: bangalore messaging winscw udeb test code
-DPDEF137726 Missing mscvr_readme.txt from the SBSv2 drop
-DPDEF137739 SBSv2: rollout - .cia object files can conflict with .cpp object files 
-
-
-version 2.6.1
-
-Defect Fixes:
-DPDEF137239 raptor does not include the msvcr71 runtime library
-DPDEF137489 BV builds try and write generated .s files in the wrong directory
-
-
-version 2.6.0
-
-New Features:
-DS.1542 SBSv2 generates Open System Trace dictionaries
-DS.1629 Resource autodependencies
-
-
-version 2.5.5
-
-Defect Fixes:
-DPINC137379 Emulator: Cursor is missing on emulator buttons
-DPDEF133640 SBSv2 usrt3_1.lib is missing from epocroot/epoc32/release/armv5/
-
-
-version 2.5.4
-
-Defect Fixes:
-DPDEF136719 Raptor: sbsv2cache.py cache file generation fails with very large log files
-DPDEF136715 On Linux the shipped python 2.5.2 is not found
-DPDEF132996 SBSv2 doesn't generate AUTO.BAT file
-DPDEF136382 SBSv2: explicit dll versioning not supported on arm platforms 	
-DPDEF135843 [Raptor Rollout] Raptor does not support OPTION_REPLACE ARMASM/OPTION ARMASM
-DPDEF136693 makesis fails when multiple instances are run concurrently with the same target
-
-
-version 2.5.3
-
-Defect Fixes:
-DPDEF136162 Raptor: resource dependencies require metadata workarounds
-DPDEF128288 SBSv2 does not fully support build target customization.
-DPDEF132880 BV builds cannot find system static libraries
-DPDEF133835 SBSv2 cannot build for ARMV6 or ARM9E
-
-
-version 2.5.2
-
-Defect Fixes:
-DPDEF135983 cpp-raptor crashes if source code contains builtin macro __FILE__
-DPDEF133808 Raptor does not support OPTION --no_rtti with mixed assembly/C++ projects
-DPDEF135577 SBSv2: rollout - TOOLS/TOOLS2 exes sometimes not executable or writable.
-
-
-version 2.5.1
-
-Defect Fixes:
-DPDEF135258 createvmap.py script can hang in BV builds
-DPDEF135385 warnings in RunModeDebugger in M04816vFuture with ARMV7
-
-
-version 2.5.0
-
-New Features:
-DS.1568 User defined configuration file location(s)
-
-
-version 2.4.3
-
-Defect Fixes:
-DPDEF134322 SBSV2 uses the wrong library when building STDCPP targets 	
-DPDEF132923 SBSv2 freeze don't add Vtable and RTTI information into def file for arm dll
-DPDEF133775 SBSv2: ARMFPU is not passed to compiler
-DPDEF134023 case inconsistency with libOpenVG.lib
-
-Other Changes:
-MINOR_CHANGE updated all copyright notices for SF delivery
-MINOR_CHANGE added vtb91sf variant for SF Timebox 9:1 builds
-MINOR_CHANGE added vtb92sf variant for SF Timebox 9:2 builds
-
-
-version 2.4.2
-
-Defect Fixes:
-DPDEF133820 Raptor Rollout: EXPORTUNFROZEN processing incorrect in ARMV5 builds
-DPDEF132033 Raptor picks up the wrong bld.inf macros when building for RVCT 3.1
-DPDEF133772 SBSv2: console log includes some winscw warnings that should be suppressed
-
-
-version 2.4.1
-
-Defect Fixes:
-DPDEF133639 Raptor Rollout:TEF test server doesn't start under SBSv2 - OK with abld
-DEF133255 [System Build]: Error in compiling NaviEngine Unistore on ARMV7 M04816 vFuture
-DPDEF127973 Freeze fails with SBSv2 under some environments
-
-
-version 2.4.0
-
-New Features:
-DS.1475 Pluggable Log Summariser
-DS.1476 Use FLMs from the source tree  
-
-Defect Fixes:
-DPDEF133417 SBSv2: tmp mounting errors on startup
-
-
-version 2.3.3
-
-Defect Fixes:
-DPDEF130261 sbs does not support explicit option to version keyword
-DPDEF130598 sbs does not provide debug and nodebug variants
-DPDEF131630 Raptor smoke tests break when EPOCROOT=\ on Windows
-DPDEF132898 no TEM nbl2.lib dependencies for armv7
-DPDEF133035 SBSv2 - Tools2 build does not include -m32 option.  Stlport flm also doesn't.
-DPDEF133176 SBSv2 ignores compillation error for "unidentified identifier" for winscw build
-
-
-version 2.3.2
-
-Other Changes:
-MINOR_CHANGE added vtb92 variant for Timebox 9:2 builds
-
-
-version 2.3.1
-
-Defect Fixes:
-DPDEF132374 SBSv2: Directory creation can fail leading to build errors
-DPDEF132070 SBSv2: stlport 5.2 build fails - library generated to wrong directory
-DPDEF128378 SBSv2 help for global targets only shown when a target is given
-DPDEF129634 ALWAYS_BUILD_AS_ARM does not suppress __MARM_THUMB__ with SBSv2
-
-
-version 2.3.0
-
-New Features:
-DS.1424 Support for ARMV5SMP platform  
-
-Defect Fixes:
-DPDEF129804 SBSv2 crashes when there are double \\ in prj_mmpfiles in bld.inf
-DPDEF130892 SBSv2: Reallyclean fails on TEM files
-DPDEF131619 SBSv2: ABIv1 .lib files aren't generated for -c armv5 -c armv5.smp
-DPDEF131637 SBSv2: stlport can fail to build under Cygwin - "/tmp no such directory"
-DPDEF131891 [System Build]: Errors in GT stage in Build M04774 vfuture
-
-
-version 2.2.9
-
-Defect Fixes:
-DPDEF129804 SBSv2 crashes when there are double \\ in prj_mmpfiles in bld.inf
-DPDEF131637 SBSv2: stlport can fail to build under Cygwin - "/tmp no such directory"
-DPDEF130892 SBSv2: Reallyclean fails on TEM files
-
-
-version 2.2.8
-
-Defect Fixes:
-DPDEF130569 .lib files for SSM targets build with different name compared to abld
-DPDEF130571 libxml2 component contains GCCXML build errors
-DPDEF131312 SBSv2 - DEBUGGABLE_UDEBONLY not supported by SBSv2 (Raptor)
-
-
-version 2.2.7
-
-Defect Fixes:
-DPDEF130533 SBSv2 fails to run when installed from SITK
-DPDEF130452 Some rcomp warnings need to be disabled
-DPDEF130286 SBSv2: sbs freezes during CLEAN and REALLYCLEAN operations.
-DPDEF127973 Freeze fails with SBSv2 under some environments
-DPDEF128455 Error during freeze with SBSv2
-DPDEF127149 SBSv2 TEM/extension makefile build doesn't support the .savespace variant
-
-
-version 2.2.6
-
-Defect Fixes:
-DPDEF130008 SBSv2 should recognize these new keywords: SMPSAFE, PAGEDCODE, PAGEDDATA, UN...
-DPDEF127887 Current directory wrong when executing extension makefiles in SBSv2
-DPDEF128915 CCheckEnv ERROR: CBRPatch: Absent file
-DPDEF127675 Raptor does not process stringtables correctly when HEADERONLY is on
-DPDEF127878 give wrong mmp filename for -p option should cause error in SBSv2
-
-Other Changes:
-Uses cygwin instead of msys for improved stability.
-Includes python 2.5.2 instead of using py2exe.
-
-
-version 2.2.5
-
-Defect Fixes:
-DEF127329 OMAP H4 Unistore2 Failure in Raptor 9.5 GT build
-DPDEF128632 SBSv2 : bld.inf ':zip' exports don't maintain timestamps, with an e32 impact
-DPDEF127399 SBSv2 -p <filename>.mmp options also builds .mk files
-
-
-version 2.2.4
-
-Defect Fixes:
-DPDEF129187 SBSv2: ABIv1 .lib files are required (again)
-
-
-version 2.2.3
-
-Defect Fixes:
-DPDEF128916 C Standard Library failed on cia2cpp2o armv5 with 1
-DPDEF128503 sbs 2.2.0 produce malformed xml log on Linux with pvmgmake
-DPDEF127604 SIS registry panics at startup on emulator if SWI is built with SBS
-DPDEF128690 SBSv2 generates error when using emake on REALLYCLEAN target
-
-Other Changes:
-MINOR_CHANGE log summariser updated to deal with errors starting "make.exe: ***"
-
-
-version 2.2.2
-
-Defect Fixes:
-DPDEF127497 SBSv2 does not clean when -k or other switch is used with abld wrapper
-DPDEF127829 'cannot open Meta file' warning with SBSv2
-DPDEF127371 abld -v not working correctly through sbsv2
-DPDEF127555 SBSv2 doesn't do "romfile"
-
-Other Changes:
-MINOR_CHANGE made the default number of jobs 4
-
-
-version 2.2.1
-
-Defect Fixes:
-DPDEF128498 SBS creates paths with extra slashes which can cause problems
-
-Other Changes:
-MINOR_CHANGE Removed temporary ABIv1 .lib generation
-MINOR_CHANGE Added monty test data to the test folder
-
-
-version 2.2.0
-
-New Features:
-DS.1347 SBSv2 Compiler Selection  
-DS.1348 SBSv2 allow mixed slashes
-
-Defect Fixes:
-DPDEF127904	SBSv2 : recent installdefaultcommdb has broken the 9.4 build
-DPDEF128022	SBSv2: Unrecognised Keyword ['romtarget  <some_file>.dll'] warnings
-DPDEF127815	SBSv2: PAGED and EPOCCALLDLLENTRYPOINTS keywords not supported
-DPDEF127890	SBSv2:  TARGETPATH in mmps (also resources, bitmaps) must cope with backslashes
-DPDEF128229 SBSv2: some command invocations can fail, but could be "re-tried"
-
-
-version 2.1.10
-
-Defect Fixes:
-DPDEF126662	Intermittent networking_dhcp compilation failure in Raptor build GT phase
-DPDEF127799	SBSv2: zip and unzip commands not found in some builds
-DPDEF127665	ARMV7 libraries have wrong link order in Raptor
-
-
-version 2.1.9
-
-Defect Fixes:
-DPDEF127498	SBSv2: importlibversioned_abiv1 intermittently fails in ARMV5 builds
-DPDEF125483	CDB breaks due to Attribute values not matching expected values
-DPDEF126335	Intermittent GT errors due to "make" not being found on the PATH
-DPDEF127562	SBSv2 will not unzip the same file into more than one location
-DPDEF127626	SBSv2: sed version on windows is out of date
-
-
-version 2.1.8
-
-Defect Fixes:
-DPDEF125478	CDB breaks caused by file path/name mismatch
-DPDEF125145	Incorrect file access permissions for sbs v2.0.14 in Linux distribution
-DPDEF126126	Intermittent "Segmentation fault" error in Raptor GT phase
-DPDEF124836	SBSv2 cannot build just a single .mmp file from a bld.inf file
-DPDEF126675	Performance regression in SBSv2 python frontend caused by regex usage,
-DPDEF126790	groupin10 is not used in artarget_func
-DPDEF125639	TEM variables are reported incorrectly when building TEM for ARMV7
-DPDEF124273	abld help is ugly and hard to read
-DPDEF126614	"Virtual memory exhausted. Stop" error when building with SBSV2
-
-
-version 2.1.7
-
-Defect Fixes:
-DPDEF124290 SBS -e pvmgmake -j 12 on Linux produces malformed xml log files
-DPDEF126241	SBSv2 : SECURE_DATA error when building uiklaf toolkit in TechView
-DPDEF126328	Performance regression and related excessive memory usage in daily Raptor builds
-
-
-version 2.1.6
-
-Defect Fixes:
-DPDEF125740	SBSv2: Builds can hang during the GT stage in Windows builds when using "-j x"
-DPDEF125145	Incorrect file access permissions for sbs v2.0.14 in Linux distribution
-
-
-version 2.1.5
-
-Defect Fixes:
-DPDEF125812	There is no user created init.xml configuration file
-
-
-version 2.1.4
-
-Defect Fixes:
-DPDEF124680 Raptor builds hang  at "tools2" compilation phase
-DPDEF125304 Raptor crashes when running abld
-
-
-version 2.1.3
-
-Defect Fixes:
-DPDEF125394 sbs_2.1.0_(RC1) Building complete OS gives armasm errors on Windows
-DPDEF122556 GT0367: CLEANEXPORT target is not cleaning files with a space in them
-DPDEF124691 Raptor should ignore the new SMPSAFE keyword
-DPDEF125031 SBSv2 Stringtable build fails when EXPORTPATH specified
-
-
-version 2.1.2
-
-Change Requests:
-CR1413 Support for different toolchains to be called by SBSv1 and SBSv2
-
-
-version 2.1.1	
-
-Defect Fixes:
-DEF124748 GCCXML errors in Raptor related to missing arm lib files
-DEF124756 Raptor build : Orphan files reported in CBR phase
-DEF124758 Raptor build CBR errors due to missing ".a" files
-DEF124573 CDB breaks in Raptor build due to missing header,dll and lib files
-
-
-version 2.1.0
-
-Change Requests:
-CR1479 Add Armv7 support into SBSv2
-
-Defect Fixes:
-DEF124543 Raptor does not handle the STDCPP keyword correctly
-DEF124515 GT0367: 'bldmake plat' should now show ARMV7
-
-
-version 2.0.14
-
-Defect Fixes:
-DEF124705 CBR errors in raptor builds due to missing rpp files
-DEF120328 SBS v2.0 configuration files cannot be validated
-INC124096 Long list of MMP macros causes crashdump with .s files
-DEF124702 GT0367: Semaphores need altering to correct possible hangs (on Linux)
-
-
-version 2.0.13
-
-Defect Fixes:
-DEF123653 SBS -j 16 on Windows produces malformed xml log files
-
-
-version 2.0.12
-
-Defect Fixes:
-DEF123987 Raptor does not build a lot of .lib files for ARMV5
-DEF123981 SBSv2 doesn't generate DSO when EXPORTUNFROZEN is specified.
-
-
-version 2.0.11
-
-Defect Fixes:
-DEF123988 SBSv2 does not produce rpp files
-DEF123766 SBSv2 log output does not match the specification
-DEF122781 GT0367: 'bldmake bldfiles' output not going to stdout
-DEF122885 GT0367: Need to stop sbs -abld functioning on Linux
-DEF123354 GT0367: Incorrect output if the number of jobs provided is invalid
-
-
-version 2.0.10
-
-Defect Fixes:
-DEF123984 SBSv2 generates more warnings than abld
-DEF124139 GT0367: SBS causes a Python Traceback when a system_definition.xml error occurs
-DEF123601 SBSv2 : Python traceback error is reported when try to build systemtest code
-DEF123916 SBSv2 : "tools" build warns about overrides when "OPTION MSVC /w" in .mmp files
-
-
-version 2.0.9
-
-Defect Fixes:
-PDEF124028 .GXP files not getting created when built for GCCXML target
-DEF123653 SBS -j 16 on Windows produces malformed xml log files
-DEF123586 dso file is not remade when def file changes
-DEF122541 SBSv2 -what should report resource files
-DEF123265 Incorrect file access permissions for sbs v2.0.7 in Linux dist
-DEF123317 SBSv2 -what got error for whatexports if too much exports
-DEF123439 SBSv2 : Exports not performed in total before .mmp processing in sysdef builds
-DEF123552 STLport doesn't build with Raptor on Linux
-DEF123260 GT0367: Circular references in config files not handled
-
-
-version 2.0.8
-
-Defect Fixes:
-DEF122930 SBSv2:Target type exexp giving errors while building for winscw
-DEF123028 Raptor generating double slashes in command files
-DEF123048 SBSv2: build with -k (keep-going) stops when export makefile has a failure.
-DEF123069 False 'missing mmp file' errors reported by SBSv2
-DEF122472 SBSv2 doesn't report content of unpacked zip files
-DEF122534 SBSv2 -what should not report .sym files
-DEF123181 SBSv2: Failure of one export in python aborts remaining exports for bld.inf
-DEF123289 SBSv2 : Netcards doesn't build for "tools" in an SBSv2 build
-DEF123418 SBSV2: stlport build can fail with "no rule to make target"
-DEF123084 SBSv2: exits with an exception if -c option specifies non-existent configuration
-INC122876 Electric Accelerator build fails with Raptor
-
-
-version 2.0.7
-
-Defect Fixes:
-DEF122784 Large MMP files and GNUMAKEFILE causes shell to crash
-DEF122760 Problems with bmconv command files preventing bitmap generation?
-DEF122803 SBSv2 - Freeze doesnt work properly for OE target types
-DEF122833 SBSV2 Performance is poor with -j16 using the GNU Make engine
-DEF122535 GT0367: Invalid system_definition.xml causes SBSv2 layering crash
-DEF122570 SBSv2 : certain "-m" values cause a crash at makefile generation
-DEF122604 Errors in GT only build using sbsv2 on Windows
-DEF122796 Wrong default value for PVMGMAKE in make.xml
-DEF122783 SBSv2 WINSCW builds can produce incorrectly linked executables under emake
-DEF122785 log summariser crashes if errors contain % characters
-DEF122870 SBSv2 assembling .s files fails.
-DEF120473 Enable Windows and Linux Tools to Cohabit
-DEF121826 Pre-include HRH file directory from variant.cfg fails for template extension mak
-DEF121907 Raptor crashes when exporting zip file that already exists
-DEF122523 SBSv2 Logging output affected by bash version on Linux
-DEF122788 SBSv2: We don't ensure correct version of Make for TEMs and for use in FLMs
-
-
-version 2.0.6
-
-The first release of SBSv2 in the SITK.
-
+Release Notes for Symbian Build System v2
+
+next version
+
+- Fix platform macros for cross compilation on Linux
+- New build win32 tools on Linux.  
+  To enable it, use variant '.win32'. To build both windows and linux binaries,
+  use:
+	-c tools2.win32 -c tools2
+  It only applies to platform tools2 on Linux
+
+- Add a workaround to enable the Qt team to link their code against Symbian DLL's
+
+
+version 2.12.2
+
+Defect Fixes:
+- SF Bug 1569 - excessive recompilation in incremental tracecompiler builds
+- Better error messages for make-engine selection.
+  e.g. "sbs -e arm" will now produce a useful error message rather than 
+  a traceback. "arm" is a real variant but it's not a make engine.  In
+  the past sbs would have tried to use it and would have failed with a
+  complicated traceback. Also doesn't traceback for non-existent make engines.
+- sbs_filter chose wrong embedded default python version. Set to 2.6.4 now.
+- FilterCheck did not check files when run from sbs_filter
+- Remove old references to python 2.5.2
+- Escape filenames with special XML characters inside <member> tags
+
+
+version 2.12.1
+
+Defect Fixes:
+- SF Bug 1494 - sbs --what does not report Trace Compiler output
+- sbs -c winscw.tracecompiler uses wrong UID and doesn't generate traces
+- SF Bug 1519 - Raptor output files may contain unescaped left angle brackets as XML character data
+
+
+version 2.12.0
+
+New Features:
+- New 'Patchable Constants' target type: TARGETTYPE pdll
+- Combine Linking and Postlinking into a single step - performance improvement.
+- Support exit codes from next version of the trace compiler which will issue them
+- New sbs_filter script and batchfile to ease the use of sbs_filter.py.  
+  Allows filters to be executed over a log after a build has been done.
+    e.g.
+
+  	sbs_filter --filters=FilterWhat < logfile.log 
+
+    (This runs a "--what" without regenerating any makefiles or reparsing
+    the matadata.)
+- New (beta) FilterWhatComp filter.  Simulates abld log output for
+  use with parse_what.pl for packing up zips by component.  Whatcomp output
+  uses the incoming epocroot value.  i.e. if epocroot is relative then so is
+  the what output.  e.g. if EPOCROOT=\ then the output will be of the form:
+
+	"\epoc32\release\armv5\...."  
+
+  If it's "..\myepocroot" then the output will be:
+
+	"..\myepocroot\epoc32\release\armv5".  
+
+  If it's absolute then the what output will also be absolute.
+- New FilterCheck filter.  This can be used with sbs_filter to perform the 
+  equivalent of --check using the log output from a build.  It is more
+  efficient than --check because the metadata is not parsed and no makefiles
+  are generated. e.g.
+
+	sbs_filter --filters=FilterCheck < logfile.log 
+
+- New (beta) graphical build visualisation tool (bin/timelines.py). 
+  Requires pygame and PyOpenGL. e.g.
+
+	python timelines.py < filename.log
+
+- New (beta) log analyser (recipestats.py) for recording the total time spent 
+  in each type of recipe in the build. e.g.
+
+	python recipestats.py < filename.log > stats.csv
+
+  The output is in CSV format.  
+
+Defect Fixes:
+- fix for ARM9E + ARMV5 pre-processing confusion
+- SF bug 1606: template_ext.flm wrongly creates dependencies to OTHER_CFG targets
+- SF bug 1570: Adding then removing a capability can produce incorrect 
+  result: e.g. ALL TCB -TCB becomes ALL -TCB but it should be just ALL
+
+Other Changes:
+- Default to using Python 2.6.4 on windows (no change in compatibility with 
+  older versions of Python).
+
+
+version 2.11.3
+
+Defect Fixes:
+DPDEF142616 Raptor: Variables can be set unnecessarily prior to TEM execution
+Fix for: filter terminal flags up when recipe truncated
+SF bug 170: invalid XML output when a zip file is missing
+SF bug 518: unpaged keyword in mmp files is not parsed properly
+
+
+version 2.11.2
+
+Defect Fixes:
+DPDEF143176 raptor does not respect STDCPP mmp file keyword
+
+
+version 2.11.1
+
+Other Changes:
+GCCE 4.4.1 variant added
+Restored python 2.4 compatibility
+Minor TOOLS2 --what corrections
+Retain Linux execute permissions on unpacked :zip archives
+Prototype of extended timing API added
+Option --noexport added for parallel parsing
+Made --noexport and --export-only mutually exclusive
+SBS_PYTHONPATH insulates sbs from the global PYTHONPATH
+Removed spurious bracket in e32abiv2textnotifier2
+More robust to multiple import library definitions
+
+
+version 2.11.0
+
+New Features:
+Parallel parsing of meta-data
+New keyword APPLY for MMP files
+SAX filter plugin base-class
+
+Defect Fixes:
+DPDEF142895 Raptor does the wrong thing with the ARMFPU keyword
+DPDEF143020 The savespace variant overrides elf2e32's return code
+DPDEF143046 BYTEPAIRCOMPRESSTARGET and INFLATECOMPRESSTARGET not in FLM interface
+Improved error reporting for --check and --what
+
+
+version 2.10.2
+
+Defect Fixes:
+DPDEF142958 regression - ARMV6 and __ARMV6__ are not defined for armv6_urel builds
+DPDEF142730 Raptor crashes with improper VERSION syntax
+DPDEF142928 RVCT 4.0: Linker error when the MMP files modifies the --cpu option
+
+
+version 2.10.1
+
+Defect Fixes:
+DPDEF142666 Cannot remove frozen exports from EABI DEF file in SBSv2
+DPDEF142745 OPTION_REPLACE problems with RVCT 4.0
+DPDEF140622 feature variant configuration file with non exist file set to 'FEATURELISTFILES'
+DPDEF141195 Raptor doesn't handle spaces in tool paths
+DPDEF142616 Raptor: Variables can be set unnecessarily prior to TEM execution
+DPDEF142455 Disable warning L6780W for certain components
+DPDEF142447 GCC-E: Raptor compiles CIA files as Thumb
+DPDEF142448 GCC-E: Raptor tries to build ABIV1 import libraries
+DPDEF142451 GCC-E: Raptor treats C files as C++ files.
+
+
+version 2.10.0
+
+New Features:
+Support for GCCE compiler
+More efficient Feature Variation support
+
+
+version 2.9.3
+
+Defect Fixes:
+DPDEF142166 Raptor sometimes invokes checklib.exe with incorrect parameters
+DPDEF141354 EXPORTUNFROZEN fails in target builds if .savespace is applied
+DPDEF141533 Inconsistent log output
+DPDEF141604 file winscw.auto.bat is released two times
+DPDEF141787 Raptor treats EFREEZE info message as warnings
+	
+Other Changes:
+talon can read commands from a temporary file as well as with -c
+
+
+version 2.9.2
+
+Defect Fixes:
+DPDEF141531 Incorrect RVCT variables passed to TEM
+DPDEF141837 Some problems with dependency (.d) files
+DEF140258 Aborting SBSv2 mid-build often leads to corrupt .d files which prevent rebuilds
+DPDEF142049 Garbage in the Raptor log file
+DPDEF141954 Raptor: "tools" config static libraries can have incorrect compilation macros
+DPDEF141974 Raptor: "tools" builds can fail when done in combination with "tools2" builds
+
+Other Changes:
+Static libraries cannot be feature variant
+Option --no-depend-include for very big builds
+
+
+version 2.9.1
+
+Defect Fixes:
+DPDEF141503 RMTPClient::StartTransport Panic when using emulated test tranport plugin
+DPDEF141688 ARMV6 builds with SBSv2 have problems with missing DEF files
+	
+
+version 2.9.0
+
+New Features:
+Talon shell to reduce memory usage and improve stability.
+Support for RVCT 4.0 advanced features.
+Optionally use SBS_CYGWIN, SBS_MINGW and SBS_PYTHON to locate tools.
+Makefile to build host tools on Linux.
+Single-file compilation for IDE integration.
+Splitlog and CheckSource filters.
+
+Defect Fixes:
+DPDEF141523 Raptor links kernel-side components to scppnwdl.dso
+DPDEF141418 Raptor turns echo on
+DPDEF141495 Raptor doesn't deal correctly with SOURECEPATH beginning with '/'
+DPDEF141388 raptor inserts epoc32\include at start of systeminclude path	
+
+
+version 2.8.6
+
+DPDEF135505 Some TEMs have race conditions for simultaneous urel and udeb. cp fails.
+DPDEF141498 If make crashes, Raptor exits with 0 errors
+DPDEF141071 Raptor: GCCXML build does not support the VAR2 TARGETTYPE
+DPDEF140816 STDCPP keyword in mmp file not interpreted by gccxml tool chain
+DPDEF137727 [Raptor Rollout] Raptor fails to build certain .mbg and .rsg files
+DPDEF137494 SBSv2: preprocessor warnings and errors might cause invalid XML in log
+DPDEF140731 Missing dependency files when building from clean
+DPDEF140540 [System Build]: Changes of Raptor cause 94_331 build failed
+DPDEF141129 raptor generates unknown origin file
+
+Other Changes:
+Fix to support trace compiler switch
+Better message for duplicate objects, states which file overrides which.
+Refactor to avoid "defects" of missing OS variants.
+
+
+version 2.8.5
+
+Defect Fixes:
+DPDEF141102 SBS doesn't set the paging attribute of excutables correctly
+DPDEF140731 Missing dependency files when building from clean
+DPDEF135620 Workaround for broken static libraries
+
+
+version 2.8.4
+
+Defect Fixes:
+DPDEF140839 RComp crashes if it's built with sbs
+DPDEF140929 OPTION GCCE in MMP files generates a build warning
+DPDEF135436 SBSv2 - Python traceback when illegal characters appear on command line
+
+
+version 2.8.3
+
+Defect Fixes:
+DPDEF139904 Raptor: .def file FREEZE attempted for ARMV5 when it shouldn't be
+DPDEF140589 Raptor: .def file FREEZE attempted for WINSCW when it shouldn't be
+DPDEF140456 Raptor build error with -c tools_rel
+DPDEF139759 Raptor warning regarding EXPORTSUNFROZEN is ambiguous
+DPDEF135436 SBSv2 - Python traceback when illegal characters appear on command line
+INC140156 SBSv2 crashes when build QtWebkit for ARMV5
+
+Other Changes:
+Add <info> to show which variant.hrh file is used.
+Replaced the corrupted awk.exe in cygwin distro.
+Fix previous trace compiler auto run mechanism.
+ROMFILE improvements.
+
+
+version 2.8.2
+
+Defect Fixes:
+DPDEF140540 [System Build]: Changes of Raptor cause 94_331 build failed
+
+Other Changes:
+Tolerate XML schema 1_0 files where possible.
+Treat system definition schema 1.[3-9] files the same as schema 1.4 files.
+Remove checksource and its python site-packages.
+
+
+version 2.8.1
+
+Defect Fixes:
+DPDEF140165 SBS error when creating info.xml on component base_omaph2
+DPDEF132996 Location of generated auto.bat files is inconsistent
+
+Other Changes:
+Feature variant "ln -f" fails intermittently in parallel builds.
+Traceback when "group" elements are redefined in XML.
+Trace compiler should run automatically if a trace path exists.
+Need a workaround for Carbide Missing SDK problem.
+
+
+version 2.8.0
+
+New Features:
+XML schema 2.0 with new alias and group elements.
+
+Removed:
+XML config element (use var instead).
+XML .first and .last mechanism (use alias or group instead).
+
+Defect Fixes:
+DPDEF140082 SBS cause env to dirty state
+DPDEF138565 SBSV2 doesn't define the correct macros for ARMV6
+DPDEF139950 SBSv2 Filter Handling not Robust enough - bad filters stop build.
+DEF139686 [TCL Build] coredumpserver compile warnings in DP00458
+
+
+version 2.7.2
+
+Defect Fixes:
+DPDEF139420 Raptor config does not correctly handle mifconv causing resource build errors
+DPDEF138679 Raptor does not create a DEFFILE when building for winscw_urel
+DPDEF139692 SBSV2: 'virtual memory exhausted' when building multiple variants
+DPDEF136321 SBSv2: Zip exports not cleaned
+INC139622 OPTION_REPLACE does not work properly in SBSv2
+
+Other Changes:
+Added utility.prebuilt FLM.
+
+
+version 2.7.1
+
+Defect Fixes:
+DPDEF138366 [T15379] Raptor raise some warnings when build Coredumpserver
+DPDEF139405 SBSV2: Trace compilation fails with large numbers of files.
+DPDEF139572 SBSV2: Changes to '--cpu' option syntax breaks existing MMP files.
+DPDEF139456 Toolcheck file is not created if EPOCROOT is \
+DPDEF133766 Poor SBSv2 reallyclean performance
+DPDEF135780 SBSV2: REALLYCLEAN is not cleaning all files
+
+
+version 2.7.0
+
+New Features:
+DS.1744 Recognize LINKEROPTION in MMP file
+DS.1744 Compiled objects on local filesystem (SBS_BUILD_DIR)
+
+Partial Deliveries:
+DS.1744 CheckSource in Raptor
+
+Defect Fixes:
+DPDEF138293 Carbide: Raptor doesn't resolve variant.cfg entries starting with "\" correctly
+
+
+version 2.6.5
+
+Defect Fixes:
+DPDEF138930 Raptor needs to change to match new trace compiler interface
+
+
+version 2.6.4
+
+Defect Fixes:
+DPDEF138527 [TCL Build] Miss tracecompiler.mk and exclude group for Raptor export
+DPDEF138484 Raptor uses wrong guard causing trace compiler ignores some projects.
+DPDEF138720 BV product folders have missing map files
+DPDEF138721 Raptor uses wrong lib when mmp keyword FIRSTLIB presents.
+DPDEF138053 SBSv2: tools platform: tools not installed by the time they need to be used.
+DPDEF138164 Carbide: Raptor crashes on unrecognised buildinfo.txt content
+DPDEF138296 SBSV2 disables all TOOLS2 compiler warnings
+DPDEF138329 Raptor generates marker file for trace compiler when it's not done
+DPDEF138352 SBSv2: rollout - unsplit EC makefiles not generating correct deps 4 missing .mbg
+DPDEF138480 SBSv2: rollout. Created files sometimes have insufficient permissions on Windows
+DPDEF137511 SBSv2 doesn't behave correctly with the default paging policy
+
+
+version 2.6.3
+
+Defect Fixes:
+DPDEF133508 Number of errors is counted wrong
+DPDEF138098 UID issue in Trace Compiler for Raptor 
+DPDEF138296 SBSV2 disables all TOOLS2 compiler warnings
+
+
+version 2.6.2
+
+Defect Fixes:
+DPDEF135330 Raptor Rollout: bangalore messaging winscw udeb test code
+DPDEF137726 Missing mscvr_readme.txt from the SBSv2 drop
+DPDEF137739 SBSv2: rollout - .cia object files can conflict with .cpp object files 
+
+
+version 2.6.1
+
+Defect Fixes:
+DPDEF137239 raptor does not include the msvcr71 runtime library
+DPDEF137489 BV builds try and write generated .s files in the wrong directory
+
+
+version 2.6.0
+
+New Features:
+DS.1542 SBSv2 generates Open System Trace dictionaries
+DS.1629 Resource autodependencies
+
+
+version 2.5.5
+
+Defect Fixes:
+DPINC137379 Emulator: Cursor is missing on emulator buttons
+DPDEF133640 SBSv2 usrt3_1.lib is missing from epocroot/epoc32/release/armv5/
+
+
+version 2.5.4
+
+Defect Fixes:
+DPDEF136719 Raptor: sbsv2cache.py cache file generation fails with very large log files
+DPDEF136715 On Linux the shipped python 2.5.2 is not found
+DPDEF132996 SBSv2 doesn't generate AUTO.BAT file
+DPDEF136382 SBSv2: explicit dll versioning not supported on arm platforms 	
+DPDEF135843 [Raptor Rollout] Raptor does not support OPTION_REPLACE ARMASM/OPTION ARMASM
+DPDEF136693 makesis fails when multiple instances are run concurrently with the same target
+
+
+version 2.5.3
+
+Defect Fixes:
+DPDEF136162 Raptor: resource dependencies require metadata workarounds
+DPDEF128288 SBSv2 does not fully support build target customization.
+DPDEF132880 BV builds cannot find system static libraries
+DPDEF133835 SBSv2 cannot build for ARMV6 or ARM9E
+
+
+version 2.5.2
+
+Defect Fixes:
+DPDEF135983 cpp-raptor crashes if source code contains builtin macro __FILE__
+DPDEF133808 Raptor does not support OPTION --no_rtti with mixed assembly/C++ projects
+DPDEF135577 SBSv2: rollout - TOOLS/TOOLS2 exes sometimes not executable or writable.
+
+
+version 2.5.1
+
+Defect Fixes:
+DPDEF135258 createvmap.py script can hang in BV builds
+DPDEF135385 warnings in RunModeDebugger in M04816vFuture with ARMV7
+
+
+version 2.5.0
+
+New Features:
+DS.1568 User defined configuration file location(s)
+
+
+version 2.4.3
+
+Defect Fixes:
+DPDEF134322 SBSV2 uses the wrong library when building STDCPP targets 	
+DPDEF132923 SBSv2 freeze don't add Vtable and RTTI information into def file for arm dll
+DPDEF133775 SBSv2: ARMFPU is not passed to compiler
+DPDEF134023 case inconsistency with libOpenVG.lib
+
+Other Changes:
+MINOR_CHANGE updated all copyright notices for SF delivery
+MINOR_CHANGE added vtb91sf variant for SF Timebox 9:1 builds
+MINOR_CHANGE added vtb92sf variant for SF Timebox 9:2 builds
+
+
+version 2.4.2
+
+Defect Fixes:
+DPDEF133820 Raptor Rollout: EXPORTUNFROZEN processing incorrect in ARMV5 builds
+DPDEF132033 Raptor picks up the wrong bld.inf macros when building for RVCT 3.1
+DPDEF133772 SBSv2: console log includes some winscw warnings that should be suppressed
+
+
+version 2.4.1
+
+Defect Fixes:
+DPDEF133639 Raptor Rollout:TEF test server doesn't start under SBSv2 - OK with abld
+DEF133255 [System Build]: Error in compiling NaviEngine Unistore on ARMV7 M04816 vFuture
+DPDEF127973 Freeze fails with SBSv2 under some environments
+
+
+version 2.4.0
+
+New Features:
+DS.1475 Pluggable Log Summariser
+DS.1476 Use FLMs from the source tree  
+
+Defect Fixes:
+DPDEF133417 SBSv2: tmp mounting errors on startup
+
+
+version 2.3.3
+
+Defect Fixes:
+DPDEF130261 sbs does not support explicit option to version keyword
+DPDEF130598 sbs does not provide debug and nodebug variants
+DPDEF131630 Raptor smoke tests break when EPOCROOT=\ on Windows
+DPDEF132898 no TEM nbl2.lib dependencies for armv7
+DPDEF133035 SBSv2 - Tools2 build does not include -m32 option.  Stlport flm also doesn't.
+DPDEF133176 SBSv2 ignores compillation error for "unidentified identifier" for winscw build
+
+
+version 2.3.2
+
+Other Changes:
+MINOR_CHANGE added vtb92 variant for Timebox 9:2 builds
+
+
+version 2.3.1
+
+Defect Fixes:
+DPDEF132374 SBSv2: Directory creation can fail leading to build errors
+DPDEF132070 SBSv2: stlport 5.2 build fails - library generated to wrong directory
+DPDEF128378 SBSv2 help for global targets only shown when a target is given
+DPDEF129634 ALWAYS_BUILD_AS_ARM does not suppress __MARM_THUMB__ with SBSv2
+
+
+version 2.3.0
+
+New Features:
+DS.1424 Support for ARMV5SMP platform  
+
+Defect Fixes:
+DPDEF129804 SBSv2 crashes when there are double \\ in prj_mmpfiles in bld.inf
+DPDEF130892 SBSv2: Reallyclean fails on TEM files
+DPDEF131619 SBSv2: ABIv1 .lib files aren't generated for -c armv5 -c armv5.smp
+DPDEF131637 SBSv2: stlport can fail to build under Cygwin - "/tmp no such directory"
+DPDEF131891 [System Build]: Errors in GT stage in Build M04774 vfuture
+
+
+version 2.2.9
+
+Defect Fixes:
+DPDEF129804 SBSv2 crashes when there are double \\ in prj_mmpfiles in bld.inf
+DPDEF131637 SBSv2: stlport can fail to build under Cygwin - "/tmp no such directory"
+DPDEF130892 SBSv2: Reallyclean fails on TEM files
+
+
+version 2.2.8
+
+Defect Fixes:
+DPDEF130569 .lib files for SSM targets build with different name compared to abld
+DPDEF130571 libxml2 component contains GCCXML build errors
+DPDEF131312 SBSv2 - DEBUGGABLE_UDEBONLY not supported by SBSv2 (Raptor)
+
+
+version 2.2.7
+
+Defect Fixes:
+DPDEF130533 SBSv2 fails to run when installed from SITK
+DPDEF130452 Some rcomp warnings need to be disabled
+DPDEF130286 SBSv2: sbs freezes during CLEAN and REALLYCLEAN operations.
+DPDEF127973 Freeze fails with SBSv2 under some environments
+DPDEF128455 Error during freeze with SBSv2
+DPDEF127149 SBSv2 TEM/extension makefile build doesn't support the .savespace variant
+
+
+version 2.2.6
+
+Defect Fixes:
+DPDEF130008 SBSv2 should recognize these new keywords: SMPSAFE, PAGEDCODE, PAGEDDATA, UN...
+DPDEF127887 Current directory wrong when executing extension makefiles in SBSv2
+DPDEF128915 CCheckEnv ERROR: CBRPatch: Absent file
+DPDEF127675 Raptor does not process stringtables correctly when HEADERONLY is on
+DPDEF127878 give wrong mmp filename for -p option should cause error in SBSv2
+
+Other Changes:
+Uses cygwin instead of msys for improved stability.
+Includes python 2.5.2 instead of using py2exe.
+
+
+version 2.2.5
+
+Defect Fixes:
+DEF127329 OMAP H4 Unistore2 Failure in Raptor 9.5 GT build
+DPDEF128632 SBSv2 : bld.inf ':zip' exports don't maintain timestamps, with an e32 impact
+DPDEF127399 SBSv2 -p <filename>.mmp options also builds .mk files
+
+
+version 2.2.4
+
+Defect Fixes:
+DPDEF129187 SBSv2: ABIv1 .lib files are required (again)
+
+
+version 2.2.3
+
+Defect Fixes:
+DPDEF128916 C Standard Library failed on cia2cpp2o armv5 with 1
+DPDEF128503 sbs 2.2.0 produce malformed xml log on Linux with pvmgmake
+DPDEF127604 SIS registry panics at startup on emulator if SWI is built with SBS
+DPDEF128690 SBSv2 generates error when using emake on REALLYCLEAN target
+
+Other Changes:
+MINOR_CHANGE log summariser updated to deal with errors starting "make.exe: ***"
+
+
+version 2.2.2
+
+Defect Fixes:
+DPDEF127497 SBSv2 does not clean when -k or other switch is used with abld wrapper
+DPDEF127829 'cannot open Meta file' warning with SBSv2
+DPDEF127371 abld -v not working correctly through sbsv2
+DPDEF127555 SBSv2 doesn't do "romfile"
+
+Other Changes:
+MINOR_CHANGE made the default number of jobs 4
+
+
+version 2.2.1
+
+Defect Fixes:
+DPDEF128498 SBS creates paths with extra slashes which can cause problems
+
+Other Changes:
+MINOR_CHANGE Removed temporary ABIv1 .lib generation
+MINOR_CHANGE Added monty test data to the test folder
+
+
+version 2.2.0
+
+New Features:
+DS.1347 SBSv2 Compiler Selection  
+DS.1348 SBSv2 allow mixed slashes
+
+Defect Fixes:
+DPDEF127904	SBSv2 : recent installdefaultcommdb has broken the 9.4 build
+DPDEF128022	SBSv2: Unrecognised Keyword ['romtarget  <some_file>.dll'] warnings
+DPDEF127815	SBSv2: PAGED and EPOCCALLDLLENTRYPOINTS keywords not supported
+DPDEF127890	SBSv2:  TARGETPATH in mmps (also resources, bitmaps) must cope with backslashes
+DPDEF128229 SBSv2: some command invocations can fail, but could be "re-tried"
+
+
+version 2.1.10
+
+Defect Fixes:
+DPDEF126662	Intermittent networking_dhcp compilation failure in Raptor build GT phase
+DPDEF127799	SBSv2: zip and unzip commands not found in some builds
+DPDEF127665	ARMV7 libraries have wrong link order in Raptor
+
+
+version 2.1.9
+
+Defect Fixes:
+DPDEF127498	SBSv2: importlibversioned_abiv1 intermittently fails in ARMV5 builds
+DPDEF125483	CDB breaks due to Attribute values not matching expected values
+DPDEF126335	Intermittent GT errors due to "make" not being found on the PATH
+DPDEF127562	SBSv2 will not unzip the same file into more than one location
+DPDEF127626	SBSv2: sed version on windows is out of date
+
+
+version 2.1.8
+
+Defect Fixes:
+DPDEF125478	CDB breaks caused by file path/name mismatch
+DPDEF125145	Incorrect file access permissions for sbs v2.0.14 in Linux distribution
+DPDEF126126	Intermittent "Segmentation fault" error in Raptor GT phase
+DPDEF124836	SBSv2 cannot build just a single .mmp file from a bld.inf file
+DPDEF126675	Performance regression in SBSv2 python frontend caused by regex usage,
+DPDEF126790	groupin10 is not used in artarget_func
+DPDEF125639	TEM variables are reported incorrectly when building TEM for ARMV7
+DPDEF124273	abld help is ugly and hard to read
+DPDEF126614	"Virtual memory exhausted. Stop" error when building with SBSV2
+
+
+version 2.1.7
+
+Defect Fixes:
+DPDEF124290 SBS -e pvmgmake -j 12 on Linux produces malformed xml log files
+DPDEF126241	SBSv2 : SECURE_DATA error when building uiklaf toolkit in TechView
+DPDEF126328	Performance regression and related excessive memory usage in daily Raptor builds
+
+
+version 2.1.6
+
+Defect Fixes:
+DPDEF125740	SBSv2: Builds can hang during the GT stage in Windows builds when using "-j x"
+DPDEF125145	Incorrect file access permissions for sbs v2.0.14 in Linux distribution
+
+
+version 2.1.5
+
+Defect Fixes:
+DPDEF125812	There is no user created init.xml configuration file
+
+
+version 2.1.4
+
+Defect Fixes:
+DPDEF124680 Raptor builds hang  at "tools2" compilation phase
+DPDEF125304 Raptor crashes when running abld
+
+
+version 2.1.3
+
+Defect Fixes:
+DPDEF125394 sbs_2.1.0_(RC1) Building complete OS gives armasm errors on Windows
+DPDEF122556 GT0367: CLEANEXPORT target is not cleaning files with a space in them
+DPDEF124691 Raptor should ignore the new SMPSAFE keyword
+DPDEF125031 SBSv2 Stringtable build fails when EXPORTPATH specified
+
+
+version 2.1.2
+
+Change Requests:
+CR1413 Support for different toolchains to be called by SBSv1 and SBSv2
+
+
+version 2.1.1	
+
+Defect Fixes:
+DEF124748 GCCXML errors in Raptor related to missing arm lib files
+DEF124756 Raptor build : Orphan files reported in CBR phase
+DEF124758 Raptor build CBR errors due to missing ".a" files
+DEF124573 CDB breaks in Raptor build due to missing header,dll and lib files
+
+
+version 2.1.0
+
+Change Requests:
+CR1479 Add Armv7 support into SBSv2
+
+Defect Fixes:
+DEF124543 Raptor does not handle the STDCPP keyword correctly
+DEF124515 GT0367: 'bldmake plat' should now show ARMV7
+
+
+version 2.0.14
+
+Defect Fixes:
+DEF124705 CBR errors in raptor builds due to missing rpp files
+DEF120328 SBS v2.0 configuration files cannot be validated
+INC124096 Long list of MMP macros causes crashdump with .s files
+DEF124702 GT0367: Semaphores need altering to correct possible hangs (on Linux)
+
+
+version 2.0.13
+
+Defect Fixes:
+DEF123653 SBS -j 16 on Windows produces malformed xml log files
+
+
+version 2.0.12
+
+Defect Fixes:
+DEF123987 Raptor does not build a lot of .lib files for ARMV5
+DEF123981 SBSv2 doesn't generate DSO when EXPORTUNFROZEN is specified.
+
+
+version 2.0.11
+
+Defect Fixes:
+DEF123988 SBSv2 does not produce rpp files
+DEF123766 SBSv2 log output does not match the specification
+DEF122781 GT0367: 'bldmake bldfiles' output not going to stdout
+DEF122885 GT0367: Need to stop sbs -abld functioning on Linux
+DEF123354 GT0367: Incorrect output if the number of jobs provided is invalid
+
+
+version 2.0.10
+
+Defect Fixes:
+DEF123984 SBSv2 generates more warnings than abld
+DEF124139 GT0367: SBS causes a Python Traceback when a system_definition.xml error occurs
+DEF123601 SBSv2 : Python traceback error is reported when try to build systemtest code
+DEF123916 SBSv2 : "tools" build warns about overrides when "OPTION MSVC /w" in .mmp files
+
+
+version 2.0.9
+
+Defect Fixes:
+PDEF124028 .GXP files not getting created when built for GCCXML target
+DEF123653 SBS -j 16 on Windows produces malformed xml log files
+DEF123586 dso file is not remade when def file changes
+DEF122541 SBSv2 -what should report resource files
+DEF123265 Incorrect file access permissions for sbs v2.0.7 in Linux dist
+DEF123317 SBSv2 -what got error for whatexports if too much exports
+DEF123439 SBSv2 : Exports not performed in total before .mmp processing in sysdef builds
+DEF123552 STLport doesn't build with Raptor on Linux
+DEF123260 GT0367: Circular references in config files not handled
+
+
+version 2.0.8
+
+Defect Fixes:
+DEF122930 SBSv2:Target type exexp giving errors while building for winscw
+DEF123028 Raptor generating double slashes in command files
+DEF123048 SBSv2: build with -k (keep-going) stops when export makefile has a failure.
+DEF123069 False 'missing mmp file' errors reported by SBSv2
+DEF122472 SBSv2 doesn't report content of unpacked zip files
+DEF122534 SBSv2 -what should not report .sym files
+DEF123181 SBSv2: Failure of one export in python aborts remaining exports for bld.inf
+DEF123289 SBSv2 : Netcards doesn't build for "tools" in an SBSv2 build
+DEF123418 SBSV2: stlport build can fail with "no rule to make target"
+DEF123084 SBSv2: exits with an exception if -c option specifies non-existent configuration
+INC122876 Electric Accelerator build fails with Raptor
+
+
+version 2.0.7
+
+Defect Fixes:
+DEF122784 Large MMP files and GNUMAKEFILE causes shell to crash
+DEF122760 Problems with bmconv command files preventing bitmap generation?
+DEF122803 SBSv2 - Freeze doesnt work properly for OE target types
+DEF122833 SBSV2 Performance is poor with -j16 using the GNU Make engine
+DEF122535 GT0367: Invalid system_definition.xml causes SBSv2 layering crash
+DEF122570 SBSv2 : certain "-m" values cause a crash at makefile generation
+DEF122604 Errors in GT only build using sbsv2 on Windows
+DEF122796 Wrong default value for PVMGMAKE in make.xml
+DEF122783 SBSv2 WINSCW builds can produce incorrectly linked executables under emake
+DEF122785 log summariser crashes if errors contain % characters
+DEF122870 SBSv2 assembling .s files fails.
+DEF120473 Enable Windows and Linux Tools to Cohabit
+DEF121826 Pre-include HRH file directory from variant.cfg fails for template extension mak
+DEF121907 Raptor crashes when exporting zip file that already exists
+DEF122523 SBSv2 Logging output affected by bash version on Linux
+DEF122788 SBSv2: We don't ensure correct version of Make for TEMs and for use in FLMs
+
+
+version 2.0.6
+
+The first release of SBSv2 in the SITK.
+
--- a/sbsv2/raptor/lib/config/locations.xml	Wed Feb 17 16:37:10 2010 +0000
+++ b/sbsv2/raptor/lib/config/locations.xml	Wed Feb 17 17:03:27 2010 +0000
@@ -102,7 +102,8 @@
 		<set name='UNZIP' value="$(SBS_UNZIP)" type='tool'/>
 		<set name='PERL' value='$(SBS_PERL)' type='tool'/>
 		<set name='PYTHON' value='$(SBS_PYTHON)' type='tool' versionCommand='$(PYTHON) -V' versionResult='Python 2\.[456].*'/>
-
+		<set name='UNHIDE_CI_REFS' value='$(SBS_HOME)/$(HOSTPLATFORM_DIR)/bin/unhide_ci_refs.exe' type='tool'/>
+		
 		<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'/>
--- a/sbsv2/raptor/lib/config/variants.xml	Wed Feb 17 16:37:10 2010 +0000
+++ b/sbsv2/raptor/lib/config/variants.xml	Wed Feb 17 17:03:27 2010 +0000
@@ -5,7 +5,19 @@
 	These can be referenced from the command-line or in configurations.
 	
 	-->
-  
+ 	
+	<!-- This variant enables building win32 tools in Linux. Tools2 on Linux only -->
+	<var name="win32">
+		<set name='TOOLS2WIN32' value='1'/>
+		<env name='SBS_MINGW_LINUX_PREFIX' default='i586-mingw32msvc'/>
+		<env name='GCC' default='$(SBS_MINGW_LINUX_PREFIX)-g++' type='tool'/>
+		<env name='ARCHIVER' default='$(SBS_MINGW_LINUX_PREFIX)-ar' type='tool'/>
+		<env name='RANLIB' default='$(SBS_MINGW_LINUX_PREFIX)-ranlib' type='tool'/>
+		<set name='RELEASEPATH' value='$(EPOCROOT)/epoc32/release/tools2/$(VARIANTTYPE)'/>
+		<set name='DOTEXE' value='.exe'/>
+		<set name='PLATMACROS.LINUX' value='$(PLATMACROS.WINDOWS)'/>
+	</var>
+
 	<!-- This variant turns debug info on for arm only -->
 	<var name="debug_info">
 		<set name='DEBUG_INFO' value='1'/>
@@ -26,6 +38,9 @@
 
 	<var name="techview">
 	</var>
+	<var name="unhide_ci_refs">
+		<set name='REFERENCES_STV_DEFAULT' value='TRUE'/>
+	</var>
 
 	<var name="test">
 		<set name='TESTCODE' value='TRUE'/>
--- a/sbsv2/raptor/lib/flm/e32abiv2.flm	Wed Feb 17 16:37:10 2010 +0000
+++ b/sbsv2/raptor/lib/flm/e32abiv2.flm	Wed Feb 17 17:03:27 2010 +0000
@@ -777,6 +777,7 @@
                         $(if $(LINKERFEEDBACK_STAGE2),$(FEEDBACK_OPTION)$(call dblquote,$(FEEDBACKFILE))) \
 			$(if $(MULTIFILE_ENABLED),--multifile $(OUTPUT_OPTION) $(MULTIFILEOBJECT) \
 			--via $$(call dblquote, $(MULTIFILE_VIAFILE)),$(OUTPUT_OPTION) $$@ $$(call dblquote, $$<))  \
+			$(if $(REFERENCES_STV_DEFAULT),&& $(UNHIDE_CI_REFS) $$@,) \
 	$(call endrule,compile)
 
 CLEANTARGETS:=$$(CLEANTARGETS) $(DEPENDFILENAME)
@@ -960,6 +961,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))) \
 	 		$$(call dblquote, $$<) $(OUTPUT_OPTION) $$@ \
+			$(if $(REFERENCES_STV_DEFAULT),&& $(UNHIDE_CI_REFS) $$@,) \
 	$(call endrule,cia2cpp2o)
 
 
--- a/sbsv2/raptor/lib/flm/standard.xml	Wed Feb 17 16:37:10 2010 +0000
+++ b/sbsv2/raptor/lib/flm/standard.xml	Wed Feb 17 17:03:27 2010 +0000
@@ -75,6 +75,7 @@
 		<param name='TOOLCHAIN' default=''/>
 	</interface>
 	<interface name="Symbian.e32abiv2" extends="Symbian.mmp" flm="e32abiv2.flm">
+		<param name='REFERENCES_STV_DEFAULT' default=''/>
 		<param name='SUPPORTS_STDCPP_NEWLIB' default='1'/>
 		<param name='HAS_DEDICATED_OP_NEWDEL_LIB' default='1'/>
 		<param name='DEFAULT_STDCPP_NEWLIB'/>
@@ -102,6 +103,7 @@
 		<param name='CPP_LANG_OPTION'/>
 		<param name='CPPFILT'/>
 		<param name='CREATEVMAP'/>
+		<param name='UNHIDE_CI_REFS'/>
 		<param name='CREATEVMAPCPP'/>
 		<param name='DEBUG_FORMAT'/>
 		<param name='DEBUG_INFO'/>
--- a/sbsv2/raptor/lib/flm/tools.xml	Wed Feb 17 16:37:10 2010 +0000
+++ b/sbsv2/raptor/lib/flm/tools.xml	Wed Feb 17 17:03:27 2010 +0000
@@ -27,6 +27,7 @@
 		<param name='SYSTEMINCLUDE' default=''/>
 		<param name='TARGET'/>
 		<param name='TOOLSPATH'/>
+		<param name='TOOLS2WIN32' default=''/>
 		<param name='USERINCLUDE' default=''/>
 		<param name='PRODUCT_INCLUDE' default=''/>
 		<param name='PLATMACROS.WINDOWS'/>
@@ -35,6 +36,7 @@
 	</interface>
 
 	<interface name="Tools.exe" extends="Tools.common" flm="tools2exe.flm">
+		<param name='DOTEXE'/>
 		<param name='LINKER'/>
 		<param name='LFLAGS'/>
 		<param name='LIBS.WIN32' default=''/>
--- a/sbsv2/raptor/lib/flm/tools2common.flm	Wed Feb 17 16:37:10 2010 +0000
+++ b/sbsv2/raptor/lib/flm/tools2common.flm	Wed Feb 17 17:03:27 2010 +0000
@@ -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"
@@ -18,17 +18,28 @@
 
 ## Input parameters
 
+ifeq ($(filter win,$(HOSTPLATFORM)),win)
+CDEFS.TOOLS2:=$(CDEFS.WIN32) $(CDEFS)
+CFLAGS:=$(CFLAGS.WIN32) $(CFLAGS) $(OPTION_GCC)
+COMPILER_PATH:=$(COMPILER_PATH.WIN32)
 OUTPUTPATH:=$(OUTPUTPATH)/$(TARGET)_$(TARGETTYPE)/tools2/$(VARIANTTYPE)$(TOOLPLATFORMDIR)
-
-ifeq ($(OSTYPE),cygwin)
+else
+ifneq ($(TOOLS2WIN32),)
+# Build win32 tools in Linux
 CDEFS.TOOLS2:=$(CDEFS.WIN32) $(CDEFS)
 CFLAGS:=$(CFLAGS.WIN32) $(CFLAGS) $(OPTION_GCC)
 COMPILER_PATH:=$(COMPILER_PATH.WIN32)
+OUTPUTPATH:=$(OUTPUTPATH)/$(TARGET)_$(TARGETTYPE)/tools2/$(VARIANTTYPE)
 else
+# Build linux tools in Linux
 CDEFS.TOOLS2:=$(CDEFS.LINUX) $(CDEFS)
 CFLAGS:=$(CFLAGS) $(OPTION_GCC)
 COMPILER_PATH=$(COMPILER_PATH.LINUX)
+OUTPUTPATH:=$(OUTPUTPATH)/$(TARGET)_$(TARGETTYPE)/tools2/$(VARIANTTYPE)$(TOOLPLATFORMDIR)
 endif
+endif
+
+
 CDEFS.TOOLS2:=$(call makemacrodef,$(OPT.D),$(CDEFS.TOOLS2))
 
 ## Locally used variables
--- a/sbsv2/raptor/lib/flm/tools2exe.flm	Wed Feb 17 16:37:10 2010 +0000
+++ b/sbsv2/raptor/lib/flm/tools2exe.flm	Wed Feb 17 17:03:27 2010 +0000
@@ -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,11 +16,18 @@
 #
 
 ## Outputs - externally relevant targets that this FLM generates
-ifeq ($(OSTYPE),cygwin)
+ifeq ($(filter win,$(HOSTPLATFORM)),win)
 SYSTEMLIBS:=$(LIBS.WIN32)
 else
+ifneq ($(TOOLS2WIN32),)
+# Build win32 tools in Linux 
+SYSTEMLIBS:=$(LIBS.WIN32)
+else
+# Build linux tools in Linux
 SYSTEMLIBS:=$(LIBS.LINUX)
 endif
+endif
+
 
 EXETARGET:=$(RELEASEPATH)/$(TARGET)$(DOTEXE)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/BLD.INF	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,24 @@
+/*
+* 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 "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: 
+* Cross compilation of win32 tools on Linux 
+* 
+*/
+
+PRJ_PLATFORMS
+TOOLS2
+
+PRJ_MMPFILES
+PDRTRAN.MMP
+platmacros.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/PDRTRAN.MMP	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* pdrtran.exe for windows and pdrtran for linux
+*/
+
+TARGET			pdrtran
+TARGETTYPE		exe
+
+SOURCEPATH		./src
+SOURCE			LEXICAL.CPP PDRREADR.CPP PDRRECRD.CPP PDRTRAN.CPP
+SOURCE			READER.CPP RECORD.CPP STRNG.CPP
+
+SYSTEMINCLUDE		/epoc32/include 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/TEST.PD	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,594 @@
+! PCL5.PD
+! Printer driver file for HP laser printers
+
+Resources Pcl5Resources
+    Reset               "<27>E"
+    SetPageSize            "<27>&l%dA"
+!<27>&l
+! 0o - Portrait
+! 0e - top margin to zero
+! 0C - VMI to zero
+!<27>9 - clear horizontal margins
+!<27>(0N - ISO 8859-1 Latin 1 character set
+    PreAmble            "<27>&l0o0e0C<27>9<27>(0N"
+    PostAmble           "<27>E"
+    BoldOn              "<27>(s3B"
+    BoldOff             "<27>(s0B"
+    ItalicOn            "<27>(s1S"
+    ItalicOff           "<27>(s0S"
+    UnderlineOn         "<27>&d0D"
+    UnderlineOff        "<27>&d@"
+    NewPage             "<12>"
+    Portrait            "<27>&l0o0E<27>9"
+    Landscape           "<27>&l1o0E<27>9"
+    SetXPos             "<27>*p%dX"
+    SetYPos             "<27>*p%dY"
+    BitmapStart         "<27>*t300R<27>*r%df1A"  ! resolution 300 dots per inch
+    ScanLine            "<27>*b%dm%dW"			  ! compression method coded in first %d
+    BitmapEnd           "<27>*rC"
+EndResources
+
+Translates Telephone
+    5:35  ! must ensure width of 5 = width of 35
+    156:"<27>R<3><35><27>R<0>"
+EndTranslates
+
+FontInfo Courier10 
+    MaxNormalCharWidth 25
+    Ascent 33	  ! improvised values throughout
+    CodeSection 0:255
+        0:25
+    EndCodeSection
+EndFontInfo
+
+FontInfo Courier12 
+    MaxNormalCharWidth 30
+    Ascent 40
+    CodeSection 0:255
+        0:30
+    EndCodeSection
+EndFontInfo
+
+FontInfo LinePrinter9 
+    MaxNormalCharWidth 18
+    Ascent 28
+    CodeSection 0:255
+        0:18
+    EndCodeSection
+EndFontInfo
+
+FontInfo CgTimesStd
+    MaxNormalCharWidth 188
+    Ascent 167
+    CodeSection 0:255
+      0:207   1:207    2:207    3:207    4:207
+      5:104  ! telephone character must be the same as # (35)
+      6:207
+      7:69   ! non-breaking hyphen must be the same as hyphen (45)
+      8:207
+      9:61   ! tab must be the same as space (32)
+     10:207   11:150   12:150   13:104
+     14:69   ! potential hyphen must be the same as hyphen (45)
+     15:61   ! non-breaking space must be the same as space (32)
+     16:150
+     17:150   18:150   19:108   20:104   21:104   22:207   23:150   24:150
+     25:150   26:150   27:150   28:184   29:150   30:150   31:150   32:61
+     33:69    34:96    35:104   36:104   37:184   38:161   39:69    40:69
+     41:69    42:104   43:184   44:69    45:69    46:69    47:69    48:104
+     49:104   50:104   51:104   52:104   53:104   54:104   55:104   56:104
+     57:104   58:69    59:69    60:207   61:184   62:207   63:92    64:184
+!    A        B        C        D        E        F        G        H
+     65:150   66:131   67:142   68:154   69:131   70:123   71:150   72:154
+!    I        J        K        L        M        N        O        P
+     73:69    74:81    75:146   76:131   77:188   78:154   79:150   80:119
+!    Q        R        S        T        U        V        W        X
+     81:150   82:138   83:111   84:131   85:154   86:150   87:196   88:150
+!    Y        Z
+     89:150   90:134   91:69    92:69    93:69    94:104   95:104   96:104
+!    a        b        c        d        e        f        g        h
+     97:92    98:104   99:92   100:104   101:92   102:69  103:104  104:104
+!    i        j        k        l        m        n        o        p
+    105:58   106:58   107:104  108:58   109:161  110:104  111:104  112:104
+!    q        r        s        t        u        v        w        x
+    113:104  114:77   115:81   116:58   117:104  118:104  119:150  120:104
+!    y        z
+    121:104  122:92   123:92   124:104  125:92   126:104  127:207  128:142
+    129:104  130:92   131:92   132:92   133:92   134:92   135:92   136:92
+    137:92   138:92   139:58   140:58   141:58   142:150  143:150  144:131
+    145:138  146:184  147:104  148:104  149:104  150:104  151:104  152:104
+    153:150  154:154  155:104  156:104  157:154  158:182  159:104  160:92
+    161:58   162:104  163:104  164:104  165:154  166:104  167:104  168:92
+    169:104  170:184  171:184  172:184  173:69   174:85   175:85   176:207
+    177:207  178:207  179:207  180:207  181:150  182:150  183:150  184:105
+    185:207  186:207  187:207  188:207  189:105  190:104  191:207  192:207
+    193:207  194:207  195:207  196:207  197:207  198:92   199:150  200:207
+    201:207  202:207  203:207  204:207  205:207  206:207  207:104  208:104
+    209:154  210:129  211:129  212:129  213:58   214:70   215:70   216:70
+    217:207  218:207  219:207  220:207  221:104  222:70   223:207  224:152
+    225:104  226:152  227:152  228:104  229:152  230:115  231:106  232:122
+    233:154  234:154  235:154  236:104  237:150  238:105  239:104  240:72
+    241:184  242:104  243:183  244:104  245:104  246:184  247:104  248:104
+    249:104  250:1    251:73   252:73   253:73   254:104  255:104
+    EndCodeSection
+EndFontInfo
+
+FontInfo CgTimesItalic
+    MaxNormalCharWidth 170
+    Ascent 167
+    CodeSection 0:255
+      0:207
+      1:207    2:207    3:207    4:207
+      5:104  ! telephone character must be the same as # (35)
+      6:207
+      7:69   ! non-breaking hyphen must be the same as hyphen (45)
+      8:207
+      9:61   ! tab must be the same as space (32)
+     10:207   11:150   12:150   13:104
+     14:69   ! potential hyphen must be the same as hyphen (45)
+     15:61   ! non-breaking space must be the same as space (32)
+     16:150
+     17:150   18:150   19:103   20:104   21:104   22:207   23:150   24:150
+     25:150   26:150   27:150   28:184   29:150   30:150   31:150   32:61
+     33:69    34:100   35:104   36:104   37:184   38:161   39:69    40:69
+     41:69    42:104   43:184   44:69    45:69    46:69    47:69    48:104
+     49:104   50:104   51:104   52:104   53:104   54:104   55:104   56:104
+     57:104   58:69    59:69    60:207   61:184   62:207   63:104   64:184
+     65:127   66:127   67:138   68:150   69:127   70:119   71:150   72:150
+     73:69    74:92    75:138   76:115   77:170   78:138   79:150   80:127
+     81:150   82:127   83:104   84:115   85:150   86:127   87:170   88:127
+     89:115   90:115   91:69    92:69    93:69    94:104   95:104   96:104
+     97:104   98:104   99:92   100:104  101:92   102:58   103:104  104:104
+    105:58   106:58   107:92   108:58   109:150  110:104  111:104  112:104
+    113:104  114:81   115:81   116:58   117:104  118:92   119:138  120:92
+    121:92   122:81   123:92   124:104  125:92   126:104  127:207  128:138
+    129:104  130:92   131:104  132:104  133:104  134:104  135:92   136:92
+    137:92   138:92   139:58   140:58   141:58   142:127  143:127  144:127
+    145:138  146:184  147:104  148:104  149:104  150:104  151:104  152:92
+    153:150  154:150  155:104  156:104  157:151  158:183  159:104  160:104
+    161:58   162:104  163:104  164:104  165:138  166:104  167:104  168:104
+    169:104  170:184  171:184  172:184  173:69   174:96   175:96   176:207
+    177:207  178:207  179:207  180:207  181:127  182:127  183:127  184:105
+    185:207  186:207  187:207  188:207  189:105  190:105  191:207  192:207
+    193:207  194:207  195:207  196:207  197:207  198:104  199:127  200:207
+    201:207  202:207  203:207  204:207  205:207  206:207  207:104  208:104
+    209:148  210:127  211:127  212:127  213:58   214:70   215:70   216:70
+    217:207  218:207  219:207  220:207  221:104  222:70   223:207  224:152
+    225:104  226:152  227:152  228:104  229:152  230:115  231:106  232:126
+    233:150  234:150  235:150  236:92   237:115  238:105  239:104  240:72
+    241:184  242:104  243:182  244:104  245:104  246:184  247:104  248:104
+    249:104  250:2    251:73   252:73   253:73   254:104  255:104
+    EndCodeSection
+EndFontInfo
+
+FontInfo CgTimesBold
+    MaxNormalCharWidth 196
+    Ascent 167
+    CodeSection 0:255
+      0:207
+      1:207    2:207    3:207    4:207
+      5:104  ! telephone character must be the same as # (35)
+      6:207
+      7:69   ! non-breaking hyphen must be the same as hyphen (45)
+      8:207
+      9:61   ! tab must be the same as space (32)
+     10:207   11:150   12:150   13:104
+     14:69   ! potential hyphen must be the same as hyphen (45)
+     15:61   ! non-breaking space must be the same as space (32)
+     16:150
+     17:150   18:150   19:119   20:104   21:104   22:207   23:150   24:150
+     25:150   26:150   27:150   28:184   29:150   30:150   31:150   32:61
+     33:69    34:96    35:104   36:104   37:184   38:169   39:69    40:69
+     41:69    42:104   43:184   44:69    45:69    46:69    47:69    48:104
+     49:104   50:104   51:104   52:104   53:104   54:104   55:104   56:104
+     57:104   58:69    59:69    60:207   61:184   62:207   63:104   64:184
+     65:150   66:138   67:150   68:150   69:138   70:127   71:161   72:161
+     73:81    74:100   75:161   76:138   77:196   78:150   79:161   80:127
+     81:161   82:150   83:115   84:138   85:150   86:150   87:207   88:150
+     89:150   90:138   91:69    92:69    93:69    94:104   95:104   96:104
+     97:104   98:115   99:92   100:115  101:92   102:73   103:104  104:115
+    105:58   106:69   107:115  108:58   109:171  110:115  111:104  112:115
+    113:115  114:92   115:81   116:69   117:115  118:104  119:150  120:104
+    121:104  122:92   123:104  124:104  125:104  126:104  127:207  128:150
+    129:115  130:92   131:104  132:104  133:104  134:104  135:92   136:92
+    137:92   138:92   139:58   140:58   141:58   142:150  143:150  144:138
+    145:150  146:215  147:104  148:104  149:104  150:115  151:115  152:104
+    153:161  154:150  155:104  156:104  157:163  158:182  159:104  160:104
+    161:58   162:104  163:115  164:115  165:150  166:104  167:104  168:104
+    169:104  170:184  171:184  172:184  173:69   174:88   175:88   176:207
+    177:207  178:207  179:207  180:207  181:150  182:150  183:150  184:105
+    185:207  186:207  187:207  188:207  189:105  190:104  191:207  192:207
+    193:207  194:207  195:207  196:207  197:207  198:104  199:150  200:207
+    201:207  202:207  203:207  204:207  205:207  206:207  207:104  208:104
+    209:148  210:137  211:137  212:137  213:58   214:80   215:80   216:80
+    217:207  218:207  219:207  220:207  221:104  222:80   223:207  224:162
+    225:115  226:162  227:162  228:104  229:162  230:115  231:116  232:126
+    233:150  234:150  235:150  236:104  237:150  238:105  239:104  240:72
+    241:184  242:104  243:183  244:104  245:104  246:184  247:104  248:104
+    249:104  250:23   251:73   252:73   253:73   254:104  255:104
+    EndCodeSection
+EndFontInfo
+
+FontInfo CgTimesBoldItalic
+    MaxNormalCharWidth 184
+    Ascent 167
+    CodeSection 0:255
+      0:207
+      1:207    2:207    3:207    4:207
+      5:104  ! telephone character must be the same as # (35)
+      6:207
+      7:69   ! non-breaking hyphen must be the same as hyphen (45)
+      8:207
+      9:61   ! tab must be the same as space (32)
+     10:207   11:150   12:150   13:104
+     14:69   ! potential hyphen must be the same as hyphen (45)
+     15:61   ! non-breaking space must be the same as space (32)
+     16:150
+     17:150   18:150   19:131   20:104   21:104   22:207   23:150   24:150
+     25:150   26:150   27:150   28:184   29:150   30:150   31:150   32:61
+     33:81    34:108   35:104   36:104   37:184   38:161   39:69    40:69
+     41:69    42:104   43:184   44:69    45:69    46:69    47:69    48:104
+     49:104   50:104   51:104   52:104   53:104   54:104   55:104   56:104
+     57:104   58:69    59:69    60:207   61:184   62:207   63:104   64:184
+     65:138   66:138   67:138   68:150   69:138   70:127   71:150   72:161
+     73:81    74:104   75:138   76:127   77:184   78:150   79:150   80:127
+     81:146   82:138   83:115   84:127   85:150   86:138   87:184   88:138
+     89:127   90:127   91:69    92:69    93:69    94:104   95:104   96:104
+     97:104   98:104   99:92   100:104  101:92   102:73   103:104  104:115
+    105:58   106:58   107:104  108:58   109:161  110:115  111:104  112:104
+    113:104  114:81   115:81   116:58   117:115  118:92   119:138  120:104
+    121:92   122:81   123:104  124:104  125:104  126:104  127:207  128:138
+    129:115  130:92   131:104  132:104  133:104  134:104  135:92   136:92
+    137:92   138:92   139:58   140:58   141:58   142:138  143:138  144:138
+    145:146  146:192  147:104  148:104  149:104  150:115  151:115  152:92
+    153:150  154:150  155:104  156:104  157:151  158:184  159:104  160:104
+    161:58   162:104  163:115  164:115  165:150  166:104  167:104  168:104
+    169:104  170:184  171:184  172:184  173:81   174:92   175:92   176:207
+    177:207  178:207  179:207  180:207  181:138  182:138  183:138  184:105
+    185:207  186:207  187:207  188:207  189:105  190:105  191:207  192:207
+    193:207  194:207  195:207  196:207  197:207  198:104  199:138  200:207
+    201:207  202:207  203:207  204:207  205:207  206:207  207:104  208:104
+    209:148  210:137  211:137  212:137  213:58   214:80   215:80   216:80
+    217:207  218:207  219:207  220:207  221:104  222:80   223:207  224:152
+    225:104  226:152  227:152  228:104  229:152  230:115  231:106  232:126
+    233:150  234:150  235:150  236:90   237:127  238:105  239:104  240:72
+    241:184  242:104  243:183  244:104  245:104  246:184  247:104  248:104
+    249:104  250:18   251:69   252:69   253:69   254:104  255:104
+    EndCodeSection
+EndFontInfo
+
+FontInfo UniversStd
+    MaxNormalCharWidth 188
+    Ascent 167
+    CodeSection 0:255
+      0:207   1:207    2:207    3:207    4:207
+      5:131  ! telephone character must be the same as # (35)
+      6:207
+      7:69   ! non-breaking hyphen must be the same as hyphen (45)
+      8:207
+      9:69   ! tab must be the same as space (32)
+     10:207   11:150   12:150   13:104
+     14:69   ! potential hyphen must be the same as hyphen (45)
+     15:69   ! non-breaking space must be the same as space (32)
+     16:150
+     17:150   18:150   19:110   20:131   21:131   22:207   23:150   24:150
+     25:150   26:150   27:150   28:207   29:150   30:150   31:150   32:69
+     33:69    34:104   35:131   36:131   37:207   38:158   39:69    40:69
+     41:69    42:131   43:207   44:69    45:69    46:69    47:69    48:131
+     49:131   50:131   51:131   52:131   53:131   54:131   55:131   56:131
+     57:131   58:69    59:69    60:207   61:207   62:207   63:108   64:207
+     65:154   66:131   67:146   68:150   69:119   70:115   71:154   72:150
+     73:58    74:115   75:138   76:111   77:188   78:150   79:158   80:123
+     81:161   82:134   83:134   84:131   85:150   86:150   87:207   88:150
+     89:142   90:127   91:69    92:69    93:69    94:131   95:104   96:131
+     97:111   98:119   99:111  100:119  101:111  102:77   103:119  104:119
+    105:50   106:50   107:111  108:50   109:181  110:119  111:119  112:119
+    113:119  114:73   115:104  116:77   117:119  118:115  119:181  120:115
+    121:115  122:100  123:92   124:104  125:92   126:131  127:207  128:146
+    129:119  130:111  131:111  132:111  133:111  134:111  135:111  136:111
+    137:111  138:111  139:50   140:50   141:50   142:154  143:154  144:119
+    145:177  146:204  147:119  148:119  149:119  150:119  151:119  152:115
+    153:158  154:150  155:122  156:131  157:160  158:207  159:131  160:111
+    161:50   162:119  163:119  164:119  165:150  166:85   167:85   168:108
+    169:104  170:207  171:207  172:207  173:69   174:115  175:115  176:207
+    177:207  178:207  179:207  180:207  181:154  182:154  183:154  184:105
+    185:207  186:207  187:207  188:207  189:129  190:129  191:207  192:207
+    193:207  194:207  195:207  196:207  197:207  198:114  199:154  200:207
+    201:207  202:207  203:207  204:207  205:207  206:207  207:128  208:121
+    209:150  210:119  211:119  212:119  213:51   214:58   215:58   216:58
+    217:207  218:207  219:207  220:207  221:105  222:58   223:207  224:158
+    225:127  226:158  227:158  228:119  229:158  230:115  231:119  232:126
+    233:150  234:150  235:150  236:118  237:141  238:129  239:129  240:72
+    241:207  242:106  243:207  244:130  245:130  246:207  247:129  248:131
+    249:129  250:25   251:81   252:81   253:81   254:104  255:104
+    EndCodeSection
+EndFontInfo
+
+FontInfo UniversItalic
+    MaxNormalCharWidth 188
+    Ascent 167
+    CodeSection 0:255
+      0:207
+      1:207    2:207    3:207    4:207
+      5:131  ! telephone character must be the same as # (35)
+      6:207
+      7:69   ! non-breaking hyphen must be the same as hyphen (45)
+      8:207
+      9:69   ! tab must be the same as space (32)
+     10:207   11:150   12:150   13:104
+     14:69   ! potential hyphen must be the same as hyphen (45)
+     15:69   ! non-breaking space must be the same as space (32)
+     16:150
+     17:150   18:150   19:114   20:131   21:131   22:207   23:150   24:150
+     25:150   26:150   27:150   28:207   29:150   30:150   31:150   32:69
+     33:69    34:104   35:131   36:131   37:207   38:158   39:69    40:69
+     41:69    42:131   43:207   44:69    45:69    46:69    47:69    48:131
+     49:131   50:131   51:131   52:131   53:131   54:131   55:131   56:131
+     57:131   58:69    59:69    60:207   61:207   62:207   63:108   64:207
+     65:154   66:131   67:146   68:150   69:119   70:115   71:154   72:150
+     73:58    74:115   75:138   76:111   77:188   78:150   79:158   80:123
+     81:161   82:134   83:134   84:131   85:150   86:150   87:207   88:150
+     89:142   90:127   91:69    92:69    93:69    94:131   95:104   96:131
+     97:111   98:119   99:111  100:119  101:111  102:77   103:119  104:119
+    105:50   106:50   107:111  108:50   109:181  110:119  111:119  112:119
+    113:119  114:73   115:104  116:77   117:119  118:115  119:181  120:115
+    121:115  122:100  123:92   124:104  125:92   126:131  127:207  128:146
+    129:119  130:111  131:111  132:111  133:111  134:111  135:111  136:111
+    137:111  138:111  139:50   140:50   141:50   142:154  143:154  144:119
+    145:177  146:204  147:119  148:119  149:119  150:119  151:119  152:115
+    153:158  154:150  155:122  156:131  157:160  158:207  159:131  160:111
+    161:50   162:119  163:119  164:119  165:150  166:85   167:85   168:108
+    169:104  170:207  171:207  172:207  173:69   174:115  175:115  176:207
+    177:207  178:207  179:207  180:207  181:154  182:154  183:154  184:105
+    185:207  186:207  187:207  188:207  189:129  190:129  191:207  192:207
+    193:207  194:207  195:207  196:207  197:207  198:111  199:154  200:207
+    201:207  202:207  203:207  204:207  205:207  206:207  207:128  208:121
+    209:150  210:119  211:119  212:119  213:51   214:58   215:58   216:58
+    217:207  218:207  219:207  220:207  221:105  222:58   223:207  224:158
+    225:127  226:158  227:158  228:119  229:158  230:115  231:119  232:126
+    233:150  234:150  235:150  236:115  237:142  238:129  239:129  240:72
+    241:207  242:106  243:207  244:130  245:130  246:207  247:129  248:131
+    249:129  250:16   251:81   252:81   253:81   254:104  255:104
+    EndCodeSection
+EndFontInfo
+
+FontInfo UniversBold
+    MaxNormalCharWidth 188
+    Ascent 167
+    CodeSection 0:255
+      0:207
+      1:207    2:207    3:207    4:207
+      5:131  ! telephone character must be the same as # (35)
+      6:207
+      7:69   ! non-breaking hyphen must be the same as hyphen (45)
+      8:207
+      9:69   ! tab must be the same as space (32)
+     10:207   11:150   12:150   13:104
+     14:69   ! potential hyphen must be the same as hyphen (45)
+     15:69   ! non-breaking space must be the same as space (32)
+     16:150
+     17:150   18:150   19:115   20:131   21:131   22:207   23:150   24:150
+     25:150   26:150   27:150   28:207   29:150   30:150   31:150   32:69
+     33:69    34:108   35:131   36:131   37:207   38:158   39:69    40:69
+     41:69    42:131   43:207   44:69    45:69    46:69    47:69    48:131
+     49:131   50:131   51:131   52:131   53:131   54:131   55:131   56:131
+     57:131   58:69    59:69    60:207   61:207   62:207   63:108   64:207
+     65:154   66:131   67:146   68:150   69:119   70:115   71:154   72:150
+     73:58    74:115   75:138   76:111   77:188   78:150   79:158   80:123
+     81:161   82:134   83:134   84:131   85:150   86:150   87:207   88:150
+     89:142   90:127   91:69    92:69    93:69    94:131   95:104   96:131
+     97:111   98:119   99:111  100:119  101:111  102:77   103:119  104:119
+    105:50   106:50   107:111  108:50   109:181  110:119  111:119  112:119
+    113:119  114:73   115:104  116:77   117:119  118:115  119:181  120:115
+    121:115  122:100  123:104  124:104  125:104  126:131  127:207  128:146
+    129:119  130:111  131:111  132:111  133:111  134:111  135:111  136:111
+    137:111  138:111  139:50   140:50   141:50   142:154  143:154  144:119
+    145:177  146:204  147:119  148:119  149:119  150:119  151:119  152:115
+    153:158  154:150  155:122  156:131  157:160  158:207  159:131  160:111
+    161:50   162:119  163:119  164:119  165:150  166:85   167:85   168:108
+    169:104  170:207  171:207  172:207  173:69   174:115  175:115  176:207
+    177:207  178:207  179:207  180:207  181:154  182:154  183:154  184:105
+    185:207  186:207  187:207  188:207  189:129  190:129  191:207  192:207
+    193:207  194:207  195:207  196:207  197:207  198:111  199:154  200:207
+    201:207  202:207  203:207  204:207  205:207  206:207  207:128  208:121
+    209:150  210:119  211:119  212:119  213:51   214:58   215:58   216:58
+    217:207  218:207  219:207  220:207  221:105  222:58   223:207  224:158
+    225:127  226:158  227:158  228:119  229:158  230:123  231:119  232:126
+    233:150  234:150  235:150  236:115  237:142  238:129  239:129  240:72
+    241:207  242:106  243:207  244:130  245:130  246:207  247:129  248:131
+    249:129  250:33   251:81   252:81   253:81   254:104  255:104
+    EndCodeSection
+EndFontInfo
+
+FontInfo UniversBoldItalic
+    MaxNormalCharWidth 188
+    Ascent 167
+    CodeSection 0:255
+      0:207
+      1:207    2:207    3:207    4:207
+      5:131  ! telephone character must be the same as # (35)
+      6:207
+      7:69   ! non-breaking hyphen must be the same as hyphen (45)
+      8:207
+      9:69   ! tab must be the same as space (32)
+     10:207   11:150   12:150   13:104
+     14:69   ! potential hyphen must be the same as hyphen (45)
+     15:69   ! non-breaking space must be the same as space (32)
+     16:150
+     17:150   18:150   19:125   20:131   21:131   22:207   23:150   24:150
+     25:150   26:150   27:150   28:207   29:150   30:150   31:150   32:69
+     33:69    34:111   35:131   36:131   37:207   38:158   39:69    40:69
+     41:69    42:131   43:207   44:69    45:69    46:69    47:69    48:131
+     49:131   50:131   51:131   52:131   53:131   54:131   55:131   56:131
+     57:131   58:69    59:69    60:207   61:207   62:207   63:108   64:207
+     65:154   66:131   67:146   68:150   69:119   70:115   71:154   72:150
+     73:58    74:115   75:138   76:111   77:188   78:150   79:158   80:123
+     81:161   82:134   83:134   84:131   85:150   86:150   87:207   88:150
+     89:142   90:127   91:69    92:69    93:69    94:131   95:104   96:131
+     97:111   98:119   99:111  100:119  101:111  102:77   103:119  104:119
+    105:50   106:50   107:111  108:50   109:181  110:119  111:119  112:119
+    113:119  114:73   115:104  116:77   117:119  118:115  119:181  120:115
+    121:115  122:100  123:104  124:104  125:104  126:131  127:207  128:146
+    129:119  130:111  131:111  132:111  133:111  134:111  135:111  136:111
+    137:111  138:111  139:50   140:50   141:50   142:154  143:154  144:119
+    145:177  146:204  147:119  148:119  149:119  150:119  151:119  152:115
+    153:158  154:150  155:122  156:131  157:160  158:207  159:131  160:111
+    161:50   162:119  163:119  164:119  165:150  166:85   167:85   168:108
+    169:104  170:207  171:207  172:207  173:69   174:115  175:115  176:207
+    177:207  178:207  179:207  180:207  181:154  182:154  183:154  184:105
+    185:207  186:207  187:207  188:207  189:129  190:129  191:207  192:207
+    193:207  194:207  195:207  196:207  197:207  198:111  199:154  200:207
+    201:207  202:207  203:207  204:207  205:207  206:207  207:128  208:121
+    209:150  210:119  211:119  212:119  213:51   214:58   215:58   216:58
+    217:207  218:207  219:207  220:207  221:105  222:58   223:207  224:158
+    225:127  226:158  227:158  228:119  229:158  230:123  231:119  232:126
+    233:150  234:150  235:150  236:115  237:142  238:129  239:129  240:72
+    241:207  242:106  243:207  244:130  245:130  246:207  247:129  248:131
+    249:129  250:37   251:81   252:81   253:81   254:104  255:104
+    EndCodeSection
+EndFontInfo
+
+TypefaceFonts Courier
+    Name "Courier" Serif
+    Translates Telephone
+    FontHeight
+	Height     200
+	Normal     Courier10
+	Bold       Courier10
+	Italic     Courier10
+	BoldItalic Courier10
+	Command    "" !<27>(s0p12h10v3T"
+    EndFontHeight
+    FontHeight
+	Height     240
+	Normal     Courier12
+	Bold       Courier12
+	Italic     Courier12
+	BoldItalic Courier12
+	Command    "" !<27>(s0p10h12v3T"
+    EndFontHeight
+EndTypefaceFonts
+
+TypefaceFonts LinePrinter
+    Name "Lineprinter"
+    Translates Telephone
+    FontHeight
+	Height     170
+	Normal     LinePrinter9
+	Bold       LinePrinter9
+	Italic     LinePrinter9
+	BoldItalic LinePrinter9
+	Command    "<27>(s0p16.67h8.5v0T"
+    EndFontHeight
+EndTypefaceFonts
+
+TypefaceFonts CgTimes
+    Name "CG Times" Proportional Serif
+    Translates Telephone
+    ScalableFontHeight 
+	HeightMin          80    ! min font height 80 twips = 4 point
+	HeightMax          1200  ! max font height 1200 twips ( = 60 point)
+	HeightDelta        20    ! delta font height 20 twips = 1 point
+	Normal             CgTimesStd
+	Bold               CgTimesBold
+	Italic             CgTimesItalic
+	BoldItalic         CgTimesBoldItalic
+	Command            "<27>(s1p%dv4101T"
+    EndScalableFontHeight
+EndTypefaceFonts
+
+TypefaceFonts Univers
+    Name "Univers" Proportional
+    Translates Telephone
+    ScalableFontHeight 
+	HeightMin          80    ! min font height 80 twips = 4 point
+	HeightMax          1200  ! max font height 1200 twips ( = 60 point)
+	HeightDelta        20    ! delta font height 20 twips = 1 point
+	Normal             UniversStd
+	Bold               UniversBold
+	Italic             UniversItalic
+	BoldItalic         UniversBoldItalic
+	Command            "<27>(s1p%dv4148T"
+    EndScalableFontHeight
+EndTypefaceFonts
+
+!ExtraInfo ExtraInfo
+!    "abcdefghijklmnopqrstuvwxyz"
+!    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+!EndExtraInfo
+
+Model HPLJ3
+    Name "HP LaserJet III" RequiresPrinterPort
+	Uid 1000
+    Flags 0
+    Resources Pcl5Resources
+    KPixelWidth    4800   ! Twips = 300 dots per inch
+    KPixelHeight   4800 
+	PortraitOffset  75 0  ! Pixels
+ 	LandscapeOffset 60 0  
+    MinMarginLeft   50    ! Pixels
+    MinMarginRight  50
+    MinMarginTop    50
+    MinMarginBottom 50
+    DisplayMode   Gray2
+    TypefaceFontss
+        Courier
+        LinePrinter	NotInLandscape
+        CgTimes	    NotInPortrait
+        Univers
+    EndTypefaceFontss
+EndModel
+
+Model HPDJ340
+    Name "HP DeskJet 340" RequiresPrinterPort
+	Uid 1100
+    Flags 3	   !  1 = MoveDownOnly, 2 = LanscapeBandOrientationVertical
+    Resources Pcl5Resources
+    KPixelWidth    4800   ! Twips = 300 dots per inch
+    KPixelHeight   4800 
+	PortraitOffset  75 0  ! Pixels
+ 	LandscapeOffset 60 0  
+    MinMarginLeft    50    ! Pixels
+    MinMarginRight   50
+    MinMarginTop     75
+    MinMarginBottom 200
+    DisplayMode   Gray2
+    TypefaceFontss
+	    Courier
+	    LinePrinter
+		CgTimes
+		Univers
+    EndTypefaceFontss
+EndModel
+
+Model HPDJ660C
+    Name "HP DeskJet 660C" RequiresPrinterPort
+	Uid 1200
+    Flags 3	   !  1 = MoveDownOnly, 2 = LanscapeBandOrientationVertical
+    Resources Pcl5Resources
+    KPixelWidth    4800   ! Twips = 300 dots per inch
+    KPixelHeight   4800 
+	PortraitOffset   75 0  ! Pixels
+ 	LandscapeOffset  60 0  
+    MinMarginLeft    50    ! Pixels
+    MinMarginRight   50
+    MinMarginTop     75
+    MinMarginBottom 175
+    DisplayMode   Gray2
+    TypefaceFontss
+	    Courier
+	    LinePrinter
+		CgTimes
+		Univers
+    EndTypefaceFontss
+!	SpareRecord ExtraInfo
+EndModel
+
+PdrStoreFile
+    PDLName             "test"
+    PDLUid 1
+    Models
+        HPLJ3
+		HPDJ340
+        HPDJ660C
+    EndModels
+EndPdrStoreFile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/platmacros.mmp	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,32 @@
+/*
+* 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: 
+*
+*/
+
+
+TARGET			test_platmacros
+TARGETTYPE		EXE
+SOURCEPATH		./src
+SOURCE			platmacros.cpp
+
+// TOOLS2_WINDOWS activated for cross compilation on Linux
+#ifdef TOOLS2_LINUX
+#warning TOOLS2_LINUX
+#endif
+
+#ifdef TOOLS2_WINDOWS
+#warning TOOLS2_WINDOWS
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/src/LEXICAL.CPP	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,311 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Header LEXICAL.CPP
+*
+*/
+
+
+#include "LEXICAL.H"
+
+Lexical::Lexical()
+ :	iType(ELexNL), iNumber(0)
+	{
+	iText[0] = '\0';
+	}
+
+Lexical::Lexical(const Lexical& aLex)
+	{
+	iType = aLex.iType;
+	iNumber = aLex.iNumber;
+	strcpy(iText, aLex.iText);
+	}
+
+Lexical& Lexical::operator = (const Lexical& aLex)
+	{
+	iType = aLex.iType;
+	iNumber = aLex.iNumber;
+	strcpy(iText, aLex.iText);
+	return *this;
+	}
+
+int Lexical::CovertStringToHex()
+	{
+	char* curPtr = iText; // Position of current lexical in line
+	int hexDigit;
+	int number = 0;
+
+	while (HexDigit(*curPtr, hexDigit))
+		{
+		number = (16 * number) + hexDigit;
+		curPtr++;
+		}
+	return number;
+	}
+
+int Lexical::HexDigit(char aDigit, int& decimalEquivalent)
+	{
+	boolean validDigit = efalse;
+	if ((aDigit >= '0') && (aDigit <= '9'))
+		{
+		decimalEquivalent = (aDigit - '0');
+		validDigit = etrue;
+		}
+	else if ((aDigit >= 'a') && (aDigit <= 'f'))
+		{
+		decimalEquivalent = 10 + (aDigit - 'a');
+		validDigit = etrue;
+		}
+	else if ((aDigit >= 'A') && (aDigit <= 'F'))
+		{
+		decimalEquivalent = 10 + (aDigit - 'A');
+		validDigit = etrue;
+		}
+	return validDigit;
+	}
+
+ostream& operator << (ostream& out, const Lexical& aLex)
+	{
+	switch (aLex.iType)
+		{
+		case ELexEOF:
+			{
+			out << "EOF";
+			break;
+			}
+		case ELexNL:
+			{
+			out << "NL";
+			break;
+			}
+		case ELexNumber:
+			{
+			out << aLex.iNumber;
+			break;
+			}
+		case ELexOperator:
+			{
+			out << aLex.iText[0];
+			break;
+			}
+		default:
+			{
+			out << aLex.iText;
+			}
+		}	 
+	return out;
+	}
+
+LexAnal::LexAnal(const char* aFilename)
+ :	iFilename(aFilename)
+	{
+	iFin.open(aFilename);
+	iLex.iType = ELexNL;
+	iLineNo = 0;
+	}
+
+Lexical LexAnal::Read() // read next lexical into iLex
+	{
+	if (iLex.iType == ELexNL)
+		{
+		do
+			{
+			GetNextLex();
+			}
+		while (iLex.iType == ELexNL);
+		}
+	else
+		GetNextLex();
+	return iLex;
+	}
+
+Lexical LexAnal::ReadNextLine() // read first lex on next line
+	{
+	GetNextLine();
+	return iLex;
+	}
+
+void LexAnal::Report()
+	{
+	cerr << iFilename.Text() << '(' << iLineNo << "): \n";
+	cerr << iLine << '\n';
+	for	(char* p = iLine; p < iLexPtr; p++)
+		cerr << ' ';
+	cerr << "^\n";
+	}
+
+LexAnal::~LexAnal()
+	{
+	iFin.close();
+	}
+
+void LexAnal::GetNextLex()
+	{
+	char ch;
+	if (iLex.iType == ELexNL)
+		{
+		iFin.getline(iLine, MaxLineLen);
+		// Remove any CR character that appear at the end when
+		// reading a dos file on unix.
+		PurgeLastCR(iLine);
+		iCurPtr = iLine;
+		iLineNo++;
+		}
+
+	while ((*iCurPtr == ' ') || (*iCurPtr == '\t'))
+		iCurPtr++;
+	ch = *iCurPtr;
+	iLexPtr = iCurPtr;
+
+	if ((ch == '\0') && (iFin.eof()))	// finds lexical type
+		iLex = ReadEOF();
+	else if ((ch == '\0') || (ch == '!'))	// ! is a comment
+		iLex = ReadNewLine();
+	else if ((ch == '-') || ((ch >= '0') && (ch <= '9')))
+		iLex = ReadNumber();
+	else if (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) || (ch == '_'))
+		iLex = ReadIdent();
+	else if	(ch == '"')
+		iLex = ReadString();
+	else
+		iLex = ReadOperator();	
+	}
+
+void LexAnal::GetNextLine()
+	{
+	iFin.getline(iLine, MaxLineLen);
+	// Remove any CR character that appear at the end when
+	// reading a dos file on unix.
+	PurgeLastCR(iLine);
+	iCurPtr = iLine;
+	iLineNo++;
+
+	char ch;
+	while ((*iCurPtr == ' ') || (*iCurPtr == '\t'))
+		iCurPtr++;
+	ch = *iCurPtr;
+	iLexPtr = iCurPtr;
+
+	if ((ch == '\0') && (iFin.eof()))	// finds lexical type
+		iLex = ReadEOF();
+	else if ((ch == '\0') || (ch == '!'))
+		iLex = ReadNewLine();
+	else if ((ch == '-') || ((ch >= '0') && (ch <= '9')))
+		iLex=ReadNumber();
+	else if (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) || (ch == '_'))
+		iLex = ReadIdent();
+	else if	(ch == '"')
+		iLex = ReadString();
+	else
+		iLex = ReadOperator();	
+	}
+
+void LexAnal::PurgeLastCR(char *aLine)
+	{
+	int len = strlen(aLine) - 1;
+	if (len >= 0 && aLine[len] == '\r')
+		{
+		aLine[len] = '\0';
+		}
+	}
+
+Lexical LexAnal::ReadEOF()
+	{
+	Lexical lex;
+	lex.iType = ELexEOF;
+	return lex;
+	}
+
+Lexical LexAnal::ReadNewLine()
+	{
+	Lexical lex;
+	lex.iType = ELexNL;
+	while (*iCurPtr != '\0')
+		iCurPtr++;
+	return lex;
+	}
+
+Lexical LexAnal::ReadNumber()
+	{
+	Lexical lex;
+	char ch;
+	boolean negative = efalse;
+	lex.iType = ELexNumber;
+	if (*iCurPtr == '-')
+		{
+		negative = etrue;
+		iCurPtr++;
+		}
+	ch = *iCurPtr;
+	while ((ch >= '0') && (ch <= '9'))
+		{
+		if (negative)
+			lex.iNumber = (10 * lex.iNumber) - (*iCurPtr - '0');
+		else
+			lex.iNumber=(10 * lex.iNumber) + (*iCurPtr - '0');
+		iCurPtr++;
+		ch = *iCurPtr;
+		}
+	return lex;
+	}
+
+
+Lexical LexAnal::ReadIdent()
+	{
+	Lexical lex;
+	char ch;
+	lex.iType = ELexIdent;
+	do
+		{
+		iCurPtr++;
+		ch = *iCurPtr;
+		}
+	while (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) || (ch == '_') || ((ch >= '0') && (ch <= '9')));
+	strncpy(lex.iText, iLexPtr, iCurPtr - iLexPtr);
+	lex.iText[iCurPtr - iLexPtr] = '\0';
+	return lex;
+	}
+
+Lexical LexAnal::ReadString()
+	{
+	Lexical lex;
+	char ch;
+	lex.iType = ELexString;
+	iCurPtr++;
+	ch = *iCurPtr;
+	while ((ch != '"') && (*iCurPtr != '\0'))
+		{
+		iCurPtr++;
+		ch = *iCurPtr;
+		}
+	strncpy(lex.iText, iLexPtr + 1, iCurPtr - (iLexPtr + 1));
+	lex.iText[iCurPtr - (iLexPtr + 1)] = '\0';
+	if (ch == '"')
+		iCurPtr++;	// finds position after last double quotes 
+	else
+		{
+		cerr << "Warning: missing quotes\n";
+		Report();
+		}
+	return lex;
+	}
+
+Lexical LexAnal::ReadOperator()
+	{
+	Lexical lex;
+	lex.iType = ELexOperator;
+	lex.iText[0] = *iCurPtr;
+	iCurPtr++;
+	return lex;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/src/PDRREADR.CPP	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,1009 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Header PDRREADR.CPP
+*
+*/
+
+
+#include "PDRREADR.H"
+
+const int NumResources=34;
+
+String IdentResource[NumResources] =
+	{
+	"Reset",
+	"SetPageSize",
+	"PreAmble",
+	"PostAmble",
+	"SetTextColor",	//  !!
+	"BoldOn",
+	"BoldOff",
+	"ItalicOn",
+	"ItalicOff",
+	"UnderlineOn",
+	"UnderlineOff",
+	"StrikethroughOn",
+	"StrikethroughOff",
+	"NewPage",
+	"Portrait",
+	"Landscape",
+	"SetXPos",
+	"SetYPos",
+	"IncrementXPos",
+	"IncrementYPos",
+	"CarriageReturn",
+	"SetGraphicsColor",	//  !!
+	"BitmapStart",
+	"BitmapEnd",
+	"ScanLine",
+	"EndScanLine",	//  !!
+	"Resource1",
+	"Resource2",
+	"Resource3",
+	"Resource4",
+	"Resource5",
+	"Resource6",
+	"Resource7",
+	"Resource8"
+	};
+
+const int NumDisplayModeValues = 11;
+
+String IdentDisplayModeValue[NumDisplayModeValues] =
+	{
+	"None",
+	"Gray2",
+	"Gray4",
+	"Gray16",
+	"Gray256",
+	"Color16",
+	"Color256",
+	"Color64K",
+	"Color16M",
+	"Rgb",
+	"Color4K"
+	};
+
+EXPORT_C PdrReader::PdrReader()
+ :	Reader(),
+	iPdrModelStore(),
+	iPdrStoreFile(NULL),
+	iResources(NULL),
+	iTranslates(NULL),
+	iCodeSection(NULL),
+	iFontInfo(NULL),
+	iIndex(Normal),
+	iFontHeight(NULL),
+	iTypefaceFonts(NULL),
+	iModel(NULL)
+	{
+	}
+
+EXPORT_C boolean PdrReader::Read(const String& aFilename)
+	{
+	boolean state = Open(aFilename);
+
+	while (!_EOF() && state)
+		{
+		if (IdentComp(IdentResources))
+			state = ReadResources();
+		else if (IdentComp(IdentTranslates))
+			state = ReadTranslates();
+		else if (IdentComp(IdentFontInfo))
+			state = ReadFontInfo();
+		else if (IdentComp(IdentTypefaceFonts))
+			state = ReadTypefaceFonts();
+//		else if (IdentComp(IdentExtraInfo))
+//			state = ReadExtraInfo();
+		else if (IdentComp(IdentModel))
+			state = ReadModel();
+		else if (IdentComp(IdentPdrStoreFile))
+			state = ReadPdrStoreFile();
+		else
+			{
+			Error("Resource identifier expected");
+			state = efalse;
+			}
+		if (state)
+			state = NewLine();
+		}
+	return state;
+	}
+
+EXPORT_C PdrReader::~PdrReader()
+	{
+	}
+
+boolean PdrReader::ReadResources()
+	{
+	boolean state = etrue;
+	iResources = PdrResources::New();
+	state = IdentCopy(iResources->iLabel);
+	if (state)
+		state = NewLine();
+	while (!IdentComp(IdentEndResources) && !_EOF() && state)
+		{
+   	    int i; // DEF102183: Graphics tools fail to build using MS VC8.
+		for (i = 0; (i < NumResources) && !IdentComp(IdentResource[i]); i++)
+			{	//	Tries to match resources identifier
+			}
+		if (i < NumResources)
+			{
+			PdrResource *resource = PdrResource::New();
+			state = Command(resource->iString);
+			resource->iId = i;
+			if (state)
+				{
+				iResources->AddResource(resource);
+				state = NewLine();
+				}
+			else
+				resource->Delete();
+			}
+		else
+			{
+			state = efalse;
+			Error("Resources identifier expected");
+			}
+		}
+	if (state)
+		{
+		iPdrModelStore.AddResources(iResources);
+		cout << "Resources read\n";
+		}
+	else 
+		iResources->Delete();
+	return state;
+	}
+
+boolean PdrReader::ReadTranslates()
+	{
+	int num;
+	boolean state = etrue;
+	iTranslates = PdrTranslates::New();
+	state = IdentCopy(iTranslates->iLabel);
+	if (state)
+		state = NewLine();
+	while (!IdentComp(IdentEndTranslates) && !_EOF() && state)
+		{
+		if (iLex->iType == ELexNumber)
+			{
+			PdrTranslation *translation = PdrTranslation::New();
+			Number(num);
+			translation->iFrom = uint16(num);
+			char ch;
+			state = Operator(ch);
+			if (state)
+				{
+				state = (ch == ':');
+				if (state)
+					{
+					if (iLex->iType == ELexNumber)
+						{
+						state = Number(num);
+						translation->iTo += char(num);
+						}
+					else 
+						{
+						state = Command(translation->iTo);
+						}
+					if (state)
+						state = NewLine();
+					}
+				else
+					{
+					Error("Operator ':' expected");
+					}
+				}
+			if (state)
+				iTranslates->AddTranslation(translation);
+			else
+				translation->Delete();
+			}
+		}
+	if (state)
+		{
+		iPdrModelStore.AddTranslates(iTranslates);
+		cout << "Translates read\n";
+		}
+	else 
+		iTranslates->Delete();
+	return state;
+	}
+
+boolean PdrReader::ReadCodeSection(int aCode)
+	{
+	boolean state = etrue;
+	int code;
+	int num;
+	iCodeSection = WidthsCodeSection::New();
+	char ch = 0;
+	state = Number(num);
+	if ((num<aCode) && state)
+		{
+		Error("CodeSection out of sequence");
+		state = efalse;
+		}
+	if (state)
+		{
+		iCodeSection->iStart = uint16(num);
+		state = Operator(ch);
+		if (state)
+			state = (ch == ':');
+		if (state)
+			{
+			state = Number(num);
+			iCodeSection->iEnd = uint16(num);
+			state = NewLine();
+			}
+		else
+			{
+			state = efalse;
+			Error("Operator ':' expected");
+			}
+		}
+	else
+		state = efalse;
+	while (!IdentComp(IdentEndCodeSection) && !_EOF() && state)
+		{
+		if (iLex->iType != ELexNL)
+			{
+			state = Number(code);
+			if ((code != iCodeSection->iStart + iCodeSection->NumWidths()) && state)
+				{
+				state = efalse;
+				Error("Width out of sequence");
+				}
+			if (state)
+				state = Operator(ch);
+			if (state)
+				state = (ch == ':');
+			if (state)
+				{
+				Width *width = Width::New();
+				if (Number(num))
+					{
+					width->iWidthInPixels = (uint16) num;
+					iCodeSection->AddWidth(width);
+					}
+				else
+					{
+					state = efalse;
+					width->Delete();
+					}
+				}
+			}
+		else
+			state = NewLine();
+		}
+	if (state)
+		{
+		num = ((iCodeSection->iEnd + 1) - iCodeSection->iStart);
+		if ((num != iCodeSection->NumWidths()) && (iCodeSection->NumWidths() != 1))
+			{
+			Error("Wrong number of widths in codesection");
+			state = efalse;
+			}
+		}
+	if (state)
+		{
+		iFontInfo->AddCodeSection(iCodeSection);
+//		cout << "Codesection read\n";
+		}
+	else 
+		iCodeSection->Delete();
+	return state;
+	}
+
+boolean PdrReader::ReadFontInfo()
+	{
+	boolean state = etrue;
+	iFontInfo = FontInfo::New();
+	int num;
+	state = IdentCopy(iFontInfo->iLabel);
+	if (state)
+		state = NewLine();
+	while (!IdentComp(IdentEndFontInfo) && !_EOF() && state)
+		{
+		if (iLex->iType == ELexIdent)
+			{
+			if (IdentComp(IdentCodeSection))
+				{
+				int code = 0,size = iFontInfo->NumCodeSections();
+				if (size)
+					code = iFontInfo->CodeSectionList(size - 1)->iEnd + 1;
+				state = ReadCodeSection(code);
+				}
+			else if (IdentComp(IdentAscent))
+				{
+				if (Number(num))
+					iFontInfo->iAscentInPixels = uint16(num);
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentMaxNormalCharWidth))
+				{
+				state = Number(num);
+				if (state)
+					iFontInfo->iMaxNormalCharWidthInPixels = uint16(num);
+				}
+			else
+				{
+				Error("Unrecognised fontinfo identifier");
+				state = efalse;
+				}
+			}
+		else
+			{
+			Error("Fontinfo identifier expected");
+			state = efalse;
+			}
+		if (state)
+			state = NewLine();
+		}	  
+	if (state)
+		{
+		iFontInfo->iMaxCharWidthInPixels = 0;
+		for (int i = 0; i < iFontInfo->NumCodeSections(); i++)
+			{
+			WidthsCodeSection* codesection = iFontInfo->CodeSectionList(i);
+			for (int j = 0; j < codesection->NumWidths(); j++)
+				{
+				int width = codesection->WidthList(j)->iWidthInPixels;
+				if (width > iFontInfo->iMaxCharWidthInPixels)
+					iFontInfo->iMaxCharWidthInPixels = (uint16) width;
+				}
+			}
+		}
+	if (state)
+		{
+		iPdrModelStore.AddFontInfo(iFontInfo);
+		cout << "Fontinfo read\n";
+		}
+	else
+		iFontInfo->Delete();
+	return state;
+	}
+
+boolean PdrReader::ReadStyle()
+	{
+	boolean state = etrue;
+	Record *fontinfo;
+	PdrStyle *style;
+	String label;
+	if (!iTypefaceFonts->iIsScalable)
+		style = &iFontHeight->iStyle[iIndex];
+	else
+		style = &iTypefaceFonts->iScalableFontHeight.iStyle[iIndex];
+	style->iIsAvailable = etrue;
+	state = IdentCopy(label);
+	if (state)
+		{
+		fontinfo = iPdrModelStore.FindFontInfo(label);
+		if (fontinfo)
+			style->iFontInfo = fontinfo;
+		else
+			{
+			Error("Fontinfo not found");
+			state = efalse;
+			}
+		}
+	return state;
+	}
+
+boolean PdrReader::ReadFontHeight()
+	{
+	boolean state = etrue;
+	int num;
+	if (iTypefaceFonts->iIsScalable == etrue)
+		{
+		state = efalse;
+		Error("Scalablefontheight already defined");
+		}
+	else
+		iFontHeight = PdrFontHeight::New();
+	if (state)
+		state = NewLine();
+
+	while (!IdentComp(IdentEndFontHeight) && !_EOF() && state)
+		{
+		if (iLex->iType == ELexIdent)
+			{
+			if (IdentComp(IdentHeight))
+				{
+				if (Number(num))
+					iFontHeight->iHeightInTwips = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentWidthScale))
+				{
+				if (Number(num))
+					iFontHeight->iWidthScale = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentNormal))
+				{
+				iIndex = Normal;
+				state = ReadStyle();
+				}
+			else if (IdentComp(IdentBold))
+				{
+				iIndex = Bold;
+				state = ReadStyle();
+				}
+			else if (IdentComp(IdentItalic))
+				{
+				iIndex = Italic;
+				state = ReadStyle();
+				}
+			else if (IdentComp(IdentBoldItalic))
+				{
+				iIndex = BoldItalic;
+				state = ReadStyle();
+				}
+			else if (IdentComp(IdentCommand))
+				{
+				state = Command(iFontHeight->iCommandString);
+				}
+			else
+				{
+				Error("Unrecognised fontheight identifier");
+				state = efalse;
+				}
+			}
+		else
+			{
+			Error("Fontheight identifier expected");
+			state = efalse;
+			}
+		if (state)
+			state = NewLine();
+		}
+	if (state)
+		{
+		iTypefaceFonts->AddFontHeight(iFontHeight);
+		cout << "Fontheight read\n";
+		}
+	else
+		iFontHeight->Delete();
+	return state;
+	}
+
+boolean PdrReader::ReadScalableFontHeight()
+	{
+	boolean state = etrue;
+	int num;
+	if (iTypefaceFonts->NumFontHeights())
+		{
+		state = efalse;
+		Error("Non-scalable fontheights already defined");
+		}
+	else if (iTypefaceFonts->iIsScalable == etrue)
+		{
+		state = efalse;
+		Error("Scalablefontheight already defined");
+		}
+	iTypefaceFonts->iIsScalable=etrue;
+	if (state)
+		state = NewLine();
+
+	while (!IdentComp(IdentEndScalableFontHeight) && !_EOF() && state)
+		{
+		if (iLex->iType == ELexIdent)
+			{
+			if (IdentComp(IdentHeightMin))
+				{
+				if (Number(num))
+					iTypefaceFonts->iScalableFontHeight.iHeightMinInTwips = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentHeightMax))
+				{
+				if (Number(num))
+					iTypefaceFonts->iScalableFontHeight.iHeightMaxInTwips = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentHeightDelta))
+				{
+				if (Number(num))
+					iTypefaceFonts->iScalableFontHeight.iHeightDeltaInTwips = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentNormal))
+				{
+				iIndex = Normal;
+				state = ReadStyle();
+				}
+			else if (IdentComp(IdentBold))
+				{
+				iIndex = Bold;
+				state = ReadStyle();
+				}
+			else if (IdentComp(IdentItalic))
+				{
+				iIndex = Italic;
+				state = ReadStyle();
+				}
+			else if (IdentComp(IdentBoldItalic))
+				{
+				iIndex = BoldItalic;
+				state = ReadStyle();
+				}
+			else if (IdentComp(IdentCommand))
+				{
+				state = Command(iTypefaceFonts->iScalableFontHeight.iCommandString);
+				}
+			else
+				{
+				Error("Unrecognised scalablefontheight identifier");
+				state = efalse;
+				}
+			}
+		else
+			{
+			Error("Scalablefontheight identifier expected");
+			state = efalse;
+			}
+		if (state)
+			state = NewLine();
+		}	  
+	if (state)
+		{
+		cout << "Scalablefontheight read\n";
+		}
+	else
+		{
+		if (!iTypefaceFonts->iIsScalable)
+			iFontHeight->Delete();
+		}
+	return state;
+	}
+
+boolean PdrReader::ReadTypefaceFonts()
+	{
+	boolean state = etrue;
+	Record* translates;
+	String label;
+	iTypefaceFonts = TypefaceFonts::New();
+	state = IdentCopy(iTypefaceFonts->iLabel);
+	if (state)
+		state = NewLine();
+	while (!IdentComp(IdentEndTypefaceFonts) && !_EOF() && state)
+		{
+		if (iLex->iType == ELexIdent)
+			{
+			if (IdentComp(IdentTypefaceName))
+				{
+				if (StringCopy(iTypefaceFonts->iTypeface.iName))
+					while (iLex->iType != ELexNL)
+					{	if (IdentComp(IdentProportional))
+							iTypefaceFonts->iTypeface.iFlags = boolean(iTypefaceFonts->iTypeface.iFlags | Proportional);
+						else if (IdentComp(IdentSerif))
+							iTypefaceFonts->iTypeface.iFlags = boolean(iTypefaceFonts->iTypeface.iFlags | Serif);
+						else if (IdentComp(IdentSymbol))
+							iTypefaceFonts->iTypeface.iFlags = boolean(iTypefaceFonts->iTypeface.iFlags | Symbol);
+						else
+							{ 
+							Error("Typefacefonts identifier or newline expected");
+							state = efalse;
+							}
+					}
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentTypefaceTranslates))
+				{
+				state = IdentCopy(label);
+				if (state)
+					{
+					translates = iPdrModelStore.FindTranslates(label);
+					if (translates)
+						iTypefaceFonts->iTranslates = translates;
+					else
+						{
+						Error("Translates not found");
+						state = efalse;
+						}
+					}
+				}
+			else if (IdentComp(IdentFontHeight))
+				{
+				state = ReadFontHeight();
+				}
+			else if (IdentComp(IdentScalableFontHeight))
+				{
+				state = ReadScalableFontHeight();
+				}
+			else
+				{
+				Error("Unrecognised typefacefonts identifier");
+				state = efalse;
+				}
+			}
+		else
+			{
+			Error("Typefacefonts identifier expected");
+			state = efalse;
+			}
+		if (state)
+			state = NewLine();
+		}	  
+	if (state)
+		{
+		iPdrModelStore.AddTypefaceFonts(iTypefaceFonts);
+		cout << "Typefacefonts read\n";
+		}
+	else
+		iTypefaceFonts->Delete();
+	return state;
+	}
+
+boolean PdrReader::ReadModel()
+	{
+	boolean state = etrue;
+	int num;
+	iModel = PrinterModelHeader::New();
+	Record* resources;
+//	Record* extrainfo;
+	String label;
+	state = IdentCopy(iModel->iLabel);
+	if (state)
+		state = NewLine();
+	while (!IdentComp(IdentEndModel) && !_EOF() && state)
+		{
+		if (iLex->iType == ELexIdent)
+			{
+			if	(IdentComp(IdentModelName))
+				{
+				if (StringCopy(iModel->iEntry.iName))
+					while (iLex->iType != ELexNL)
+						{
+						if (IdentComp(IdentRequiresPrinterPort))
+							iModel->iEntry.iRequiresPrinterPort = etrue;
+						else
+							{
+							Error("Model identifier or newline expected");
+							state = efalse;
+							}
+						}
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentModelUid))
+				state = Number(iModel->iEntry.iUid);
+			else if (IdentComp(IdentModelFlags))
+				{
+				state = Number(num);
+				iModel->iInfo.iFlags = num;
+				}
+			else if (IdentComp(IdentModelResources))
+				{
+				state = IdentCopy(label);
+				if (state)
+					{
+					resources = iPdrModelStore.FindResources(label);
+					if (resources)
+						iModel->iInfo.iResources = resources;
+					else
+						{
+						Error("Resources not found");
+						state = efalse;
+						}
+					}
+				}
+/*			else if (IdentComp(IdentSpareRecord))
+				{
+				state = IdentCopy(label);
+				if (state)
+					{
+					extrainfo = iPdrModelStore.FindExtraInfo(label);
+					if (extrainfo)
+						iModel->iInfo.iSpareRecord = extrainfo;
+					else
+						{
+						Error("Spare record not found");
+						state = efalse;
+						}
+					}
+				}
+*/
+			else if (IdentComp(IdentKPixelWidth))
+				{
+				if (Number(num))
+					iModel->iInfo.iKPixelWidthInTwips = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentKPixelHeight))
+				{
+				if (Number(num))
+					iModel->iInfo.iKPixelHeightInTwips = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentPortraitOffset))
+				{
+				if (Number(num))
+					{
+					iModel->iInfo.iPortraitOffsetInPixels.iX = num;
+					if (Number(num))
+						iModel->iInfo.iPortraitOffsetInPixels.iY = num;
+					else
+						state = efalse;
+					}
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentLandscapeOffset))
+				{
+				if (Number(num))
+					{
+					iModel->iInfo.iLandscapeOffsetInPixels.iX = num;
+					if (Number(num))
+						iModel->iInfo.iLandscapeOffsetInPixels.iY = num;
+					else
+						state = efalse;
+					}
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentMinMarginLeft))
+				{
+				if (Number(num))
+					iModel->iInfo.iMinMarginsInPixels.iLeft = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentMinMarginRight))
+				{
+				if (Number(num))
+					iModel->iInfo.iMinMarginsInPixels.iRight = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentMinMarginTop))
+				{
+				if (Number(num))
+					iModel->iInfo.iMinMarginsInPixels.iTop = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentMinMarginBottom))
+				{
+				if (Number(num))
+					iModel->iInfo.iMinMarginsInPixels.iBottom = num;
+				else
+					state = efalse;
+				}
+			else if (IdentComp(IdentDisplayMode))
+				{
+        	    int i; // DEF102183: Graphics tools fail to build using MS VC8.
+				for (i = 0; (i < NumDisplayModeValues) && !IdentComp(IdentDisplayModeValue[i]); i++)
+					{	// Tries to match display mode identifier
+					}
+				if (i < NumDisplayModeValues)
+					{
+					iModel->iInfo.iDisplayMode = i;
+					}
+				else
+					{
+					state = efalse;
+					Error("Display mode identifier expected");
+					}
+				}
+			else if (IdentComp(IdentTypefaceFontss))
+				{
+				state = NewLine();
+				while (!IdentComp(IdentEndTypefaceFontss) && !_EOF() && state)
+					{
+					TypefaceFontsEntry* typefacefontsentry = NULL;
+					if (iLex->iType == ELexIdent)
+						{
+						state = IdentCopy(label);
+						Record* typefacefonts = iPdrModelStore.FindTypefaceFonts(label);
+						if (typefacefonts)
+							{
+							typefacefontsentry = TypefaceFontsEntry::New(typefacefonts);
+							state = etrue;
+							}
+						else
+							{
+							Error("Typefacefonts not found");
+							state = efalse;
+							}
+						}
+					if (state)
+						{
+						while ((iLex->iType != ELexNL) && !_EOF() && state)
+							{
+							if (IdentComp(IdentNotInPortrait))
+								{
+								typefacefontsentry->iNotInPortrait = etrue;
+								}
+							else if (IdentComp(IdentNotInLandscape))
+								{
+								typefacefontsentry->iNotInLandscape = etrue;
+								}
+							else
+								{
+								Error("Typefacefontsentry identifier or newline expected");
+								state = efalse;
+								}
+							}
+						if (state)
+							iModel->iInfo.AddTypefaceFontsEntry(typefacefontsentry);
+						else
+							typefacefontsentry->Delete();
+						}
+					if (state)
+						state = NewLine();
+					}
+				}
+			else
+				{
+				Error("unrecognised model identifier");
+				state = efalse;
+				}
+			}
+		else
+			{
+			Error("Model identifier expected");
+			state = efalse;
+			}
+		if (state)
+			state = NewLine();
+		}
+	if (state)
+		{
+		iPdrModelStore.AddModel(iModel);
+		cout << "Model read\n";
+		}
+	else
+		iModel->Delete();
+	return state;
+	}
+
+boolean PdrReader::ReadPdrStoreFile()
+	{
+	boolean state = etrue;
+	if (iPdrStoreFile)
+		{
+		state = efalse;
+		Error("Pdrstorefile already read");
+		}
+	else
+		{
+		iPdrStoreFile = PdrStoreFile::New();
+		String label;
+		Record* model;
+		state = NewLine();
+		while (!IdentComp(IdentEndPdrStoreFile) && !_EOF() && state)
+			{
+			if (IdentComp(IdentPDLName))
+				{
+				state = StringCopy(iPdrStoreFile->iPDLName);
+				}
+			else if (IdentComp(IdentPDLUid))
+				{
+				state = Number(iPdrStoreFile->iPDLUid);
+				}
+			else if (IdentComp(IdentModels))
+				{
+				state = NewLine();
+				while (!IdentComp(IdentEndModels) && !_EOF() && state)
+					{
+					state = IdentCopy(label);
+					if (state)
+						{
+						model = iPdrModelStore.FindModel(label);
+						if (model)
+							{
+							iPdrStoreFile->AddModel((PrinterModelHeader*)model);
+							}
+						else
+							{
+							Error("model not found");
+							state = efalse;
+							}
+						}
+					if (state)
+						state = NewLine();
+					}
+				}
+			else
+				{
+				Error("Pdrstorefile identifier expected");
+				state = efalse;
+				}
+			if (state)
+				state = NewLine();
+			}
+		if (state)
+			{
+			iPdrModelStore.AddPdrStoreFile(iPdrStoreFile);
+			cout << "Pdrstorefile read\n";
+			}	
+		else
+			iPdrStoreFile->Delete();
+		}
+	return state;
+	}
+
+EXPORT_C boolean PdrReader::Store(const String& aFilename)
+	{
+	boolean state = etrue;
+	if (!iPdrStoreFile)
+		{
+		state = efalse;
+		Error("No pdrstore file record");
+		}
+	else
+		state = iPdrModelStore.Store(aFilename);
+	return state;
+	}
+
+boolean PdrReader::Command(String& aCommand)
+	{
+	boolean state = etrue;
+	String string;
+	state = StringCopy(string);
+	int length = string.Length();
+	for (int i = 0; i < length; i++)
+		{
+		char ch = string[i];
+		if (ch == '<')	// Read control character
+			{
+			ch = 0;
+			for (i = i + 1; (i < length) && (string[i] != '>'); i++)
+				ch = char((ch * 10) + (string[i] - '0'));
+			}
+		aCommand += ch;
+		}
+	return state;
+	}
+/*
+boolean PdrReader::ReadExtraInfo()
+	{
+	boolean state = etrue;
+	String label;
+	PdrExtraInfo* extrainfo = new PdrExtraInfo();
+	state = IdentCopy(extrainfo->iLabel);
+	if (state)
+		state = NewLine();
+	while (!IdentComp(IdentEndExtraInfo) && !_EOF() && state)
+		{
+		String* string = new String;
+		state = Command(*string);
+		if (state)
+			extrainfo->iInfo.Add(string);
+		else
+			delete string;
+		state = NewLine();
+		}
+	if (state)
+		{
+		iPdrModelStore.AddExtraInfo(extrainfo);
+		cout << "Extra info read\n";
+		}
+	else
+		delete extrainfo;
+	return state;
+	}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/src/PDRRECRD.CPP	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,785 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Header PDRRECRD.CPP
+*
+*/
+
+
+#include "PDRRECRD.H"
+
+EXPORT_C PdrResource* PdrResource::New()
+/** Creates a new instance of this class.
+
+@return Reference to a new object. */
+	{
+	return new PdrResource();
+	}
+
+EXPORT_C void PdrResource::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void PdrResource::Externalize(ostream& out)
+	{
+	uint8 id = (uint8) iId;
+	out.write((char*) &id, sizeof(id));
+	iString.Externalize(out);
+	}
+
+EXPORT_C PdrResources* PdrResources::New()
+/** Creates a new instance of this class.
+
+@return Reference to a new object. */
+	{
+	return new PdrResources();
+	}
+
+EXPORT_C void PdrResources::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void PdrResources::Externalize(ostream& out)
+	{
+	iStreamId = out.tellp();
+	iPdrResourceList.Externalize(out);
+	}
+
+EXPORT_C void PdrResources::AddResource(PdrResource* aResource)
+/** Adds a printer resource to the object.
+
+@param aResource Printer resource. */
+	{
+	iPdrResourceList.Add(aResource);
+	}
+
+PdrResources::~PdrResources()
+/** Default destructor. */
+	{
+	iPdrResourceList.Destroy();
+	}
+
+EXPORT_C PdrTranslation* PdrTranslation::New()
+/** Creates a new instance of this class.
+
+@return Reference to a new object. */
+	{
+	return new PdrTranslation();
+	}
+
+EXPORT_C void PdrTranslation::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void PdrTranslation::Externalize(ostream& out)
+	{
+	out.write((char*) &iFrom, sizeof(iFrom));
+	iTo.Externalize(out);
+	}
+
+EXPORT_C PdrTranslates* PdrTranslates::New()
+/** Creates a new instance of this class.
+
+@return Reference to a new object. */
+	{
+	return new PdrTranslates();
+	}
+
+EXPORT_C void PdrTranslates::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void PdrTranslates::Externalize(ostream& out)
+	{
+	iStreamId = out.tellp();
+	iPdrTranslationList.Externalize(out);
+	}
+
+EXPORT_C void PdrTranslates::AddTranslation(PdrTranslation* aTranslation)
+/** Adds a printer translation to the list.
+
+@param aTranslation Reference to a translation. */
+	{
+	iPdrTranslationList.Add(aTranslation);
+	}
+
+PdrTranslates::~PdrTranslates()
+/** This function is internal, and is not intended for use. */
+	{
+	iPdrTranslationList.Destroy();
+	}
+
+EXPORT_C Width* Width::New()
+/** Creates a new instance of this object.
+
+@return Reference to a new object. */
+	{
+	return new Width();
+	}
+
+EXPORT_C void Width::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void Width::Externalize(ostream& out)
+	{
+	out.write ((char*) &iWidthInPixels, sizeof(iWidthInPixels));
+	}
+
+WidthsCodeSection::WidthsCodeSection()
+ :	iWidthList()
+/** This function is internal only, and is not intended for use. */
+	{
+	}
+
+EXPORT_C WidthsCodeSection* WidthsCodeSection::New()
+/** Creates a new instance of this class.
+
+@return Reference to a new object. */
+	{
+	return new WidthsCodeSection();
+	}
+	
+EXPORT_C void WidthsCodeSection::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void WidthsCodeSection::Externalize(ostream& out)
+	{
+	out.write((char*) &iStart, sizeof(iStart));
+	out.write((char*) &iEnd, sizeof(iEnd));
+	iWidthList.Externalize(out);
+	}
+	
+EXPORT_C void WidthsCodeSection::AddWidth(Width* aWidth)
+/** Adds a new font width to the list.
+
+@param aWidth Font width. */
+	{
+	iWidthList.Add(aWidth);
+	}
+
+EXPORT_C Width* WidthsCodeSection::WidthList(int i)
+/** Returns a font width from the list at the position specified.
+
+@param i Position of font width in list.
+@return Reference to a font width. */
+	{
+	return iWidthList[i];
+	}
+
+EXPORT_C int WidthsCodeSection::NumWidths()
+/** Returns the number of font widths in the list.
+
+@return Number of widths. */
+	{
+	return iWidthList.Size();
+	}
+
+WidthsCodeSection::~WidthsCodeSection()
+/** Default destructor. */
+	{
+	iWidthList.Destroy();
+	}
+
+EXPORT_C FontInfo* FontInfo::New()
+/** Creates a new instance of this class.
+
+@return Reference to a new instance of this class. */
+	{
+	return new FontInfo();
+	}
+
+EXPORT_C void FontInfo::Delete()
+/** Deletes the current FontInfo object. */
+	{
+	delete this;
+	}
+
+void FontInfo::Externalize(ostream& out)
+	{
+	iStreamId = out.tellp();
+	out.write((char*) &iAscentInPixels, sizeof(iAscentInPixels));
+	out.write((char*) &iMaxCharWidthInPixels, sizeof(iMaxCharWidthInPixels));
+	out.write((char*) &iMaxNormalCharWidthInPixels, sizeof(iMaxNormalCharWidthInPixels));
+	iCodeSectionList.Externalize(out);
+	}
+
+EXPORT_C void FontInfo::AddCodeSection(WidthsCodeSection* aCodeSection)
+/** Adds a section of information about the font to an internally-stored array.
+
+@param aCodeSection Font information. */
+	{
+	iCodeSectionList.Add(aCodeSection);
+	}	
+
+EXPORT_C WidthsCodeSection* FontInfo::CodeSectionList(int i)
+/** Returns a section of font information from a specified position in the internally-stored 
+array.
+
+@param i Postion of information in the array.
+@return Reference to section of font information. */
+	{
+	return iCodeSectionList[i];
+	}
+
+EXPORT_C int FontInfo::NumCodeSections()
+/** Returns the number of sections of font information in the internally-stored 
+array.
+
+@return Current number of font information sections. */
+	{
+	return iCodeSectionList.Size();
+	}
+
+FontInfo::~FontInfo()
+/** This function is internal, and not intended for use. */
+	{
+	iCodeSectionList.Destroy();
+	}
+
+EXPORT_C PdrStyle* PdrStyle::New()
+/** Creates a new instance of this class
+
+@return Reference to a new object. */
+	{
+	return new PdrStyle();
+	}
+
+EXPORT_C void PdrStyle::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void PdrStyle::Externalize(ostream& out)
+	{
+	out.write((char*) &iIsAvailable, sizeof(iIsAvailable));
+	streamoff streamid = 0;
+	if (iIsAvailable)
+		streamid = iFontInfo->iStreamId;
+	::ExternalizeStreamOff(out, streamid);
+	}
+
+PdrStyle::PdrStyle()
+ :	iIsAvailable(efalse)
+/** Default constructor. */
+	{
+	}
+
+EXPORT_C PdrFontHeight* PdrFontHeight::New()
+/** Returns a new instance of this class.
+
+@return Reference to new object. */
+	{
+	return new PdrFontHeight();
+	}
+
+EXPORT_C void PdrFontHeight::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void PdrFontHeight::Externalize(ostream& out)
+	{
+	iCommandString.Externalize(out);
+	out.write((char*) &iHeightInTwips, sizeof(iHeightInTwips));
+	out.write((char*) &iWidthScale, sizeof(iWidthScale));
+	for (int style = Normal;style <= BoldItalic; style++)
+		iStyle[style].Externalize(out);
+	}
+
+PdrFontHeight::PdrFontHeight():
+	iWidthScale(1)
+/** Default constructor. */
+	{
+	}
+
+PdrScalableFontHeight::PdrScalableFontHeight()
+/** Default constructor. */
+	{
+	}
+
+void PdrScalableFontHeight::Externalize(ostream& out)
+	{
+	iCommandString.Externalize(out);
+	out.write((char*) &iHeightMinInTwips, sizeof(iHeightMinInTwips));
+	out.write((char*) &iHeightMaxInTwips, sizeof(iHeightMaxInTwips));
+	out.write((char*) &iHeightDeltaInTwips, sizeof(iHeightDeltaInTwips));
+	for (int style = Normal; style <= BoldItalic; style++)
+		iStyle[style].Externalize(out);
+	}
+
+EXPORT_C TypefaceFonts* TypefaceFonts::New()
+/** Creates a new instance of this class.
+
+@return Reference to a new object. */
+	{
+	return new TypefaceFonts();
+	}
+
+EXPORT_C void TypefaceFonts::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void TypefaceFonts::Externalize(ostream& out)
+	{
+	iStreamId = out.tellp();
+	iTypeface.Externalize(out);
+	out.write((char*) &iIsScalable, sizeof(iIsScalable));
+	if (iIsScalable)
+		iScalableFontHeight.Externalize(out);
+	else
+		iFontHeightList.Externalize(out);
+	::ExternalizeStreamOff(out, iTranslates->iStreamId);
+	}
+
+EXPORT_C void TypefaceFonts::AddFontHeight(PdrFontHeight* aFontHeight)
+	{
+	iFontHeightList.Add(aFontHeight);
+	}
+
+EXPORT_C int TypefaceFonts::NumFontHeights()
+/** Returns the number of font height descriptions currently held in the list.
+
+@return Number of descriptions. */
+	{
+	return iFontHeightList.Size();
+	}
+
+PdrFontHeight* TypefaceFonts::FontHeightList(int i)
+/** Returns the font height description from the position specified in the list.
+
+@param i Position of description.
+@return Font height description. */
+	{
+	return iFontHeightList[i];
+	}
+
+TypefaceFonts::TypefaceFonts():
+	iIsScalable(efalse)
+/** This function is internal only, and is not intended for use. */
+	{
+	}
+
+TypefaceFonts::~TypefaceFonts()
+/** This function is internal only, and is not intended for use. */
+	{
+	iFontHeightList.Destroy();
+	}
+
+EXPORT_C TypefaceFontsEntry* TypefaceFontsEntry::New(Record* aTypefaceFonts)
+	{
+	return new TypefaceFontsEntry(aTypefaceFonts);
+	}
+
+EXPORT_C void TypefaceFontsEntry::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+	
+void TypefaceFontsEntry::Externalize(ostream& out)
+	{
+	::ExternalizeStreamOff(out, iTypefaceFonts->iStreamId);
+	out.write((char*) &iNotInPortrait, sizeof(iNotInPortrait));
+	out.write((char*) &iNotInLandscape, sizeof(iNotInLandscape));
+	}
+
+TypefaceFontsEntry::TypefaceFontsEntry(Record* aTypefaceFonts)
+ :	iTypefaceFonts(aTypefaceFonts), iNotInPortrait(efalse), iNotInLandscape(efalse)
+	{
+	}
+
+TypefaceFontsEntry::~TypefaceFontsEntry()
+/** Default destructor. */
+	{
+	}
+
+void Margins::Externalize(ostream& out)
+	{
+	out.write((char*) &iLeft, sizeof(iLeft));
+	out.write((char*) &iRight, sizeof(iRight));
+	out.write((char*) &iTop, sizeof(iTop));
+	out.write((char*) &iBottom, sizeof(iBottom));
+	}
+
+/*
+PdrExtraInfo::~PdrExtraInfo()
+	{
+	iInfo.Destroy();
+	}
+
+void PdrExtraInfo::Externalize(ostream& out)
+	{
+	iInfo.Externalize(out);
+	}
+*/
+
+void PdrModelInfo::Externalize(ostream& out)
+	{
+	iStreamId=out.tellp();
+	out.write((char*) &KPdrtranVersion, sizeof(KPdrtranVersion));
+	out.write((char*) &iFlags, sizeof(iFlags));
+	out.write((char*) &iKPixelWidthInTwips, sizeof(iKPixelWidthInTwips));
+	out.write((char*) &iKPixelHeightInTwips, sizeof(iKPixelHeightInTwips));
+	iPortraitOffsetInPixels.Externalize(out);
+	iLandscapeOffsetInPixels.Externalize(out);
+	iMinMarginsInPixels.Externalize(out);
+	out.write((char*) &iDisplayMode, sizeof(iDisplayMode));
+	iTypefaceFontsEntryList.Externalize(out);
+	::ExternalizeStreamOff(out, iResources->iStreamId);
+	streamoff streamid = 0;
+	if (iSpareRecord)
+		streamid = iSpareRecord->iStreamId;
+	::ExternalizeStreamOff(out, streamid);
+	}
+ 
+EXPORT_C void PdrModelInfo::AddTypefaceFontsEntry(TypefaceFontsEntry* aTypefaceFontsEntry)
+/** Adds an entry containing information about typeface fonts to an internally-stored 
+array.
+
+@param aTypefaceFontsEntry Typeface font information. */
+	{
+	iTypefaceFontsEntryList.Add(aTypefaceFontsEntry);
+	}
+
+int PdrModelInfo::NumTypefaceFontsEntries()
+/** Returns the number of entries containing information about typeface fonts in 
+the internally-stored array.
+
+@return Number of entries. */
+	{
+	return iTypefaceFontsEntryList.Size();
+	}
+
+TypefaceFontsEntry* PdrModelInfo::TypefaceFontsEntryList(int i)
+/** Returns the typeface font entry stored the internal array from the position 
+specified.
+
+@param i Position in array.
+@return Typeface font entry. */
+	{
+	return iTypefaceFontsEntryList[i];
+	}
+
+PdrModelInfo::PdrModelInfo()
+ :	iStreamId(0),
+	iFlags(0),
+	iKPixelWidthInTwips(0),
+	iKPixelHeightInTwips(0),
+	iPortraitOffsetInPixels(),
+	iLandscapeOffsetInPixels(),
+	iMinMarginsInPixels(),
+	iDisplayMode(0),
+	iTypefaceFontsEntryList(),
+	iResources(NULL),
+	iSpareRecord(NULL)	// !! Not used yet
+/** Default constructor. */
+	{
+	}
+
+PdrModelInfo::~PdrModelInfo()
+/** Default destructor. */
+	{
+	iTypefaceFontsEntryList.Destroy();
+	}
+
+PrinterModelEntry::PrinterModelEntry()
+ :	iName(), iRequiresPrinterPort(efalse), iUid(KNullUid)
+/** Default constructor. */
+	{
+	}
+
+void PrinterModelEntry::Externalize(ostream& out)
+	{
+	iName.Externalize(out);
+	out.write((char*) &iRequiresPrinterPort, sizeof(iRequiresPrinterPort));
+	out.write((char*) &iUid, sizeof(iUid));
+	}
+
+EXPORT_C PrinterModelHeader* PrinterModelHeader::New()
+/** Creates a new instance of this class.
+
+@return Reference to a new object. */
+	{
+	return new PrinterModelHeader();
+	}
+
+EXPORT_C void PrinterModelHeader::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+void PrinterModelHeader::Externalize(ostream& out)
+	{
+	iEntry.Externalize(out);
+	::ExternalizeStreamOff(out, iInfo.iStreamId);
+	}
+
+void PrinterModelHeader::ExternalizeData(ostream& out)
+	{
+	iInfo.Externalize(out);
+	}
+
+boolean PrinterModelHeader::IsPdrModel()
+/** Determines whether printer information is available for this printer model.
+
+@return ETrue: printer description is available. */
+	{
+	return iInfo.NumTypefaceFontsEntries() || iInfo.iResources;
+	}
+
+EXPORT_C PdrStoreFile* PdrStoreFile::New()
+/** Creates a new instance of this class.
+
+@return Reference to a new object. */
+	{
+	return new PdrStoreFile();
+	}
+
+EXPORT_C void PdrStoreFile::Delete()
+/** Deletes the current object. */
+	{
+	delete this;
+	}
+
+EXPORT_C void PdrStoreFile::AddModel(PrinterModelHeader* aModel)
+/** Adds a printer model.
+
+@param aModel Printer model. */
+	{
+	iModelList.Add(aModel);
+	if (aModel->IsPdrModel())
+		{
+		for (int i = 0; i < aModel->iInfo.NumTypefaceFontsEntries(); i++)
+			AddTypefaceFonts((TypefaceFonts*) aModel->iInfo.TypefaceFontsEntryList(i)->iTypefaceFonts);
+		iResourcesList.Add(aModel->iInfo.iResources);
+//		if (aModel->iInfo.iSpareRecord)
+//			iExtraInfoList.Add(aModel->iInfo.iSpareRecord);
+		}
+	}
+
+void PdrStoreFile::Externalize(ostream& out)
+	{
+	ExternalizeHeader(out);
+	ExternalizeComponents(out);
+	}
+
+void PdrStoreFile::ExternalizeHeader(ostream& out)
+	{
+	out.write((char*) &KStoreWriteOnceLayoutUid, sizeof(KStoreWriteOnceLayoutUid));
+	out.write((char*) &KPdrStoreFileUid, sizeof(KPdrStoreFileUid));
+	out.write((char*) &KNullUid, sizeof(KNullUid));
+	out.write((char*) &KPdrStoreFileChecksum, sizeof(KPdrStoreFileChecksum));
+	::ExternalizeStreamOff(out, iStreamId);
+	iStreamId = out.tellp();
+	iPDLName.Externalize(out);
+	out.write((char*) &iPDLUid, sizeof(iPDLUid));
+	iModelList.Externalize(out);
+	}
+
+void PdrStoreFile::AddTypefaceFonts(TypefaceFonts* aTypefaceFonts)
+	{
+	iTypefaceFontsList.Add(aTypefaceFonts);
+	iTranslatesList.Add(aTypefaceFonts->iTranslates);
+	if (aTypefaceFonts->iIsScalable)
+		{
+		for (int style = Normal; style <= BoldItalic; style++)
+			{
+			if (aTypefaceFonts->iScalableFontHeight.iStyle[style].iIsAvailable)
+				iFontInfoList.Add(aTypefaceFonts->iScalableFontHeight.iStyle[style].iFontInfo);
+			}
+		}
+	else
+		{
+		for (int j = 0; j < aTypefaceFonts->NumFontHeights(); j++)
+			{
+			PdrFontHeight* fontheight = aTypefaceFonts->FontHeightList(j);
+			for (int style = Normal; style <= BoldItalic; style++)
+				{
+				if (fontheight->iStyle[style].iIsAvailable)
+					iFontInfoList.Add(fontheight->iStyle[style].iFontInfo);
+				}
+			}
+		}
+	}
+
+void PdrStoreFile::ExternalizeComponents(ostream& out)
+	{
+	for (int i = 0; i < iModelList.Size(); i++)
+		{
+		PrinterModelHeader* model = (PrinterModelHeader*) iModelList[i];
+		if (model->IsPdrModel())
+			model->ExternalizeData(out);
+		}
+	iTypefaceFontsList.Externalize(out);
+	iFontInfoList.Externalize(out);
+	iResourcesList.Externalize(out);
+	iTranslatesList.Externalize(out);
+//	iExtraInfoList.Externalize(out);
+	}
+
+PdrStoreFile::PdrStoreFile()
+ :	Record(),
+	iPDLName(),
+	iPDLUid(KNullUid),
+	iModelList(),
+	iTypefaceFontsList(),
+	iFontInfoList(),
+	iResourcesList(),
+	iTranslatesList()
+/** This function is internal only, and is not intended for use. */
+	{
+	}
+
+EXPORT_C boolean PdrModelStore::Store(const String& aFilename)
+/** Externalizes printer information from the store to the specfied external file.
+
+@param aFilename Filename.
+@return ETrue: store successful. */
+	{
+	boolean state = efalse;
+	ofstream fout;
+	String string = aFilename;
+	fout.open(string.Text(), ios::binary);
+	if (!fout.fail())
+		{
+		iPdrStoreFile->Externalize(fout);
+		fout.close();
+		fout.open(string.Text(), ios::binary | ios::trunc);
+		iPdrStoreFile->Externalize(fout);
+		fout.close();
+		state = etrue;
+		}
+	return state;
+	}
+
+EXPORT_C void PdrModelStore::AddPdrStoreFile(PdrStoreFile* aPdrStoreFile)
+	{
+	iPdrStoreFile = aPdrStoreFile;
+	}
+
+EXPORT_C void PdrModelStore::AddModel(PrinterModelHeader *aModel)
+/** Adds a printer model to the store.
+
+@param aModel Printer model. */
+	{
+	iModelList.Add(aModel);
+	}
+
+EXPORT_C Record *PdrModelStore::FindModel(String& aLabel)
+	{
+	return iModelList.LabelToRecord(aLabel);
+	}
+
+EXPORT_C void PdrModelStore::AddTypefaceFonts(TypefaceFonts *aTypefaceFonts)
+/** Adds typeface information to the store.
+
+@param aTypefaceFonts Typeface fonts. */
+	{
+	iTypefaceFontsList.Add(aTypefaceFonts);
+	}
+
+EXPORT_C Record *PdrModelStore::FindTypefaceFonts(String& aLabel)
+	{
+	return iTypefaceFontsList.LabelToRecord(aLabel);
+	}
+
+EXPORT_C void PdrModelStore::AddFontInfo(FontInfo *aFontInfo)
+/** Adds font information to the store.
+
+@param aFontInfo Font information. */
+	{
+	iFontInfoList.Add(aFontInfo);
+	}
+
+EXPORT_C Record *PdrModelStore::FindFontInfo(String& aLabel)
+	{
+	return iFontInfoList.LabelToRecord(aLabel);
+	}
+
+EXPORT_C void PdrModelStore::AddResources(PdrResources *aResources)
+	{
+	iResourcesList.Add(aResources);
+	}
+
+EXPORT_C Record *PdrModelStore::FindResources(String& aLabel)
+	{
+	return iResourcesList.LabelToRecord(aLabel);
+	}
+
+EXPORT_C void PdrModelStore::AddTranslates(PdrTranslates *aTranslates)
+/** Adds printer translations to the store.
+
+@param aTranslates Translation list. */
+	{
+	iTranslatesList.Add(aTranslates);
+	}
+
+EXPORT_C Record *PdrModelStore::FindTranslates(String& aLabel)
+	{
+	return iTranslatesList.LabelToRecord(aLabel); 
+	}
+
+	/*
+void PdrModelStore::AddExtraInfo(PdrExtraInfo *aInfo)
+	{
+	iExtraInfoList.Add(aInfo);
+	}
+
+Record* PdrModelStore::FindExtraInfo(String& aLabel)
+	{
+	return iExtraInfoList.LabelToRecord(aLabel);
+	}
+*/
+
+PdrModelStore::PdrModelStore()
+ :	iPdrStoreFile(NULL),
+	iModelList(),
+	iTypefaceFontsList(),
+	iFontInfoList(),
+	iResourcesList()//,
+//	iExtraInfoList()
+/** Default constructor. */
+	{
+	}
+
+PdrModelStore::~PdrModelStore()
+/** Default destructor. */
+	{
+	delete iPdrStoreFile;
+	iModelList.Destroy();
+	iTypefaceFontsList.Destroy();
+	iFontInfoList.Destroy();
+	iResourcesList.Destroy();
+	iTranslatesList.Destroy();
+//	iExtraInfoList.Destroy();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/src/PDRTRAN.CPP	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Header PDRTRAN.CPP
+*
+*/
+
+
+#include "PDRREADR.H"
+
+bool OutputUnicode = false;
+
+// Input and output filenames entered in command line
+int main(int argc, char *argv[])  
+	{
+	cout << "\nPDRTRAN V";
+	cout << KPdrtranVersion << "\n";
+	cout << "Copyright (c) 1998-2004 Symbian Software Ltd.\n";
+
+	if(argc!=3)
+		{
+		cout << "Usage:	PDRTRAN srcfile [srcfile2 ..] destfile\n";
+		cout << "where srcfile is the file containing printer models,\n";
+		cout << "typeface information and character width tables, and\n";
+		cout << "destfile is the pdr store file.\n";
+		return -1;
+		}
+	
+	PdrReader reader;
+
+	for (int i = 1; i < argc - 1; i++)
+		{
+		if (!reader.Read(argv[i]))
+			{
+			cerr << "Problem encountered in file " << argv[i] << "\n";
+			return -1;
+			}
+		}
+	if (!reader.Store(argv[argc - 1]))
+		{
+		cerr << "Problem writing pdr file " << argv[argc - 1] << "\n";
+		return -1;
+		}
+	cout << argv[argc-1] << " created\n";
+	return 0;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/src/READER.CPP	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,168 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Header READER.CPP
+*
+*/
+
+
+#include "READER.H"
+
+Reader::Reader()
+	{
+	iLexAnal = NULL;
+	}
+
+boolean Reader::Open(const String& aFilename)
+	{
+	boolean state;
+	String string = aFilename;
+	if (iLexAnal != NULL)
+		delete iLexAnal;
+	iLexAnal = new LexAnal(string.Text());
+
+	if (iLexAnal)
+		{
+		state = etrue;
+		iLex =& (iLexAnal->iLex);
+		iLexAnal->Read();	// reads first lexical
+		}
+	else
+		state = efalse;
+
+	return state;
+	}
+
+Reader::~Reader()
+	{
+	if (iLexAnal != NULL)
+		delete iLexAnal;
+	}
+
+boolean Reader::_EOF()
+	{
+	return ((iLex->iType) == ELexEOF);
+	}
+
+boolean Reader::NewLine()
+	{
+	boolean state;
+	if (iLex->iType == ELexNL)
+		{
+		iLexAnal->Read();
+		state = etrue;
+		}
+	else
+		{
+		Error(String("Newline expected"));
+		state = efalse;
+		}
+	return state;
+	}
+
+boolean Reader::Number(int& aNumber)
+	{
+	boolean state;
+	if (iLex->iType == ELexNumber)
+		{
+		aNumber = iLex->iNumber;
+		iLexAnal->Read();
+		state = etrue;
+		}
+	else
+		{
+		Error(String("Number expected"));
+		state = efalse;
+		}
+	return state;
+	}
+
+boolean Reader::IdentComp(const String& aIdent)
+	{
+	boolean state;
+	if (iLex->iType == ELexIdent)
+		{
+		if (aIdent == iLex->iText)
+			{
+			iLexAnal->Read();
+			state = etrue;
+			}
+		else
+			state = efalse;
+		}
+	else
+		{
+		state = efalse;
+		}
+	return state;
+	}
+
+boolean Reader::IdentCopy(String& aIdent)
+	{
+	boolean state;
+	if (iLex->iType == ELexIdent)
+		{
+		aIdent = iLex->iText;
+		iLexAnal->Read();
+		state = etrue;
+		}
+	else
+		{
+		Error(String("Identifier expected"));
+		state = efalse;
+		}
+	return state;
+	}
+
+boolean Reader::StringCopy(String& aString)
+	{
+	boolean state;
+	if (iLex->iType == ELexString)
+		{
+		aString = iLex->iText;
+		iLexAnal->Read();
+		state = etrue;
+		}
+	else
+		{
+		Error(String("String expected"));
+		state = efalse;
+		}
+	return state;
+	}
+
+boolean Reader::Operator(char& aCh)
+	{
+	boolean state;
+	if (iLex->iType == ELexOperator)
+		{
+		aCh = iLex->iText[0];
+		iLexAnal->Read();
+		state = etrue;
+		}
+	else
+		{
+		Error(String("Operator expected"));
+		state = efalse;
+		}
+	return state;
+	}
+
+EXPORT_C void Reader::Error(const String& aString)
+	{
+	cerr << "Error: " << aString;
+	iLexAnal->Report();
+	while ((iLex->iType != ELexNL) && (iLex->iType != ELexEOF))
+		iLexAnal->Read();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/src/RECORD.CPP	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Header RECORD.CPP
+*
+*/
+
+
+#include "RECORD.H"
+
+EXPORT_C Record::Record()
+ :	iLabel(), iStreamId(0)
+	{
+	}
+
+void RecordList::ExternalizeIds(ostream& out)
+	{
+	int32 i;
+	int32 size = Size();
+	out.write((char*) &size, sizeof(size));
+	for (i = 0; i < size; i++)
+		{
+		::ExternalizeStreamOff(out, (*this)[i]->iStreamId);
+		}
+	}
+
+void RecordList::Externalize(ostream& out)
+	{
+	int32 size = Size();
+	out.write ((char*) &size, sizeof(size));
+	for (int i = 0; i < size; i++)
+		(*this)[i]->Externalize(out);
+	}
+
+void RecordList::ExternalizeComponents(ostream& out)
+	{
+	int32 size = Size();
+	for (int i = 0; i < size; i++)
+		(*this)[i]->ExternalizeComponents(out);
+	}
+
+EXPORT_C void RecordList::Add(Record* aRecord)
+	{
+	if (!LabelToRecord(aRecord->iLabel))
+		List<Record*>::Add(aRecord);
+	}
+
+EXPORT_C Record *RecordList::LabelToRecord(const String& aLabel)
+	{
+	int32 size = Size();
+	Record *record=NULL;
+	if (aLabel.Length())
+		for (int i = 0; i < size; i++)
+			if ((*this)[i]->iLabel == aLabel)
+				record = (*this)[i];
+	return record;
+	}
+
+EXPORT_C void RecordList::Destroy()
+	{
+	List<Record*>::Destroy();
+	}
+
+EXPORT_C RecordList::~RecordList()
+	{
+	}
+
+EXPORT_C Typeface::Typeface()
+ :	iName(), iFlags(0)
+	{
+	}
+
+void Typeface::Externalize(ostream& out)
+	{
+	iName.Externalize(out);
+	out.put((char) iFlags);
+	}
+
+void Point::Externalize(ostream& out)
+	{
+	out.write((char*) &iX, sizeof(iX));
+	out.write((char*) &iY, sizeof(iY));
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/src/STRNG.CPP	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,151 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* Header STRNG.CPP
+*
+*/
+
+
+#include "STRNG.H"
+
+extern bool OutputUnicode;
+
+ostream& operator << (ostream& out, const String& aString)
+	{
+	for (int i = 0; i < aString.iLength; i++)
+		out << aString.iText[i];
+	out << '\n';
+	return out;
+	}
+
+EXPORT_C void String::Externalize(ostream& out)
+	{
+	if (OutputUnicode)
+		{
+		// Convert the string to Unicode, allowing #NNNN (each N is a hex digit)
+		// to represent an arbitrary Unicode character. Other values are just
+		// extended, so don't use codepage 1252 values in the range 128..159.
+		unsigned short* buffer = new unsigned short[iLength];
+		int i = 0;
+		int j = 0;
+		while (i < iLength)
+			{
+			if (iText[i] == '#')
+				{
+				i++;
+				char hex[5];
+				hex[0] = iText[i++];
+				hex[1] = iText[i++];
+				hex[2] = iText[i++];
+				hex[3] = iText[i++];
+				hex[4] = 0;
+				buffer[j++] = (unsigned short)strtoul(hex, NULL, 16);
+				}
+			else
+				{
+				buffer[j] = iText[i];
+				buffer[j] &= 0xFF;
+				i++;
+				j++;
+				}
+			}
+		int unicode_characters = j;
+		int32 length = (unicode_characters << 1);	// 16-bit data
+		if (length < 0x80)
+			{
+			unsigned char len = (unsigned char)(length << 1);
+			out.write((char*)&len, sizeof(len));
+			}
+		else if (length < 0x4000)
+			{
+			uint16 len = (uint16)((length << 2) + 1);
+			out.write((char*)&len, sizeof(len));
+			}
+		else
+			{
+			// assert len<0x20000000 ?
+			uint32 len = (uint32)((length << 3) + 3);
+			out.write((char*)&len, sizeof(len));
+			}
+		// Output Unicode characters using the Standard Compression Scheme for Unicode.
+		// To save the bother of doing this properly, use a degenerate form whereby each
+		// Unicode character is output as itself. 0x0F selects Unicode mode and 0xF0 quotes
+		// characters that would conflict with other tags.
+		out << (unsigned char)0x0F;
+
+		for (i = 0; i < unicode_characters; i++)
+			{
+			unsigned char hi = (unsigned char)(buffer[i] >> 8);
+			unsigned char lo = (unsigned char)buffer[i];
+			if ((hi >= 0xe0) && (hi <= 0xf2))
+				out << 0xf0;
+			out << hi;
+			out << lo;
+			}
+
+		delete [] buffer;
+		}
+	else
+		{
+		int32 length = (iLength << 1) + 1;	// 8-bit data
+		if (length < 0x80)
+			{
+			unsigned char len = (unsigned char)(length << 1);
+			out.write((char*)&len, sizeof(len));
+			}
+		else if (length < 0x4000)
+			{
+			uint16 len = (uint16)((length << 2) + 1);
+			out.write((char*)&len, sizeof(len));
+			}
+		else
+			{
+			// assert len<0x20000000 ?
+			uint32 len = (uint32)((length << 3) + 3);
+			out.write((char*)&len, sizeof(len));
+			}
+		out.write(iText, iLength);
+		}
+	}
+
+EXPORT_C int String::CreateText(const int aLength)
+	{
+	if (aLength != iLength)
+		{
+		char* text = new char[aLength + 1];
+		if (text)
+			{
+			iLength = aLength;
+			iText = text;
+			}
+		else
+			{
+			iLength = 0;
+			delete [] iText;
+			iText = NULL;
+			}
+		}
+	return iLength;
+	}
+
+EXPORT_C void String::DeleteText(char* aText) const
+	{
+	if (aText != iText)
+		delete [] aText;
+	}
+
+EXPORT_C String::~String()
+	{
+	delete [] iText;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/cross/src/platmacros.cpp	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,22 @@
+/*
+* 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:
+*
+*/
+
+
+int main()
+{
+	return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/test/smoke_suite/tools2_cross_compilation.py	Wed Feb 17 17:03:27 2010 +0000
@@ -0,0 +1,175 @@
+#
+# 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.description = "Tests Raptor can build win32 tools on linux"
+
+	t.id = "111a"
+	t.name = "tools2_cross_compilation_pdrtran" 
+	t.command = "sbs -b smoke_suite/test_resources/tools2/cross/BLD.INF -p PDRTRAN.MMP -c tools2 -c tools2.win32"
+
+	t.targets = [
+			"$(EPOCROOT)/epoc32/release/tools2/deb/pdrtran.exe",
+			"$(EPOCROOT)/epoc32/release/tools2/rel/pdrtran.exe",
+			"$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/pdrtran",
+			"$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/pdrtran",
+			"$(EPOCROOT)/epoc32/tools/pdrtran.exe",
+			"$(EPOCROOT)/epoc32/tools/pdrtran"
+			]
+	t.addbuildtargets("smoke_suite/test_resources/tools2/cross/BLD.INF", [
+			"pdrtran_/pdrtran_exe/tools2/deb/PDRTRAN.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/LEXICAL.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/PDRREADR.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/PDRRECRD.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/READER.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/RECORD.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/STRNG.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/PDRTRAN.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/LEXICAL.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/PDRREADR.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/PDRRECRD.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/READER.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/RECORD.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/STRNG.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/PDRTRAN.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/LEXICAL.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/PDRREADR.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/PDRRECRD.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/READER.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/RECORD.o",
+			"pdrtran_/pdrtran_exe/tools2/deb/$(HOSTPLATFORM_DIR)/STRNG.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/PDRTRAN.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/LEXICAL.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/PDRREADR.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/PDRRECRD.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/READER.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/RECORD.o",
+			"pdrtran_/pdrtran_exe/tools2/rel/$(HOSTPLATFORM_DIR)/STRNG.o"
+			])
+	t.run("linux")
+
+	
+	t.id = "111b"
+	t.name = "tools2_cross_compilation_libs"
+	t.command = "sbs -b smoke_suite/test_resources/tools2/bld.inf -c tools2.win32 -c tools2"
+
+	t.targets = [
+			"$(EPOCROOT)/epoc32/release/tools2/deb/tool_exe.exe",
+			"$(EPOCROOT)/epoc32/release/tools2/deb/libtool_lib1.a",
+			"$(EPOCROOT)/epoc32/release/tools2/deb/libtool_lib2.a",
+			"$(EPOCROOT)/epoc32/release/tools2/rel/tool_exe.exe",
+			"$(EPOCROOT)/epoc32/release/tools2/rel/libtool_lib1.a",
+			"$(EPOCROOT)/epoc32/release/tools2/rel/libtool_lib2.a",
+			"$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/tool_exe",
+			"$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/libtool_lib1.a",
+			"$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/libtool_lib2.a",
+			"$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/tool_exe",
+			"$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/libtool_lib1.a",
+			"$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/libtool_lib2.a",
+			"$(EPOCROOT)/epoc32/tools/tool_exe.exe",
+			"$(EPOCROOT)/epoc32/tools/tool_exe"
+			]
+	t.addbuildtargets("smoke_suite/test_resources/tools2/bld.inf", [
+			"libtool_lib1_a/libtool_lib1_lib/tools2/rel/tool_lib1_b.o",
+			"libtool_lib1_a/libtool_lib1_lib/tools2/rel/tool_lib1_a.o",
+			"libtool_lib2_a/libtool_lib2_lib/tools2/rel/tool_lib2_b.o",
+			"libtool_lib2_a/libtool_lib2_lib/tools2/rel/tool_lib2_a.o",
+			"libtool_lib1_a/libtool_lib1_lib/tools2/deb/tool_lib1_b.o",
+			"libtool_lib1_a/libtool_lib1_lib/tools2/deb/tool_lib1_a.o",
+			"libtool_lib2_a/libtool_lib2_lib/tools2/deb/tool_lib2_a.o",
+			"libtool_lib2_a/libtool_lib2_lib/tools2/deb/tool_lib2_b.o",
+			"tool_exe_exe/tool_exe_exe/tools2/rel/tool_exe_a.o",
+			"tool_exe_exe/tool_exe_exe/tools2/rel/tool_exe_b.o",
+			"tool_exe_exe/tool_exe_exe/tools2/deb/tool_exe_b.o",
+			"tool_exe_exe/tool_exe_exe/tools2/deb/tool_exe_a.o",
+			"libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib1_b.o",
+			"libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib1_a.o",
+			"libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib2_b.o",
+			"libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib2_a.o",
+			"libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib1_b.o",
+			"libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib1_a.o",
+			"libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib2_a.o",
+			"libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib2_b.o",
+			"tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM_DIR)/tool_exe_a.o",
+			"tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM_DIR)/tool_exe_b.o",
+			"tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM_DIR)/tool_exe_b.o",
+			"tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM_DIR)/tool_exe_a.o"
+			])
+	t.run("linux")
+
+
+	t.usebash = True
+	t.id = "111c"
+	t.name = "tools2_cross_compilation_toolcheck_linux"
+	t.command = "$(EPOCROOT)/epoc32/tools/pdrtran smoke_suite/test_resources/tools2/cross/TEST.PD $(EPOCROOT)/epoc32/build/TEST_PDRTRAN.PDR"
+	t.targets = [
+		 	"$(EPOCROOT)/epoc32/build/TEST_PDRTRAN.PDR"
+			]
+	t.mustmatch = [
+			"PDRTRAN V41"
+			]		
+	t.run("linux")
+
+	
+	t.id = "111d"
+	t.name = "tools2_cross_compilation_toolcheck_windows"
+	t.command = "file $(EPOCROOT)/epoc32/tools/pdrtran.exe"
+	t.targets = []
+	t.mustmatch = [
+			"MS Windows"
+			]		
+	t.run("linux")
+
+
+	t.id = "111e"
+	t.name = "tools2_cross_compilation_platmacro_linux"
+	t.command = "sbs -b smoke_suite/test_resources/tools2/cross/BLD.INF -p platmacros.mmp -c tools2"
+	t.targets = [
+			"$(EPOCROOT)/epoc32/tools/test_platmacros"
+			]
+	t.mustmatch = [
+			"TOOLS2_LINUX"
+			]
+	t.mustnotmatch = [
+			"TOOLS2_WINDOWS"
+			]
+	t.warnings = 1
+	t.run("linux")
+
+
+	t.id = "111f"
+	t.name = "tools2_cross_compilation_platmacro_windows"
+	t.command = "sbs -b smoke_suite/test_resources/tools2/cross/BLD.INF -p platmacros.mmp -c tools2.win32"
+	t.targets = [
+			"$(EPOCROOT)/epoc32/tools/test_platmacros.exe"
+			]
+	t.mustmatch = [
+			"TOOLS2_WINDOWS"
+			]
+	t.mustnotmatch = [
+			"TOOLS2_LINUX"
+			]
+	t.warnings = 1
+	t.run("linux")
+
+
+	t.id = "111"
+	t.name = "tools2_cross_compilation"
+	t.print_result()
+	return t
Binary file sbsv2/raptor/win32/bin/unhide_ci_refs.exe has changed