1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package.
authorMike Kinghan <mikek@symbian.org>
Thu, 25 Nov 2010 13:59:07 +0000
changeset 40 68f68128601f
parent 39 fa9d7d89d3d6
child 41 1600211976c3
1) Add the sbsv1 components from sftools/dev/build to make the linux_build package independent of the obsolete buildtools package. 2) Enhance romnibus.pl so that it generate the symbol file for the built rom when invoked by Raptor 3) Make the maksym.pl tool portable for Linux as well as Windows. 4) Remove the of armasm2as.pl from the e32tools component in favour of the copy now exported from sbsv1/e32util.
cross-plat-dev-utils/build_all.pl
cross-plat-dev-utils/deps.txt
cross-plat-dev-utils/exportsout.txt
cross-plat-dev-utils/fix_epoc32.pl
cross-plat-dev-utils/fix_tool_exports.pl
e32tools/armasm2as.pl
imgtools/romtools/maksym/maksym.pl
imgtools/romtools/rombuild/romnibus.pl
sbsv1/abld/bldmake/abld.pl
sbsv1/abld/bldmake/bldmake.bat
sbsv1/abld/bldmake/bldmake.pl
sbsv1/abld/bldmake/egmak.fil
sbsv1/abld/bldmake/linkdeps.pl
sbsv1/abld/bldmake/metabld.bat
sbsv1/abld/bldmake/metabld.pl
sbsv1/abld/bldmake/wrappermakefile.pm
sbsv1/abld/doc/abld.rtf
sbsv1/abld/doc/armv5_cpu_spec_example.bsf
sbsv1/abld/doc/bld_changes_er5toer5u.rtf
sbsv1/abld/doc/bld_changes_er5utov6.rtf
sbsv1/abld/doc/bld_changes_forv6.1.rtf
sbsv1/abld/doc/bldmake.rtf
sbsv1/abld/doc/building_variants.txt
sbsv1/abld/doc/cedar-mostly-thumb.txt
sbsv1/abld/doc/cpu_specific_builds.txt
sbsv1/abld/doc/epocrc.config.sample
sbsv1/abld/doc/genshimsrc.txt
sbsv1/abld/doc/gt0063.changes
sbsv1/abld/doc/makmake.mdl
sbsv1/abld/doc/makmake.ppt
sbsv1/abld/doc/makmake.rtf
sbsv1/abld/doc/memtrace.rtf
sbsv1/abld/doc/metabld.rtf
sbsv1/abld/doc/mmp_notes.txt
sbsv1/abld/doc/rcomp.doc
sbsv1/abld/doc/zephyr_buildrom_changes.txt
sbsv1/abld/e32util/_secure_E32Env.pm
sbsv1/abld/e32util/armasm2as.pl
sbsv1/abld/e32util/checkgcc.pm
sbsv1/abld/e32util/checksource.pl
sbsv1/abld/e32util/checksource.pm
sbsv1/abld/e32util/copyfeaturevariants.pl
sbsv1/abld/e32util/createrfifile.pl
sbsv1/abld/e32util/defutl.pm
sbsv1/abld/e32util/deletefeaturevariants.pl
sbsv1/abld/e32util/e32tpver.pm
sbsv1/abld/e32util/efreeze.bat
sbsv1/abld/e32util/efreeze.pl
sbsv1/abld/e32util/epocaif.pl
sbsv1/abld/e32util/epocmbm.pl
sbsv1/abld/e32util/epocrc.bat
sbsv1/abld/e32util/epocrc.pl
sbsv1/abld/e32util/featurevariantmap.pm
sbsv1/abld/e32util/featurevariantparser.pm
sbsv1/abld/e32util/fixsource.bat
sbsv1/abld/e32util/gendef.pl
sbsv1/abld/e32util/genshimsrc.bat
sbsv1/abld/e32util/h2inc.pl
sbsv1/abld/e32util/listfeaturevariants.pl
sbsv1/abld/e32util/makedef.pl
sbsv1/abld/e32util/omapsig.pl
sbsv1/abld/e32util/prepdef.pl
sbsv1/abld/e32util/preprocessor.pm
sbsv1/abld/e32util/selectbootmak.pl
sbsv1/abld/e32util/set-rvct.bat
sbsv1/abld/genutil/conv_khronos_hdr_to_cpp.pl
sbsv1/abld/genutil/conv_khronos_openvg_hdr_to_cpp.pl
sbsv1/abld/genutil/ecopyfile.pl
sbsv1/abld/genutil/emkdir.pl
sbsv1/abld/genutil/ermdir.pl
sbsv1/abld/genutil/err_formatter.pl
sbsv1/abld/genutil/genutl.pm
sbsv1/abld/genutil/listzip.pl
sbsv1/abld/genutil/modload.pm
sbsv1/abld/genutil/output.pm
sbsv1/abld/genutil/pathutl.pm
sbsv1/abld/genutil/prepfile.pm
sbsv1/abld/group/abld.mrp
sbsv1/abld/group/bld.inf
sbsv1/abld/group/build.txt
sbsv1/abld/group/info.txt
sbsv1/abld/group/perlprep.bat
sbsv1/abld/group/release.txt
sbsv1/abld/group/setupprj.bat
sbsv1/abld/group/setver.bat
sbsv1/abld/kif/group/bld.inf
sbsv1/abld/kif/group/kif1.xsd
sbsv1/abld/kif/perl/genkif.pl
sbsv1/abld/makmake/_secure_trgtype.pm
sbsv1/abld/makmake/makdeps.pm
sbsv1/abld/makmake/makhelp.pm
sbsv1/abld/makmake/makmake.bat
sbsv1/abld/makmake/makmake.pl
sbsv1/abld/makmake/mmp.pm
sbsv1/abld/memtrace/memtrace.bat
sbsv1/abld/memtrace/memtrace.pl
sbsv1/abld/platform/ARMV5.mk
sbsv1/abld/platform/ARMV5SMP.bsf
sbsv1/abld/platform/ARMV6.BSF
sbsv1/abld/platform/ARMV6SMP.bsf
sbsv1/abld/platform/ARMV6T2.bsf
sbsv1/abld/platform/ARMV6_abiv1.BSF
sbsv1/abld/platform/ARMV7.bsf
sbsv1/abld/platform/GCCE.mk
sbsv1/abld/platform/GCCEV6.bsf
sbsv1/abld/platform/GCCEV6T2.bsf
sbsv1/abld/platform/GCCEV7.bsf
sbsv1/abld/platform/armutl.pm
sbsv1/abld/platform/bpabiutl.pm
sbsv1/abld/platform/cl_arm.pm
sbsv1/abld/platform/cl_bpabi.pm
sbsv1/abld/platform/cl_codewarrior.pm
sbsv1/abld/platform/cl_edg.pm
sbsv1/abld/platform/cl_gcc.pm
sbsv1/abld/platform/cl_gccxml.pm
sbsv1/abld/platform/cl_generic.pm
sbsv1/abld/platform/cl_mingw.pm
sbsv1/abld/platform/cl_tools.pm
sbsv1/abld/platform/cl_vscw.pm
sbsv1/abld/platform/cl_win.pm
sbsv1/abld/platform/cl_x86.pm
sbsv1/abld/platform/cl_x86gcc.pm
sbsv1/abld/platform/cw_link_descriptor_template.cwlink
sbsv1/abld/platform/cw_link_descriptor_template_v2.cwlink
sbsv1/abld/platform/cw_project_template_v3.xml
sbsv1/abld/platform/cw_project_template_v4.xml
sbsv1/abld/platform/default_plats.txt
sbsv1/abld/platform/default_plats_v2.txt
sbsv1/abld/platform/e32plat.pm
sbsv1/abld/platform/e32variant.pm
sbsv1/abld/platform/extractvars.make
sbsv1/abld/platform/fcloggerutl.pm
sbsv1/abld/platform/filenamepolicyexclusions.txt
sbsv1/abld/platform/findimp.pl
sbsv1/abld/platform/ide_cw.pm
sbsv1/abld/platform/ide_vc6.pm
sbsv1/abld/platform/lockit_info.pm
sbsv1/abld/platform/sym_lkup_util.pl
sbsv1/abld/platform/winutl.pm
sbsv1/abld/test/cw_ide_test.pl
sbsv1/abld/test/featurevariantmap/a.cpp
sbsv1/abld/test/featurevariantmap/b.cpp
sbsv1/abld/test/featurevariantmap/featnames.txt
sbsv1/abld/test/featurevariantmap/fred.dll
sbsv1/abld/test/featurevariantmap/inc_jack/a.h
sbsv1/abld/test/featurevariantmap/inc_jack/b.h
sbsv1/abld/test/featurevariantmap/inc_noel/a.h
sbsv1/abld/test/featurevariantmap/inc_noel/b.h
sbsv1/abld/test/featurevariantmap/jack.hrh
sbsv1/abld/test/featurevariantmap/jack2.hrh
sbsv1/abld/test/featurevariantmap/john.12345678901234567890123456789012.dll
sbsv1/abld/test/featurevariantmap/john.dll.vmap
sbsv1/abld/test/featurevariantmap/noel.hrh
sbsv1/abld/test/featurevariantmap/test.pl
sbsv1/abld/test/featurevariantparser/a1.var
sbsv1/abld/test/featurevariantparser/a2.var
sbsv1/abld/test/featurevariantparser/b1a.var
sbsv1/abld/test/featurevariantparser/b1b.var
sbsv1/abld/test/featurevariantparser/b2.var
sbsv1/abld/test/featurevariantparser/default.var
sbsv1/abld/test/featurevariantparser/groupa.var
sbsv1/abld/test/featurevariantparser/test.pl
sbsv1/abld/test/fixeabidefs.bat
sbsv1/abld/test/mmp_testlist.txt
sbsv1/abld/test/mmpscan.pl
sbsv1/abld/test/unittest.pl
sbsv1/abld/toolinfo/gcce_plat2set.pm
sbsv1/abld/toolinfo/rvct_plat2set.pm
sbsv1/abld/toolinfo/rvct_ver2set.pm
sbsv1/buildsystem/bin/java/symbianant.jar
sbsv1/buildsystem/extension/app-services/buildstubsis.meta
sbsv1/buildsystem/extension/app-services/buildstubsis.mk
sbsv1/buildsystem/extension/app-services/buildupgradesis.meta
sbsv1/buildsystem/extension/app-services/buildupgradesis.mk
sbsv1/buildsystem/extension/app-services/tzlocaltestserver.meta
sbsv1/buildsystem/extension/app-services/tzlocaltestserver.mk
sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.meta
sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.mk
sbsv1/buildsystem/extension/application-protocols/buildstubsis.meta
sbsv1/buildsystem/extension/application-protocols/buildstubsis.mk
sbsv1/buildsystem/extension/base/base_rvct_common.mk
sbsv1/buildsystem/extension/base/bootstrap.flm.hide
sbsv1/buildsystem/extension/base/bootstrap.meta
sbsv1/buildsystem/extension/base/bootstrap.mk
sbsv1/buildsystem/extension/base/bootstrap.xml.hide
sbsv1/buildsystem/extension/base/config.meta
sbsv1/buildsystem/extension/base/config.mk
sbsv1/buildsystem/extension/base/copy_default.meta
sbsv1/buildsystem/extension/base/copy_default.mk
sbsv1/buildsystem/extension/base/genexec.meta
sbsv1/buildsystem/extension/base/genexec.mk
sbsv1/buildsystem/extension/base/h2_genbootinc.meta
sbsv1/buildsystem/extension/base/h2_genbootinc.mk
sbsv1/buildsystem/extension/base/h2_restricted_coreldr.meta
sbsv1/buildsystem/extension/base/h2_restricted_coreldr.mk
sbsv1/buildsystem/extension/base/h4_genbootinc.meta
sbsv1/buildsystem/extension/base/h4_genbootinc.mk
sbsv1/buildsystem/extension/base/h4_restricted_coreldr.meta
sbsv1/buildsystem/extension/base/h4_restricted_coreldr.mk
sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.meta
sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.mk
sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.meta
sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.mk
sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.meta
sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.mk
sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.meta
sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.mk
sbsv1/buildsystem/extension/base/lab_restricted_miniboot.flm
sbsv1/buildsystem/extension/base/lab_restricted_miniboot.meta
sbsv1/buildsystem/extension/base/lab_restricted_miniboot.mk
sbsv1/buildsystem/extension/base/lab_restricted_miniboot.xml
sbsv1/buildsystem/extension/base/lubbock_coreldr.meta
sbsv1/buildsystem/extension/base/lubbock_coreldr.mk
sbsv1/buildsystem/extension/base/lubbock_miniboot.meta
sbsv1/buildsystem/extension/base/lubbock_miniboot.mk
sbsv1/buildsystem/extension/base/modload.pm
sbsv1/buildsystem/extension/base/nand_fbr_offset.meta
sbsv1/buildsystem/extension/base/nand_fbr_offset.mk
sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.meta
sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.mk
sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.flm
sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.meta
sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.mk
sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.xml
sbsv1/buildsystem/extension/base/omap3_genbootinc.meta
sbsv1/buildsystem/extension/base/omap3_genbootinc.mk
sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.flm
sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.meta
sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.mk
sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.xml
sbsv1/buildsystem/extension/converged-comms/createcommdbs.meta
sbsv1/buildsystem/extension/converged-comms/createcommdbs.mk
sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.meta
sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.mk
sbsv1/buildsystem/extension/graphics/gen_khronos_cpp_from_hdr.meta
sbsv1/buildsystem/extension/graphics/gen_khronos_cpp_from_hdr.mk
sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.meta
sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.mk
sbsv1/buildsystem/extension/graphics/genpdrs.meta
sbsv1/buildsystem/extension/graphics/genpdrs.mk
sbsv1/buildsystem/extension/security/upsserver.meta
sbsv1/buildsystem/extension/security/upsserver.mk
sbsv1/buildsystem/extension/syslibs/conversiontable.meta
sbsv1/buildsystem/extension/syslibs/conversiontable.mk
sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.meta
sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.mk
sbsv1/buildsystem/extension/syslibs/generate_cpp.meta
sbsv1/buildsystem/extension/syslibs/generate_cpp.mk
sbsv1/buildsystem/extension/syslibs/generate_snm.meta
sbsv1/buildsystem/extension/syslibs/generate_snm.mk
sbsv1/buildsystem/extension/syslibs/test/bafl_copytestfiles.meta
sbsv1/buildsystem/extension/syslibs/test/bafl_copytestfiles.mk
sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.meta
sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.mk
sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.meta
sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.mk
sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.meta
sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.mk
sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.meta
sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.mk
sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.meta
sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.mk
sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.meta
sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.mk
sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.meta
sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.mk
sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.meta
sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.mk
sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.meta
sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.mk
sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.meta
sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.mk
sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.meta
sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.mk
sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.meta
sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.mk
sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.meta
sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.mk
sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.meta
sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.mk
sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.meta
sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.mk
sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.meta
sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.mk
sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.meta
sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.mk
sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.meta
sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.mk
sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.meta
sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.mk
sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.meta
sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.mk
sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.meta
sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.mk
sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.meta
sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.mk
sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.meta
sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.mk
sbsv1/buildsystem/extension/syslibs/word_template.meta
sbsv1/buildsystem/extension/syslibs/word_template.mk
sbsv1/buildsystem/extension/techview/uiklaf_resource.meta
sbsv1/buildsystem/extension/techview/uiklaf_resource.mk
sbsv1/buildsystem/extension/tools/ant_launch.flm
sbsv1/buildsystem/extension/tools/ant_launch.meta
sbsv1/buildsystem/extension/tools/ant_launch.mk
sbsv1/buildsystem/extension/tools/ant_launch.xml
sbsv1/buildsystem/extension/tools/apply_imgtools_variants.xml
sbsv1/buildsystem/extension/tools/bldex.meta
sbsv1/buildsystem/extension/tools/bldex.mk
sbsv1/buildsystem/extension/tools/compsupp.meta
sbsv1/buildsystem/extension/tools/compsupp.mk
sbsv1/buildsystem/extension/tools/features.meta
sbsv1/buildsystem/extension/tools/features.mk
sbsv1/buildsystem/extension/tools/jni_ant_launch.meta
sbsv1/buildsystem/extension/tools/jni_ant_launch.mk
sbsv1/buildsystem/extension/tools/kif.meta
sbsv1/buildsystem/extension/tools/kif.mk
sbsv1/buildsystem/extension/tools/py2exe.meta
sbsv1/buildsystem/extension/tools/py2exe.mk
sbsv1/buildsystem/extension/tools/raptor_linux_dist.meta
sbsv1/buildsystem/extension/tools/raptor_linux_dist.mk
sbsv1/buildsystem/extension/tools/stlport.meta
sbsv1/buildsystem/extension/tools/stlport.mk
sbsv1/buildsystem/extension/tools/x86tool.meta
sbsv1/buildsystem/extension/tools/x86tool.mk
sbsv1/buildsystem/group/bld.inf
sbsv1/buildsystem/group/buildsystem.mrp
sbsv1/buildsystem/shell/cmd.mk
sbsv1/buildsystem/shell/generic.mk
sbsv1/buildsystem/shell/sh.mk
sbsv1/buildsystem/test/binaryvariation/Bld.inf
sbsv1/buildsystem/test/binaryvariation/CommonFramework.h
sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLL.cpp
sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLL.h
sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLL.mmp
sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLLarm.def
sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLLwin.def
sbsv1/buildsystem/test/binaryvariation/UseStaticDLL.cpp
sbsv1/buildsystem/test/binaryvariation/UseStaticDLL.mmp
sbsv1/buildsystem/test/binaryvariation/VariantStaticDLL.cpp
sbsv1/buildsystem/test/binaryvariation/VariantStaticDLL.h
sbsv1/buildsystem/test/binaryvariation/VariantStaticDLL.mmp
sbsv1/buildsystem/test/binaryvariation/VariantStaticDLLarm.def
sbsv1/buildsystem/test/binaryvariation/VariantStaticDLLwin.def
sbsv1/buildsystem/test/binaryvariation/bvtest.txt
sbsv1/buildsystem/test/binaryvariation/default.var
sbsv1/buildsystem/test/binaryvariation/test.pl
sbsv1/buildsystem/test/binaryvariation/variant_a.hrh
sbsv1/buildsystem/test/binaryvariation/variant_a.var
sbsv1/buildsystem/test/binaryvariation/variant_a_extra.hrh
sbsv1/buildsystem/test/binaryvariation/variant_b.hrh
sbsv1/buildsystem/test/binaryvariation/variant_b.var
sbsv1/buildsystem/test/binaryvariation/variant_b_extra.hrh
sbsv1/buildsystem/test/binaryvariation/variant_c.var
sbsv1/buildsystem/test/extensions/my_testing.01
sbsv1/buildsystem/test/extensions/test.pl
sbsv1/buildsystem/test/helloworld/Bld.inf
sbsv1/buildsystem/test/helloworld/CommonFramework.h
sbsv1/buildsystem/test/helloworld/HelloWorld.cpp
sbsv1/buildsystem/test/helloworld/HelloWorld.mmp
sbsv1/buildsystem/test/helloworld/test.pl
sbsv1/buildsystem/test/smoketest.pl
sbsv1/buildsystem/tools/buildloggers/group/build.mk
sbsv1/buildsystem/tools/buildloggers/src/com/symbian/ant/AbldWhatLogger.java
sbsv1/buildsystem/tools/buildloggers/src/com/symbian/ant/ScanLogger.java
sbsv1/fix_eabi_think_offsets/fix_eabi_thunk_offsets.bat
sbsv1/fix_eabi_think_offsets/group/bld.inf
sbsv1/fix_eabi_think_offsets/group/fix_eabi_thunk_offsets.mrp
sbsv1/make-abld/group/bld.inf
sbsv1/make-abld/group/make-abld.mrp
sbsv1/make-abld/make.exe
sbsv1/scpp-abld/group/bld.inf
sbsv1/scpp-abld/group/scpp-abld.mrp
sbsv1/scpp-abld/scpp.exe
--- a/cross-plat-dev-utils/build_all.pl	Mon Nov 15 10:57:53 2010 +0000
+++ b/cross-plat-dev-utils/build_all.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -49,7 +49,7 @@
         print "This script cleans all TOOLS2 targets with Raptor, " .
 			"except Raptor itself and any that were broken upstream when last checked.\n";
         print "Valid arguments are -h, --help; -k, --keepgoing, or none.\n";
-		print "-k, --keepgoing makes the script carry on after a failed clean,\n";
+		print "-k, --keepgoing makes the script carry on after a failed build,\n";
 		exit 0;  
 	} elsif (grep(/$ARGV[0]/,("-k","--keepgoing"))) {
 		$keepgoing = 1;
--- a/cross-plat-dev-utils/deps.txt	Mon Nov 15 10:57:53 2010 +0000
+++ b/cross-plat-dev-utils/deps.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -3,4 +3,7 @@
 imgtools.imgcheck imgtools.imglib
 imgtools.romtools imgtools.imglib
 imgtools.romtools imgtools.sisutils
+sbsv1.abld.kif sbsv1.buildsystem
 
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cross-plat-dev-utils/exportsout.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1439 @@
+>>> EPOCROOT not defined. Assuming "/home/imk/symbian/gcc_surge"
+>>> EPOCROOT="/home/imk/symbian/gcc_surge"
+>>> Cleaning exports for target sbsv1/abld
+>>> SBS_HOME not defined. Assuming "/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor"
+>>> Build dir is "/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group"
+>>> Executing: /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/bin/sbs -c tools2 -b bld.inf cleanexport
+
+no warnings or errors
+
+built 'tools2_deb'
+built 'tools2_rel'
+
+Run time 1 seconds
+
+sbs: build log in /home/imk/symbian/gcc_surge/epoc32/build/Makefile.2010-11-25-11-17-29.log
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.15.2 [ISODATE symbian build system CHANGESET]" xmlns="http://symbian.com/xml/build/log" xmlns:progress="http://symbian.com/xml/build/log/progress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<info>sbs: version 2.15.2 [ISODATE symbian build system CHANGESET]
+</info>
+<info>SBS_HOME /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor</info>
+<info>Set-up /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/sbs_init.xml</info>
+<info>Command-line-arguments -c tools2 -b bld.inf cleanexport</info>
+<info>Current working directory /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group</info>
+<info>Environment COLORTERM=gnome-terminal</info>
+<info>Environment DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-LalzvzunXH,guid=aa9f16d7d64950393775671800000027</info>
+<info>Environment DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</info>
+<info>Environment DESKTOP_SESSION=gnome</info>
+<info>Environment DISPLAY=:0.0</info>
+<info>Environment EPOCROOT=/home/imk/symbian/gcc_surge</info>
+<info>Environment GDMSESSION=gnome</info>
+<info>Environment GDM_KEYBOARD_LAYOUT=gb</info>
+<info>Environment GDM_LANG=en_GB.utf8</info>
+<info>Environment GNOME_DESKTOP_SESSION_ID=this-is-deprecated</info>
+<info>Environment GNOME_KEYRING_CONTROL=/tmp/keyring-XwzaPr</info>
+<info>Environment GNOME_KEYRING_PID=1816</info>
+<info>Environment GTK_MODULES=canberra-gtk-module</info>
+<info>Environment HOME=/home/imk</info>
+<info>Environment HOSTPLATFORM=linux unknown libc2_12</info>
+<info>Environment HOSTPLATFORM_DIR=linux-unknown-libc2_12</info>
+<info>Environment INSIDE_NAUTILUS_PYTHON=</info>
+<info>Environment LANG=en_GB.utf8</info>
+<info>Environment LD_LIBRARY_PATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/lib:/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bv/lib:</info>
+<info>Environment LESSCLOSE=/usr/bin/lesspipe %s %s</info>
+<info>Environment LESSOPEN=| /usr/bin/lesspipe %s</info>
+<info>Environment LIBGL_DRIVERS_PATH=/usr/lib/fglrx/dri</info>
+<info>Environment LOGNAME=imk</info>
+<info>Environment LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</info>
+<info>Environment MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path</info>
+<info>Environment ORBIT_SOCKETDIR=/tmp/orbit-imk</info>
+<info>Environment PATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/bin:/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin:/home/imk/CodeSourcery/Sourcery_G++_Lite/bin:/home/imk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</info>
+<info>Environment PWD=/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group</info>
+<info>Environment PYGTK_USE_GIL_STATE_API=</info>
+<info>Environment PYTHONPATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/lib</info>
+<info>Environment SBS_HOME=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor</info>
+<info>Environment SESSION_MANAGER=local/imk-ubuntu:@/tmp/.ICE-unix/1835,unix/imk-ubuntu:/tmp/.ICE-unix/1835</info>
+<info>Environment SHELL=/bin/bash</info>
+<info>Environment SHLVL=2</info>
+<info>Environment SPEECHD_PORT=7560</info>
+<info>Environment SSH_AGENT_PID=1875</info>
+<info>Environment SSH_AUTH_SOCK=/tmp/keyring-XwzaPr/ssh</info>
+<info>Environment TERM=xterm</info>
+<info>Environment USER=imk</info>
+<info>Environment USERNAME=imk</info>
+<info>Environment WINDOWID=77721977</info>
+<info>Environment WINDOWPATH=7</info>
+<info>Environment XAUTHORITY=/var/run/gdm/auth-for-imk-xgBP6A/database</info>
+<info>Environment XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</info>
+<info>Environment XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</info>
+<info>Environment XDG_SESSION_COOKIE=7c0345339c8c8824da1edfbc4b3c9b7d-1290669647.265660-1417769536</info>
+<info>Environment _=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/bin/python</info>
+<info>Duplicate alias 'make' (the one from '/home/imk/symbian/gcc_surge/epoc32/sbs_config/s60_sbs_config.xml' will override the one in '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/lib/config/make.xml')</info>
+<info>Duplicate alias 'emake' (the one from '/home/imk/symbian/gcc_surge/epoc32/sbs_config/s60_sbs_config.xml' will override the one in '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/lib/config/make.xml')</info>
+<info>Buildable configuration 'tools2_deb'</info>
+<info>Buildable configuration 'tools2_rel'</info>
+<info>Toolcheck cache /home/imk/symbian/gcc_surge/epoc32/build/toolcheck_cache_.tmp ignored - environment changed
+</info>
+<info>OS version "vtb101sf" determined from file "/home/imk/symbian/gcc_surge/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "tools2_deb".</info>
+<info>'tools2_deb' uses variant hrh file '/home/imk/symbian/gcc_surge/epoc32/include/bldvariant.hrh'</info>
+<info>OS version "vtb101sf" determined from file "/home/imk/symbian/gcc_surge/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "tools2_rel".</info>
+<info>'tools2_rel' uses variant hrh file '/home/imk/symbian/gcc_surge/epoc32/include/bldvariant.hrh'</info>
+<info>Processing /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group/bld.inf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/Defutl.pm</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/E32tpver.pm</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/efreeze.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/h2inc.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makedef.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/prepdef.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/Pathutl.pm</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/createrfifile.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/gendef.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/set-rvct.bat</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/omapsig.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/sym_lkup_util.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/ARMV5.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/extractvars.make</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/GCCE.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/listzip.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/conv_khronos_openvg_hdr_to_cpp.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/ecopyfile.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/conv_khronos_hdr_to_cpp.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/armasm2as.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/copyfeaturevariants.pl</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/armv6.bsf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/armv6t2.bsf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/gccev7.bsf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/armv5smp.bsf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/armv6smp.bsf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/gccev6t2.bsf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/gccev6.bsf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/armv6_abiv1.bsf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/armv7.bsf</info>
+<whatlog bldinf='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group/bld.inf' mmp='' config=''>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/Defutl.pm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/defutl.pm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/E32tpver.pm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/e32tpver.pm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/efreeze.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/efreeze.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/h2inc.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/h2inc.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makedef.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/makedef.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/prepdef.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/prepdef.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/Pathutl.pm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/pathutl.pm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/createrfifile.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/createrfifile.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/gendef.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/gendef.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/set-rvct.bat' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/set-rvct.bat'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/omapsig.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/omapsig.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/sym_lkup_util.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/sym_lkup_util.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/ARMV5.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV5.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/extractvars.make' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/extractvars.make'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/GCCE.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCE.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/listzip.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/listzip.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/conv_khronos_openvg_hdr_to_cpp.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/conv_khronos_openvg_hdr_to_cpp.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/ecopyfile.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/ecopyfile.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/conv_khronos_hdr_to_cpp.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/conv_khronos_hdr_to_cpp.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armasm2as.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/armasm2as.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/copyfeaturevariants.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/copyfeaturevariants.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv6.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6.BSF'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv6t2.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6T2.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/gccev7.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCEV7.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv5smp.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV5SMP.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv6smp.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6SMP.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/gccev6t2.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCEV6T2.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/gccev6.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCEV6.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv6_abiv1.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6_abiv1.BSF'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv7.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV7.bsf'/>
+</whatlog>
+<progress:discovery object_type='layers' count='1' />
+<progress:start object_type='layer' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683849.98' />
+<progress:end object_type='layer' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683849.99' />
+<progress:start object_type='layer' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683849.99' />
+<info>Running /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/talonctl start</info>
+<progress:discovery object_type='makefile' count='5' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683850.0' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683850.016365087' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683850.020494153' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683850.02' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683850.02' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683850.041544212' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683850.045729431' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683850.05' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683850.05' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683850.067055640' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683850.071252172' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683850.07' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683850.07' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683850.091765224' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683850.095953794' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683850.1' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683850.1' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683850.116515664' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683850.120600451' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683850.12' />
+<info>Running /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/talonctl stop</info>
+<info>The make-engine exited successfully.</info>
+<progress:end object_type='layer' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683850.12' />
+<info>Run time 1 seconds</info>
+<info>Created/Updated toolcheck cache: /home/imk/symbian/gcc_surge/epoc32/build/toolcheck_cache_.tmp
+</info>
+</buildlog>
+>>> Exporting target sbsv1/abld
+>>> SBS_HOME not defined. Assuming "/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor"
+>>> Build dir is "/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group"
+>>> Executing: /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/bin/sbs -c tools2 -b bld.inf export
+ export     : epoc32/tools/Defutl.pm
+ export     : epoc32/tools/E32tpver.pm
+ export     : epoc32/tools/efreeze.pl
+ export     : epoc32/tools/h2inc.pl
+ export     : epoc32/tools/makedef.pl
+ export     : epoc32/tools/prepdef.pl
+ export     : epoc32/tools/Pathutl.pm
+ export     : epoc32/tools/createrfifile.pl
+ export     : epoc32/tools/gendef.pl
+ export     : epoc32/tools/set-rvct.bat
+ export     : epoc32/tools/omapsig.pl
+ export     : epoc32/tools/sym_lkup_util.pl
+ export     : epoc32/tools/compilation_config/extractvars.make
+ export     : epoc32/tools/compilation_config/GCCE.mk
+ export     : epoc32/tools/listzip.pl
+ export     : epoc32/tools/conv_khronos_openvg_hdr_to_cpp.pl
+ export     : epoc32/tools/ecopyfile.pl
+ export     : epoc32/tools/conv_khronos_hdr_to_cpp.pl
+ export     : epoc32/tools/armasm2as.pl
+ export     : epoc32/tools/copyfeaturevariants.pl
+ export     : epoc32/tools/armv6.bsf
+ export     : epoc32/tools/armv6t2.bsf
+ export     : epoc32/tools/gccev7.bsf
+ export     : epoc32/tools/armv5smp.bsf
+ export     : epoc32/tools/armv6smp.bsf
+ export     : epoc32/tools/gccev6t2.bsf
+ export     : epoc32/tools/gccev6.bsf
+ export     : epoc32/tools/armv6_abiv1.bsf
+ export     : epoc32/tools/armv7.bsf
+
+no warnings or errors
+
+built 'tools2_deb'
+built 'tools2_rel'
+
+Run time 1 seconds
+
+sbs: build log in /home/imk/symbian/gcc_surge/epoc32/build/Makefile.2010-11-25-11-17-30.log
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.15.2 [ISODATE symbian build system CHANGESET]" xmlns="http://symbian.com/xml/build/log" xmlns:progress="http://symbian.com/xml/build/log/progress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<info>sbs: version 2.15.2 [ISODATE symbian build system CHANGESET]
+</info>
+<info>SBS_HOME /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor</info>
+<info>Set-up /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/sbs_init.xml</info>
+<info>Command-line-arguments -c tools2 -b bld.inf export</info>
+<info>Current working directory /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group</info>
+<info>Environment COLORTERM=gnome-terminal</info>
+<info>Environment DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-LalzvzunXH,guid=aa9f16d7d64950393775671800000027</info>
+<info>Environment DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</info>
+<info>Environment DESKTOP_SESSION=gnome</info>
+<info>Environment DISPLAY=:0.0</info>
+<info>Environment EPOCROOT=/home/imk/symbian/gcc_surge</info>
+<info>Environment GDMSESSION=gnome</info>
+<info>Environment GDM_KEYBOARD_LAYOUT=gb</info>
+<info>Environment GDM_LANG=en_GB.utf8</info>
+<info>Environment GNOME_DESKTOP_SESSION_ID=this-is-deprecated</info>
+<info>Environment GNOME_KEYRING_CONTROL=/tmp/keyring-XwzaPr</info>
+<info>Environment GNOME_KEYRING_PID=1816</info>
+<info>Environment GTK_MODULES=canberra-gtk-module</info>
+<info>Environment HOME=/home/imk</info>
+<info>Environment HOSTPLATFORM=linux unknown libc2_12</info>
+<info>Environment HOSTPLATFORM_DIR=linux-unknown-libc2_12</info>
+<info>Environment INSIDE_NAUTILUS_PYTHON=</info>
+<info>Environment LANG=en_GB.utf8</info>
+<info>Environment LD_LIBRARY_PATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/lib:/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bv/lib:</info>
+<info>Environment LESSCLOSE=/usr/bin/lesspipe %s %s</info>
+<info>Environment LESSOPEN=| /usr/bin/lesspipe %s</info>
+<info>Environment LIBGL_DRIVERS_PATH=/usr/lib/fglrx/dri</info>
+<info>Environment LOGNAME=imk</info>
+<info>Environment LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</info>
+<info>Environment MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path</info>
+<info>Environment ORBIT_SOCKETDIR=/tmp/orbit-imk</info>
+<info>Environment PATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/bin:/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin:/home/imk/CodeSourcery/Sourcery_G++_Lite/bin:/home/imk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</info>
+<info>Environment PWD=/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group</info>
+<info>Environment PYGTK_USE_GIL_STATE_API=</info>
+<info>Environment PYTHONPATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/lib</info>
+<info>Environment SBS_HOME=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor</info>
+<info>Environment SESSION_MANAGER=local/imk-ubuntu:@/tmp/.ICE-unix/1835,unix/imk-ubuntu:/tmp/.ICE-unix/1835</info>
+<info>Environment SHELL=/bin/bash</info>
+<info>Environment SHLVL=2</info>
+<info>Environment SPEECHD_PORT=7560</info>
+<info>Environment SSH_AGENT_PID=1875</info>
+<info>Environment SSH_AUTH_SOCK=/tmp/keyring-XwzaPr/ssh</info>
+<info>Environment TERM=xterm</info>
+<info>Environment USER=imk</info>
+<info>Environment USERNAME=imk</info>
+<info>Environment WINDOWID=77721977</info>
+<info>Environment WINDOWPATH=7</info>
+<info>Environment XAUTHORITY=/var/run/gdm/auth-for-imk-xgBP6A/database</info>
+<info>Environment XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</info>
+<info>Environment XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</info>
+<info>Environment XDG_SESSION_COOKIE=7c0345339c8c8824da1edfbc4b3c9b7d-1290669647.265660-1417769536</info>
+<info>Environment _=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/bin/python</info>
+<info>Duplicate alias 'make' (the one from '/home/imk/symbian/gcc_surge/epoc32/sbs_config/s60_sbs_config.xml' will override the one in '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/lib/config/make.xml')</info>
+<info>Duplicate alias 'emake' (the one from '/home/imk/symbian/gcc_surge/epoc32/sbs_config/s60_sbs_config.xml' will override the one in '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/lib/config/make.xml')</info>
+<info>Buildable configuration 'tools2_deb'</info>
+<info>Buildable configuration 'tools2_rel'</info>
+<info>Loaded toolcheck cache: /home/imk/symbian/gcc_surge/epoc32/build/toolcheck_cache_.tmp
+</info>
+<info>OS version "vtb101sf" determined from file "/home/imk/symbian/gcc_surge/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "tools2_deb".</info>
+<info>'tools2_deb' uses variant hrh file '/home/imk/symbian/gcc_surge/epoc32/include/bldvariant.hrh'</info>
+<info>OS version "vtb101sf" determined from file "/home/imk/symbian/gcc_surge/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "tools2_rel".</info>
+<info>'tools2_rel' uses variant hrh file '/home/imk/symbian/gcc_surge/epoc32/include/bldvariant.hrh'</info>
+<info>Processing /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group/bld.inf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/defutl.pm to /home/imk/symbian/gcc_surge/epoc32/tools/Defutl.pm</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/e32tpver.pm to /home/imk/symbian/gcc_surge/epoc32/tools/E32tpver.pm</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/efreeze.pl to /home/imk/symbian/gcc_surge/epoc32/tools/efreeze.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/h2inc.pl to /home/imk/symbian/gcc_surge/epoc32/tools/h2inc.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/makedef.pl to /home/imk/symbian/gcc_surge/epoc32/tools/makedef.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/prepdef.pl to /home/imk/symbian/gcc_surge/epoc32/tools/prepdef.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/pathutl.pm to /home/imk/symbian/gcc_surge/epoc32/tools/Pathutl.pm</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/createrfifile.pl to /home/imk/symbian/gcc_surge/epoc32/tools/createrfifile.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/gendef.pl to /home/imk/symbian/gcc_surge/epoc32/tools/gendef.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/set-rvct.bat to /home/imk/symbian/gcc_surge/epoc32/tools/set-rvct.bat</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/omapsig.pl to /home/imk/symbian/gcc_surge/epoc32/tools/omapsig.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/sym_lkup_util.pl to /home/imk/symbian/gcc_surge/epoc32/tools/sym_lkup_util.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/extractvars.make to /home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/extractvars.make</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCE.mk to /home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/GCCE.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/listzip.pl to /home/imk/symbian/gcc_surge/epoc32/tools/listzip.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/conv_khronos_openvg_hdr_to_cpp.pl to /home/imk/symbian/gcc_surge/epoc32/tools/conv_khronos_openvg_hdr_to_cpp.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/ecopyfile.pl to /home/imk/symbian/gcc_surge/epoc32/tools/ecopyfile.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/conv_khronos_hdr_to_cpp.pl to /home/imk/symbian/gcc_surge/epoc32/tools/conv_khronos_hdr_to_cpp.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/armasm2as.pl to /home/imk/symbian/gcc_surge/epoc32/tools/armasm2as.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/copyfeaturevariants.pl to /home/imk/symbian/gcc_surge/epoc32/tools/copyfeaturevariants.pl</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6.BSF to /home/imk/symbian/gcc_surge/epoc32/tools/armv6.bsf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6T2.bsf to /home/imk/symbian/gcc_surge/epoc32/tools/armv6t2.bsf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCEV7.bsf to /home/imk/symbian/gcc_surge/epoc32/tools/gccev7.bsf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV5SMP.bsf to /home/imk/symbian/gcc_surge/epoc32/tools/armv5smp.bsf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6SMP.bsf to /home/imk/symbian/gcc_surge/epoc32/tools/armv6smp.bsf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCEV6T2.bsf to /home/imk/symbian/gcc_surge/epoc32/tools/gccev6t2.bsf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCEV6.bsf to /home/imk/symbian/gcc_surge/epoc32/tools/gccev6.bsf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6_abiv1.BSF to /home/imk/symbian/gcc_surge/epoc32/tools/armv6_abiv1.bsf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV7.bsf to /home/imk/symbian/gcc_surge/epoc32/tools/armv7.bsf</info>
+<whatlog bldinf='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/group/bld.inf' mmp='' config=''>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/Defutl.pm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/defutl.pm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/E32tpver.pm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/e32tpver.pm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/efreeze.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/efreeze.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/h2inc.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/h2inc.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makedef.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/makedef.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/prepdef.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/prepdef.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/Pathutl.pm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/pathutl.pm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/createrfifile.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/createrfifile.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/gendef.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/gendef.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/set-rvct.bat' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/set-rvct.bat'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/omapsig.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/omapsig.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/sym_lkup_util.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/sym_lkup_util.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/ARMV5.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV5.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/extractvars.make' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/extractvars.make'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/compilation_config/GCCE.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCE.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/listzip.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/listzip.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/conv_khronos_openvg_hdr_to_cpp.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/conv_khronos_openvg_hdr_to_cpp.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/ecopyfile.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/ecopyfile.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/conv_khronos_hdr_to_cpp.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/genutil/conv_khronos_hdr_to_cpp.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armasm2as.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/armasm2as.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/copyfeaturevariants.pl' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/e32util/copyfeaturevariants.pl'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv6.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6.BSF'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv6t2.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6T2.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/gccev7.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCEV7.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv5smp.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV5SMP.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv6smp.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6SMP.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/gccev6t2.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCEV6T2.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/gccev6.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/GCCEV6.bsf'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv6_abiv1.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV6_abiv1.BSF'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/armv7.bsf' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/abld/platform/ARMV7.bsf'/>
+</whatlog>
+<progress:discovery object_type='layers' count='1' />
+<progress:start object_type='layer' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683850.64' />
+<progress:end object_type='layer' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683850.65' />
+<progress:start object_type='layer' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683850.65' />
+<info>Running /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/talonctl start</info>
+<progress:discovery object_type='makefile' count='5' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683850.66' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683850.676004848' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683850.680226244' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683850.68' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683850.68' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683850.701110919' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683850.705249972' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683850.71' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683850.71' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683850.726822511' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683850.731032243' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683850.73' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683850.73' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683850.751431663' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683850.755638602' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683850.76' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683850.76' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683850.777005459' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683850.781153172' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683850.78' />
+<info>Running /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/talonctl stop</info>
+<info>The make-engine exited successfully.</info>
+<progress:end object_type='layer' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683850.79' />
+<info>Run time 1 seconds</info>
+<info>Created/Updated toolcheck cache: /home/imk/symbian/gcc_surge/epoc32/build/toolcheck_cache_.tmp
+</info>
+</buildlog>
+>>> Cleaning exports for target sbsv1/buildsystem
+>>> SBS_HOME not defined. Assuming "/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor"
+>>> Build dir is "/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group"
+>>> Executing: /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/bin/sbs -c tools2 -b bld.inf cleanexport
+
+no warnings or errors
+
+built 'tools2_deb'
+built 'tools2_rel'
+
+Run time 1 seconds
+
+sbs: build log in /home/imk/symbian/gcc_surge/epoc32/build/Makefile.2010-11-25-11-17-30.log
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.15.2 [ISODATE symbian build system CHANGESET]" xmlns="http://symbian.com/xml/build/log" xmlns:progress="http://symbian.com/xml/build/log/progress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<info>sbs: version 2.15.2 [ISODATE symbian build system CHANGESET]
+</info>
+<info>SBS_HOME /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor</info>
+<info>Set-up /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/sbs_init.xml</info>
+<info>Command-line-arguments -c tools2 -b bld.inf cleanexport</info>
+<info>Current working directory /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group</info>
+<info>Environment COLORTERM=gnome-terminal</info>
+<info>Environment DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-LalzvzunXH,guid=aa9f16d7d64950393775671800000027</info>
+<info>Environment DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</info>
+<info>Environment DESKTOP_SESSION=gnome</info>
+<info>Environment DISPLAY=:0.0</info>
+<info>Environment EPOCROOT=/home/imk/symbian/gcc_surge</info>
+<info>Environment GDMSESSION=gnome</info>
+<info>Environment GDM_KEYBOARD_LAYOUT=gb</info>
+<info>Environment GDM_LANG=en_GB.utf8</info>
+<info>Environment GNOME_DESKTOP_SESSION_ID=this-is-deprecated</info>
+<info>Environment GNOME_KEYRING_CONTROL=/tmp/keyring-XwzaPr</info>
+<info>Environment GNOME_KEYRING_PID=1816</info>
+<info>Environment GTK_MODULES=canberra-gtk-module</info>
+<info>Environment HOME=/home/imk</info>
+<info>Environment HOSTPLATFORM=linux unknown libc2_12</info>
+<info>Environment HOSTPLATFORM_DIR=linux-unknown-libc2_12</info>
+<info>Environment INSIDE_NAUTILUS_PYTHON=</info>
+<info>Environment LANG=en_GB.utf8</info>
+<info>Environment LD_LIBRARY_PATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/lib:/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bv/lib:</info>
+<info>Environment LESSCLOSE=/usr/bin/lesspipe %s %s</info>
+<info>Environment LESSOPEN=| /usr/bin/lesspipe %s</info>
+<info>Environment LIBGL_DRIVERS_PATH=/usr/lib/fglrx/dri</info>
+<info>Environment LOGNAME=imk</info>
+<info>Environment LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</info>
+<info>Environment MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path</info>
+<info>Environment ORBIT_SOCKETDIR=/tmp/orbit-imk</info>
+<info>Environment PATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/bin:/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin:/home/imk/CodeSourcery/Sourcery_G++_Lite/bin:/home/imk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</info>
+<info>Environment PWD=/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group</info>
+<info>Environment PYGTK_USE_GIL_STATE_API=</info>
+<info>Environment PYTHONPATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/lib</info>
+<info>Environment SBS_HOME=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor</info>
+<info>Environment SESSION_MANAGER=local/imk-ubuntu:@/tmp/.ICE-unix/1835,unix/imk-ubuntu:/tmp/.ICE-unix/1835</info>
+<info>Environment SHELL=/bin/bash</info>
+<info>Environment SHLVL=2</info>
+<info>Environment SPEECHD_PORT=7560</info>
+<info>Environment SSH_AGENT_PID=1875</info>
+<info>Environment SSH_AUTH_SOCK=/tmp/keyring-XwzaPr/ssh</info>
+<info>Environment TERM=xterm</info>
+<info>Environment USER=imk</info>
+<info>Environment USERNAME=imk</info>
+<info>Environment WINDOWID=77721977</info>
+<info>Environment WINDOWPATH=7</info>
+<info>Environment XAUTHORITY=/var/run/gdm/auth-for-imk-xgBP6A/database</info>
+<info>Environment XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</info>
+<info>Environment XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</info>
+<info>Environment XDG_SESSION_COOKIE=7c0345339c8c8824da1edfbc4b3c9b7d-1290669647.265660-1417769536</info>
+<info>Environment _=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/bin/python</info>
+<info>Duplicate alias 'make' (the one from '/home/imk/symbian/gcc_surge/epoc32/sbs_config/s60_sbs_config.xml' will override the one in '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/lib/config/make.xml')</info>
+<info>Duplicate alias 'emake' (the one from '/home/imk/symbian/gcc_surge/epoc32/sbs_config/s60_sbs_config.xml' will override the one in '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/lib/config/make.xml')</info>
+<info>Buildable configuration 'tools2_deb'</info>
+<info>Buildable configuration 'tools2_rel'</info>
+<info>Loaded toolcheck cache: /home/imk/symbian/gcc_surge/epoc32/build/toolcheck_cache_.tmp
+</info>
+<info>OS version "vtb101sf" determined from file "/home/imk/symbian/gcc_surge/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "tools2_deb".</info>
+<info>'tools2_deb' uses variant hrh file '/home/imk/symbian/gcc_surge/epoc32/include/bldvariant.hrh'</info>
+<info>OS version "vtb101sf" determined from file "/home/imk/symbian/gcc_surge/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "tools2_rel".</info>
+<info>'tools2_rel' uses variant hrh file '/home/imk/symbian/gcc_surge/epoc32/include/bldvariant.hrh'</info>
+<info>Processing /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group/bld.inf</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/java/symbianant.jar</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/application-protocols/buildstubsis.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/application-protocols/buildstubsis.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildstubsis.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildstubsis.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildupgradesis.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildupgradesis.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/base_rvct_common.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/bootstrap.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/bootstrap.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/config.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/config.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/copy_default.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/copy_default.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/genexec.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/genexec.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_genbootinc.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_genbootinc.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_genbootinc.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_genbootinc.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.flm</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.xml</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_coreldr.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_coreldr.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_miniboot.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_miniboot.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/nand_fbr_offset.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/nand_fbr_offset.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.flm</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.xml</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_genbootinc.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_genbootinc.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.flm</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.xml</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/createcommdbs.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/createcommdbs.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/genpdrs.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/genpdrs.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/security/upsserver.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/security/upsserver.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/conversiontable.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/conversiontable.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_cpp.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_cpp.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_snm.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_snm.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/word_template.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/word_template.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/techview/uiklaf_resource.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/techview/uiklaf_resource.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.flm</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.xml</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/bldex.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/bldex.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/compsupp.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/compsupp.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/features.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/features.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/jni_ant_launch.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/jni_ant_launch.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/kif.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/kif.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/py2exe.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/py2exe.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/raptor_linux_dist.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/raptor_linux_dist.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/stlport.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/stlport.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/x86tool.meta</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/x86tool.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/apply_imgtools_variants.xml</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/shell/cmd.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/shell/generic.mk</info>
+<info>Up-to-date: /home/imk/symbian/gcc_surge/epoc32/tools/shell/sh.mk</info>
+<whatlog bldinf='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group/bld.inf' mmp='' config=''>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/java/symbianant.jar' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/bin/java/symbianant.jar'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/application-protocols/buildstubsis.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/application-protocols/buildstubsis.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/application-protocols/buildstubsis.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/application-protocols/buildstubsis.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildstubsis.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildstubsis.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildstubsis.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildstubsis.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildupgradesis.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildupgradesis.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildupgradesis.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildupgradesis.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/tzlocaltestserver.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/tzlocaltestserver.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/base_rvct_common.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/base_rvct_common.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/bootstrap.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/bootstrap.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/bootstrap.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/bootstrap.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/config.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/config.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/config.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/config.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/copy_default.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/copy_default.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/copy_default.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/copy_default.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/genexec.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/genexec.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/genexec.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/genexec.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_genbootinc.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_genbootinc.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_genbootinc.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_genbootinc.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_restricted_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_restricted_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_genbootinc.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_genbootinc.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_genbootinc.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_genbootinc.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.flm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.flm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_miniboot.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_miniboot.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_miniboot.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_miniboot.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/nand_fbr_offset.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/nand_fbr_offset.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/nand_fbr_offset.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/nand_fbr_offset.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.flm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.flm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_genbootinc.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_genbootinc.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_genbootinc.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_genbootinc.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.flm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.flm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/createcommdbs.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/createcommdbs.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/createcommdbs.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/createcommdbs.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_cpp_from_hdr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_cpp_from_hdr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/genpdrs.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/genpdrs.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/genpdrs.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/genpdrs.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/security/upsserver.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/security/upsserver.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/security/upsserver.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/security/upsserver.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/conversiontable.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/conversiontable.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/conversiontable.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/conversiontable.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_cpp.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_cpp.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_cpp.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_cpp.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_snm.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_snm.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_snm.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_snm.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_copytestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_copytestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/word_template.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/word_template.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/word_template.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/word_template.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/techview/uiklaf_resource.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/techview/uiklaf_resource.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/techview/uiklaf_resource.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/techview/uiklaf_resource.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.flm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.flm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/bldex.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/bldex.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/bldex.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/bldex.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/compsupp.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/compsupp.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/compsupp.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/compsupp.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/features.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/features.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/features.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/features.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/jni_ant_launch.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/jni_ant_launch.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/jni_ant_launch.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/jni_ant_launch.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/kif.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/kif.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/kif.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/kif.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/py2exe.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/py2exe.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/py2exe.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/py2exe.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/raptor_linux_dist.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/raptor_linux_dist.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/raptor_linux_dist.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/raptor_linux_dist.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/stlport.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/stlport.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/stlport.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/stlport.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/x86tool.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/x86tool.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/x86tool.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/x86tool.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/apply_imgtools_variants.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/apply_imgtools_variants.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/shell/cmd.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/shell/cmd.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/shell/generic.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/shell/generic.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/shell/sh.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/shell/sh.mk'/>
+</whatlog>
+<progress:discovery object_type='layers' count='1' />
+<progress:start object_type='layer' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683851.36' />
+<progress:end object_type='layer' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683851.37' />
+<progress:start object_type='layer' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683851.37' />
+<info>Running /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/talonctl start</info>
+<progress:discovery object_type='makefile' count='5' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683851.38' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683851.395214947' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683851.399416927' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683851.4' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683851.4' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683851.419947229' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683851.424146066' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683851.43' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683851.43' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683851.445129845' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683851.449333781' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683851.45' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683851.45' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683851.469996851' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683851.474167333' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683851.48' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default"  -j 4  TALON_DESCRAMBLE=1  cleanexport 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683851.48' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683851.494775648' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683851.499001094' />
+make: Nothing to be done for `cleanexport'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683851.5' />
+<info>Running /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/talonctl stop</info>
+<info>The make-engine exited successfully.</info>
+<progress:end object_type='layer' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683851.5' />
+<info>Run time 1 seconds</info>
+<info>Created/Updated toolcheck cache: /home/imk/symbian/gcc_surge/epoc32/build/toolcheck_cache_.tmp
+</info>
+</buildlog>
+>>> Exporting target sbsv1/buildsystem
+>>> SBS_HOME not defined. Assuming "/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor"
+>>> Build dir is "/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group"
+>>> Executing: /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/bin/sbs -c tools2 -b bld.inf export
+ export     : epoc32/tools/java/symbianant.jar
+ export     : epoc32/tools/makefile_templates/application-protocols/buildstubsis.mk
+ export     : epoc32/tools/makefile_templates/app-services/buildstubsis.mk
+ export     : epoc32/tools/makefile_templates/app-services/buildupgradesis.meta
+ export     : epoc32/tools/makefile_templates/app-services/buildupgradesis.mk
+ export     : epoc32/tools/makefile_templates/app-services/tzlocaltestserver.meta
+ export     : epoc32/tools/makefile_templates/app-services/tzlocaltestserver.mk
+ export     : epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.meta
+ export     : epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.mk
+ export     : epoc32/tools/makefile_templates/base/base_rvct_common.mk
+ export     : epoc32/tools/makefile_templates/base/bootstrap.meta
+ export     : epoc32/tools/makefile_templates/base/bootstrap.mk
+ export     : epoc32/tools/makefile_templates/base/config.meta
+ export     : epoc32/tools/makefile_templates/base/config.mk
+ export     : epoc32/tools/makefile_templates/base/copy_default.meta
+ export     : epoc32/tools/makefile_templates/base/copy_default.mk
+ export     : epoc32/tools/makefile_templates/base/genexec.meta
+ export     : epoc32/tools/makefile_templates/base/genexec.mk
+ export     : epoc32/tools/makefile_templates/base/h2_genbootinc.meta
+ export     : epoc32/tools/makefile_templates/base/h2_genbootinc.mk
+ export     : epoc32/tools/makefile_templates/base/h2_restricted_coreldr.meta
+ export     : epoc32/tools/makefile_templates/base/h2_restricted_coreldr.mk
+ export     : epoc32/tools/makefile_templates/base/h4_genbootinc.meta
+ export     : epoc32/tools/makefile_templates/base/h4_genbootinc.mk
+ export     : epoc32/tools/makefile_templates/base/h4_restricted_coreldr.meta
+ export     : epoc32/tools/makefile_templates/base/h4_restricted_coreldr.mk
+ export     : epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.meta
+ export     : epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.mk
+ export     : epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.meta
+ export     : epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.mk
+ export     : epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.meta
+ export     : epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.mk
+ export     : epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.meta
+ export     : epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.mk
+ export     : epoc32/tools/makefile_templates/base/lab_restricted_miniboot.flm
+ export     : epoc32/tools/makefile_templates/base/lab_restricted_miniboot.meta
+ export     : epoc32/tools/makefile_templates/base/lab_restricted_miniboot.mk
+ export     : epoc32/tools/makefile_templates/base/lab_restricted_miniboot.xml
+ export     : epoc32/tools/makefile_templates/base/lubbock_coreldr.meta
+ export     : epoc32/tools/makefile_templates/base/lubbock_coreldr.mk
+ export     : epoc32/tools/makefile_templates/base/lubbock_miniboot.meta
+ export     : epoc32/tools/makefile_templates/base/lubbock_miniboot.mk
+ export     : epoc32/tools/makefile_templates/base/nand_fbr_offset.meta
+ export     : epoc32/tools/makefile_templates/base/nand_fbr_offset.mk
+ export     : epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.meta
+ export     : epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.mk
+ export     : epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.flm
+ export     : epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.meta
+ export     : epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.mk
+ export     : epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.xml
+ export     : epoc32/tools/makefile_templates/base/omap3_genbootinc.meta
+ export     : epoc32/tools/makefile_templates/base/omap3_genbootinc.mk
+ export     : epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.flm
+ export     : epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.meta
+ export     : epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.mk
+ export     : epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.xml
+ export     : epoc32/tools/makefile_templates/converged-comms/createcommdbs.mk
+ export     : epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.meta
+ export     : epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.mk
+ export     : epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.mk
+ export     : epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.meta
+ export     : epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.mk
+ export     : epoc32/tools/makefile_templates/graphics/genpdrs.meta
+ export     : epoc32/tools/makefile_templates/graphics/genpdrs.mk
+ export     : epoc32/tools/makefile_templates/security/upsserver.mk
+ export     : epoc32/tools/makefile_templates/syslibs/conversiontable.mk
+ export     : epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.meta
+ export     : epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.mk
+ export     : epoc32/tools/makefile_templates/syslibs/generate_cpp.meta
+ export     : epoc32/tools/makefile_templates/syslibs/generate_cpp.mk
+ export     : epoc32/tools/makefile_templates/syslibs/generate_snm.meta
+ export     : epoc32/tools/makefile_templates/syslibs/generate_snm.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.mk
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.meta
+ export     : epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.mk
+ export     : epoc32/tools/makefile_templates/syslibs/word_template.meta
+ export     : epoc32/tools/makefile_templates/syslibs/word_template.mk
+ export     : epoc32/tools/makefile_templates/techview/uiklaf_resource.mk
+ export     : epoc32/tools/makefile_templates/tools/ant_launch.flm
+ export     : epoc32/tools/makefile_templates/tools/ant_launch.meta
+ export     : epoc32/tools/makefile_templates/tools/ant_launch.mk
+ export     : epoc32/tools/makefile_templates/tools/ant_launch.xml
+ export     : epoc32/tools/makefile_templates/tools/bldex.meta
+ export     : epoc32/tools/makefile_templates/tools/bldex.mk
+ export     : epoc32/tools/makefile_templates/tools/compsupp.meta
+ export     : epoc32/tools/makefile_templates/tools/compsupp.mk
+ export     : epoc32/tools/makefile_templates/tools/features.meta
+ export     : epoc32/tools/makefile_templates/tools/features.mk
+ export     : epoc32/tools/makefile_templates/tools/jni_ant_launch.meta
+ export     : epoc32/tools/makefile_templates/tools/jni_ant_launch.mk
+ export     : epoc32/tools/makefile_templates/tools/kif.meta
+ export     : epoc32/tools/makefile_templates/tools/kif.mk
+ export     : epoc32/tools/makefile_templates/tools/py2exe.meta
+ export     : epoc32/tools/makefile_templates/tools/py2exe.mk
+ export     : epoc32/tools/makefile_templates/tools/raptor_linux_dist.meta
+ export     : epoc32/tools/makefile_templates/tools/raptor_linux_dist.mk
+ export     : epoc32/tools/makefile_templates/tools/stlport.meta
+ export     : epoc32/tools/makefile_templates/tools/stlport.mk
+ export     : epoc32/tools/makefile_templates/tools/x86tool.meta
+ export     : epoc32/tools/makefile_templates/tools/x86tool.mk
+ export     : epoc32/tools/makefile_templates/tools/apply_imgtools_variants.xml
+ export     : epoc32/tools/shell/generic.mk
+ export     : epoc32/tools/shell/sh.mk
+
+no warnings or errors
+
+built 'tools2_deb'
+built 'tools2_rel'
+
+Run time 1 seconds
+
+sbs: build log in /home/imk/symbian/gcc_surge/epoc32/build/Makefile.2010-11-25-11-17-31.log
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<buildlog sbs_version="2.15.2 [ISODATE symbian build system CHANGESET]" xmlns="http://symbian.com/xml/build/log" xmlns:progress="http://symbian.com/xml/build/log/progress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build/log http://symbian.com/xml/build/log/1_0.xsd">
+<info>sbs: version 2.15.2 [ISODATE symbian build system CHANGESET]
+</info>
+<info>SBS_HOME /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor</info>
+<info>Set-up /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/sbs_init.xml</info>
+<info>Command-line-arguments -c tools2 -b bld.inf export</info>
+<info>Current working directory /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group</info>
+<info>Environment COLORTERM=gnome-terminal</info>
+<info>Environment DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-LalzvzunXH,guid=aa9f16d7d64950393775671800000027</info>
+<info>Environment DEFAULTS_PATH=/usr/share/gconf/gnome.default.path</info>
+<info>Environment DESKTOP_SESSION=gnome</info>
+<info>Environment DISPLAY=:0.0</info>
+<info>Environment EPOCROOT=/home/imk/symbian/gcc_surge</info>
+<info>Environment GDMSESSION=gnome</info>
+<info>Environment GDM_KEYBOARD_LAYOUT=gb</info>
+<info>Environment GDM_LANG=en_GB.utf8</info>
+<info>Environment GNOME_DESKTOP_SESSION_ID=this-is-deprecated</info>
+<info>Environment GNOME_KEYRING_CONTROL=/tmp/keyring-XwzaPr</info>
+<info>Environment GNOME_KEYRING_PID=1816</info>
+<info>Environment GTK_MODULES=canberra-gtk-module</info>
+<info>Environment HOME=/home/imk</info>
+<info>Environment HOSTPLATFORM=linux unknown libc2_12</info>
+<info>Environment HOSTPLATFORM_DIR=linux-unknown-libc2_12</info>
+<info>Environment INSIDE_NAUTILUS_PYTHON=</info>
+<info>Environment LANG=en_GB.utf8</info>
+<info>Environment LD_LIBRARY_PATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/lib:/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bv/lib:</info>
+<info>Environment LESSCLOSE=/usr/bin/lesspipe %s %s</info>
+<info>Environment LESSOPEN=| /usr/bin/lesspipe %s</info>
+<info>Environment LIBGL_DRIVERS_PATH=/usr/lib/fglrx/dri</info>
+<info>Environment LOGNAME=imk</info>
+<info>Environment LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</info>
+<info>Environment MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path</info>
+<info>Environment ORBIT_SOCKETDIR=/tmp/orbit-imk</info>
+<info>Environment PATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/bin:/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin:/home/imk/CodeSourcery/Sourcery_G++_Lite/bin:/home/imk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</info>
+<info>Environment PWD=/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group</info>
+<info>Environment PYGTK_USE_GIL_STATE_API=</info>
+<info>Environment PYTHONPATH=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/lib</info>
+<info>Environment SBS_HOME=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor</info>
+<info>Environment SESSION_MANAGER=local/imk-ubuntu:@/tmp/.ICE-unix/1835,unix/imk-ubuntu:/tmp/.ICE-unix/1835</info>
+<info>Environment SHELL=/bin/bash</info>
+<info>Environment SHLVL=2</info>
+<info>Environment SPEECHD_PORT=7560</info>
+<info>Environment SSH_AGENT_PID=1875</info>
+<info>Environment SSH_AUTH_SOCK=/tmp/keyring-XwzaPr/ssh</info>
+<info>Environment TERM=xterm</info>
+<info>Environment USER=imk</info>
+<info>Environment USERNAME=imk</info>
+<info>Environment WINDOWID=77721977</info>
+<info>Environment WINDOWPATH=7</info>
+<info>Environment XAUTHORITY=/var/run/gdm/auth-for-imk-xgBP6A/database</info>
+<info>Environment XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg</info>
+<info>Environment XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/</info>
+<info>Environment XDG_SESSION_COOKIE=7c0345339c8c8824da1edfbc4b3c9b7d-1290669647.265660-1417769536</info>
+<info>Environment _=/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/python27/bin/python</info>
+<info>Duplicate alias 'make' (the one from '/home/imk/symbian/gcc_surge/epoc32/sbs_config/s60_sbs_config.xml' will override the one in '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/lib/config/make.xml')</info>
+<info>Duplicate alias 'emake' (the one from '/home/imk/symbian/gcc_surge/epoc32/sbs_config/s60_sbs_config.xml' will override the one in '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/lib/config/make.xml')</info>
+<info>Buildable configuration 'tools2_deb'</info>
+<info>Buildable configuration 'tools2_rel'</info>
+<info>Loaded toolcheck cache: /home/imk/symbian/gcc_surge/epoc32/build/toolcheck_cache_.tmp
+</info>
+<info>OS version "vtb101sf" determined from file "/home/imk/symbian/gcc_surge/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "tools2_deb".</info>
+<info>'tools2_deb' uses variant hrh file '/home/imk/symbian/gcc_surge/epoc32/include/bldvariant.hrh'</info>
+<info>OS version "vtb101sf" determined from file "/home/imk/symbian/gcc_surge/epoc32/data/buildinfo.txt"</info>
+<info>applying the OS variant to the configuration "tools2_rel".</info>
+<info>'tools2_rel' uses variant hrh file '/home/imk/symbian/gcc_surge/epoc32/include/bldvariant.hrh'</info>
+<info>Processing /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group/bld.inf</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/bin/java/symbianant.jar to /home/imk/symbian/gcc_surge/epoc32/tools/java/symbianant.jar</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/application-protocols/buildstubsis.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/application-protocols/buildstubsis.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildstubsis.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildstubsis.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildupgradesis.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildupgradesis.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildupgradesis.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildupgradesis.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/tzlocaltestserver.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/tzlocaltestserver.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/base_rvct_common.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/base_rvct_common.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/bootstrap.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/bootstrap.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/bootstrap.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/bootstrap.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/config.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/config.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/config.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/config.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/copy_default.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/copy_default.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/copy_default.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/copy_default.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/genexec.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/genexec.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/genexec.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/genexec.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_genbootinc.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_genbootinc.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_genbootinc.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_genbootinc.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_restricted_coreldr.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_restricted_coreldr.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_genbootinc.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_genbootinc.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_genbootinc.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_genbootinc.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_coreldr.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_coreldr.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.flm to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.flm</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.xml to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.xml</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_coreldr.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_coreldr.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_coreldr.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_coreldr.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_miniboot.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_miniboot.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_miniboot.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_miniboot.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/nand_fbr_offset.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/nand_fbr_offset.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/nand_fbr_offset.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/nand_fbr_offset.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.flm to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.flm</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.xml to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.xml</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_genbootinc.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_genbootinc.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_genbootinc.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_genbootinc.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.flm to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.flm</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.xml to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.xml</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/createcommdbs.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/createcommdbs.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_cpp_from_hdr.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/genpdrs.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/genpdrs.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/genpdrs.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/genpdrs.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/security/upsserver.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/security/upsserver.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/conversiontable.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/conversiontable.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_cpp.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_cpp.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_cpp.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_cpp.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_snm.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_snm.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_snm.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_snm.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_copytestfiles.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/word_template.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/word_template.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/word_template.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/word_template.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/techview/uiklaf_resource.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/techview/uiklaf_resource.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.flm to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.flm</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.xml to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.xml</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/bldex.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/bldex.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/bldex.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/bldex.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/compsupp.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/compsupp.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/compsupp.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/compsupp.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/features.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/features.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/features.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/features.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/jni_ant_launch.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/jni_ant_launch.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/jni_ant_launch.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/jni_ant_launch.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/kif.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/kif.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/kif.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/kif.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/py2exe.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/py2exe.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/py2exe.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/py2exe.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/raptor_linux_dist.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/raptor_linux_dist.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/raptor_linux_dist.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/raptor_linux_dist.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/stlport.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/stlport.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/stlport.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/stlport.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/x86tool.meta to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/x86tool.meta</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/x86tool.mk to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/x86tool.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/apply_imgtools_variants.xml to /home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/apply_imgtools_variants.xml</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/shell/generic.mk to /home/imk/symbian/gcc_surge/epoc32/tools/shell/generic.mk</info>
+<info>Copied /home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/shell/sh.mk to /home/imk/symbian/gcc_surge/epoc32/tools/shell/sh.mk</info>
+<whatlog bldinf='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/group/bld.inf' mmp='' config=''>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/java/symbianant.jar' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/bin/java/symbianant.jar'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/application-protocols/buildstubsis.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/application-protocols/buildstubsis.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/application-protocols/buildstubsis.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/application-protocols/buildstubsis.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildstubsis.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildstubsis.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildstubsis.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildstubsis.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildupgradesis.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildupgradesis.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/buildupgradesis.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/buildupgradesis.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/tzlocaltestserver.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/tzlocaltestserver.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/base_rvct_common.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/base_rvct_common.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/bootstrap.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/bootstrap.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/bootstrap.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/bootstrap.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/config.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/config.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/config.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/config.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/copy_default.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/copy_default.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/copy_default.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/copy_default.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/genexec.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/genexec.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/genexec.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/genexec.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_genbootinc.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_genbootinc.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_genbootinc.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_genbootinc.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_restricted_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h2_restricted_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_genbootinc.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_genbootinc.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_genbootinc.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_genbootinc.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.flm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.flm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_miniboot.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_miniboot.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/lubbock_miniboot.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/lubbock_miniboot.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/nand_fbr_offset.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/nand_fbr_offset.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/nand_fbr_offset.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/nand_fbr_offset.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.flm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.flm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_genbootinc.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_genbootinc.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_genbootinc.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_genbootinc.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.flm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.flm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/createcommdbs.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/createcommdbs.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/createcommdbs.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/createcommdbs.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_cpp_from_hdr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_cpp_from_hdr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/genpdrs.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/genpdrs.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/graphics/genpdrs.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/graphics/genpdrs.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/security/upsserver.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/security/upsserver.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/security/upsserver.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/security/upsserver.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/conversiontable.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/conversiontable.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/conversiontable.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/conversiontable.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_cpp.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_cpp.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_cpp.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_cpp.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_snm.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_snm.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/generate_snm.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/generate_snm.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_copytestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_copytestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/word_template.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/word_template.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/syslibs/word_template.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/syslibs/word_template.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/techview/uiklaf_resource.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/techview/uiklaf_resource.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/techview/uiklaf_resource.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/techview/uiklaf_resource.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.flm' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.flm'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/ant_launch.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/ant_launch.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/bldex.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/bldex.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/bldex.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/bldex.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/compsupp.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/compsupp.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/compsupp.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/compsupp.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/features.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/features.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/features.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/features.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/jni_ant_launch.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/jni_ant_launch.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/jni_ant_launch.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/jni_ant_launch.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/kif.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/kif.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/kif.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/kif.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/py2exe.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/py2exe.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/py2exe.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/py2exe.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/raptor_linux_dist.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/raptor_linux_dist.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/raptor_linux_dist.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/raptor_linux_dist.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/stlport.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/stlport.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/stlport.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/stlport.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/x86tool.meta' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/x86tool.meta'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/x86tool.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/x86tool.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/makefile_templates/tools/apply_imgtools_variants.xml' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/extension/tools/apply_imgtools_variants.xml'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/shell/cmd.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/shell/cmd.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/shell/generic.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/shell/generic.mk'/>
+<export destination='/home/imk/symbian/gcc_surge/epoc32/tools/shell/sh.mk' source='/home/imk/symbian/gcc_surge/linux_build/sbsv1/buildsystem/shell/sh.mk'/>
+</whatlog>
+<progress:discovery object_type='layers' count='1' />
+<progress:start object_type='layer' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683852.1' />
+<progress:end object_type='layer' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683852.11' />
+<progress:start object_type='layer' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683852.11' />
+<info>Running /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/talonctl start</info>
+<progress:discovery object_type='makefile' count='5' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683852.12' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683852.136566159' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683852.140795517' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.export' time='1290683852.14' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683852.14' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683852.161518162' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683852.165729989' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.bitmap' time='1290683852.17' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683852.17' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683852.186967501' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683852.191121220' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource_deps' time='1290683852.19' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683852.19' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683852.211798747' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683852.216046822' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.resource' time='1290683852.22' />
+<info>Making /home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default</info>
+<info>Executing '/home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/make HAVE_ORDERONLY=1 -r -f  "/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default"  -j 4  TALON_DESCRAMBLE=1  export 2&gt;'/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default.stderr' '</info>
+<progress:start object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683852.22' />
+<progress:start object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683852.237033325' />
+<progress:end object_type='makefile' task='parse' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683852.241188582' />
+make: Nothing to be done for `export'.
+<progress:end object_type='makefile' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all.default' time='1290683852.24' />
+<info>Running /home/imk/symbian/gcc_surge/linux_build/sbsv2/raptor/linux-unknown-libc2_12/bin/talonctl stop</info>
+<info>The make-engine exited successfully.</info>
+<progress:end object_type='layer' task='build' key='/home/imk/symbian/gcc_surge/epoc32/build/Makefile_all' time='1290683852.25' />
+<info>Run time 1 seconds</info>
+<info>Created/Updated toolcheck cache: /home/imk/symbian/gcc_surge/epoc32/build/toolcheck_cache_.tmp
+</info>
+</buildlog>
+>>> Exported all eligible targets:-
++++ sbsv1/abld
++++ sbsv1/buildsystem
--- a/cross-plat-dev-utils/fix_epoc32.pl	Mon Nov 15 10:57:53 2010 +0000
+++ b/cross-plat-dev-utils/fix_epoc32.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -14,6 +14,8 @@
 use check_os;
 use perl_run;
 
+my $rc = perl_run("fix_tool_exports.pl @ARGV");
+exit $rc, if $rc;
 if (os_is_windows()) {
 	exit perl_run("fix_epoc32_win.pl @ARGV");
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cross-plat-dev-utils/fix_tool_exports.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,133 @@
+#!/usr/bin/perl
+# Copyright (c) 2010 Symbian Foundation Ltd
+# 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:
+# Mike Kinghan, mikek@symbian.org, for Symbian Foundation Ltd - initial contribution.
+
+# Script to perform all fix-up exports from this package.
+
+use strict;
+use perl_run;
+use places;
+use check_os;
+my $keepgoing = 0;
+my @exported = ();
+my @failed = ();
+my @skipped = ();
+# These are the targets that need exports performed.
+my @needed_exports = ("sbsv1/abld","sbsv1/buildsystem");
+
+sub export($)
+{
+	my $targ = shift;
+	return, if (is_exported($targ));
+	print ">>> Cleaning exports for target $targ\n";
+	my $rc = perl_run("build_target.pl $targ cleanexport");
+	if ($rc) {
+		print "*** Failed to clean exports for target $targ ***\n";
+		if ($keepgoing) {
+			push(@failed,$targ);
+		} else {
+			exit $rc;
+		}
+	} else { 
+		print ">>> Exporting target $targ\n";
+		my $rc = perl_run("build_target.pl $targ export");
+		if ($rc) {
+			print "*** Failed to export target $targ ***\n";
+			if ($keepgoing) {
+				push(@failed,$targ);
+			} else {
+				exit $rc;
+			}
+		} else { 
+			push(@exported,$targ);
+		}
+	}
+}
+
+sub is_exported($)
+{
+	my $targ = shift;
+	return grep(/$targ/,@exported) != 0;
+}
+
+if (@ARGV) {
+    if (grep(/$ARGV[0]/,("-h","--help"))) {
+        print "This script performs all necessary exports from the targets under the sbsv1 directory " .
+			"to fix up the exports to epoc32/tools.";
+        print "Valid arguments are -h, --help; -k, --keepgoing, or none.\n";
+		print "-k, --keepgoing makes the script carry on after a failed export,\n";
+		exit 0;  
+	} elsif (grep(/$ARGV[0]/,("-k","--keepgoing"))) {
+		$keepgoing = 1;
+	} else {
+	    print "Valid arguments are -h, --help; -k, --keepgoing, or none.\n".
+        exit 1;
+    }         
+}
+my $epocroot = get_epocroot();
+my @targ_lines = perl_slurp("list_targets.pl");
+open DEPS,"<deps.txt" or die $!;
+my @deps = <DEPS>;
+close DEPS;
+while (@deps and $deps[0] =~ /^\s*#/) {
+	shift @deps;
+}
+foreach my $dep (@deps) {
+	chomp $dep;
+}
+foreach my $line (@targ_lines) {
+	chomp $line;
+	next, unless ($line =~ /^sbsv1/); 
+	next, unless (grep(/$line/,@needed_exports));
+	next, if ($line =~ /^>>>/);
+	if ($line =~ /(\*\*\*.*\*\*\*)/) {
+		my $reason = $1;
+		my @words = split(/ /,$line);
+		print ">>> Skipping target $words[0]: \"$reason\"\n";
+		push (@skipped,[$words[0],$reason]);
+	} else {
+		foreach my $dep (@deps) {
+			my ($targ,$prereq) = split(/ /,$dep);
+			if (os_is_windows()) {
+                $targ =~ s/\./\\/g;
+                $prereq =~ s/\./\\/g;                
+            } else {
+                $targ =~ s/\./\//g;
+                $prereq =~ s/\./\//g;                            
+            }
+			next, unless ($targ eq $line);
+			export($prereq);
+		}
+		export($line);
+	}
+}
+if (@exported) {
+	if (@failed == 0) {
+		print ">>> Exported all eligible targets:-\n";
+	} else {
+		print ">>> Exported eligible targets:-\n";
+	}
+	foreach my $targ (@exported) {
+		print "+++ $targ\n";
+	}
+}
+if (@failed) {
+	print ">>> Failed to export eligible targets:-\n";
+	foreach my $targ (@failed) {
+		print "+++ $targ\n";
+	}
+} 
+if (@skipped) {
+	print ">>> Skipped targets:-\n";
+	foreach my $skipped (@skipped) {
+		print "+++ " . $skipped->[0] . ' ' . $skipped->[1] . "\n";
+	}
+}
+exit 0;
+
--- a/e32tools/armasm2as.pl	Mon Nov 15 10:57:53 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,455 +0,0 @@
-# Copyright (c) 2002-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:
-# Mike Kinghan, mikek@symbian.org, for Symbian Foundation
-#
-# Description:
-# e32toolp\e32util\armasm2as.pl
-# Convert an ARMASM assembler source or include file to AS format
-# Syntax:
-# perl armasm2as.pl <input> <output>
-# 
-#
-
-if (scalar(@ARGV)!=2) {
-	die "perl armasm2as.pl <input> <output>\n";
-}
-my ($infile, $outfile) = @ARGV;
-open IN, $infile or die "Can't open $infile for input\n";
-my $gccfile;
-my @input;
-while (<IN>) {
-	push @input, $_;
-	next if defined($gccfile);
-	next if (/^\s*$/);
-	if (/^\s*\@/) {
-		$gccfile = 1;	# If first non-blank line starts with @, assume already in GCC format
-	} else {
-		$gccfile = 0;
-	}
-}
-close IN;
-my @output;
-my $outref = \@output;
-if ($gccfile) {
-	$outref = \@input;
-} else {
-	process(\@input, \@output);
-}
-open OUT, ">$outfile" or die "Can't open $outfile for write\n";
-print OUT @$outref;
-close OUT;
-
-
-
-sub process($$) {
-	my $level=0;
-	my @block;
-	my ($inref, $outref) = @_;
-	foreach $line (@$inref) {
-		$line=~s/\s*$//;
-		my $comment;
-		if ($line =~ /\;(.*)$/o) {
-			$comment = $1;
-			$line =~ s/\;(.*)$//o;
-			if ($line =~ /^\s*$/o and $level==0) {
-				push @$outref, "$line\@$comment\n";
-				next;
-			}
-			$comment = "\t\@$comment";
-		}
-		if ($line =~ /^\s+PRESERVE8/) {
-			next;
-		}
-		if ($level == 1) {
-			if ($line =~ /^\s+MEND/i) {
-				process_macro(\@block, $outref);
-				$level = 0;
-			} else {
-				push @block, $line;
-			}
-			next;
-		} elsif ($level == 0) {
-			if ($line =~ /^\s+MACRO\s*$/i) {
-				@block = ();
-				$level = 1;
-				next;
-			}
-		}
-		if ($line =~ /^\s+GBLL\s+(\S+)/i) {
-			push @$outref, "\t.set\t$1, 0$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+GBLA\s+(\S+)/i) {
-			push @$outref, "\t.set\t$1, 0$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+INCLUDE\s+(\S+)/i) {
-			my $arg = $1;
-			if ($arg =~ /(\w+)\.inc/io) {
-				$arg = $1.'.ginc';
-			}
-			push @$outref, "\t.include\t\"$arg\"$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+IMPORT\s+(\S+)/i) {
-			push @$outref, "\t.extern\t$1$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+EXPORT\s+(\S+)/i) {
-			push @$outref, "\t.global\t$1$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+ELSE/i or $line =~ /^\s+\|/i ) {
-			push @$outref, "\t.else$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+ENDIF/i or $line =~ /^\s+\]/i) {
-			push @$outref, "\t.endif$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+LTORG/i) {
-			push @$outref, "\t.ltorg$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+END$/i) {
-			next;
-		}
-		if ($line =~ /^\s+\!\s*(\d+)\,\s*(.*?)$/) {
-			my $msg = $2;
-			push @$outref, "\t.print $msg\n\t.err$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+INIT_LOGICAL_SYMBOL\s+(\w+)(.*?)$/) {
-			process_init_logical_symbol($1, $2, $outref, $comment);
-			next;
-		}
-		if ($line =~ /^\s+INIT_NUMERIC_SYMBOL\s+(\w+)\s*\,\s*(.*?)$/) {
-			process_init_numeric_symbol($1, $2, $outref, $comment);
-			next;
-		}
-		if ($line =~ /^\s+AREA\s+(.*?)$/) {
-			process_area($1, $outref, $comment);
-			next;
-		}
-		if ($line =~ /^\s+\%\s+(.*?)$/) {
-			my $expr = process_numeric_expr($1, $outref);
-			push @$outref, "\t.space $expr$comment\n";
-			next;
-		}
-		if ($line =~ /^\s+ALIGN\s*(.*?)$/) {
-			process_align($1, $outref, $comment);
-			next;
-		}
-
-		# Strip label if there is one
-		my $label;
-		if ($line =~ /^(\S+)\s*(.*?)$/) {
-			$label = $1;
-			$line = $2;
-		} else {
-			$line =~ s/^\s*//;
-		}
-		if ($line =~ /^SETL\s+(\S+)/i) {
-			my $val = $1;
-			my $expr = process_logical_expr($val, $outref);
-			push @$outref, "\t.set\t$label,$expr$comment\n";
-			next;
-		}
-		if ($line =~ /^SETA\s+(.*?)$/i) {
-			my $val = $1;
-			my $expr = process_numeric_expr($val, $outref);
-			push @$outref, "\t.set\t$label,$expr$comment\n";
-			next;
-		}
-		if ($line =~ /^(EQU|\*)\s+(.*?)$/i) {
-			my $val = $2;
-			my $expr = process_numeric_expr($val, $outref);
-			push @$outref, "\t.equ\t$label,$expr$comment\n";
-			next;
-		}
-		if ($line =~ /^(if|\[)\s+(.*?)$/i) {
-			my $cond = $2;
-			if ($cond =~ /^\s*(\:LNOT\:)?\s*\:DEF\:\s*(.*?)$/i) {
-				my $n = $1;
-				my $sym = $2;
-				if ($sym =~ /^(\w|\\|\:)+$/) {
-					if (uc($n) eq ':LNOT:') {
-						push @$outref, "\t.ifndef\t$sym$comment\n";
-					} else {
-						push @$outref, "\t.ifdef\t$sym$comment\n";
-					}
-					next;
-				}
-			}
-			my $expr = process_logical_expr($cond, $outref);
-			push @$outref, "\t.if $expr$comment\n";
-			next;
-		}
-		if ($line =~ /^(\=|DCB)\s*(.*?)$/) {
-			process_dcb($label, $2, $outref, $comment);
-			next;
-		}
-		if ($line =~ /^DCW\s*(.*?)$/) {
-			process_dcw($label, $1, $outref, $comment);
-			next;
-		}
-		if ($line =~ /^DCD\s*(.*?)$/) {
-			process_dcd($label, $1, $outref, $comment);
-			next;
-		}
-		if ($line =~ /^ROUT\s*$/) {
-			$line = '';
-		}
-		if ($line =~ /^(\w+)\s+\%(\w+)\s*$/o) {
-			# ARMASM local label reference
-			my $inst = $1;
-			my $llab = $2;
-			if ($llab =~ /F\w?(\d+)/o) {
-				$line = "$inst $1f";
-			} elsif ($llab =~ /B\w?(\d+)/o) {
-				$line = "$inst $1b";
-			} else {
-				die "Can't determine local label direction\n";
-			}
-		}
-		if ($line =~ /^(\w+)\s+(\w+)\s*\,\s*\%(\w+)\s*$/o) {
-			# ARMASM local label reference
-			my $inst = $1;
-			my $op1 = $2;
-			my $llab = $3;
-			if ($llab =~ /F\w?(\d+)/o) {
-				$line = "$inst $op1\, $1f";
-			} elsif ($llab =~ /B\w?(\d+)/o) {
-				$line = "$inst $op1\, $1b";
-			} else {
-				die "Can't determine local label direction\n";
-			}
-		}
-
-		$line = process_numeric_expr($line, $outref);
-		if (defined($label)) {
-			push @$outref, "$label\:\t$line$comment\n";
-		} else {
-			push @$outref, "\t$line$comment\n";
-		}
-	}
-}
-
-
-sub process_macro($$) {
-	my ($inref, $outref) = @_;
-	my $line;
-	while(1) {
-		$line = shift @$inref;
-		last if ($line !~ /^\s*$/);
-	}
-	unless ($line =~ /^\s+(\w+)\s*(.*?)$/) {
-		die "Bad macro - no name\n";
-	}
-	my $macro_name = $1;
-	if ($macro_name eq 'INIT_LOGICAL_SYMBOL' or $macro_name eq 'INIT_NUMERIC_SYMBOL') {
-		return;
-	}
-	$line = $2;
-	my @args = split ( '\s*,\s*', $line );
-	foreach (@args) {
-		die "Bad macro argument name\n" unless (/^\$\w+$/);
-		s/^\$//;
-	}
-	my $ev = '';
-	foreach $arg (@args) {
-		$ev.="s/\\\$$arg(\\W\|\$)/\\\\$arg\$1/go;";
-	}
-	foreach (@$inref) {
-		eval $ev;
-	}
-	push @$outref, "\t.macro $macro_name ".join(',',@args)."\n";
-	process($inref, $outref);
-	push @$outref, "\t.endm\n";
-}
-
-
-sub process_logical_expr($$) {
-	my ($val, $outref) = @_;
-	$val = process_numeric_expr($val, $outref);
-	$val =~ s/\<\=/________LE________/g;	# protect <= and >= during expansion of =
-	$val =~ s/\>\=/________GE________/g;
-	$val =~ s/\=/\=\=/g;					# equality operator is = on ARMASM, == on AS
-	$val =~ s/________LE________/\<\=/g;
-	$val =~ s/________GE________/\>\=/g;
-	$val =~ s/\{TRUE\}/(1)/g;
-	$val =~ s/\{FALSE\}/(0)/g;
-
-	my @lops = split( /(\s*\:LAND\:\s*|\s*\:LOR\:\s*|\s*\:LNOT\:\s*|\s*\:DEF\:\s*|\s*\(\s*|\s*\)\s*)/, $val );
-	my @lops2;
-	foreach (@lops) {
-		s/\s*\:LAND\:\s*/\:LAND\:/go;
-		s/\s*\:LOR\:\s*/\:LOR\:/go;
-		s/\s*\:LNOT\:\s*/\:LNOT\:/go;
-		s/\s*\:DEF\:\s*/\:DEF\:/go;
-	}
-	my @lops2;
-	while (scalar (@lops)) {
-		my $x = shift @lops;
-		if ($x eq ':DEF:') {
-			my $sym = shift @lops;
-			$sym =~ s/^\s*//;
-			$sym =~ s/\s*$//;
-			if ($sym =~ /^(\w|\$|\\)+$/) {
-				push @$outref, "\t.ifdef $sym\n\t.set __defined__$sym, 1\n\t.else\n\t.set __defined__$sym, 0\n\t.endif\n";
-				push @lops2, " __defined__$sym ";
-			} else {
-				die "Bad :DEF: operand $sym\n";
-			}
-		} elsif ($x eq ':LAND:') {
-			push @lops2, ' && ';
-		} elsif ($x eq ':LOR:') {
-			push @lops2, ' || ';
-		} else {
-			push @lops2, $x;
-		}
-	}
-	my @lops3;
-	while (scalar (@lops2)) {
-		my $x = shift @lops2;
-		if ($x eq ':LNOT:') {
-			my $operand;
-			while (1) {
-				$operand = shift @lops2;
-				last if ($operand !~ /^\s*$/);
-			}
-			push @lops3, "(0==($operand))";
-		} else {
-			push @lops3, $x;
-		}
-	}
-	return join('',@lops3);
-}
-
-sub process_numeric_expr($$) {
-	my ($val, $outref) = @_;
-	$val =~ s/\&/0x/g;			# ARMASM accepts hex numbers starting with & or 0x, AS only accepts 0x
-	$val =~ s/(\W|^)2_([0|1]+)(\W|$)/$1 0b$2$3/g;	# Binary numbers start with 2_ on ARMASM, 0b on AS
-	$val =~ s/\:AND\:/\&/g;
-	$val =~ s/\:OR\:/\|/g;
-	$val =~ s/\:SHL\:/\<\</g;
-	$val =~ s/\:SHR\:/\>\>/g;
-	return $val;
-}
-
-sub process_init_logical_symbol($$$$) {
-	my ($name, $rest, $outref, $comment) = @_;
-	my $counter;
-	if ($rest =~ /^\s*\,\s*(\w+)\s*$/) {
-		$counter = $1;
-	} elsif ($rest !~ /^\s*$/) {
-		die "Bad INIT_LOGICAL_SYMBOL\n";
-	}
-	push @$outref, "\t.ifndef $name$comment\n\t.set $name, 0\n\t.else\n\t.set $name, 1\n";
-	if ($counter) {
-		push @$outref, "\t.set $counter, $counter \+ 1\n";
-	}
-	push @$outref, "\t.endif\n";
-}
-
-sub process_init_numeric_symbol($$$$) {
-	my ($name, $value, $outref, $comment) = @_;
-	my $expr = process_numeric_expr($value, $outref);
-	push @$outref, "\t.ifndef $name$comment\n\t.set $name, $expr\n\t.endif\n";
-}
-
-sub process_area($$$) {
-	my ($line, $outref, $comment) = @_;
-	my @args = split(',',$line);
-	my $align = 0;
-	foreach (@args) {
-		if (/^\s*ALIGN\s*\=\s*(\d+)\s*$/) {
-			$align = $1;
-		}
-	}
-	push @$outref, "\t.text$comment\n\t.p2align $align\n";
-}
-
-sub process_align($$$) {
-	my ($line, $outref, $comment) = @_;
-	if ($line =~ /^\s*$/o) {
-		push @$outref, "\t.align$comment\n";
-	} else {
-		push @$outref, "\t.balign $line$comment\n";
-	}
-}
-
-sub process_dcb($$$$) {
-	my ($label, $args, $outref, $comment) = @_;
-	if (defined($label)) {
-		push @$outref, "$label\:";
-	}
-	while ($args !~ /^\s*$/) {
-		my $arg;
-		$args =~ s/^\s*//;
-		if ($args =~ /^\"/) {
-			$args =~ s/\\\"/________ESCAPED_QUOTE________/go;
-			$args =~ /\"(.*?)\"\s*(.*?)$/o or die "Unterminated string literal\n";
-			$arg = $1;
-			$args = $2;
-			$arg =~ s/________ESCAPED_QUOTE________/\\\"/go;
-			push @$outref, "\t.ascii \"$arg\"$comment\n";
-			undef $comment;
-			last if ($args !~ /\s*\,(.*?)$/o);
-			$args = $1;
-		} else {
-			$args =~ /(.*?)\s*(\,|$)(.*?)$/o;
-			$arg = $1;
-			$args = $3;
-			my $expr = process_numeric_expr($arg, $outref);
-			push @$outref, "\t.byte $expr$comment\n";
-			undef $comment;
-		}
-	}
-}
-
-sub process_dcw($$$$) {
-	my ($label, $args, $outref, $comment) = @_;
-	if (defined($label)) {
-		push @$outref, "$label\:";
-	}
-	while ($args !~ /^\s*$/) {
-		my $arg;
-		$args =~ s/^\s*//;
-		$args =~ /(.*?)\s*(\,|$)(.*?)$/o;
-		$arg = $1;
-		$args = $3;
-		my $expr = process_numeric_expr($arg, $outref);
-		push @$outref, "\t.hword $expr$comment\n";
-		undef $comment;
-	}
-}
-
-sub process_dcd($$$$) {
-	my ($label, $args, $outref, $comment) = @_;
-	if (defined($label)) {
-		push @$outref, "$label\:";
-	}
-	while ($args !~ /^\s*$/) {
-		my $arg;
-		$args =~ s/^\s*//;
-		$args =~ /(.*?)\s*(\,|$)(.*?)$/o;
-		$arg = $1;
-		$args = $3;
-		my $expr = process_numeric_expr($arg, $outref);
-		push @$outref, "\t.word $expr$comment\n";
-		undef $comment;
-	}
-}
-
-
-
--- a/imgtools/romtools/maksym/maksym.pl	Mon Nov 15 10:57:53 2010 +0000
+++ b/imgtools/romtools/maksym/maksym.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -1,3 +1,4 @@
+#!/usr/bin/perl
 #
 # Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
@@ -20,24 +21,39 @@
 use English;
 use FindBin;		# for FindBin::Bin
 
-my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
-
-BEGIN {
-    # check user has a version of perl that will cope require 5.005_03;
-    # establish the path to the Perl libraries: currently the same directory as this script
-    $PerlLibPath = $FindBin::Bin; # X:/epoc32/tools
-    $PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
-    $PerlLibPath .= "\\";
-}
-
-use lib $PerlLibPath;
-use Modload;
-Load_SetModulePath($PerlLibPath);
-
 # Globals
 my $maksym = "";
 my $rombuild;
 my $debug = 0;
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+my $on_windows;
+my $toolpath;
+
+sub nix_fixes {
+#	Fix case-sensitivity offenders for unix/linux environment.
+	$toolpath = $PerlLibPath;
+	my $modload_pm = File::Spec->catfile($toolpath,"modload.pm");
+	my $ModLoad_pm = File::Spec->catfile($toolpath,"ModLoad.pm");
+	# Create symlinks for case-sensitively misnamed modules we need.
+	unless ( -f $ModLoad_pm or -l $ModLoad_pm) {
+		symlink($modload_pm,$ModLoad_pm);
+	}
+}
+
+BEGIN {
+	$on_windows = $^O =~ /^MSWin/ ? 1 : 0;
+    # check user has a version of perl that will cope require 5.005_03;
+    # establish the path to the Perl libraries: currently the same directory as this script
+    $PerlLibPath = $FindBin::Bin; # X:/epoc32/tools
+#    $PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+#    $PerlLibPath .= "\\";
+	nix_fixes(), unless ($on_windows);
+}
+
+use lib $PerlLibPath;
+use ModLoad;
+Load_SetModulePath($PerlLibPath);
+
 
 &args;
 &main;
--- a/imgtools/romtools/rombuild/romnibus.pl	Mon Nov 15 10:57:53 2010 +0000
+++ b/imgtools/romtools/rombuild/romnibus.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -549,15 +549,33 @@
 	system("zip $zipname $romname");
 }
 if ($opts{symbol}) {
+	my $maksym = File::Spec->catfile($toolpath,"maksym.pl");
 	my $logname=$romname;
 	$logname =~ s/\.(\w+)$/\.log/i;
 	my $obyname=$romname;
 	$obyname =~ s/\.(\w+)$/\.oby/i;
 	unlink $logname;
 	unlink $obyname;
-	system("rename rombuild.log $logname");
-	system("rename rom.oby $obyname");
-	system("maksym $logname");
+	unless (rename("ROMBUILD.LOG",$logname)) {
+		print "\"rename ROMBUILD.LOG -> $logname\" failed: $!\n";
+		exit 1;
+	}
+	unless (rename("rom.oby",$obyname)) {
+		print "\"rename rom.oby -> $obyname\" failed: $!\n";
+		exit 1;
+	}
+	if (system("$maksym $logname")) {
+		print "\"maksym.pl $logname\" failed: $!\n";
+		exit 1;
+	}
+	unless (rename($logname,"ROMBUILD.LOG")) {
+		print "\"rename $logname -> ROMBUILD.LOG\" failed: $!\n";
+		exit 1;
+	}
+	unless (rename($obyname,"rom.oby")) {
+		print "rename $obyname -\. rom.oby\" failed: $!\n";
+		exit 1;
+	}
 }
 
 #IMK if ($nerrors || $nwarnings || $rerrors) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/bldmake/abld.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1107 @@
+# 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:
+#
+
+
+use FindBin;		# for FindBin::Bin
+use Getopt::Long;
+
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+
+BEGIN {
+# check user has a version of perl that will cope
+	require 5.005_03;
+# establish the path to the Perl libraries: currently the same directory as this script
+	$PerlLibPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+	$PerlLibPath .= "\\";
+}
+
+use lib $PerlLibPath;
+use E32env;
+use CheckSource;
+use FCLoggerUTL;
+use featurevariantparser;
+
+if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+		
+			$ENV{MAKE} = 'make' unless defined $ENV{MAKE};
+}
+
+# command data structure
+my %Commands=(
+	BUILD=>{
+		build=>1,
+		program=>1,
+		what=>1,
+		function=>'Combines commands EXPORT,MAKEFILE,LIBRARY,RESOURCE,TARGET,FINAL',
+		subcommands=>['EXPORT','MAKEFILE', 'LIBRARY', 'RESOURCE', 'TARGET', 'FINAL'],
+		savespace=>1,
+        instructionset=>1,
+		debug=>1,
+		no_debug=>1,
+		logfc=>1,
+		checksource=>1,
+		wrap=>1, #To support Compiler wrapper option along with BUILD command
+	},
+	CLEAN=>{
+		build=>1,
+		program=>1,
+		function=>'Removes everything built with ABLD TARGET',
+		what=>1,
+	},
+	CLEANALL=>{
+		program=>1,
+		function=>'Removes everything built with ABLD TARGET',
+		what=>1,
+	},
+	CLEANEXPORT=>{
+		function=>'Removes files created by ABLD EXPORT',
+		what=>1,
+		noplatform=>1,
+	},
+	CLEANMAKEFILE=>{
+		program=>1,
+		function=>'Removes files generated by ABLD MAKEFILE',
+		what=>1,
+		hidden=>1,
+	},
+	EXPORT=>{
+		noplatform=>1,
+		what=>1,
+		function=>'Copies the exported files to their destinations',
+	},
+	FINAL=>{
+		build=>1,
+		program=>1,
+		function=>'Allows extension makefiles to execute final commands',
+	},
+	FREEZE=>{
+		program=>1,
+		remove=>1,
+		function=>'Freezes exported functions in a .DEF file',
+	},
+	HELP=>{
+		noplatform=>1,
+		function=>'Displays commands, options or help about a particular command',
+		notest=>1,
+	},
+	LIBRARY=>{
+		program=>1,
+		function=>'Creates import libraries from the frozen .DEF files',
+	},
+	LISTING=>{
+		build=>1,
+		program=>1,
+		function=>'Creates assembler listing file for corresponding source file',
+		source=>1,	
+	},
+	MAKEFILE=>{
+		program=>1,
+		function=>'Creates makefiles or IDE workspaces',
+		what=>1,
+		savespace=>1,
+		instructionset=>1,
+		debug=>1,
+		no_debug=>1,
+		logfc=>1,
+		wrap=>1, #To support Compiler wrapper option along with MAKEFILE command
+        },
+	REALLYCLEAN=>{
+		build=>1,
+		program=>1,
+		function=>'As CLEAN, but also removes exported files and makefiles',
+		what=>1,
+		subcommands=>['CLEANEXPORT', 'CLEAN', 'CLEANALL'],
+	},
+	RESOURCE=>{
+		build=>1,
+		program=>1,
+		function=>'Creates resource files, bitmaps and AIFs',
+	},
+#	ROMFILE=>{
+#		function=>'Under development - syntax not finalised',
+#		noverbose=>1,
+#		nokeepgoing=>1,
+#		hidden=>1,
+#	},
+	ROMFILE=>{
+		noverbose=>1,
+		build=>1,
+		program=>1,
+		function=>'generates an IBY file to include in a ROM'
+	},
+	SAVESPACE=>{
+		build=>1,
+		program=>1,
+		what=>1,
+		function=>'As TARGET, but deletes intermediate files on success',
+		hidden=>1, # hidden because only used internally from savespace flag
+	},
+	TARGET=>{
+		build=>1,
+		program=>1,
+		what=>1,
+		function=>'Creates the main executable and also the resources',
+		savespace=>1,
+		checksource=>1,
+		wrap=>1, #To support Compiler wrapper option along with TARGET command
+	},
+	TIDY=>{
+		build=>1,
+		program=>1,
+		function=>'Removes executables which need not be released',
+	}
+);
+
+# get the path to the bldmake-generated files
+# we can perhaps work this out from the current working directory in later versions
+my $BldInfDir;
+my $PrjBldDir;
+BEGIN {
+	$BldInfDir=shift @ARGV;
+	$PrjBldDir=$E32env::Data{BldPath};
+	$PrjBldDir=~s-^(.*)\\-$1-o;
+	$PrjBldDir.=$BldInfDir;
+	$PrjBldDir=~m-(.*)\\-o; # remove backslash because some old versions of perl can't cope
+	unless (-d $1) {
+		die "ABLD ERROR: Project Bldmake directory \"$PrjBldDir\" does not exist\n";
+	}
+}
+
+# check the platform module exists and then load it
+BEGIN {
+	unless (-e "${PrjBldDir}Platform.pm") {
+		die "ABLD ERROR: \"${PrjBldDir}Platform.pm\" not yet created\n";
+	}
+}
+use lib $PrjBldDir;
+use Platform;
+
+# change directory to the BLD.INF directory - we might begin to do
+# things with relative paths in the future.
+chdir($BldInfDir) or die "ABLD ERROR: Can't CD to \"$BldInfDir\"\n";
+
+# MAIN PROGRAM SECTION
+{
+
+#	PROCESS THE COMMAND LINE
+	my %Options=();
+	unless (@ARGV) {
+		&Usage();
+	}
+
+#	Process options and check that all are recognised
+# modified start: added functionality checkwhat
+	unless (GetOptions(\%Options, 'checkwhat|cw','check|c', 'keepgoing|k', 'savespace|s', 'verbose|v',
+						'what|w', 'remove|r', 'instructionset|i=s',
+						'checksource|cs', 'debug','no_debug', 'logfc|fc','wrap:s')) { 
+		exit 1;
+	}
+# modified end: added functionality checkwhat
+
+#	check the option combinations
+# modified start: added functionality checkwhat
+	if ($Options{checkwhat} ) { 
+		$Options{check}=1;
+	}
+# modified end: added functionality checkwhat
+	if (($Options{check} and $Options{what})) {
+		&Options;
+	}
+	if (($Options{check} or $Options{what}) and ($Options{keepgoing} or $Options{savespace} or $Options{verbose})) {
+		&Options();
+	}
+	if ($Options{checksource} and $Options{what}) {
+		&Options();
+	}
+
+
+#	take the test parameter out of the command-line if it's there
+	my $Test='';
+	if (@ARGV && $ARGV[0]=~/^test$/io) {
+		$Test='test';
+		shift @ARGV;
+	}
+
+#	if there's only the test parameter there, display usage
+	unless (@ARGV) {
+		&Usage();
+	}
+
+#	get the command parameter out of the command line
+	my $Command=uc shift @ARGV;
+	unless (defined $Commands{$Command}) {
+		&Commands();
+	}
+	my %CommandHash=%{$Commands{$Command}};
+
+#	check the test parameter is not specified where it shouldn't be
+	if ($Test and $CommandHash{notest}) {
+		&Help($Command);
+	}
+
+#	check the options are suitable for the commands
+#	-verbose and -keepgoing have no effect in certain cases
+	if ($Options{what} or $Options{check}) {
+		unless ($CommandHash{what}) {
+			&Help($Command);
+		}
+	}
+	#Function Call Logger
+	if ($Options{logfc}) {
+		unless ($CommandHash{logfc}) {
+			&Help($Command);
+		}
+	}
+	if ($Options{savespace}) {
+		unless ($CommandHash{savespace}) {
+			&Help($Command);
+		}
+	}
+	if ($Options{instructionset}) {
+		unless ($CommandHash{instructionset}) {
+			&Help($Command);
+		}
+	}
+	if ($Options{debug}) {
+		unless ($CommandHash{debug}) {
+			&Help($Command);
+		}
+	}
+	if ($Options{no_debug}) {
+		unless ($CommandHash{no_debug}) {
+			&Help($Command);
+		}
+	}
+
+	if ($Options{keepgoing}) {
+		if ($CommandHash{nokeepgoing}) {
+			&Help($Command);
+		}
+	}
+	if ($Options{verbose}) {
+		if ($CommandHash{noverbose}) {
+			&Help($Command);
+		}
+	}
+	if ($Options{remove}) {
+		unless ($CommandHash{remove}) {
+			&Help($Command);
+		}
+	}
+	if ($Options{checksource}) {
+		unless ($CommandHash{checksource}) {
+			&Help($Command);
+		}
+	}
+	#Compiler Wrapper support 
+	if (exists $Options{wrap}) {
+		unless ($CommandHash{wrap}) {
+			&Help($Command);
+		}
+	}
+
+#	process help command if necessary
+	if ($Command eq 'HELP') {
+		if (@ARGV) {
+			my $Tmp=uc shift @ARGV;
+			if (defined $Commands{$Tmp}) {
+				&Help($Tmp);
+			}
+			elsif ($Tmp eq 'OPTIONS') {
+				&Options();
+			}
+			elsif ($Tmp eq 'COMMANDS') {
+				&Commands();
+			}
+		}
+		&Usage();
+	}
+
+#	process parameters
+	my ($Plat, $Bld, $Program, $Source)=('','','','');
+	my %MakefileVariations;
+	my $FeatureVariantArg;
+        
+#	platform parameter first
+	unless ($CommandHash{noplatform}) {
+		unless ($Plat=uc shift @ARGV) {
+			$Plat='ALL'; # default
+		}
+		else {
+			# Explicit feature variant platforms take the form <base platform>.<variant name>
+			# e.g. armv5.variant1.
+			# If valid, we actually create and invoke a distinct variation of the "base" makefile
+			if ($Plat =~ /^(\S+)\.(\S+)$/)
+				{
+				$Plat = $1;
+				$FeatureVariantArg = uc($2);
+
+				if (!$Platform::FeatureVariantSupportingPlats{$Plat})
+					{
+					die "This project does not support platform \"$Plat\.$FeatureVariantArg\"\n";
+					}
+				else
+					{						
+					$MakefileVariations{$Plat} = &GetMakefileVariations($Plat, $FeatureVariantArg);
+					}
+				}
+
+			COMPARAM1 : {
+				if (grep(/^$Plat$/, ('ALL', @Platform::Plats))) {
+					last COMPARAM1;
+				}
+				if ($Plat =~ /(.*)EDG$/) {
+				    my $SubPlat = $1;
+				    if (grep(/^$SubPlat$/, ('ALL', @Platform::Plats))) {
+					last COMPARAM1;
+				    }
+				}
+#				check whether the platform might in fact be a build, and
+#				set the platform and build accordingly if it is
+				if ($CommandHash{build}) {
+					if ($Plat=~/^(UDEB|UREL|DEB|REL)$/o) {
+						$Bld=$Plat;
+						$Plat='ALL';
+						last COMPARAM1;
+					}
+				}
+#				check whether the platform might in fact be a program, and
+#				set the platform, build and program accordingly if it is
+				if ($CommandHash{program}) {
+					if  (((not $Test) and grep /^$Plat$/, @{$Platform::Programs{ALL}})
+							or ($Test and grep /^$Plat$/, @{$Platform::TestPrograms{ALL}})) {
+						$Program=$Plat;
+						$Plat='ALL';
+						$Bld='ALL';
+						last COMPARAM1;
+					}
+				}
+#				report the error
+				if ($CommandHash{build} and $CommandHash{program}) {
+					die "This project does not support platform, build or $Test program \"$Plat\"\n";
+				}
+				if ($CommandHash{build} and not $CommandHash{program}) {
+					die "This project does not support platform or build \"$Plat\"\n";
+				}
+				if ($CommandHash{program} and not $CommandHash{build}) {
+					die "This project does not support platform or $Test program \"$Plat\"\n";
+				}
+				if (not ($CommandHash{build} or $CommandHash{program})) {
+					die "This project does not support platform \"$Plat\"\n";
+				}
+			}
+		}
+	}
+
+	#Compiler Wrapper support 
+	my $CompilerWrapperFlagMacro = "";
+	if(exists $Options{wrap})
+	{
+		my $error = "Environment variable 'ABLD_COMPWRAP' is not set\n";
+		# If tool name for wrapping compiler is set in environment variable
+		if($ENV{ABLD_COMPWRAP})
+		{
+			$CompilerWrapperFlagMacro =" ABLD_COMPWRAP_FLAG=-wrap" .  ($Options{wrap} ? "=$Options{wrap}":"");
+		}
+		elsif($Options{keepgoing})  
+		{
+		    # If Tool name is not set and keepgoing option is specified then ignore -wrap option and continue processing
+		    print $error;
+		    delete $Options{wrap};
+		}
+		else
+		{
+		    # Issue error and exit if neither keepgoing option nor tool name is specified		
+		    die $error;
+		}
+	}
+
+#	process the build parameter for those commands which require it
+	if ($CommandHash{build}) {
+		unless ($Bld) {
+			unless ($Bld=uc shift @ARGV) {
+				$Bld='ALL'; # default
+			}
+			else {
+				COMPARAM2 : {
+					if ($Bld=~/^(ALL|UDEB|UREL|DEB|REL)$/o) {
+#						Change for TOOLS, TOOLS2 and VC6TOOLS platforms
+						if ($Plat ne 'ALL') {
+							if (($Plat!~/TOOLS2?$/o and $Bld=~/^(DEB|REL)$/o) or ($Plat=~/TOOLS2?$/o and $Bld=~/^(UDEB|UREL)$/o)) {
+								die  "Platform \"$Plat\" does not support build \"$Bld\"\n";
+							}
+						}
+						last COMPARAM2;
+					}
+#					check whether the build might in fact be a program, and
+#					set the build and program if it is
+					if ($CommandHash{program}) {
+						if  (((not $Test) and grep /^$Bld$/, @{$Platform::Programs{$Plat}})
+								or ($Test and grep /^$Bld$/, @{$Platform::TestPrograms{$Plat}})) {
+							$Program=$Bld;
+							$Bld='ALL';
+							last COMPARAM2;
+						}
+						my $Error="This project does not support build or $Test program \"$Bld\"";
+						if ($Plat eq 'ALL') {
+							$Error.=" for any platform\n";
+						}
+						else {
+							$Error.=" for platform \"$Plat\"\n";
+						}
+						die $Error;
+					}
+					my $Error="This project does not support build \"$Bld\"";
+					if ($Plat eq 'ALL') {
+						$Error.=" for any platform\n";
+					}
+					else {
+						$Error.=" for platform \"$Plat\"\n";
+					}
+					die $Error;
+				}
+			}
+		}
+	}
+
+#	get the program parameter for those commands which require it
+	if ($CommandHash{program}) {
+		unless ($Program) {
+			unless ($Program=uc shift @ARGV) {
+				$Program=''; #default - means ALL
+			}
+			else {
+#				check that the program is supported
+				unless (((not $Test) and grep /^$Program$/, @{$Platform::Programs{$Plat}})
+						or ($Test and grep /^$Program$/, @{$Platform::TestPrograms{$Plat}})) {
+					my $Error="This project does not support $Test program \"$Program\"";
+					if ($Plat eq 'ALL') {
+						$Error.=" for any platform\n";
+					}
+					else {
+						$Error.=" for platform \"$Plat\"\n";
+					}
+					die $Error;
+				}
+			}
+		}
+	}
+
+#	get the source file parameter for those commands which require it
+	if ($CommandHash{source}) {
+		unless ($Source=uc shift @ARGV) {
+			$Source=''; #default - means ALL
+		}
+		else {
+			$Source=" SOURCE=$Source";
+		}
+	}
+
+#	check for too many arguments
+	if (@ARGV) {
+		&Help($Command);
+	}
+
+	if ( $Options{instructionset} )
+	{	# we have a -i option.
+		if ($Plat eq 'ARMV5')
+		{
+			if  ( !( ( uc( $Options{instructionset} ) eq "ARM") || ( uc( $Options{instructionset} ) eq "THUMB" ) ) ) {		
+				# Only ARM and THUMB options are valid. 
+				&Options();
+			}
+		}
+		else
+		{ # Can only use -i for armv5 builds. 
+			&Options();
+		}
+	}
+
+#	process CHECKSOURCE_OVERRIDE
+	if ($ENV{CHECKSOURCE_OVERRIDE} && (($Plat =~ /^ARMV5/) || ($Plat eq 'WINSCW')) && ($Command eq 'TARGET')  && !$Options{what})
+		{
+		$Options{checksource} = 1;
+		}
+	
+	my $checksourceMakeVariables = " ";	
+	if ($Options{checksource}) {
+		$checksourceMakeVariables .= "CHECKSOURCE_VERBOSE=1 " if ($Options{verbose});
+	}
+
+#	expand the platform list
+	my @Plats;
+	unless ($CommandHash{noplatform}) {
+		if ($Plat eq 'ALL') {
+			@Plats=@Platform::RealPlats;
+#			Adjust the "ALL" list according to the availability of compilers
+			@Plats=grep !/WINSCW$/o, @Plats unless (defined $ENV{MWSym2Libraries});
+			@Plats=grep !/WINS$/o, @Plats unless (defined $ENV{MSDevDir});
+			@Plats=grep !/X86$/o, @Plats unless (defined $ENV{MSDevDir});
+			@Plats=grep !/X86SMP$/o, @Plats unless (defined $ENV{MSDevDir});
+			@Plats=grep !/X86GCC$/o, @Plats unless (defined $ENV{MSDevDir});
+			@Plats=grep !/X86GMP$/o, @Plats unless (defined $ENV{MSDevDir});
+			if ($CommandHash{build}) {
+#				remove unnecessary platforms if just building for tools, or building everything but tools
+#				so that the makefiles for other platforms aren't created with abld build
+				if ($Bld=~/^(UDEB|UREL)$/o) {
+					@Plats=grep !/TOOLS2?$/o, @Plats;
+				}
+				elsif ($Bld=~/^(DEB|REL)$/o) {
+					@Plats=grep /TOOLS2?$/o, @Plats;
+				}
+			}
+		}
+        else
+        {
+			@Plats=($Plat);
+		}
+
+		foreach $Plat (@Plats)
+			{
+			# Skip platforms resolved above
+			next if $MakefileVariations{$Plat};
+				
+			# Implicit feature variant platforms apply when a default feature variant exists and the platform supports it
+			# If valid, we actually create and invoke a distinct variation of the "base" makefile
+			if ($Platform::FeatureVariantSupportingPlats{$Plat} && featurevariantparser->DefaultExists())
+				{
+				if($Command eq "REALLYCLEAN")
+					{
+					my @myfeature = featurevariantparser->GetBuildableFeatureVariants();
+					push @{$MakefileVariations{$Plat}}, ".".$_ foreach(@myfeature);
+					}
+					else
+					{
+					$MakefileVariations{$Plat} = &GetMakefileVariations($Plat, "DEFAULT");
+					}
+				}
+			else
+				{
+				# For non-feature variant platforms we always store a single makefile variation of nothing i.e.
+				# we use the "normal" makefile generated for the platform
+				$MakefileVariations{$Plat} = &GetMakefileVariations($Plat, "");
+				}
+				
+			}
+
+		foreach $Plat (@Plats) {
+			foreach my $makefileVariation (@{$MakefileVariations{$Plat}}) {
+				unless (-e "$PrjBldDir$Plat$makefileVariation$Test.make") {
+					die "ABLD ERROR: \"$PrjBldDir$Plat$makefileVariation$Test.make\" not yet created\n";
+				}
+			}
+		}
+		undef $Plat;
+	}
+
+#	set up a list of commands where there are sub-commands
+	my @Commands=($Command);
+	if ($CommandHash{subcommands}) {
+		@Commands=@{$CommandHash{subcommands}};
+		if ($Command eq 'BUILD') { # avoid makefile listings here
+			if ($Options{what} or $Options{check}) {
+				@Commands=grep !/^MAKEFILE$/o, @{$CommandHash{subcommands}};
+			}
+		}
+	}
+#	implement savespace if necessary
+	if ($Options{savespace}) {
+		foreach $Command (@Commands) {
+			if ($Command eq 'TARGET') {
+				$Command='SAVESPACE';
+			}
+		}
+	}
+
+#	set up makefile call flags and macros from the options
+	my $KeepgoingFlag='';
+	my $KeepgoingMacro='';
+        my $NoDependencyMacro='';
+	my $VerboseMacro=' VERBOSE=-s';
+	if ($Options{keepgoing}) {
+		$KeepgoingFlag=' -k';
+		$KeepgoingMacro=' KEEPGOING=-k';
+	}
+	if ($Options{verbose}) {
+		$VerboseMacro='';
+	}
+	my $RemoveMacro='';
+	if ($Options{remove}) {
+		$RemoveMacro=' EFREEZE_ALLOW_REMOVE=1';
+	}
+	if ( ($Options{savespace}) and ($Options{keepgoing}) ){
+		$NoDependencyMacro=' NO_DEPENDENCIES=-nd';
+	}
+
+    my $AbldFlagsMacro="";
+	$AbldFlagsMacro = "-iarm " if (uc $Options{instructionset} eq "ARM");
+	$AbldFlagsMacro = "-ithumb " if (uc $Options{instructionset} eq "THUMB");
+
+	if ($Options{debug}) {
+		$AbldFlagsMacro .= "-debug ";
+	}
+	elsif($Options{no_debug}) {
+		$AbldFlagsMacro .= "-no_debug ";
+	}
+    
+	#Function call logging flag for makmake
+	if ($Options{logfc}) {
+		#Check the availability and version of logger
+		if (&FCLoggerUTL::PMCheckFCLoggerVersion()) {
+			$AbldFlagsMacro .= "-logfc ";
+		}
+	}
+
+	if(!($AbldFlagsMacro eq "") ){
+		$AbldFlagsMacro =" ABLD_FLAGS=\"$AbldFlagsMacro\"";
+	}
+
+#	set up a list of make calls
+	my @Calls;
+
+#	handle the exports related calls first
+	if (($Command)=grep /^(.*EXPORT)$/o, @Commands) { # EXPORT, CLEANEXPORT
+		unless (-e "${PrjBldDir}EXPORT$Test.make") {
+			die "ABLD ERROR: \"${PrjBldDir}EXPORT$Test.make\" not yet created\n";
+		}
+		unless ($Options {checksource}) {
+			if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+				unless ($Options{what} or $Options{check}) {
+					push @Calls, "$ENV{MAKE} -r $KeepgoingFlag -f \"${PrjBldDir}EXPORT$Test.make\" $Command$VerboseMacro$KeepgoingMacro";
+				}
+				else {
+					push @Calls, "$ENV{MAKE} -r -f \"${PrjBldDir}EXPORT$Test.make\" WHAT";
+				}
+			}
+			else {
+			
+				unless ($Options{what} or $Options{check}) {
+					push @Calls, "make -r $KeepgoingFlag -f \"${PrjBldDir}EXPORT$Test.make\" $Command$VerboseMacro$KeepgoingMacro";
+				}
+				else {
+					push @Calls, "make -r -f \"${PrjBldDir}EXPORT$Test.make\" WHAT";
+				}
+			}
+		}
+		@Commands=grep !/EXPORT$/o, @Commands;
+	}
+
+#	then do the rest of the calls
+
+	COMMAND: foreach $Command (@Commands) {
+
+		if ($Options {checksource} && ($Command eq "TARGET" || $Command eq "SAVESPACE")) {
+			if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+				push @Calls, "$ENV{MAKE} -r -f \"".$PrjBldDir."EXPORT.make\"".$checksourceMakeVariables."CHECKSOURCE";
+			}
+			else {
+				push @Calls, "make -r -f \"".$PrjBldDir."EXPORT.make\"".$checksourceMakeVariables."CHECKSOURCE";
+			}
+		}
+
+		my $Plat;
+		PLATFORM: foreach $Plat (@Plats) {
+
+#			set up a list of builds to carry out commands for if appropriate
+			my @Blds=($Bld);
+			if (${$Commands{$Command}}{build}) {
+				if ($Bld eq 'ALL') {
+					unless ($Plat=~/TOOLS2?$/o) { # change for platforms TOOLS, TOOLS2 and VC6TOOLS
+						@Blds=('UDEB', 'UREL');
+					}
+					else {
+						@Blds=('DEB', 'REL');
+					}
+				}
+				else {
+#					check the build is suitable for the platform - TOOLS, TOOLS2 and VC6TOOLS are annoyingly atypical
+					unless (($Plat!~/TOOLS2?$/o and $Bld=~/^(UDEB|UREL)$/o) or ($Plat=~/TOOLS2?$/o and $Bld=~/^(DEB|REL)$/o)) {
+						next;
+					}
+				}
+			}
+			else {
+				@Blds=('IRRELEVANT');
+			}
+
+			# You get CHECKSOURCE_GENERIC "for free" if no component is specified in the call
+			if ($Options {checksource} && ($Command eq "TARGET" || $Command eq "SAVESPACE") && $Program) {
+				foreach my $makefileVariation (@{$MakefileVariations{$Plat}}) {
+					if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+						push @Calls, "$ENV{MAKE} -r -f \"$PrjBldDir$Plat$makefileVariation$Test.make\"".$checksourceMakeVariables."CHECKSOURCE_GENERIC";
+					}
+					else {
+						push @Calls, "make -r -f \"$PrjBldDir$Plat$makefileVariation$Test.make\"".$checksourceMakeVariables."CHECKSOURCE_GENERIC";
+					}
+				}
+			}
+
+			my $LoopBld;
+			foreach $LoopBld (@Blds) {
+				my $CFG='';
+				if ($LoopBld ne 'IRRELEVANT') {
+					$CFG=" CFG=$LoopBld";
+				}
+				if ($Options {checksource}) {
+					if ($Command eq "TARGET" || $Command eq "SAVESPACE") {
+						foreach my $makefileVariation (@{$MakefileVariations{$Plat}}) {
+							if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+								push @Calls, "$ENV{MAKE} -r -f \"$PrjBldDir$Plat$makefileVariation$Test.make\"".$checksourceMakeVariables."CHECKSOURCE$Program$CFG";	  
+							}
+							else {	
+								push @Calls, "make -r -f \"$PrjBldDir$Plat$makefileVariation$Test.make\"".$checksourceMakeVariables."CHECKSOURCE$Program$CFG";
+							}
+						}
+					}
+					next;
+				}
+				
+				unless ($Options{what} or $Options{check}) {
+					if ($Program) { # skip programs if they're not supported for a platform
+						unless ($Test) {
+							unless (grep /^$Program$/, @{$Platform::Programs{$Plat}}) {
+								next PLATFORM;
+							}
+						}
+						else {
+							unless (grep /^$Program$/, @{$Platform::TestPrograms{$Plat}}) {
+								next PLATFORM;
+							}
+						}
+					}
+   					my $AbldFlagsMacroTmp="";
+					my $CompilerWrapperFlagMacroTemp="";
+					if ($Command eq "MAKEFILE")
+					{	# Only want ABLD_FLAGS for Makefile
+                        $AbldFlagsMacroTmp=$AbldFlagsMacro;
+						if(exists ($Options{wrap}))
+						{
+							# Require ABLD_COMPWRAP_FLAG when --wrap option is specified
+							$CompilerWrapperFlagMacroTemp = $CompilerWrapperFlagMacro;
+						}
+					}
+					foreach my $makefileVariation (@{$MakefileVariations{$Plat}}) {
+							if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+
+								if ( ($Command eq "TARGET") && (-e $PerlLibPath . "tracecompiler.pl") )
+								{
+									not scalar grep(/tracecompiler\.pl $Plat/,@Calls) and push @Calls, "perl " . $PerlLibPath . "tracecompiler.pl $Plat $Program";
+								}
+								push @Calls, "$ENV{MAKE} -r $KeepgoingFlag -f \"$PrjBldDir$Plat$makefileVariation$Test.make\""
+								." $Command$Program$CFG$Source$VerboseMacro" .
+								"$KeepgoingMacro$RemoveMacro$NoDependencyMacro" .
+								"$AbldFlagsMacroTmp$CompilerWrapperFlagMacroTemp";
+
+								#Compiler Wrapper support
+								if ( exists($Options{wrap}) && ($Options{wrap} eq "") && ($Command eq "TARGET") )
+								{
+									my $CFGCOMPWRAP='';
+									if ($LoopBld ne 'IRRELEVANT')
+									{
+										$CFGCOMPWRAP =" CFG=COMPWRAP".$LoopBld;	
+									}
+									push @Calls, "$ENV{MAKE} -r $KeepgoingFlag -f \"$PrjBldDir$Plat$makefileVariation$Test.make\""." TARGET$Program$CFGCOMPWRAP";
+								}
+							}
+							else {	
+								push @Calls, "make -r $KeepgoingFlag -f \"$PrjBldDir$Plat$makefileVariation$Test.make\""
+								." $Command$Program$CFG$Source$VerboseMacro" .
+								"$KeepgoingMacro$RemoveMacro$NoDependencyMacro" .
+								"$AbldFlagsMacroTmp$CompilerWrapperFlagMacroTemp";
+              
+								#Compiler Wrapper support
+								if ( exists($Options{wrap}) && ($Options{wrap} eq "") && ($Command eq "TARGET") )
+								{
+									my $CFGCOMPWRAP='';
+									if ($LoopBld ne 'IRRELEVANT')
+									{
+										$CFGCOMPWRAP =" CFG=COMPWRAP".$LoopBld;	
+									}
+									push @Calls, "make -r $KeepgoingFlag -f \"$PrjBldDir$Plat$makefileVariation$Test.make\""." TARGET$Program$CFGCOMPWRAP";
+								}
+							}
+						}
+						next;
+				}
+
+				unless (${$Commands{$Command}}{what}) {
+					next COMMAND;
+				}
+				if ($Program) { # skip programs if they're not supported for a platform
+					unless ($Test) {
+						unless (grep /^$Program$/, @{$Platform::Programs{$Plat}}) {
+							next PLATFORM;
+						}
+					}
+					else {
+						unless (grep /^$Program$/, @{$Platform::TestPrograms{$Plat}}) {
+							next PLATFORM;
+						}
+					}
+				}
+				my $Makefile='';
+				if ($Command=~/MAKEFILE$/o) {
+					$Makefile='MAKEFILE';
+				}
+
+				foreach my $makefileVariation (@{$MakefileVariations{$Plat}}) {
+					if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+					push @Calls, "$ENV{MAKE} -r -f \"$PrjBldDir$Plat$makefileVariation$Test.make\" WHAT$Makefile$Program $CFG";
+					}
+					else {
+					push @Calls, "make -r -f \"$PrjBldDir$Plat$makefileVariation$Test.make\" WHAT$Makefile$Program $CFG";
+				    }
+				}
+			}
+		}
+	}
+
+
+#	make the required calls
+
+	my $Call;
+	my %checkSourceUniqueOutput;
+	unless ($Options{what} or $Options{check}) {
+		foreach $Call (@Calls) {
+			print "  $Call\n" unless ($Options{checksource} && !$Options {verbose});
+			open PIPE, "$Call |";
+			$|=1; # bufferring is disabled
+			while (<PIPE>) {
+				if ($Options {checksource})
+					{
+					if ($Options{verbose})
+						{
+						print $_;
+						}
+					else
+						{
+						$checkSourceUniqueOutput{$_} = 1;
+						}
+					}
+				else
+					{
+					print;
+					}
+			}
+			close PIPE;
+		}
+
+		print $_ foreach (sort keys %checkSourceUniqueOutput);
+	}
+	else {
+		my %WhatCheck; # check for duplicates
+		foreach $Call (@Calls) {
+			open PIPE, "$Call |";
+			while (<PIPE>) {
+				next if (/(Nothing to be done for|Entering directory|Leaving directory) \S+\.?$/o);
+#				releasables split on whitespace - quotes possible -stripped out
+				while (/("([^"\t\n\r\f]+)"|([^ "\t\n\r\f]+))/go) {
+					my $Releasable=($2 ? $2 : $3);
+					$Releasable =~ s/\//\\/g;	# convert forward slash into backslash
+					unless ($WhatCheck{$Releasable}) {
+						$WhatCheck{$Releasable}=1;
+						if ($Options{what}) {
+							print "$Releasable\n";
+						}
+						else {
+							if (!-e $Releasable) {
+								print STDERR "MISSING: $Releasable\n";
+							} 
+							# modified start: added functionality checkwhat
+							elsif ($Options{checkwhat}) {						 
+								print "$Releasable\n";
+							}
+							# modified end: added functionality checkwhat
+						}
+					}
+				}
+			}
+			close PIPE;
+		}
+	}
+}
+
+sub Usage () {
+	print <<ENDHERESTRING;
+Common usage : abld [test] command [options] [platform[.Feature Variant]] [build] [program]
+  where command is build, target, etc.
+    (type \"abld help commands\" for a list of commands)
+  where options are -c, -k, etc.
+    (type \"abld help options\" for a list of options)
+  where parameters depend upon the command
+    (type \"abld help <command>\" for command-specific help)
+  where parameters default to 'ALL' if unspecified
+ENDHERESTRING
+
+	print
+		"project platforms:\n",
+		"   @Platform::Plats\n"
+	;
+
+	if (%Platform::FeatureVariantSupportingPlats)
+		{
+		my @featureVariants;
+			
+		foreach my $featureVariantSupportingPlat (keys %Platform::FeatureVariantSupportingPlats)
+			{
+			push @featureVariants, $featureVariantSupportingPlat.".".$_ foreach (featurevariantparser->GetValidVariants());
+			}
+
+		if (@featureVariants)
+			{
+			@featureVariants = map{uc($_)} @featureVariants;
+			print
+				"feature variant platforms:\n",
+				"   @featureVariants\n";		
+			}
+		}
+	exit 1;
+}
+
+# modified start: added functionality checkwhat
+sub Options () {
+	print <<ENDHERESTRING;
+Options (case-insensitive) :
+  -c or -check          check the releasables are present
+  -cw or -checkwhat     combined check and what
+  -k or -keepgoing      build unrelated targets on error
+  -s or -savespace      delete intermediate files on success
+  -v or -verbose        display tools calls as they happen
+  -w or -what           list the releasables
+  -r or -remove         allow FREEZE to remove exports
+  -i thumb or -i arm    override for build ARMV5 platform options
+  -cs or -checksource   checks source conformance to Symbian's filename policy
+  -debug or -no_debug   enable/disable generation of symbolic debug information for ARM ABI compliant platforms
+  -fc or -logfc	        enable function call logging
+  -wrap[=proxy]         enable invocation of external wrapper tool
+
+ possible combinations :
+	(([-check]|[-what]|[-checkwhat])|([-k][-s][-v][-i [thumb|arm]][-cs][-debug|-no_debug][-fc][-wrap[=proxy]]))
+ENDHERESTRING
+
+	exit;
+	
+}
+# modified end: added functionality checkwhat
+
+sub Help ($) {
+	my ($Command)=@_;
+
+	my %CommandHash=%{$Commands{$Command}};
+
+	print 'ABLD';
+	unless ($CommandHash{notest}) {
+		print ' [test]';
+	}
+	print " $Command ";
+	if ($Command eq 'HELP') {
+		print '([OPTIONS|COMMANDS]|[<command>])';
+	}
+	else {
+		if ($CommandHash{what}) {
+			print '(([-c]|[-w])|';
+		}
+		if ($CommandHash{savespace}) {
+			print '[-s]';
+		}
+		if ($CommandHash{instructionset}) {
+			print '[-i thumb|arm]';
+		}
+        if ($CommandHash{remove}) {
+			print '[-r]';
+		}
+        if ($CommandHash{checksource}) {
+			print '[-cs]';
+		}
+		unless ($CommandHash{nokeepgoing}) {
+			print '[-k]';
+		}
+		unless ($CommandHash{noverbose}) {
+			print '[-v]';
+		}
+		if ($CommandHash{debug}) {
+			print '[-debug|-no_debug]';
+		}
+		if ($CommandHash{logfc}) {
+			print '[-logfc]|[-fc]';
+		}
+		if ($CommandHash{what}) {
+			print '))';
+		}
+		unless ($CommandHash{noplatform}) {
+			print ' [<platform>]';
+		}
+		if ($CommandHash{build}) {
+			print ' [<build>]';
+		}
+		if ($CommandHash{program}) {
+			print ' [<program>]';
+		}
+		if ($CommandHash{source}) {
+			print ' [<source>]';
+		}
+		if ($CommandHash{wrap}) {
+			print '[-wrap[=proxy]]';
+		}
+	}
+
+	print
+		"\n",
+		"\n",
+		"$CommandHash{function}\n"
+	;
+	exit;
+}
+
+sub Commands () {
+
+	print "Commands (case-insensitive):\n";
+	foreach (sort keys %Commands) {
+		next if ${$Commands{$_}}{hidden};
+		my $Tmp=$_;
+		while (length($Tmp) < 12) {
+			$Tmp.=' ';
+		}
+		print "  $Tmp ${$Commands{$_}}{function}\n";
+	}
+
+	exit;
+}
+
+sub GetMakefileVariations ($$)
+	{
+	my ($plat, $featureVariantArg) = @_;
+	my @variations = ();
+
+	if (!$featureVariantArg)
+		{
+		push @variations, "";
+		}
+	else
+		{
+		my @resolvedVariants = featurevariantparser->ResolveFeatureVariant($featureVariantArg);
+# modified start: makefile improvement
+		my %temp_hash =("default" => "");
+		foreach (@resolvedVariants){
+			$temp_hash{$_}="";
+		}
+			push @variations, ".".$_ foreach (keys %temp_hash);
+		}
+# modified end: makefile improvement
+	return \@variations;
+	}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/bldmake/bldmake.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,28 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+
+perl -S bldmake.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
+if errorlevel==1 goto CheckPerl
+goto End
+
+:CheckPerl
+perl -v >NUL
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
+goto End
+
+:End
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/bldmake/bldmake.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,2325 @@
+# 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:
+# all variables called *Path* are set up to end with a backslash
+# all variables called *Path or *File are stored as absolute (file)paths within makmake
+# all variables called UpPath* are stored as relative paths within makmake
+# 
+#
+
+
+use FindBin;		# for FindBin::Bin
+use Getopt::Long;
+
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+
+BEGIN {
+# check user has a version of perl that will cope
+	require 5.005_03;
+# establish the path to the Perl libraries: currently the same directory as this script
+	$PerlLibPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+	$PerlLibPath .= "\\";
+}
+sub ExportDirs ($);
+
+use lib $PerlLibPath;
+use E32env;
+use E32Plat;
+use Modload;
+use Output;
+use Pathutl;
+use E32Variant;
+use RVCT_plat2set;
+use BPABIutl;
+use wrappermakefile;
+use CheckSource;
+use File::Path; # for rmtree
+use featurevariantparser;
+
+my $BldInfName = 'BLD.INF';
+my %Options;
+my %KeepGoing;
+my @DefaultPlats=('WINSCW', 'GCCXML', 'EDG', 'X86GCC');
+my @BaseUserDefaultPlats=('ARM4', 'ARM4T', 'WINSCW', 'GCCXML', 'EDG', 'X86GCC');
+my @OptionalPlats=('VS6', 'VS2003');
+my @PlatsReq;
+
+my %CheckSourceEXPORTSMetaData;
+my %CheckSourceEXPORTSIncludes;
+my %CheckSourceMMPFILESMetaData;
+my %CheckSourceEXTENSIONSMetaData;
+my %CheckSourceBldInfIncludes;
+
+for ('ARMV4', 'ARMV5')
+{
+	push @BaseUserDefaultPlats, $_ if RVCT_plat2set::compiler_exists($_);
+}
+
+# Add ARMV5_ABIV1 platform if ENABLE_ABIV2_MODE is set in variant.cfg
+my $variantABIV2Keyword = &Variant_GetMacro();
+# Add ARMV5_ABIV1 platform only after determining the presence of RVCT compiler.
+if ($variantABIV2Keyword && RVCT_plat2set::compiler_exists('ARMV5_ABIV1') ) {
+	push @OptionalPlats, 'ARMV5_ABIV1';
+}
+
+# bldmake -k shouldn't die if Extension Makefile is missing
+our $IgnoreMissingExtensionMakefile = 0;
+
+# Add the BPABI Platforms to be added 
+my @BPABIPlats = &BPABIutl_Plat_List;
+foreach my $BPABIPlat (@BPABIPlats) 
+{
+	# BPABI platform related with ARMV5(eg.ARMV5_ABIV2) is added to the platform list after 
+	# determining the presence of RVCT compiler	
+	if(($BPABIPlat =~/^ARMV5/i))
+		{
+			if(!($BPABIPlat =~/^ARMV5$/i) && RVCT_plat2set::compiler_exists('ARMV5'))
+			{
+			push @OptionalPlats, $BPABIPlat;
+			}
+		}
+	# All other BPABI platforms(eg. gcce) are added to the platform list.
+	else
+		{
+			push @OptionalPlats, $BPABIPlat;
+		}
+}
+
+if ( RVCT_plat2set::compiler_exists('ARMV5') ) {
+	#determine the presence of ARVCT compiler
+	push @DefaultPlats, 'ARMV5';
+}
+	
+# Need to add WINS and X86 if MSDEV compiler is present
+# Use MSDevDir to determine the presence of the compiler
+push @BaseUserDefaultPlats, 'WINS', 'X86' if (exists($ENV{'MSDevDir'}));
+
+my @BaseDefaultPlats = @BaseUserDefaultPlats;
+push @BaseDefaultPlats, 'X86SMP' if (grep /^X86$/, @BaseUserDefaultPlats);
+push @BaseDefaultPlats, 'ARM4SMP' if (grep /^ARM4$/, @BaseUserDefaultPlats);
+push @BaseDefaultPlats, 'ARMV4SMP' if (grep /^ARMV4$/, @BaseUserDefaultPlats);
+push @BaseDefaultPlats, 'ARMV5SMP' if (grep /^ARMV5$/, @BaseUserDefaultPlats);
+push @BaseDefaultPlats, 'X86GMP' if (grep /^X86GCC$/, @BaseUserDefaultPlats);
+
+my $variantMacroHRHFile = Variant_GetMacroHRHFile();
+sub ExportDirs ($);
+
+# THE MAIN PROGRAM SECTION
+##########################
+
+# Load default feature variant info - for the hrh file
+my %DefaultFeatureVariant = featurevariantparser->GetVariant('DEFAULT') if (featurevariantparser->DefaultExists());
+my @FeatureVariants = featurevariantparser->GetBuildableFeatureVariants();
+	
+{
+	Load_SetModulePath($PerlLibPath);
+	Plat_Init($PerlLibPath);
+
+	{
+		my @PlatList = &Plat_List();
+		
+		if (RVCT_plat2set::compiler_exists('ARMV6')){
+			foreach my $ARMV6Target ("ARMV6", "ARMV6_ABIV1", "ARMV6_ABIV2"){
+				if (grep /^$ARMV6Target$/, @PlatList) {
+					push @BaseUserDefaultPlats, "$ARMV6Target" if (!grep /^$ARMV6Target$/, @BaseUserDefaultPlats);
+					push @BaseDefaultPlats, "$ARMV6Target" if (!grep /^$ARMV6Target$/, @BaseDefaultPlats);
+				}
+			}
+		}
+	
+		if (RVCT_plat2set::compiler_exists('ARMV7')){
+ 			my $rvct_ver = RVCT_plat2set::get_version_string('ARMV7');
+ 			if ((defined $rvct_ver) and ($rvct_ver ge "3.1.674")) {
+ 				if (grep /^ARMV7$/, @PlatList ) {
+					push @DefaultPlats, 'ARMV7' if (!grep /^ARMV7$/, @DefaultPlats);
+					push @BaseUserDefaultPlats, "ARMV7" if (!grep /^ARMV7$/, @BaseUserDefaultPlats);
+					push @BaseDefaultPlats, "ARMV7" if (!grep /^ARMV7$/, @BaseDefaultPlats);
+ 				}
+ 			}
+ 		}
+	}
+	
+#	process the commmand-line
+	unless (GetOptions(\%Options, 'v', "k|keepgoing", "notest", "file|f=s")) {
+		exit 1;
+	}
+	unless (@ARGV>=1) {
+		&Usage();
+	}
+	my $Command=uc shift @ARGV;
+	unless ($Command=~/^(BLDFILES|CLEAN|INF|PLAT)$/o) {
+		&Usage();
+	}
+	my $CLPlat=uc shift @ARGV;
+
+	unless ($CLPlat) {
+		$CLPlat='ALL';
+	}
+
+	if ($Command eq 'INF') {
+		&ShowBldInfSyntax();
+		exit;
+	}
+
+	if ($Command eq 'PLAT') {
+		my @PlatList = ($CLPlat);
+		my $PlatName;
+		# Variable introduced to check if the bldmake plat command is called, To be
+		# passed as an argument in Plat_GetL function call.
+		my $platcommand=1;
+		if ($CLPlat eq "ALL") {
+			@PlatList = &Plat_List();
+			print(
+				"Supported Platforms:\n",
+				"  @PlatList\n\n"
+			);
+		}
+		print(
+			"Macros defined for BLD.INF preprocessing of MMPFILE sections:\n"
+		);
+		foreach $PlatName (@PlatList) {
+			my %Plat;
+			eval { &Plat_GetL($PlatName, \%Plat,{},$platcommand); };
+			die $@ if $@;
+			print(
+				"\nPlatform $PlatName:\n",
+				"  @{$Plat{MmpMacros}}\n"
+			);
+		}
+		exit;
+	}
+	if ($Options{file}) {
+		$BldInfName = $Options{file};
+	}
+
+#	check that the BLD.INF file exists
+#	maybe BLDMAKE should allow a path to be specified leading to the BLD.INF file
+	my $BldInfPath=&Path_WorkPath;
+	unless (-e "${BldInfPath}$BldInfName") {
+		&FatalError("Can't find \"${BldInfPath}$BldInfName\"");
+	}
+
+	if (!-d $E32env::Data{EPOCPath}){
+		&FatalError("Directory \"$E32env::Data{EPOCPath}\" does not exist");
+	}
+
+#	decide the output directory
+	my $OutDir=&Path_Chop($E32env::Data{BldPath}).$BldInfPath;
+
+#	Work out the path for the IBY files
+	my $RomDir=&Path_Chop($E32env::Data{RomPath}).$BldInfPath;
+
+#	Work out the name for the BLD.INF module
+	my @Dirs=&Path_Dirs($BldInfPath);
+	my $Module = pop @Dirs;
+	if (lc($Module) eq 'group') {
+		$Module = pop @Dirs;
+	}
+
+	if ($Command eq 'CLEAN') {
+		unlink "${BldInfPath}ABLD.BAT";
+		$OutDir=~m-(.*)\\-o;
+		if (-d $1) { # remove backslash for test because some old versions of perl can't cope
+			opendir DIR, $1;
+			my @Files=grep s/^([^\.].*)$/$OutDir$1/, readdir DIR;
+			closedir DIR;
+			unlink @Files;
+		}
+		rmtree <$OutDir\\wrappermakefiles>;
+# modified start: makefile improvement 
+		rmtree <$OutDir\\FeatureVariantInfo>;
+# modified end: makefile improvement 
+		exit;
+	}
+
+#	parse BLD.INF - to get the platforms and the export files
+	eval { &Load_ModuleL('PREPFILE'); };
+	&FatalError($@) if $@;
+
+	my @RealPlats=();
+	my @Exports=();
+	my @TestExports=();
+	if ($Options{v}) {
+		print "Reading \"${BldInfPath}$BldInfName\" for platforms and exports\n";
+	}
+	&ParseBldInf(\@RealPlats, \@Exports, \@TestExports, $BldInfPath, 
+		$E32env::Data{EPOCIncPath}, $E32env::Data{EPOCPath}, $E32env::Data{EPOCDataPath});
+
+#       Add Customizations
+	my @additions;
+	foreach my $plat (@RealPlats) {
+	        my @customizations = Plat_Customizations($plat);
+	        foreach my $custom (@customizations) {
+	                push @additions, $custom 
+			        unless grep /$custom/, @additions;
+		}
+        }
+	unless ($CLPlat eq 'ALL') {
+		push @RealPlats, @additions;
+	}
+
+ #	Force GCCXML support for anything that compiles as ARMV5
+	if ( (grep /^ARMV5$/, @RealPlats) and not (grep /^GCCXML$/,@RealPlats) ) 
+			{
+			push @RealPlats, 'GCCXML';
+			}
+
+ #	Force EDG support for anything that compiles as ARMV5
+	if ( (grep /^ARMV5$/, @RealPlats) and not (grep /^EDG$/,@RealPlats) ) 
+			{
+			push @RealPlats, 'EDG';
+			}
+
+if (0) {
+#	Add ARMV5 to the platforms if ARM4 is defined
+	if (grep /^ARM4$/, @RealPlats) {
+		unless ( (grep /^ARMV4$/, @RealPlats) or (grep /^ARMV5$/, @RealPlats) ){
+		push @RealPlats, 'ARMV5';
+		push @RealPlats, 'ARMV4';
+		}
+	}
+}
+	
+#	get any IDE platforms required into a new platforms list, and
+#	Create a hash to contain the 'real' names of the platforms, i.e. WINS rather than VC6
+	my @Plats=@RealPlats;
+	my %Real;
+	foreach (@RealPlats) { # change to get VC6 batch files
+		$Real{$_}=$_;
+		my $AssocIDE;
+		my @AssocIDEs;
+
+#		Get the IDEs associated with a real platform. A real plat like,
+#		WINSCW may have multiple associated IDEs like VC6 .NET2003 or CW IDE.
+		&Plat_AssocIDE($_, \@AssocIDEs);
+		next unless @AssocIDEs;
+		
+		push @Plats, @AssocIDEs;
+		foreach $AssocIDE (@AssocIDEs)
+		{
+			$Real{$AssocIDE}=$Real{$_};
+		}
+		
+	}
+	if ($Options{v}) {
+		print "Platforms: \"@Plats\"\n";
+	}
+
+#	check that the platform specified on the command-line is acceptable
+#	and sort out a list of platforms to process
+	my @DoRealPlats=@RealPlats;
+	my @DoPlats=@Plats;
+
+	unless (@Plats) { 
+#	include the optional platform list if no platform is specified
+		my $OptionalPlat;
+		foreach $OptionalPlat (@OptionalPlats) {
+			unless (grep /^$OptionalPlat$/i, @DoPlats) {
+				push @DoPlats, $OptionalPlat;
+			}
+		}
+	}
+
+	unless ($CLPlat eq 'ALL') {
+		unless (grep /^$CLPlat$/, @Plats) {
+			&FatalError("Platform $CLPlat not supported by \"${BldInfPath}$BldInfName\"\n");
+		}
+		@DoPlats=($CLPlat);
+		@DoRealPlats=$Real{$CLPlat};
+	}
+			
+#	sort out the export directories we might need to make
+	my @ExportDirs=ExportDirs(\@Exports);
+	my @TestExportDirs=ExportDirs(\@TestExports);
+
+#	parse the BLD.INF file again for each platform supported by the project
+#	storing the information in a big data structure
+	my %AllPlatData;
+	my %AllPlatTestData;
+	my $Plat;
+	
+	if ($Options{v} and $CLPlat ne 'ALL'){
+		print "Reading \"${BldInfPath}$BldInfName\" for $CLPlat \n";
+	}
+
+	foreach $Plat (@RealPlats) {
+		if ($Options{v}) {
+			if ($CLPlat eq 'ALL') {
+				print "Reading \"${BldInfPath}$BldInfName\" for $Plat\n";
+			}
+		}
+		my (@PlatData, @PlatTestData);
+		if ($CLPlat eq 'ALL') {
+			&ParseBldInfPlat(\@PlatData, \@PlatTestData, $Plat, $BldInfPath, ($DefaultFeatureVariant{VALID} && &Plat_SupportsFeatureVariants($Plat) ? \%DefaultFeatureVariant : undef));
+		}
+		else {
+			&ParseBldInfPlat(\@PlatData, \@PlatTestData, $CLPlat, $BldInfPath, ($DefaultFeatureVariant{VALID} && &Plat_SupportsFeatureVariants($CLPlat) ? \%DefaultFeatureVariant : undef));
+		}
+		$AllPlatData{$Plat}=\@PlatData;
+		$AllPlatTestData{$Plat}=\@PlatTestData;
+	}
+	undef $Plat;
+
+	undef $CLPlat;
+	if ($Command eq 'BLDFILES') {
+
+#		create the perl file, PLATFORM.PM, listing the platforms
+		if ($Options{v}) {
+			print "Creating \"${OutDir}PLATFORM.PM\"\n";
+		}
+		&CreatePlatformPm($OutDir, \@Plats, \@RealPlats, \%Real, \%AllPlatData, \%AllPlatTestData);
+
+#		create the .BAT files required to call ABLD.PL
+		if ($Options{v}) {
+			print "Creating \"${BldInfPath}ABLD.BAT\"\n";
+		}
+		&CreatePerlBat($BldInfPath);
+
+#		create the makefile for exporting files
+		if ($Options{v}) {
+			print "Creating \"${OutDir}EXPORT.MAKE\"\n";
+		}
+		&CreateExportMak("${OutDir}EXPORT.MAKE", \@Exports, \@ExportDirs);
+
+#		create the makefile for exporting test files
+		if ($Options{v}) {
+			print "Creating \"${OutDir}EXPORTTEST.MAKE\"\n";
+		}
+		&CreateExportMak("${OutDir}EXPORTTEST.MAKE", \@TestExports, \@TestExportDirs);
+
+# modified start: makefile improvement 
+		#create the feature variant infor file
+		foreach my $copyofPlat (@DoPlats)
+		{
+			my $realplat = $Real{$copyofPlat};
+			if(&Plat_SupportsFeatureVariants($copyofPlat))
+			{
+				my $variant_info = &Path_Chop($E32env::Data{BldPath}).$BldInfPath."\\FeatureVariantInfo\\".$realplat."\\";	
+				eval { &Path_MakePathL($variant_info); };
+				die $@ if $@;
+				if ($Options{v}) {
+					print "Creating: \"$variant_info\"\n";
+				}
+				foreach my $featureVariant (@FeatureVariants)
+				{
+					my $variant_file = $variant_info."$realplat.$featureVariant.info";
+# modified by SV start: makefile improvement 
+					my $refdata = $AllPlatData{$realplat};
+					my $testrefdata = $AllPlatTestData{$realplat};
+					if ( @$refdata ) {
+						foreach my $RefPro (@$refdata)
+						{
+							$variant_file = $variant_info."$realplat.$featureVariant.$$RefPro{Base}.info";
+							my $ref_basedir = $variant_file;
+							$ref_basedir=~s/(.*[\\\/]).*/$1/;
+							if ( ! -d $ref_basedir ){
+								eval { &Path_MakePathL($ref_basedir); };
+								die $@ if $@;
+							}
+							open VARIANTINFOR,">$variant_file" or die "ERROR: Can't open or create file \"$variant_file\"\n";
+							print VARIANTINFOR "VARIANT_PLAT_NAME_$$RefPro{Base}:=default \n";
+							close VARIANTINFOR or die "ERROR: Can't close file \"$variant_file\"\n";
+						}
+					}
+					else {
+						open VARIANTINFOR,">$variant_file" or die "ERROR: Can't open or create file \"$variant_file\"\n";
+						print VARIANTINFOR "VARIANT_PLAT_NAME:=$featureVariant \n";
+						close VARIANTINFOR or die "ERROR: Can't close file \"$variant_file\"\n";
+						print "file \"$variant_file\"\n"
+					}
+					if ($testrefdata){
+						foreach my $RefPro (@$testrefdata)
+						{
+							$variant_file = $variant_info."$realplat.$featureVariant.$$RefPro{Base}.info";
+							my $ref_basedir = $variant_file;
+							$ref_basedir=~s/(.*[\\\/]).*/$1/;
+							if ( ! -d $ref_basedir ){
+								eval { &Path_MakePathL($ref_basedir); };
+								die $@ if $@;
+							}
+							open VARIANTINFOR,">$variant_file" or die "ERROR: Can't open or create file \"$variant_file\"\n";
+							print VARIANTINFOR "VARIANT_PLAT_NAME_$$RefPro{Base}:=default \n";
+							close VARIANTINFOR or die "ERROR: Can't close file \"$variant_file\"\n";
+						}
+						
+					}
+# modified by SV end: makefile improvement 
+					# Close and cleanup
+					if ($Options{v}) {
+						print "Variant info file has been successfully created\n";
+					}
+				}				
+			}
+		}
+# modified end: makefile improvement 
+#		create the platform meta-makefiles
+		foreach my $copyofPlat (@DoPlats) {  # Do not use $_ here !!
+			if ($Options{v}) {
+				print "Creating \"$OutDir$copyofPlat.MAKE\"\n";
+			}
+			my $realplat = $Real{$copyofPlat};
+			&CreatePlatMak($OutDir, $E32env::Data{BldPath}, $AllPlatData{$realplat}, $copyofPlat, $realplat, $RomDir, $Module, $BldInfPath, \@Exports, '');
+
+			if (&Plat_SupportsFeatureVariants($copyofPlat))
+				{
+				foreach my $featureVariant (@FeatureVariants)
+					{
+					print "Creating \"$OutDir$copyofPlat.$featureVariant.MAKE\"\n" if ($Options{v});
+					&CreatePlatMak($OutDir, $E32env::Data{BldPath}, $AllPlatData{$realplat}, $copyofPlat, $realplat, $RomDir, $Module, $BldInfPath, \@Exports, '', ".$featureVariant");
+					}
+				}
+		}
+		foreach (@DoPlats) {
+			if ($Options{v}) {
+				print "Creating \"$OutDir${_}TEST.MAKE\"\n";
+			}
+			&CreatePlatMak($OutDir, $E32env::Data{BldPath}, $AllPlatTestData{$Real{$_}}, $_, $Real{$_}, $RomDir, $Module, $BldInfPath, \@TestExports, 'TEST');
+
+			if (&Plat_SupportsFeatureVariants($_))
+				{
+				foreach my $featureVariant (@FeatureVariants)
+					{
+					print "Creating \"$OutDir${_}.".$featureVariant."TEST.MAKE\"\n" if ($Options{v});
+					&CreatePlatMak($OutDir, $E32env::Data{BldPath}, $AllPlatTestData{$Real{$_}}, $_, $Real{$_}, $RomDir, $Module, $BldInfPath, \@TestExports, 'TEST', ".$featureVariant");
+					}
+				}
+		}
+
+#		create the platform test batch files
+		foreach (@DoRealPlats) {
+			if ($Options{v}) {
+				print "Creating test batch files in \"$OutDir\" for $_\n";
+			}
+			&CreatePlatBatches($OutDir, $AllPlatTestData{$_}, $_);
+		}
+
+# modified by SV start: makefile improvement 
+# create all sub directories
+	foreach my $refplat (@DoRealPlats) {
+		my $tmp = $AllPlatData{$refplat};
+		foreach my $dref (@$tmp){
+			my $builddir = $OutDir . $$dref{Base} ."\\" . $refplat . "\\";
+				if (!-d $builddir){
+					if ($Options{v}) {
+						print "Creating directory \"$builddir\" \n";
+					}
+					eval { &Path_MakePathL($builddir); };
+					&FatalError($@) if $@;
+				}
+			}
+	}
+# modified by SV end: makefile improvement 
+
+#		report any near-fatal errors
+		if (scalar keys %KeepGoing) {
+		    print STDERR
+			    "\n${BldInfPath}$BldInfName WARNING(S):\n",
+			    sort keys %KeepGoing
+			    ;
+		}
+
+		exit;
+	}
+}
+
+
+################ END OF MAIN PROGRAM SECTION #################
+#------------------------------------------------------------#
+##############################################################
+
+
+# SUBROUTINE SECTION
+####################
+
+sub Usage () {
+
+	eval { &Load_ModuleL('E32TPVER'); };
+	&FatalError($@) if $@;
+
+	print
+		"\n",
+		"BLDMAKE - Project building Utility (Build ",&E32tpver,")\n",
+		"\n",
+		"BLDMAKE {options} [<command>] [<platform>]\n",
+		"\n",
+		"<command>: (case insensitive)\n",
+		" BLDFILES - create build batch files\n",
+		" CLEAN    - remove all files bldmake creates\n",
+		" INF      - display basic BLD.INF syntax\n",
+		" PLAT     - display platform macros\n",
+		"\n",
+		"<platform>: (case insensitive)\n",
+		"  if not specified, defaults to \"ALL\"\n",
+		"\n",
+		"Options: (case insensitive)\n",
+		" -v   ->  verbose mode\n",
+		" -k   ->  keep going even if files are missing\n"
+	;
+	exit 1;
+}
+
+sub ShowBldInfSyntax () {
+
+	print <<ENDHERE1;
+
+BLD.INF - Syntax
+
+/* Use C++ comments if required */
+// (Curly braces denote optional arguments)
+
+PRJ_PLATFORMS
+{DEFAULT} {-<platform> ...} {<list of platforms>}
+// list platforms your project supports here if not default
+ENDHERE1
+
+	print "// default = ".join(" ",@DefaultPlats)."\n";
+
+	print <<ENDHERE;
+	
+PRJ_EXPORTS
+[<source path>\<source file>]	{<destination>}
+// list each file exported from source on a separate line
+// {<destination>} defaults to \\EPOC32\\Include\\<source file>
+
+PRJ_TESTEXPORTS
+[<source path>\<source file>]	{<destination>}
+// list each file exported from source on a separate line
+// {<destination>} defaults to BLD.INF dir
+
+PRJ_MMPFILES
+[<mmp path>\<mmp file>] {<qualifiers>}
+{MAKEFILE|NMAKEFILE} [<path>\<makefile>] {build_as_arm}
+// <qualifiers> are tidy, ignore, build_as_arm
+
+#if defined(<platform>)
+// .MMP statements restricted to <platform>
+#endif
+
+PRJ_TESTMMPFILES
+[<mmp path>\<mmp file>] {<qualifiers>}
+{MAKEFILE|NMAKEFILE} [<path>\<makefile>] {<qualifiers>}
+// <qualifiers> are {tidy} {ignore} {manual} {support} {build_as_arm}
+
+#if defined(<platform>)
+// .MMP statements restricted to <platform>
+#endif
+
+ENDHERE
+
+}
+
+sub WarnOrDie ($$) {
+	my ($dieref, $message) = @_;
+	if ($Options{k}) {
+		$KeepGoing{$message} = 1;
+	} else {
+		push @{$dieref}, $message;
+	}
+}
+
+sub ExtensionMakefileMissing($)
+{
+	$IgnoreMissingExtensionMakefile = @_;
+}
+
+sub ParseBldInf ($$$$$) {
+	my ($PlatsRef, $ExportsRef, $TestExportsRef, $BldInfPath, $EPOCIncPath, $EPOCPath, $EPOCDataPath)=@_;
+
+	my @Prj2D;
+	eval { &Prepfile_ProcessL(\@Prj2D, "${BldInfPath}$BldInfName",$variantMacroHRHFile); };
+	&FatalError($@) if $@;
+	
+	my @SupportedPlats=&Plat_List();
+
+	my @Plats;
+	my %RemovePlats;
+
+	my $DefaultPlatsUsed=0;
+	my %PlatformCheck;
+
+	my %ExportCheck;
+	my $Section=0;
+	our @PrjFileDie;
+	my $Line;
+	my $CurFile="${BldInfPath}$BldInfName";
+	LINE: foreach $Line (@Prj2D) {
+		my $LineNum=shift @$Line;
+		$_=shift @$Line;
+		if ($LineNum eq '#') {
+			$CurFile=$_;
+			next LINE;
+		}
+
+		$CurFile = &Path_Norm ($CurFile); 
+		
+		if (/^PRJ_(\w*)$/io) {
+			$Section=uc $1;
+			if ($Section=~/^(PLATFORMS|EXPORTS|TESTEXPORTS|MMPFILES|TESTMMPFILES|EXTENSIONS|TESTEXTENSIONS)$/o) {
+				if (@$Line) {
+					push @PrjFileDie, "$CurFile($LineNum) : Can't specify anything on the same line as a section header\n";
+				}
+				next LINE;
+			}
+			push @PrjFileDie, "$CurFile($LineNum) : Unknown section header - $_\n";
+			$Section=0;
+			next LINE;
+		}
+		if ($Section eq 'PLATFORMS') {
+#			platforms are gathered up into a big list that contains no duplicates.  "DEFAULT" is
+#			expanded to the list of default platforms.  Platforms specified with a "-" prefix
+#			are scheduled for removal from the list.  After processing platforms specified
+#			with the "-" prefix are removed from the list.
+
+			unshift @$Line, $_;
+			my $Candidate;
+			CANDLOOP: foreach $Candidate (@$Line) {
+				$Candidate=uc $Candidate;
+#				ignore old WINC target
+				if ($Candidate eq 'WINC') {
+					next CANDLOOP;
+				}
+#				expand DEFAULT
+				if ($Candidate eq 'DEFAULT') {
+					$DefaultPlatsUsed=1;
+					my $Default;
+					foreach $Default (@DefaultPlats) {
+						unless ($PlatformCheck{$Default}) {
+							push @Plats, $Default;
+							$PlatformCheck{$Default}="$CurFile: $LineNum";
+						}
+					}
+					next CANDLOOP;
+				}
+#				expand BASEDEFAULT
+				if ($Candidate eq 'BASEDEFAULT') {
+					$DefaultPlatsUsed=1;
+					my $Default;
+					foreach $Default (@BaseDefaultPlats) {
+						unless ($PlatformCheck{$Default}) {
+							push @Plats, $Default;
+							$PlatformCheck{$Default}="$CurFile: $LineNum";
+						}
+					}
+					next CANDLOOP;
+				}
+#				expand BASEUSERDEFAULT
+				if ($Candidate eq 'BASEUSERDEFAULT') {
+					$DefaultPlatsUsed=1;
+					my $Default;
+					foreach $Default (@BaseUserDefaultPlats) {
+						unless ($PlatformCheck{$Default}) {
+							push @Plats, $Default;
+							$PlatformCheck{$Default}="$CurFile: $LineNum";
+						}
+					}
+					next CANDLOOP;
+				}
+#				check for removals
+				if ($Candidate=~/^-(.*)$/o) {
+					$Candidate=$1;
+#					check default is specified
+					unless ($DefaultPlatsUsed) {
+						push @PrjFileDie, "$CurFile($LineNum) : \"DEFAULT\" must be specified before platform to be removed\n";
+						next CANDLOOP;
+					}
+					$RemovePlats{$Candidate}=1;
+					next CANDLOOP;
+				}
+# 				If tools platform is specified in bld.inf file then component is built for cwtools as well 
+				if ($Candidate =~ /^tools/i)
+						{
+						push @Plats, 'CWTOOLS';
+						}
+#				check platform is supported
+				unless (grep /^$Candidate$/, @SupportedPlats) {
+					WarnOrDie(\@PrjFileDie, "$CurFile($LineNum) : Unsupported platform $Candidate specified\n");
+					next CANDLOOP;
+				}
+#				check platform is not an IDE
+				if ($Candidate=~/^VC/o) {
+					push @PrjFileDie, "$CurFile($LineNum) : No need to specify platform $Candidate here\n";
+					next CANDLOOP;
+				}
+#				add the platform
+				unless ($PlatformCheck{$Candidate}) {
+					push @Plats, $Candidate;
+					my $SubPlat = sprintf("%sEDG", $Candidate);
+					push @Plats, $SubPlat 
+					    if (grep /^$SubPlat$/, @SupportedPlats);
+					$PlatformCheck{$Candidate}="$CurFile: $LineNum";
+				}
+			}
+			next LINE;
+		}
+
+		# Skip PRJ_TESTEXPORT section if -notest flag		
+		next LINE if ($Options{notest} && ($Section=~/^(TESTEXPORTS)$/o)); 
+		
+		if ($Section=~/^(EXPORTS|TESTEXPORTS)$/o) {
+
+#			make path absolute - assume relative to group directory
+			my $Type = 'file';
+			if (/^\:(\w+)/) {
+				# Export an archive
+				$Type = lc $1;
+				unless ($Type eq 'zip') {
+					push @PrjFileDie, "$CurFile($LineNum) : Unknown archive type - $Type\n";
+					next LINE;
+				}
+				$_ = shift @$Line;
+			}
+
+			my $loggedSourceExport = $_;
+			$_ = &Path_Norm ($_);
+			
+			my $Source=&Path_MakeAbs($CurFile, $_);
+			my $Releasable='';
+			my $emReleasable='';
+			my $unzip_option ='';
+			if (@$Line) {
+#				get the destination file if it's specified
+				$Releasable=shift @$Line;
+				CheckSource_MetaData(%CheckSourceEXPORTSMetaData, $CurFile, "PRJ_".$Section, $Releasable, $LineNum);
+				$Releasable = &Path_Norm ($Releasable);
+				$emReleasable=ucfirst $Releasable;
+				if ($emReleasable=~/^([A-Z]):(\\.*)$/)  {
+				  	$emReleasable=~s/://;
+					$Releasable=$EPOCDataPath.$emReleasable;
+				}
+			}
+
+			my $sourceExportTypeSuffix = "";
+			$sourceExportTypeSuffix .= " (NO DESTINATION)" if (!$Releasable && $Section =~ /^EXPORTS$/);		
+			CheckSource_MetaData(%CheckSourceEXPORTSMetaData, $CurFile, "PRJ_".$Section.$sourceExportTypeSuffix, $loggedSourceExport, $LineNum, $CheckSource_PhysicalCheck);
+			
+			if (@$Line) {
+				$unzip_option = shift @$Line;
+				unless ($unzip_option=~ /overwrite/i) {
+					push @PrjFileDie, "$CurFile($LineNum) : Too many arguments in exports section line\n";
+					next LINE;
+				}
+			}
+			unless ($Type eq 'zip' or &Path_Split('File', $Releasable)) {
+#				use the source filename if no filename is specified in the destination
+#				no filename for archives
+				$Releasable.=&Path_Split('File', $Source);
+			}
+			my $defpath;
+			if ($Type eq 'zip') {
+#				archives relative to EPOCROOT
+				$defpath = $ENV{EPOCROOT};
+			}
+			elsif (($Section =~ /EXPORTS$/) && ($Releasable =~ s/^\|[\/|\\]?//)) {
+#			'|' prefix forces "relative to bld.inf file" in PRJ_[TEST]EXPORTS destinations
+				$defpath = $CurFile;
+			}
+			elsif ($Section eq 'EXPORTS') {
+#				assume the destination is relative to $EPOCIncPath
+				$defpath = $EPOCIncPath;
+			}
+			else {
+				$defpath = $CurFile;
+			}
+			$Releasable=&Path_MakeEAbs($EPOCPath, $defpath, $Releasable);
+
+#			sanity checks!
+			if ($Type eq 'file' && $ExportCheck{uc $Releasable}) {
+				push @PrjFileDie, "$CurFile($LineNum) : Duplicate export $Releasable (from line $ExportCheck{uc $Releasable})\n";
+				next LINE;
+			}
+			$ExportCheck{uc $Releasable}="$CurFile: $LineNum";
+			if (! -e $Source) {
+				WarnOrDie(\@PrjFileDie, "$CurFile($LineNum) : Exported source file $Source not found\n");
+			}
+			elsif ($Type ne 'zip' && -d $Releasable) {
+				push @PrjFileDie, "$CurFile($LineNum) : Export target $Releasable must be a file.\n";
+			}
+			else {
+				if ($Section eq 'EXPORTS') {
+					push @$ExportsRef, {
+						'Source'=>$Source,
+						'Releasable'=>$Releasable,
+						'emReleasable'=>$emReleasable,
+						'Type'=>$Type,
+						'UnzipOption'=>$unzip_option
+					};
+				}
+				else {
+					push @$TestExportsRef, {
+						'Source'=>$Source,
+						'Releasable'=>$Releasable,
+						'emReleasable'=>$emReleasable,
+						'Type'=>$Type,
+						'UnzipOption'=>$unzip_option
+					};
+				}
+			}
+			next LINE;
+		}
+	}
+	if (@PrjFileDie) {
+		print STDERR
+			"\n${BldInfPath}$BldInfName FATAL ERROR(S):\n",
+			@PrjFileDie
+		;
+		exit 1;
+	}
+
+#	set the list of platforms to the default if there aren't any platforms specified,
+#	else add platforms to the global list unless they're scheduled for removal,
+	unless (@Plats) {
+		@$PlatsRef=@DefaultPlats;
+		# Include the list of BPABI Platforms in a default build.
+		my $OptionalPlat;
+		foreach $OptionalPlat (@OptionalPlats) {
+			#	VS6 and VS2003 are not real platforms and hence are not included in a default build
+			unless ( $OptionalPlat eq 'VS6' || $OptionalPlat eq 'VS2003') {
+				if (not grep /^$OptionalPlat$/i, @$PlatsRef) {
+					push @$PlatsRef, $OptionalPlat;
+				}
+			}
+		}		
+	}
+	else {
+		my $Plat;
+		foreach $Plat (@Plats) {
+			unless ($RemovePlats{$Plat}) {
+				push @$PlatsRef, $Plat;
+			}
+		}
+		push @PlatsReq , @$PlatsRef;
+	}
+}
+
+sub ExportDirs ($) {
+	my ($ExportsRef)=@_;
+
+	my %ExportDirHash;
+	foreach (@$ExportsRef) {
+		my $dir = ($$_{Type} eq 'zip') ? $$_{Releasable} : &Path_Split('Path',$$_{Releasable});
+		if ($dir) {
+			$dir=&Path_Chop($dir);
+			$ExportDirHash{uc $dir}=$dir;
+		}
+	}
+	my @ExportDirs;
+	foreach (keys %ExportDirHash) {
+		push @ExportDirs, $ExportDirHash{$_};
+	}
+	@ExportDirs;
+}
+
+
+sub ParseBldInfPlat ($$$$) {
+	my ($DataRef, $TestDataRef, $Plat, $BldInfPath, $FeatureVar)=@_;
+		
+#	get the platform .MMP macros
+	my %Plat;
+	eval { &Plat_GetL($Plat,\%Plat); };
+	&FatalError($@) if $@;
+
+#	get the raw data from the BLD.INF file
+	my @Prj2D;
+	eval { &Prepfile_ProcessL(\@Prj2D, "${BldInfPath}$BldInfName", ($FeatureVar ? $FeatureVar->{VARIANT_HRH} : $variantMacroHRHFile), @{$Plat{MmpMacros}}); };
+	&FatalError($@) if $@;
+
+	my %dummy;
+	my @userIncludes = ('.');
+	my @systemIncludes = ();
+	$CheckSourceBldInfIncludes{$Plat} = CheckSource_Includes("${BldInfPath}$BldInfName", %dummy, $variantMacroHRHFile, @{$Plat{MmpMacros}}, @userIncludes, @systemIncludes, $CheckSource_NoUserSystemDistinction);
+	
+#	process the raw data
+	my $IsExtensionBlock =0;
+	my (@ExtensionBlockData, $ErrorString);
+	my %Check;
+	my $Section=0;
+	my @PrjFileDie;
+	my $Line;
+	my $CurFile="${BldInfPath}$BldInfName";
+	LINE: foreach $Line (@Prj2D) {
+
+		my %Data;
+		my %Temp;
+
+		my $LineNum=shift @$Line;
+		if ($LineNum eq '#') {
+			$CurFile=shift @$Line;
+			next LINE;
+		}
+
+		$CurFile = &Path_Norm ($CurFile);
+		
+#		upper-case all the data here, but record original source case
+#		in a hash so that it can be recalled for CheckSource purposes
+
+		my %originalSourceCase;
+   		foreach (@$Line) {
+ 			$originalSourceCase{uc $_} = $_;  # needed for extension template makefile MACROs 
+   			$_=uc $_;
+   		}
+
+		$_=shift @$Line;
+
+#		check for section headers - don't test for the right ones here
+#		because we do that in the first parse function
+
+		if (/^PRJ_(\w*)$/o) {
+			$Section=$1;
+			next LINE;
+		}
+
+#		Skip section if PRJ_TESTMMPFILES and -notest option
+		next LINE if ($Options{notest} && ($Section=~/^(TESTMMPFILES)$/o)); 
+
+#		check for EXTENSION sections
+		if ($Section=~/^(EXTENSIONS|TESTEXTENSIONS)$/o) {
+
+#			We have an extension block
+			if (/^start(\w*)$/io) {
+				if ($IsExtensionBlock) {
+					&FatalError("$CurFile($LineNum) : Cannot embed Extension Template 'start' sections\n");
+				}
+				$IsExtensionBlock =1;
+				$ErrorString = "$CurFile($LineNum)";
+				foreach (@$Line)
+				{
+				if (/^EXTENSION$/)
+					{
+					my $extensionTemplate = @$Line[scalar(@$Line)-1];
+					CheckSource_MetaData(%CheckSourceEXTENSIONSMetaData, $CurFile, "PRJ_".$Section, $originalSourceCase{$extensionTemplate}.".mk", $LineNum, $CheckSource_PhysicalCheck) if ($extensionTemplate);
+					}
+				}
+
+				push @ExtensionBlockData, $Line; 			
+				next LINE;
+			}		
+			
+			if (($IsExtensionBlock) & (! (/^end(\w*)$/io))) {
+				if (($_ ne "TOOL") & ($_ ne "OPTION") & ($_ ne "TARGET") & ($_ ne "SOURCES") & ($_ ne "DEPENDENCIES")) {
+							&FatalError("$CurFile($LineNum) : Unrecognised keyword: $_.  Is there an 'end' corresponding to the 'start' for the Extension Template?\n"); 
+				}
+				if ($_ ne "OPTION") {
+					unshift(@$Line, $_);					
+				}
+#				Need to revert MACROs back to their original case
+				foreach (@$Line) {
+					$_=$originalSourceCase{$_};
+				}
+				push @ExtensionBlockData, $Line; 
+				next LINE;
+			}
+			
+			if (/^end(\w*)$/io) {
+				if (! $IsExtensionBlock) {
+					&FatalError("$CurFile($LineNum) : No 'start' corresponding to this 'end' in Extension Template section\n"); 
+				}
+				$IsExtensionBlock =0;
+				my $OutDir=Path_Chop($E32env::Data{BldPath}).$BldInfPath;
+#				Generate wrapper makefile for this platform.
+				eval { &Load_ModuleL('WrapperMakefile'); };
+					&FatalError($@) if $@;
+				$OutDir=~ s/\\/\//g;  # convert to unix slashes for wrappermakefile.pm
+				%Data = GenerateWrapper($Plat, $OutDir, $ErrorString, \@PrjFileDie, @ExtensionBlockData);
+				if (!$IgnoreMissingExtensionMakefile)
+				{
+					$Data{ExtensionRoot}=&Path_Split('Path', $CurFile);
+					$Data{Path}=~ s/\//\\/g;  # convert unix slashes back to win32 
+					$Data{Base}=~ s/\//\\/g;
+				}
+				@ExtensionBlockData = ();  # clear array
+			}
+		}
+
+#		check for MMP sections and get the .MMP file details
+		if ($Section=~/^(MMPFILES|TESTMMPFILES)$/o) {
+			$Data{Ext}='.MMP';
+#			check for MAKEFILE statements for custom building
+			my $SubSection = "MMP";
+			if (/^MAKEFILE$/o) {
+				$SubSection = $_;
+				$Data{Makefile}=2;  # treat MAKEFILE=>NMAKEFILE   =1;
+				$_=shift @$Line;
+				$Data{Ext}=&Path_Split('Ext', $_);
+			}
+			if (/^NMAKEFILE$/o) {
+				$SubSection = $_;
+				$Data{Makefile}=2;
+				$_=shift @$Line;
+				$Data{Ext}=&Path_Split('Ext', $_);
+			}
+			if (/^GNUMAKEFILE$/o) {
+				$SubSection = $_;
+				$Data{Makefile}=1;
+				$_=shift @$Line;
+				$Data{Ext}=&Path_Split('Ext', $_);
+			}
+			CheckSource_MetaData(%CheckSourceMMPFILESMetaData, $CurFile, "PRJ_$Section $SubSection", $originalSourceCase{$_}, $LineNum, $CheckSource_PhysicalCheck);
+			$_ = &Path_Norm ($_);
+			
+#			path considered relative to the current file
+			$Data{Path}=&Path_Split('Path', &Path_MakeAbs($CurFile, $_));
+
+#			this function doesn't care whether the .MMPs are listed with their extensions or not
+			$Data{Base}=&Path_Split('Base', $_);
+			my $MmpFile= $Data{Path}.$Data{Base};
+   
+#			check the file isn't already specified
+  			if ($Check{$MmpFile}) {
+  				push @PrjFileDie, "$CurFile($LineNum) : duplicate $Data{Base} (from line $Check{$MmpFile})\n";
+   				next;
+   			}
+  			$Check{$MmpFile}="$CurFile: $LineNum";
+
+#			check the file exists
+			unless (-e "$Data{Path}$Data{Base}$Data{Ext}") {
+				WarnOrDie(\@PrjFileDie, "$CurFile($LineNum) : $Data{Path}$Data{Base}$Data{Ext} does not exist\n");
+				next LINE;
+			}
+			
+
+#			process the file's attributes
+			if ($Section eq 'MMPFILES') {
+				foreach (@$Line) {
+					if (/^TIDY$/o) {
+						$Data{Tidy}=1;
+						next;
+					}
+					if (/^IGNORE$/o) {
+						next LINE;
+					}
+					if (/^BUILD_AS_ARM$/o) {
+					  $Data{BuildAsARM}="-arm";
+					  next;
+					}
+
+					push @PrjFileDie, "$CurFile($LineNum) : Don't understand .MMP file argument \"$_\"\n";
+				}
+			}
+
+#			process the test .MMP file's attributes
+			elsif ($Section eq 'TESTMMPFILES') {
+				foreach (@$Line) {
+					if (/^TIDY$/o) {
+						$Data{Tidy}=1;
+						next;
+					}
+					if (/^IGNORE$/o) {
+						next LINE;
+					}
+					if (/^BUILD_AS_ARM$/o) {
+					  $Data{BuildAsARM}="-arm";
+					  next;
+					}
+					if (/^MANUAL$/o) {
+						$Data{Manual}=1;
+						next;
+					}
+					if (/^SUPPORT$/o) {
+						$Data{Support}=1;
+						next;
+					}
+					push @PrjFileDie, "$CurFile($LineNum) : Don't understand test .MMP file argument \"$_\"\n";
+				}
+			}
+		}		
+
+#		store the data
+		if (($Section eq 'MMPFILES') or ($Section eq 'EXTENSIONS')) {
+			if ($IgnoreMissingExtensionMakefile and $Section eq 'EXTENSIONS')
+			{
+				# More than more ext makefile can be missing so reset indicator
+				$IgnoreMissingExtensionMakefile = 0;
+			}
+			else
+			{
+				push @$DataRef, \%Data;
+			}
+			next LINE;
+		}
+		if (($Section eq 'TESTMMPFILES') or ($Section eq 'TESTEXTENSIONS')) {
+			if ($IgnoreMissingExtensionMakefile and $Section eq 'TESTEXTENSIONS')
+			{
+				# More than more ext makefile can be missing so reset indicator
+				$IgnoreMissingExtensionMakefile = 0;
+			}
+			else
+			{
+				push @$TestDataRef, \%Data;
+			}
+			next LINE;
+		}
+		
+	}
+#	line loop end
+
+#	exit if there are errors
+	if (@PrjFileDie) {
+		print STDERR
+			"\n\"${BldInfPath}$BldInfName\" FATAL ERROR(S):\n",
+			@PrjFileDie
+		;
+		exit 1;
+	}
+}
+
+
+sub FatalError (@) {
+
+	print STDERR "BLDMAKE ERROR: @_\n";
+	exit 1;
+}
+
+sub CreatePlatformPm ($$$$$$) {
+	my ($BatchPath, $PlatsRef, $RealPlatsRef, $RealHRef, $AllPlatDataHRef, $AllPlatTestDataHRef)=@_;
+
+
+# 	exclude GCCXML, EDG and CWTOOLS  from list of RealPlats
+	my @RealPlats;
+	foreach my $Plat (@$RealPlatsRef){
+	unless (($Plat =~ /^gccxml/i)  or  ($Plat =~ /^edg/i) or  ($Plat =~ /^cwtools/i) or ($Plat =~ /^x86gcc/i) or ($Plat =~ /^x86gmp/i)) {
+# 	exclude BPABI targets from list of RealPlats provided they are not specified in the platform list
+				if (grep /^$Plat$/i, @OptionalPlats) {
+					if (grep /^$Plat$/, @PlatsReq) {
+						push @RealPlats, $Plat;
+					}
+					next;
+				}
+				push @RealPlats, $Plat;
+			}
+	}
+
+
+	&Output(
+		"# Bldmake-generated perl file - PLATFORM.PM\n",
+		"\n",
+		"# use a perl integrity checker\n",
+		"use strict;\n",
+		"\n",
+		"package Platform;\n",
+		"\n",
+		"use vars qw(\@Plats \@RealPlats %Programs %TestPrograms %FeatureVariantSupportingPlats);\n",
+		"\n",
+		"\@Plats=(\'",join('\',\'',@$PlatsRef),"\');\n",
+		"\n",
+		"\@RealPlats=(\'", join('\',\'',@RealPlats),"\');\n",
+		"\n",
+		"%Programs=(\n"
+	);
+	my %All; # all programs for all platforms
+	my $TmpStr;
+	my $Plat;
+	foreach $Plat (@$PlatsRef) {
+		$TmpStr="	\'$Plat\'=>[";
+		if (@{${$AllPlatDataHRef}{$$RealHRef{$Plat}}}) {
+			my $ProgRef;
+			foreach $ProgRef (@{${$AllPlatDataHRef}{$$RealHRef{$Plat}}}) {
+				$TmpStr.="'$$ProgRef{Base}',";
+				$All{$$ProgRef{Base}}=1;
+			}
+			chop $TmpStr;
+			}
+		&Output(
+			"$TmpStr],\n"
+		);
+		}
+	$TmpStr="	ALL=>[";
+	if (keys %All) {
+		my $Prog;
+		foreach $Prog (keys %All) {
+			$TmpStr.="'$Prog',";
+		}
+		chop $TmpStr;
+	}
+	&Output(
+		"$TmpStr]\n",
+		");\n",
+		"\n",
+		"%TestPrograms=(\n"
+	);
+	%All=();
+	foreach $Plat (@$PlatsRef) {
+		$TmpStr="	\'$Plat\'=>[";
+		if (@{${$AllPlatTestDataHRef}{$$RealHRef{$Plat}}}) {
+			my $ProgRef;
+			foreach $ProgRef (@{${$AllPlatTestDataHRef}{$$RealHRef{$Plat}}}) {
+				$TmpStr.="'$$ProgRef{Base}',";
+				$All{$$ProgRef{Base}}=1;
+			}
+			chop $TmpStr;
+		}
+		&Output("$TmpStr],\n");
+	}
+	$TmpStr="	ALL=>[";
+	if (keys %All) {
+		my $Prog;
+		foreach $Prog (keys %All) {
+			$TmpStr.="'$Prog',";
+		}
+		chop $TmpStr;
+	}
+	&Output(
+		"$TmpStr]\n",
+		");\n",
+		"\n"
+	);
+
+	&Output(
+		"\n",
+		"%FeatureVariantSupportingPlats=("
+	);
+
+	$TmpStr = "";
+	foreach $Plat (@$PlatsRef)
+		{
+		$TmpStr .= "\n\t$Plat=>1," if (&Plat_SupportsFeatureVariants($Plat));
+		}
+
+	chop $TmpStr;
+
+	&Output(
+		"$TmpStr\n",
+		");\n",
+		"\n",
+		"1;\n"
+	);
+
+#	write the PLATFORM.PM file
+	&WriteOutFileL($BatchPath."PLATFORM.PM");
+}
+
+sub CreatePerlBat ($) {
+	my ($BldInfPath)=@_;
+
+#	create ABLD.BAT, which will call ABLD.PL
+#   NB. must quote $BldInfPath because it may contain spaces, but we know it definitely
+#       ends with \ so we need to generate "\foo\bar\\" to avoid quoting the close double quote
+	&Output(
+		"\@ECHO OFF\n",
+		"\n", 
+		"REM Bldmake-generated batch file - ABLD.BAT\n",
+		"REM ** DO NOT EDIT **", 
+		"\n",
+		"\n",
+		"perl -S ABLD.PL \"${BldInfPath}\\\" %1 %2 %3 %4 %5 %6 %7 %8 %9\n",
+		"if errorlevel==1 goto CheckPerl\n",
+		"goto End\n",
+		"\n",
+		":CheckPerl\n",
+		"perl -v >NUL\n",
+		"if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?\n",
+		"goto End\n",
+		"\n",
+		":End\n"
+	);
+
+#	check that the .BAT file does not already exist and is read-only
+	if ((-e "${BldInfPath}ABLD.BAT")  && !(-w "${BldInfPath}ABLD.BAT")) {
+		warn "BLDMAKE WARNING: read-only ABLD.BAT will be overwritten\n";
+		chmod 0222, "${BldInfPath}ABLD.BAT";
+	}
+
+#	create the .BAT file in the group directory
+	&WriteOutFileL($BldInfPath."ABLD.BAT",1);
+
+}
+
+sub GetArchiveExportList($) {
+	my ($ExportRef) = @_;
+	my $Type = $ExportRef->{Type};
+	my $Src = $ExportRef->{Source};
+	my $Dest = $ExportRef->{Releasable};
+	$Dest = '' if (!defined($Dest));
+	my @list = ();
+	if ($Type eq 'zip') {
+		unless (open PIPE, "unzip -l $Src | ") {
+			warn "Can't unzip $Src\n";
+		}
+		while (<PIPE>) {
+			if (/^\s*\d+\s+\S+\s+\S+\s+(.*?)\s*$/) {
+#				ignore empty lines and anything that finishes with / 
+				unless(($1=~/\/\s*$/) || ($1=~/^$/)) {
+
+					my $member = $1;
+					$member =~ s/\$/\$\$/g;
+					if (!$Dest){
+						push @list, "$ENV{EPOCROOT}$member";
+					}
+					else{
+						push @list, "$Dest\\$member";
+					}
+				}
+			}
+		}
+		close PIPE;
+	}
+	return @list;
+}
+
+sub CreateExportMak ($$$) {
+	my ($Makefile, $ExportsRef, $ExpDirsRef)=@_;
+
+#	create EXPORT.MAKE
+
+	my $erasedefn = "\@erase";
+	$erasedefn = "\@erase 2>>nul" if ($ENV{OS} eq "Windows_NT");
+	&Output(
+		"ERASE = $erasedefn\n",
+		"\n",
+		"\n",
+		"EXPORT : EXPORTDIRS"
+	);
+	my $ref;
+	if (@$ExportsRef) {
+		foreach $ref (@$ExportsRef) {
+			if ($$ref{Type} eq 'zip') {
+				my @list = &GetArchiveExportList($ref);
+				foreach (@list) {
+					my $dst=$_;
+					&Output(
+						" \\\n",
+						"\t$dst"
+					);
+				}
+			} else {
+				my $name=&Path_Quote($$ref{Releasable});
+				&Output(
+					" \\\n",
+					"\t$name"
+				);
+			}
+		}
+	}
+	else {
+		&Output(
+			" \n",
+			"\t\@echo Nothing to do\n"
+		);
+	}
+	&Output(
+		"\n",
+		"\n",
+		"\n",
+		"EXPORTDIRS :"
+	);
+	my $dir;
+	foreach $dir (@$ExpDirsRef) {
+		$dir=&Path_Quote($dir);
+		&Output(
+			" $dir"
+		);
+	}
+	&Output(
+		"\n",
+		"\n"
+	);
+	foreach $dir (@$ExpDirsRef) {
+		&Output(
+			"$dir :\n",
+			    "\t\@perl -S emkdir.pl \"\$\@\"\n",
+			"\n"
+		);
+	}
+	&Output(
+		"\n",
+		"\n"
+	);
+	foreach $ref (@$ExportsRef) {
+		my $unzipoption = $$ref{UnzipOption};
+		CheckSource_ExportedIncludes($$ref{Source}, $$ref{Releasable}, %CheckSourceEXPORTSIncludes);
+		
+		if ($$ref{Type} eq 'zip') {
+			my $src = &Path_Quote($$ref{Source});
+			my $destdir = &Path_Quote($$ref{Releasable});
+			$destdir=$ENV{EPOCROOT} if (!defined($destdir) or ($destdir eq ''));
+			my @list = &GetArchiveExportList($ref);
+  			foreach (@list) {  				
+  				my $dst=$_;
+  				&Output(
+ 					"$dst : $src\n",
+  				);
+  			}
+			if ($unzipoption =~ /overwrite/i){
+				&Output(
+				"\t- unzip -o $src -d \"$destdir\"\n",
+				);
+			}
+			else{	
+				&Output(
+				"\t- unzip -u  -o $src -d \"$destdir\"\n",
+				);
+			}
+		} else {
+			my $dst=&Path_Quote($$ref{Releasable});
+			my $src=&Path_Quote($$ref{Source});
+			&Output(
+				"$dst : $src\n",
+					"\tcopy \"\$?\" \"\$\@\"\n",
+				"\n"
+			);
+		}
+	}
+	&Output(
+		"\n",
+		"\n"
+	);
+	if (@$ExportsRef) {
+		&Output(
+			"CLEANEXPORT :\n"
+		);
+		foreach $ref (@$ExportsRef) {
+			if ($$ref{Type} eq 'zip') {
+				my @list = &GetArchiveExportList($ref);
+				foreach (@list) {
+					my $dst=$_;
+					$dst =~ s/\//\\/go;
+					&Output(
+						"\t-\$(ERASE) \"$dst\"\n"
+					);
+				}
+			} else {
+				my $dst = $$ref{Releasable};
+				$dst =~ s/\//\\/go;
+				&Output(
+					"\t-\$(ERASE) \"$dst\"\n"
+				);
+			}
+		}
+		&Output(
+			"\n",
+			"WHAT :\n"
+		);
+		foreach $ref (@$ExportsRef) {
+			if ($$ref{Type} eq 'zip') {
+				my @list = &GetArchiveExportList($ref);
+				foreach (@list) {
+					my $dst=$_;
+					$dst =~ s/\//\\/go;
+					&Output(
+						"\t\@echo \"$dst\"\n"
+					);
+				}
+			} else {
+				my $dst = $$ref{Releasable};
+				$dst =~ s/\//\\/go;
+				&Output(
+					"\t\@echo \"$dst\"\n"
+				);
+			}
+		}
+	}
+	else {
+		&Output(
+			"CLEANEXPORT :\n",
+			"\t\@echo Nothing to do\n",
+			"WHAT :\n",
+			"\t\@rem do nothing\n"
+		);
+	}
+
+	&Output(
+		"\nCHECKSOURCE :\n"
+	);
+	
+	&Output (CheckSource_MakefileOutput(%CheckSourceEXPORTSMetaData));
+	&Output (CheckSource_MakefileOutput(%CheckSourceEXPORTSIncludes));
+
+	&Output("\n");
+	
+#	write EXPORT.MAKE
+	&WriteOutFileL($Makefile);
+}
+
+sub CreatePlatExports ($$) {
+	my ($RealPlat,$Exports)=@_;
+	my $Ref;
+	&Output(
+ 	"\n# Rules which handle the case when \$(CFG) is not defined\n\n" ,
+ 	"EXPORT:		\tEXPORTUREL EXPORTUDEB\n", 
+ 	"EXPORTCLEAN:	\tEXPORTCLEANUREL EXPORTCLEANUDEB\n",
+ 	"EXPORTWHAT:	\tEXPORTWHATUREL EXPORTWHATUDEB\n",
+  
+ 	"\n# definitions \n",
+ 	"DATAx = $ENV{EPOCROOT}epoc32\\data\n",
+ 	"EMULx = $ENV{EPOCROOT}epoc32\\$RealPlat\n",
+ 	"URELx = $ENV{EPOCROOT}epoc32\\release\\$RealPlat\\urel\n",
+ 	"UDEBx = $ENV{EPOCROOT}epoc32\\release\\$RealPlat\\udeb\n",
+ 	"\n"
+	);
+	
+	&Output( 
+	"# Exports to emulated drive A: to Y \n\n",
+	"EXPORTGENERIC : EXPORTDIRSGENERIC",
+	);
+	 
+	my @dirs;
+	my @expgen;
+	my %dirsg;
+	foreach $Ref (@$Exports) {
+	 	if ($$Ref{emReleasable}=~/^([A-Y])(\\.*)$/){
+		   my $exp="\\$$Ref{emReleasable}";
+	 	   if ($$Ref{Type} eq 'zip') {	
+			 my @list = &GetArchiveExportList($Ref);	
+			  foreach (@list) {
+				my $dst=&Path_Quote($_);
+				if ($dst=~/([^\\]*)$/o){
+					$dst=$1;
+				}
+				my $zipdest=$dst;
+				$zipdest =~ s/\//\\/g;
+			    push  @expgen, "$exp\\$zipdest";
+			    my $zippath= &Path_Chop(&Path_Split('Path', $zipdest));
+				if(!$zippath){
+					$dirsg{$exp}=$exp;
+				}
+				else{
+					 $dirsg{"$exp\\$zippath"}="$exp\\$zippath";
+				}
+				&Output(" \\\n","\t\$(EMULx)$exp\\$zipdest");
+			 }      
+		 }
+		 else { 
+		     my $dir =  &Path_Chop(&Path_Split('Path', $exp));  
+			 push @expgen,  $exp;	
+			 $dirsg{$dir}=$dir;
+			 &Output(" \\\n", "\t\$(EMULx)$exp "); 
+		 }
+	   }
+	}
+	&Output("\n\nEXPORTDIRSGENERIC : ");
+	foreach (keys %dirsg){
+			 push @dirs, "\$(EMULx)$dirsg{$_}";
+			 &Output(" \\\n", "\t\$(EMULx)$_"); 
+	} 
+	&Output("\n\n");
+	foreach (@expgen){	 
+			&Output( 
+			"\$(EMULx)$_ : \t\$(DATAx)$_ \n",
+			"\tcopy \"\$?\" \"\$@\" \n"
+			);
+	}	
+	&Output("\nEXPORTCLEANGENERIC :\n");		
+	foreach (@expgen){	 
+			&Output("\t-@\$(ERASE) \$(EMULx)$_ \n");
+	} 			
+	&Output("\nEXPORTWHATGENERIC :\n");			
+	foreach (@expgen){	   
+			&Output("\t\@echo \$(EMULx)$_ \n");
+	}
+		
+	&Output( 
+	 		"\n\n# Exports to emulated drive Z: - UREL version \n\n",
+	 		"EXPORTUREL : EXPORTDIRSUREL",
+	 	   );
+	
+	my @expurel; 
+	my %dirsurel;
+	foreach $Ref (@$Exports) {
+		if ($$Ref{emReleasable}=~/^(Z)(\\.*)$/){
+			my $exp="\\$$Ref{emReleasable}";
+	 	    if ($$Ref{Type} eq 'zip') {
+			  my @list = &GetArchiveExportList($Ref);
+			  foreach (@list) {
+				my $dst=&Path_Quote($_);
+				if ($dst=~/([^\\]*)$/o){
+					$dst=$1;
+				}
+				my $zipdest=$dst;
+				$zipdest=~ s/\//\\/g;
+				push  @expurel, "$exp\\$zipdest"; 
+				my $zippath= &Path_Chop(&Path_Split('Path', $zipdest)); 
+				if(!$zippath){
+				   $dirsurel{$exp}=$exp;
+				}
+				else{
+					$dirsurel{"$exp\\$zippath"}="$exp\\$zippath";
+				}
+				&Output(" \\\n","\t\$(URELx)$exp\\$zipdest");
+			}  
+		}
+		else {
+			  my $dir =  &Path_Chop(&Path_Split('Path', $exp));  
+			  push @expurel,  $exp; 
+			  $dirsurel{$dir}=$dir;
+			  &Output(" \\\n", "\t\$(URELx)$exp "); 
+		}
+	  }
+	} 
+	&Output("\n\nEXPORTDIRSUREL : ");
+	foreach (keys %dirsurel){
+			push @dirs, "\$(URELx)$dirsurel{$_}";
+   			&Output(" \\\n", "\t\$(URELx)$_ "); 
+	}
+	&Output("\n\n");	
+	foreach (@expurel){
+			 &Output( 
+					"\$(URELx)$_ : \t\$(DATAx)$_ \n",
+					"\tcopy \"\$?\" \"\$@\" \n"
+			 );
+	}		
+	&Output("\nEXPORTCLEANUREL :\n"); 		
+	foreach (@expurel){	
+			 &Output("\t-@\$(ERASE) \$(URELx)$_ \n"); 
+	}  
+	&Output("\nEXPORTWHATUREL :\n");	
+	foreach (@expurel){	
+			 &Output( "\t\@echo \$(URELx)$_ \n"); 	
+	}
+	   
+	&Output( 
+	 		"\n\n# Exports to emulated drive Z: - UDEB version \n\n",
+	 		"EXPORTUDEB : EXPORTDIRSUDEB",
+	);  
+	 	   
+	my %dirsudeb=%dirsurel;          
+	my @expudeb=@expurel;
+	foreach (@expudeb){
+	         &Output(" \\\n", "\t\$(UDEBx)$_ ");		  
+	}
+	&Output("\n\nEXPORTDIRSUDEB : ");
+	foreach(keys %dirsudeb){
+	  		push @dirs, "\$(UDEBx)$dirsudeb{$_}";
+	  		&Output(" \\\n", "\t\$(UDEBx)$_ "); 
+	  	
+	}
+	&Output("\n\n");
+	foreach (@expudeb){
+	 		 &Output( 
+					"\$(UDEBx)$_ : \t\$(DATAx)$_ \n",
+					"\tcopy \"\$?\" \"\$@\" \n"
+			 );
+	}			
+	&Output("\nEXPORTCLEANUDEB :\n");
+	foreach (@expudeb){	
+			 &Output("\t-@\$(ERASE) \$(UDEBx)$_ \n"); 
+	}  
+	&Output("\nEXPORTWHATUDEB :\n");	
+	foreach (@expudeb){	
+			 &Output("\t\@echo \$(UDEBx)$_ \n"); 	
+	}
+	
+    &Output("\n# Directories \n\n");  
+	&Output(join (" \\\n", @dirs)." :")       
+	&Output("\n\t\@perl -S emkdir.pl \$@\n\n");			
+		   		
+}
+
+sub CreatePlatMak ($$$$$$$$$;$) {
+	my ($BatchPath, $E32MakePath, $DataRef, $Plat, $RealPlat, $RomDir, $Module, $BldInfPath, $Exports, $Test, $FeatureVariant)=@_;
+	$FeatureVariant = "" if (!$FeatureVariant);
+
+	unless ($Test) {
+		$Test='';
+	}
+	else {
+		$Test='TEST';
+	}
+
+	my $Ref;
+	my $eDrive=0;
+	if ($RealPlat =~ /^WINS/) {
+	    foreach $Ref (@$Exports) {
+			if ($$Ref{emReleasable}=~/^([A-Z])(\\.*)$/) {
+				$eDrive=1;
+				last;
+			}
+		}
+	} 
+
+
+	my $OutRomFile="$RomDir$RealPlat$Test.IBY";
+	my $GCCDir="gcc\$(PBUILDPID)\\bin";
+	
+	my $erasedefn = "\@erase";
+	$erasedefn = "\@erase 2>>nul" if ($ENV{OS} eq "Windows_NT");
+
+# Get the root platform name to support hierarchy of customizations	
+	my $root = Plat_Root($Plat);
+
+	my $config_file = "";
+
+	if (grep /^$root$/i, @BPABIPlats) {
+		$config_file = BPABIutl_Config_Path($root);
+	}
+
+	my $rvct_path = "";
+
+	if ( $config_file ) {
+
+		if ($root =~ /^ARMV\d/) {
+
+			unless ( RVCT_plat2set::compiler_exists($Plat) )
+			{
+				FatalError("Can't find any RVCT installation.");
+			}
+
+			my $rvct_ver = RVCT_plat2set::get_version_string($Plat);
+
+			if ($Plat =~ "^ARMV5" && $rvct_ver lt "2.2.559")
+			{
+				warn "BLDMAKE WARNING: ARMV5 requires at least RVCT 2.2.559.";
+				OutText();
+				return;
+			}
+
+			if ($Plat =~ "^ARMV6" && $rvct_ver lt "2.2.559")
+			{
+				warn "BLDMAKE WARNING: ARMV6 requires at least RVCT 2.2.559.";
+				OutText();
+				return;
+			}
+
+			if ($Plat =~ "^ARMV7" && $rvct_ver lt "3.1.674")
+			{
+				warn "BLDMAKE WARNING: ARMV7 requires at least RVCT 3.1.674.";
+				OutText();
+				return;
+			}
+
+			my $rvct_bin_name = RVCT_plat2set::get_bin_name($Plat);
+			my $rvct_bin_path = RVCT_plat2set::get_bin_path($Plat);
+			my $rvct_inc_name = RVCT_plat2set::get_inc_name($Plat);
+			my $rvct_inc_path = RVCT_plat2set::get_inc_path($Plat);
+			my $rvct_lib_name = RVCT_plat2set::get_lib_name($Plat);
+			my $rvct_lib_path = RVCT_plat2set::get_lib_path($Plat);
+
+			main::Output("export $rvct_bin_name:=$rvct_bin_path\n");
+			main::Output("export $rvct_inc_name:=$rvct_inc_path\n");
+			main::Output("export $rvct_lib_name:=$rvct_lib_path\n");
+
+			my ($rvct_M, $rvct_m, $rvct_b) = RVCT_plat2set::get_version_list($Plat);
+
+			Output( "\n" );
+			Output( "export RVCT_VER_MAJOR:=$rvct_M\n" );
+			Output( "export RVCT_VER_MINOR:=$rvct_m\n" );
+			Output( "export RVCT_VER_BUILD:=$rvct_b\n" );
+
+			$rvct_path = "\$($rvct_bin_name);"; # Example: '$(RVCT22BIN);'.
+		}
+
+		&Output(
+			"\n",
+			"export PLAT:=${Plat}\n\n",
+			"include $config_file\n\n"
+		);
+	}
+# modified start: makefile improvement 
+	unless($FeatureVariant eq "")
+	{
+# modified by SV start: makefile improvement 
+		foreach $Ref (@$DataRef) {
+			&Output(
+			"include $BatchPath"."FeatureVariantInfo\\".uc($Plat)."\\"."$Plat$FeatureVariant.$$Ref{Base}.info\n\n",
+			);
+		}
+# modified by SV end: makefile improvement 
+	}
+# modified end: makefile improvement 
+	# Don't hardcode the rvct path if rvct auto switch feature is not enabled.
+	if ($ENV{ABLD_PLAT_INI}) 
+	{
+		&Output(
+		'export Path:=',&main::Path_Drive,$E32env::Data{EPOCPath},$GCCDir,";", $rvct_path,"\$(Path)\n",
+		"export PATH:=\$(Path)\n"
+		);
+	}
+	else
+	{
+		&Output(
+		'export Path:=',&main::Path_Drive,$E32env::Data{EPOCPath},$GCCDir,";", "\$(Path)\n",
+		"export PATH:=\$(Path)\n"
+		);
+	}
+
+	&Output(		
+		"\n",
+		"# prevent MAKEFLAGS variable from upsetting calls to NMAKE\n",
+		"unexport MAKEFLAGS\n",
+		"\n",
+		"ERASE = $erasedefn\n",
+		"\n",
+		"\n",
+		"ifdef EFREEZE_ALLOW_REMOVE\n",
+		"REMOVEMACRO := EFREEZE_ALLOW_REMOVE=-remove\n",
+		"endif\n",
+		"\n",
+		"\n"
+	);
+
+	if ($eDrive) {
+		# Generate exports into emulated drives
+		&CreatePlatExports($RealPlat,$Exports);
+	}
+	my $Command;
+	foreach $Command (qw(CLEAN CLEANMAKEFILE CLEANALL FINAL FREEZE LIBRARY MAKEFILE RESOURCE SAVESPACE TARGET LISTING WHATMAKEFILE)) {
+		&Output(
+			"$Command :"
+		);
+
+			 if ($eDrive and $Command eq 'CLEAN'){
+				 &Output(" EXPORTCLEANGENERIC EXPORTCLEAN\$(CFG) ");
+				 foreach $Ref (@$DataRef) {
+					 &Output(" $Command$$Ref{Base}");
+				 }
+			 }	    	 
+			 elsif ($eDrive and $Command eq 'RESOURCE'){
+				 &Output(" EXPORTGENERIC EXPORT\$(CFG) ");
+			   	 foreach $Ref (@$DataRef) {
+					 &Output(" $Command$$Ref{Base}");
+				 }
+				 
+				 foreach $Ref (@$DataRef) {
+					 &Output("\n\nRESOURCE$$Ref{Base} : EXPORTGENERIC EXPORT\$(CFG)");
+				 }
+			  }
+			  else {
+			        if(@$DataRef){
+			        	foreach $Ref (@$DataRef) {
+			        		&Output(" $Command$$Ref{Base}");
+			           }
+			          } 		
+			         else {
+			         	&Output("\n","\t\@echo Nothing to do\n");
+			         }
+			  }  
+		&Output("\n","\n");
+	}
+	
+	&Output(
+		"WHAT :"
+	);
+	if($eDrive){
+	  &Output(" EXPORTWHATGENERIC EXPORTWHAT\$(CFG) ");
+	}
+	my $whatcount=0;
+	foreach $Ref (@$DataRef) {
+		unless ($$Ref{Tidy}) {
+			$whatcount++;
+			&Output(
+				" WHAT$$Ref{Base}"
+			);
+		}
+	}
+	if ($whatcount==0 and !$eDrive) {
+		&Output(
+			"\n",
+			"\t\@rem do nothing\n" 
+		);
+	}
+
+	&Output(
+		"\n",
+		"\n",
+		"CHECKSOURCE :"
+	);
+	my $CheckSource=' CHECKSOURCE_GENERIC';
+	foreach $Ref (@$DataRef) {
+		$CheckSource.=" CHECKSOURCE$$Ref{Base}" if ($$Ref{Ext} eq ".MMP");
+	}
+	&Output(
+		"$CheckSource\n"
+	);
+
+	&Output(
+		"\n",
+		"CHECKSOURCE_GENERIC :\n"
+	);
+
+	if ($CheckSourceBldInfIncludes{$Plat})
+		{
+		my %dummy;
+		$dummy{$CheckSourceBldInfIncludes{$Plat}} = 1;
+		&Output (CheckSource_MakefileOutput(%dummy));		
+		}
+
+	&Output (CheckSource_MakefileOutput(%CheckSourceMMPFILESMetaData));
+	&Output (CheckSource_MakefileOutput(%CheckSourceEXTENSIONSMetaData));
+	
+	&Output(
+		"\n",
+		"\n",
+		"TIDY :"
+	);
+	my $Tidy='';
+	foreach $Ref (@$DataRef) {
+		if ($$Ref{Tidy}) {
+			$Tidy.=" TIDY$$Ref{Base}";
+		}
+	}
+	if ($Tidy) {
+		&Output(
+			"$Tidy\n"
+		);
+	}
+	else {
+		&Output(
+			"\n",
+			"\t\@echo Nothing to do\n"
+		);
+	}
+	&Output(
+		"\n",
+		"\n"
+	);
+#	change for non-EPOC platforms
+	if ($RealPlat=~/^(WINS|WINSCW|WINC|TOOLS|TOOLS2)$/o) {
+		&Output(
+			"ROMFILE :\n"
+		);
+	}
+	else {
+		&Output(
+			'ROMFILE : STARTROMFILE'
+		);
+		foreach $Ref (@$DataRef) {
+			&Output(
+				" ROMFILE$$Ref{Base}"
+			);
+		}
+		&Output(
+			"\n",
+			"\n",
+			"STARTROMFILE :\n",
+			    "\t\@perl -S emkdir.pl \"", &Path_Chop($RomDir), "\"\n",
+			    "\t\@echo // $OutRomFile > $OutRomFile\n",
+			    "\t\@echo // >> $OutRomFile\n"
+		);
+		if ($Test) {
+			my ($Auto, $Manual);
+			foreach $Ref (@$DataRef) {
+				++$Auto unless ($$Ref{Manual} or $$Ref{Support});
+				++$Manual if ($$Ref{Manual});
+			}
+			if ($Auto) {
+				my $IbyTextFrom="data=$BatchPath$Plat.AUTO.BAT";
+				my $IbyTextTo="Test\\$Module.AUTO.BAT";
+				my $Spaces= 60>length($IbyTextFrom) ? 60-length($IbyTextFrom) : 1; 
+				&Output("\t\@echo ", $IbyTextFrom, ' 'x$Spaces, $IbyTextTo, ">> $OutRomFile\n");
+			}
+			if ($Manual) {
+				my $IbyTextFrom="data=$BatchPath$Plat.MANUAL.BAT";
+				my $IbyTextTo="Test\\$Module.MANUAL.BAT";
+				my $Spaces= 60>length($IbyTextFrom) ? 60-length($IbyTextFrom) : 1; 
+				&Output("\t\@echo ", $IbyTextFrom, ' 'x$Spaces, $IbyTextTo, ">> $OutRomFile\n");
+			}
+		}
+	}
+	&Output(
+		"\n",
+		"\n"
+	);
+	my $CallNmake='nmake -nologo -x - $(VERBOSE) $(KEEPGOING)';
+	my $CallGNUmake='$(MAKE) $(VERBOSE) $(KEEPGOING)';
+
+	my %PlatHash;
+	&Plat_GetL($RealPlat, \%PlatHash);
+	my $CallMake=$CallNmake;
+	if ($PlatHash{MakeCmd} eq "make") {
+		$CallMake="$CallGNUmake -r";
+	}
+	&Plat_GetL($Plat, \%PlatHash);
+	
+	foreach $Ref (@$DataRef) {
+
+#		standard commands
+		unless ($$Ref{Makefile}) {
+			my $MakefilePath=join('', &Path_Chop($E32MakePath), $BldInfPath, $$Ref{Base}, "\\", $RealPlat, "\\");
+# modified start: makefile improvement 
+			my $RealMakefile;
+			if($FeatureVariant eq "")
+			{
+				$RealMakefile="-f \"$MakefilePath$$Ref{Base}.$RealPlat$FeatureVariant\"";
+			}
+			else{
+				$RealMakefile="-f \"$MakefilePath$$Ref{Base}.$RealPlat.\$(VARIANT_PLAT_NAME_$$Ref{Base})\"";
+			}
+# modified end: makefile improvement 
+			my $MakefileBase="$MakefilePath$$Ref{Base}";		
+
+			if($Plat eq 'VS6' || $Plat eq 'VS2003')
+			{
+				$CallMake .= "-f ";
+				$RealMakefile = "$MakefileBase$PlatHash{Ext}";
+			}
+			&Output(
+				"MAKEFILE$$Ref{Base}_FILES= \\\n",
+					"\t\"$MakefileBase$PlatHash{Ext}$FeatureVariant\"",
+			);
+#			changes for WINS/WINSCW/WINC and VC6
+			if ($Plat =~ /^VC6/) {
+				&Output(
+					" \\\n\t\"$MakefileBase.DSW\"",
+					" \\\n\t\"$MakefileBase.SUP.MAKE\""
+				);
+			}
+			if ($Plat eq 'CW_IDE') {
+				&Output(
+					" \\\n\t\"$MakefileBase.pref\""		# Defect: actually uses $BaseTrg, not mmp file name
+				);
+			}
+			if ($RealPlat=~/^(WINS|WINSCW|WINC)$/o) {
+				&Output(
+					" \\\n\t\"$MakefileBase.UID.CPP\""	# Defect: actually uses $BaseTrg, not mmp file name
+				);
+			}
+			
+  			my $bld_flags="";
+			$bld_flags="\$(ABLD_FLAGS)" if (($Plat =~ /^ARMV5(_ABIV1)?$/ || grep /$Plat/i, @BPABIPlats) || (Plat_Root($Plat) =~ /^ARMV5(_ABIV1)?$/ || grep /$Plat/i, @BPABIPlats));
+			
+			
+			my $build_as_arm_arg="";
+			$build_as_arm_arg = $$Ref{BuildAsARM} if ($$Ref{BuildAsARM});
+
+			# Compiler Wrapper option Support  
+			# Generate the flag to keep the Compiler Wrapper option information
+			my $cmp_wrap_flag="";
+			if (($Plat =~ /^ARMV5(_ABIV1)?$/ || grep /$Plat/i, @BPABIPlats) || ($Plat=~/^WINSCW$/) || (Plat_Root($Plat) =~ /^ARMV5(_ABIV1)?$/ || grep /$Plat/i, @BPABIPlats))
+			{
+				# for armv5 , armv5_abiv1, winscw and all bpabi plaforms
+				$cmp_wrap_flag="\$(ABLD_COMPWRAP_FLAG)" ;
+			}
+
+			&Output(
+				"\n",
+				"\n",
+				"MAKEFILE$$Ref{Base} :\n",
+				    "\tperl -S makmake.pl \$(NO_DEPENDENCIES) -D $$Ref{Path}$$Ref{Base} $Plat$FeatureVariant $build_as_arm_arg $bld_flags $cmp_wrap_flag\n",
+
+				"\n",
+				"CLEANMAKEFILE$$Ref{Base} :\n",
+				    "\t-\$(ERASE) \$(MAKEFILE$$Ref{Base}_FILES)\n",
+				"\n",
+				"WHATMAKEFILE$$Ref{Base} :\n",
+				    "\t\@echo \$(MAKEFILE$$Ref{Base}_FILES)\n",
+				"\n",
+				"TARGET$$Ref{Base} :\n",
+				    "\t$CallMake $RealMakefile \$(CFG)\n",
+				"\n",
+				"SAVESPACE$$Ref{Base} :\n",
+				    "\t$CallMake $RealMakefile \$(CFG) CLEANBUILD\$(CFG)\n",
+				"\n",
+				"LISTING$$Ref{Base} :\n",
+				    "\t$CallMake $RealMakefile MAKEWORK\$(CFG) LISTING\$(CFG)\$(SOURCE)\n",
+				"\n",
+				"FINAL$$Ref{Base} :\n",
+				    "\t\@rem do nothing\n",
+				"\n",
+			);
+			foreach $Command (qw(CLEANALL)) {
+				&Output(
+					"CLEANALL$$Ref{Base} :\n",
+					"\tperl -S ermdir.pl $MakefilePath\n",
+					"\n",
+				);
+			}
+			foreach $Command (qw(CLEAN RESOURCE)) {
+				&Output(
+					"$Command$$Ref{Base} :\n",
+					    "\t$CallMake $RealMakefile $Command\$(CFG)\n",
+					"\n"
+				);
+			}
+			foreach $Command (qw(LIBRARY)) {
+				&Output(
+					"$Command$$Ref{Base} :\n",
+					    "\t$CallMake $RealMakefile $Command\n",
+					"\n"
+				);
+			}
+			foreach $Command (qw(FREEZE)) {
+				&Output(
+					"$Command$$Ref{Base} :\n",
+					    "\t$CallMake $RealMakefile $Command \$(REMOVEMACRO)\n",
+					"\n"
+				);
+			}
+			unless ($$Ref{Tidy}) {
+				&Output(
+					"WHAT$$Ref{Base} :\n",
+					    "\t\@$CallMake -s $RealMakefile WHAT\$(CFG)\n",
+					"\n"
+				);
+			}
+			else {
+				&Output(
+					"TIDY$$Ref{Base} :\n",
+					    "\t$CallMake $RealMakefile CLEANRELEASE CLEANLIBRARY\n",
+					"\n"
+				);
+			}
+			
+			&Output(
+				"CHECKSOURCE$$Ref{Base} :\n",
+					"\t\@$CallMake -s $RealMakefile CHECKSOURCE\n",
+					"\t\@$CallMake -s $RealMakefile CHECKSOURCE\$(CFG)\n",
+				"\n"
+				);
+			&Output(
+				"ROMFILE$$Ref{Base} :\n",
+				    "\t\@$CallMake $RealMakefile ROMFILE >> $OutRomFile\n",
+				"\n",
+				"\n"
+			);
+		}
+
+#		calls to custom makefiles
+		else {
+			my $ChopRefPath=&Path_Chop($$Ref{Path});
+			my $ChopBldInfPath=&Path_Chop($BldInfPath);
+			my $MakefileCall;
+			if ($$Ref{Makefile}==2) {
+				$MakefileCall="cd $ChopRefPath;$CallNmake";
+			} else {
+				$MakefileCall="$CallGNUmake -C $ChopRefPath";
+			}
+			$MakefileCall.=" -f \"$$Ref{Base}$$Ref{Ext}\" TO_ROOT=";
+			$MakefileCall.=&Path_Chop(&Path_UpToRoot($$Ref{Path}));
+			$MakefileCall.=" EPOCBLD=";
+			$MakefileCall.=join('', &Path_Chop(&Path_UpToRoot($$Ref{Path})), &Path_Chop($E32MakePath), $BldInfPath, $$Ref{Base}, "\\", $RealPlat);
+			$MakefileCall.=" TO_BLDINF=";
+			$MakefileCall.=join('', &Path_Chop(&Path_UpToRoot($$Ref{Path})), $ChopBldInfPath);
+			if ($$Ref{ExtensionRoot}) {
+				$MakefileCall.=" EXTENSION_ROOT=".&Path_Chop($$Ref{ExtensionRoot});
+			}
+			if ($$Ref{BuildAsARM}) {
+			  $MakefileCall.=" BUILD_AS_ARM=1";
+			}			  
+			&Output(
+# should change to MAKEFILE
+				"MAKEFILE$$Ref{Base} :\n",
+				    "\t$MakefileCall PLATFORM=$Plat MAKMAKE\n",
+				"\n",
+# should call in custom makefiles maybe
+				"CLEANMAKEFILE$$Ref{Base} :\n",
+				"#	$MakefileCall PLATFORM=$Plat CLEANMAKEFILE\n",
+				"\n",
+				"WHATMAKEFILE$$Ref{Base} :\n",
+				"#	\@$MakefileCall -s PLATFORM=$Plat WHATMAKEFILE\n",
+				"\n",
+# should change to TARGET
+				"TARGET$$Ref{Base} :\n",
+				    "\t$MakefileCall PLATFORM=$RealPlat CFG=\$(CFG) BLD\n",
+				"\n",
+# should ignore this target and just call the TARGET target instead?
+				"SAVESPACE$$Ref{Base} :\n",
+				    "\t$MakefileCall PLATFORM=$RealPlat CFG=\$(CFG) SAVESPACE\n",
+				"\n",
+				"LISTING$$Ref{Base} :\n",
+				"\n",
+				"\n",
+# should change to LIBRARY
+				"LIBRARY$$Ref{Base} :\n",
+				    "\t$MakefileCall PLATFORM=$RealPlat LIB\n",
+				"\n",
+				"FREEZE$$Ref{Base} :\n",
+					"\t$MakefileCall PLATFORM=$RealPlat FREEZE \$(REMOVEMACRO)\n",
+				"\n",
+			);
+
+			foreach $Command (qw(CLEANALL)) {
+				&Output(
+					"$Command$$Ref{Base} :\n",
+					"\t$MakefileCall PLATFORM=$RealPlat CFG=\$(CFG) CLEAN\n",
+					"\n"
+				);
+			}
+
+			foreach $Command (qw(CLEAN RESOURCE FINAL)) {
+				&Output(
+					"$Command$$Ref{Base} :\n",
+					    "\t$MakefileCall PLATFORM=$RealPlat CFG=\$(CFG) $Command\n",
+					"\n"
+				);
+			}
+			unless ($$Ref{Tidy}) {
+# should change to WHAT
+				&Output(
+					"WHAT$$Ref{Base} :\n",
+					    "\t\@$MakefileCall -s PLATFORM=$RealPlat CFG=\$(CFG) RELEASABLES\n",
+					"\n"
+				);
+			}
+			else {
+				&Output(
+					"TIDY$$Ref{Base} :\n",
+					    "\t$MakefileCall PLATFORM=$RealPlat TIDY\n",
+# should change to CLEANLIBRARY
+					    "\t$MakefileCall CLEANLIB\n",
+					"\n"
+				);
+			}
+			&Output(
+				"ROMFILE$$Ref{Base} :\n",
+				    "\t\@$MakefileCall PLATFORM=$RealPlat ROMFILE >> $OutRomFile\n",
+				"\n",
+				"\n"
+			);
+		}
+
+	}
+	
+	&WriteOutFileL("$BatchPath$Plat$FeatureVariant$Test.MAKE");
+}
+
+sub CreatePlatBatches ($$$) {
+	my ($OutDir, $DataRef, $Plat)=@_;
+
+#	create the test batch files
+#	this function won't work properly if the target basename is different from the .MMP basename
+#	so perhaps it should call makmake on the .mmp file to check
+
+	my $AutoText;
+	my $ManualText;
+
+	my $Ref;
+	foreach $Ref (@$DataRef) {
+		if ($$Ref{Manual}) {
+			$ManualText.="$$Ref{Base}\n";
+			next;
+		}
+		if ($$Ref{Ext} eq ".MK") {
+			next;
+		}
+		if ($$Ref{Support}) {
+			next;
+		}
+		else {
+			$AutoText.="$$Ref{Base}\n";
+		}
+	}
+
+	if ($AutoText) {
+		&Output($AutoText);
+		&WriteOutFileL("$OutDir$Plat.AUTO.BAT");
+	}
+
+	if ($ManualText) {
+		&Output($ManualText);
+		&WriteOutFileL("$OutDir$Plat.MANUAL.BAT");
+	}
+}
+
+sub WriteOutFileL ($$) { # takes batch file and boolean read-only flag
+	my ($BATFILE, $ReadOnly)=@_;
+
+	$BATFILE=~ s/\//\\/g;  # convert unix slashes from wrappermakefile.pm
+
+	eval { &Path_MakePathL($BATFILE); };
+	&FatalError($@) if $@;
+
+	open BATFILE,">$BATFILE" or &FatalError("Can't open or create Batch File \"$BATFILE\"");
+	print BATFILE &OutText or &FatalError("Can't write output to Batch File \"$BATFILE\"");
+	close BATFILE or &FatalError("Can't close Batch File \"$BATFILE\"");
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/bldmake/egmak.fil	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,79 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+# 
+# Contributors:
+#
+# Description:
+# A template custom-build extension makefile - for carrying out build activities
+# not handled by MAKMAKE-generated makefiles.
+# List this file in the PRJ_MMPFILES or PRJ_TESTMMPFILES of your BLD.INF file with the
+# keyword MAKEFILE, e.g. MAKEFILE EGMAK.FIL.
+# All the targets below should be provided, even if they do nothing, or else errors may
+# be generated.
+# Extension makefiles and makefiles generated from .MMP files are called in the order
+# in which they are specified in the BLD.INF file.
+# You can use defines
+# !IF "$(PLATFORM)" == "[<platform>]"
+# !ENDIF
+# or
+# !IF "$(CFG)" == "[UDEB|UREL]"
+# !ENDIF
+# to carry out different activities for different platforms and build configurations.
+#
+
+
+# This target is called by ABLD CLEAN ...
+CLEAN :
+#	add commands here to clean your component.
+
+
+# This target is called by ABLD FINAL ...
+FINAL :
+#	add commands here to execute any required final activities to complete the building
+#	of your component.
+
+
+# This target is called by ABLD FREEZE ...
+FREEZE :
+#	add commands here to be carried out when exports are frozen.
+
+
+# This target is called by ABLD LIBRARY ...
+LIB :
+#	add commands here to be carried out when import libraries are created.
+
+
+# This target is called by ABLD MAKEFILE ...
+MAKMAKE :
+#	add commands here to be carried out when makefiles are created.
+
+
+# This target is called by ABLD RESOURCE ...
+RESOURCE :
+#	add commands here to be carried out when resources, bitmaps and aifs are created.
+
+
+# This target is called by ABLD TARGET ...
+BLD : 
+#	add commands here to be carried out when main executables are created.
+
+
+# This target is called by ABLD -savepace TARGET ...
+SAVESPACE :
+#	add commands here to be carried out when main executables are created and
+#	intermediate files are removed.
+
+
+# This target is called by ABLD -what TARGET ...  and ABLD -check TARGET ...
+RELEASABLES :
+#	add commands here to list the releasables this makefile will create.
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/bldmake/linkdeps.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,210 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Generate a link-dependency graph
+# Given a baseline list of components, look through the BLDMAKE
+# generated files to find the individual DLL and EXE makefiles.
+# Scan those makefile to find out which .LIB files are generated,
+# and which .LIB files are required, thereby deducing the 
+# component dependency graph.
+# 
+#
+
+my @components;
+my %component_releases;
+my %components_by_lib;
+my %libs_needed;
+my %component_deps;
+my $errors = 0;
+my @platforms = ("WINS", "ARMI", "MAWD");
+my $makefile_count=0;
+
+while (<>)
+	{
+	s/\s*#.*$//;
+	if ($_ =~ /^$/)
+		{
+		next;
+		}
+
+	if ($_ =~ /<option (\w+)(.*)>/)
+		{
+		# placeholder
+		next;	
+		}
+
+	push @components, lc $_;
+	}
+
+scan_bldmakes();
+
+if ($makefile_count==0)
+	{
+	error("No makefiles scanned!??");
+	}
+
+if (%libs_needed==0)
+	{
+	error("No libraries needed!??");
+	}
+
+foreach $lib (sort keys %libs_needed)
+	{
+	if ($components_by_lib{$lib} eq "")
+		{
+		error("library $lib is not produced by any component!");
+		$components_by_lib{$lib} = "($lib)";
+		}
+	}
+
+if ($errors > 0)
+	{
+	print "\n";
+	}
+
+foreach $component (sort keys %component_deps)
+	{
+	my %dependencies;
+
+	foreach $lib (split /\s+/, $component_deps{$component})
+		{
+		next if ($lib eq "");
+		my $dependent = $components_by_lib{$lib};
+		$dependencies{$dependent} = 1;
+		}
+
+	print "$component $component_releases{$component}:";
+	foreach $dependent (sort keys %dependencies)
+		{
+		next if ($dependent eq $component);
+		print " $dependent";
+		}
+	print "\n";
+	}
+
+sub scan_bldmakes
+	{
+	foreach $line (@components)
+		{
+		next if ($line =~ /<special (\w+)(.*)>/);
+		my ($name, $groupdir, $subdir, $release) = split /\s+/,$line;
+		$component_releases{$name} = $release;
+		my $bldmake = "\\epoc32\\build\\$groupdir";
+		if (! -d $bldmake)
+			{
+			error("bldmake failed for $name $release");
+			next;
+			}
+		foreach $platform (@platforms)
+			{
+			scan_bldmake_makefile($name,"$bldmake\\$platform.make");
+			}
+		}
+	}
+
+exit ($errors > 0);
+
+sub error
+	{
+	my ($text) = @_;
+	print "# ERROR: $text\n";
+	$errors+=1;
+	}
+
+# In \epoc32\build\<place>\wins.make
+#
+# SAVESPACEAPPARC :
+#	nmake -nologo $(VERBOSE) -f "\EPOC32\BUILD\APPARC\GROUP\WINS\APPARC.WINS" $(CFG) CLEANBUILD$(CFG)
+#
+# repeated N times
+
+sub scan_bldmake_makefile
+	{
+	my ($component, $makefile) = @_;
+	if (! -e $makefile) 
+		{
+		return;
+		}
+	open FILE, "<$makefile" or error("Can't open $makefile") and return;
+	while ($line = <FILE>)
+		{
+		if ($line =~ /^SAVESPACE/)
+			{
+			$line = <FILE>;
+			if ($line =~ /-f "(\S+)"\s/i)
+				{
+				scan_mmp_makefile($component,$1);
+				}
+			}
+		}
+	close FILE;
+	}
+
+# In \EPOC32\MAKE\LEXICON\WINS\INSO.WINS
+#
+# # MMPFile \LEXICON\GROUP\INSO.MMP
+# # Target INSO.LIB
+# # TargetType LIB
+# # GeneralTargetType LIB
+#
+
+# In \EPOC32\BUILD\APPARC\GROUP\WINS\APPARC.WINS
+#
+# LIBRARY : "$(EPOCLIB)UDEB\APPARC.LIB"
+#
+# LIBS= \
+#	"$(EPOCLINKDEB)\EUSER.LIB" \
+#	"$(EPOCLINKDEB)\EFSRV.LIB" \
+#	"$(EPOCLINKDEB)\GDI.LIB" \
+#	"$(EPOCLINKDEB)\ESTOR.LIB"
+#
+sub scan_mmp_makefile
+	{
+	my ($component, $makefile) = @_;
+	open SUBFILE, "<$makefile" or error("Can't open mmp $makefile for $component") and return;
+	$makefile_count++;
+	while ($line = <SUBFILE>)
+		{
+		if ($line =~ /^LIBRARY : .*\\(\S+)"/ || 
+			$line =~ /^# Target (\S+\.LIB)/)
+			{
+			my $built_lib = $1;
+			my $previous = $components_by_lib{$built_lib};
+			if ($previous && $previous ne $component)
+				{
+				error("$built_lib is generated by $component and $previous");
+				next;
+				}
+			$components_by_lib{$built_lib} = $component;
+			next
+			}
+		if ($line =~ /^LIBS= \\/)
+			{
+			while ($line = <SUBFILE>)
+				{
+				if ($line =~ /\\(\S+)"/)
+					{
+					$component_deps{$component} .= " $1";
+					$libs_needed{$1} = 1;
+					}
+				if ($line !~ /\\$/)
+					{
+					last;
+					}
+				}
+			}
+		}
+	close SUBFILE;
+	}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/bldmake/metabld.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,28 @@
+@REM Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+@REM This component and the accompanying materials are made available
+@REM under the terms of "Eclipse Public License v1.0"
+@REM which accompanies this distribution, and is available
+@REM at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@REM
+@REM Initial Contributors:
+@REM Nokia Corporation - initial contribution.
+@REM
+@REM Contributors:
+@REM
+@REM Description:
+@REM
+
+@echo off
+
+
+perl -S metabld.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
+if errorlevel==1 goto CheckPerl
+goto End
+
+:CheckPerl
+perl -v >NUL
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
+goto End
+
+:End
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/bldmake/metabld.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,367 @@
+# Copyright (c) 2000-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:
+# all variables called *Path* are set up to end with a backslash
+# all variables called *Path or *File are stored as absolute (file)paths within makmake
+# all variables called UpPath* are stored as relative paths within makmake
+# 
+#
+
+
+use FindBin;		# for FindBin::Bin
+use File::Find;
+use Cwd;
+
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+
+BEGIN {
+# check user has a version of perl that will cope
+	require 5.005_03;
+# establish the path to the Perl libraries: currently the same directory as this script
+	$PerlLibPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+	$PerlLibPath .= "\\";
+}
+
+use lib $PerlLibPath;
+use E32env;
+use Prepfile;
+use Pathutl;
+
+# autoflush prevents our ouptut from getting jumbled up
+use FileHandle;
+autoflush STDOUT 1;
+autoflush STDERR 1;
+
+my (@Commands, @BldInfDirs);
+# should end in .mbc where .mbc means for "MetaBld Configuration file"
+# must end in .mbc if passed on command-line
+my $ConfigFile;
+
+my $StartDir=&cwd();
+my $relative;
+	{
+	# Process command-line
+	
+  	unless (@ARGV)
+		{
+		&Usage();
+		}
+	else
+		{
+		# check to see if we are using a relative path 
+	  	if ($ARGV[0] eq "-r")
+			{
+			$relative = 1;
+			shift @ARGV;
+			}
+
+		# check for a root from a config file in EPOCROOT dir as first argument
+	  	if (-e "$ENV{EPOCROOT}$ARGV[0].mbc")
+			{
+		  	$ConfigFile="$ENV{EPOCROOT}$ARGV[0].mbc";
+		  	shift @ARGV;
+			}
+		# check for a config file as the first argument
+	  	elsif ($ARGV[0]=~/.mbc$/io)
+			{
+			$ConfigFile=shift @ARGV;
+			if ($ConfigFile=~/^.:/o)
+				{
+				&Error("Config file can't be specified with a drive letter, as \"$ConfigFile\" is");
+				}
+			unless (-e $ConfigFile)
+				{
+				&Error("Can't find file $ConfigFile");
+				}
+			}
+		if (@ARGV)
+			{
+			# pass any other arguments as commands
+			@Commands=("@ARGV");
+			}
+		}
+	}
+
+	{
+	# scan config file if necessary
+	
+	if ($ConfigFile)
+		{
+		# make config file path absolute
+		$ConfigFile=&Path_AbsToWork($ConfigFile);
+		
+		my @Config2D;
+		eval { &Prepfile_ProcessL(\@Config2D, $ConfigFile); };
+		&Error($@) if $@;
+		
+		my %CheckDir;
+		
+		my @ConfigCommands;
+		my $Section='';
+		my @Death;
+		my $Line;
+		my $CurFile=$ConfigFile;
+	  LINE: foreach $Line (@Config2D)
+			{
+			my $LineNum=shift @$Line;
+			$_=shift @$Line;
+			if ($LineNum eq '#')
+				{
+				$CurFile=$_;
+				next;
+				}
+			if (/^SECTION_(\w*)$/io)
+				{
+				$Section=uc $1;
+				if ($Section=~/^(COMMANDS|DIRS|OPTIONALDIRS)$/o)
+					{
+					if (@$Line)
+						{
+						push @Death, "$CurFile($LineNum) : Can't specify anything on the same line as a section header\n";
+						}
+					next LINE;
+					}
+				push @Death, "$CurFile($LineNum) : Unknown section header - $_\n";
+				$Section=0;
+				next LINE;
+				}
+			unshift @$Line, $_;
+			if ($Section eq 'COMMANDS')
+				{
+				if ($$Line[0]=~/^ONEOFF$/io)
+					{
+					# check syntax for oneoff commands
+					unless (@$Line>=3)
+						{
+						push @Death, "$CurFile($LineNum) : Too few arguments for oneoff command\n";
+						}
+					# resolve oneoff dir relative to .mb file location
+					$$Line[1]=~s-^.*[^\\]$-$&\\-o; # add trailing backslash if necessary
+					$$Line[1]=&Path_MakeAbs($CurFile, $$Line[1]);
+					unless (-d $$Line[1])
+						{
+						warn "$CurFile($LineNum) : Can't find dir $$Line[1]\n";
+						}
+					}
+				push @ConfigCommands, "@$Line";
+				next LINE;
+				}
+			if ($Section eq 'DIRS' || $Section eq 'OPTIONALDIRS')
+				{
+				my $Dir;
+				foreach $Dir (@$Line)
+					{
+					if ($Dir=~/^.:/o)
+						{
+						push @Death, "$CurFile($LineNum) : directory $Dir is specified with a drive letter\n";
+						next;
+						}
+					$Dir=~s-^.*[^\\]$-$&\\-o;
+					$Dir=&Path_MakeAbs($CurFile, $Dir); # dirs must be the same for check
+					if ($CheckDir{uc $Dir})
+						{
+						# Silently ignore duplicate directories - #including of several .mbc files
+						# will often cause directory duplication.
+						# We can't do the same for duplicate commands because the order in which
+						# the commands are executed might be significant.
+						# push @Death, "$CurFile($LineNum) : Directory $Dir already specified\n";
+						next;
+						}
+					print "$Dir\n";
+					
+					unless (-d $Dir)
+						{
+						if ($Section ne 'OPTIONALDIRS')
+							{
+							push @Death, "$CurFile($LineNum) : Can't find directory $Dir\n";
+							}
+						next;
+						}
+					push @BldInfDirs, $Dir;
+					$CheckDir{uc $Dir}=$LineNum;
+					}
+				next LINE;
+				}
+			else
+				{
+				push @Death, "$CurFile($LineNum) : No section specified\n";
+				}
+			}
+		
+		if (@Death)
+			{
+			chomp $Death[$#Death];
+			&Error(@Death);
+			}
+		
+		# apply the commands unless already collected
+		unless (@Commands)
+			{
+			&Error("$ConfigFile : No Commands specified") unless @ConfigCommands;
+			@Commands=@ConfigCommands;
+			}
+		}
+	
+	# Should have commands now
+	&Usage() unless @Commands;
+	}
+
+	{
+	# Search for the BLD.INF files if necessary
+
+	my $mystartdir;
+	if ($relative)
+	{
+		$mystartdir = substr($StartDir, 2);
+	}
+
+	$mystartdir=~s:\/:\\:g;
+
+	if ($mystartdir ne "\\")
+		{
+		$mystartdir=$mystartdir."\\";
+		}
+
+	unless (@BldInfDirs)
+		{
+		# find the files in the source directories - skip the EPOCROOT directory
+		
+		my $EPOCROOTDir=$E32env::Data{EPOCPath};
+		$EPOCROOTDir=~s/^\\([^\\]*).*$/$1/o;
+		
+		opendir DIR, $mystartdir or &Error("Can't open dir: $!");
+		# remove ., .. and EPOCROOT dir
+		my @SrcDirs=grep !/^(\.\.?|$EPOCROOTDir|RECYCLER|System Volume Information)$/i, readdir DIR; 
+		foreach (@SrcDirs)
+			{
+			# prepend with current path
+			$_=$mystartdir.$_;
+			}
+		@SrcDirs=grep -d, @SrcDirs;
+		find(\&BldInfDirs, @SrcDirs);
+		@BldInfDirs=sort @BldInfDirs;
+
+		# if we are doing it relative to current location, need to include current dir
+		# if it contains a bld.inf
+		if (-f "BLD.INF" && $relative)
+			{
+			push @BldInfDirs, $mystartdir;
+			}
+
+		}
+	}
+
+	{
+	# Execute the commands
+	
+	my $Time=localtime;
+	print "=== metabld started $Time.\n";
+	my $Command;
+	foreach $Command (@Commands)
+		{
+		
+		$Time=localtime;
+		# Check if we should execute this command just the once
+		if ($Command=~s/^\s*ONEOFF\s+(\S+)\s+(.*)$/$2/io)
+			{
+			my $OneOffDir=$1;
+			# execute the command once rather than for each BLD.INF directory
+			chdir $OneOffDir or &Error("Can't change dir to $OneOffDir: $!");
+			print
+			(
+			 "===-------------------------------------------------\n",
+			 "=== $Command\n",
+			 "===-------------------------------------------------\n",
+			 "=== $Command started $Time.\n",
+			 "=== $Command == $OneOffDir\n"
+			);
+			system( "$Command");
+			}
+		else
+			{
+			# execute the command for each BLD.INF directory
+			print
+			(
+			 "===-------------------------------------------------\n",
+			 "=== $Command\n",
+			 "===-------------------------------------------------\n",
+			 "=== $Command started $Time.\n",
+			);
+			my $Dir;
+			foreach $Dir (@BldInfDirs)
+				{
+				chdir $Dir or &Error("Can't change dir to $Dir: $!");
+				print "=== $Command == $Dir\n";
+				system( "$Command");
+				}
+			}
+		chdir $StartDir or &Error("Can't change dir to $StartDir: $!");
+		$Time=localtime;
+		print "=== $Command finished $Time.\n";
+		}
+	}
+
+
+#################################################
+#	SUBROUTINES
+#################################################
+
+sub Usage
+	{
+	print <<ENDHERESTRING;
+usage: metabld [EPOCROOT .mbc file basename|.mbc config file] [command]
+MetaBld is a tool for carrying out build commands across several components.
+A .mbc config file contains directories and commands, eg:
+
+SECTION_COMMANDS
+bldmake bldfiles
+abld target wins udeb
+// "oneoff" means carry out command just once, not for each directory.
+// First arg after "oneoff" must be a start dir, and can be "."
+oneoff \\e32\\rombuild rom xxx
+oneoff . \\e32test\\group\\abld test build wins urel
+SECTION_DIRS
+\\e32
+\\f32\\group
+
+It's possible to #include lists of dirs from other files if necessary,
+and may be useful for carrying out different sets of commands on the same set
+of directories via different .mbc files.
+If a command is specified on the command-line, it will be executed instead
+of any commands specified in a .mbc file.
+If no directories are specified in a .mbc file, then all the directories
+containing a bld.inf file on the current drive will be searched for instead.
+ENDHERESTRING
+exit 1;
+}
+
+sub Error (@)
+	{
+	
+	die
+	@_, "\n",
+	"Error executing metabld.bat\n"
+	;
+	}
+
+sub BldInfDirs
+	{
+	s-\/-\\-go;
+	if (/^BLD.INF$/io)
+		{
+		$File::Find::dir=~s-\/-\\-go;
+		push @BldInfDirs, $File::Find::dir;
+		}
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/bldmake/wrappermakefile.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,158 @@
+# Copyright (c) 2007-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:
+#
+
+
+package		wrappermakefile;
+require Exporter;
+@wrappermakefile::ISA=qw(Exporter);
+@wrappermakefile::EXPORT=qw(
+	GenerateWrapper
+);
+
+use Output;
+
+my (@ExtensionUsedBefore);
+my $ExtTemplatesPath="$ENV{EPOCROOT}epoc32/tools/makefile_templates/";
+$ExtTemplatesPath=~ s/\\/\//g;  # convert win32 slashes to unix slashes
+my $DieRef;
+our $ExtMakefileMissing = 0;
+
+# Add prototyes to avoid -w warnings
+sub GenerateWrapper($$$$@);  
+sub ReadMetaFile($$$$);
+
+
+sub GenerateWrapper($$$$@) {	
+	my ($Plat,$OutDir, $ErrorString, $dieRef, @ExtensionBlockData) = @_;
+	$DieRef = $dieRef;
+	
+#	Generates a makefile which contains the settings for each invocation of an extension and calls
+#	through to the extension template makefile in /epoc32/tools/makefile_templates.
+#	@ExtensionBlockData holds the settings (makefile MACROs) defined within the start..end block in the bld.inf.
+
+	my $ExtHeader = shift(@ExtensionBlockData);
+
+	if (uc $ExtHeader->[0] ne "EXTENSION") {
+		&main::FatalError("$ErrorString : Extension Template blocks must contain the 'extension' keyword.\n");
+	}
+	if ($ExtHeader->[1] eq "") {
+		&main::FatalError("$ErrorString : The 'extension' does not have a name, the correct format is: 'start extension <name>'.\n");
+	}
+	my $ExtName = $ExtHeader->[1];
+
+#	Ensure that each extension invocation is uniquely identified by means of the global array 
+#	ExtensionUsedBefore.
+	my $Count=0;
+	push @ExtensionUsedBefore, $ExtName.$Plat;
+	foreach my $item(@ExtensionUsedBefore) {
+		if ($item eq $ExtName.$Plat) {
+			$Count = $Count + 1;
+		}
+	}
+
+#	Process the meta information for this extension template.
+	my %Data;
+	my %WrapperMakefileData = ReadMetaFile($ExtName, $ErrorString, \$Data{Makefile},$dieRef);
+	if ($ExtMakefileMissing)
+	{
+		main::ExtensionMakefileMissing($ExtMakefileMissing);
+		return;
+	}
+	$Data{Ext}='.MK';
+	$Data{Base}=$ExtName."_".$Plat."_".$Count;
+	$Data{Path}=$OutDir."wrappermakefiles/";
+
+#	Process ExtensionBlockData
+	foreach my $ExtBlockStatement (@ExtensionBlockData) {
+		my $Key = shift(@$ExtBlockStatement);
+		$WrapperMakefileData{$Key}=$ExtBlockStatement;
+	}
+
+#	CreateWrapperMakefile
+	&Output("# Bldmake generated wrapper makefile\n\n");
+	foreach my $Key (keys (%WrapperMakefileData))
+	{
+			&Output("$Key = "); 
+			foreach my $item(@{$WrapperMakefileData{$Key}}) {
+				&Output(" $item");
+			}
+			&Output("\n");
+	}
+	my $Filename = lc("$ExtName$Data{Ext}");
+	&Output("\ninclude $ExtTemplatesPath$Filename"); 
+	my $Path = lc("$Data{Path}");
+	&main::WriteOutFileL(lc ($Path.$ExtName."_".$Plat."_".$Count.$Data{Ext}));
+	%WrapperMakefileData = ();
+	return %Data;  
+}
+
+#  Read extension meta file data
+sub ReadMetaFile($$$$) {
+	my ($ExtName, $ErrorString, $Makefile,$dieRef) = @_;
+
+#	Parse the .meta file (found via $ExtName) for this extension template and return a hash 
+#	containing the default values (makefile MACROs) for this template.
+#	$Makefile is updated to indicate whether this a gnumake or nmake makefile.
+
+	my %MetaData;
+	my $Filename = lc("$ExtName");
+	$ExtMakefileMissing=0;
+	if (!open(METAFILE,"$ExtTemplatesPath$Filename.meta"))
+	{
+		&main::WarnOrDie($dieRef, "$ErrorString : Extension: $ExtName - cannot open META file: $ExtTemplatesPath$Filename.meta\n");
+		$ExtMakefileMissing = 1;
+		return;
+	}
+	LINE: while (<METAFILE>) {
+		chomp;		
+		my @Elements = split(/\s*\s\s*/);		
+		my $Keyword = uc shift(@Elements);
+
+		if ((! $Keyword) or ($Keyword =~ m/^#/)) {
+			next LINE;
+		}
+
+		if ($Keyword eq "MAKEFILE") {	
+			my $Makefiletype = uc shift(@Elements);		
+			if ($Makefiletype eq "GNUMAKE") {
+				$$Makefile=1;
+			}
+			if ($Makefiletype eq "NMAKE") {
+				$$Makefile=2;
+			}
+		}
+		elsif ($Keyword eq "OPTION") {
+			my $Key = shift(@Elements);
+			if ((! $Key) or (! $Elements[0])) {
+					&main::FatalError("$ErrorString : There is a syntax error in the META file ($ExtTemplatesPath$Filename.meta) for this extension ($ExtName) - the correct format for default options is: 'option <key> <value>'");
+				}
+			my @Values = @Elements;
+			$MetaData{$Key}=\@Values;
+		} 
+		elsif (($Keyword eq "TECHSTREAM") or ($Keyword eq "PLATFORM")) {
+			# not used
+		}
+		else {
+			&main::FatalError("$ErrorString : There is a syntax error in the META file ($ExtTemplatesPath$Filename.meta) for this extension ($ExtName) - unrecognised keyword:$Keyword");	
+		}
+	}
+	if (! $$Makefile) {
+		&main::FatalError("$ErrorString : There is a syntax error in the META file ($ExtTemplatesPath$Filename.meta) for this extension ($ExtName) - makefile type not specified [gnumake|nmake]");
+	}
+	close(METAFILE) or &main::FatalError("$ErrorString : Extension: $ExtName - cannot close Meta File:$ExtTemplatesPath$ExtName.meta\n");
+	return %MetaData;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/abld.rtf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,520 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc2\adeff0\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang2057\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt  arial};}
+{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};}{\f36\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}
+{\f37\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@\'cb\'ce\'cc\'e5;}{\f38\froman\fcharset238\fprq2 Times New Roman CE;}{\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}
+{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}{\f43\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f44\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f48\fswiss\fcharset238\fprq2 Arial CE{\*\falt  arial};}{\f49\fswiss\fcharset204\fprq2 Arial Cyr{\*\falt  arial};}{\f51\fswiss\fcharset161\fprq2 Arial Greek{\*\falt  arial};}
+{\f52\fswiss\fcharset162\fprq2 Arial Tur{\*\falt  arial};}{\f53\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew){\*\falt  arial};}{\f54\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic){\*\falt  arial};}
+{\f55\fswiss\fcharset186\fprq2 Arial Baltic{\*\falt  arial};}{\f56\fswiss\fcharset163\fprq2 Arial (Vietnamese){\*\falt  arial};}{\f170\fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\f398\fmodern\fcharset238\fprq1 Lucida Console CE;}
+{\f399\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f401\fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f402\fmodern\fcharset162\fprq1 Lucida Console Tur;}{\f410\fnil\fcharset0\fprq2 @\'cb\'ce\'cc\'e5 Western;}}{\colortbl;\red0\green0\blue0;
+\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;
+\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\upr{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \snext0 \styrsid2102810 Normal;}{\s1\ql \li0\ri0\sb360\sa240\keepn\pagebb\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 \b\fs40\lang2057\langfe2052\kerning28\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 1;}{\s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 \b\fs34\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 
+heading 2;}{\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 3;}{\s4\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 
+heading 4;}{\s5\ql \li0\ri0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 heading 5;}{\s6\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs24\alang1025 \ltrch\fcs0 
+\i\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 6;}{\s7\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 7;}{
+\s8\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs24\alang1025 \ltrch\fcs0 \i\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 heading 8;}{\s9\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs18\alang1025 \ltrch\fcs0 
+\i\fs18\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive \ssemihidden \styrsid2102810 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{
+\s15\ql \li0\ri0\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 
+\fs16\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext15 Code Paragraph;}{\*\cs16 \additive \rtlch\fcs1 \af36 \ltrch\fcs0 \f36\lang2057\langfe0\langnp2057 \sbasedon10 Code;}{\*\cs17 \additive \rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i \sbasedon10 Emphasis;}{\*\cs18 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Warning;}{\s19\ql \li567\ri0\keep\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin567\itap0 \rtlch\fcs1 \af36\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang1024\langfe1024\loch\f36\hich\af36\dbch\af13\cgrid\noproof\langnp1033\langfenp2052 \sbasedon0 \snext19 Indented Code;}{\s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang 
+{\pntxtb \hich \'b7}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin567\lin568\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon21 \snext20 List Bullet;}{
+\s21\ql \fi-284\li851\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin851\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext21 
+List;}{\s22\ql \li567\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext22 
+List Continue;}{\s23\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec\pnstart1\pnindent283\pnhang {\pntxta \hich .}}\aspalpha\aspnum\faauto\ls2047\ilvl11\adjustright\rin567\lin568\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon21 \snext23 List Number;}{\s24\qc \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext24 Picture;}{\s25\qc \li0\ri0\sb240\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \ab\af1\afs72\alang1025 \ltrch\fcs0 \b\fs72\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext25 Title;}{
+\s26\ql \li0\ri0\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext26 Logo;}{\s27\ql \li0\ri0\sb1440\sa1200\sl-460\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af1\afs40\alang1025 \ltrch\fcs0 \b\scaps\fs40\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext27 Subtitle;}{\s28\ql \li0\ri0\sl-200\slmult0
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext28 Version;}{
+\s29\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext29 Date Published;}{
+\s30\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext30 
+Copyright Header;}{\s31\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext31 Copyright Notice;}{\s32\ql \li0\ri0\sa1440\sl-960\slmult0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\scaps\fs40\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext32 TOC Header;}{\s33\ql \li0\ri0\sb480\sa160\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 1;}{
+\s34\ql \li221\ri0\sb120\keepn\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin221\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 toc 2;}{\s35\ql \li442\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin442\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 3;}{\s36\ql \li658\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin658\itap0 \rtlch\fcs1 \af0\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 4;}{\*\cs37 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\ql \li0\ri0\widctlpar\brdrr
+\brdrdb\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext38 
+Constant Definition;}{\s39\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext39 header;}{\s40\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext40 
+Even Footer Paragraph;}{\s41\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\caps\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext41 Even Header Paragraph;}{\s42\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon39 \snext42 footer;}
+{\*\cs43 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 page number;}{\s44\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext44 Odd Footer Paragraph;}{\s45\ql \li0\ri0\widctlpar
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \caps\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext45 
+Odd Header Paragraph;}{\s46\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext46 Status;}{\*\cs47 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 Glossary Reference;}{
+\s48\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext48 Compact;}{\*
+\cs49 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1 \sbasedon10 App Text;}{\s50\ql \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\fs40\lang2057\langfe2052\kerning28\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon1 \snext50 Heading 1 NoSection;}{\*\cs51 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1 \sbasedon10 Filename;}{
+\s52\ql \fi-284\li1135\ri1134\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \hich \'b7}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin1134\lin1135\itap0 \rtlch\fcs1 \af0\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext52 List Bullet 2;}{\*\cs53 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Glossary Definition;}{\*\cs54 \additive \rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i \sbasedon10 Document Name;}{\s55\ql \li0\ri0\keep\keepn\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Prototype;}{\*\cs56 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \scaps \sbasedon10 Key Name;}{\s57\ql \li0\ri0\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 
+\fs16\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext57 Reduced Code;}{\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Syntax;}{
+\s59\qc \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext59 Picture Title;}{\s60\ql \fi-3119\li3119\ri0\widctlpar\tx3119\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3119\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext60 Member List;}{\*\cs61 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 Syntax Element;}{\*\cs62 \additive \rtlch\fcs1 \ab\af36 \ltrch\fcs0 
+\b\f36 \sbasedon10 Syntax Literal;}{\s63\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext63 annotation text;}{\*\cs64 \additive \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1\uld\cf11 \sbasedon10 Example Link;}{\s65\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af1\afs36\alang1025 \ltrch\fcs0 \b\fs36\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext65 TOC 0;}{\*\cs66 \additive \rtlch\fcs1 \af36 \ltrch\fcs0 \f36\cf2\lang2057\langfe0\langnp2057 \sbasedon16 
+Resource Code;}{\s67\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\cf6\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext67 Converter Directive;}{\s68\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af36\afs24\alang1025 \ltrch\fcs0 
+\b\fs24\uldb\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Platform Dependency;}{\*\cs69 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\cf10 \sbasedon10 Raw HTML;}{\*\cs70 \additive \rtlch\fcs1 \ai\af0 
+\ltrch\fcs0 \i\cf14 \sbasedon10 URL Reference;}{\s71\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\fs24\ul\cf13\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Hypertext Anchor;}{\s72\ql \li0\ri0\widctlpar\brdrr\brdrs\brdrw45\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext72 Member Definition;}{\s73\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext73 Figure Picture;}{
+\s74\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\cf5\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon46 \snext74 Comment;}{\s75\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 
+\b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext75 Figure Caption;}{\s76\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext76 Figure Description;}{
+\s77\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\cf6\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon73 \snext77 Figure Status;}{\s78\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\ul\cf13\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext78 Figure Anchor;}{\*
+\cs79 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\uld\cf12 \sbasedon37 Figure Link;}{\s80\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 
+\rtlch\fcs1 \ai\af0\afs24\alang1025 \ltrch\fcs0 \i\fs24\cf10\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon73 \snext80 Figure Directive;}{
+\s81\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext81 Body Text;}{
+\s82\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \cbpat9 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\f13\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext82 \ssemihidden \styrsid2102810 Document Map;}}{\*\ud\uc0{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \snext0 \styrsid2102810 Normal;}{\s1\ql \li0\ri0\sb360\sa240\keepn\pagebb\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 \b\fs40\lang2057\langfe2052\kerning28\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 1;}{\s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 \b\fs34\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 
+heading 2;}{\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 3;}{\s4\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 
+heading 4;}{\s5\ql \li0\ri0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 heading 5;}{\s6\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs24\alang1025 \ltrch\fcs0 
+\i\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 6;}{\s7\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 7;}{
+\s8\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs24\alang1025 \ltrch\fcs0 \i\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 heading 8;}{\s9\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs18\alang1025 \ltrch\fcs0 
+\i\fs18\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive \ssemihidden \styrsid2102810 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{
+\s15\ql \li0\ri0\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 
+\fs16\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext15 Code Paragraph;}{\*\cs16 \additive \rtlch\fcs1 \af36 \ltrch\fcs0 \f36\lang2057\langfe0\langnp2057 \sbasedon10 Code;}{\*\cs17 \additive \rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i \sbasedon10 Emphasis;}{\*\cs18 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Warning;}{\s19\ql \li567\ri0\keep\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin567\itap0 \rtlch\fcs1 \af36\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang1024\langfe1024\loch\f36\hich\af36\dbch\af13\cgrid\noproof\langnp1033\langfenp2052 \sbasedon0 \snext19 Indented Code;}{\s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang 
+{\pntxtb \hich \'b7}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin567\lin568\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon21 \snext20 List Bullet;}{
+\s21\ql \fi-284\li851\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin851\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext21 
+List;}{\s22\ql \li567\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext22 
+List Continue;}{\s23\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec\pnstart1\pnindent283\pnhang {\pntxta \hich .}}\aspalpha\aspnum\faauto\ls2047\ilvl11\adjustright\rin567\lin568\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon21 \snext23 List Number;}{\s24\qc \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext24 Picture;}{\s25\qc \li0\ri0\sb240\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \ab\af1\afs72\alang1025 \ltrch\fcs0 \b\fs72\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext25 Title;}{
+\s26\ql \li0\ri0\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext26 Logo;}{\s27\ql \li0\ri0\sb1440\sa1200\sl-460\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af1\afs40\alang1025 \ltrch\fcs0 \b\scaps\fs40\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext27 Subtitle;}{\s28\ql \li0\ri0\sl-200\slmult0
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext28 Version;}{
+\s29\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext29 Date Published;}{
+\s30\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext30 
+Copyright Header;}{\s31\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext31 Copyright Notice;}{\s32\ql \li0\ri0\sa1440\sl-960\slmult0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\scaps\fs40\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext32 TOC Header;}{\s33\ql \li0\ri0\sb480\sa160\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 1;}{
+\s34\ql \li221\ri0\sb120\keepn\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin221\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 toc 2;}{\s35\ql \li442\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin442\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 3;}{\s36\ql \li658\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin658\itap0 \rtlch\fcs1 \af0\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 4;}{\*\cs37 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\ql \li0\ri0\widctlpar\brdrr
+\brdrdb\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext38 
+Constant Definition;}{\s39\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext39 header;}{\s40\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext40 
+Even Footer Paragraph;}{\s41\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\caps\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext41 Even Header Paragraph;}{\s42\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon39 \snext42 footer;}
+{\*\cs43 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 page number;}{\s44\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext44 Odd Footer Paragraph;}{\s45\ql \li0\ri0\widctlpar
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \caps\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext45 
+Odd Header Paragraph;}{\s46\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext46 Status;}{\*\cs47 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 Glossary Reference;}{
+\s48\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext48 Compact;}{\*
+\cs49 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1 \sbasedon10 App Text;}{\s50\ql \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\fs40\lang2057\langfe2052\kerning28\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon1 \snext50 Heading 1 NoSection;}{\*\cs51 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1 \sbasedon10 Filename;}{
+\s52\ql \fi-284\li1135\ri1134\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \hich \'b7}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin1134\lin1135\itap0 \rtlch\fcs1 \af0\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext52 List Bullet 2;}{\*\cs53 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Glossary Definition;}{\*\cs54 \additive \rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i \sbasedon10 Document Name;}{\s55\ql \li0\ri0\keep\keepn\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Prototype;}{\*\cs56 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \scaps \sbasedon10 Key Name;}{\s57\ql \li0\ri0\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 
+\fs16\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext57 Reduced Code;}{\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Syntax;}{
+\s59\qc \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext59 Picture Title;}{\s60\ql \fi-3119\li3119\ri0\widctlpar\tx3119\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3119\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext60 Member List;}{\*\cs61 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 Syntax Element;}{\*\cs62 \additive \rtlch\fcs1 \ab\af36 \ltrch\fcs0 
+\b\f36 \sbasedon10 Syntax Literal;}{\s63\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext63 annotation text;}{\*\cs64 \additive \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1\uld\cf11 \sbasedon10 Example Link;}{\s65\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af1\afs36\alang1025 \ltrch\fcs0 \b\fs36\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext65 TOC 0;}{\*\cs66 \additive \rtlch\fcs1 \af36 \ltrch\fcs0 \f36\cf2\lang2057\langfe0\langnp2057 \sbasedon16 
+Resource Code;}{\s67\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\cf6\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext67 Converter Directive;}{\s68\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af36\afs24\alang1025 \ltrch\fcs0 
+\b\fs24\uldb\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Platform Dependency;}{\*\cs69 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\cf10 \sbasedon10 Raw HTML;}{\*\cs70 \additive \rtlch\fcs1 \ai\af0 
+\ltrch\fcs0 \i\cf14 \sbasedon10 URL Reference;}{\s71\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\fs24\ul\cf13\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Hypertext Anchor;}{\s72\ql \li0\ri0\widctlpar\brdrr\brdrs\brdrw45\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext72 Member Definition;}{\s73\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext73 Figure Picture;}{
+\s74\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\cf5\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon46 \snext74 Comment;}{\s75\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 
+\b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext75 Figure Caption;}{\s76\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext76 Figure Description;}{
+\s77\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\cf6\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon73 \snext77 Figure Status;}{\s78\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\ul\cf13\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext78 Figure Anchor;}{\*
+\cs79 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\uld\cf12 \sbasedon37 Figure Link;}{\s80\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 
+\rtlch\fcs1 \ai\af0\afs24\alang1025 \ltrch\fcs0 \i\fs24\cf10\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon73 \snext80 Figure Directive;}{
+\s81\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext81 Body Text;}{
+\s82\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \cbpat9 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\f13\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext82 \ssemihidden \styrsid2102810 Document Map;}}}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid-1961856626\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'01{\uc1\u-3913 ?};}{\levelnumbers;}\f3\fbias0 \s52\fi-360\li643\jclisttab\tx643\lin643 }{\listname ;}\listid-125}{\list\listtemplateid1666757442\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \s23\fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-120}{\list\listtemplateid650118748\listsimple{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01{\uc1\u-3913 ?};}{\levelnumbers;}\f3\fbias0 \s20\fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-119}}{\*\listoverridetable
+{\listoverride\listid-119\listoverridecount0\ls1}{\listoverride\listid-120\listoverridecount0\ls2}{\listoverride\listid-125\listoverridecount0\ls3}}{\*\rsidtbl \rsid2102810}{\*\generator Microsoft Word 11.0.0000;}{\info{\title Tools}
+{\subject Specifying projects with makmake}{\author Preferred Customer}{\doccomm The model chapter document.\'0d\'0dHeaders & footers are different for even and odd pages.}{\operator rossqin}{\creatim\yr1996\mo3\dy6\hr13\min48}
+{\revtim\yr2009\mo4\dy27\hr13\min54}{\printim\yr1997\mo4\dy18\hr15\min6}{\version3}{\edmins1}{\nofpages4}{\nofwords1532}{\nofchars8738}{\*\company Dell Computer Corporation}{\nofcharsws10250}{\vern24613}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://
+schemas.microsoft.com/office/word/2003/wordml}}\paperw11907\paperh16840\margl851\margr851\margt1134\margb1134\gutter1134\ltrsect 
+\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\linkstyles\hyphcaps0\formshade\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984
+\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot2102810 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \chftnsep 
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \chftnsepc 
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \chftnsep 
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \chftnsepc 
+\par }}\ltrpar \sectd \ltrsect\binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere\sectdefaultcl\sftnbj {\headerr \ltrpar \pard\plain \ltrpar\s39\ql \li0\ri0\widctlpar
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\field{\*\fldinst {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  TITLE  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 Tools}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid2102810 \hich\af0\dbch\af13\loch\f0             }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 Company Confidential\tab \hich\f0 EON SDK, Copyright \'a9\loch\f0  1999}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 -}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810\charrsid2102810 \hich\af0\dbch\af13\loch\f0 2009 Nokia Corporation and/or its subsidiary(-ies).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810\charrsid2102810 
+\par }}{\footerr \ltrpar \pard\plain \ltrpar\s42\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\fs18\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  SUBJECT  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid2102810 \hich\af0\dbch\af13\loch\f0 Specifying projects with makmake}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \tab \hich\af0\dbch\af13\loch\f0 Page }{\field{\*\fldinst {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  PAGE  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid2102810 \hich\af0\dbch\af13\loch\f0 1}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 
+\af0 \ltrch\fcs0 \insrsid2102810 \tab \hich\af0\dbch\af13\loch\f0 Last saved }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  SAVEDATE  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 
+\lang1024\langfe1024\noproof\insrsid2102810 \hich\af0\dbch\af13\loch\f0 15/03/2000\hich\af0\dbch\af13\loch\f0  \hich\af0\dbch\af13\loch\f0 11:47:00}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang 
+{\pntxta \hich )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}
+{\pntxta \hich )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}\pard\plain \ltrpar
+\s1\ql \li0\ri0\sb360\sa240\keepn\pagebb\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\fs40\lang2057\langfe2052\kerning28\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1  SUBJECT  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af1 
+\ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Building components with abld}}}\sectd \binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\s71\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\ul\cf13\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {
+\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 tools.abld
+\par }\pard\plain \ltrpar\s46\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 this chapter documents }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 
+\hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  to e32toolp release 210 level.
+\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 
+\b\fs34\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Overview
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 The }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ tool can be used to control the building of components which have been defined\hich\af0\dbch\af13\loch\f0  by a }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0  component description file.  Once the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 bldmake bldfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ command has been executed for your component, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ can be used to carry out the various stages involved in building the component. 
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld Invocation syntax
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ]  }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 command  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 [ option\hich\af0\dbch\af13\loch\f0 s ]  [ }{\rtlch\fcs1 \ai\af0 
+\ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0   [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build  }{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+] ] ]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 command}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  :\line \tab }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid2102810 
+\hich\af36\dbch\af13\loch\f36 build
+\par }\pard \ltrpar\s58\ql \fi589\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 {\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid2102810 
+\hich\af36\dbch\af13\loch\f36 clean
+\par \hich\af36\dbch\af13\loch\f36 export
+\par \hich\af36\dbch\af13\loch\f36 final
+\par \hich\af36\dbch\af13\loch\f36 freeze
+\par \hich\af36\dbch\af13\loch\f36 help
+\par \hich\af36\dbch\af13\loch\f36 library
+\par \hich\af36\dbch\af13\loch\f36 listing
+\par \hich\af36\dbch\af13\loch\f36 makefile
+\par \hich\af36\dbch\af13\loch\f36 reallyclean
+\par \hich\af36\dbch\af13\loch\f36 resource
+\par \hich\af36\dbch\af13\loch\f36 target
+\par \hich\af36\dbch\af13\loch\f36 tidy}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\par }\pard \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 options}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  :\line \tab }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 -check}{\rtlch\fcs1 \af36 \ltrch\fcs0 
+\cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 |}{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 -c\line \tab -keepgoing}{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 
+\hich\af36\dbch\af13\loch\f36 |}{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 -k\line \tab -savespace}{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 |}{\rtlch\fcs1 
+\ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 -s\line \tab -verbose}{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 |}{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid2102810 
+\hich\af36\dbch\af13\loch\f36 -v\line \tab -what}{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 |}{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 -w
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 
+\ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 bldmake bldfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  creates a file called }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 
+\loch\af1\dbch\af13\hich\f1 \'94\loch\f1 \hich\f1 Abld.bat\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  in the current directory.  When invoked, this file runs }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 
+\hich\af1\dbch\af13\loch\f1 Perl}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  on the script }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \\\hich\af1\dbch\af13\loch\f1 EPOC32\\Tools\\Abld.pl}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 , passing the location of the files that }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 bldmake bldfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0  has generated for use with }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 . }{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  processes it\hich\f0 \rquote \loch\f0 s command line an\hich\af0\dbch\af13\loch\f0 
+d constructs a corresponding list of NMAKE.EXE calls to be made to the makefiles which }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ has generated for the component. }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ then makes each of the NMAKE.EXE calls in turn, having changed directory to that containing the relevant bld.inf file.
+\par \hich\af0\dbch\af13\loch\f0 Where }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \loch\af1\dbch\af13\hich\f1 \'93\loch\f1 \hich\f1 test\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  is specified before }{\rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 command}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 , the command will operate on all the projects defined by }{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  files listed in the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 prj_testmmpfiles}{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  section of the component description file, rather than those projects defined by }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 
+\af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  files listed in the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 prj_mmpfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ section.  Note that the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \loch\af1\dbch\af13\hich\f1 \'93\loch\f1 \hich\f1 test\'94}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ parameter is irrelevant for some commands and, in those cases, cannot be specified.
+\par \hich\af0\dbch\af13\loch\f0 If }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 \hich\f0  is not specified, or is specified as \'93\loch\f0 
+\hich\f0 ALL\'94\loch\f0 , then }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ will carry out the specified command for all the platforms specified in th\hich\af0\dbch\af13\loch\f0 e component description file.  Where }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 \hich\f0  can be specified as a parameter to a particular command, if it is unspecified or specified as \'93\loch\f0 \hich\f0 ALL\'94\loch\f0 , }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 
+\hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 \hich\f0  will carry out the specified command for builds \'93\loch\f0 \hich\f0 UDEB\'94\loch\f0 \hich\f0  then \'93\loch\f0 \hich\f0 UREL\'94
+\loch\f0 .  Specify the basename of the relevant }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 m\hich\af1\dbch\af13\loch\f1 mp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ file or extension makefile for the }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ parameter to limit the command to a single project within a component.  Where }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+is unspecified, the specified command will be carried out for all projects within the component.
+\par \hich\af0\dbch\af13\loch\f0 Note that, for certain }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  commands, not all the parameters - }{
+\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 , }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  and }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  - apply.
+
+\par \hich\af0\dbch\af13\loch\f0 Note also that not all the options apply for all the commands, and that, where they do apply, they can be specified in either their long or abbreviated forms.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld build
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command \hich\af0\dbch\af13\loch\f0 combines the effects of several }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid2102810 \hich\af0\dbch\af13\loch\f0  commands in one, and will probably be all you\hich\f0 \rquote \loch\f0 ll need to invoke to build your component.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 build}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 ( ( [-c] | [-w] ) | ( [-s] [-k] [-v] ) )  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{
+\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] ]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 The }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  commands that this comma
+\hich\af0\dbch\af13\loch\f0 nd combines are EXPORT, MAKEFILE, LIBRARY, RESOURCE, TARGET and FINAL, which are carried out in turn.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld clean
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command will erase all the files created by the corresponding }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld target}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid2102810 \hich\af0\dbch\af13\loch\f0  command.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 Abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 clean}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 ( ( [-c] | [-w] ) | ( [-k] [-v] ) )\hich\af0\dbch\af13\loch\f0  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 ] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] ]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 
+\ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld clean}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  makes use of the CLEAN targets provided in makefiles generated by }{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 makmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+.  The files that are removed by this command include all the intermediate files created during compilation and all the executables and \hich\af0\dbch\af13\loch\f0 import libraries created by the linker.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld export
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command copies all the files to be exported from source to their destinations, as defined in the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 prj_exports}{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  or }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 prj_testexports}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ section of the component description file depending upon whether the }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 te\hich\af0\dbch\af13\loch\f0 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 t parameter is specified or not.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 Abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 export}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 ( ( [-c] | [-w] ) | ( [-k] [-v] ) ) }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 Each destination file is only created if it does not exist or has an earlier datestamp than the corresponding source file.  The directories which will contain the d\hich\af0\dbch\af13\loch\f0 
+estination files will be created automatically if they do not exist.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld final
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command allows extension makefiles to be used to carry out any commands required to complete the build.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 Abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 final}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 [-k] [-v] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] ]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 The command has no effect for makefiles generated by }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 makmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 , only for extension makefiles.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld freeze
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command freezes new DLL exports in frozen }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 .def}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0  files using the FREEZE target provided in makefiles generated by }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 makmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 .
+
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 Abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 freeze}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 [-k] \hich\af0\dbch\af13\loch\f0 [-v] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{
+\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 The frozen }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 def}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ files should be considered part of source for your component.
+\par \hich\af0\dbch\af13\loch\f0 To freeze your component for the first time, having built the component, call this command.  Next, regenerate the makefiles so that import libraries\hich\af0\dbch\af13\loch\f0  can be created from the frozen }{\rtlch\fcs1 \af1 
+\ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 def}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  files.  The import libraries can be created explicitly using the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 
+\hich\af1\dbch\af13\loch\f1 abld library}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  command, or they can be built implicitly via }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld build}{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  or }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld target}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 .
+\par \hich\af0\dbch\af13\loch\f0 To add new exports to a project within your component, having built th\hich\af0\dbch\af13\loch\f0 e component, call this command.  Next, rebuild the import libraries so that they incorporate the new exports.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld help
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command provides a brief guide to }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ command-line syntax.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 Abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{
+\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 help}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ( ( [ options ] | [ commands ] ) | ( }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 command}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ) )}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 
+\ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld help options}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  lists the options available with }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 
+\hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 , while }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld help commands}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid2102810 \hich\af0\dbch\af13\loch\f0  lists the available commands.
+\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld help }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 command}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ displays the syntax for a particular command and also a brief description of what the command is for.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld library
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This comman\hich\af0\dbch\af13\loch\f0 d creates the import libraries for the DLLs in your component by calling the LIBRARY target provided in makefiles generated by }{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 makmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 .
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 Abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 library}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 [-k] [-v] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 Import libraries are generated directly from frozen }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 def}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0  files,\hich\af0\dbch\af13\loch\f0  so exported functions will not be incorporated into import libraries until these functions are frozen with }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 
+abld freeze.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par \hich\af0\dbch\af13\loch\f0 The import libraries are created implicitly as part of the build activity carried out by }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld target}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0  (and thus }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 ), so it isn\hich\f0 \rquote \loch\f0 t
+\hich\af0\dbch\af13\loch\f0 
+ generally necessary to call this command separately if projects are listed in the component description file in order of dependency - dependent projects appearing after those projects they depend upon.  If ther are mutual imports between projects within 
+\hich\af0\dbch\af13\loch\f0 y\hich\af0\dbch\af13\loch\f0 our component then }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld library}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ can be called explicitly, though mutual imports are often a sign of poor software design.
+\par \hich\af0\dbch\af13\loch\f0 An import library will not be regenerated if it has a later datestamp than the corresponding frozen }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 def}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid2102810 \hich\af0\dbch\af13\loch\f0  file.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld listing
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This comman\hich\af0\dbch\af13\loch\f0 d creates an assembler listing file for a particular source file.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 Abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 library}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 [-k] [-v] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 source_basename}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ]}{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 The listing file has same basename as the source code file with the extension }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 .lis}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid2102810 \hich\af0\dbch\af13\loch\f0 .  The listing file i\hich\af0\dbch\af13\loch\f0 s created in the build directory and then copied to the directory containing the source file.  This command is only currently supported for ARM platforms}{
+\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 .}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld makefile
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command creates the makefiles for each project within your component, via }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 makmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid2102810 \hich\af0\dbch\af13\loch\f0 .
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 Abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 makefile}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 ( ( [-c] | [-w] ) | ( [-k] [-v] ) ) [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{
+\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 To generate the makefiles, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 makmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ is invoked with the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 -d}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ switch, which causes the makefiles to be created in a subdirectory of directory}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1  \\EPOC32\\Make}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \\\hich\af0\dbch\af13\loch\f0 
+.  The makefiles ar\hich\af0\dbch\af13\loch\f0 e always created with this command, regardless of whether the corresponding }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0  files have been changed or not.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld reallyclean
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command does what }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld clean}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ does, and also removes files exported by }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld export}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  and the makefiles generated by }{\rtlch\fcs1 
+\af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld make\hich\af1\dbch\af13\loch\f1 file}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 .
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 reallyclean}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 ( ( [-c] | [-w] ) | ( [-k] [-v] ) ) [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{
+\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ]] }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld resource
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command builds the resource files, bitmaps and application information files for a component by calling the RESOURCE targets in makefi\hich\af0\dbch\af13\loch\f0 les generated by }{\rtlch\fcs1 
+\af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 makmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 .
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 resource}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 [-k] [-v]  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] ]
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 \hich\f0 These \'93\loch\f0 \hich\f0 resources\'94\loch\f0  are created implicitly when }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld target}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0  (and thus, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+) is called.  The resources will not be regenerated if they have later datestamps \hich\af0\dbch\af13\loch\f0 than their source dependencies.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld target
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command builds the executables for your component.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 target}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 ( ( [-c] | [-w] ) | ( [-s] [-k] [-v] ) )  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{
+\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 program}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] ]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+Since, in the makefiles generated by makmake, the main target is dependent upon the RESOURCE and LIBRARY targets, resources and import libraries will also be created when the main target is built. .  Executables will not be regenerated where they have lat
+\hich\af0\dbch\af13\loch\f0 e\hich\af0\dbch\af13\loch\f0 r datestamps than the source files they depend upon.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Abld tidy
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This command removes releasables defined by }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 .mmp files}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 \hich\f0  which are listed with the \'93\loch\f0 \hich\f0 tidy\'94\loch\f0  attribute in your component\hich\f0 \rquote \loch\f0 s description file.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 Abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+ [ test ] }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs62\f36\insrsid2102810 \hich\af36\dbch\af13\loch\f36 final}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 [-k] [-v] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 platform }{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0 ] [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid2102810 \hich\af0\dbch\af13\loch\f0 prog
+\hich\af0\dbch\af13\loch\f0 ram}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid2102810 \hich\af0\dbch\af13\loch\f0  ] ]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 The command can be run following a build to remove any releasables which are no longer required now that the build has completed.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Option: abld -check
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This option is for checking that the required files have been created during a particular build st\hich\af0\dbch\af13\loch\f0 
+ep.  The option creates a list of files that should have been created and then checks that each one exists in turn.  If a file is missing the full name of the file is piped to STDERR.
+\par \hich\af0\dbch\af13\loch\f0 Note that if this option is specified with }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld build}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 , makefiles will no
+\hich\af0\dbch\af13\loch\f0 t be included in the list of files to be checked.  If the option is specified with }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 abld reallyclean}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2102810 
+\hich\af0\dbch\af13\loch\f0 , however, the makefiles will be included in the list.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Option: abld -keepgoing
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 \hich\f0 This option tells a particular abld command to \'93\loch\f0 \hich\f0 keep going\'94\loch\f0  even if unrelated \hich\af0\dbch\af13\loch\f0 build steps report errors.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Option: abld -savespace
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 
+This option removes intermediate files created during the building of a project if the build is eventually successful.  If the build fails, the intermediate files remain so that errors can be corrected and\hich\af0\dbch\af13\loch\f0 
+ an incremental rebuild of the project version that failed to build can take place.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Option: abld -verbose
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This option pipes to STDOUT the calls to tools that a particular build step is making, and can be useful in determining exactly where an error occurs \hich\af0\dbch\af13\loch\f0 
+during the build process.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2102810 \hich\af1\dbch\af13\loch\f1 Option: abld -what
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid2102810 \hich\af0\dbch\af13\loch\f0 This option creates a list of files in exactly the same way as option }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid2102810 \hich\af1\dbch\af13\loch\f1 -check}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid2102810 \hich\af0\dbch\af13\loch\f0 .  The list of files is then piped to STDOUT.
+\par \hich\af0\dbch\af13\loch\f0 The option could be useful to find out where a particular build step is creating files, o\hich\af0\dbch\af13\loch\f0 
+r for creating a zip file containing the releasables for a component by piping the list of files to a file and then having a zip utility process this file.
+\par }}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/armv5_cpu_spec_example.bsf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,46 @@
+#<bsf>#
+
+# Copyright (c) 2007-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:
+# Example build specialization file 
+# 
+# NB currently specialization only applies to ARMV5 build using RVCT.
+
+# This file customizes the default ARMV5. It specifies a build that
+# always uses optimization level O1 rather than the default O2.
+customizes ARMV5
+
+# The following options that can be overridden by MMP files
+
+# Use these options when compiling user-side THUMB code
+thumb_options	-thumb -O1 
+
+# Use these options when compiling user-side ARM code
+arm_options	-arm -O1 
+
+# Use these options when compiling Kernel code
+kernel_options	-arm -O1 
+
+# This just factors out common (contingent) options from the above.
+# These options can also be overridden by MMP files.
+common_options	--diag_suppress 1,161,654,1135,1152,1300 --diag_error 1267
+
+# Fixed options for this build. These options should only be changed with great care since
+# they have the potential to introduce incompatible ABI (or machine) level effects.
+# -cpu 5T - this build just targets a generic 5T
+# -Ono_known_library - we use our own library so tell the compiler not to make assumptions about its implementation
+# -fpu softvfp - some system code explicitly assumes this variant of the EABI (softvfp+vfp could be used on say XScale)
+# --dll_vtbl - this switches on class exporting and is needed to support Symbian OS DLL model
+# -apcs /inter - redundant on 5T, but worth saying anyway
+invariant_options	-cpu 5T -fy -Ono_known_library -fpu softvfp --dll_vtbl -apcs /inter
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/bld_changes_er5toer5u.rtf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,83 @@
+{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f5\fswiss\fcharset0\fprq2 Arial{\*\falt  arial};}{\f37\fmodern\fcharset0\fprq1 Lucida Console;}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20\lang2057 \snext0 Normal;}{\s1\sb360\sa240\keepn\pagebb\widctlpar \b\f5\fs40\lang2057\kerning28 
+\sbasedon0\snext0 heading 1;}{\s2\sb120\keepn\widctlpar\brdrt\brdrth\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs34\lang2057 \sbasedon0\snext0 heading 2;}{\s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 \sbasedon0\snext0 
+heading 3;}{\s4\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5\lang2057 \sbasedon0\snext0 heading 4;}{\s5\keepn\widctlpar \b\f5\fs20\lang2057 \sbasedon0\snext0 heading 5;}{\s6\sb240\sa60\widctlpar \i\f5\fs20\lang2057 \sbasedon0\snext0 
+heading 6;}{\s7\sb240\sa60\widctlpar \f5\fs20\lang2057 \sbasedon0\snext0 heading 7;}{\s8\sb240\sa60\widctlpar \i\f5\fs20\lang2057 \sbasedon0\snext0 heading 8;}{\s9\sb240\sa60\widctlpar \i\f5\fs18\lang2057 \sbasedon0\snext0 heading 9;}{\*\cs10 \additive 
+Default Paragraph Font;}{\s15\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f37\fs16\lang2057 \sbasedon0\snext15 Code Paragraph;}{\*\cs16 \additive\f37\lang2057 \sbasedon10 Code;}{\*\cs17 \additive\i \sbasedon10 
+Emphasis;}{\*\cs18 \additive\b \sbasedon10 Warning;}{\s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 \sbasedon0\snext19 Indented Code;}{\s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvl11
+\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 \sbasedon21\snext20 List Bullet;}{\s21\fi-284\li851\ri567\widctlpar \f4\fs20\lang2057 \sbasedon0\snext21 List;}{\s22\li567\ri567\widctlpar \f4\fs20\lang2057 \sbasedon0\snext22 
+List Continue;}{\s23\fi-284\li568\ri567\widctlpar{\*\pn \pnlvl10\pndec\ulth\pnstart1\pnindent283\pnhang{\pntxta .}}\f4\fs20\lang2057 \sbasedon21\snext23 List Number;}{\s24\qc\widctlpar \f4\fs20\lang2057 \sbasedon0\snext24 Picture;}{
+\s25\qc\sb240\sa240\widctlpar \b\f5\fs72\lang2057 \sbasedon0\snext25 Title;}{\s26\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0 \f4\fs20\lang2057 \sbasedon0\snext26 Logo;}{\s27\sb1440\sa1200\sl-460\slmult0\widctlpar 
+\b\scaps\f5\fs40\lang2057 \sbasedon0\snext27 Subtitle;}{\s28\sl-200\slmult0\widctlpar \b\f5\fs20\lang2057 \sbasedon0\snext28 Version;}{\s29\widctlpar \f4\fs20\lang2057 \sbasedon0\snext29 Date Published;}{\s30\widctlpar \b\f4\fs20\lang2057 
+\sbasedon0\snext30 Copyright Header;}{\s31\widctlpar \f4\fs20\lang2057 \sbasedon0\snext31 Copyright Notice;}{\s32\sa1440\sl-960\slmult0\keepn\widctlpar \b\scaps\f5\fs40\lang2057 \sbasedon0\snext32 TOC Header;}{\s33\sb480\sa160\keepn\widctlpar\brdrt
+\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f4\fs20\lang2057 \sbasedon0\snext0 toc 1;}{\s34\li221\sb120\keepn\widctlpar\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext0 toc 2;}{\s35\li442\widctlpar\tqr\tx9072 \f5\fs20\lang2057 \sbasedon0\snext0 toc 3;}{
+\s36\li658\widctlpar\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext0 toc 4;}{\*\cs37 \additive\f5\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\widctlpar\brdrr\brdrdb\brdrw15\brsp20 \f37\fs20\lang2057 \sbasedon0\snext38 Constant Definition;}{
+\s39\widctlpar\tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 \sbasedon0\snext39 header;}{\s40\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext40 Even Footer Paragraph;}{\s41\widctlpar\tqc\tx4536\tqr\tx9072 
+\caps\f4\fs18\lang2057 \sbasedon0\snext41 Even Header Paragraph;}{\s42\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 \sbasedon39\snext42 footer;}{\*\cs43 \additive\b \sbasedon10 page number;}{\s44\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext44 Odd Footer Paragraph;}{\s45\widctlpar\tqc\tx4536\tqr\tx9072 \caps\f4\fs18\lang2057 \sbasedon0\snext45 Odd Header Paragraph;}{\s46\widctlpar\brdrl\brdrth\brdrw30\brsp80 
+\f4\fs20\lang2057 \sbasedon0\snext46 Status;}{\*\cs47 \additive\i \sbasedon10 Glossary Reference;}{\s48\widctlpar \f4\fs20\lang2057 \sbasedon0\snext48 Compact;}{\*\cs49 \additive\f5 \sbasedon10 App Text;}{\s50\sb240\sa240\keepn\widctlpar 
+\b\f5\fs40\lang2057\kerning28 \sbasedon1\snext50 Heading 1 NoSection;}{\*\cs51 \additive\f5 \sbasedon10 Filename;}{\s52\fi-284\li1135\ri1134\widctlpar{\*\pn \pnlvl11\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 \sbasedon0\snext52 
+List Bullet 2;}{\*\cs53 \additive\b \sbasedon10 Glossary Definition;}{\*\cs54 \additive\i \sbasedon10 Document Name;}{\s55\keep\keepn\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f37\fs20\lang2057 \sbasedon0\snext0 
+Prototype;}{\*\cs56 \additive\scaps \sbasedon10 Key Name;}{\s57\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f37\fs16\lang2057 \sbasedon0\snext57 Reduced Code;}{\s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 \sbasedon0\snext0 Syntax;}{\s59\qc\sb240\sa240\keepn\widctlpar \b\f5\fs20\lang2057 \sbasedon0\snext59 Picture Title;}{\s60\fi-3119\li3119\widctlpar\tx3119 \f4\fs20\lang2057 \sbasedon0\snext60 Member List;}{\*
+\cs61 \additive\i \sbasedon10 Syntax Element;}{\*\cs62 \additive\b\f37 \sbasedon10 Syntax Literal;}{\s63\widctlpar \f4\fs20\lang2057 \sbasedon0\snext63 annotation text;}{\*\cs64 \additive\b\f5\uld\cf11 \sbasedon10 Example Link;}{\s65\widctlpar 
+\b\f5\fs36\lang2057 \sbasedon0\snext65 TOC 0;}{\*\cs66 \additive\f37\cf2\lang2057 \sbasedon16 Resource Code;}{\s67\widctlpar \f5\fs20\cf6\lang2057 \sbasedon0\snext67 Converter Directive;}{\s68\widctlpar \b\f37\fs20\uldb\lang2057 \sbasedon0\snext0 
+Platform Dependency;}{\*\cs69 \additive\b\cf10 \sbasedon10 Raw HTML;}{\*\cs70 \additive\i\cf14 \sbasedon10 URL Reference;}{\s71\widctlpar \f5\fs20\ul\cf13\lang2057 \sbasedon0\snext0 Hypertext Anchor;}{\s72\widctlpar\brdrr\brdrs\brdrw45\brsp20 
+\f4\fs20\lang2057 \sbasedon0\snext72 Member Definition;}{\s73\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 \sbasedon0\snext73 Figure Picture;}{\s74\widctlpar\brdrl\brdrth\brdrw30\brsp80 
+\f4\fs20\cf5\lang2057 \sbasedon46\snext74 Comment;}{\s75\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \b\f4\fs20\lang2057 \sbasedon0\snext75 Figure Caption;}{\s76\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb
+\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 \sbasedon0\snext76 Figure Description;}{\s77\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\cf6\lang2057 \sbasedon73\snext77 Figure Status;}{\s78\li567\ri567\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f5\fs20\ul\cf13\lang2057 \sbasedon0\snext78 Figure Anchor;}{\*\cs79 \additive\f5\uld\cf12 \sbasedon37 Figure Link;}{\s80\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\i\f4\fs20\cf10\lang2057 \sbasedon73\snext80 Figure Directive;}{\s81\widctlpar \f4\fs20\lang2057 \sbasedon0\snext81 Body Text;}}{\info{\title Tools}{\subject Specifying projects with makmake}{\author Preferred Customer}
+{\doccomm The model chapter document.\'0d\'0dHeaders & footers are different for even and odd pages.}{\operator Preferred Customer}{\creatim\yr1996\mo3\dy6\hr13\min48}{\revtim\yr1999\mo9\dy6\hr16\min27}{\printim\yr1997\mo4\dy18\hr15\min6}{\version2}
+{\edmins1}{\nofpages2}{\nofwords529}{\nofchars3018}{\*\company Dell Computer Corporation}{\vern57443}}\paperw11907\paperh16840\margl851\margr851\margt1134\margb1134\gutter1134 \widowctrl\ftnbj\aenddoc\linkstyles\hyphcaps0\formshade \fet0\sectd 
+\binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere {\header \pard\plain \s39\widctlpar\tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 {\field{\*\fldinst  TITLE  \\* MERGEFORMAT }{\fldrslt Tools}}\tab Company Confidential\tab 
+EON SDK, Copyright \'a9 1999, Symbian Ltd
+\par }{\footer \pard\plain \s42\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 {\field{\*\fldinst  SUBJECT  \\* MERGEFORMAT }{\fldrslt Specifying projects with makmake}}\tab Page {\field{\*\fldinst  PAGE  \\* MERGEFORMAT 
+}{\fldrslt {\lang1024 1}}}\tab Last saved {\field{\*\fldinst  SAVEDATE  \\* MERGEFORMAT }{\fldrslt {\lang1024 06/09/99 12:42}}}
+\par }{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
+\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
+{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s1\sb360\sa240\keepn\pagebb\widctlpar \b\f5\fs40\lang2057\kerning28 {\field\fldedit{\*\fldinst  SUBJECT  \\* MERGEFORMAT }{\fldrslt 
+Makmake changes between ER5 and ER5u}}
+\par \pard\plain \s74\widctlpar\brdrl\brdrth\brdrw30\brsp80 \f4\fs20\cf5\lang2057 this chapter summarizes changes to {\cs51\f5 makmake} between e32toolp release 100 and e32toolp release 127.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 -clean and -makework options
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Support for these command-line options has been removed.  Targets are provided instead in the makefiles that {\cs51\f5 makmake}
+ generates for erasing files created during a build, and all the necessary work directories are created automatically.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 -d option
+\par \pard\plain \widctlpar \f4\fs20\lang2057 This option now causes makefiles to be generated into {\cs51\f5 \\EPOC32\\Make\\}{\cs51\i\f5 project}{\cs51\f5 \\}{\cs61\i platform} rather than {\cs51\f5 \\EPOC32\\Make\\}{\cs61\i platform}.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 VC4 and VC5 IDE workspaces
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Support for creating workspaces for these IDEs is no longer provided.  Only workspaces for VC6 can be created.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Bitmaps and Application Information files
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Support for building bitmaps and application information files is now supported in command-line makefiles.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Static Libraries
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Support for building and linking to static libraries has been added, via the new {\f5 .mmp} target type {\f5 \ldblquote lib\rdblquote } and the new .mmp keyword {\f5 \ldblquote staticlibrary\rdblquote }.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 #Defines
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Support for specifying #defines for preprocessing source files can now be done via the new {\f5 .mmp} keyword {\f5 \ldblquote macro\rdblquote }.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 LongBldPath and NoBrowseInfo mmp keywords
+\par \pard\plain \widctlpar \f4\fs20\lang2057 These keywords have now been removed - they are no longer necessary since the path to the directory for containing intermediate files now incorporates an extra directory level.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Object mmp keyword
+\par \pard\plain \widctlpar \f4\fs20\lang2057 This keyword has been removed.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 VC4 and VC5 IDE workspaces
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Support for creating workspaces for these IDEs is no longer provided.  Only workspaces for VC6 can be created.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 New Target types for polymorphic DLLs
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Several new target types have been added so that certain polymorphic DLLs commonly used within EPOC needn\rquote t specify a {\f5 def} file.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Narrow Builds are no longer supported
+\par \pard\plain \widctlpar \f4\fs20\lang2057 All EPOC builds are now wide (UNICODE) builds, debug (UDEB) or release (UREL).  The {\f5 mmp} keyword UID is therefore no longer supported, there is just the UNICODEUID keyword for specifying UIDs for a project.
+
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 New ARM platform targets
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Makefiles can now be built for ARMI, ARM4 and THUMB rather than MARM.  When a project is built for any of these three platforms, import libraries for compatible platforms are also created.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 def files and import libraries
+\par \pard\plain \widctlpar \f4\fs20\lang2057 
+Import libraries are now created directly from frozen export definition files rather than as a side-effect of linking.  This change means that until an export is frozen, it does not appear in the import library and cannot be referenced by another project,
+ unless the new {\f5 mmp} keyword, {\f5 \rdblquote exportunfrozen\rdblquote }, is specified, in which case the import library is created as a side-effect of linking.  The {\f5 \rdblquote deffile\rdblquote } statement now has a reduced rol
+e - that of overriding the default {\f37 def} filename, rather than also dictating whether or not the project\rquote s exports are frozen.
+\par By default, WINC {\f5 def} files are now frozen in {\f5 \\<project>\\bwins} rather than {\f5 \\<project>\\bwinc} since there is no need for a separate directory.
+\par The two-stage link applied by command-line makefiles is now also applied within the MSVC IDE.
+\par Comments are now listed in frozen {\f5 def }files, alongside the mangled function names, containing the un-mangled C++ name of the function.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Device Drivers
+\par \pard\plain \widctlpar \f4\fs20\lang2057 EPOC projects that link to the EPOC kernel now need to list {\f5 ekern.lib} with the keyword {\f5 \ldblquote assplibrary\rdblquote } rather than {\f5 \ldblquote library\rdblquote }
+ because kernel-side import libraries are now created in a different directory according to which hardware platform a particular version of the kernel has been built for.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 __PSISOFT__ #define
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The __PSISOFT__ #define is no longer defined for the preprocessing of source files.  __SYMBIAN32__ alone is defined for use in distinguishing code to be run on EPOC from code to be run on other operating systems.
+
+\par }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/bld_changes_er5utov6.rtf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,84 @@
+{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f5\fswiss\fcharset0\fprq2 Arial{\*\falt  arial};}{\f37\fmodern\fcharset0\fprq1 Lucida Console;}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20\lang2057 \snext0 Normal;}{\s1\sb360\sa240\keepn\pagebb\widctlpar \b\f5\fs40\lang2057\kerning28 
+\sbasedon0\snext0 heading 1;}{\s2\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs34\lang2057 \sbasedon0\snext0 heading 2;}{\s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 \sbasedon0\snext0 
+heading 3;}{\s4\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5\lang2057 \sbasedon0\snext0 heading 4;}{\s5\keepn\widctlpar \b\f5\fs20\lang2057 \sbasedon0\snext0 heading 5;}{\s6\sb240\sa60\widctlpar \i\f5\fs20\lang2057 \sbasedon0\snext0 
+heading 6;}{\s7\sb240\sa60\widctlpar \f5\fs20\lang2057 \sbasedon0\snext0 heading 7;}{\s8\sb240\sa60\widctlpar \i\f5\fs20\lang2057 \sbasedon0\snext0 heading 8;}{\s9\sb240\sa60\widctlpar \i\f5\fs18\lang2057 \sbasedon0\snext0 heading 9;}{\*\cs10 \additive 
+Default Paragraph Font;}{\s15\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f37\fs16\lang2057 \sbasedon0\snext15 Code Paragraph;}{\*\cs16 \additive\f37\lang2057 \sbasedon10 Code;}{\*\cs17 \additive\i \sbasedon10 
+Emphasis;}{\*\cs18 \additive\b \sbasedon10 Warning;}{\s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 \sbasedon0\snext19 Indented Code;}{\s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvl11
+\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 \sbasedon21\snext20 List Bullet;}{\s21\fi-284\li851\ri567\widctlpar \f4\fs20\lang2057 \sbasedon0\snext21 List;}{\s22\li567\ri567\widctlpar \f4\fs20\lang2057 \sbasedon0\snext22 
+List Continue;}{\s23\fi-284\li568\ri567\widctlpar{\*\pn \pnlvl10\pndec\ulth\pnstart1\pnindent283\pnhang{\pntxta ?}}\f4\fs20\lang2057 \sbasedon21\snext23 List Number;}{\s24\qc\widctlpar \f4\fs20\lang2057 \sbasedon0\snext24 Picture;}{
+\s25\qc\sb240\sa240\widctlpar \b\f5\fs72\lang2057 \sbasedon0\snext25 Title;}{\s26\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0 \f4\fs20\lang2057 \sbasedon0\snext26 Logo;}{\s27\sb1440\sa1200\sl-460\slmult0\widctlpar 
+\b\scaps\f5\fs40\lang2057 \sbasedon0\snext27 Subtitle;}{\s28\sl-200\slmult0\widctlpar \b\f5\fs20\lang2057 \sbasedon0\snext28 Version;}{\s29\widctlpar \f4\fs20\lang2057 \sbasedon0\snext29 Date Published;}{\s30\widctlpar \b\f4\fs20\lang2057 
+\sbasedon0\snext30 Copyright Header;}{\s31\widctlpar \f4\fs20\lang2057 \sbasedon0\snext31 Copyright Notice;}{\s32\sa1440\sl-960\slmult0\keepn\widctlpar \b\scaps\f5\fs40\lang2057 \sbasedon0\snext32 TOC Header;}{\s33\sb480\sa160\keepn\widctlpar\brdrt
+\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f4\fs20\lang2057 \sbasedon0\snext0 toc 1;}{\s34\li221\sb120\keepn\widctlpar\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext0 toc 2;}{\s35\li442\widctlpar\tqr\tx9072 \f5\fs20\lang2057 \sbasedon0\snext0 toc 3;}{
+\s36\li658\widctlpar\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext0 toc 4;}{\*\cs37 \additive\f5\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\widctlpar\brdrr\brdrdb\brdrw15\brsp20 \f37\fs20\lang2057 \sbasedon0\snext38 Constant Definition;}{
+\s39\widctlpar\tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 \sbasedon0\snext39 header;}{\s40\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext40 Even Footer Paragraph;}{\s41\widctlpar\tqc\tx4536\tqr\tx9072 
+\caps\f4\fs18\lang2057 \sbasedon0\snext41 Even Header Paragraph;}{\s42\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 \sbasedon39\snext42 footer;}{\*\cs43 \additive\b \sbasedon10 page number;}{\s44\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext44 Odd Footer Paragraph;}{\s45\widctlpar\tqc\tx4536\tqr\tx9072 \caps\f4\fs18\lang2057 \sbasedon0\snext45 Odd Header Paragraph;}{\s46\widctlpar\brdrl\brdrs\brdrw30\brsp80 
+\f4\fs20\lang2057 \sbasedon0\snext46 Status;}{\*\cs47 \additive\i \sbasedon10 Glossary Reference;}{\s48\widctlpar \f4\fs20\lang2057 \sbasedon0\snext48 Compact;}{\*\cs49 \additive\f5 \sbasedon10 App Text;}{\s50\sb240\sa240\keepn\widctlpar 
+\b\f5\fs40\lang2057\kerning28 \sbasedon1\snext50 Heading 1 NoSection;}{\*\cs51 \additive\f5 \sbasedon10 Filename;}{\s52\fi-284\li1135\ri1134\widctlpar{\*\pn \pnlvl11\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 \sbasedon0\snext52 
+List Bullet 2;}{\*\cs53 \additive\b \sbasedon10 Glossary Definition;}{\*\cs54 \additive\i \sbasedon10 Document Name;}{\s55\keep\keepn\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f37\fs20\lang2057 \sbasedon0\snext0 
+Prototype;}{\*\cs56 \additive\scaps \sbasedon10 Key Name;}{\s57\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f37\fs16\lang2057 \sbasedon0\snext57 Reduced Code;}{\s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 \sbasedon0\snext0 Syntax;}{\s59\qc\sb240\sa240\keepn\widctlpar \b\f5\fs20\lang2057 \sbasedon0\snext59 Picture Title;}{\s60\fi-3119\li3119\widctlpar\tx3119 \f4\fs20\lang2057 \sbasedon0\snext60 Member List;}{\*
+\cs61 \additive\i \sbasedon10 Syntax Element;}{\*\cs62 \additive\b\f37 \sbasedon10 Syntax Literal;}{\s63\widctlpar \f4\fs20\lang2057 \sbasedon0\snext63 annotation text;}{\*\cs64 \additive\b\f5\uld\cf11 \sbasedon10 Example Link;}{\s65\widctlpar 
+\b\f5\fs36\lang2057 \sbasedon0\snext65 TOC 0;}{\*\cs66 \additive\f37\cf2\lang2057 \sbasedon16 Resource Code;}{\s67\widctlpar \f5\fs20\cf6\lang2057 \sbasedon0\snext67 Converter Directive;}{\s68\widctlpar \b\f37\fs20\uldb\lang2057 \sbasedon0\snext0 
+Platform Dependency;}{\*\cs69 \additive\b\cf10 \sbasedon10 Raw HTML;}{\*\cs70 \additive\i\cf14 \sbasedon10 URL Reference;}{\s71\widctlpar \f5\fs20\ul\cf13\lang2057 \sbasedon0\snext0 Hypertext Anchor;}{\s72\widctlpar\brdrr\brdrs\brdrw45\brsp20 
+\f4\fs20\lang2057 \sbasedon0\snext72 Member Definition;}{\s73\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 \sbasedon0\snext73 Figure Picture;}{\s74\widctlpar\brdrl\brdrs\brdrw30\brsp80 
+\f4\fs20\cf5\lang2057 \sbasedon46\snext74 Comment;}{\s75\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \b\f4\fs20\lang2057 \sbasedon0\snext75 Figure Caption;}{\s76\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb
+\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 \sbasedon0\snext76 Figure Description;}{\s77\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\cf6\lang2057 \sbasedon73\snext77 Figure Status;}{\s78\li567\ri567\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f5\fs20\ul\cf13\lang2057 \sbasedon0\snext78 Figure Anchor;}{\*\cs79 \additive\f5\uld\cf12 \sbasedon37 Figure Link;}{\s80\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\i\f4\fs20\cf10\lang2057 \sbasedon73\snext80 Figure Directive;}{\s81\widctlpar \f4\fs20\lang2057 \sbasedon0\snext81 Body Text;}}{\info{\title Tools}{\subject Specifying projects with makmake}{\author Preferred Customer}
+{\doccomm The model chapter document.\'0d\'0dHeaders & footers are different for even and odd pages.}{\operator Preferred Customer}{\creatim\yr1996\mo3\dy6\hr13\min48}{\revtim\yr2000\mo3\dy15\hr11\min47}{\printim\yr2000\mo2\dy23\hr18\min39}{\version2}
+{\edmins10}{\nofpages2}{\nofwords436}{\nofchars2487}{\*\company Dell Computer Corporation}{\vern57395}}\paperw11907\paperh16840\margl851\margr851\margt1134\margb1134\gutter1134 \widowctrl\ftnbj\aenddoc\linkstyles\hyphcaps0\formshade \fet0\sectd 
+\binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere {\header \pard\plain \s39\widctlpar\tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 {\field{\*\fldinst  TITLE  \\* MERGEFORMAT }{\fldrslt Tools}}\tab Company Confidential\tab 
+EON SDK, Copyright \'a9 2000, Symbian Ltd
+\par }{\footer \pard\plain \s42\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 {\field{\*\fldinst  SUBJECT  \\* MERGEFORMAT }{\fldrslt Specifying projects with makmake}}\tab Page {\field{\*\fldinst  PAGE  \\* MERGEFORMAT 
+}{\fldrslt {\lang1024 1}}}\tab Last saved {\field{\*\fldinst  SAVEDATE  \\* MERGEFORMAT }{\fldrslt {\lang1024 10/03/00 13:37}}}
+\par }{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl5
+\pndec\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
+{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}\pard\plain \s1\sb360\sa240\keepn\pagebb\widctlpar \b\f5\fs40\lang2057\kerning28 {\field\fldedit{\*\fldinst  SUBJECT  \\* MERGEFORMAT }{\fldrslt Build Tools
+ changes between ER5u and V6}}
+\par \pard\plain \s74\widctlpar\brdrl\brdrs\brdrw30\brsp80 \f4\fs20\cf5\lang2057 this chapter summarizes major changes to the build system between e32toolp release 127 and e32toolp release 210.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 UNICODEUID .mmp keyword no longer supported - use the UID keyword instead.
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The UNICODEUID keyword is no longer supported by Makmake.  UIDs specified with the UID keyword now apply to UNICODE builds of the source rather than NARROW builds.  This is possible because NARROW 
+builds are no longer supported.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 PROJECT and SUBPROJECT keywords no longer supported - use New SOURCEPATH .mmp keyword instead.
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The SOURCEPATH keyword is intended to replace the PROJECT and SUBPROJECT keywords in {\f5 .mmp} files and thus remove the build tools\rquote 
+ affiliation with a two-level source code tree.  Either relative or absolute paths can be specified with the new keyword - relative paths will be considered relative to the directory containing the {\f5 .mmp} file, rather than the project\rquote 
+s top-level directory as paths specified with the SUBPROJECT keyword were.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Default .def file location
+\par \pard\plain \widctlpar \f4\fs20\lang2057 If the location for a {\f5 .def} file is not explicitly specified in a particular {\f5 .mmp} file with the DEFFILE keyword, then traditionally the location for this file has been {\cs51\f5 \\}{\cs51\i\f5 project\\}
+{\cs51\f5 B}{\cs51\i\f5 <platform>}{\cs51\f5 .  }Now that the PROJECT keyword is redundant in {\f5 .mmp} files the default location for {\f5 .def} files is ..{\cs51\i\f5 \\}{\cs51\f5 B}{\cs51\i\f5 <platform>}{\cs51\f5 , }relative
+ to the directory containing the {\f5 .mmp} file{\cs51\f5 .}
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Build directory structure
+\par \pard\plain \widctlpar \f4\fs20\lang2057 This has changed from
+\par \pard \fi720\widctlpar {\cs51\f5 \\EPOC32\\Build\\}{\cs51\i\f5 project\\executable_basename\\platform\\build\\
+\par }\pard \widctlpar to
+\par \pard \fi720\widctlpar {\cs51\f5 \\EPOC32\\Build\\}{\cs51\i\f5 absolute_path_to_mmp_file\\mmp_basename\\platform\\build}{\cs51\f5 \\
+\par }\pard \widctlpar This change again relates to the redundancy of the PROJECT keyword and the build tree now better reflects the structure of the source code tree.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 \\EPOC\\Make directory structure
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Makefiles generated via ABLD are now generated into the Build directory.
+\par The old location was
+\par \pard \fi720\widctlpar {\cs51\f5 \\EPOC32\\Make\\}{\cs51\i\f5 project\\platform\\}{\cs51\f5 
+\par }\pard \widctlpar and now it\rquote s
+\par \pard \fi720\widctlpar {\cs51\f5 \\EPOC32\\Build\\}{\cs51\i\f5 absolute_path_to_mmp_file\\mmp_basename\\platform\\}{\cs51\f5 
+\par }\pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 \\EPOC\\Bldmake directory structure
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The files generated by BLDMAKE are now generated into the Build directory.
+\par The old location was
+\par \pard \fi720\widctlpar {\cs51\f5 \\EPOC32\\Bldmake\\}{\cs51\i\f5 project\\}{\cs51\f5 
+\par }\pard \widctlpar and now it\rquote s
+\par \pard \fi720\widctlpar {\cs51\f5 \\EPOC32\\Build\\}{\cs51\i\f5 absolute_path_to_bld.inf_file\\}{\cs51\f5 
+\par }\pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Documentation
+\par \pard\plain \fi720\widctlpar \f4\fs20\lang2057 Documentation for the build system is now exported to directory {\cs51\f5 \\EPOC32\\EngDoc}{\cs51\i\f5 \\}{\cs51\f5 
+\par }\pard \widctlpar 
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Test Exports
+\par \pard\plain \widctlpar \f4\fs20\lang2057 A new section has been added to BLD.INF files which allows for the exporting of files from source for use with test code with command ABLD TEST EXPORT.  This section is demarcated with the PRJ_TESTEXPORTS keyword.
+
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 ABLD LISTING
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The new ABLD LISTING command replaces the LISTASM utility for generating assembler code listings for source code files due to the difficulty in LISTASM coping with the new BUILD directory structure.
+\par Type ABLD HELP LISTING for the syntax of this command.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 GetOpt
+\par \pard\plain \widctlpar \f4\fs20\lang2057 All the build system PERL scripts from E32toolp now use the GetOpt command-line parsing module from the PERL standard library.  
+This means that options on command-lines for all these tools must be flagged with a hyphen (-) rather than a forward slash (/).
+\par }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/bld_changes_forv6.1.rtf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,50 @@
+{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f5\fswiss\fcharset0\fprq2 Arial;}{\f45\fmodern\fcharset0\fprq1 Lucida Console;}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\s1\sb360\sa240\keepn\pagebb\widctlpar \b\f5\fs40\kerning28 \sbasedon0\snext0 
+heading 1;}{\s2\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs34 \sbasedon0\snext0 heading 2;}{\s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28 \sbasedon0\snext0 heading 3;}{\s4\sb120\keepn\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5 \sbasedon0\snext0 heading 4;}{\s5\keepn\widctlpar \b\f5\fs20 \sbasedon0\snext0 heading 5;}{\s6\sb240\sa60\widctlpar \i\f5\fs20 \sbasedon0\snext0 heading 6;}{\s7\sb240\sa60\widctlpar \f5\fs20 \sbasedon0\snext0 
+heading 7;}{\s8\sb240\sa60\widctlpar \i\f5\fs20 \sbasedon0\snext0 heading 8;}{\s9\sb240\sa60\widctlpar \i\f5\fs18 \sbasedon0\snext0 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{
+\s15\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f45\fs16 \sbasedon0\snext15 Code Paragraph;}{\*\cs16 \additive\f45\lang2057 \sbasedon10 Code;}{\*\cs17 \additive\i \sbasedon10 Emphasis;}{\*\cs18 \additive\b \sbasedon10 
+Warning;}{\s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f45\fs20\lang1024 \sbasedon0\snext19 Indented Code;}{\s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvl11\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20 
+\sbasedon21\snext20 List Bullet;}{\s21\fi-284\li851\ri567\widctlpar \f4\fs20 \sbasedon0\snext21 List;}{\s22\li567\ri567\widctlpar \f4\fs20 \sbasedon0\snext22 List Continue;}{\s23\fi-284\li568\ri567\widctlpar{\*\pn \pnlvl10
+\pndec\ulth\pnstart1\pnindent283\pnhang{\pntxta ?}}\f4\fs20 \sbasedon21\snext23 List Number;}{\s24\qc\widctlpar \f4\fs20 \sbasedon0\snext24 Picture;}{\s25\qc\sb240\sa240\widctlpar \b\f5\fs72 \sbasedon0\snext25 Title;}{
+\s26\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0 \f4\fs20 \sbasedon0\snext26 Logo;}{\s27\sb1440\sa1200\sl-460\slmult0\widctlpar \b\scaps\f5\fs40 \sbasedon0\snext27 Subtitle;}{\s28\sl-200\slmult0\widctlpar \b\f5\fs20 \sbasedon0\snext28 
+Version;}{\s29\widctlpar \f4\fs20 \sbasedon0\snext29 Date Published;}{\s30\widctlpar \b\f4\fs20 \sbasedon0\snext30 Copyright Header;}{\s31\widctlpar \f4\fs20 \sbasedon0\snext31 Copyright Notice;}{\s32\sa1440\sl-960\slmult0\keepn\widctlpar 
+\b\scaps\f5\fs40 \sbasedon0\snext32 TOC Header;}{\s33\sb480\sa160\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f4\fs20 \sbasedon0\snext0 toc 1;}{\s34\li221\sb120\keepn\widctlpar\tqr\tx9072 \f4\fs20 \sbasedon0\snext0 toc 2;}{
+\s35\li442\widctlpar\tqr\tx9072 \f5\fs20 \sbasedon0\snext0 toc 3;}{\s36\li658\widctlpar\tqr\tx9072 \f4\fs20 \sbasedon0\snext0 toc 4;}{\*\cs37 \additive\f5\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\widctlpar\brdrr\brdrdb\brdrw15\brsp20 \f45\fs20 
+\sbasedon0\snext38 Constant Definition;}{\s39\widctlpar\tqc\tx4536\tqr\tx9072 \f4\fs18 \sbasedon0\snext39 header;}{\s40\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs20 \sbasedon0\snext40 Even Footer Paragraph;}{
+\s41\widctlpar\tqc\tx4536\tqr\tx9072 \caps\f4\fs18 \sbasedon0\snext41 Even Header Paragraph;}{\s42\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs18 \sbasedon39\snext42 footer;}{\*\cs43 \additive\b \sbasedon10 page number;}{
+\s44\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs20 \sbasedon0\snext44 Odd Footer Paragraph;}{\s45\widctlpar\tqc\tx4536\tqr\tx9072 \caps\f4\fs18 \sbasedon0\snext45 Odd Header Paragraph;}{\s46\widctlpar\brdrl\brdrs\brdrw30\brsp80 
+\f4\fs20 \sbasedon0\snext46 Status;}{\*\cs47 \additive\i \sbasedon10 Glossary Reference;}{\s48\widctlpar \f4\fs20 \sbasedon0\snext48 Compact;}{\*\cs49 \additive\f5 \sbasedon10 App Text;}{\s50\sb240\sa240\keepn\widctlpar \b\f5\fs40\kerning28 
+\sbasedon1\snext50 Heading 1 NoSection;}{\*\cs51 \additive\f5 \sbasedon10 Filename;}{\s52\fi-284\li1135\ri1134\widctlpar{\*\pn \pnlvl11\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20 \sbasedon0\snext52 List Bullet 2;}{\*\cs53 \additive\b 
+\sbasedon10 Glossary Definition;}{\*\cs54 \additive\i \sbasedon10 Document Name;}{\s55\keep\keepn\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f45\fs20 \sbasedon0\snext0 Prototype;}{\*\cs56 \additive\scaps \sbasedon10 
+Key Name;}{\s57\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f45\fs16 \sbasedon0\snext57 Reduced Code;}{\s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20 \sbasedon0\snext0 
+Syntax;}{\s59\qc\sb240\sa240\keepn\widctlpar \b\f5\fs20 \sbasedon0\snext59 Picture Title;}{\s60\fi-3119\li3119\widctlpar\tx3119 \f4\fs20 \sbasedon0\snext60 Member List;}{\*\cs61 \additive\i \sbasedon10 Syntax Element;}{\*\cs62 \additive\b\f45 \sbasedon10 
+Syntax Literal;}{\s63\widctlpar \f4\fs20 \sbasedon0\snext63 annotation text;}{\*\cs64 \additive\b\f5\uld\cf11 \sbasedon10 Example Link;}{\s65\widctlpar \b\f5\fs36 \sbasedon0\snext65 TOC 0;}{\*\cs66 \additive\f45\cf2\lang2057 \sbasedon16 Resource Code;}{
+\s67\widctlpar \f5\fs20\cf6 \sbasedon0\snext67 Converter Directive;}{\s68\widctlpar \b\f45\fs20\uldb \sbasedon0\snext0 Platform Dependency;}{\*\cs69 \additive\b\cf10 \sbasedon10 Raw HTML;}{\*\cs70 \additive\i\cf14 \sbasedon10 URL Reference;}{
+\s71\widctlpar \f5\fs20\ul\cf13 \sbasedon0\snext0 Hypertext Anchor;}{\s72\widctlpar\brdrr\brdrs\brdrw45\brsp20 \f4\fs20 \sbasedon0\snext72 Member Definition;}{\s73\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20 
+\sbasedon0\snext73 Figure Picture;}{\s74\widctlpar\brdrl\brdrs\brdrw30\brsp80 \f4\fs20\cf5 \sbasedon46\snext74 Comment;}{\s75\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \b\f4\fs20 \sbasedon0\snext75 Figure Caption;}{
+\s76\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20 \sbasedon0\snext76 Figure Description;}{\s77\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\cf6 \sbasedon73\snext77 
+Figure Status;}{\s78\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f5\fs20\ul\cf13 \sbasedon0\snext78 Figure Anchor;}{\*\cs79 \additive\f5\uld\cf12 \sbasedon37 Figure Link;}{\s80\li567\ri567\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \i\f4\fs20\cf10 \sbasedon73\snext80 Figure Directive;}{\s81\widctlpar \f4\fs20 \sbasedon0\snext81 Body Text;}}{\info{\title Tools}{\subject Specifying projects with makmake}{\author Preferred Customer}
+{\doccomm The model chapter document.\'0d\'0dHeaders & footers are different for even and odd pages.}{\operator William Roberts}{\creatim\yr1996\mo3\dy6\hr13\min48}{\revtim\yr2001\mo1\dy4\hr12\min13}{\printim\yr2000\mo2\dy23\hr18\min39}{\version2}
+{\edmins13}{\nofpages1}{\nofwords133}{\nofchars760}{\*\company Dell Computer Corporation}{\vern57395}}\paperw11907\paperh16840\margl851\margr851\margt1134\margb1134\gutter1134 \widowctrl\ftnbj\aenddoc\linkstyles\hyphcaps0\formshade \fet0\sectd 
+\binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere {\header \pard\plain \s39\widctlpar\tqc\tx4536\tqr\tx9072 \f4\fs18 {\field{\*\fldinst  TITLE  \\* MERGEFORMAT }{\fldrslt Tools}}\tab Company Confidential\tab EON SDK, Copyright \'a9
+ 2000, Symbian Ltd
+\par }{\footer \pard\plain \s42\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs18 {\field{\*\fldinst  SUBJECT  \\* MERGEFORMAT }{\fldrslt Specifying projects with makmake}}\tab Page {\field{\*\fldinst  PAGE  \\* MERGEFORMAT }{\fldrslt {
+\lang1024 1}}}\tab Last saved {\field{\*\fldinst  SAVEDATE  \\* MERGEFORMAT }{\fldrslt {\lang1024 10/03/00 13:37}}}
+\par }{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl5
+\pndec\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
+{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}\pard\plain \s1\sb360\sa240\keepn\pagebb\widctlpar \b\f5\fs40\kerning28 {\field\fldedit{\*\fldinst  SUBJECT  \\* MERGEFORMAT }{\fldrslt 
+Build Tools changes between V6.0 and V6}}.1
+\par \pard\plain \s74\widctlpar\brdrl\brdrs\brdrw30\brsp80 \f4\fs20\cf5 this chapter summarizes major changes to the build system since e32toolp release 210.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28 SRCDBG keyword added
+\par \pard\plain \widctlpar \f4\fs20 The SRCDBG keyword disables the use of optimisation in debug builds, which makes it significantly easier to step through the execution of the code with a source-level debugger.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28 DEBUGLIBRARY keyword added
+\par \pard\plain \widctlpar \f4\fs20 
+The DEBUGLIBRARY keyword indicates libraries which are only required in debug builds: this situation can arise when complex functions are called from __ASSERT_DEBUG() macros, for example in the TSwizzleCBase constructor whic
+h calls a function in ESTOR.LIB.
+\par MAKMAKE constructs two lists of libraries: one for debug builds and the other for release builds. The LIBRARY keyword contributes to both lists, but the DEBUGLIBRARY keyword only contributes to the debug list.
+ There is no support for libraries which are only used in release builds.
+\par 
+\par }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/bldmake.rtf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,449 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc2\adeff0\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang2057\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt  arial};}
+{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};}{\f36\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}
+{\f37\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@\'cb\'ce\'cc\'e5;}{\f38\froman\fcharset238\fprq2 Times New Roman CE;}{\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}
+{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}{\f43\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f44\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}
+{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f48\fswiss\fcharset238\fprq2 Arial CE{\*\falt  arial};}{\f49\fswiss\fcharset204\fprq2 Arial Cyr{\*\falt  arial};}{\f51\fswiss\fcharset161\fprq2 Arial Greek{\*\falt  arial};}
+{\f52\fswiss\fcharset162\fprq2 Arial Tur{\*\falt  arial};}{\f53\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew){\*\falt  arial};}{\f54\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic){\*\falt  arial};}
+{\f55\fswiss\fcharset186\fprq2 Arial Baltic{\*\falt  arial};}{\f56\fswiss\fcharset163\fprq2 Arial (Vietnamese){\*\falt  arial};}{\f170\fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\f398\fmodern\fcharset238\fprq1 Lucida Console CE;}
+{\f399\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f401\fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f402\fmodern\fcharset162\fprq1 Lucida Console Tur;}{\f410\fnil\fcharset0\fprq2 @\'cb\'ce\'cc\'e5 Western;}}{\colortbl;\red0\green0\blue0;
+\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;
+\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red255\green255\blue255;}{\upr{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \snext0 \styrsid8535436 Normal;}{
+\s1\ql \li0\ri0\sb360\sa240\keepn\pagebb\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\fs40\lang2057\langfe2052\kerning28\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 1;}{\s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 \b\fs34\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 
+heading 2;}{\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 3;}{\s4\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 
+heading 4;}{\s5\ql \li0\ri0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 heading 5;}{\s6\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs24\alang1025 \ltrch\fcs0 
+\i\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 6;}{\s7\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 7;}{
+\s8\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs24\alang1025 \ltrch\fcs0 \i\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 heading 8;}{\s9\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs18\alang1025 \ltrch\fcs0 
+\i\fs18\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive \ssemihidden \styrsid8535436 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{
+\s15\ql \li0\ri0\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 
+\fs16\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext15 Code Paragraph;}{\*\cs16 \additive \rtlch\fcs1 \af36 \ltrch\fcs0 \f36\lang2057\langfe0\langnp2057 \sbasedon10 Code;}{\*\cs17 \additive \rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i \sbasedon10 Emphasis;}{\*\cs18 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Warning;}{\s19\ql \li567\ri0\keep\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin567\itap0 \rtlch\fcs1 \af36\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang1024\langfe1024\loch\f36\hich\af36\dbch\af13\cgrid\noproof\langnp1033\langfenp2052 \sbasedon0 \snext19 Indented Code;}{\s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang 
+{\pntxtb \hich \'b7}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin567\lin568\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon21 \snext20 List Bullet;}{
+\s21\ql \fi-284\li851\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin851\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext21 
+List;}{\s22\ql \li567\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext22 
+List Continue;}{\s23\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec\pnstart1\pnindent283\pnhang {\pntxta \hich .}}\aspalpha\aspnum\faauto\ls2047\ilvl11\adjustright\rin567\lin568\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon21 \snext23 List Number;}{\s24\qc \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext24 Picture;}{\s25\qc \li0\ri0\sb240\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \ab\af1\afs72\alang1025 \ltrch\fcs0 \b\fs72\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext25 Title;}{
+\s26\ql \li0\ri0\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext26 Logo;}{\s27\ql \li0\ri0\sb1440\sa1200\sl-460\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af1\afs40\alang1025 \ltrch\fcs0 \b\scaps\fs40\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext27 Subtitle;}{\s28\ql \li0\ri0\sl-200\slmult0
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext28 Version;}{
+\s29\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext29 Date Published;}{
+\s30\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext30 
+Copyright Header;}{\s31\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext31 Copyright Notice;}{\s32\ql \li0\ri0\sa1440\sl-960\slmult0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\scaps\fs40\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext32 TOC Header;}{\s33\ql \li0\ri0\sb480\sa160\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 1;}{
+\s34\ql \li221\ri0\sb120\keepn\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin221\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 toc 2;}{\s35\ql \li442\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin442\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 3;}{\s36\ql \li658\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin658\itap0 \rtlch\fcs1 \af0\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 4;}{\*\cs37 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\ql \li0\ri0\widctlpar\brdrr
+\brdrdb\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext38 
+Constant Definition;}{\s39\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext39 header;}{\s40\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext40 
+Even Footer Paragraph;}{\s41\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\caps\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext41 Even Header Paragraph;}{\s42\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon39 \snext42 footer;}
+{\*\cs43 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 page number;}{\s44\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext44 Odd Footer Paragraph;}{\s45\ql \li0\ri0\widctlpar
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \caps\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext45 
+Odd Header Paragraph;}{\s46\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext46 Status;}{\*\cs47 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 Glossary Reference;}{
+\s48\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext48 Compact;}{\*
+\cs49 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1 \sbasedon10 App Text;}{\s50\ql \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\fs40\lang2057\langfe2052\kerning28\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon1 \snext50 Heading 1 NoSection;}{\*\cs51 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1 \sbasedon10 Filename;}{
+\s52\ql \fi-284\li1135\ri1134\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \hich \'b7}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin1134\lin1135\itap0 \rtlch\fcs1 \af0\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext52 List Bullet 2;}{\*\cs53 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Glossary Definition;}{\*\cs54 \additive \rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i \sbasedon10 Document Name;}{\s55\ql \li0\ri0\keep\keepn\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Prototype;}{\*\cs56 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \scaps \sbasedon10 Key Name;}{\s57\ql \li0\ri0\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 
+\fs16\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext57 Reduced Code;}{\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Syntax;}{
+\s59\qc \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext59 Picture Title;}{\s60\ql \fi-3119\li3119\ri0\widctlpar\tx3119\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3119\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext60 Member List;}{\*\cs61 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 Syntax Element;}{\*\cs62 \additive \rtlch\fcs1 \ab\af36 \ltrch\fcs0 
+\b\f36 \sbasedon10 Syntax Literal;}{\s63\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext63 annotation text;}{\*\cs64 \additive \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1\uld\cf11 \sbasedon10 Example Link;}{\s65\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af1\afs36\alang1025 \ltrch\fcs0 \b\fs36\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext65 TOC 0;}{\*\cs66 \additive \rtlch\fcs1 \af36 \ltrch\fcs0 \f36\cf2\lang2057\langfe0\langnp2057 \sbasedon16 
+Resource Code;}{\s67\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\cf6\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext67 Converter Directive;}{\s68\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af36\afs24\alang1025 \ltrch\fcs0 
+\b\fs24\uldb\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Platform Dependency;}{\*\cs69 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\cf10 \sbasedon10 Raw HTML;}{\*\cs70 \additive \rtlch\fcs1 \ai\af0 
+\ltrch\fcs0 \i\cf14 \sbasedon10 URL Reference;}{\s71\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\fs24\ul\cf13\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Hypertext Anchor;}{\s72\ql \li0\ri0\widctlpar\brdrr\brdrs\brdrw45\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext72 Member Definition;}{\s73\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext73 Figure Picture;}{
+\s74\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\cf5\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon46 \snext74 Comment;}{\s75\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 
+\b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext75 Figure Caption;}{\s76\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext76 Figure Description;}{
+\s77\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\cf6\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon73 \snext77 Figure Status;}{\s78\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\ul\cf13\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext78 Figure Anchor;}{\*
+\cs79 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\uld\cf12 \sbasedon37 Figure Link;}{\s80\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 
+\rtlch\fcs1 \ai\af0\afs24\alang1025 \ltrch\fcs0 \i\fs24\cf10\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon73 \snext80 Figure Directive;}{
+\s81\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext81 Body Text;}{
+\s82\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \cbpat9 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\f13\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext82 \ssemihidden \styrsid8535436 Document Map;}}{\*\ud\uc0{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \snext0 \styrsid8535436 Normal;}{\s1\ql \li0\ri0\sb360\sa240\keepn\pagebb\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 \b\fs40\lang2057\langfe2052\kerning28\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 1;}{\s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 \b\fs34\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 
+heading 2;}{\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 3;}{\s4\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 
+heading 4;}{\s5\ql \li0\ri0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 heading 5;}{\s6\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs24\alang1025 \ltrch\fcs0 
+\i\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 6;}{\s7\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af1\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 7;}{
+\s8\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs24\alang1025 \ltrch\fcs0 \i\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 heading 8;}{\s9\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af1\afs18\alang1025 \ltrch\fcs0 
+\i\fs18\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive \ssemihidden \styrsid8535436 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{
+\s15\ql \li0\ri0\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 
+\fs16\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext15 Code Paragraph;}{\*\cs16 \additive \rtlch\fcs1 \af36 \ltrch\fcs0 \f36\lang2057\langfe0\langnp2057 \sbasedon10 Code;}{\*\cs17 \additive \rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i \sbasedon10 Emphasis;}{\*\cs18 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Warning;}{\s19\ql \li567\ri0\keep\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin567\itap0 \rtlch\fcs1 \af36\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang1024\langfe1024\loch\f36\hich\af36\dbch\af13\cgrid\noproof\langnp1033\langfenp2052 \sbasedon0 \snext19 Indented Code;}{\s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang 
+{\pntxtb \hich \'b7}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin567\lin568\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon21 \snext20 List Bullet;}{
+\s21\ql \fi-284\li851\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin851\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext21 
+List;}{\s22\ql \li567\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext22 
+List Continue;}{\s23\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec\pnstart1\pnindent283\pnhang {\pntxta \hich .}}\aspalpha\aspnum\faauto\ls2047\ilvl11\adjustright\rin567\lin568\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon21 \snext23 List Number;}{\s24\qc \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext24 Picture;}{\s25\qc \li0\ri0\sb240\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \ab\af1\afs72\alang1025 \ltrch\fcs0 \b\fs72\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext25 Title;}{
+\s26\ql \li0\ri0\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext26 Logo;}{\s27\ql \li0\ri0\sb1440\sa1200\sl-460\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af1\afs40\alang1025 \ltrch\fcs0 \b\scaps\fs40\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext27 Subtitle;}{\s28\ql \li0\ri0\sl-200\slmult0
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext28 Version;}{
+\s29\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext29 Date Published;}{
+\s30\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext30 
+Copyright Header;}{\s31\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext31 Copyright Notice;}{\s32\ql \li0\ri0\sa1440\sl-960\slmult0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\scaps\fs40\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext32 TOC Header;}{\s33\ql \li0\ri0\sb480\sa160\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 
+\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 1;}{
+\s34\ql \li221\ri0\sb120\keepn\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin221\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext0 toc 2;}{\s35\ql \li442\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin442\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 3;}{\s36\ql \li658\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin658\itap0 \rtlch\fcs1 \af0\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 toc 4;}{\*\cs37 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\ql \li0\ri0\widctlpar\brdrr
+\brdrdb\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext38 
+Constant Definition;}{\s39\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext39 header;}{\s40\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext40 
+Even Footer Paragraph;}{\s41\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\caps\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext41 Even Header Paragraph;}{\s42\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon39 \snext42 footer;}
+{\*\cs43 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 page number;}{\s44\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext44 Odd Footer Paragraph;}{\s45\ql \li0\ri0\widctlpar
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \caps\fs18\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext45 
+Odd Header Paragraph;}{\s46\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext46 Status;}{\*\cs47 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 Glossary Reference;}{
+\s48\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext48 Compact;}{\*
+\cs49 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1 \sbasedon10 App Text;}{\s50\ql \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\fs40\lang2057\langfe2052\kerning28\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon1 \snext50 Heading 1 NoSection;}{\*\cs51 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1 \sbasedon10 Filename;}{
+\s52\ql \fi-284\li1135\ri1134\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \hich \'b7}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin1134\lin1135\itap0 \rtlch\fcs1 \af0\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext52 List Bullet 2;}{\*\cs53 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b \sbasedon10 Glossary Definition;}{\*\cs54 \additive \rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i \sbasedon10 Document Name;}{\s55\ql \li0\ri0\keep\keepn\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs24\alang1025 
+\ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Prototype;}{\*\cs56 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \scaps \sbasedon10 Key Name;}{\s57\ql \li0\ri0\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 
+\fs16\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext57 Reduced Code;}{\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Syntax;}{
+\s59\qc \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs24\alang1025 \ltrch\fcs0 \b\fs24\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext59 Picture Title;}{\s60\ql \fi-3119\li3119\ri0\widctlpar\tx3119\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3119\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext60 Member List;}{\*\cs61 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 Syntax Element;}{\*\cs62 \additive \rtlch\fcs1 \ab\af36 \ltrch\fcs0 
+\b\f36 \sbasedon10 Syntax Literal;}{\s63\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext63 annotation text;}{\*\cs64 \additive \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f1\uld\cf11 \sbasedon10 Example Link;}{\s65\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\ab\af1\afs36\alang1025 \ltrch\fcs0 \b\fs36\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext65 TOC 0;}{\*\cs66 \additive \rtlch\fcs1 \af36 \ltrch\fcs0 \f36\cf2\lang2057\langfe0\langnp2057 \sbasedon16 
+Resource Code;}{\s67\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\cf6\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext67 Converter Directive;}{\s68\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af36\afs24\alang1025 \ltrch\fcs0 
+\b\fs24\uldb\lang2057\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Platform Dependency;}{\*\cs69 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\cf10 \sbasedon10 Raw HTML;}{\*\cs70 \additive \rtlch\fcs1 \ai\af0 
+\ltrch\fcs0 \i\cf14 \sbasedon10 URL Reference;}{\s71\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 
+\fs24\ul\cf13\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext0 Hypertext Anchor;}{\s72\ql \li0\ri0\widctlpar\brdrr\brdrs\brdrw45\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext72 Member Definition;}{\s73\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext73 Figure Picture;}{
+\s74\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\cf5\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon46 \snext74 Comment;}{\s75\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1025 \ltrch\fcs0 
+\b\fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext75 Figure Caption;}{\s76\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext76 Figure Description;}{
+\s77\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\cf6\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon73 \snext77 Figure Status;}{\s78\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 
+\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\ul\cf13\lang2057\langfe2052\loch\f1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext78 Figure Anchor;}{\*
+\cs79 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\uld\cf12 \sbasedon37 Figure Link;}{\s80\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 
+\rtlch\fcs1 \ai\af0\afs24\alang1025 \ltrch\fcs0 \i\fs24\cf10\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon73 \snext80 Figure Directive;}{
+\s81\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\f0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 \sbasedon0 \snext81 Body Text;}{
+\s82\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \cbpat9 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang2057\langfe2052\loch\f13\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 
+\sbasedon0 \snext82 \ssemihidden \styrsid8535436 Document Map;}}}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid-10297062\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'01{\uc1\u-3913 ?};}{\levelnumbers;}\f3\fbias0 \s52\fi-360\li643\jclisttab\tx643\lin643 }{\listname ;}\listid-125}{\list\listtemplateid367955130\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \s23\fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-120}{\list\listtemplateid-576033570\listsimple{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01{\uc1\u-3913 ?};}{\levelnumbers;}\f3\fbias0 \s20\fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-119}}{\*\listoverridetable
+{\listoverride\listid-119\listoverridecount0\ls1}{\listoverride\listid-120\listoverridecount0\ls2}{\listoverride\listid-125\listoverridecount0\ls3}}{\*\rsidtbl \rsid8535436}{\*\generator Microsoft Word 11.0.0000;}{\info{\title Tools}
+{\subject Specifying projects with makmake}{\author Preferred Customer}{\doccomm The model chapter document.\'0d\'0dHeaders & footers are different for even and odd pages.}{\operator rossqin}{\creatim\yr1996\mo3\dy6\hr13\min48}
+{\revtim\yr2009\mo4\dy27\hr13\min54}{\printim\yr1997\mo4\dy18\hr15\min6}{\version3}{\edmins0}{\nofpages4}{\nofwords1369}{\nofchars7807}{\*\company Dell Computer Corporation}{\nofcharsws9158}{\vern24613}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://s
+chemas.microsoft.com/office/word/2003/wordml}}\paperw11907\paperh16840\margl851\margr851\margt1134\margb1134\gutter1134\ltrsect 
+\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\linkstyles\hyphcaps0\formshade\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984
+\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot8535436 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \chftnsep 
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \chftnsepc 
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \chftnsep 
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \chftnsepc 
+\par }}\ltrpar \sectd \ltrsect\binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere\sectdefaultcl\sftnbj {\headerr \ltrpar \pard\plain \ltrpar\s39\ql \li0\ri0\widctlpar
+\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 \fs18\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\field{\*\fldinst {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  TITLE  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 Tools}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid8535436 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 Company Confidential\tab }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0            }{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 \hich\f0 EON SDK, Copyright \'a9\loch\f0  1999}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 -}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436\charrsid8535436 
+\hich\af0\dbch\af13\loch\f0 2009 Nokia Corporation and/or its subsidiary(-ies).}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436\charrsid8535436 
+\par }}{\footerr \ltrpar \pard\plain \ltrpar\s42\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \af0\afs18\alang1025 \ltrch\fcs0 
+\fs18\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  SUBJECT  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid8535436 \hich\af0\dbch\af13\loch\f0 Specifying projects with makmake}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab \hich\af0\dbch\af13\loch\f0 Page }{\field{\*\fldinst {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  PAGE  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid8535436 \hich\af0\dbch\af13\loch\f0 1}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 
+\af0 \ltrch\fcs0 \insrsid8535436 \tab \hich\af0\dbch\af13\loch\f0 Last saved }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  SAVEDATE  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 
+\lang1024\langfe1024\noproof\insrsid8535436 \hich\af0\dbch\af13\loch\f0 15/03/2000\hich\af0\dbch\af13\loch\f0  \hich\af0\dbch\af13\loch\f0 11:26:00}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang 
+{\pntxta \hich )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}
+{\pntxta \hich )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}\pard\plain \ltrpar
+\s1\ql \li0\ri0\sb360\sa240\keepn\pagebb\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs40\alang1025 \ltrch\fcs0 
+\b\fs40\lang2057\langfe2052\kerning28\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1  SUBJECT  \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af1 
+\ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Specifying components with bldmake}}}\sectd \binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 
+\par }\pard\plain \ltrpar\s71\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \fs24\ul\cf13\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {
+\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 tools.bldmake
+\par }\pard\plain \ltrpar\s74\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\cf5\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 this chapter documents }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 
+\hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  to e32toolp release 210 level.
+\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 
+\b\fs34\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Overview
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 The }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ tool can be used in conjunction with }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 makmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  and }{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  to control\hich\af0\dbch\af13\loch\f0 
+ the building of a component, where a component is a set of executables each of which is defined by an }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  file. }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  processes a component description file - }{
+\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  - and generates several makefiles which are used by }{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  to carry out the various stag\hich\af0\dbch\af13\loch\f0 es of building the component. 
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Bldmake Invocation syntax
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  [ }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 options}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  ] }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 command}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\par }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 command}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid8535436 \hich\af0\dbch\af13\loch\f0  :\line \tab }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 
+\hich\af36\dbch\af13\loch\f36 bldfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid8535436 \hich\af0\dbch\af13\loch\f0  | }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 clean}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\cs61\insrsid8535436 \hich\af0\dbch\af13\loch\f0  | }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid8535436 \hich\af0\dbch\af13\loch\f0  | }{\rtlch\fcs1 \ab\af36 
+\ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 plat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid8535436 
+\par }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 options}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  :\line \tab }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 
+\hich\af36\dbch\af13\loch\f36 -v
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 
+\par \hich\af0\dbch\af13\loch\f0 where
+\par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone 
+\cltxlrtb\clftsWidth3\clwWidth2376\clshdrawnil \cellx2268\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth6911\clshdrawnil \cellx9179\pard \ltrpar
+\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 command}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \cell 
+\hich\af0\dbch\af13\loch\f0 is the command to be carried out by bldmake\cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \trowd \irow0\irowband0\ltrrow
+\ts11\trgaph108\trleft-108\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth2376\clshdrawnil \cellx2268\clvertalt
+\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth6911\clshdrawnil \cellx9179\row \ltrrow}\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 
+\ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 -v}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \cell }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 indicates verbose operation
+\par \hich\af0\dbch\af13\loch\f0 When this flag is specified, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ prints progress messages.  The default is to give error messages only.\cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\trowd \irow1\irowband1\lastrow \ltrrow\ts11\trgaph108\trleft-108\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone 
+\cltxlrtb\clftsWidth3\clwWidth2376\clshdrawnil \cellx2268\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth6911\clshdrawnil \cellx9179\row }\pard \ltrpar
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ searches for the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ component description file in the current directory and processes it.  If the }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 bldfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ command is specified, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldma\hich\af1\dbch\af13\loch\f1 ke}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  creates the directory }{\rtlch\fcs1 
+\af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \\\hich\af1\dbch\af13\loch\f1 EPOC32\\Build\\[absolute_path_to_bld.inf_file}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 ]\\
+ and generates makefiles for the component into this directory, also }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ produces a file called }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 abld.bat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  in the current directory. }{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 abld.bat}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  invokes }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 Perl}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  on script }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \\\hich\af1\dbch\af13\loch\f1 EPOC32\\Tools\\\hich\af1\dbch\af13\loch\f1 abld.pl}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0 , passing the directory where }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ has created its makefiles as a parameter to the script.
+\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 
+\b\fs34\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Structure of component definition files
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 A }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  component description file - }{
+\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  - has the form
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 wholefile}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  :
+\line \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 section-header\line \tab \tab section-data\line sections}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  :\line 
+\hich\af0\dbch\af13\loch\f0 |\tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_platforms}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \line \hich\af0\dbch\af13\loch\f0 |\tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_exports}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \line \hich\af0\dbch\af13\loch\f0 |\tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_testexports}{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \line \hich\af0\dbch\af13\loch\f0 |\tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_mmpfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \line 
+\hich\af0\dbch\af13\loch\f0 |\tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_testmmpfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \line 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 Each section header can appear any number of times in the file.  The section headers and their data are case-insensitive.
+\par }{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid8535436 \hich\af0\dbch\af13\loch\f0 Note:}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  a trailing backslash is used to indicate a l\hich\af0\dbch\af13\loch\f0 ine continuation.
+
+\par \hich\af0\dbch\af13\loch\f0 Use the C++ style comment syntax for comments. 
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Specifying the platforms
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 In the }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 prj_platforms}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ section, list the platforms that the components supports.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_platforms}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  :\line \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <list_of_platforms>}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 If the platforms section is not found, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  s\hich\af0\dbch\af13\loch\f0 \hich\f0 upplies platforms WINS, ARMI, ARM4 and THUMB by default.  Specifying pseudo-platform \'93\loch\f0 \hich\f0 DEFAULT\'94\loch\f0 
+ at the start of the list will cause any subsequent platforms to be added to the default list, unless these platforms are prefixed with a hyphen (-), in which ca\hich\af0\dbch\af13\loch\f0 s\hich\af0\dbch\af13\loch\f0 
+e these platforms will be removed from the list.  Platforms can be listed on several separate lines if required.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Specifying the files to be exported
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 In the }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 prj_exports}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ section, list the files to be copied from the source directories to the releasables\hich\f0 \rquote \loch\f0  dir\hich\af0\dbch\af13\loch\f0 ectories during the building of a component.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_exports}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ :\line \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <source_file_1>\tab \tab [<destination_file>]\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <source_file_2>\tab \tab [<destination_file>]
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 \hich\f0  \'85\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <source_file_n>\tab \tab [<destination_file>]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 This section is intended mainly for specifying C++ header files to be cop\hich\af0\dbch\af13\loch\f0 ied to directory }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \\
+\hich\af1\dbch\af13\loch\f1 EPOC32\\Include\\}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+.  Specify each file on a separate line.  If the source file is listed with a relative path, the path will be considered relative to the directory containing the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  file.  If a destination file is not specified, the so\hich\af0\dbch\af13\loch\f0 urce file will be copied to }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \\
+\hich\af1\dbch\af13\loch\f1 EPOC32\\Include\\}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 .  If a relative path is specified with the destination file, the path will be considered relative to directory  }{\rtlch\fcs1 \af1 
+\ltrch\fcs0 \cs51\f1\insrsid8535436 \\\hich\af1\dbch\af13\loch\f1 EPOC32\\Include\\.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Specifying the test files to be exported
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 In the }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 prj_testexports}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ section, list the\hich\af0\dbch\af13\loch\f0  files to be copied from the source directories to the releasables\hich\f0 \rquote \loch\f0  directories for use with test programs.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_exports}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ :\line \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <source_file_1>\tab \tab [<destination_file>]\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <source_file_2>\tab \tab [<destination_file>]
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 \hich\f0  \'85\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <source_file_n>\tab \tab [<destination_file>]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 Specify each file on a separate line.  If the source file is listed with a relative path, the path will be considered relative to the directory containing the }{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  file.  If a destination file is not specified, the source file will be copied to the dire\hich\af0\dbch\af13\loch\f0 
+ctory containing the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ file.  If a relative path is specified with the destination file, the path will be considered relative to directory  containing the}{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1  bld.inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid8535436 \hich\af0\dbch\af13\loch\f0  file.
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Specifying the mmp files
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 In the }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 prj_mmpfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ section, list the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  files containe\hich\af0\dbch\af13\loch\f0 d in your component.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_mmpfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ :\line \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <mmp_file_1>\tab \tab [tidy]\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  <mmp_file_2>\tab \tab [tidy]
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 \hich\f0  \'85\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <.mmp_file_n>\tab \tab [tidy]
+\par \tab \hich\af0\dbch\af13\loch\f0 makefile\tab \tab <makefile_1>\tab \tab [tidy]\line \tab makefile\tab \tab <makefile_2>\tab \tab [tidy]\line \tab \hich\f0 \'85\line \tab \loch\f0 makefile\tab \tab <makefile_n>\tab \tab [tidy]}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 Specify each }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 .mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ file on a separate line.  If \hich\af0\dbch\af13\loch\f0 a relative path is specified with an }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  file the path will be considered relative to the directory containing the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0 \hich\f0  file.  Specify the \'93\loch\f0 \hich\f0 tidy\'94\loch\f0  attribute if the releasable that an }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid8535436 \hich\af0\dbch\af13\loch\f0  file defines is purely internal to your component and not required either by other components or for your component to execute.
+\par \hich\af0\dbch\af13\loch\f0 Use keyword }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 makefile}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ to specify an extension makefile for your component.  Extension makefiles can be used where build activiti\hich\af0\dbch\af13\loch\f0 es need to be carried out which are not catered for by makefiles generated by }{\rtlch\fcs1 \af1 \ltrch\fcs0 
+\cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 makmake.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0   
+\par }\pard\plain \ltrpar\s74\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\cf5\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 Need link to format for extension makefiles here.
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 Build activities relating to particular }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 .mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  files or extension makefiles are carried out in the order in which the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 m\hich\af1\dbch\af13\loch\f1 mp}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid8535436 \hich\af0\dbch\af13\loch\f0  files and extension makefiles are listed in the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  file.  Extension makefiles can be interspersed among the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  files.
+
+\par \hich\af0\dbch\af13\loch\f0 If an }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ file or extension makefile applies only to a particular platform place the item within }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs16\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 #ifdef}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8535436 
+\hich\af0\dbch\af13\loch\f0 s}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 .  The }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 prj_mmpfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  secti\hich\af0\dbch\af13\loch\f0 on is preprocessed for each platform listed in the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 prj_platforms}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid8535436 \hich\af0\dbch\af13\loch\f0  section.  If, for example, an }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ file relates only to the WINS platform, specify the file as follows:
+\par 
+\par }{\rtlch\fcs1 \af36 \ltrch\fcs0 \cs16\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 #if defined(WINS)
+\par \hich\af36\dbch\af13\loch\f36 <mmp_file>
+\par \hich\af36\dbch\af13\loch\f36 #endif}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs28\alang1025 \ltrch\fcs0 
+\b\fs28\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Specifying the test mmp files
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 In the }{\rtlch\fcs1 \ab\af36 \ltrch\fcs0 \cs62\b\f36\insrsid8535436 \hich\af36\dbch\af13\loch\f36 prj_testmmpfil\hich\af36\dbch\af13\loch\f36 es}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  section, list the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ files contained in your component which define test programs.
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 prj_testmmpfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  :\line \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <.mmp_file_1>\tab \tab [tidy]  [manual]  [support]\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <.mmp_file_2>\tab \tab [tidy] [manual]  [support]
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 \hich\f0  \'85\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 
+\cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  <.mmp_file_n>\tab \tab [tidy] [manual]  [support]
+\par \tab \hich\af0\dbch\af13\loch\f0 makefile\tab \tab <m\hich\af0\dbch\af13\loch\f0 akefile_1>\tab \tab [tidy]  [manual]  [support]\line \tab makefile\tab \tab <makefile_2>\tab \tab [tidy]  [manual]  [support]\line \tab \hich\f0 \'85\line \tab \loch\f0 
+makefile\tab \tab <makefile_n>\tab \tab [tidy]  [manual]  [support]}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 The section for test }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ files has the same syntax as the section for standard }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  files, except that two e
+\hich\af0\dbch\af13\loch\f0 xtra }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  file attributes are provided. }{\rtlch\fcs1 \af1 
+\ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake bldfiles}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 \hich\f0 
+ creates batch files for running the test programs for your component.  For each platform, a batch file for running \'93\loch\f0 \hich\f0 automatic\'94\loch\f0 \hich\f0  tests and a batch file for running \'93\loch\f0 \hich\f0 manual\'94\loch\f0 
+ tests are created in the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldm\hich\af1\dbch\af13\loch\f1 ake }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+output directory for your component, if any such tests are listed.  The batch files are called }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 platform-name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0 .auto.bat and }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 platform-name}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 \hich\f0 .manual.bat respectively.  \'93
+\loch\f0 \hich\f0 automatic\'94\loch\f0 \hich\f0  tests are those tests which can be run without any user-intervention, while \'93\loch\f0 m\hich\af0\dbch\af13\loch\f0 \hich\f0 anual\'94\loch\f0 
+ tests require user-input in order for them to complete successfully.  By default, for each }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+\hich\f0  file or extension makefile listed an entry is created in the \'93\loch\f0 \hich\f0 automatic\'94\loch\f0  batch file which is the basename of the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{
+\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  file or extension makefile (note that\hich\af0\dbch\af13\loch\f0  this means that the basename of the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 
+\hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  file must be the same as the basename of the releasable specified with the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 
+\hich\af1\dbch\af13\loch\f1 target}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  statement in the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid8535436 \hich\af0\dbch\af13\loch\f0 \hich\f0  file if the releasable test that it defines is to be invoked successfully).  Specify the \'93\loch\f0 \hich\f0 manual\'94\loch\f0  attribute if t\hich\af0\dbch\af13\loch\f0 he test that the }{
+\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 mmp}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 \hich\f0  file or extension makefile defines is to be included in the \'93\loch\f0 \hich\f0 
+manual\'94\loch\f0 \hich\f0  batch file rather than the \'93\loch\f0 \hich\f0 automatic\'94\loch\f0 \hich\f0  batch file, and specify the \'93\loch\f0 \hich\f0 support\'94\loch\f0  attribute if the test is not to be included in either batch file.
+\par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \rtlch\fcs1 \ab\af1\afs34\alang1025 \ltrch\fcs0 
+\b\fs34\lang2057\langfe2052\loch\af1\hich\af1\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid8535436 \hich\af1\dbch\af13\loch\f1 Structure of extension \hich\af1\dbch\af13\loch\f1 makefiles
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 A }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bldmake}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  extension makefile has the form
+
+\par }\pard\plain \ltrpar\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \cs61\i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 target}{\rtlch\fcs1 \af0 \ltrch\fcs0 \cs61\insrsid8535436 \hich\af0\dbch\af13\loch\f0  
+}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 :\line \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 target_command_1\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 
+\ai\af0 \ltrch\fcs0 \i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 target_command_2\line \tab \hich\f0 \'85\line }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \tab }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+target_command_n}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe2052\loch\af0\hich\af0\dbch\af13\cgrid\langnp2057\langfenp2052 {\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 Extension makefiles can be used where certain build steps are required which are not catered for by makefiles generated by }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 
+\hich\af1\dbch\af13\loch\f1 makmake.}{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8535436 \hich\af0\dbch\af13\loch\f0  }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 A }{\rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\insrsid8535436 
+\hich\af0\dbch\af13\loch\f0 targ\hich\af0\dbch\af13\loch\f0 et}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 
+ in the extension makefile is an NMAKE.EXE target, and should be followed by a colon to denote it as such.  During build activities, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 
+\insrsid8535436 \hich\af0\dbch\af13\loch\f0  will call the target in the extension makefile corresponding to the build activity that is being carried out, and th\hich\af0\dbch\af13\loch\f0 
+us the commands listed with the target in the extension makefile will be executed.  Possible targets (corresponding }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 
+\hich\af0\dbch\af13\loch\f0  commands appear in brackets where they differ from the target) are :
+\par 
+\par }\pard \ltrpar\ql \fi720\li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 CLEAN, FINAL, FREEZE, LIBRARY, MAKMAKE (makefile), RESOURCE, BLD 
+\hich\af0\dbch\af13\loch\f0 (target), SAVESPACE (target -savespace), and RELEASABLES (target [-what | -check]).
+\par 
+\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 All these targets should be provided in an extensio\hich\af0\dbch\af13\loch\f0 
+n makefile, even if no commands are listed with a particular target, since the target will be called during the build whether commands are listed or not and NMAKE.EXE will generate an error if the target cannot be found. Commands listed with each target c
+\hich\af0\dbch\af13\loch\f0 a\hich\af0\dbch\af13\loch\f0 n be calls to any tools or system commands which will be available at build-time.
+\par \hich\af0\dbch\af13\loch\f0 If different commands are required for the same target for different platforms, special NMAKE.EXE syntax can be used in conjunction with the $(PLATFORM and $(CFG) macros whic\hich\af0\dbch\af13\loch\f0 h }{\rtlch\fcs1 \af1 
+\ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 abld}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  defines to carry out the different commands.  $(CFG) is defined as UDEB or UREL.  For example
+\par 
+\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 \hich\f1 !IF \'93\loch\f1 \hich\f1 $(PLATFORM)\'94\loch\f1 \hich\f1  == \'93\loch\f1 \hich\f1 WINS\'94
+\par \hich\af1\dbch\af13\loch\f1 CLEAN :
+\par }\pard \ltrpar\ql \fi720\li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 <wins_clean_command>
+\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 !ELSE
+\par \hich\af1\dbch\af13\loch\f1 CLEAN :
+\par }\pard \ltrpar\ql \fi720\li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 <other_clean_command>
+\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 !ENDIF
+\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0 Note that ABLD changes directory to the directory containing the }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{\rtlch\fcs1 \af0 
+\ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  file before calling NMAKE.EXE on extension makefile targets, so if relative paths are present in the extension makefiles they will be considered relative to the directory containing t
+\hich\af0\dbch\af13\loch\f0 he }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cs51\f1\insrsid8535436 \hich\af1\dbch\af13\loch\f1 bld.inf}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8535436 \hich\af0\dbch\af13\loch\f0  file.
+\par }}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/building_variants.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,43 @@
+Product Build Variants
+======================
+
+In order to create a build variant two files are required. A "Product Variant" HRH file
+containing the variant-specific macros.  And a configuration file (variant.cfg) that points
+to it.
+
+
+1. The Product Variant (.HRH) File
+==================================
+
+This file contains the macros to be defined for this product variant as #define statements.
+eg,
+	#define EKA2
+	#define NEW_CRYPTO
+	#undef DONT_USE_ME
+
+This file is a C++ header file, so comments are allowed.
+
+The product variant can go anywhere on the same drive as the epoc32 directory.
+Suggested location is somewhere under %EPOCROOT%\epoc32.
+e.g.:
+	\epoc32\include\variant\buildvariant.hrh
+	\epoc32\include\variant\cedar.hrh
+
+
+
+2. The Configuration File (variant.cfg)
+=======================
+
+The variant.cfg file must be called
+
+	%EPOCROOT%\epoc32\tools\variant\variant.cfg
+
+The variant folder doesn't exist by default and has to be created manually.
+This file should contain the name and path of the product variant (.HRH) file.
+The file can be specified as
+	a) a path relative to %EPOCROOT%
+	b) an absolute path
+A path starting with "\EPOC32" will be adjusted for EPOCROOT.
+
+Perl-type comments (#) are allowed.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/cedar-mostly-thumb.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,61 @@
+Intro.
+
+A new GCC98r2 platform/build target has been added to Cedar. This
+platform is called ARM4T and implements the 'mostly thumb' build
+policy. Under this policy user-side code is built in THUMB (ARMv4)
+mode by default and kernel side code is built in ARM (ARMv4) mode with
+no interworking support. These defaults can be overridden by various
+means (see below). When the default is overridden both user and
+kernel-side code is built in ARM (ARMv4) mode with interworking
+support.
+
+Overriding the default.
+
+The default can be overridden at project (MMP)and compontent (BLD.INF)
+level and also interactively via a commandline argument to MAKMAKE.
+
+i) MMP 
+
+A new keyword ALWAYS_BUILD_AS_ARM is introduced to the supported MMP
+file syntax. This keyword takes no arguments. It applies only to
+platforms that implement the 'mostly thumb' policy. In other words it
+is ignored by other platforms (e.g. ARM4). 
+
+ii. BLD.INF
+
+A new qualifier, BUILD_AS_ARM, is introduced for MMP file statements
+in the BLD.INF syntax. The syntax for such statements thus becomes:
+
+PRJ_MMPFILES
+[<mmp path>\<mmp file>] {<qualifiers>}
+{MAKEFILE|NMAKEFILE} [<path>\<makefile>] {build_as_arm}
+// <qualifiers> are tidy, ignore, build_as_arm
+
+iii. MAKMAKE
+
+MAKMAKE has been extended to accept the option -ARM. Supplying this
+option has the same effect as if ALWAYS_BUILD_AS_ARM is supplied in
+the MMP file.
+
+Build/Release Directory Structure.
+
+Build artefacts are placed in either UREL or UDEB beneath ARM4T in
+both build and release trees whatever ISA is targeted. The exception
+is import libraries. Because ARM4T only supports version 4 of the ARM
+architecture different import stubs implementations are required for
+each of the possible modes that clients can be compiled in (e.g. ARM
+without-interworking vs ARM with-interworking vs THUMB). Therefore
+import libraries are placed in the UREL sub-directory of ARM4, ARMI or
+THUMB respectively within the release tree.
+
+Static Libraries.  
+
+Static libraries are always built in ARM mode with interworking. A
+consequence of this is that the linker (LD) will introduce veneers
+into executables built in THUMB mode. The veneers are responsible for
+switching mode (as appropriate). However the introduction of a veneer
+has a small impact on code size. These two factors (i.e. static libs
+being ARM and veneers) mean that an ARM4T THUMB executable will always
+be slightly larger than if it had been built using the old THUMB build
+target.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/cpu_specific_builds.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,83 @@
+
+Intro.
+The ARMV5 build supports the notion of customization. This allows a
+programmer to define a new build target that is derived from the ARMV5
+build. A new build target is defined via a .BSF file. The build system
+becomes aware of a customized build by the presence of its .BSF file
+in $(EPOCROOT)\epoc32\tools. Such customizations are referred to by
+the name of their .BSF file e.g. the file XScale.bsf defines the build
+target XScale. This name can be used in exactly the same way as
+built-in names such as ARMV5.
+
+BSF Syntax It is intended that the syntax of a .BSF file be toolchain
+specific with the exception of the obligatory header:
+
+#<BSF>#					: token to identify this as a BSF file must appear at start of first line.
+CUSTOMIZES 	build			: identitifies which build is customized by this spec  e.g. ARMV5.
+
+Currently only ARMV5 can be customized which is the only supported
+RVCT toolchain build. ARMV5 implements the 'mostly thumb' policy. The
+ARMV5 specific .BSF syntax is as follows:
+
+
+THUMB_OPTIONS	opt1 opt2 ...	: compiler options used by default for user side code (expected to be THUMB mode)
+ARM_OPTIONS	opt1 opt2 ...	: compiler options used when BUILD_AS_ARM etc are specified (expected to be ARM mode)
+KERNEL_OPTIONS	opt1 opt2 ...	: compiler options used to compile kernel side code
+COMMON_OPTIONS	opt1 opt2 ...	: compiler options that are added to all the above
+
+The above four keywords specify compiler options that can be overriden
+in an MMP file via OPTION: e.g.
+
+OPTION ARMCC -Ospace.
+
+A final keyword specifies the system-wide options that cannot be
+overridden in an MMP file via OPTION. Typically these specify options
+within the EABI e.g. the SOFTVFP calling convention. They are called
+invariant since code compiled with different settings will not be
+binary compatible.
+
+INVARIANT_OPTIONS	opt opt2 ...	: these options are appended to all compiler command lines
+
+The following is the contents of the example file
+armv5_cpu_spec_example.bsf which is exported to
+$(EPOCROOT)\epoc32\tools from e32toolp\platform. It is intended that
+users can use this a the basis for their own customizations.
+
+--------------------------------EXAMPLE-----------------------------------
+
+#<bsf>#
+
+# Example build specialization file 
+# 
+# NB currently specialization only applies to ARMV5 build using RVCT.
+
+# This file customizes the default ARMV5. It specifies a build that
+# always uses optimization level O1 rather than the default O2.
+customizes ARMV5
+
+# The following options that can be overridden by MMP files
+
+# Use these options when compiling user-side THUMB code
+thumb_options	-thumb -O1 
+
+# Use these options when compiling user-side ARM code
+arm_options	-arm -O1 
+
+# Use these options when compiling Kernel code
+kernel_options	-arm -O1 
+
+# This just factors out common (contingent) options from the above.
+# These options can also be overridden by MMP files.
+common_options	--diag_suppress 1,161,654,1135,1152,1300 --diag_error 1267
+
+# Fixed options for this build. These options should only be changed with great care since
+# they have the potential to introduce incompatible ABI (or machine) level effects.
+# -cpu 5T - this build just targets a generic 5T
+# -Ono_known_library - we use our own library so tell the compiler not to make assumptions about its implementation
+# -fpu softvfp - some system code explicitly assumes this variant of the EABI (softvfp+vfp could be used on say XScale)
+# --dll_vtbl - this switches on class exporting and is needed to support Symbian OS DLL model
+# -apcs /inter - redundant on 5T, but worth saying anyway
+invariant_options	-cpu 5T -fy -Ono_known_library -fpu softvfp --dll_vtbl -apcs /inter
+
+------------------------------------------END EXAMPLE-----------------------------------------
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/epocrc.config.sample	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,51 @@
+# Copyright (c) 2005-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:
+# epocrc.config
+# Configuration data which is read by epocrc.pl, the data in this file allows 
+# the method of localisation to be specified.
+# check_rls_items can take the values 0 or 1, setting this variable to 1
+# will check for the presence of localisation comment tags before rls items
+# and the use of correct syntax within these comments. If there are no
+# localisation tags within the file then it is assumed that localisation is 
+# not required for this file. To emit a remark about files of this type adjust
+# the value of strict_checking below.
+#
+
+check_rls_items = 0;
+
+
+# strict_checking can take the values 0 or 1, setting this variable to 1
+# will cause rcomp to emit a warning if the rpp file contains rls items but
+# no localisation comments. check_rls_items must also be set to 1 to enable
+# this functionality.
+
+strict_checking = 0;
+
+# Any files and directories which need to be passed to cpp (the c pre-processor) 
+# should be specified here. File names and directory names should be relative to 
+# EPOCROOT and should be proceeded by 'include: ' (without the quotes). 
+#
+# The data added to the cpp command in each case will be:
+# -I "<path-relative to EPOCROOT>" -include "<path-and-filename-relative to EPOCROOT>"
+# if a file name is specified and 
+# -I "<path-relative to EPOCROOT>"
+# if a directory is specified.
+#
+# If a file included here #include-s another file do not specify the 
+# #include-d file here as cpp will then include the file twice.
+# It is however, necessary to specify the directory that any #include-d 
+# files are in if this directory will not be searched by cpp through the
+# files/directories which are included here. 
+
+include: epoc32\include\SymbianTags.rh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/genshimsrc.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,79 @@
+GENSHIMSRC
+15/08/03
+
+Here is the user documentation that GENSHIMSRC.BAT itself produces:
+
+genshimsrc
+
+	Generate source for a shim DLL and its associated deffile from a supplied deffile
+
+Usage:
+	genshimsrc [options] deffile
+
+Where:
+	[deffile]     The source deffile
+
+Options:
+	--srcpath         the path for the output source file (defaults to CWD)
+	--defpath         the path for the output DEF file (defaults to srcpath)
+	--name            the name to use for the output files (defaults to shim)
+	--version         the version to use for the output DEF file (defaults to 0.0)
+	--alignstack      use shims which align the stack to an 8 byte boundary
+
+The following invocation
+
+    genshimsrc.bat --name=xuser-7_0 xuseru.def
+
+would produce two files: xuser-7_0.cia and xuser-7_0{00000000}.def (in CWD). 
+
+The version encoded in the DEF file name can be changed by supplying
+the --version option. e.g.
+
+    genshimsrc.bat --name=xuser-7_0 --version=1.0 xuseru.def
+
+would produce two files: xuser-7_0.cia and xuser-7_0{00010000}.def (in CWD). 
+
+The primary purpose of GENSHIMSRC is to allow 'DLL ordinal skew' to be
+repaired. It achieves this by generating 'trampoline' functions at the
+old ordinal which get linked against import stubs which will be
+resolved by the loader at the new ordinal. However the generated files
+make it easy for the programmer to inject code into the trampoline if
+the need arises by identifying each trampoline with the function it is
+derived from. The generated .DEF file also permits a usable IMPORT lib
+to be produced for the shim DLL if it is necessary.
+
+As alluded to above, for each entry in the supplied .DEF file
+GENSHIMSRC generates an exported (trampoline) function in the .CIA
+file and a corresponding entry in the associated .DEF file. Assume the
+following entry appears in the supplied .DEF file
+
+AddL__9CObjectIxP7CObject @ 11 NONAME ; CObjectIx::AddL(CObject *)xxxxx
+
+This results in the following source code being generated in the .CIA file
+
+EXPORT_C __NAKED__ int export_at_ordinal_11()
+//
+// CObjectIx::AddL(CObject *)
+//
+	{
+	asm("B AddL__9CObjectIxP7CObject");
+	}
+
+and the following entry being generated in the generated .DEF file
+
+AddL__9CObjectIxP7CObject=export_at_ordinal_11__Fv @ 11 NONAME ; CObjectIx::AddL(CObject *)
+
+These can be incorporated into a buildable project by providing a MMP file which contains:
+
+
+version			0.0		explicit
+target			xuser.dll
+targettype		dll
+sourcepath		.
+source			xuser-7_0.cia
+library			xuser{1.0}.lib
+systeminclude	..\..\include
+deffile			..\..\~\xuser-7_0.def
+
+
+N.B. There is nothing special about the MMP file.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/gt0063.changes	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,32 @@
+GT 0063 Emulation Enhancements
+
+1. EPOCROOT check in E32env.PM
+
+Changed from static data to an active BEGIN{} section which tests the EPOCROOT
+environment variable and constructs the rest of the E32env::Data hash accordingly.
+
+EPOCROOT checking is:
+
+ - environment variable must exist
+ - EPOCROOT must begin with \
+ - EPOCROOT must specify an existing directory
+
+Most clients are expected to use $E32Env::Data{EPOCPath} as the raw "epoc32" directory.
+
+
+2. Path_MakeEAbs in PATHUTL.PM
+
+Variant of Path_MakeAbs.
+Path_MakeEAbs takes (EPOCPath, BasePath, ...) and makes the list of directories into 
+absolute paths relative to BasePath. The extra functionality is that paths beginning
+
+	+\...
+
+are treated as paths relative to EPOCPath rather than BasePath. 
+
+As a regression change, this change also extends to paths which begin \epoc32\, which 
+copes with the large number of existing absolute \epoc32 paths (e.g. SYSTEMINCLUDE 
+statements in MMP files). 
+
+Path_MakeEAbs is used in MMP.PM to handle SYSTEMINCLUDE, DEFFILE and USERINCLUDE
+statements, and in BLDMAKE.PL to handle PRJ_EXPORTS and PRJ_TESTEXPORTS.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/makmake.mdl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,2075 @@
+
+(object Petal
+    version    	37)
+
+(object Design "<Top Level>"
+    is_unit    	TRUE
+    is_loaded  	TRUE
+    defaults   	(object defaults
+	rightMargin 	0.250000
+	leftMargin 	0.250000
+	topMargin  	0.250000
+	bottomMargin 	0.500000
+	pageOverlap 	0.250000
+	clipIconLabels 	TRUE
+	autoResize 	FALSE
+	snapToGrid 	TRUE
+	gridX      	0
+	gridY      	0
+	defaultFont 	(object Font
+	    size       	12
+	    face       	"Arial"
+	    bold       	FALSE
+	    italics    	FALSE
+	    underline  	FALSE
+	    strike     	FALSE
+	    color      	0
+	    default_color 	TRUE)
+	showMessageNum 	3
+	showClassOfObject 	TRUE
+	notation   	"Booch")
+    root_category 	(object Class_Category "<Top Level>"
+	exportControl 	"Public"
+	global     	TRUE
+	subsystem  	"<Top Level>"
+	logical_models 	(list unit_reference_list
+	    (object Class "MAKMAKE"
+		statemachine 	(object State_Machine
+		    states     	(list States
+			(object State "$UNNAMED$0"
+			    type       	"EndState")
+			(object State "$UNNAMED$1"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Load PERL Platform Module"
+				    Event      	(object Event "Buil")
+				    sendEvent  	(object sendEvent)))
+			    type       	"StartState")
+			(object State "Call PMGetBldList"
+			    documentation 	"Returns array of build types"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartMakefile"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMStartMakefile"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMBld"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrjDoc"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"if not defined PMStartBldSPrjSrc"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"if not defined PMStartBldSPrjSrc"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"if defined PMStartBldSPrjSrc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartBld"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMBld"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Setup the next build"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartBldSPrjDoc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMBld"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMBldSPrjDoc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Read MMP file"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Open Makefile"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Setup Globals"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Setup Globals"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartMakefile"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMGetBldList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartBldSPrjSrcList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrjSrc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMSource"
+			    type       	"Normal")
+			(object State "Call PMBldSPrjDoc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndBldSPrjDoc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartMakefile"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"CallPMStartBldList"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMGetBldList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartBldSPrjList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrj"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMBldSPrj"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrjSrcList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndBldSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrjSrc"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMEndBldSPrjSrcList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndBldSPrjDoc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrjDoc"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMEndBldSPrjDocList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndBldSPrj"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrj"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMEndBldSPrjList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndBld"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBld"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMEndBldList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Load PERL Platform Module"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartPlatform"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartPlatform"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Read MMP file"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Open Makefile"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Setup Globals"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Write text to makefile"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "CallPMStartBldList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "if not defined PMStartBldSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrjList"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMEndBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "if defined PMStartBldSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrjList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartBldSPrj"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMBldSPrj"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartBldSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMBldSPrjSrc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMBldSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndBldSPrjSrc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndBldSPrjSrcList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrjDocList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndBldSPrjDocList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndBldSPrj"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartBldSPrjDocList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartBldSPrjDoc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndBldSPrjList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndBldList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"if not defined PMSPrjSrc"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"if not defined PMSPrjSrc"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"if defined PMSPrjSrc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "if not defined PMSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndMakefile"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "if defined PMSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartSPrjList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrj"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartSPrjSrcList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMSPrjSrcList"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjSrc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartSPrjDoc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjSrcList"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMSPrjDoc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMSPrjSrcList"
+			    type       	"Normal")
+			(object State "Call PMStartSPrjSrcBldList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjSrcBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjSrcBldList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMSPrjSrc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMSPrjSrcBldList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjSrcBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartSPrjSrcBld"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMSPrjSrcBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMSPrjSrcBld"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndSPrjSrcBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndSPrjSrcBld"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndSPrjSrcBldList"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjSrcBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndSPrjSrcBldList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"CallPMEndSPrjSrc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "CallPMEndSPrjSrc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"CallPMEndSPrjSrcList"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjSrc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "CallPMEndSPrjSrcList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjDocList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartSPrjDocList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjDoc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartSPrjDocBldList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjDocBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartSPrjDocBld"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMSPrjDocBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMSPrjDocBld"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndSPrjDocBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndSPrjDocBldList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndSPrjDoc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndSPrjDoc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndSPrjDocList"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjDoc"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndSPrjDocList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndSPrj"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndSPrj"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndSPrjList"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMStartSPrj"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndSPrjList"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndMakefile"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndMakefile"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndPlatform"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndPlatform"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Open Makefile"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMStartSPrj"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjDoc"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMSPrj"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMSPrjDoc"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjDocBldList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMSPrj"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjSrcList"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Call PMEndSPrjDocBld"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Call PMEndSPrjDocBldList"
+				    sendEvent  	(object sendEvent))
+				(object State_Transition
+				    supplier   	"Call PMStartSPrjDocBld"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Write text to makefile"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"Close Makefile"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")
+			(object State "Close Makefile"
+			    transitions 	(list transition_list
+				(object State_Transition
+				    supplier   	"$UNNAMED$0"
+				    sendEvent  	(object sendEvent)))
+			    type       	"Normal")))
+		statediagram 	(object State_Diagram ""
+		    title      	""
+		    zoom       	60
+		    max_height 	28350
+		    max_width  	21600
+		    origin_x   	0
+		    origin_y   	0
+		    items      	(list diagram_item_list
+			(object StateView "EndState" "$UNNAMED$0" @1
+			    location   	(322, 11086))
+			(object StateView "StartState" "$UNNAMED$1" @2
+			    location   	(112, 78))
+			(object StateView "Normal" "Call PMGetBldList" @3
+			    location   	(330, 1319)
+			    label      	(object ItemLabel
+				Parent_View 	@3
+				location   	(330, 1293)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	534
+				justify    	0
+				label      	"Call PMGetBldList")
+			    width      	546
+			    height     	142)
+			(object StateView "Normal" "Call PMBld" @4
+			    location   	(827, 2557)
+			    label      	(object ItemLabel
+				Parent_View 	@4
+				location   	(827, 2536)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	380
+				justify    	0
+				label      	"Call PMBld")
+			    width      	392
+			    height     	133)
+			(object StateView "Normal" "Call PMStartBld" @5
+			    location   	(328, 2281)
+			    label      	(object ItemLabel
+				Parent_View 	@5
+				location   	(328, 2239)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	496
+				justify    	0
+				label      	"Call PMStartBld")
+			    width      	508
+			    height     	175)
+			(object TransView "" @6
+			    client     	@5
+			    supplier   	@4
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartBldSPrjDoc" @7
+			    location   	(3957, 4721)
+			    label      	(object ItemLabel
+				Parent_View 	@7
+				location   	(3957, 4699)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	710
+				justify    	0
+				label      	"Call PMStartBldSPrjDoc")
+			    width      	722
+			    height     	134)
+			(object NoteView @8
+			    location   	(1187, 1929)
+			    label      	(object ItemLabel
+				Parent_View 	@8
+				location   	(759, 1818)
+				nlines     	3
+				max_width  	881
+				label      	
+|main::TargetDir $(path)\<build>
+|main::BuildDir $(path)\<build>
+|main::Build build
+				)
+			    width      	941
+			    height     	234)
+			(object StateView "Normal" "Read MMP file" @9
+			    location   	(346, 780)
+			    label      	(object ItemLabel
+				Parent_View 	@9
+				location   	(346, 757)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	507
+				justify    	0
+				label      	"Read MMP file")
+			    width      	519
+			    height     	137)
+			(object StateView "Normal" "Setup Globals" @10
+			    location   	(330, 1023)
+			    label      	(object ItemLabel
+				Parent_View 	@10
+				location   	(330, 1003)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	600
+				justify    	0
+				label      	"Setup Globals")
+			    width      	612
+			    height     	131)
+			(object NoteView @11
+			    location   	(2463, 908)
+			    label      	(object ItemLabel
+				Parent_View 	@11
+				location   	(1793, 56)
+				nlines     	27
+				max_width  	1365
+				label      	
+|main::Path_MakeToRoot	path from makefile to top directory
+|main::Project	project
+|main::PlainTarget	plaintarget . def-> mmp file - no ext.
+|main::TargetType	targettype. def-> "EXE"
+|main::Target	target. def-> plaintarget.targettype
+|main::UserIncludeList	user include list
+|main::SystemIncludeList	system include list
+|main::LibraryList	list of libraries
+|main::PlatformText  platform text block from mmp file
+|main::SubProject	null
+|main::Source	null
+|main::PlainSource	null
+|main::SourceDir	null
+|main::SourceList	list of all source files
+|main::PlainSourceList    list of all source files - no exts.
+|main::DependencyList    null
+|main::DocumentList	     list of all document files
+|main::Document	null
+|main::BuildList	null
+|main::Build	null
+|main::TargetDir	\epoc32\release\<platform>
+|main::BuildDir	\epoc32\build\project(?D)\<platform>
+|main::MacroList	current macrolist
+|main::AddMacro	list of added macros
+|main::RemoveMacro list of removed macros if successful
+|main::Output	1 if successful else die
+				)
+			    width      	1425
+			    height     	1716)
+			(object StateView "Normal" "Call PMStartBldSPrjSrcList" @12
+			    location   	(3004, 3681)
+			    label      	(object ItemLabel
+				Parent_View 	@12
+				location   	(3004, 3658)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	796
+				justify    	0
+				label      	"Call PMStartBldSPrjSrcList")
+			    width      	808
+			    height     	136)
+			(object StateView "Normal" "Call PMBldSPrjDoc" @13
+			    location   	(4572, 4914)
+			    label      	(object ItemLabel
+				Parent_View 	@13
+				location   	(4572, 4897)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	566
+				justify    	0
+				label      	"Call PMBldSPrjDoc")
+			    width      	578
+			    height     	124)
+			(object NoteView @14
+			    location   	(3268, 821)
+			    label      	(object ItemLabel
+				Parent_View 	@14
+				location   	(2906, 690)
+				nlines     	4
+				max_width  	748
+				label      	"All Main:: functions return default text or the null string If called prematurely.")
+			    width      	808
+			    height     	275)
+			(object AttachView "" @15
+			    client     	@11
+			    supplier   	@10
+			    line_style 	0)
+			(object AttachView "" @16
+			    client     	@8
+			    supplier   	@5
+			    line_style 	0)
+			(object NoteView @17
+			    location   	(1057, 1426)
+			    label      	(object ItemLabel
+				Parent_View 	@17
+				location   	(792, 1370)
+				nlines     	2
+				max_width  	555
+				label      	"main::BuildList buildlist")
+			    width      	615
+			    height     	125)
+			(object NoteView @18
+			    location   	(3749, 3450)
+			    label      	(object ItemLabel
+				Parent_View 	@18
+				location   	(3397, 3374)
+				nlines     	2
+				max_width  	729
+				label      	
+|main::Source	source
+|main::PlainSource	plainsource
+				)
+			    width      	789
+			    height     	164)
+			(object NoteView @19
+			    location   	(3787, 4544)
+			    label      	(object ItemLabel
+				Parent_View 	@19
+				location   	(3459, 4488)
+				nlines     	1
+				max_width  	680
+				label      	
+|main::Document	Document
+				)
+			    width      	740
+			    height     	124)
+			(object StateView "Normal" "Call PMStartBldSPrjList" @20
+			    location   	(1806, 3112)
+			    label      	(object ItemLabel
+				Parent_View 	@20
+				location   	(1806, 3091)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	696
+				justify    	0
+				label      	"Call PMStartBldSPrjList")
+			    width      	708
+			    height     	132)
+			(object StateView "Normal" "Call PMBldSPrj" @21
+			    location   	(3007, 3345)
+			    label      	(object ItemLabel
+				Parent_View 	@21
+				location   	(3007, 3315)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	463
+				justify    	0
+				label      	"Call PMBldSPrj")
+			    width      	475
+			    height     	150)
+			(object NoteView @22
+			    location   	(1669, 3467)
+			    label      	(object ItemLabel
+				Parent_View 	@22
+				location   	(1118, 3312)
+				nlines     	5
+				max_width  	1127
+				label      	
+|main::SubProject	 subproject
+|main::SourceDir	source directory
+|main::SourceList	subproj relative src list
+|main::PlainSourceList  subproj relative plain src list
+|main::DocumentList  subproj relative document list
+				)
+			    width      	1187
+			    height     	323)
+			(object TransView "" @23
+			    client     	@21
+			    supplier   	@12
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMEndBldSPrjSrc" @24
+			    location   	(3928, 4034)
+			    label      	(object ItemLabel
+				Parent_View 	@24
+				location   	(3928, 4011)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	668
+				justify    	0
+				label      	"Call PMEndBldSPrjSrc")
+			    width      	680
+			    height     	136)
+			(object StateView "Normal" "Call PMEndBldSPrjDoc" @25
+			    location   	(3957, 5117)
+			    label      	(object ItemLabel
+				Parent_View 	@25
+				location   	(3957, 5087)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	686
+				justify    	0
+				label      	"Call PMEndBldSPrjDoc")
+			    width      	698
+			    height     	150)
+			(object TransView "" @26
+			    client     	@13
+			    supplier   	@25
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMEndBldSPrj" @27
+			    location   	(2554, 5371)
+			    label      	(object ItemLabel
+				Parent_View 	@27
+				location   	(2554, 5349)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	566
+				justify    	0
+				label      	"Call PMEndBldSPrj")
+			    width      	578
+			    height     	134)
+			(object StateView "Normal" "Call PMEndBld" @28
+			    location   	(328, 5369)
+			    label      	(object ItemLabel
+				Parent_View 	@28
+				location   	(328, 5339)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	480
+				justify    	0
+				label      	"Call PMEndBld")
+			    width      	492
+			    height     	150)
+			(object StateView "Normal" "Load PERL Platform Module" @29
+			    location   	(338, 307)
+			    label      	(object ItemLabel
+				Parent_View 	@29
+				location   	(338, 264)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	665
+				justify    	0
+				label      	"Load PERL Platform Module")
+			    width      	677
+			    height     	177)
+			(object TransView "" @30
+			    client     	@2
+			    supplier   	@29
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object NoteView @31
+			    location   	(1192, 343)
+			    label      	(object ItemLabel
+				Parent_View 	@31
+				location   	(807, 271)
+				nlines     	2
+				max_width  	794
+				label      	
+|main::Platform	platform
+|main::ResetPlatform   newplatform
+				)
+			    width      	854
+			    height     	156)
+			(object StateView "Normal" "Call PMStartPlatform" @32
+			    location   	(341, 549)
+			    label      	(object ItemLabel
+				Parent_View 	@32
+				location   	(341, 527)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	618
+				justify    	0
+				label      	"Call PMStartPlatform")
+			    width      	630
+			    height     	134)
+			(object TransView "" @33
+			    client     	@29
+			    supplier   	@32
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @34
+			    client     	@32
+			    supplier   	@9
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartMakefile" @35
+			    location   	(328, 1631)
+			    label      	(object ItemLabel
+				Parent_View 	@35
+				location   	(328, 1597)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	616
+				justify    	0
+				label      	"Call PMStartMakefile")
+			    width      	628
+			    height     	158)
+			(object TransView "" @36
+			    client     	@3
+			    supplier   	@35
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @37
+			    client     	@10
+			    supplier   	@3
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "CallPMStartBldList" @38
+			    location   	(330, 2007)
+			    label      	(object ItemLabel
+				Parent_View 	@38
+				location   	(330, 1985)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	550
+				justify    	0
+				label      	"CallPMStartBldList")
+			    width      	562
+			    height     	134)
+			(object TransView "" @39
+			    client     	@35
+			    supplier   	@38
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @40
+			    client     	@38
+			    supplier   	@5
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "if not defined PMStartBldSPrjSrc" @41
+			    location   	(781, 2839)
+			    label      	(object ItemLabel
+				Parent_View 	@41
+				location   	(781, 2817)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	758
+				justify    	0
+				label      	"if not defined PMStartBldSPrjSrc")
+			    width      	770)
+			(object StateView "Normal" "if defined PMStartBldSPrjSrc" @42
+			    location   	(1815, 2845)
+			    label      	(object ItemLabel
+				Parent_View 	@42
+				location   	(1815, 2823)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	850
+				justify    	0
+				label      	"if defined PMStartBldSPrjSrc")
+			    width      	862
+			    height     	134)
+			(object TransView "" @43
+			    client     	@42
+			    supplier   	@20
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartBldSPrj" @44
+			    location   	(2557, 3110)
+			    label      	(object ItemLabel
+				Parent_View 	@44
+				location   	(2557, 3088)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	590
+				justify    	0
+				label      	"Call PMStartBldSPrj")
+			    width      	602
+			    height     	134)
+			(object TransView "" @45
+			    client     	@20
+			    supplier   	@44
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @46
+			    client     	@44
+			    supplier   	@21
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartBldSPrjSrc" @47
+			    location   	(3928, 3680)
+			    label      	(object ItemLabel
+				Parent_View 	@47
+				location   	(3928, 3652)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	692
+				justify    	0
+				label      	"Call PMStartBldSPrjSrc")
+			    width      	704
+			    height     	146)
+			(object TransView "" @48
+			    client     	@12
+			    supplier   	@47
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object AttachView "" @49
+			    client     	@18
+			    supplier   	@47
+			    line_style 	0)
+			(object NoteView @50
+			    location   	(5064, 3611)
+			    label      	(object ItemLabel
+				Parent_View 	@50
+				location   	(4622, 3544)
+				nlines     	2
+				max_width  	909
+				label      	"main::DependencyList dependency list")
+			    width      	969
+			    height     	146)
+			(object AttachView "" @51
+			    client     	@31
+			    supplier   	@32
+			    line_style 	0)
+			(object AttachView "" @52
+			    client     	@22
+			    supplier   	@44
+			    line_style 	0)
+			(object StateView "Normal" "Call PMBldSPrjSrc" @53
+			    location   	(4654, 3843)
+			    label      	(object ItemLabel
+				Parent_View 	@53
+				location   	(4654, 3821)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	722
+				justify    	0
+				label      	"Call PMBldSPrjSrc")
+			    width      	734
+			    height     	134)
+			(object TransView "" @54
+			    client     	@47
+			    supplier   	@53
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @55
+			    client     	@53
+			    supplier   	@24
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object AttachView "" @56
+			    client     	@50
+			    supplier   	@53
+			    line_style 	0)
+			(object StateView "Normal" "Call PMEndBldSPrjSrcList" @57
+			    location   	(3020, 4027)
+			    label      	(object ItemLabel
+				Parent_View 	@57
+				location   	(3020, 4005)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	772
+				justify    	0
+				label      	"Call PMEndBldSPrjSrcList")
+			    width      	784
+			    height     	134)
+			(object StateView "Normal" "Call PMEndBldSPrjDocList" @58
+			    location   	(3043, 5113)
+			    label      	(object ItemLabel
+				Parent_View 	@58
+				location   	(3043, 5092)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	790
+				justify    	0
+				label      	"Call PMEndBldSPrjDocList")
+			    width      	802
+			    height     	132)
+			(object StateView "Normal" "Call PMStartBldSPrjDocList" @59
+			    location   	(3019, 4719)
+			    label      	(object ItemLabel
+				Parent_View 	@59
+				location   	(3019, 4698)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	814
+				justify    	0
+				label      	"Call PMStartBldSPrjDocList")
+			    width      	826
+			    height     	132)
+			(object TransView "" @60
+			    client     	@57
+			    supplier   	@59
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @61
+			    client     	@59
+			    supplier   	@7
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @62
+			    client     	@7
+			    supplier   	@13
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMEndBldSPrjList" @63
+			    location   	(1733, 5368)
+			    label      	(object ItemLabel
+				Parent_View 	@63
+				location   	(1733, 5346)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	672
+				justify    	0
+				label      	"Call PMEndBldSPrjList")
+			    width      	684
+			    height     	134)
+			(object TransView "" @64
+			    client     	@63
+			    supplier   	@28
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @65
+			    client     	@41
+			    supplier   	@28
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object AttachView "" @66
+			    client     	@19
+			    supplier   	@7
+			    line_style 	0)
+			(object TransView "" @67
+			    client     	@4
+			    supplier   	@41
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @68
+			    client     	@4
+			    supplier   	@42
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object AttachView "" @69
+			    client     	@17
+			    supplier   	@35
+			    line_style 	0)
+			(object NoteView @70
+			    location   	(3775, 4284)
+			    label      	(object ItemLabel
+				Parent_View 	@70
+				location   	(3494, 4217)
+				nlines     	2
+				max_width  	586
+				label      	
+|main::Source	null
+|main::PlainSource	null
+				)
+			    width      	646
+			    height     	146)
+			(object AttachView "" @71
+			    client     	@57
+			    supplier   	@70
+			    line_style 	0)
+			(object NoteView @72
+			    location   	(3790, 5334)
+			    label      	(object ItemLabel
+				Parent_View 	@72
+				location   	(3556, 5278)
+				nlines     	1
+				max_width  	492
+				label      	"main::Document null")
+			    width      	552
+			    height     	125)
+			(object NoteView @73
+			    location   	(1651, 4969)
+			    label      	(object ItemLabel
+				Parent_View 	@73
+				location   	(1220, 4819)
+				nlines     	4
+				max_width  	887
+				label      	
+|main::SubProject	null
+|main::SourceDir	null
+|main::SourceList	all sources
+|main::PlainSourceList  all plain sources
+|main::DocumentList all documents
+				)
+			    width      	947
+			    height     	312)
+			(object AttachView "" @74
+			    client     	@73
+			    supplier   	@63
+			    line_style 	0)
+			(object StateView "Normal" "Call PMEndBldList" @75
+			    location   	(328, 5679)
+			    label      	(object ItemLabel
+				Parent_View 	@75
+				location   	(328, 5657)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	540
+				justify    	0
+				label      	"Call PMEndBldList")
+			    width      	552)
+			(object NoteView @76
+			    location   	(4883, 4113)
+			    label      	(object ItemLabel
+				Parent_View 	@76
+				location   	(4582, 4057)
+				nlines     	1
+				max_width  	627
+				label      	"main::DependencyList  null")
+			    width      	687
+			    height     	125)
+			(object AttachView "" @77
+			    client     	@24
+			    supplier   	@76
+			    line_style 	0)
+			(object NoteView @78
+			    location   	(1390, 5594)
+			    label      	(object ItemLabel
+				Parent_View 	@78
+				location   	(740, 5491)
+				nlines     	3
+				max_width  	1325
+				label      	
+|main::TargetDir	\EPOC32\RELEASE\<platform>
+|main::BuildDir	\EPOC32\BUILD\PROJECT\<platform>
+|main::Build	null
+				)
+			    width      	1385
+			    height     	219)
+			(object AttachView "" @79
+			    client     	@75
+			    supplier   	@78
+			    line_style 	0)
+			(object StateView "Normal" "if not defined PMSPrjSrc" @80
+			    location   	(328, 6002)
+			    label      	(object ItemLabel
+				Parent_View 	@80
+				location   	(328, 5974)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	571
+				justify    	0
+				label      	"if not defined PMSPrjSrc")
+			    width      	583
+			    height     	146)
+			(object TransView "" @81
+			    client     	@75
+			    supplier   	@80
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "if defined PMSPrjSrc" @82
+			    location   	(1107, 6001)
+			    label      	(object ItemLabel
+				Parent_View 	@82
+				location   	(1107, 5978)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	610
+				justify    	0
+				label      	"if defined PMSPrjSrc")
+			    width      	622
+			    height     	136)
+			(object TransView "" @83
+			    client     	@75
+			    supplier   	@82
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartSPrjList" @84
+			    location   	(1091, 6235)
+			    label      	(object ItemLabel
+				Parent_View 	@84
+				location   	(1091, 6212)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	598
+				justify    	0
+				label      	"Call PMStartSPrjList")
+			    width      	610
+			    height     	136)
+			(object TransView "" @85
+			    client     	@82
+			    supplier   	@84
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartSPrjSrcList" @86
+			    location   	(2416, 6646)
+			    label      	(object ItemLabel
+				Parent_View 	@86
+				location   	(2416, 6624)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	700
+				justify    	0
+				label      	"Call PMStartSPrjSrcList")
+			    width      	712
+			    height     	134)
+			(object StateView "Normal" "Call PMStartSPrjSrcBldList" @87
+			    location   	(3700, 7174)
+			    label      	(object ItemLabel
+				Parent_View 	@87
+				location   	(3700, 7151)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	796
+				justify    	0
+				label      	"Call PMStartSPrjSrcBldList")
+			    width      	808
+			    height     	136)
+			(object StateView "Normal" "Call PMSPrjSrc" @88
+			    location   	(3703, 6898)
+			    label      	(object ItemLabel
+				Parent_View 	@88
+				location   	(3703, 6875)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	478
+				justify    	0
+				label      	"Call PMSPrjSrc")
+			    width      	490
+			    height     	136)
+			(object StateView "Normal" "Call PMStartSPrjSrc" @89
+			    location   	(3248, 6642)
+			    label      	(object ItemLabel
+				Parent_View 	@89
+				location   	(3248, 6614)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	596
+				justify    	0
+				label      	"Call PMStartSPrjSrc")
+			    width      	608
+			    height     	146)
+			(object TransView "" @90
+			    client     	@89
+			    supplier   	@88
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @91
+			    client     	@88
+			    supplier   	@87
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartSPrjSrcBld" @92
+			    location   	(4636, 7193)
+			    label      	(object ItemLabel
+				Parent_View 	@92
+				location   	(4636, 7171)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	692
+				justify    	0
+				label      	"Call PMStartSPrjSrcBld")
+			    width      	704
+			    height     	134)
+			(object StateView "Normal" "Call PMSPrjSrcBld" @93
+			    location   	(5183, 7399)
+			    label      	(object ItemLabel
+				Parent_View 	@93
+				location   	(5183, 7376)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	550
+				justify    	0
+				label      	"Call PMSPrjSrcBld")
+			    width      	562
+			    height     	136)
+			(object StateView "Normal" "Call PMEndSPrjSrcBld" @94
+			    location   	(4636, 7605)
+			    label      	(object ItemLabel
+				Parent_View 	@94
+				location   	(4636, 7583)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	668
+				justify    	0
+				label      	"Call PMEndSPrjSrcBld")
+			    width      	680
+			    height     	134)
+			(object StateView "Normal" "Call PMEndSPrjSrcBldList" @95
+			    location   	(3775, 7598)
+			    label      	(object ItemLabel
+				Parent_View 	@95
+				location   	(3775, 7575)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	772
+				justify    	0
+				label      	"Call PMEndSPrjSrcBldList")
+			    width      	784
+			    height     	136)
+			(object StateView "Normal" "CallPMEndSPrjSrc" @96
+			    location   	(3248, 7855)
+			    label      	(object ItemLabel
+				Parent_View 	@96
+				location   	(3248, 7827)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	552
+				justify    	0
+				label      	"CallPMEndSPrjSrc")
+			    width      	564
+			    height     	146)
+			(object StateView "Normal" "CallPMEndSPrjSrcList" @97
+			    location   	(2445, 7848)
+			    label      	(object ItemLabel
+				Parent_View 	@97
+				location   	(2445, 7826)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	656
+				justify    	0
+				label      	"CallPMEndSPrjSrcList")
+			    width      	668
+			    height     	134)
+			(object TransView "" @98
+			    client     	@92
+			    supplier   	@93
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @99
+			    client     	@93
+			    supplier   	@94
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @100
+			    client     	@94
+			    supplier   	@95
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @101
+			    client     	@95
+			    supplier   	@96
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @102
+			    client     	@96
+			    supplier   	@97
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartSPrjDocList" @103
+			    location   	(2445, 8167)
+			    label      	(object ItemLabel
+				Parent_View 	@103
+				location   	(2445, 8144)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	718
+				justify    	0
+				label      	"Call PMStartSPrjDocList")
+			    width      	730
+			    height     	136)
+			(object TransView "" @104
+			    client     	@97
+			    supplier   	@103
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartSPrjDoc" @105
+			    location   	(3269, 8136)
+			    label      	(object ItemLabel
+				Parent_View 	@105
+				location   	(3269, 8114)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	614
+				justify    	0
+				label      	"Call PMStartSPrjDoc")
+			    width      	626
+			    height     	134)
+			(object TransView "" @106
+			    client     	@86
+			    supplier   	@89
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @107
+			    client     	@87
+			    supplier   	@92
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @108
+			    client     	@103
+			    supplier   	@105
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartSPrjDocBldList" @109
+			    location   	(3785, 8653)
+			    label      	(object ItemLabel
+				Parent_View 	@109
+				location   	(3785, 8631)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	814
+				justify    	0
+				label      	"Call PMStartSPrjDocBldList")
+			    width      	826
+			    height     	134)
+			(object StateView "Normal" "Call PMStartSPrjDocBld" @110
+			    location   	(4708, 8682)
+			    label      	(object ItemLabel
+				Parent_View 	@110
+				location   	(4708, 8659)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	710
+				justify    	0
+				label      	"Call PMStartSPrjDocBld")
+			    width      	722
+			    height     	136)
+			(object TransView "" @111
+			    client     	@109
+			    supplier   	@110
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMSPrjDocBld" @112
+			    location   	(5234, 8906)
+			    label      	(object ItemLabel
+				Parent_View 	@112
+				location   	(5234, 8884)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	566
+				justify    	0
+				label      	"Call PMSPrjDocBld")
+			    width      	578
+			    height     	134)
+			(object TransView "" @113
+			    client     	@110
+			    supplier   	@112
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMEndSPrjDocBldList" @114
+			    location   	(3816, 9060)
+			    label      	(object ItemLabel
+				Parent_View 	@114
+				location   	(3816, 9038)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	790
+				justify    	0
+				label      	"Call PMEndSPrjDocBldList")
+			    width      	802
+			    height     	134)
+			(object StateView "Normal" "Call PMEndSPrjDoc" @115
+			    location   	(3269, 9318)
+			    label      	(object ItemLabel
+				Parent_View 	@115
+				location   	(3269, 9295)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	590
+				justify    	0
+				label      	"Call PMEndSPrjDoc")
+			    width      	602
+			    height     	136)
+			(object TransView "" @116
+			    client     	@114
+			    supplier   	@115
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMEndSPrjDocList" @117
+			    location   	(2474, 9317)
+			    label      	(object ItemLabel
+				Parent_View 	@117
+				location   	(2474, 9294)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	694
+				justify    	0
+				label      	"Call PMEndSPrjDocList")
+			    width      	706
+			    height     	136)
+			(object TransView "" @118
+			    client     	@115
+			    supplier   	@117
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMEndSPrj" @119
+			    location   	(1778, 9305)
+			    label      	(object ItemLabel
+				Parent_View 	@119
+				location   	(1778, 9283)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	470
+				justify    	0
+				label      	"Call PMEndSPrj")
+			    width      	482
+			    height     	134)
+			(object TransView "" @120
+			    client     	@117
+			    supplier   	@119
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMEndSPrjList" @121
+			    location   	(1002, 9303)
+			    label      	(object ItemLabel
+				Parent_View 	@121
+				location   	(1002, 9286)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	574
+				justify    	0
+				label      	"Call PMEndSPrjList")
+			    width      	586
+			    height     	124)
+			(object TransView "" @122
+			    client     	@119
+			    supplier   	@121
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMEndMakefile" @123
+			    location   	(328, 9657)
+			    label      	(object ItemLabel
+				Parent_View 	@123
+				location   	(328, 9635)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	592
+				justify    	0
+				label      	"Call PMEndMakefile")
+			    width      	604
+			    height     	134)
+			(object StateView "Normal" "Call PMEndPlatform" @124
+			    location   	(328, 9933)
+			    label      	(object ItemLabel
+				Parent_View 	@124
+				location   	(328, 9911)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	594
+				justify    	0
+				label      	"Call PMEndPlatform")
+			    width      	606
+			    height     	134)
+			(object TransView "" @125
+			    client     	@121
+			    supplier   	@123
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @126
+			    client     	@123
+			    supplier   	@124
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @127
+			    client     	@58
+			    supplier   	@27
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @128
+			    client     	@25
+			    supplier   	@7
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @129
+			    client     	@25
+			    supplier   	@58
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @130
+			    client     	@24
+			    supplier   	@47
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @131
+			    client     	@24
+			    supplier   	@57
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMStartSPrj" @132
+			    location   	(1778, 6229)
+			    label      	(object ItemLabel
+				Parent_View 	@132
+				location   	(1778, 6207)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	494
+				justify    	0
+				label      	"Call PMStartSPrj")
+			    width      	506
+			    height     	134)
+			(object TransView "" @133
+			    client     	@84
+			    supplier   	@132
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMSPrjDoc" @134
+			    location   	(3786, 8418)
+			    label      	(object ItemLabel
+				Parent_View 	@134
+				location   	(3786, 8395)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	470
+				justify    	0
+				label      	"Call PMSPrjDoc")
+			    width      	482
+			    height     	136)
+			(object TransView "" @135
+			    client     	@105
+			    supplier   	@134
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @136
+			    client     	@134
+			    supplier   	@109
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @137
+			    client     	@119
+			    supplier   	@132
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMSPrj" @138
+			    location   	(2411, 6234)
+			    label      	(object ItemLabel
+				Parent_View 	@138
+				location   	(2411, 6212)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	352
+				justify    	0
+				label      	"Call PMSPrj")
+			    width      	364
+			    height     	134)
+			(object TransView "" @139
+			    client     	@132
+			    supplier   	@138
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @140
+			    client     	@138
+			    supplier   	@86
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @141
+			    client     	@94
+			    supplier   	@92
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @142
+			    client     	@96
+			    supplier   	@89
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Call PMEndSPrjDocBld" @143
+			    location   	(4708, 9093)
+			    label      	(object ItemLabel
+				Parent_View 	@143
+				location   	(4708, 9071)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	686
+				justify    	0
+				label      	"Call PMEndSPrjDocBld")
+			    width      	698
+			    height     	134)
+			(object TransView "" @144
+			    client     	@112
+			    supplier   	@143
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @145
+			    client     	@143
+			    supplier   	@114
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @146
+			    client     	@143
+			    supplier   	@110
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @147
+			    client     	@115
+			    supplier   	@105
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @148
+			    client     	@80
+			    supplier   	@123
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @149
+			    client     	@28
+			    supplier   	@5
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @150
+			    client     	@28
+			    supplier   	@75
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object NoteView @151
+			    location   	(2214, 5928)
+			    label      	(object ItemLabel
+				Parent_View 	@151
+				location   	(1663, 5773)
+				nlines     	5
+				max_width  	1127
+				label      	
+|main::SubProject	 subproject
+|main::SourceDir	source directory
+|main::SourceList	subproj relative src list
+|main::PlainSourceList  subproj relative plain src list
+|main::DocumentList  subproj relative document list
+				)
+			    width      	1187
+			    height     	323)
+			(object AttachView "" @152
+			    client     	@151
+			    supplier   	@132
+			    line_style 	0)
+			(object NoteView @153
+			    location   	(2790, 6885)
+			    label      	(object ItemLabel
+				Parent_View 	@153
+				location   	(2438, 6809)
+				nlines     	2
+				max_width  	729
+				label      	
+|main::Source	source
+|main::PlainSource	plainsource
+				)
+			    width      	789
+			    height     	164)
+			(object AttachView "" @154
+			    client     	@153
+			    supplier   	@89
+			    line_style 	0)
+			(object NoteView @155
+			    location   	(4281, 6696)
+			    label      	(object ItemLabel
+				Parent_View 	@155
+				location   	(3839, 6629)
+				nlines     	2
+				max_width  	909
+				label      	"main::DependencyList dependency list")
+			    width      	969
+			    height     	146)
+			(object AttachView "" @156
+			    client     	@155
+			    supplier   	@88
+			    line_style 	0)
+			(object NoteView @157
+			    location   	(5162, 6966)
+			    label      	(object ItemLabel
+				Parent_View 	@157
+				location   	(4734, 6855)
+				nlines     	3
+				max_width  	881
+				label      	
+|main::TargetDir $(path)\<build>
+|main::BuildDir $(path)\<build>
+|main::Build build
+				)
+			    width      	941
+			    height     	234)
+			(object AttachView "" @158
+			    client     	@157
+			    supplier   	@92
+			    line_style 	0)
+			(object NoteView @159
+			    location   	(5188, 8376)
+			    label      	(object ItemLabel
+				Parent_View 	@159
+				location   	(4760, 8265)
+				nlines     	3
+				max_width  	881
+				label      	
+|main::TargetDir $(path)\<build>
+|main::BuildDir $(path)\<build>
+|main::Build build
+				)
+			    width      	941
+			    height     	234)
+			(object AttachView "" @160
+			    client     	@159
+			    supplier   	@110
+			    line_style 	0)
+			(object NoteView @161
+			    location   	(4198, 8110)
+			    label      	(object ItemLabel
+				Parent_View 	@161
+				location   	(3897, 8054)
+				nlines     	1
+				max_width  	627
+				label      	"main::DependencyList  null")
+			    width      	687
+			    height     	125)
+			(object AttachView "" @162
+			    client     	@96
+			    supplier   	@161
+			    line_style 	0)
+			(object NoteView @163
+			    location   	(2826, 7562)
+			    label      	(object ItemLabel
+				Parent_View 	@163
+				location   	(2545, 7495)
+				nlines     	2
+				max_width  	586
+				label      	
+|main::Source	null
+|main::PlainSource	null
+				)
+			    width      	646
+			    height     	146)
+			(object AttachView "" @164
+			    client     	@163
+			    supplier   	@97
+			    line_style 	0)
+			(object NoteView @165
+			    location   	(2832, 9009)
+			    label      	(object ItemLabel
+				Parent_View 	@165
+				location   	(2598, 8953)
+				nlines     	1
+				max_width  	492
+				label      	"main::Document null")
+			    width      	552
+			    height     	125)
+			(object NoteView @166
+			    location   	(5157, 7883)
+			    label      	(object ItemLabel
+				Parent_View 	@166
+				location   	(4506, 7785)
+				nlines     	3
+				max_width  	1326
+				label      	
+|main::TargetDir	\EPOC32\RELEASE\<platform>
+|main::BuildDir	\EPOC32\BUILD\PROJECT\<platform>
+|main::Build	null
+				)
+			    width      	1386
+			    height     	208)
+			(object AttachView "" @167
+			    client     	@95
+			    supplier   	@166
+			    line_style 	0)
+			(object NoteView @168
+			    location   	(5125, 9414)
+			    label      	(object ItemLabel
+				Parent_View 	@168
+				location   	(4474, 9316)
+				nlines     	3
+				max_width  	1326
+				label      	
+|main::TargetDir	\EPOC32\RELEASE\<platform>
+|main::BuildDir	\EPOC32\BUILD\PROJECT\<platform>
+|main::Build	null
+				)
+			    width      	1386
+			    height     	208)
+			(object AttachView "" @169
+			    client     	@114
+			    supplier   	@168
+			    line_style 	0)
+			(object AttachView "" @170
+			    client     	@117
+			    supplier   	@165
+			    line_style 	0)
+			(object NoteView @171
+			    location   	(1907, 9751)
+			    label      	(object ItemLabel
+				Parent_View 	@171
+				location   	(1476, 9601)
+				nlines     	4
+				max_width  	887
+				label      	
+|main::SubProject	null
+|main::SourceDir	null
+|main::SourceList	all sources
+|main::PlainSourceList  all plain sources
+|main::DocumentList all documents
+				)
+			    width      	947
+			    height     	312)
+			(object AttachView "" @172
+			    client     	@121
+			    supplier   	@171
+			    line_style 	0)
+			(object NoteView @173
+			    location   	(2800, 8421)
+			    label      	(object ItemLabel
+				Parent_View 	@173
+				location   	(2472, 8365)
+				nlines     	1
+				max_width  	680
+				label      	
+|main::Document	Document
+				)
+			    width      	740
+			    height     	124)
+			(object AttachView "" @174
+			    client     	@105
+			    supplier   	@173
+			    line_style 	0)
+			(object AttachView "" @175
+			    client     	@58
+			    supplier   	@72
+			    line_style 	0)
+			(object TransView "" @176
+			    client     	@27
+			    supplier   	@44
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @177
+			    client     	@27
+			    supplier   	@63
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @178
+			    client     	@9
+			    supplier   	@10
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Open Makefile" @179
+			    location   	(333, 10240)
+			    label      	(object ItemLabel
+				Parent_View 	@179
+				location   	(333, 10218)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	519
+				justify    	0
+				label      	"Open Makefile")
+			    width      	531)
+			(object TransView "" @180
+			    client     	@124
+			    supplier   	@179
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object StateView "Normal" "Write text to makefile" @181
+			    location   	(333, 10545)
+			    label      	(object ItemLabel
+				Parent_View 	@181
+				location   	(333, 10518)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	519
+				justify    	0
+				label      	"Write text to makefile")
+			    width      	531
+			    height     	145)
+			(object StateView "Normal" "Close Makefile" @182
+			    location   	(323, 10816)
+			    label      	(object ItemLabel
+				Parent_View 	@182
+				location   	(323, 10794)
+				anchor_loc 	1
+				nlines     	1
+				max_width  	405
+				justify    	0
+				label      	"Close Makefile")
+			    width      	417)
+			(object TransView "" @183
+			    client     	@179
+			    supplier   	@181
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @184
+			    client     	@181
+			    supplier   	@182
+			    line_style 	0
+			    x_offset   	FALSE)
+			(object TransView "" @185
+			    client     	@182
+			    supplier   	@1
+			    line_style 	0
+			    x_offset   	FALSE)))))
+	logical_presentations 	(list unit_reference_list
+	    (object ClassDiagram "Main"
+		title      	"Main"
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	0
+		items      	(list diagram_item_list
+		    (object ClassView "Class" "MAKMAKE" @186
+			location   	(1569, 909)
+			label      	(object ItemLabel
+			    Parent_View 	@186
+			    location   	(1465, 825)
+			    nlines     	2
+			    max_width  	240
+			    justify    	0
+			    label      	"MAKMAKE"))))))
+    root_subsystem 	(object SubSystem "<Top Level>"
+	physical_models 	(list unit_reference_list)
+	physical_presentations 	(list unit_reference_list
+	    (object Module_Diagram "Main"
+		title      	"Main"
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	0
+		items      	(list diagram_item_list))))
+    process_structure 	(object Processes
+	ProcsNDevs 	(list
+	    (object Process_Diagram ""
+		title      	""
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	0
+		items      	(list diagram_item_list))))
+    properties 	(object Properties))
Binary file sbsv1/abld/doc/makmake.ppt has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/makmake.rtf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,485 @@
+{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f0\froman\fcharset0\fprq2 Tms Rmn{\*\falt Times New Roman};}{\f1\froman\fcharset2\fprq2 Symbol;}{\f2\fswiss\fcharset0\fprq2 Helv{\*\falt Arial};}{\f3\fmodern\fcharset0\fprq1 Courier;}
+{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f5\fswiss\fcharset0\fprq2 Arial{\*\falt  arial};}{\f6\froman\fcharset0\fprq2 MS Serif;}{\f7\fswiss\fcharset0\fprq2 MS Sans Serif;}{\f8\froman\fcharset0\fprq2 Times;}
+{\f9\fswiss\fcharset0\fprq2 Helvetica{\*\falt Arial};}{\f10\fswiss\fcharset0\fprq2 System;}{\f11\fmodern\fcharset0\fprq1 Courier New;}{\f12\froman\fcharset0\fprq2 New York;}{\f13\fswiss\fcharset0\fprq2 Geneva;}{\f14\fmodern\fcharset0\fprq1 LinePrinter;}
+{\f15\froman\fcharset0\fprq2 CG Times;}{\f16\fswiss\fcharset0\fprq2 Univers;}{\f17\fswiss\fcharset0\fprq2 Univers Condensed;}{\f18\fswiss\fcharset0\fprq2 Antique Olive;}{\f19\froman\fcharset0\fprq2 Garamond;}{\f20\fswiss\fcharset0\fprq2 CG Omega;}
+{\f21\fswiss\fcharset0\fprq2 Albertus Medium;}{\f22\fswiss\fcharset0\fprq2 Albertus Extra Bold;}{\f23\froman\fcharset0\fprq2 Clarendon Condensed;}{\f24\fscript\fcharset0\fprq2 Coronet;}{\f25\fmodern\fcharset0\fprq1 Letter Gothic;}
+{\f26\fscript\fcharset0\fprq2 Marigold;}{\f27\fnil\fcharset2\fprq2 Wingdings;}{\f28\fnil\fcharset2\fprq2 Marlett;}{\f29\fswiss\fcharset238\fprq2 Arial CE{\*\falt  arial};}{\f30\fswiss\fcharset204\fprq2 Arial CYR{\*\falt  arial};}
+{\f31\fswiss\fcharset161\fprq2 Arial Greek{\*\falt  arial};}{\f32\fswiss\fcharset162\fprq2 Arial TUR{\*\falt  arial};}{\f33\fmodern\fcharset238\fprq1 Courier New CE;}{\f34\fmodern\fcharset204\fprq1 Courier New CYR;}
+{\f35\fmodern\fcharset161\fprq1 Courier New Greek;}{\f36\fmodern\fcharset162\fprq1 Courier New TUR;}{\f37\fmodern\fcharset0\fprq1 Lucida Console;}{\f38\fswiss\fcharset0\fprq2 Lucida Sans Unicode;}{\f39\froman\fcharset238\fprq2 Times New Roman CE;}
+{\f40\froman\fcharset204\fprq2 Times New Roman CYR;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman TUR;}{\f43\froman\fcharset0\fprq2 Century Schoolbook;}{\f44\fswiss\fcharset0\fprq2 Arial Narrow;}
+{\f45\froman\fcharset0\fprq2 Map Symbols;}{\f46\fdecor\fcharset0\fprq2 Algerian;}{\f47\froman\fcharset0\fprq2 Footlight MT Light;}{\f48\froman\fcharset0\fprq2 Book Antiqua;}{\f49\fdecor\fcharset0\fprq2 Colonna MT;}
+{\f50\fnil\fcharset2\fprq2 Monotype Sorts;}{\f51\froman\fcharset2\fprq2 MT Extra;}{\f52\froman\fcharset0\fprq2 Bookman Old Style;}{\f53\fdecor\fcharset0\fprq2 Playbill;}{\f54\fscript\fcharset0\fprq2 Brush Script MT;}
+{\f55\fswiss\fcharset0\fprq2 Arial Rounded MT Bold;}{\f56\fswiss\fcharset0\fprq2 Haettenschweiler;}{\f57\fdecor\fcharset0\fprq2 Desdemona;}{\f58\fmodern\fcharset2\fprq1 MS LineDraw;}{\f59\froman\fcharset0\fprq2 Wide Latin;}
+{\f60\fswiss\fcharset0\fprq2 Century Gothic;}{\f61\fswiss\fcharset0\fprq2 Britannic Bold;}{\f62\fdecor\fcharset0\fprq2 Braggadocio;}{\f63\fscript\fcharset0\fprq2 Matura MT Script Capitals;}{\f64\fdecor\fcharset0\fprq2 Kino MT;}
+{\f65\fswiss\fcharset0\fprq2 Arial Black;}{\f66\fscript\fcharset0\fprq2 Comic Sans MS;}{\f67\fswiss\fcharset0\fprq2 Impact;}{\f68\fswiss\fcharset0\fprq2 Verdana;}{\f69\froman\fcharset2\fprq2 Webdings;}{\f70\fmodern\fcharset128\fprq1 MS Gothic;}
+{\f71\froman\fcharset255\fprq2 Roman;}{\f72\fscript\fcharset255\fprq2 Script;}{\f73\fmodern\fcharset255\fprq2 Modern;}{\f74\fswiss\fcharset0\fprq1 MS Dialog;}{\f75\fswiss\fcharset0\fprq2 Tahoma;}{\f76\froman\fcharset0\fprq2 Georgia;}
+{\f77\fmodern\fcharset0\fprq1 Andale Mono;}{\f78\fscript\fcharset0\fprq2 Monotype Corsiva;}{\f79\froman\fcharset0\fprq2 CG Times (W1){\*\falt Times New Roman};}{\f80\froman\fcharset0\fprq0 Bookman{\*\falt Bookman Old Style};}
+{\f81\fnil\fcharset0\fprq2 Prestige;}{\f82\fswiss\fcharset2\fprq2 Sign Language;}{\f83\fswiss\fcharset2\fprq2 Animals;}{\f84\fswiss\fcharset2\fprq2 Charting;}{\f85\fswiss\fcharset2\fprq2 Clocks;}{\f86\fswiss\fcharset2\fprq2 CommonBullets;}
+{\f87\fswiss\fcharset2\fprq2 HomePlanning;}{\f88\fswiss\fcharset2\fprq2 Kidnap;}{\f89\fswiss\fcharset2\fprq2 LandscapePlanning;}{\f90\fswiss\fcharset2\fprq2 HomePlanning2;}{\f91\fswiss\fcharset2\fprq2 MorseCode;}{\f92\fswiss\fcharset2\fprq2 Music;}
+{\f93\fswiss\fcharset2\fprq2 OfficePlanning;}{\f94\fswiss\fcharset2\fprq2 Semaphore;}{\f95\fswiss\fcharset2\fprq2 Signs;}{\f96\froman\fcharset2\fprq2 ZapfDingbats BT;}{\f97\froman\fcharset2\fprq2 SymbolProp BT;}{\f98\fswiss\fcharset0\fprq2 Futura Md BT;}
+{\f99\fswiss\fcharset0\fprq2 CopprplGoth BT;}{\f100\fscript\fcharset0\fprq2 ShelleyAllegro BT;}{\f101\fswiss\fcharset0\fprq2 Bedrock;}{\f102\fswiss\fcharset0\fprq2 Humanst521 BT;}{\f103\fscript\fcharset0\fprq2 Nuptial BT;}
+{\f104\fswiss\fcharset0\fprq2 Harpoon;}{\f105\fdecor\fcharset0\fprq2 Shotgun BT;}{\f106\fswiss\fcharset0\fprq2 Futura Bk BT;}{\f107\fswiss\fcharset0\fprq2 Amerigo BT;}{\f108\fswiss\fcharset0\fprq2 BankGothic Md BT;}
+{\f109\fdecor\fcharset0\fprq2 BernhardFashion BT;}{\f110\froman\fcharset0\fprq2 ChelthmITC Bk BT;}{\f111\fswiss\fcharset0\fprq2 CopprplGoth Hv BT;}{\f112\fswiss\fcharset0\fprq2 Futura XBlk BT;}{\f113\froman\fcharset0\fprq2 Galliard BT;}
+{\f114\froman\fcharset0\fprq2 GeoSlab703 Md BT;}{\f115\froman\fcharset0\fprq2 GeoSlab703 XBd BT;}{\f116\froman\fcharset0\fprq2 GeoSlab703 MdCn BT;}{\f117\fswiss\fcharset0\fprq2 Geometr231 Lt BT;}{\f118\fswiss\fcharset0\fprq2 Geometr231 BT;}
+{\f119\fswiss\fcharset0\fprq2 Geometr231 Hv BT;}{\f120\froman\fcharset0\fprq2 Souvenir Lt BT;}{\f121\fswiss\fcharset0\fprq2 ZapfHumnst BT;}{\f122\fswiss\fcharset0\fprq2 Dauphin;}{\f123\fswiss\fcharset2\fprq2 Czar;}
+{\f124\fscript\fcharset0\fprq2 Lydian Csv BT;}{\f125\fswiss\fcharset0\fprq2 AvantGarde Bk BT;}{\f126\fswiss\fcharset0\fprq2 AvantGarde Md BT;}{\f127\fnil\fcharset2\fprq2 Linedraw;}{\f128\fmodern\fcharset0\fprq1 Dixonms8;}
+{\f129\fmodern\fcharset2\fprq1 HPPCCOB;}{\f130\fmodern\fcharset2\fprq1 HPPCCOBB;}{\f131\fmodern\fcharset2\fprq1 HPPCCOBI;}{\f132\fmodern\fcharset2\fprq1 HPPCCOB2;}{\f133\fnil\fcharset2\fprq2 HPPCDIX;}{\f134\fnil\fcharset2\fprq2 HPPCDIXB;}
+{\f135\fnil\fcharset2\fprq2 HPPCDIXI;}{\f136\fnil\fcharset2\fprq2 HPPCDIX2;}{\f137\fnil\fcharset2\fprq2 HPPCDIX HO;}{\f138\fnil\fcharset2\fprq2 HPPCMAR;}{\f139\fnil\fcharset2\fprq2 HPPCMARB;}
+{\f140\fnil\fcharset2\fprq2 HPPCMARI{\*\falt Bookman Old Style};}{\f141\fnil\fcharset2\fprq2 HPPCMAR2;}{\f142\fnil\fcharset2\fprq2 Dixon-Tax;}{\f143\fnil\fcharset2\fprq2 Dixon-Tax10;}{\f144\fnil\fcharset2\fprq2 Dixon-Tax-BO;}
+{\f145\fnil\fcharset2\fprq2 Dixon-Tax-HO Ho;}{\f146\fmodern\fcharset255\fprq1 Terminal;}{\f147\fmodern\fcharset0\fprq1 Fixedsys;}{\f148\fswiss\fcharset0\fprq2 Small Fonts;}{\f149\fswiss\fcharset0\fprq2 MS Dialog Light;}
+{\f150\fswiss\fcharset0\fprq2 MS SystemEx;}{\f151\fswiss\fcharset0\fprq2 PalmSprings;}{\f152\fnil\fcharset0\fprq2 Microsoft Logo;}{\f153\fswiss\fcharset0\fprq2 Helvetica-Narrow;}{\f154\fswiss\fcharset0\fprq2 Univers (W1){\*\falt Arial};}
+{\f155\fswiss\fcharset0\fprq0  ;}{\f156\fnil\fcharset0\fprq0 B Helvetica Bold;}{\f157\fmodern\fcharset0\fprq1 Lucida Sans Typewriter;}{\f158\froman\fcharset0\fprq2 CG Times Bold;}{\f159\froman\fcharset0\fprq2 CG Times Italic;}
+{\f160\froman\fcharset0\fprq0 (normal text);}{\f161\froman\fcharset0\fprq0 f;}{\f162\froman\fcharset0\fprq2 MicrosoftLogo95;}{\f163\fnil\fcharset2\fprq2 MSIcons;}{\f164\fnil\fcharset0\fprq0 Swis721 BT;}{\f165\fmodern\fcharset0\fprq1 Roman 10cpi;}
+{\f166\fnil\fcharset0\fprq0 TmsRmn;}{\f167\froman\fcharset0\fprq2 Palatino{\*\falt Book Antiqua};}{\f168\froman\fcharset0\fprq2 Garamond Antiqua;}{\f169\fnil\fcharset0\fprq0 Courier (W1);}{\f170\fnil\fcharset0\fprq2 McGrawHill;}
+{\f171\fnil\fcharset2\fprq2 MS Reference 1;}{\f172\fnil\fcharset2\fprq2 MS Reference 2;}{\f173\fswiss\fcharset0\fprq2 Albertus (W1);}{\f174\fswiss\fcharset0\fprq2 Albertus Xb (W1);}{\f175\fswiss\fcharset0\fprq2 Antique Olv (W1);}
+{\f176\fscript\fcharset0\fprq2 Coronet (W1);}{\f177\fmodern\fcharset0\fprq1 Letter Gothic (W1);}{\f178\fswiss\fcharset0\fprq2 Univers Cd (W1);}{\f179\fswiss\fcharset0\fprq2 CG Omega (W1);}{\f180\froman\fcharset0\fprq2 Clarendon Cd (W1);}
+{\f181\froman\fcharset0\fprq2 Garmond (W1);}{\f182\fscript\fcharset0\fprq2 Marigold (W1);}{\f183\fswiss\fcharset0\fprq2 Ottawa;}{\f184\fswiss\fcharset2\fprq2 Wingdings (L$);}{\f185\fswiss\fcharset0\fprq2 Arial (W1);}
+{\f186\froman\fcharset2\fprq2 Symbol (AS);}{\f187\froman\fcharset0\fprq2 Times New (W1);}{\f188\froman\fcharset0\fprq0 co;}{\f189\fnil\fcharset2\fprq2 GraecaII;}{\f190\fnil\fcharset2\fprq2 HebraicaII;}{\f191\fnil\fcharset2\fprq2 LRS System 1;}
+{\f192\fnil\fcharset0\fprq2 LRS System 2;}{\f193\fnil\fcharset0\fprq2 LRS System 3;}{\f194\fnil\fcharset0\fprq2 LRS System 4;}{\f195\fnil\fcharset2\fprq2 SemiticaDict;}{\f196\fnil\fcharset2\fprq2 SILDoulosIPA;}
+{\f197\fnil\fcharset2\fprq2 SILManuscriptIPA;}{\f198\fnil\fcharset2\fprq2 SILSophiaIPA;}{\f199\fnil\fcharset2\fprq2 TransRomanAH;}{\f200\fnil\fcharset2\fprq2 TransRomanDict;}{\f201\fswiss\fcharset0\fprq2 Albertus Medium (PCL6);}
+{\f202\fswiss\fcharset0\fprq2 Albertus Extra Bold (PCL6);}{\f203\fswiss\fcharset0\fprq2 Arial (PCL6);}{\f204\fswiss\fcharset0\fprq2 ITC Avant Garde Gothic (PCL6);}{\f205\fswiss\fcharset0\fprq2 ITC Avant Garde Gothic Demi (PC;}
+{\f206\froman\fcharset0\fprq2 ITC Bookman Light (PCL6);}{\f207\froman\fcharset0\fprq2 ITC Bookman Demi (PCL6);}{\f208\fswiss\fcharset0\fprq2 CG Omega (PCL6);}{\f209\froman\fcharset0\fprq2 CG Times (PCL6);}
+{\f210\froman\fcharset0\fprq2 Clarendon Condensed (PCL6);}{\f211\fmodern\fcharset0\fprq1 Courier (PCL6);}{\f212\fmodern\fcharset0\fprq1 CourierPS (PCL6);}{\f213\fmodern\fcharset0\fprq1 Dark Courier (PCL6);}{\f214\froman\fcharset0\fprq2 Garamond (PCL6);}
+{\f215\fswiss\fcharset0\fprq2 Helvetica (PCL6);}{\f216\fswiss\fcharset0\fprq2 Helvetica Narrow (PCL6);}{\f217\fmodern\fcharset0\fprq1 Letter Gothic (PCL6);}{\f218\froman\fcharset0\fprq2 New Century Schoolbook (PCL6);}
+{\f219\fswiss\fcharset0\fprq2 Antique Olive (PCL6);}{\f220\froman\fcharset0\fprq2 Palatino (PCL6);}{\f221\froman\fcharset0\fprq2 Times (PCL6);}{\f222\froman\fcharset0\fprq2 Times New Roman (PCL6);}{\f223\fswiss\fcharset0\fprq2 Univers (PCL6);}
+{\f224\fswiss\fcharset0\fprq2 Univers Condensed (PCL6);}{\f225\fscript\fcharset0\fprq2 Coronet (PCL6);}{\f226\fscript\fcharset0\fprq2 Marigold (PCL6);}{\f227\froman\fcharset2\fprq2 Symbol (PCL6);}{\f228\froman\fcharset2\fprq2 SymbolPS (PCL6);}
+{\f229\fdecor\fcharset2\fprq2 Wingdings (PCL6);}{\f230\fscript\fcharset0\fprq2 ITC Zapf Chancery (PCL6);}{\f231\froman\fcharset0\fprq2 Onyx;}{\f232\froman\fcharset0\fprq2 Rockwell Light;}{\f233\fmodern\fcharset0\fprq0 elite;}
+{\f234\fswiss\fcharset0\fprq0 lettergothic;}{\f235\fmodern\fcharset0\fprq0 gothicPS;}{\f236\fmodern\fcharset0\fprq0 AvantGarde;}{\f237\fmodern\fcharset0\fprq0 metro;}{\f238\fmodern\fcharset0\fprq0 presentation;}{\f239\fmodern\fcharset0\fprq0 APL;}
+{\f240\fmodern\fcharset0\fprq0 OCRA;}{\f241\fmodern\fcharset0\fprq0 OCRB;}{\f242\froman\fcharset0\fprq0 emperorPS;}{\f243\froman\fcharset0\fprq0 madaleine;}{\f244\froman\fcharset0\fprq0 zapf humanist;}{\f245\froman\fcharset0\fprq0 classic;}
+{\f246\froman\fcharset0\fprq0 roman f;}{\f247\froman\fcharset0\fprq0 roman g;}{\f248\froman\fcharset0\fprq0 roman h;}{\f249\froman\fcharset0\fprq0 NewCenturySchlbk;}{\f250\froman\fcharset0\fprq0 souvenir;}{\f251\froman\fcharset0\fprq0 caledonia;}
+{\f252\froman\fcharset0\fprq0 bodini;}{\f253\froman\fcharset0\fprq0 university;}{\f254\fscript\fcharset0\fprq0 scriptPS;}{\f255\fscript\fcharset0\fprq0 script c;}{\f256\fscript\fcharset0\fprq0 script d;}{\f257\fscript\fcharset0\fprq0 commercial script;}
+{\f258\fscript\fcharset0\fprq0 park avenue;}{\f259\fscript\fcharset0\fprq0 script h;}{\f260\fscript\fcharset0\fprq0 greek;}{\f261\froman\fcharset0\fprq0 kana;}{\f262\froman\fcharset0\fprq0 hebrew;}{\f263\froman\fcharset0\fprq0 roman s;}
+{\f264\froman\fcharset0\fprq0 russian;}{\f265\froman\fcharset0\fprq0 roman u;}{\f266\froman\fcharset0\fprq0 roman v;}{\f267\froman\fcharset0\fprq0 roman w;}{\f268\fdecor\fcharset0\fprq0 narrator;}{\f269\fdecor\fcharset0\fprq0 emphasis;}
+{\f270\fdecor\fcharset0\fprq0 ZapfChancery;}{\f271\fdecor\fcharset0\fprq0 decor d;}{\f272\fdecor\fcharset0\fprq0 old english;}{\f273\fdecor\fcharset0\fprq0 decor f;}{\f274\fdecor\fcharset0\fprq0 decor g;}{\f275\fdecor\fcharset0\fprq0 cooper black;}
+{\f276\fnil\fcharset0\fprq0 math7;}{\f277\fnil\fcharset0\fprq0 math8;}{\f278\fdecor\fcharset0\fprq0 ZapfDingbats;}{\f279\fnil\fcharset0\fprq0 EAN;}{\f280\fnil\fcharset0\fprq0 pcline;}{\f281\fnil\fcharset0\fprq0 tech h;}{\f282\froman\fcharset0\fprq0 (;}
+{\f283\fnil\fcharset2\fprq2 MS Outlook;}{\f284\fswiss\fcharset2\fprq2 Bookshelf Symbol 1;}{\f285\fnil\fcharset2\fprq2 Bookshelf Symbol 2;}{\f286\froman\fcharset2\fprq2 Bookshelf Symbol 3;}{\f287\froman\fcharset2\fprq2 Wingdings 2;}
+{\f288\froman\fcharset2\fprq2 Wingdings 3;}{\f289\fswiss\fcharset0\fprq2 Abadi MT Condensed;}{\f290\froman\fcharset0\fprq2 Tiffany Hv BT;}{\f291\fmodern\fcharset134\fprq1 MS Song;}{\f292\froman\fcharset0\fprq2 Surin;}
+{\f293\froman\fcharset0\fprq2 Angsana New;}{\f294\fdecor\fcharset0\fprq2 DAVIC Logo_1;}{\f295\fswiss\fcharset0\fprq2 DAVIC Logo_2;}{\f296\fnil\fcharset0\fprq2 augie;}{\f297\fswiss\fcharset0\fprq2 Trebuchet MS;}
+{\f298\fswiss\fcharset0\fprq2 News Gothic MT;}{\f299\fnil\fcharset0\fprq2 Fraktur Plain;}{\f300\fnil\fcharset0\fprq2 Borzoi;}{\f301\fnil\fcharset0\fprq2 Borzoi Bold;}{\f302\fnil\fcharset0\fprq2 Borzoi Italic;}{\f303\fnil\fcharset0\fprq2 B Surfers;}
+{\f304\fswiss\fcharset0\fprq2 CAITLYN;}{\f305\fswiss\fcharset0\fprq2 Sage MT;}{\f306\froman\fcharset0\fprq2 Tarragon MT;}{\f307\froman\fcharset0\fprq2 GeoSlab703 Lt BT;}{\f308\froman\fcharset0\fprq2 NewTimes;}{\f309\fswiss\fcharset0\fprq2 SwissA;}
+{\f310\froman\fcharset0\fprq2 Dutch801 Rm BT;}{\f311\fnil\fcharset134\fprq2 SwissM;}{\f312\fmodern\fcharset0\fprq1 NewCourier;}{\f313\fmodern\fcharset0\fprq1 Monotype.com;}{\f314\fswiss\fcharset0\fprq2 MetaPlusBold-Roman;}
+{\f315\fswiss\fcharset0\fprq2 MetaPlusNormal-Roman;}{\f316\fswiss\fcharset0\fprq2 MetaPlusNormal-Italic;}{\f317\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f318\fswiss\fcharset186\fprq2 Arial Baltic{\*\falt  arial};}
+{\f319\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f320\fswiss\fcharset238\fprq2 Tahoma CE;}{\f321\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f322\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f323\fswiss\fcharset162\fprq2 Tahoma Tur;}
+{\f324\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f325\fmodern\fcharset238\fprq1 Lucida Console CE;}{\f326\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f327\fmodern\fcharset161\fprq1 Lucida Console Greek;}
+{\f328\fmodern\fcharset162\fprq1 Lucida Console Tur;}{\f329\froman\fcharset0\fprq2 Minion Web;}{\f330\froman\fcharset162\fprq0 Times New Roman Turkish;}{\f331\fswiss\fcharset162\fprq0 Arial Turkish;}{\f332\fmodern\fcharset162\fprq0 Courier New Turkish;}
+{\f333\froman\fcharset0\fprq2 LeedsBit EuroEast;}{\f334\froman\fcharset0\fprq2 LeedsBit EuroNorth;}{\f335\froman\fcharset0\fprq2 LeedsBit EuroSouth;}{\f336\fswiss\fcharset0\fprq2 LeedsBit EuroWest;}{\f337\froman\fcharset0\fprq2 LeedsBit ExtraChars1;}
+{\f338\fnil\fcharset0\fprq2 Cupola;}{\f339\froman\fcharset0\fprq2 Bookman SudEuro;}{\f340\fmodern\fcharset0\fprq1 Courier SudEuro;}{\f341\froman\fcharset0\fprq2 Garamond SudEuro;}{\f342\froman\fcharset0\fprq2 Times SudEuro;}
+{\f343\froman\fcharset0\fprq0 +            212  |;}{\f344\fswiss\fcharset0\fprq2 PegasusDialog;}{\f345\froman\fcharset238\fprq2 TIMES CE;}{\f346\froman\fcharset204\fprq2 TIMES Cyr;}{\f347\froman\fcharset161\fprq2 TIMES Greek;}
+{\f348\froman\fcharset162\fprq2 TIMES Tur;}{\f349\froman\fcharset186\fprq2 TIMES Baltic;}{\f350\fswiss\fcharset238\fprq2 HELVETICA CE;}{\f351\fswiss\fcharset204\fprq2 HELVETICA Cyr;}{\f352\fswiss\fcharset161\fprq2 HELVETICA Greek;}
+{\f353\fswiss\fcharset162\fprq2 HELVETICA Tur;}{\f354\fswiss\fcharset186\fprq2 HELVETICA Baltic;}{\f355\fswiss\fcharset238\fprq2 Lucida Sans Unicode CE;}{\f356\fswiss\fcharset204\fprq2 Lucida Sans Unicode Cyr;}
+{\f357\fswiss\fcharset161\fprq2 Lucida Sans Unicode Greek;}{\f358\fswiss\fcharset162\fprq2 Lucida Sans Unicode Tur;}{\f359\fswiss\fcharset238\fprq2 Verdana CE;}{\f360\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f361\fswiss\fcharset161\fprq2 Verdana Greek;}
+{\f362\fswiss\fcharset162\fprq2 Verdana Tur;}{\f363\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f364\froman\fcharset238\fprq2 Garamond CE;}{\f365\froman\fcharset204\fprq2 Garamond Cyr;}{\f366\froman\fcharset161\fprq2 Garamond Greek;}
+{\f367\froman\fcharset162\fprq2 Garamond Tur;}{\f368\froman\fcharset186\fprq2 Garamond Baltic;}{\f369\fswiss\fcharset238\fprq2 Arial Narrow CE{\*\falt Helvetica-Narrow};}{\f370\fswiss\fcharset204\fprq2 Arial Narrow Cyr{\*\falt Helvetica-Narrow};}
+{\f371\fswiss\fcharset161\fprq2 Arial Narrow Greek{\*\falt Helvetica-Narrow};}{\f372\fswiss\fcharset162\fprq2 Arial Narrow Tur{\*\falt Helvetica-Narrow};}{\f373\fswiss\fcharset186\fprq2 Arial Narrow Baltic{\*\falt Helvetica-Narrow};}
+{\f374\fswiss\fcharset238\fprq2 Arial Black CE;}{\f375\fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f376\fswiss\fcharset161\fprq2 Arial Black Greek;}{\f377\fswiss\fcharset162\fprq2 Arial Black Tur;}{\f378\fswiss\fcharset186\fprq2 Arial Black Baltic;}
+{\f379\froman\fcharset238\fprq2 Bookman Old Style CE;}{\f380\froman\fcharset204\fprq2 Bookman Old Style Cyr;}{\f381\froman\fcharset161\fprq2 Bookman Old Style Greek;}{\f382\froman\fcharset162\fprq2 Bookman Old Style Tur;}
+{\f383\froman\fcharset186\fprq2 Bookman Old Style Baltic;}{\f384\fswiss\fcharset238\fprq2 Impact CE;}{\f385\fswiss\fcharset204\fprq2 Impact Cyr;}{\f386\fswiss\fcharset161\fprq2 Impact Greek;}{\f387\fswiss\fcharset162\fprq2 Impact Tur;}
+{\f388\fswiss\fcharset186\fprq2 Impact Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
+\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20\lang2057 \snext0 Normal;}{
+\s1\sb360\sa240\keepn\pagebb\widctlpar \b\f5\fs40\lang2057\kerning28 \sbasedon0\snext0 heading 1;}{\s2\sb120\keepn\widctlpar\brdrt\brdrth\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs34\lang2057 \sbasedon0\snext0 heading 2;}{\s3\sb120\keepn\widctlpar\brdrt
+\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 \sbasedon0\snext0 heading 3;}{\s4\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5\lang2057 \sbasedon0\snext0 heading 4;}{\s5\keepn\widctlpar \b\f5\fs20\lang2057 \sbasedon0\snext0 
+heading 5;}{\s6\sb240\sa60\widctlpar \i\f5\fs20\lang2057 \sbasedon0\snext0 heading 6;}{\s7\sb240\sa60\widctlpar \f5\fs20\lang2057 \sbasedon0\snext0 heading 7;}{\s8\sb240\sa60\widctlpar \i\f5\fs20\lang2057 \sbasedon0\snext0 heading 8;}{
+\s9\sb240\sa60\widctlpar \i\f5\fs18\lang2057 \sbasedon0\snext0 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f37\fs16\lang2057 \sbasedon0\snext15 
+Code Paragraph;}{\*\cs16 \additive\f37\lang2057 \sbasedon10 Code;}{\*\cs17 \additive\i \sbasedon10 Emphasis;}{\*\cs18 \additive\b \sbasedon10 Warning;}{\s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 
+\sbasedon0\snext19 Indented Code;}{\s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvl11\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 \sbasedon21\snext20 List Bullet;}{\s21\fi-284\li851\ri567\widctlpar \f4\fs20\lang2057 
+\sbasedon0\snext21 List;}{\s22\li567\ri567\widctlpar \f4\fs20\lang2057 \sbasedon0\snext22 List Continue;}{\s23\fi-284\li568\ri567\widctlpar{\*\pn \pnlvl10\pndec\ulth\pnstart1\pnindent283\pnhang{\pntxta .}}\f4\fs20\lang2057 \sbasedon21\snext23 
+List Number;}{\s24\qc\widctlpar \f4\fs20\lang2057 \sbasedon0\snext24 Picture;}{\s25\qc\sb240\sa240\widctlpar \b\f5\fs72\lang2057 \sbasedon0\snext25 Title;}{\s26\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0 \f4\fs20\lang2057 
+\sbasedon0\snext26 Logo;}{\s27\sb1440\sa1200\sl-460\slmult0\widctlpar \b\scaps\f5\fs40\lang2057 \sbasedon0\snext27 Subtitle;}{\s28\sl-200\slmult0\widctlpar \b\f5\fs20\lang2057 \sbasedon0\snext28 Version;}{\s29\widctlpar \f4\fs20\lang2057 
+\sbasedon0\snext29 Date Published;}{\s30\widctlpar \b\f4\fs20\lang2057 \sbasedon0\snext30 Copyright Header;}{\s31\widctlpar \f4\fs20\lang2057 \sbasedon0\snext31 Copyright Notice;}{\s32\sa1440\sl-960\slmult0\keepn\widctlpar \b\scaps\f5\fs40\lang2057 
+\sbasedon0\snext32 TOC Header;}{\s33\sb480\sa160\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f4\fs20\lang2057 \sbasedon0\snext0 toc 1;}{\s34\li221\sb120\keepn\widctlpar\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext0 toc 2;}{
+\s35\li442\widctlpar\tqr\tx9072 \f5\fs20\lang2057 \sbasedon0\snext0 toc 3;}{\s36\li658\widctlpar\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext0 toc 4;}{\*\cs37 \additive\f5\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\widctlpar\brdrr\brdrdb\brdrw15\brsp20 
+\f37\fs20\lang2057 \sbasedon0\snext38 Constant Definition;}{\s39\widctlpar\tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 \sbasedon0\snext39 header;}{\s40\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext40 
+Even Footer Paragraph;}{\s41\widctlpar\tqc\tx4536\tqr\tx9072 \caps\f4\fs18\lang2057 \sbasedon0\snext41 Even Header Paragraph;}{\s42\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 \sbasedon39\snext42 footer;}{\*\cs43 
+\additive\b \sbasedon10 page number;}{\s44\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs20\lang2057 \sbasedon0\snext44 Odd Footer Paragraph;}{\s45\widctlpar\tqc\tx4536\tqr\tx9072 \caps\f4\fs18\lang2057 \sbasedon0\snext45 
+Odd Header Paragraph;}{\s46\widctlpar\brdrl\brdrth\brdrw30\brsp80 \f4\fs20\lang2057 \sbasedon0\snext46 Status;}{\*\cs47 \additive\i \sbasedon10 Glossary Reference;}{\s48\widctlpar \f4\fs20\lang2057 \sbasedon0\snext48 Compact;}{\*\cs49 \additive\f5 
+\sbasedon10 App Text;}{\s50\sb240\sa240\keepn\widctlpar \b\f5\fs40\lang2057\kerning28 \sbasedon1\snext50 Heading 1 NoSection;}{\*\cs51 \additive\f5 \sbasedon10 Filename;}{\s52\fi-284\li1135\ri1134\widctlpar{\*\pn \pnlvl11\pnf1\pnstart1\pnindent283\pnhang
+{\pntxtb \'b7}}\f4\fs20\lang2057 \sbasedon0\snext52 List Bullet 2;}{\*\cs53 \additive\b \sbasedon10 Glossary Definition;}{\*\cs54 \additive\i \sbasedon10 Document Name;}{
+\s55\keep\keepn\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f37\fs20\lang2057 \sbasedon0\snext0 Prototype;}{\*\cs56 \additive\scaps \sbasedon10 Key Name;}{
+\s57\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670 \f37\fs16\lang2057 \sbasedon0\snext57 Reduced Code;}{\s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 
+\sbasedon0\snext0 Syntax;}{\s59\qc\sb240\sa240\keepn\widctlpar \b\f5\fs20\lang2057 \sbasedon0\snext59 Picture Title;}{\s60\fi-3119\li3119\widctlpar\tx3119 \f4\fs20\lang2057 \sbasedon0\snext60 Member List;}{\*\cs61 \additive\i \sbasedon10 Syntax Element;}
+{\*\cs62 \additive\b\f37 \sbasedon10 Syntax Literal;}{\s63\widctlpar \f4\fs20\lang2057 \sbasedon0\snext63 annotation text;}{\*\cs64 \additive\b\f5\uld\cf11 \sbasedon10 Example Link;}{\s65\widctlpar \b\f5\fs36\lang2057 \sbasedon0\snext65 TOC 0;}{\*\cs66 
+\additive\f37\cf2\lang2057 \sbasedon16 Resource Code;}{\s67\widctlpar \f5\fs20\cf6\lang2057 \sbasedon0\snext67 Converter Directive;}{\s68\widctlpar \b\f37\fs20\uldb\lang2057 \sbasedon0\snext0 Platform Dependency;}{\*\cs69 \additive\b\cf10 \sbasedon10 
+Raw HTML;}{\*\cs70 \additive\i\cf14 \sbasedon10 URL Reference;}{\s71\widctlpar \f5\fs20\ul\cf13\lang2057 \sbasedon0\snext0 Hypertext Anchor;}{\s72\widctlpar\brdrr\brdrs\brdrw45\brsp20 \f4\fs20\lang2057 \sbasedon0\snext72 Member Definition;}{
+\s73\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 \sbasedon0\snext73 Figure Picture;}{\s74\widctlpar\brdrl\brdrth\brdrw30\brsp80 \f4\fs20\cf5\lang2057 \sbasedon46\snext74 Comment;}{
+\s75\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \b\f4\fs20\lang2057 \sbasedon0\snext75 Figure Caption;}{\s76\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 
+\sbasedon0\snext76 Figure Description;}{\s77\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\cf6\lang2057 \sbasedon73\snext77 Figure Status;}{\s78\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb
+\brdrs\brdrw15\brsp20 \f5\fs20\ul\cf13\lang2057 \sbasedon0\snext78 Figure Anchor;}{\*\cs79 \additive\f5\uld\cf12 \sbasedon37 Figure Link;}{\s80\li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \i\f4\fs20\cf10\lang2057 
+\sbasedon73\snext80 Figure Directive;}{\s81\widctlpar \f4\fs20\lang2057 \sbasedon0\snext81 Body Text;}{\*\cs82 \additive\f5\uld\cf9 \sbasedon37 Hypertext Link Text;}{\*\cs83 \additive\caps\f3\fs24\uld\cf2 \sbasedon10 Feature List;}{\*\cs84 \additive
+\caps\f3\fs24\uld\cf2 \sbasedon10 Feature Level;}}{\info{\title Tools}{\subject Specifying projects with makmake}{\author Preferred Customer}{\operator Preferred Customer}{\creatim\yr1996\mo3\dy6\hr13\min48}{\revtim\yr2000\mo3\dy15\hr11\min26}
+{\printim\yr1999\mo9\dy2\hr16\min51}{\version2}{\edmins3}{\nofpages11}{\nofwords5150}{\nofchars29356}{\*\company Symbian Ltd}{\vern57395}}\paperw11907\paperh16840\margl851\margr851\margt1134\margb1134\gutter1134 
+\widowctrl\ftnbj\aenddoc\linkstyles\hyphcaps0\formshade \fet0\sectd \binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere {\header \pard\plain \s39\widctlpar\tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 {\field{\*\fldinst  TITLE  \\
+* MERGEFORMAT }{\fldrslt Tools}}\tab Company Confidential\tab EON SDK, Copyright \'a9 1996, Symbian Ltd
+\par }{\footer \pard\plain \s42\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072 \f4\fs18\lang2057 {\field{\*\fldinst  SUBJECT  \\* MERGEFORMAT }{\fldrslt Specifying projects with makmake}}\tab Page {\field{\*\fldinst  PAGE  \\* MERGEFORMAT 
+}{\fldrslt {\lang1024 4}}}\tab Last saved {\field{\*\fldinst  SAVEDATE  \\* MERGEFORMAT }{\fldrslt {\lang1024 25/02/00 12:37}}}
+\par }{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
+\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
+{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s1\sb360\sa240\keepn\pagebb\widctlpar \b\f5\fs40\lang2057\kerning28 {\field\flddirty{\*\fldinst  SUBJECT  \\* MERGEFORMAT }{\fldrslt 
+Specifying projects with makmake}}
+\par \pard\plain \s71\widctlpar \f5\fs20\ul\cf13\lang2057 tools.makmake
+\par \pard\plain \s67\widctlpar \f5\fs20\cf6\lang2057 doclevel v6
+\par \pard\plain \s74\widctlpar\brdrl\brdrth\brdrw30\brsp80 \f4\fs20\cf5\lang2057 this chapter documents {\cs51\f5 makmake} to e32toolp release 210 level.
+\par \pard\plain \s2\sb120\keepn\widctlpar\brdrt\brdrth\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs34\lang2057 Overview
+\par \pard\plain \widctlpar \f4\fs20\lang2057 EPOC projects are defined by an {\cs51\f5 .mmp} file which specifies the essential components of the project. The {\cs51\f5 makmake}
+ tool is used to build makefiles for use in various environments. These makefiles are then used for project development. Some makefiles are built for use in building the project from the command-line, while others are for use with the MSVC++ IDE. For inst
+ance, starting with {\cs51\f5 euhello.mmp}, you can do:
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 makmake euhello wins
+\par \pard\plain \widctlpar \f4\fs20\lang2057 to build the makefile file {\cs51\f5 euhello.wins}.
+\par You can now run:
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 nmake -f euhello.wins
+\par \pard\plain \widctlpar \f4\fs20\lang2057 to build the project from the command line.
+\par To build the {\cs51\f5 .dsp} and {\cs51\f5 .dsw} files, designed for the Microsoft Developer Studio (Visual C++ 6.0), you can do:
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 makmake euhello vc6
+\par \pard\plain \widctlpar \f4\fs20\lang2057 For the ARM environment, you can do:
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 makmake euhello armi\line nmake -f euhello.armi
+\par \pard\plain \widctlpar \f4\fs20\lang2057 to build the project from the command line (there is no IDE for ARM).
+\par A command line makefile produced by {\cs51\f5 makmake} allows the executable (an {\cs51\f5 .exe} or any type of DLL) to be produced in one of two variants:
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}\pard\plain \s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvlblt\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 {\cs51\f5 udeb} - wide (UNICODE), debug mode
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}{\cs51\f5 urel} - wide (UNICODE), release mode
+\par \pard\plain \widctlpar \f4\fs20\lang2057 which may be selected by specifying the variant as a target. For instance, to build the {\cs51\f5 udeb} variant of the executable, you can do:
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 nmake -f euhello.armi udeb
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The default for ARM is wide, release mode; the default for WINS and WINC is wide, debug mode. These default targets will be built if {\cs51\f5 nmake} is invoked with no target is specified.
+\par If you build the executable using the MSVC++ IDE makefile, you may also need to run tools such as the bitmap and application information compilers, to build other aspects of the project. Command line makefiles will invoke these tools for you.
+\par On the {\cs51\f5 makmake} command line, you may use path specifications to locate the {\cs51\f5 .mmp} file in any directory, eg
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 makmake ..\\..\\epoc32ex\\e32\\euhello armi
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The generated {\cs51\f5 .dsw} and {\cs51\f5 .dsp} files are, however, always written into the current directory.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Invocation syntax
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs62\b\f37 makmake} [ {\cs61\i options} ] [{\cs61\i source-path}]{\cs61\i project} {\cs61\i platform}
+\par {\cs61\i platform}{\cs61  :\line \tab }{\cs62\b\f37 wins}{\cs61  | }{\cs62\b\f37 winc}{\cs61  | }{\cs62\b\f37 armi}{\cs61  | }{\cs62\b\f37 arm4}{\cs61  | }{\cs62\b\f37 thumb}{\cs61  | }{\cs62\b\f37 vc6}{\cs61  | }{\cs62\b\f37 vc6winc}{\cs61   | }{
+\cs62\b\f37 tools}{\cs61  | }{\cs62\b\f37 vc6tools}{\cs61  
+\par 
+\par }{\cs61\i options} :\line \tab {\cs62\b\f37 -d\line }\tab {\cs62\b\f37 -v\line }\tab {\cs62\b\f37 -mmp\line \tab -plat
+\par }\pard\plain \widctlpar \f4\fs20\lang2057 
+\par where
+\par \trowd \trgaph108\trleft-108 \cellx2268\cellx9179 \pard \widctlpar\intbl {\cs61\i project}\cell is the project to be specified\cell \pard \widctlpar\intbl \row \trowd \trgaph108\trleft-108 \cellx2268\cellx9179 \pard \widctlpar\intbl {\cs61\i source-path
+\cell }specifies the path of the source {\cs51\f5 .mmp} file, relative to the current directory.
+\par If omitted, the source {\cs51\f5 .mmp} file is {\cs61\i project}{\cs51\f5 .mmp} in the current directory.
+\par Whether or not the {\cs61\i source-path} is specified, the generated makefile is always written in the current directory.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs61\i Platform}\cell is the target platform\cell \pard \widctlpar\intbl 
+\row \pard \widctlpar\intbl {\cs62\b\f37 -d\cell }indicates that the makefile is to be created in directory {\cs51\f5 \\EPOC32\\Build\\}{\cs51\i\f5 path_to_mmp_file\\mmp_basename\\}{\cs61\i platform} rather than the directory in which {\cs51\f5 makmake}
+ was invoked. Note that relative paths within the created makefile will be relative to the directory in which {\cs51\f5 makmake} was invoked so {\cs51\f5 nmake} should be invoked from that directory too if the project is to build correctly.\cell \pard 
+\widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 -v}{\cs61\i \cell }indicates verbose operation
+\par When this flag is specified, {\cs51\f5 makmake} prints many progress messages.  The default is to give error messages only.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 -mmp
+\par \cell }Provides basic syntax guide to writing {\cs51\f5 .mmp} files instead of making the makefile.\cell \pard \widctlpar\intbl \row \trowd \trgaph108\trleft-108 \cellx2268\cellx9179 \pard \widctlpar\intbl {\cs62\b\f37 -plat }{\cs61\i platform}{
+\cs62\b\f37 
+\par \cell }Provides syntax guide to writing platform-specific sections of {\cs51\f5 .mmp} files, and information about which macros are defined for preprocessing the {\cs51\f5 .mmp} files.\cell \pard \widctlpar\intbl \row \pard \widctlpar 
+\par Normally, {\cs51\f5 makmake} generates a makefile whose extension depends on the platform:
+\par {\pntext\pard\plain\cs51\f1\fs20\lang2057 \'b7\tab}\pard\plain \s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvlblt\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 for {\cs62\b\f37 wins}, the extension is {\cs51\f5 .wins}{\cs51 
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}}for {\cs62\b\f37 winc}, the extension is {\cs51\f5 .winc}
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}for {\cs62\b\f37 armi}, the extension is {\cs51\f5 .armi}
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}for {\cs62\b\f37 vc6} and {\cs62\b\f37 vc6winc}, the extension is {\cs51\f5 .dsp}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Generally, the makefile extension is the platform name preceded by a dot.
+\par Projects can be built for ARM platform in three flavours, ARMI, ARM4 and THUMB.  These three flavours are termed \ldblquote Application Binary Interfaces\rdblquote 
+, or ABIs for short.  ARMI is the ARM interworking ABI, ARM4 is the plain ARM ABI and THUMB is the ARM thumb ABI.  Projects built for ARMI
+ can work with projects built in any of the three ABIs, while projects built for ARM4 and THUMB can only work with projects built for the same ABI or ARMI.  Projects built for THUMB use a different mode of ARM4 processing, where the processor handles inst
+ructions of 16 bits rather than 32 bits in length from a separate instruction set.
+\par \pard\plain \s74\widctlpar\brdrl\brdrth\brdrw30\brsp80 \f4\fs20\cf5\lang2057 really all this needs to be explained in more detail somewhere else - and a link to that section introduced here.
+\par \pard\plain \s2\sb120\keepn\widctlpar\brdrt\brdrth\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs34\lang2057 Structure of project definition files
+\par \pard\plain \widctlpar \f4\fs20\lang2057 A {\cs51\f5 makmake} project definition file has extension {\cs51\f5 .mmp} and has the form
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i wholefile} :\line \tab {\cs61\i statement-list}
+\par {\cs61\i statement} :\line |\tab {\cs61\i aif-stmt}\line |\tab {\cs61\i asspabi-stmt}\line |\tab {\cs61\i asspexports-stmt}\line |\tab {\cs61\i assplibrary-stmt}\line |\tab {\cs61\i bitmap-section}\line |\tab {\cs61\i deffile-stmt}\line |\tab {\i document
+}{\cs61\i -stmt}\line |\tab {\i epocalldllentrypoints}{\cs61\i -stmt}\line |\tab {\i epocheapsize}{\cs61\i -stmt}\line |\tab {\i epocprocesspriority}{\cs61\i -stmt}\line |\tab {\i epocstacksize}{\cs61\i -stmt}\line |\tab {\i exportunfrozen}\line |\tab {
+\cs61\i lang-stmt}\line |\tab {\cs61\i library-stmt}\line |\tab {\cs61\i linkas-stmt}\line |\tab {\cs61\i macro-stmt}\line |\tab {\cs61\i nostrictdef-stmt}\line |\tab {\cs61\i resource-stmt}\line |\tab {\cs61\i source-stmt}\line |\tab {\cs61\i 
+sourcepath-stmt}\line |\tab {\cs61\i staticlibrary-stmt}\line |\tab {\cs61\i strictdepend-stmt}\line |\tab {\cs61\i systeminclude-stmt}\line |\tab {\cs61\i systemresource-stmt}\line |\tab {\cs61\i target-stmt}\line |\tab {\cs61\i target-path-stmt}\line |
+\tab {\cs61\i target-type-stmt}\line {\cs61 |}{\cs61\i \tab uid-stmt}\line |\tab {\cs61\i userinclude-stmt}\line |\tab {\cs61\i platform-specific-section}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Each statement occupies a single line.
+\par {\b Note:} a trailing backslash is used to indicate a line continuation.  Therefore, specify directories without their trailing backslash, eg {\cs49\f5 systeminclude \\epoc32\\include}, rather than {\cs49\f5 systeminclude \\epoc32\\include\\}.
+\par Use the C++ style comment syntax for comments. 
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying the target
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 target} statement to specify the file generated by the project.
+\par Use the {\cs62\b\f37 targettype} statement to specify the kind of project:
+\par Use the {\cs62\b\f37 targetpath} statement to specify where the project should be released.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i target-stmt} :\line \tab {\cs62\b\f37 target} {\cs61\i filename}{\cs62\b\f37 .}{\cs61\i ext}
+\par {\cs61\i targettype-stmt} :\line \tab {\cs62\b\f37 targettype} {\cs61\i target-type}
+\par {\cs61\i target-type} :\line \tab {\cs62\b\f37 app} | {\cs62\b\f37 dll} |{\cs62\b\f37  exe} | {\cs62\b\f37 exedll }| {\cs62\b\f37 fsy }| {\cs62\b\f37 ldd }| {\cs62\b\f37 pdd }| {\cs62\b\f37 epocexe }| {\cs62\b\f37 lib }| {\cs62\b\f37 ani }| {\cs62\b\f37 
+ctl }| {\cs62\b\f37 fep }| {\cs62\b\f37 mda }| {\cs62\b\f37 mdl }| {\cs62\b\f37 opx }| {\cs62\b\f37 pdl }| {\cs62\b\f37 rdl}
+\par {\cs61\i target-path-stmt} :\line \tab {\cs62\b\f37 targetpath} {\cs61\i target-path}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 For the target, specify only the filename with its extension.  The path for the released target will be chosen depending on the platform, variant, and release path:
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}\pard\plain \s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvlblt\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 
+for non-Win32 platforms, or for Win32 platforms when no release path is specified, the target will be released to {\cs51\f5 \\epoc32\\release\\}{\cs61\i platform}{\cs51\f5 \\}{\cs61\i variant}{\cs51\f5 \\}
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}for Win32 platforms, when a target path is specified, that path will be interpreted as a location on the {\cs51\f5 z:} drive, and the release path will therefore be {\cs51\f5 \\epoc32\\release\\}{\cs61\i 
+platform}{\cs51\f5 \\}{\cs61\i variant}{\cs51\f5 \\z\\}{\cs61\i target-path}{\cs51\f5 \\}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 {\cs51\f5 makmake} supports the following target types:
+\par \trowd \trgaph108\trleft-108 \cellx993\cellx6309 \pard \widctlpar\intbl {\cs62\b\f37 exe}\cell an executable program. 
+\par For an example, see {\cs37\f5\uld\cf11 introbld.exe-example.mmp}.\cell \pard \widctlpar\intbl \row \trowd \trgaph108\trleft-108 \cellx993\cellx6309 \pard \widctlpar\intbl {\cs62\b\f37 dll}\cell a DLL\~\emdash 
+ either a shared library, or a polymorphic interface. 
+\par For an example, see {\cs37\f5\uld\cf11 introbld.dll}.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 app\cell }an EIKON application\~\emdash  linked with the {\cs16\f37 NewApplication()}
+ function exported as ordinal 1. For an example, see {\cs37\f5\uld\cf11 introbld.eikon-example}.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 exedll}\cell an executable program for a multi-process platform, a DLL\~
+for a single-process platform.  
+\par For an example, see {\cs37\f5\uld\cf11 introbld.eikon-exedll}.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 ldd}\cell a logical device driver.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 pdd}\cell 
+a physical device driver.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 Epocexe}\cell 
+an EPOC executable that can be launched from the shell.  This is an executable program which exports no functions under a multi-process platform and a DLL which is linked with the {\f37 TInt WinsMain()}
+ function exported as ordinal 1 under a single-process platform.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 lib}\cell a static library.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 ani}\cell 
+an animation DLL.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 ctl}\cell a system control.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 fep}\cell a front-end processor.\cell \pard \widctlpar\intbl \row 
+\pard \widctlpar\intbl {\cs62\b\f37 mda}\cell a media-server plug-in DLL.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 mdl}\cell a mime recognizer.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 opx}\cell 
+an OPL extension.\cell \pard \widctlpar\intbl \row \pard \widctlpar\intbl {\cs62\b\f37 pdl}\cell a printer driver.\cell \pard \widctlpar\intbl \row \trowd \trgaph108\trleft-108 \cellx993\cellx6309 \pard \widctlpar\intbl {\cs62\b\f37 rdl}\cell 
+a recognizer.\cell \pard \widctlpar\intbl \row \pard\plain \s3\fi-9072\li9072\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying UIDs
+\par \pard\plain \s71\widctlpar \f5\fs20\ul\cf13\lang2057 tools.makmake.uids
+\par \pard\plain \s21\fi-284\li851\ri567\widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 uid} statement to specify the UIDs for a project.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i uid-stmt} :\line \tab {\cs62\b\f37 uid} {\cs61\i uid2} [{\cs61\i uid3} ]
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Each executable has three UIDs. The first is dictated by the target type of the project (whether a {\cs51\f5 .exe} or DLL). The second and third are optional. You specify only the second and, optio
+nally, the third UID with the {\cs61\i uid-stmt}.
+\par Under WINS, a separate source file is created with the generated makefile containing code to incorporate UIDs into the executable. The name of this file is created by taking the basename of the executable and adding the extension {\cs51\f5 .uid.cpp}
+. UIDs may be specified in either hex or decimal.
+\par The {\cs61\i uid-stmt} applies exclusively to UNICODE builds of source now that NARROW builds are no longer supported by Makmake.
+\par See also {\cs37\f5\uld\cf11 introbld.uids} in Programming EPOC\~ | \~The Build Environment.
+\par \pard\plain \s4\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5\lang2057 Static interface DLLs
+\par \pard\plain \widctlpar \f4\fs20\lang2057 A static interface DLL represents an interface which is defined to its clients by one or more headers for use at compile time, and an import library ({\cs51\f5 .lib}
+) for use at link time.  Then, when a client executable is loaded at run-time, the loader notes that it requires the static interface DLL to be available.  The loader either loads the DLL or, if it is loaded already, attaches the new client to it.
+\par Conventionally, the DLL is identified by name only.  In EPOC, all static interface DLLs must have a {\cs61\i uid2} of {\cs16\f37 0x1000008d}.  The particular static interface DLL is then identified by name {\i and by }{\cs61\i uid3}.  If a DLL called {
+\cs51\f5 bossview.dll} is built with {\cs61\i uid3}={\cs16\f37 0x10000252}, then the name used in the import library for non-Win32 builds of EPOC is {\cs51\f5 bossview[10000252]}.  The EPOC loader loads the {\cs51\f5 bossview.dll}
+, and checks that its UID is {\cs16\f37 0x10000252}.  If the {\cs61\i uid3} in the DLL does not match, then the load fails.
+\par \pard\plain \s4\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5\lang2057 Polymorphic DLLs
+\par \pard\plain \widctlpar \f4\fs20\lang2057 A polymorphic DLL represents an interface defined with a gate function and an abstract class with at least one virtual function.  The polymorphic DLL exports the gate function at ordinal 1, which ty
+pically constructs a concrete class derived from the abstract interface.  The virtual function is then called, and the functions of the class are available.  Examples of polymorphic DLLs in EPOC include device drivers, EIKON application programs, and many
+ more.
+\par Each type of interface should specify its own UID, which is used as {\cs61\i uid2} for the polymorphic DLL.  The function responsible for loading a polymorphic DLL (for example, the EIKON {\cs51\f5 apprun}
+ program, or the E32 kernel) should check that its {\cs61\i uid2} corresponds with the expected interface type.
+\par For polymorphic DLLs, the interpretation of {\cs61\i uid3} depends on the interface type.  {\cs61\i uid3} may not be required by all interfaces.  The application architecture mandates that {\cs61\i uid3} identify the particular application: the {\cs61\i 
+uid3} is used to relate an application program to its document files.
+\par Since polymorphic DLLs do not produce an import library ({\cs51\f5 .lib}), the name mangling scheme used by static interface libraries is not used by polymorphic DLLs.
+\par \pard\plain \s4\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5\lang2057 UIDs and Win32
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The makefiles automa
+tically generate UIDs for ARM executables, as part of the executable format.  For Win32 executables, this is not directly possible.  The source for such executables must contain the UIDs, and they must match with the UIDs specified in the project file.
+
+\par Under WINS, UIDs are specified using syntax such as:
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 #pragma data_seg(\ldblquote .E32_UID\rdblquote )\line __WINS_UID(0x10000079,0x1000006c,0x10000253)\line #pragma data_seg()
+\par \pard\plain \widctlpar \f4\fs20\lang2057 This is only necessary for polymorphic DLLs\~\emdash 
+ the Win32 loader does not check the UIDs of static interface DLLs. Source files containing the UID syntax are created automatically for Win32 executables when the makefile is created.
+\par \pard\plain \s3\fi-9072\li9072\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying directories
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 sourcepath} statement to define the location of the project and its workfiles.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i sourcepath-stmt} :\line \tab {\cs62\b\f37 sourcepath} {\cs61\i sourcepath}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The {\cs61\i sourcepath} should correspond to the directory containing the source files for the project specified after the {\i sourcepath} statement. If the {\cs61\i sourcepath} begins with a backslash
+ then this directory will be considered an absolute source path, otherwise the directory will be treated as relative to the directory containing the {\cs51\f5 .mmp} file. Multiple {\i sourcepath }statements may be specified, but note that {\cs51\f5 
+makmake} will expect subsequent source and resource file statements to relate to the last previous {\i sourcepath} statement, or the directory containing the {\cs51\f5 .mmp} file if no {\i sourcepath} statement has yet been specified.
+\par Temporary files will be built into directory {\cs51\f5 \\epoc32\\build\\}{\cs61\i path_to_mmp_file\\mmp_basename\\platform}{\cs51\f5 \\}{\cs61\i variant}{\cs51\f5 \\}.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying source files
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 source} statement to specify source files.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i source-stmt} :\line \tab {\cs62\b\f37 source} {\cs61\i source-file-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Each {\cs62\b\f37 source} statement may specify an arbitrary number of source files.  Each source file should be specified including its extension, eg {\cs51\f5 euhello.cpp}.  There may be an arbitrary number of {
+\cs62\b\f37 source} statements in the project description file relative to each subproject.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying document files
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 document} statement to specify source files.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i document-stmt} :\line \tab {\cs62\b\f37 document} {\cs61\i document-file-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Each {\cs62\b\f37 document} statement may specify an arbitrary number of document files.  There may be an arbitrary number of {\cs62\b\f37 document}
+ statements in the project description file relative to each subproject.  This keyword is only used in the creation of IDE makefiles, where it can be useful for specifying files so that they are available for editing within the IDE but do not play a part 
+in building the executable.
+\par The .{\f5 mmp} file is incorporated in the MSVC6 IDE by default, and the MSVC6 workspace can be regenerated using {\f5 makmake} once the .{\f5 mmp}
+ file has been changed without the need to close the workspace first. To create a custom tool to do this in the IDE, Select Tools - Customise \'85 - Tools.  In the dialog, choose an appropriate name for the tool, e.g. \ldblquote recreate workspace
+\rdblquote , and type \ldblquote nmake.exe\rdblquote  as the command and \ldblquote -nologo -f $(WkspDir)\\$(WkspName).sup.make recreateworkspace\rdblquote  as the program arguments.  Leave the \ldblquote initial directory\rdblquote 
+ field blank, and tick the \ldblquote Close window on exiting\rdblquote  checkbox.  Having edited the .MMP file for a project, select the new tool from the tools menu to recreate the workspace.  You will then be prompted to reload the new workspace.
+
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying resource files
+\par \pard\plain \widctlpar \f4\fs20\lang2057 If your project has a resource file, specify it using the {\cs62\b\f37 resource} statement.  If it is a system project rather than an application, use the {\cs62\b\f37 systemresource} statement.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i resource-stmt} :\line \tab {\cs62\b\f37 resource} {\cs61\i resource-file-list}
+\par {\cs61\i systemresource-stmt} :\line \tab {\cs62\b\f37 systemresource} {\cs61\i resource-file-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Each resource file should be given with its extension, eg {\cs51\f5 golf.rss}
+\par The {\cs62\b\f37 resource} and {\cs62\b\f37 systemresource} statements have almost identical functions.  Use the {\cs62\b\f37 resource} statement for applications: the makefile will build the resource file into the target directory.  Use the {\cs62\b\f37 
+systemresource} statement for system components: the makefile will build the resource file into {\cs51\f5 \\epoc32\\release\\}{\cs61\i platform}{\cs51\f5 \\}{\cs61\i variant}{\cs51\f5 \\z\\system\\data\\}
+ for a WINS or WINC build.  If more than one language is specified with the {\i lang-stmt} then each resource will be compiled multiple times, once for each language specified.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying AIFs
+\par \pard\plain \widctlpar \f4\fs20\lang2057 If your project has an application information file, specify it using the {\cs62\b\f37 aif} statement.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i aif-stmt} :\line \tab {\cs62\b\f37 aif} {\cs61\i target-file source-path resource }{\cs61 [ }{\cs61\i color-depth }{\cs61 ]}{
+\cs61\i  source-bitmap-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The target file to be produced by {\f5 aiftool} should be given with its extension, eg {\cs51\f5 golf.aif.}
+  The source path should contain the source resource file and any bitmaps the target file requires.  If the source path is specified as a relative path it will be considered relative to the directory containing the .{\f5 mmp} file.
+  The source resource file should be given complete with its extension.  Just a single color-depth must be specified for all the source bitmaps, and must be of the form [c]{\i digit}[{\i digit}], where the optional \ldblquote c\rdblquote 
+ denotes whether the bitmap is a color bitmap and the digits represent the color-depth.  All the source bitmaps should be listed together with their extensions.
+\par The target file will be created in the same directory as the application.
+\par Currently, building of application information files within the MSVC IDE is not supported.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying BITMAPs
+\par \pard\plain \widctlpar \f4\fs20\lang2057 If your project has a bitmaps, specify each one using a {\b\f37 bitmap} section.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i bitmap-section} :\line \tab {\cs62\b\f37 start bitmap }{\cs61\i target-file}{\cs62\b\f37 \line }\tab {\cs62\b\f37 targetpath }{
+\cs61\i target-path}{\cs62\b\f37 \line }\tab {\cs62\b\f37 header\line }\tab {\cs62\b\f37 sourcepath }{\cs61\i source-path}{\cs62\b\f37 \line }\tab {\cs62\b\f37 source }{\cs61\i color-depth source-bitmap-list}{\cs62\b\f37 \line }\tab {\cs62\b\f37 end
+
+\par }\pard\plain \widctlpar \f4\fs20\lang2057 
+\par The target file to be produced by {\f5 bmconv} should be given with its extension, eg {\cs51\f5 golf.mbm.}  If a target path is specified, that path will be interpreted as a location on the emulated {\cs51\f5 z:}
+ drive; otherwise, the target file will be built into the same directory as the application.  If the header keyword is supplied in the section, a bitmap header will be generated in directory {\f5 \\EPOC32\\Include}, e.g. {\f5 golf.mbg}.  Multiple {\b\f37 
+sourcepath} and {\b\f37 source} statements can be specified - source bitmaps specified with each {\b\f37 source} statement will be expected to exist in the directory specified with the latest {\b\f37 sourcepath}
+ statement above it, or the directory containing the {\cs51\f5 .mmp} file if no {\b\f37 sourcepath} statement has yet been specified.  Just a single color-depth must be specified for all the source bitmaps within a single {\b\f37 source}
+ statement, and must be of the form [c]{\i digit}[{\i digit}], where the optional \ldblquote c\rdblquote  denotes whether the bitmap is a color bitmap and the digits represent the color-depth.
+\par Currently, building of bitmaps within the MSVC IDE is not supported.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying link definition files
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 deffile} statement to override the default linker definition file for the project, and the {\b\f37 exportunfrozen} statement if unfrozen exports are to appear in the project\rquote 
+s import library.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i deffile-stmt} :\line \tab {\cs62\b\f37 deffile} {\cs61\i filename\line exportunfrozen-stmt }{\cs61 :\line \tab }{\cs61\b\f37 
+exportunfrozen}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 A {\cs51\f5 def}
+ file specifies associations between exported function names and their ordinal export number.  It is used by the linker when constructing a DLL and (where applicable) when constructing its associated import library.
+\par Exporting functions by ordinal means that ROMs are significantly more compact, and simplifies the EPOC loader.
+\par The assignment of ordinals must be controlled by a {\cs51\f5 def} file in two situations:
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}\pard\plain \s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvlblt\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 
+a polymorphic interface DLL must export a particular function as ordinal 1; in this case, the {\cs51\f5 def} file is used to specify this association, while other exported functions may have a random order
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}a re-released DLL must be used by clients built against the old version; in this case, the {\cs51\f5 def}
+ file is used to ensure that all functions exported by the old version of the DLL are exported with the same ordinal by the new version
+\par \pard\plain \widctlpar \f4\fs20\lang2057 For many polymorphic DLLs within EPOC a special target type is provided so that {\f5 makmake} can ensure that the correct function is exported as ordinal 1.  Where a special target type is provided the {\f5 def}
+ file can be dispensed with.
+\par  {\cs51\f5 def} files are sometimes colloquially referred to as freeze files, because they freeze the association between name and ordinal, for exported functions.
+\par The GNU and Microsoft tool chains use different schemes for mangling the names of exported functions.  This means that {\cs51\f5 def} files of the same name must be differentiated by storing them in separate directories.  Conventionally, {\cs51\f5 ..\\
+bmarm\\} is used for ARM {\cs51\f5 def} files, while {\cs51\f5 ..\\bwins\\} is used for WINS and WINC {\cs51\f5 def} files.  By default, the frozen {\f5 def} file takes its basename from the basename of the target for the project.  
+\par Where the default frozen def file is overridden by the {\b\f37 deffile} statement, a path to the file can be specified as part of the filename. If no path is specified, the file will be expected to be in:
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}\pard\plain \s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvlblt\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 directory {\cs51\f5 ..\\bwins\\} for platforms WINS, WINC, VC6 and VC6WINC
+
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}directory {\cs51\f5 ..\\bmarm\\} for the ARM platform.
+\par \pard\plain \widctlpar \f4\fs20\lang2057 If a path is specified, place the {\cs62\b\f37 deffile} statement within {\cs16\f37 #ifdef}{\i s} so that the same file will not be used during both ARM,WINS and WINC builds. For example:
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 #if defined(WINS)\line deffile-stmt\line #else if defined(MARM)\line deffile-stmt\line #endif
+\par \pard\plain \widctlpar \f4\fs20\lang2057 (note that the platform name macros used with #if defs must be in upper-case).
+\par In most cases, the functions exported from a DLL depend on the build variant.  This is common because descriptor class names depend on whether the build is wide or narrow.  For such DLLs, different {\cs51\f5 def} files\~\emdash  differentiated by the {
+\cs51\f5 -u} suffix\~\emdash  are used.  {\cs51\f5 makmake} controls this using the {\cs62\b\f37 nostrictdef} statement.  Although narrow builds are no longer supported the {\cs51\f5 -u} suffix\~
+is still in use to maintain backward compatibility with previous versions of {\f5 makmake}.
+\par Note too that under WINS, when using an {\cs62\b\f37 exedll} target type, the first export is the one which will be called when the DLL is loaded, so you should use a {\cs51\f5 def} file for the WINS variant.
+\par {\f5 Makefiles} generated by {\f5 makmake} now create the import library associated with an executable (where applicable) directly from the frozen {\f5 def}
+ file, so only frozen exported functions will appear in the import library and only these exported functions can be linked against by other components.  For ARM platforms, import libraries for compatible ABIs are also created.  For example, if a project i
+s built for ARMI then ARMI, THUMB and ARM4 import libraries will be created; and if a project is built for THUMB, ARMI and THUMB import libraries will be created.   If the {\b\f37 exportunfrozen}
+ keyword is specified, the import library is not created from the frozen {\f5 def}
+ file; instead, the import library is created as a side-effect of linking so that all exported functions, even unfrozen ones, appear in the import library.  This also means that import libraries for compatible ABIs are not created.  Use of the {\b\f37 
+exportunfrozen} keyword is only recommended for the early stages of project development, when the Application Programming Interface is likely to be subject to change.
+\par The makefiles perform a two-stage link when building the executable:
+\par The first link ignores any {\cs51\f5 def} file; it simply links the executable using the names of exported functions.
+\par A tool is then invoked on the executable created by this first-stage link to produce a new {\cs51\f5 def} file containing the list of associations between exported function names and their ordinal export numbers. If a {\cs51\f5 def}
+ file exists for the project, the tool takes the contained list of associations and ensures that the new {\cs51\f5 def}
+ file contains the same list of associations; any new associations, representing new functions exported by the executable, appear at the end of the list. The new {\cs51\f5 def} file is created in the temporary files directory {\cs51\f5 \\epoc32\\build\\}{
+\cs61\i path_to_mmp_file\\mmp_basename}{\cs61 \\}{\cs61\i platform}{\cs51\f5 \\.}, and has the same base name as the executable with the extension {\cs51\f5 .def}. This is used to perform the second-stage of linking, by exported function number.
+\par In VC6 workspace files building is carried out in t
+he same way as for WINS makefiles, using a supplementary makefile to facilitate the two-stage link.  The supplementary makefile is created whenever the VC6 workspace file is created.  Since the supplementary makefile will not be aware of the addition or r
+emoval of a project\rquote s source files via the menus supplied within the IDE, it is better to carry out such tasks by editing the .{\f5 mmp}
+ file within the IDE and then regenerate the workspace file.  This operation can be carried out without the need to shut down a
+nd restart the IDE, and also has the advantage that the next time that command-line makefiles are created for the project they will be up to date with changes to the project made within the IDE.
+\par \pard\plain \s4\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5\lang2057 Freezing export numbers
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the frozen {\f5 def} file to ensure the backward compatibility of new releases of a project. If required, override the frozen {\f5 def} filename using the {\b\f37 deffile}
+ statement.  To freeze exports for the first time, use makmake to build makefiles for your project for the WINS platform and an ARM platfor
+m and then build your project in either UDEB or UREL variants for each of these platforms (the three ARM platforms, ARMI, ARM4 and THUMB, share a common {\f5 def} file.  A warning will be generated to the effect that the frozen {\f5 def}
+ file does not yet exist.  Once the project has been built you can freeze it by calling the FREEZE target in the makefiles, e.g. 
+\par \pard \fi720\widctlpar {\f37 nmake -f <makefile> freeze}
+\par \pard \widctlpar If you\rquote re using the {\f5 abld} tool it\rquote s easier to use the {\f5 abld freeze} command to do the freezing, which will call the FREEZE target in the makefiles for you.  Either method will create the frozen {\f5 def}
+ file containing the project\rquote s exported functions.  Once the project is frozen, regenerate the makefiles so that the import library will be created directly from the frozen {\f5 def} file.  The project can be frozen in this way even if the {\b\f37 
+exportunfrozen} statement is specified, but the import library will be created as a side-effect of linking rather than from the frozen {\f5 def} file, and this import library will be created whether the project is frozen or not.
+\par \pard\plain \s74\widctlpar\brdrl\brdrth\brdrw30\brsp80 \f4\fs20\cf5\lang2057 Could do with a link to the {\f5 abld} documentation where {\f5 abld} is mentioned above.
+\par \pard\plain \widctlpar \f4\fs20\lang2057 New exports can be added to the frozen {\f5 def} file by calling the FREEZE target in the makefiles once the project has been built with the new exports incorporated.  The FREEZE target calls a tool, {\f5 efreeze}
+, to compare the frozen {\f5 def} file, if it exists, with the one generated by the two-stage link process in directory {\cs51\f5 \\epoc32\\build\\}{\cs61\i path_to_mmp_file}{\cs51\f5 \\}{\cs61\i mmp_basename}{\cs61 \\}{\cs61\i platform}{\cs51\f5 \\
+..  efreeze} checks that the frozen exports are all present and correct in the generated {\f5 def} file, and appends any new exports to the end of the frozen {\f5 def} file.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying strict link definition files
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i strictdef-stmt} :\line \tab {\cs62\b\f37 nostrictdef}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 It is no longer necessary to specify the {\cs62\b\f37 nostrictdef} statement since there is always just one {\f5 def}
+ file for the UDEB and UREL variants of a project for each platform.  If the nostrictdef statement is specified, the {\f5 u} suffix will not be applied to the frozen {\f5 def} file.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying include directories
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 userinclude} and {\cs62\b\f37 systeminclude} statements to define directories to be scanned for files specified in {\cs62\b\f37 #include} statements in source and resource files.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i user-include-stmt} :\line \tab {\cs62\b\f37 userinclude} {\cs61\i directory-list}
+\par {\cs61\i system-include-stmt} :\line \tab {\cs62\b\f37 systeminclude} {\cs61\i directory-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Each of these statements may be specified any number of times, and each may have any number of directories.  Each directory is added, in the order specified, to the list of user or system include directories.
+
+\par When a pr
+oject is being built, the pre-processor will be invoked specifying all the system include and user include directories indicated in these statements.  No standard include directories will be searched unless the project links to Win32 libraries under WINS 
+- see {\cs37\f5\uld\cf11 tools.makmake.win32-libraries}.
+\par Files included from source code with a line such as
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 #include "golf.h"
+\par \pard\plain \widctlpar \f4\fs20\lang2057 will first be searched for in the directory containing the source file, then in the user include directories and finally in the system include directories.
+\par Files included from source code with a line such as
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 #include <e32def.h>
+\par \pard\plain \widctlpar \f4\fs20\lang2057 will be searched for in the system include directories.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying strict generation of dependencies
+\par \pard\plain \widctlpar \f4\fs20\lang2057 If your project\rquote s dependencies may differ with the variant, use the {\cs62\b\f37 strictdepend} statement:
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i strictdepend-stmt} :\line \tab {\cs62\b\f37 strictdepend}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Without this statement, dependencies will be evaluated for one variant, and then used for all.  With {\cs62\b\f37 strictdepend}, dependencies are evaluated explicitly\~\emdash  a sometimes lengthy process\~\emdash 
+ for each variant.
+\par Use {\cs62\b\f37 strictdepend} if, for instance, you conditionally include a header file, e.g.
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 #if defined(_DEBUG)\line include <debug.h>\line #endif
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tx630\tqr\tx9072 \b\f5\fs28\lang2057 Specifying import libraries
+\par \pard\plain \s71\widctlpar \f5\fs20\ul\cf13\lang2057 tools.makmake.specifying-libraries
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 library} statement to specify import libraries.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i library-stmt} :\line \tab {\cs62\b\f37 library} {\cs61\i filename-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The {\cs62\b\f37 library} statement may specify any number of files, and there may be many {\cs62\b\f37 library} statements.  Specify the entire filename, e.g. {\cs51\f5 euser.lib}.
+\par If you need to link to Win32 system libraries in a WINS build, use the {\cs62\b\f37 win32_library} statement instead: see {\cs37\f5\uld\cf11 tools.makmake.win32-libraries}.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tx630\tqr\tx9072 \b\f5\fs28\lang2057 Specifying static libraries
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 staticlibrary} statement to specify static libraries.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i library-stmt} :\line \tab {\cs62\b\f37 staticibrary} {\cs61\i filename-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The {\cs62\b\f37 staticibrary} statement may specify any number of files, and there may be many {\cs62\b\f37 library} statements.  Specify the entire filename, e.g. {\cs51\f5 euser.lib}.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying language
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 lang} statement to indicate languages code for the project:
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i lang-stmt} :\line \tab {\cs62\b\f37 lang} {\cs61\i language-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 If this statement is not specified, the default language code is {\cs62\b\f37 sc}.  The language codes should be two-digit codes, and are used to complete the extension of generated resource files, as {\cs61\i 
+project}{\cs51\f5 .r}{\cs61\i sc}.  Each resource file specified with the {\i resource-stmt}
+ will be compiled multiple times, once for each language specified, though the specification of several languages will not cause several versions of the bitmaps or application information files in your project to be created.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying #defines
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 macro} statement to specify #defines for the preprocessing of source code:
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i macro-stmt} :\line \tab {\cs62\b\f37 macro} {\cs61\i macro-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Each macro specified will be defined for preprocessing the C++ source code in your project.  Each macro will be upper-cased before being defined, so it\rquote s better to specify them in upper-case in the .{\f5 mmp
+} file.  Macro substitution is not supported - the macros will all be defined with the value \ldblquote 1\rdblquote .
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying a non-default stack size
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 epocstacksize} statement to specify a stack size for your executable other than the default 8KB.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i epocstacksize-stmt} :\line \tab {\cs62\b\f37 epocstacksize} {\cs61\i stacksize}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The size of the stack, in bytes, can be specified in decimal or hexadecimal format.  Use of this statement will have no effect under the WINS platform.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying non-default heap sizes
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 epocheapsize} statement to specify minimum and maximum heap sizes for your executable other than the default 1KB minimum and 1MB maximum.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i epocheapsize-stmt} :\line \tab {\cs62\b\f37 epocheapsize} {\cs61\i minimum maximum}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The sizes can be specified in decimal or hexadecimal format.  Use of this statement will have no effect under Win32 platforms.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying the calling of dll entry points
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 epoccalldllentrypoints}
+ statement to specify that the entry point, E32Dll(),  of your dll, should be called when your dll is loaded.  By default entry points are not called for non-Win32 platforms.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i epoccalldllentrypoints-stmt} :\line \tab {\cs62\b\f37 epoccalldllentrypoints}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use of this statement will have no effect under Win32 platforms, where entry points are always called.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying process priority
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 epocprocesspriority}
+ statement to specify the process priority for your executable EXE. Specify low, background, foreground, high, windowserver, fileserver, realtimeserver or supervisor.  The value specified will be passed on to {\cs51\f5 petran} via its {\cs62\b\f37 
+-priority}{\i  } switch.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i epocprocesspriority-stmt} :\line \tab {\cs62\b\f37 epocprocesspriority} {\cs61\i priority}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use of this statement will have no effect under Win32 platforms.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying a different internal DLL name
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 linkas} statement to give the DLL that your project defines a different internal name.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i linkas-stmt} :\line \tab {\cs62\b\f37 linkas} {\cs61\i priority}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 By default, the internal name of the DLL will be the same as the DLL\rquote s filename.  Under certain rare circumstances it\rquote 
+s useful to be able to give a DLL a different internal name.  For example, a DLL might be built with a certain name and then renamed as part of a ROM, so the internal name must be the same as the DLL\rquote s name in ROM.
+\par Use of this statement will have no effect under Win32 platforms.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Specifying ASSP items
+\par \pard\plain \widctlpar \f4\fs20\lang2057 ASSP stands for \ldblquote Application Specific Standard Product\rdblquote .  
+ASSP statements are for use by projects linking to the EPOC kernel, such as device drivers, so unless you are building such projects you can ignore this section.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i assplibrary-stmt} :\line \tab {\cs62\b\f37 assplibrary} {\cs61\i filename-list}{\cs62\b\f37 \line }{\cs61\i asspexports-stmt} :
+\line \tab {\cs62\b\f37 asspexports}
+\par {\cs61\i asspabi-stmt} :\line \tab {\cs62\b\f37 asspabi}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 
+The import library for the EPOC kernel and associated libraries are created in a directory corresponding to the hardware platform, or ASSP, a particular version of the kernel is built for.  For this reason, projects linking to the kernel must list {\f5 
+ekern.lib} with the {\b\f37 assplibrary} statement, to differentiate it from standard EPOC import libraries.
+\par If the {\b\f37 asspexports}
+ statement is specified, this means that the project exports different functions for different ASSPs; in other words, the API of a particular version of the project will correspond to the hardware platform that version of the project is built for.  The st
+atement has two effects:
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}\pard\plain \s20\fi-284\li568\ri567\widctlpar{\*\pn \pnlvlblt\ulth\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\f4\fs20\lang2057 
+the import library for the project will be created in an ASSP-specific directory rather than in the usual directory for containing the ARM import libraries - \\{\f5 EPOC32}\\{\f5 Release}\\{\i assp-name}\\{\i variant}\\ rather than \\{\f5 EPOC32}\\{\f5 
+Release}\\{\i platform-name}\\{\i variant}\\.
+\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}the frozen def file for the project will, by default, reside in an ASSP-specific directory rather than ..\\{\f5 bmarm}\\.
+\par \pard\plain \widctlpar \f4\fs20\lang2057 If the {\b\f37 asspabi} statement is specified, the ABI that the project will be built for - ARMI, ARM4 or THUMB - will be the same as that of the kernel for a 
+particular ASSP.  Otherwise the ABI for the project will be the default ABI for a particular ASSP.  The {\b\f37 asspabi} statement is implied by the presence of either the {\b\f37 asspexports} or the {\b\f37 assplibrary} statements.
+\par \pard\plain \s74\widctlpar\brdrl\brdrth\brdrw30\brsp80 \f4\fs20\cf5\lang2057 This section is perhaps just going to confuse people, and maybe should just be in the base porting guide or the device driver documentation or somewhere like that.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Platform-specific items
+\par \pard\plain \widctlpar \f4\fs20\lang2057 A platform-specific section is enclosed in {\cs62\b\f37 start} and {\cs62\b\f37 end}:
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs62\b\f37 start }{\cs61\i platform}\line \tab {\cs61\i platform-specific-statement-list}\line {\cs62\b\f37 end}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 The platform-specific statements allowed depend on the platform.  Unlike {\cs62\b\f37 #if defined}
+  blocks, which allow statements to specify different files dependent upon the platform for which the makefile is being created, {\cs62\b\f37 start ... end} platform blocks are used to delimit statements understood only by {\cs51\f5 makmake}
+ when creating a makefile for a particular platform.  The {\cs51\f5 makmake} project definition file is preprocessed every time {\cs51\f5 makmake} is run, with the target platform defined as a macro equal to itself (where WINC is the platfor
+m, WINS is also defined).  This allows, for example, the project definition file to be preprocessed with the macro WINS defined as WINS so preserving the syntax of {\cs62\b\f37 start WINS ... end}
+ blocks.  Where VC5 is the target platform, the macro WINS is defined instead; similarly the macros WINS and WINC are defined where the target platform is VC5WINC.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 WINS-specific statements
+\par \pard\plain \s71\widctlpar \f5\fs20\ul\cf13\lang2057 tools.makmake.wins
+\par \pard\plain \s4\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5\lang2057 Specifying a base address
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 baseaddress} statement to specify the address to which a DLL will be built and, if possible, loaded.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i wins-specific-statement} :\line \tab {\cs62\b\f37 baseaddress} {\cs61\i hex-constant}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use {\cs62\b\f37 baseaddress} to specify the base address of a WINS DLL.  Give each DLL a different base address, so that the Windows loader doesn\rquote 
+t have to do any relocation while loading EPOC and its DLLs.  This considerably speeds up the initialisation of EPOC under WINS.
+\par \pard\plain \s4\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072 \b\f5\lang2057 Specifying Win32 system libraries
+\par \pard\plain \s71\widctlpar \f5\fs20\ul\cf13\lang2057 tools.makmake.win32-libraries
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use the {\cs62\b\f37 win32_library} statement to specify any Win32 system libraries needed by the project.
+\par \pard\plain \s58\li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \f4\fs20\lang2057 {\cs61\i wins-specific-statement} :\line \tab {\cs62\b\f37 win32_library} {\cs61\i filename-list}
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Use {\cs62\b\f37 win32_library} to specify Win32 libraries in the same way that other libraries are specified with the {\cs62\b\f37 library}
+ statement.  If any Win32 system libraries are specified, directories specified by the INCLUDE environmental variable will be searched for system-included header files not found in the system include paths specified for the project.
+\par \pard\plain \s3\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072 \b\f5\fs28\lang2057 Command Line Makefile utilities
+\par \pard\plain \widctlpar \f4\fs20\lang2057 Command-line makefiles created by {\cs51\f5 makmake} contain syntax which it is not possible to incorporate into makefil
+es intended for the MSVC IDE.  Command-line makefiles provide extra makefile targets which enable you to use {\cs62\b\f37 nmake}
+ to create work directories and erase non-source files for a particular build variant of a project.  For example, WINS command-line makefiles provide the targets {\cs51\f5 makework, makeworkudeb, makeworkurel, clean, cleanudeb, cleanurel.}
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 nmake -f euhello.wins clean
+\par \pard\plain \widctlpar \f4\fs20\lang2057 will attempt to delete the non-source files created during a build of all variants of the project {\f5 euhello}, while
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 nmake -f euhello.wins cleanudeb
+\par \pard\plain \widctlpar \f4\fs20\lang2057 for example, will attempt only to delete non-source files created by a wide debug build of  the project.
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 nmake -f euhello.wins makework
+\par \pard\plain \widctlpar \f4\fs20\lang2057 will create the work directories for a build of all variants of the project {\f5 euhello}, while
+\par \pard\plain \s19\li567\keep\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536 \f37\fs20\lang1024 nmake -f euhello.wins makeworkurel
+\par \pard\plain \widctlpar \f4\fs20\lang2057 will create the work directories for a wide release build of the project.
+\par The build-specific {\cs51\f5 makework} targets are listed as dependencies of the main build-specific targets in command-line makefiles, so work directories will automatically be creat
+ed when a target is built with a command-line makefile if these directories do not already exist.
+\par }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/memtrace.rtf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,178 @@
+{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang2057\deflangfe2057{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f4\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica{\*\falt Arial};}{\f7\fswiss\fcharset0\fprq2{\*\panose 020b0604020202030204}Helv{\*\falt Arial};}
+{\f36\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times;}{\f37\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}{\f55\froman\fcharset238\fprq2 Times New Roman CE;}{\f56\froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f58\froman\fcharset161\fprq2 Times New Roman Greek;}{\f59\froman\fcharset162\fprq2 Times New Roman Tur;}{\f60\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f61\froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f62\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f63\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f65\fswiss\fcharset238\fprq2 Arial CE;}{\f66\fswiss\fcharset204\fprq2 Arial Cyr;}{\f68\fswiss\fcharset161\fprq2 Arial Greek;}
+{\f69\fswiss\fcharset162\fprq2 Arial Tur;}{\f70\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f71\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f72\fswiss\fcharset186\fprq2 Arial Baltic;}{\f73\fswiss\fcharset163\fprq2 Arial (Vietnamese);}
+{\f95\fswiss\fcharset238\fprq2 Helvetica CE{\*\falt Arial};}{\f96\fswiss\fcharset204\fprq2 Helvetica Cyr{\*\falt Arial};}{\f98\fswiss\fcharset161\fprq2 Helvetica Greek{\*\falt Arial};}{\f99\fswiss\fcharset162\fprq2 Helvetica Tur{\*\falt Arial};}
+{\f100\fswiss\fcharset177\fprq2 Helvetica (Hebrew){\*\falt Arial};}{\f101\fswiss\fcharset178\fprq2 Helvetica (Arabic){\*\falt Arial};}{\f102\fswiss\fcharset186\fprq2 Helvetica Baltic{\*\falt Arial};}
+{\f103\fswiss\fcharset163\fprq2 Helvetica (Vietnamese){\*\falt Arial};}{\f415\froman\fcharset238\fprq2 Times CE;}{\f416\froman\fcharset204\fprq2 Times Cyr;}{\f418\froman\fcharset161\fprq2 Times Greek;}{\f419\froman\fcharset162\fprq2 Times Tur;}
+{\f420\froman\fcharset177\fprq2 Times (Hebrew);}{\f421\froman\fcharset178\fprq2 Times (Arabic);}{\f422\froman\fcharset186\fprq2 Times Baltic;}{\f423\froman\fcharset163\fprq2 Times (Vietnamese);}{\f425\fmodern\fcharset238\fprq1 Lucida Console CE;}
+{\f426\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f428\fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f429\fmodern\fcharset162\fprq1 Lucida Console Tur;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+\red128\green128\blue128;\red192\green192\blue192;\red255\green255\blue255;}{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \snext0 \styrsid4260995 
+Normal;}{\s1\ql \li0\ri0\sb360\sa240\keepn\pagebb\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs40\lang2057\langfe2057\kerning28\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 heading 1;}{
+\s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \b\f1\fs34\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 heading 2;}
+{\s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \b\f1\fs28\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 
+heading 3;}{\s4\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\rtlgutter\itap0 \b\f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext0 heading 4;}{\s5\ql \li0\ri0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 heading 5;}{
+\s6\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \i\f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 heading 6;}{
+\s7\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 heading 7;}{
+\s8\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \i\f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 heading 8;}{
+\s9\ql \li0\ri0\sb240\sa60\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \i\f1\fs18\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 heading 9;}{\*\cs10 \additive \ssemihidden \styrsid4260995 
+Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden \styrsid4260995 Normal Table;}{\s15\ql \li0\ri0\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f37\fs16\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext15 Code Paragraph;}{\*\cs16 \additive 
+\f37\lang2057\langfe0\langnp2057\langfenp0 \sbasedon10 Code;}{\*\cs17 \additive \i \sbasedon10 Emphasis;}{\*\cs18 \additive \b \sbasedon10 Warning;}{\s19\ql \li567\ri0\keep\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin567\itap0 \f37\fs24\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp2057 \sbasedon0 \snext19 Indented Code;}{
+\s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf36\pnstart1\pnindent283\pnhang {\pntxtb ?}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin567\lin568\itap0 
+\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon21 \snext20 \sautoupd List Bullet;}{\s21\ql \fi-284\li851\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin851\itap0 
+\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext21 List;}{\s22\ql \li567\ri567\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext22 List Continue;}{\s23\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec\pnstart1\pnindent283\pnhang {\pntxta ?}}\aspalpha\aspnum\faauto\ls2047\ilvl11\adjustright\rin567\lin568\itap0 
+\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon21 \snext23 List Number;}{\s24\qc \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext24 Picture;}{\s25\qc \li0\ri0\sb240\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs72\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext25 Title;}{
+\s26\ql \li0\ri0\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext26 Logo;}{
+\s27\ql \li0\ri0\sb1440\sa1200\sl-460\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\scaps\f1\fs40\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext27 Subtitle;}{\s28\ql \li0\ri0\sl-200\slmult0
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext28 Version;}{\s29\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext29 Date Published;}{\s30\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext30 Copyright Header;}{\s31\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext31 Copyright Notice;}{
+\s32\ql \li0\ri0\sa1440\sl-960\slmult0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\scaps\f1\fs40\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext32 TOC Header;}{
+\s33\ql \li0\ri0\sb480\sa160\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \b\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext0 \sautoupd \ssemihidden toc 1;}{\s34\ql \li221\ri0\sb120\keepn\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin221\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext0 \sautoupd \ssemihidden toc 2;}{\s35\ql \li442\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin442\itap0 \f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext0 \sautoupd \ssemihidden toc 3;}{\s36\ql \li658\ri0\widctlpar\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin658\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 \sautoupd \ssemihidden 
+toc 4;}{\*\cs37 \additive \f1\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\ql \li0\ri0\widctlpar\brdrr\brdrdb\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f37\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext38 Constant Definition;}{\s39\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs18\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext39 header;}{
+\s40\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext40 Even Footer Paragraph;}{
+\s41\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \caps\fs18\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext41 Even Header Paragraph;}{\s42\ql \li0\ri0\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \fs18\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon39 \snext42 footer;}{\*\cs43 \additive \b \sbasedon10 page number;}{
+\s44\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext44 Odd Footer Paragraph;}{
+\s45\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \caps\fs18\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext45 Odd Header Paragraph;}{\s46\ql \li0\ri0\widctlpar\brdrl
+\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext46 Status;}{\*\cs47 \additive \i \sbasedon10 Glossary Reference;}{
+\s48\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext48 Compact;}{\*\cs49 \additive \f1 \sbasedon10 App Text;}{
+\s50\ql \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs40\lang2057\langfe2057\kerning28\cgrid\langnp2057\langfenp2057 \sbasedon1 \snext50 Heading 1 NoSection;}{\*\cs51 \additive \f1 \sbasedon10 
+Filename;}{\s52\ql \fi-284\li1135\ri1134\widctlpar\wrapdefault{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf4\pnstart1\pnindent283\pnhang {\pntxtb ?}}\aspalpha\aspnum\faauto\ls2047\ilvl10\adjustright\rin1134\lin1135\itap0 
+\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext52 \sautoupd List Bullet 2;}{\*\cs53 \additive \b \sbasedon10 Glossary Definition;}{\*\cs54 \additive \i \sbasedon10 Document Name;}{\s55\ql \li0\ri0\keep\keepn\widctlpar
+\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f37\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 Prototype;}{\*\cs56 \additive \scaps 
+\sbasedon10 Key Name;}{\s57\ql \li0\ri0\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f37\fs16\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext57 Reduced Code;}{\s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 
+\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 Syntax;}{\s59\qc \li0\ri0\sb240\sa240\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext59 Picture Title;}{\s60\ql \fi-3119\li3119\ri0\widctlpar\tx3119\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3119\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext60 Member List;}{\*\cs61 \additive 
+\i \sbasedon10 Syntax Element;}{\*\cs62 \additive \b\f37 \sbasedon10 Syntax Literal;}{\s63\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext63 \ssemihidden annotation text;}{\*\cs64 \additive \b\f1\uld\cf11 \sbasedon10 Example Link;}{\s65\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
+\b\f1\fs36\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext65 TOC 0;}{\*\cs66 \additive \f37\cf2\lang2057\langfe0\langnp2057\langfenp0 \sbasedon16 Resource Code;}{
+\s67\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs24\cf6\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext67 Converter Directive;}{
+\s68\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f37\fs24\uldb\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 Platform Dependency;}{\*\cs69 \additive \b\cf10 \sbasedon10 Raw HTML;}{\*\cs70 
+\additive \i\cf14 \sbasedon10 URL Reference;}{\s71\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs24\ul\cf13\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext0 Hypertext Anchor;}{
+\s72\ql \li0\ri0\widctlpar\brdrr\brdrs\brdrw45\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext72 Member Definition;}{\s73\ql \li567\ri567\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext73 Figure Picture;}{\s74\ql \li0\ri0\widctlpar\brdrl
+\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\cf5\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon46 \snext74 Comment;}{\s75\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb
+\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \b\fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext75 Figure Caption;}{\s76\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext76 Figure Description;}{\s77\ql \li567\ri567\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \fs24\cf6\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon73 \snext77 Figure Status;}{\s78\ql \li567\ri567\widctlpar
+\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 \f1\fs24\ul\cf13\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon0 \snext78 Figure Anchor;}{\*\cs79 \additive 
+\f1\uld\cf12 \sbasedon37 Figure Link;}{\s80\ql \li567\ri567\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin567\lin567\rtlgutter\itap0 
+\i\fs24\cf10\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 \sbasedon73 \snext80 Figure Directive;}{\s81\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 
+\sbasedon0 \snext81 Body Text;}}{\*\listtable{\list\listtemplateid-1425013608\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}
+\f3\fbias0\hres0\chhres0 \fi-360\li643\jclisttab\tx643\lin643 }{\listname ;}\listid-125}{\list\listtemplateid1252012804\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'02\'00.;}{\levelnumbers\'01;}\hres0\chhres0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-120}{\list\listtemplateid-1450533688\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-119}{\list\listtemplateid-1\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0
+\levelspace0\levelindent0{\leveltext\'01*;}{\levelnumbers;}\hres0\chhres0 }{\listname ;}\listid-2}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid1325275661}}{\*\listoverridetable{\listoverride\listid-119\listoverridecount0\ls1}{\listoverride\listid-120\listoverridecount0\ls2}
+{\listoverride\listid-125\listoverridecount0\ls3}{\listoverride\listid-119\listoverridecount0\ls4}{\listoverride\listid-120\listoverridecount0\ls5}{\listoverride\listid-125\listoverridecount0\ls6}{\listoverride\listid-119\listoverridecount0\ls7}
+{\listoverride\listid-120\listoverridecount0\ls8}{\listoverride\listid-125\listoverridecount0\ls9}{\listoverride\listid-119\listoverridecount0\ls10}{\listoverride\listid-120\listoverridecount0\ls11}{\listoverride\listid-125\listoverridecount0\ls12}
+{\listoverride\listid-119\listoverridecount0\ls13}{\listoverride\listid-120\listoverridecount0\ls14}{\listoverride\listid-125\listoverridecount0\ls15}{\listoverride\listid-119\listoverridecount0\ls16}{\listoverride\listid-120\listoverridecount0\ls17}
+{\listoverride\listid-125\listoverridecount0\ls18}{\listoverride\listid-119\listoverridecount0\ls19}{\listoverride\listid-120\listoverridecount0\ls20}{\listoverride\listid-125\listoverridecount0\ls21}{\listoverride\listid-119\listoverridecount0\ls22}
+{\listoverride\listid-120\listoverridecount0\ls23}{\listoverride\listid-125\listoverridecount0\ls24}{\listoverride\listid-119\listoverridecount0\ls25}{\listoverride\listid-120\listoverridecount0\ls26}{\listoverride\listid-125\listoverridecount0\ls27}
+{\listoverride\listid1325275661\listoverridecount0\ls28}{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent283{\leveltext
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-283\li567\lin567 }}\ls29}{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold
+\levelspace0\levelindent283{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f36\fbias0\hres0\chhres0 \fi-283\li567\lin567 }}\ls30}}{\*\rsidtbl \rsid928984\rsid4260995\rsid7031965}{\*\generator Microsoft Word 10.0.6829;}{\info{\title Tools}
+{\subject Specifying projects with makmake}{\author Preferred Customer}{\doccomm The model chapter document.\'0d\'0dHeaders & footers are different for even and odd pages.}{\operator DuskoJ}{\creatim\yr2000\mo12\dy18\hr20\min9}
+{\revtim\yr2007\mo8\dy14\hr13\min11}{\printim\yr1997\mo4\dy18\hr15\min6}{\version8}{\edmins104}{\nofpages2}{\nofwords710}{\nofchars4048}{\*\company Dell Computer Corporation}{\nofcharsws4749}{\vern16393}{\*\password 00000000}}{\*\xmlnstbl }
+\paperw11907\paperh16840\margl851\margr851\margt1134\margb1134\gutter1134 \widowctrl\ftnbj\aenddoc\grfdocevents0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\linkstyles\hyphcaps0\formshade\horzdoc\dghspace120\dgvspace120\dghorigin1701
+\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\nolnhtadjtbl\rsidroot928984 \fet0{\*\wgrffmtfilter 013f}\sectd \binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere\sectdefaultcl\sftnbj {\headerr \pard\plain 
+\s39\ql \li0\ri0\widctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs18\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\field{\*\fldinst {\insrsid928984  TITLE  \\* MERGEFORMAT }}{\fldrslt {\insrsid928984 
+Tools}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\insrsid928984 \tab Company Confidential\tab EON SDK, Copyright \'a9 1999, Symbian Ltd
+\par }}{\footerr \pard\plain \s42\ql \li0\ri0\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\rtlgutter\itap0 \fs18\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\field{\*\fldinst {
+\insrsid928984  SUBJECT  \\* MERGEFORMAT }}{\fldrslt {\insrsid928984 Specifying projects with makmake}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\insrsid928984 \tab Page }{\field{\*\fldinst {\insrsid928984  PAGE  \\* MERGEFORMAT }}{\fldrslt {
+\lang1024\langfe1024\noproof\insrsid4260995 1}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\insrsid928984 \tab Last saved }{\field{\*\fldinst {\insrsid928984  SAVEDATE  \\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof\insrsid4260995 18/03/2005
+ 4:12 PM}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\insrsid928984 
+\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta ?}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta ?}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta ?}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta ?}}
+{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb ?}{\pntxta ?}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb ?}{\pntxta ?}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb ?}{\pntxta ?}}{\*\pnseclvl8
+\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb ?}{\pntxta ?}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb ?}{\pntxta ?}}\pard\plain 
+\s1\ql \li0\ri0\sb360\sa240\keepn\pagebb\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs40\lang2057\langfe2057\kerning28\cgrid\langnp2057\langfenp2057 {\field\fldedit{\*\fldinst {\insrsid928984  SUBJECT  \\
+* MERGEFORMAT }}{\fldrslt {\insrsid928984 Investigating memory usage with memtrace}}}\sectd \binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere\sectdefaultcl\sftnbj {\insrsid928984 
+\par }\pard\plain \s71\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs24\ul\cf13\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 tools.memtrace
+\par }\pard\plain \s67\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f1\fs24\cf6\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 doclevel v6.1
+\par }\pard\plain \s74\ql \li0\ri0\widctlpar\brdrl\brdrs\brdrw30\brsp80 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\cf5\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 this chapter documents }{\cs51\f1\insrsid928984 
+memtrace}{\insrsid928984  to e32toolp release 223 level.
+\par }\pard\plain \s2\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\rtlgutter\itap0 \b\f1\fs34\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 
+Overview
+\par }\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 The }{\cs51\f1\insrsid928984 memtrace}{\insrsid928984 
+ tool can be used to investigate the memory usage of an EPOC system. By default }{\cs51\f1\insrsid928984 memtrace}{\insrsid928984  produces a summary listing showing the high-watermark memory usage of each EPOC process over the course of the run. }{
+\cs51\f1\insrsid928984 memtrace}{\insrsid928984  can also produce a detailed listing showing how memory usage changes over time which can be used to identify transient spikes in the memory usage of an individual process and of the entire EPOC system.
+
+\par }\pard\plain \s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \b\f1\fs28\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 
+Invocation syntax
+\par }\pard\plain \s58\ql \li851\ri851\keep\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin851\lin851\rtlgutter\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {
+\cs62\b\f37\insrsid928984 memtrace}{\insrsid928984  [}{\cs61\i\insrsid928984 -d}{\insrsid928984 ] }{\cs61\i\insrsid928984 tracefile
+\par options}{\insrsid928984  :\line \tab }{\cs62\b\f37\insrsid928984 -d}{\insrsid928984 
+\par }\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 where
+\par }\trowd \irow0\irowband0\ts11\trgaph108\trleft-108\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth2376\clshdrawnil 
+\cellx2268\clvertalt\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth6911\clshdrawnil \cellx9179\pard \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {
+\cs61\i\insrsid928984 Logfile}{\insrsid928984 \cell Memory usage trace file\cell }\pard \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\insrsid928984 \trowd \irow0\irowband0
+\ts11\trgaph108\trleft-108\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth2376\clshdrawnil \cellx2268\clvertalt
+\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth6911\clshdrawnil \cellx9179\row }\pard \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\cs62\b\f37\insrsid928984 
+-d}{\cs61\i\insrsid928984 \cell }{\insrsid928984 Indicates that the tool should produce a detailed listing\cell }\pard \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\insrsid928984 \trowd \irow1\irowband1\lastrow 
+\ts11\trgaph108\trleft-108\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth2376\clshdrawnil \cellx2268\clvertalt
+\clbrdrt\brdrnone \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth6911\clshdrawnil \cellx9179\row }\pard \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\cs51\f1\insrsid928984 
+
+\par memtrace}{\cs51\insrsid928984  produces output in Comma Separated Variable format on standard output. In normal use one would redirect its output to a }{\cs51\f1\insrsid928984 .csv}{\cs51\insrsid928984  file.
+\par }\pard\plain \s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 \b\f1\fs28\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 
+Obtaining a trace file
+\par }\pard\plain \s29\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\cs51\f1\insrsid928984 memtrace}{\cs51\insrsid928984 
+ operates on a file containing memory usage trace information. This file is obtained by capturing kernel trace output from a running EPOC system, starting from system boot. The EPOC kernel will only output memory usage trace information if:
+\par {\pntext\pard\plain\s20 \f3\insrsid928984 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \'b7}}
+\aspalpha\aspnum\faauto\ls29\adjustright\rin567\lin568\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 A debug build of the kernel is used.
+\par {\pntext\pard\plain\s20 \f3\insrsid928984 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \'b7}}
+\aspalpha\aspnum\faauto\ls29\adjustright\rin567\lin568\itap0\pararsid928984 {\insrsid928984 Bit 26 of the kernel trace bitmask is set at boot-time \endash  in practice this means that }{\insrsid928984\charrsid7031965 the statement }{
+\cs16\insrsid928984\charrsid7031965 kerneltrace 0x04000000 0 0 0 0 0 0 0}{\insrsid928984\charrsid7031965  should appear in the rombuild configuration file.}{\insrsid928984 
+\par }\pard\plain \ql \li0\ri0\widctlpar\wrapdefault{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 
+Only a debug kernel will produce memory usage trace information. However in order to obtain representative results all other executables should be release versions.
+\par The kernel trace information appears on 
+a device-specific trace channel. The output of this channel should be logged to a file, starting from system boot. Depending on the device in use this channel may be a serial port, an ARM Embedded Trace Macrocell port or a custom device-specific port. Use
+ 
+of a slow trace channel will impact system performance. In the case where the trace channel is shared with comms protocols then those comms protocols will be unavailable and should be disabled. The kernel trace channel on Symbian reference platforms is th
+e first serial port running at 115200,n,8,1.
+\par }\pard\plain \s29\ql \li0\ri0\widctlpar\wrapdefault{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 
+The EPOC Emulator kernel can also produce memory usage trace information. However information obtained from the Emulator is likely to be less useful since EPOC processes may behave differently between the Emulator and target devices and since }{
+\cs51\f1\insrsid928984 memtrace}{\cs51\insrsid928984  is less able to correctly assign memory usage to processes using trace information obtained on the Emulator. The Emulator kernel will only output memory usage trace information if:
+\par {\pntext\pard\plain\s20 \f3\insrsid928984 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \'b7}}
+\aspalpha\aspnum\faauto\ls29\adjustright\rin567\lin568\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 A debug build of the kernel is used.
+\par {\pntext\pard\plain\s20 \f3\insrsid4260995 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \'b7}}
+\aspalpha\aspnum\faauto\ls29\adjustright\rin567\lin568\itap0 {\insrsid4260995 Bit 26}{\insrsid928984  of the kernel trace bitmask is set at boot-time \endash  in practice this means that the statement }{\cs16\f37\insrsid928984 DebugMask 524288}{
+\insrsid928984  should appear in the Emulator configuration file (which by default is }{\cs51\f1\insrsid928984 \\epoc32\\data\\epoc.ini}{\insrsid928984 ).
+\par {\pntext\pard\plain\s20 \f3\insrsid928984 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \'b7}}
+\aspalpha\aspnum\faauto\ls29\adjustright\rin567\lin568\itap0 {\insrsid928984 It is recommended that an appropriate value be supplied in the Emulator configuration file for the }{\cs16\f37\insrsid928984 MegabytesOfFreeMemory}{\insrsid928984 
+ parameter for the device being emulated}{\f7\cf1\insrsid928984 .}{\insrsid928984 
+\par }\pard\plain \ql \li0\ri0\widctlpar\wrapdefault{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 
+The Emulator kernel produces its trace information using the win32 }{\cs16\f37\insrsid928984 OutputDebugString}{\insrsid928984  API. This output can be captured by starting
+ the emulator from Microsoft Visual C++ and copying and pasting the contents of the \'93Output\'94 window, or by using a dedicated program such as }{\cs49\f1\insrsid928984 DebugView}{\insrsid928984  from }{\cs70\i\cf14\insrsid928984 www.sysinternals.com}{
+\insrsid928984 .
+\par }\pard\plain \s3\ql \li0\ri0\sb120\keepn\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\wrapdefault{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\rtlgutter\itap0 
+\b\f1\fs28\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 Understanding the results
+\par }\pard\plain \ql \li0\ri0\widctlpar\wrapdefault{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 The output from }{\cs51\f1\insrsid928984 
+memtrace}{\cs51\insrsid928984  is a Comma Separated Variable format on standard output. In normal use one would redirect the output to a }{\cs51\f1\insrsid928984 .csv}{\cs51\insrsid928984 
+ file which can be read by many spreadsheet programs. The output can be charted using the \'93Chart Wizard\'94 in Microsoft Excel. When charting a detailed listing use these exceptions from the default values:
+\par {\pntext\pard\plain\s20 \f3\insrsid928984 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \'b7}}
+\aspalpha\aspnum\faauto\ls29\adjustright\rin567\lin568\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\insrsid928984 Choose a \lquote Chart type\rquote  of type \lquote Area\rquote  (and sub-type \lquote Stacked Area\rquote ).
+\par {\pntext\pard\plain\s20 \f3\insrsid928984 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s20\ql \fi-284\li568\ri567\widctlpar\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls29\pnrnot0\pnf3\pnstart1\pnindent283\pnhang {\pntxtb \'b7}}
+\aspalpha\aspnum\faauto\ls29\adjustright\rin567\lin568\itap0 {\insrsid928984 After applying the wizard change the X-axis format \lquote Number Category\rquote  to \lquote Number\rquote  with 1 decimal place.
+\par }\pard\plain \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe2057\cgrid\langnp2057\langfenp2057 {\cs51\insrsid928984 The detailed listing shows how the memory usage 
+of processes and global chunks change over the course of the run. The summary listing shows the high-watermark memory usage of processes and global chunks over the course of the run.
+\par }{\insrsid928984 The kernel memory usage trace information is output }{\cs51\insrsid928984 at the granularity of a system page (i.e. 4K on ARM devices and on the Emulator) and }{\cs51\f1\insrsid928984 memtrace}{\cs51\insrsid928984 
+ is unable to show memory allocation at a finer granularity than this. }{\cs51\f1\insrsid928984 memtrace}{\cs51\insrsid928984  also groups together the memory allocated by the loader on behalf of a process with memory allocated by 
+different threads within a process. However it lists memory allocated to global chunks (e.g. the font bitmap server shared chunks) separately from the process that created them.
+\par }{\insrsid928984 The results produced for kernel memory usage should not be relied on because the kernel is a debug version and because memory used by the kernel for managing memory is not recorded.
+\par 
+\par }}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/metabld.rtf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,105 @@
+{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial{\*\falt  arial};}
+{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f47\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}{\f55\froman\fcharset238\fprq2 Times New Roman CE;}{\f56\froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f58\froman\fcharset161\fprq2 Times New Roman Greek;}{\f59\froman\fcharset162\fprq2 Times New Roman Tur;}{\f60\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f61\fswiss\fcharset238\fprq2 Arial CE{\*\falt  arial};}
+{\f62\fswiss\fcharset204\fprq2 Arial Cyr{\*\falt  arial};}{\f64\fswiss\fcharset161\fprq2 Arial Greek{\*\falt  arial};}{\f65\fswiss\fcharset162\fprq2 Arial Tur{\*\falt  arial};}{\f66\fswiss\fcharset186\fprq2 Arial Baltic{\*\falt  arial};}
+{\f337\fmodern\fcharset238\fprq1 Lucida Console CE;}{\f338\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f340\fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f341\fmodern\fcharset162\fprq1 Lucida Console Tur;}}{\colortbl;\red0\green0\blue0;
+\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;
+\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\nowidctlpar\widctlpar\adjustright \fs20\lang2057 \snext0 Normal;}{\s1\sb360\sa240\keepn\pagebb\nowidctlpar\widctlpar\adjustright 
+\b\f1\fs40\lang2057\kerning28 \sbasedon0 \snext0 heading 1;}{\s2\sb120\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\adjustright \b\f1\fs34\lang2057 \sbasedon0 \snext0 heading 2;}{\s3\sb120\keepn\nowidctlpar\widctlpar\brdrt
+\brdrs\brdrw30\brsp20 \tqr\tx9072\adjustright \b\f1\fs28\lang2057 \sbasedon0 \snext0 heading 3;}{\s4\sb120\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9072\adjustright \b\f1\lang2057 \sbasedon0 \snext0 heading 4;}{
+\s5\keepn\nowidctlpar\widctlpar\adjustright \b\f1\fs20\lang2057 \sbasedon0 \snext0 heading 5;}{\s6\sb240\sa60\nowidctlpar\widctlpar\adjustright \i\f1\fs20\lang2057 \sbasedon0 \snext0 heading 6;}{\s7\sb240\sa60\nowidctlpar\widctlpar\adjustright 
+\f1\fs20\lang2057 \sbasedon0 \snext0 heading 7;}{\s8\sb240\sa60\nowidctlpar\widctlpar\adjustright \i\f1\fs20\lang2057 \sbasedon0 \snext0 heading 8;}{\s9\sb240\sa60\nowidctlpar\widctlpar\adjustright \i\f1\fs18\lang2057 \sbasedon0 \snext0 heading 9;}{\*
+\cs10 \additive Default Paragraph Font;}{\s15\nowidctlpar\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\adjustright \f47\fs16\lang2057 \sbasedon0 \snext15 Code Paragraph;}{\*\cs16 \additive \f47\lang2057 \sbasedon10 Code;}
+{\*\cs17 \additive \i \sbasedon10 Emphasis;}{\*\cs18 \additive \b \sbasedon10 Warning;}{\s19\li567\keep\nowidctlpar\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\adjustright \f47\fs20\lang1024 \sbasedon0 \snext19 Indented Code;}{
+\s20\fi-284\li568\ri567\nowidctlpar\widctlpar{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\ls2047\ilvl10\adjustright \fs20\lang2057 \sbasedon21 \snext20 \sautoupd List Bullet;}{
+\s21\fi-284\li851\ri567\nowidctlpar\widctlpar\adjustright \fs20\lang2057 \sbasedon0 \snext21 List;}{\s22\li567\ri567\nowidctlpar\widctlpar\adjustright \fs20\lang2057 \sbasedon0 \snext22 List Continue;}{
+\s23\fi-284\li568\ri567\nowidctlpar\widctlpar{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec\pnstart1\pnindent283\pnhang{\pntxta ?}}\ls2047\ilvl11\adjustright \fs20\lang2057 \sbasedon21 \snext23 List Number;}{\s24\qc\nowidctlpar\widctlpar\adjustright 
+\fs20\lang2057 \sbasedon0 \snext24 Picture;}{\s25\qc\sb240\sa240\nowidctlpar\widctlpar\adjustright \b\f1\fs72\lang2057 \sbasedon0 \snext25 Title;}{\s26\nowidctlpar\widctlpar\phmrg\posxr\posyt\dxfrtext181\dfrmtxtx181\dfrmtxty0\adjustright \fs20\lang2057 
+\sbasedon0 \snext26 Logo;}{\s27\sb1440\sa1200\sl-460\slmult0\nowidctlpar\widctlpar\adjustright \b\scaps\f1\fs40\lang2057 \sbasedon0 \snext27 Subtitle;}{\s28\sl-200\slmult0\nowidctlpar\widctlpar\adjustright \b\f1\fs20\lang2057 \sbasedon0 \snext28 Version;}
+{\s29\nowidctlpar\widctlpar\adjustright \fs20\lang2057 \sbasedon0 \snext29 Date Published;}{\s30\nowidctlpar\widctlpar\adjustright \b\fs20\lang2057 \sbasedon0 \snext30 Copyright Header;}{\s31\nowidctlpar\widctlpar\adjustright \fs20\lang2057 
+\sbasedon0 \snext31 Copyright Notice;}{\s32\sa1440\sl-960\slmult0\keepn\nowidctlpar\widctlpar\adjustright \b\scaps\f1\fs40\lang2057 \sbasedon0 \snext32 TOC Header;}{\s33\sb480\sa160\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp20 
+\tqr\tx9072\adjustright \b\fs20\lang2057 \sbasedon0 \snext0 \sautoupd toc 1;}{\s34\li221\sb120\keepn\nowidctlpar\widctlpar\tqr\tx9072\adjustright \fs20\lang2057 \sbasedon0 \snext0 \sautoupd toc 2;}{\s35\li442\nowidctlpar\widctlpar\tqr\tx9072\adjustright 
+\f1\fs20\lang2057 \sbasedon0 \snext0 \sautoupd toc 3;}{\s36\li658\nowidctlpar\widctlpar\tqr\tx9072\adjustright \fs20\lang2057 \sbasedon0 \snext0 \sautoupd toc 4;}{\*\cs37 \additive \f1\uld\cf11 \sbasedon10 Hypertext Link;}{\s38\nowidctlpar\widctlpar\brdrr
+\brdrdb\brdrw15\brsp20 \adjustright \f47\fs20\lang2057 \sbasedon0 \snext38 Constant Definition;}{\s39\nowidctlpar\widctlpar\tqc\tx4536\tqr\tx9072\adjustright \fs18\lang2057 \sbasedon0 \snext39 header;}{\s40\nowidctlpar\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\adjustright \fs20\lang2057 \sbasedon0 \snext40 Even Footer Paragraph;}{\s41\nowidctlpar\widctlpar\tqc\tx4536\tqr\tx9072\adjustright \caps\fs18\lang2057 \sbasedon0 \snext41 Even Header Paragraph;}{
+\s42\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\adjustright \fs18\lang2057 \sbasedon39 \snext42 footer;}{\*\cs43 \additive \b \sbasedon10 page number;}{\s44\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 
+\tqc\tx4536\tqr\tx9072\adjustright \fs20\lang2057 \sbasedon0 \snext44 Odd Footer Paragraph;}{\s45\nowidctlpar\widctlpar\tqc\tx4536\tqr\tx9072\adjustright \caps\fs18\lang2057 \sbasedon0 \snext45 Odd Header Paragraph;}{\s46\nowidctlpar\widctlpar\brdrl
+\brdrs\brdrw30\brsp80 \adjustright \fs20\lang2057 \sbasedon0 \snext46 Status;}{\*\cs47 \additive \i \sbasedon10 Glossary Reference;}{\s48\nowidctlpar\widctlpar\adjustright \fs20\lang2057 \sbasedon0 \snext48 Compact;}{\*\cs49 \additive \f1 \sbasedon10 
+App Text;}{\s50\sb240\sa240\keepn\nowidctlpar\widctlpar\adjustright \b\f1\fs40\lang2057\kerning28 \sbasedon1 \snext50 Heading 1 NoSection;}{\*\cs51 \additive \f1 \sbasedon10 Filename;}{
+\s52\fi-284\li1135\ri1134\nowidctlpar\widctlpar{\*\pn \pnlvlblt\ilvl10\ls2047\pnrnot0\pnf3\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}\ls2047\ilvl10\adjustright \fs20\lang2057 \sbasedon0 \snext52 \sautoupd List Bullet 2;}{\*\cs53 \additive \b \sbasedon10 
+Glossary Definition;}{\*\cs54 \additive \i \sbasedon10 Document Name;}{\s55\keep\keepn\nowidctlpar\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\adjustright \f47\fs20\lang2057 \sbasedon0 \snext0 Prototype;}{\*\cs56 
+\additive \scaps \sbasedon10 Key Name;}{\s57\nowidctlpar\widctlpar\tx567\tx1134\tx1701\tx2268\tx2835\tx3402\tx3969\tx4536\tx5103\tx5670\adjustright \f47\fs16\lang2057 \sbasedon0 \snext57 Reduced Code;}{\s58\li851\ri851\keep\nowidctlpar\widctlpar\brdrt
+\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \fs20\lang2057 \sbasedon0 \snext0 Syntax;}{\s59\qc\sb240\sa240\keepn\nowidctlpar\widctlpar\adjustright \b\f1\fs20\lang2057 \sbasedon0 \snext59 Picture Title;}{
+\s60\fi-3119\li3119\nowidctlpar\widctlpar\tx3119\adjustright \fs20\lang2057 \sbasedon0 \snext60 Member List;}{\*\cs61 \additive \i \sbasedon10 Syntax Element;}{\*\cs62 \additive \b\f47 \sbasedon10 Syntax Literal;}{\s63\nowidctlpar\widctlpar\adjustright 
+\fs20\lang2057 \sbasedon0 \snext63 annotation text;}{\*\cs64 \additive \b\f1\uld\cf11 \sbasedon10 Example Link;}{\s65\nowidctlpar\widctlpar\adjustright \b\f1\fs36\lang2057 \sbasedon0 \snext65 TOC 0;}{\*\cs66 \additive \f47\cf2\lang2057 \sbasedon16 
+Resource Code;}{\s67\nowidctlpar\widctlpar\adjustright \f1\fs20\cf6\lang2057 \sbasedon0 \snext67 Converter Directive;}{\s68\nowidctlpar\widctlpar\adjustright \b\f47\fs20\uldb\lang2057 \sbasedon0 \snext0 Platform Dependency;}{\*\cs69 \additive \b\cf10 
+\sbasedon10 Raw HTML;}{\*\cs70 \additive \i\cf14 \sbasedon10 URL Reference;}{\s71\nowidctlpar\widctlpar\adjustright \f1\fs20\ul\cf13\lang2057 \sbasedon0 \snext0 Hypertext Anchor;}{\s72\nowidctlpar\widctlpar\brdrr\brdrs\brdrw45\brsp20 \adjustright 
+\fs20\lang2057 \sbasedon0 \snext72 Member Definition;}{\s73\li567\ri567\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \fs20\lang2057 \sbasedon0 \snext73 Figure Picture;}{\s74\nowidctlpar\widctlpar\brdrl
+\brdrs\brdrw30\brsp80 \adjustright \fs20\cf5\lang2057 \sbasedon46 \snext74 Comment;}{\s75\li567\ri567\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \b\fs20\lang2057 \sbasedon0 \snext75 Figure Caption;}{
+\s76\li567\ri567\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \fs20\lang2057 \sbasedon0 \snext76 Figure Description;}{\s77\li567\ri567\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb
+\brdrs\brdrw15\brsp20 \adjustright \fs20\cf6\lang2057 \sbasedon73 \snext77 Figure Status;}{\s78\li567\ri567\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \f1\fs20\ul\cf13\lang2057 \sbasedon0 \snext78 
+Figure Anchor;}{\*\cs79 \additive \f1\uld\cf12 \sbasedon37 Figure Link;}{\s80\li567\ri567\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \i\fs20\cf10\lang2057 \sbasedon73 \snext80 Figure Directive;}{
+\s81\nowidctlpar\widctlpar\adjustright \fs20\lang2057 \sbasedon0 \snext81 Body Text;}}{\*\listtable{\list\listtemplateid1552041858\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li643\jclisttab\tx643 }{\listname ;}\listid-125}{\list\listtemplateid2124740982\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-120}{\list\listtemplateid333883178\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}
+\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid-119}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 
+\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1325275661}}{\*\listoverridetable{\listoverride\listid-119\listoverridecount0\ls1}{\listoverride\listid-120\listoverridecount0\ls2}{\listoverride\listid-125\listoverridecount0\ls3}
+{\listoverride\listid-119\listoverridecount0\ls4}{\listoverride\listid-120\listoverridecount0\ls5}{\listoverride\listid-125\listoverridecount0\ls6}{\listoverride\listid-119\listoverridecount0\ls7}{\listoverride\listid-120\listoverridecount0\ls8}
+{\listoverride\listid-125\listoverridecount0\ls9}{\listoverride\listid1325275661\listoverridecount0\ls10}}{\info{\title Tools}{\subject Specifying projects with makmake}{\author Preferred Customer}
+{\doccomm The model chapter document.\'0d\'0dHeaders & footers are different for even and odd pages.}{\operator Alastair Bradley}{\creatim\yr2000\mo11\dy8\hr19\min40}{\revtim\yr2000\mo11\dy14\hr14\min25}{\printim\yr1997\mo4\dy18\hr15\min6}{\version6}
+{\edmins72}{\nofpages2}{\nofwords505}{\nofchars2883}{\*\company Dell Computer Corporation}{\nofcharsws0}{\vern71}}\paperw11907\paperh16840\margl851\margr851\margt1134\margb1134\gutter1134 
+\widowctrl\ftnbj\aenddoc\linkstyles\hyphcaps0\formshade\viewkind1\viewscale140 \fet0\sectd \binfsxn1\binsxn1\psz9\linex576\headery709\footery709\colsx709\endnhere\sectdefaultcl {\header \pard\plain \s39\nowidctlpar\widctlpar
+\tqc\tx4536\tqr\tx9072\adjustright \fs18\lang2057 {\field{\*\fldinst { TITLE  \\* MERGEFORMAT }}{\fldrslt {Tools}}}{\tab Company Confidential\tab EON SDK, Copyright \'a9 1999, Symbian Ltd
+\par }}{\footer \pard\plain \s42\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4536\tqr\tx9072\adjustright \fs18\lang2057 {\field{\*\fldinst { SUBJECT  \\* MERGEFORMAT }}{\fldrslt {Specifying projects with makmake}}}{\tab Page }{\field{\*\fldinst {
+ PAGE  \\* MERGEFORMAT }}{\fldrslt {\lang1024 2}}}{\tab Last saved }{\field{\*\fldinst { SAVEDATE  \\* MERGEFORMAT }}{\fldrslt {\lang1024 14/11/00 13:40}}}{
+\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta ?}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta ?}}
+{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl8
+\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb ?}{\pntxta ?}}\pard\plain \s1\sb360\sa240\keepn\pagebb\nowidctlpar\widctlpar\outlinelevel0\adjustright \b\f1\fs40\lang2057\kerning28 
+{\field\fldedit{\*\fldinst { SUBJECT  \\* MERGEFORMAT }}{\fldrslt {Specifying builds with metabld}}}{
+\par }\pard\plain \s71\nowidctlpar\widctlpar\adjustright \f1\fs20\ul\cf13\lang2057 {tools.metabld
+\par }\pard\plain \s74\nowidctlpar\widctlpar\brdrl\brdrs\brdrw30\brsp80 \adjustright \fs20\cf5\lang2057 {this chapter documents }{\cs51\f1 metabld}{ to e32toolp release 222 level.
+\par }\pard\plain \s2\sb120\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\outlinelevel1\adjustright \b\f1\fs34\lang2057 {Overview
+\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang2057 {The }{\cs51\f1 metabld}{ tool can be used to carry out a set of commands, usually }{\cs51\f1 abld}{ commands, across several components. 
+\par }\pard\plain \s3\sb120\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\outlinelevel2\adjustright \b\f1\fs28\lang2057 {Metabld Invocation syntax
+\par }\pard\plain \s58\li851\ri851\keep\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \fs20\lang2057 {\cs62\b\f47 metabld}{ [ }{\cs61\i metabld config file }{] [ }{\cs61\i command }{]
+\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang2057 {
+\par where
+\par }\trowd \trgaph108\trleft-108 \clvertalt\cltxlrtb \cellx2268\clvertalt\cltxlrtb \cellx9179\pard \nowidctlpar\widctlpar\intbl\adjustright {\cs61\i metabld config file}{\cell is a file which can optionally be used to control metabld\cell }\pard 
+\nowidctlpar\widctlpar\intbl\adjustright {\row }\trowd \trgaph108\trleft-108 \clvertalt\cltxlrtb \cellx2268\clvertalt\cltxlrtb \cellx9179\pard \nowidctlpar\widctlpar\intbl\adjustright {\cs61\i command\cell }{
+is an optional command which will be passed on to }{\cs51\f1 abld}{ for the relevant directories\cell }\pard \nowidctlpar\widctlpar\intbl\adjustright {\row }\pard \nowidctlpar\widctlpar\adjustright {\cs51 Type }{\cs51\f1 metabld }{\cs51 
+without any parameters for a brief description of its usage.
+\par }{\cs51\f1 metabld}{\cs51  mostly makes use of two inputs: a set of commands, and a set of directories from which to carry out these commands.  Both these inputs can be specified in a }{\cs51\f1 metabld}{\cs51  configuration (.}{\cs51\f1 mbc}{\cs51 ) f
+ile.  If a command is specified on the }{\cs51\f1 metabld}{\cs51  command-line, then this command will be executed instead of any commands specified with a .}{\cs51\f1 mbc}{\cs51  file.  If no directories are specified with a .}{\cs51\f1 mbc}{\cs51 
+ file, then the current drive will be searched for directories containing a }{\cs51\f1 bldmake}{\cs51  configuration (}{\cs51\f1 bld.inf}{\cs51 ) file, and the specified commands will be carried out from the directories found.  For example, the command 
+\ldblquote }{\cs51\f1 metabld abld export}{\cs51 \rdblquote  will carry out the }{\cs51\f1 abld export}{\cs51  command from each of the directories containing a }{\cs51\f1 bld.inf}{\cs51  file on the current drive.
+\par metabld configuration files can be specified on the metabld command-line in one of two ways:
+\par {\pntext\pard\plain\cs51\f3\fs20\lang2057 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li495\nowidctlpar\widctlpar\jclisttab\tx495{\*\pn \pnlvlblt\ilvl0\ls10\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls10\adjustright {\cs51 
+The base of the filename without a path can be specified when the file is in the directory specified by the EPOCROOT environment variable.  }{\cs51\f1 metabld}{\cs51  always checks whether the first argument in it\rquote 
+s command line is the base-name of a file in the EPOCROOT directory.
+\par {\pntext\pard\plain\cs51\f3\fs20\lang2057 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li495\nowidctlpar\widctlpar\jclisttab\tx495{\*\pn \pnlvlblt\ilvl0\ls10\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls10\adjustright {\cs51 
+The filename can be specified in full with either an absolute path or a path relative to the current directory (the inclusion of the .}{\cs51\f1 mbc}{\cs51  extension is essential in this case).
+\par }\pard\plain \s2\sb120\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\outlinelevel1\adjustright \b\f1\fs34\lang2057 {Structure of metabld configuration files
+\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang2057 {A }{\cs51\f1 metabld }{\cs51 configuration }{\cs51\f1 .mbc}{ }{\cs51 file}{ has the form
+\par }\pard\plain \s58\li851\ri851\keep\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \fs20\lang2057 {\cs61\i wholefile}{ :\line \tab }{\cs61\i section-header\line \tab \tab section-data\line sections}{ :\line |\tab 
+}{\cs61\i section_commands}{\line |\tab }{\cs61\i section_dirs}{\line 
+\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang2057 {Each section header can appear any number of times in the file.  The section headers and their data are case-insensitive.
+\par }{\b Note:}{ a trailing backslash is used to indicate a line continuation.
+\par Use the C++ style comment syntax for comments.  Since the files are preprocessed, they can #include other configuration files.  For this reason duplicate directories in the files are ignored.
+\par }\pard\plain \s3\sb120\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\outlinelevel2\adjustright \b\f1\fs28\lang2057 {Specifying commands
+\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang2057 {In the }{\cs62\b\f47 section_commands}{ section, list the commands to be carried out.
+\par }\pard\plain \s58\li851\ri851\keep\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \fs20\lang2057 {\cs61\i section_commands}{ :\line \tab }{\cs61\i <command_1>\line \tab <command_2>\line \tab <command_3>\line 
+\tab \'85\line \tab <command_n>}{
+\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang2057 {Each of the commands specified is carried out in the order specified.  If several directories are specified in the }{\i section_dirs}{
+ section, then each command is carried out from each directory in turn before the next command is carried out.  Commands not to be carried out from each directory in turn can be carried out on a one-off basis by specifying them with the }{\f1 oneoff}{
+ keyword in the section_}{\i commands}{ section:}{\i 
+\par }\pard\plain \s58\li851\ri851\keep\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \fs20\lang2057 {\cs61\f1 oneoff}{\cs61\i  <start_directory> <command>}{
+\par }\pard\plain \s29\nowidctlpar\widctlpar\adjustright \fs20\lang2057 {The start directory can be absolute (begin with a backslash) or relative to the configuration file directory.  It can be just \ldblquote .\rdblquote .
+\par }\pard\plain \s3\sb120\keepn\nowidctlpar\widctlpar\brdrt\brdrs\brdrw30\brsp20 \tqr\tx9072\outlinelevel2\adjustright \b\f1\fs28\lang2057 {Specifying directories
+\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang2057 {In the }{\cs62\b\f47 section_dirs}{ section, list the directories in which to carry out the commands.
+\par }\pard\plain \s58\li851\ri851\keep\nowidctlpar\widctlpar\brdrt\brdrs\brdrw15\brsp20 \brdrb\brdrs\brdrw15\brsp20 \adjustright \fs20\lang2057 {\cs61\i section_dirs}{ :\line \tab }{\cs61\i  <start_directory_1>\line \tab <start_directory_2>\line \tab 
+<start_directory_3>
+\par }{\tab }{\cs61\i  \'85\line }{\tab }{\cs61\i  <start_directory_n>}{
+\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20\lang2057 {Directories can be relative to the configuration file or absolute, but they mustn\rquote t begin with a drive letter.  They must not end in a backslash either, as this will b
+e interpreted as a line continuation by the pre-processor.
+\par }\pard\plain \s29\nowidctlpar\widctlpar\adjustright \fs20\lang2057 {
+\par }}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/mmp_notes.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,36 @@
+ResourceRef
+	Source =>	full path to source file
+	Lang =>		language code to use when compiling this resource
+	Uids =>		uids for this resource file (if any)
+	Hdr =>		anything, indicating that a resource header file is required
+	BaseTrg =>	base of target name
+	TrgPath =>	target path in the emulated filesystem
+	
+	Trg =>		target name for this resource, in the form name.Rxx to match LANG
+
+Notes;
+TrgPath is filled in at the end for any resource which lacks one
+If Lang is not specified, copies of this ResourceRef are made for each of the 
+languages specified in the LANG statement.
+Trg is constructed from the TrgPath, BaseTrg and Lang information.
+
+
+BitmapRef
+	Source =>	list of bitmap source references, each of the form
+		Src =>		full path of BMP file
+		ClDepth =>	colour depth as specified in MMP file
+	TrgPath =>	target path in the emulated filesystem
+	Trg =>		target name for this bitmap as specified in the MMP file
+	Hdr =>		anything, indicating that a bitmap header should be generated
+
+AifRef
+	Trg =>		target name as specified in the MMP file. Defect: may include directory
+	Dir =>		source path
+	Resrc =>	resource file name relative to source path
+	ClDepth =>	colour depth to apply to bitmap files (design defect!)
+	BitMaps =>	list of bitmap files
+
+SourceRef
+	SrcPath => full path to source file
+	CurFile => full source file name
+	BaseTrg => base of source file name
Binary file sbsv1/abld/doc/rcomp.doc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/doc/zephyr_buildrom_changes.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,33 @@
+Zephyr/Cedar BUILDROM
+2003/09/03
+
+BUILDROM has been extended to support the building of 'mostly-thumb' ROMs and mixed ROMs.
+
+1. Mostly Thumb ROMs.
+
+In Cedar for Zephyr BUILDROM supports the following macros for
+specifying which build to construct the ROM from:
+	   _ARM4 - The ARM4 build (eventually this will be removed)
+	   _ARM4T - The 'mostly-thumb' ARM4T.
+
+2. Mixed ROMs
+
+Mixed ROMs have a kernel built for a different ABI than that targeted
+by user-side code. In practice this means an EABI kernel and GCC98r2
+user-side code. By default BUILDROM use the same ABI for the kernel as
+specified for user-side code (i.e. one of ARM4 or ARM4T). The default
+kernel ABI can be overriden by supplying the appropriate value for
+_KABI in BUILDROM's commandline e.g. -D_KABI=ARMV5.
+
+The following example builds a 'mostly thumb' techview ROM with an
+EABI kernel compiled specifically for XScale:
+
+     buildrom lubbock -D_ARM4T -D_KABI=XSCALE -o\epoc32\techview.arm4t.xscale.img \epoc32\rom\include\techview
+
+The above example shows that the EABI kernel does not have to be the
+default ARMV5 build. BUILDROM supports customizations of the default
+ARMV5 build. It is also worth noting that the XScale build does not
+have to be complete. If BUILDROM cannot find an XScale file it will
+look for the equivalent file from the build that has been
+customized. Currently this will always be ARMV5, since this is the
+only build that supports customization at this time.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/_secure_E32Env.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,65 @@
+# 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:
+# E32ENV.PM
+# Contains information for makmake and associated e32tools perl programs
+# within the Epoc32 Environment
+# 
+#
+
+package E32env;
+
+
+use vars qw(%Data);
+
+BEGIN {
+	my $epocroot = $ENV{EPOCROOT};
+	die "ERROR: Must set the EPOCROOT environment variable\n" if (!defined($epocroot));
+	$epocroot =~ s-/-\\-go;	# for those working with UNIX shells
+	$epocroot =~ s/^ +//;
+	$epocroot =~ s/ +$//;
+	$ENV{EPOCROOT} = $epocroot;
+	die "ERROR: EPOCROOT must not include a drive letter\n" if ($epocroot =~ /^.:/);
+	die "ERROR: EPOCROOT must be an absolute path without a drive letter\n" if ($epocroot !~ /^\\/);
+	die "ERROR: EPOCROOT must not be a UNC path\n" if ($epocroot =~ /^\\\\/);
+	die "ERROR: EPOCROOT must end with a backslash\n" if ($epocroot !~ /\\$/);
+ 	open PIPE, "set EPOCROOT |";
+ 	my $found=0;
+	while (<PIPE>) {
+		if (/^EPOCROOT=.*/) {
+			$found=1;
+			last;
+		}
+	}
+	close PIPE;
+	die "EPOCROOT environment variable must be capitalised\n" if (!$found);
+	print "WARNING: EPOCROOT does not specify an existing directory\n" if (!-d $epocroot);
+
+	$epocroot=~ s-\\$--;		# chop trailing \\
+
+	$Data{EPOCPath} = $epocroot."\\epoc32\\";
+
+	$Data{EPOCDataPath} = $epocroot."\\epoc32\\data\\";
+	$Data{EPOCIncPath} = $epocroot."\\epoc32\\include\\";
+	$Data{BldPath} = $epocroot."\\EPOC32\\BUILD\\";
+	$Data{LinkPath} = $epocroot."\\epoc32\\release\\";
+	$Data{RelPath} = $epocroot."\\epoc32\\release\\";
+	$Data{EPOCToolsPath} = $epocroot."\\epoc32\\tools\\";
+	$Data{RomPath} = $epocroot."\\epoc32\\rom\\";
+
+	$Data{DataPath} = "z\\system\\data\\";
+	
+	$Data{SecurePlatform} = 1;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/armasm2as.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,472 @@
+# Copyright (c) 2002-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:
+# Mike Kinghan, mikek@symbian.org, for Symbian Foundation
+#
+# Description:
+# e32toolp\e32util\armasm2as.pl
+# Convert an ARMASM assembler source or include file to AS format
+# Syntax:
+# perl armasm2as.pl <input> <output>
+# 
+#
+
+if (scalar(@ARGV)!=2) {
+	die "perl armasm2as.pl <input> <output>\n";
+}
+my ($infile, $outfile) = @ARGV;
+open IN, $infile or die "Can't open $infile for input\n";
+my $gccfile;
+my @input;
+while (<IN>) {
+	push @input, $_;
+	next if defined($gccfile);
+	next if (/^\s*$/);
+	if (/^\s*\@/) {
+		$gccfile = 1;	# If first non-blank line starts with @, assume already in GCC format
+	} else {
+		$gccfile = 0;
+	}
+}
+close IN;
+my @output;
+my $outref = \@output;
+if ($gccfile) {
+	$outref = \@input;
+} else {
+	process(\@input, \@output);
+}
+open OUT, ">$outfile" or die "Can't open $outfile for write\n";
+print OUT @$outref;
+close OUT;
+
+
+
+sub process($$) {
+	my $level=0;
+	my @block;
+	my ($inref, $outref) = @_;
+	foreach $line (@$inref) {
+		$line=~s/\s*$//;
+		my $comment;
+		if ($line =~ /\;(.*)$/o) {
+			$comment = $1;
+			$line =~ s/\;(.*)$//o;
+			if ($line =~ /^\s*$/o and $level==0) {
+				push @$outref, "$line\@$comment\n";
+				next;
+			}
+			$comment = "\t\@$comment";
+		}
+		if ($line =~ /^\s+PRESERVE8/) {
+			next;
+		}
+		if ($level == 1) {
+			if ($line =~ /^\s+MEND/i) {
+				process_macro(\@block, $outref);
+				$level = 0;
+			} else {
+				push @block, $line;
+			}
+			next;
+		} elsif ($level == 0) {
+			if ($line =~ /^\s+MACRO\s*$/i) {
+				@block = ();
+				$level = 1;
+				next;
+			}
+		}
+		if ($line =~ /^\s+GBLL\s+(\S+)/i) {
+			push @$outref, "\t.set\t$1, 0$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+GBLA\s+(\S+)/i) {
+			push @$outref, "\t.set\t$1, 0$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+INCLUDE\s+(\S+)/i) {
+			my $arg = $1;
+			if ($arg =~ /(\w+)\.inc/io) {
+				$arg = $1.'.ginc';
+			}
+			push @$outref, "\t.include\t\"$arg\"$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+IMPORT\s+(\S+)/i) {
+			push @$outref, "\t.extern\t$1$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+EXPORT\s+(\S+)/i) {
+			push @$outref, "\t.global\t$1$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+ELSE/i or $line =~ /^\s+\|/i ) {
+			push @$outref, "\t.else$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+ENDIF/i or $line =~ /^\s+\]/i) {
+			push @$outref, "\t.endif$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+LTORG/i) {
+			push @$outref, "\t.ltorg$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+END$/i) {
+			next;
+		}
+		if ($line =~ /^\s+\!\s*(\d+)\,\s*(.*?)$/) {
+			my $msg = $2;
+			push @$outref, "\t.print $msg\n\t.err$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+INIT_LOGICAL_SYMBOL\s+(\w+)(.*?)$/) {
+			process_init_logical_symbol($1, $2, $outref, $comment);
+			next;
+		}
+		if ($line =~ /^\s+INIT_NUMERIC_SYMBOL\s+(\w+)\s*\,\s*(.*?)$/) {
+			process_init_numeric_symbol($1, $2, $outref, $comment);
+			next;
+		}
+		if ($line =~ /^\s+AREA\s+(.*?)$/) {
+			process_area($1, $outref, $comment);
+			next;
+		}
+		if ($line =~ /^\s+\%\s+(.*?)$/) {
+			my $expr = process_numeric_expr($1, $outref);
+			push @$outref, "\t.space $expr$comment\n";
+			next;
+		}
+		if ($line =~ /^\s+ALIGN\s*(.*?)$/) {
+			process_align($1, $outref, $comment);
+			next;
+		}
+
+		# Strip label if there is one
+		my $label;
+		if ($line =~ /^(\S+)\s*(.*?)$/) {
+			$label = $1;
+			$line = $2;
+		} else {
+			$line =~ s/^\s*//;
+		}
+		if ($line =~ /^SETL\s+(\S+)/i) {
+			my $val = $1;
+			my $expr = process_logical_expr($val, $outref);
+			push @$outref, "\t.set\t$label,$expr$comment\n";
+			next;
+		}
+		if ($line =~ /^SETA\s+(.*?)$/i) {
+			my $val = $1;
+			my $expr = process_numeric_expr($val, $outref);
+			push @$outref, "\t.set\t$label,$expr$comment\n";
+			next;
+		}
+		if ($line =~ /^(EQU|\*)\s+(.*?)$/i) {
+			my $val = $2;
+			my $expr = process_numeric_expr($val, $outref);
+			push @$outref, "\t.equ\t$label,$expr$comment\n";
+			next;
+		}
+		if ($line =~ /^(if|\[)\s+(.*?)$/i) {
+			my $cond = $2;
+			if ($cond =~ /^\s*(\:LNOT\:)?\s*\:DEF\:\s*(.*?)$/i) {
+				my $n = $1;
+				my $sym = $2;
+				if ($sym =~ /^(\w|\\|\:)+$/) {
+					if (uc($n) eq ':LNOT:') {
+						push @$outref, "\t.ifndef\t$sym$comment\n";
+					} else {
+						push @$outref, "\t.ifdef\t$sym$comment\n";
+					}
+					next;
+				}
+			}
+			my $expr = process_logical_expr($cond, $outref);
+			push @$outref, "\t.if $expr$comment\n";
+			next;
+		}
+		if ($line =~ /^(\=|DCB)\s*(.*?)$/) {
+			process_dcb($label, $2, $outref, $comment);
+			next;
+		}
+		if ($line =~ /^DCW\s*(.*?)$/) {
+			process_dcw($label, $1, $outref, $comment);
+			next;
+		}
+		if ($line =~ /^DCD\s*(.*?)$/) {
+			process_dcd($label, $1, $outref, $comment);
+			next;
+		}
+		if ($line =~ /^ROUT\s*$/) {
+			$line = '';
+		}
+		if ($line =~ /^(\w+)\s+\%(\w+)\s*$/o) {
+			# ARMASM local label reference
+			my $inst = $1;
+			my $llab = $2;
+			if ($llab =~ /F\w?(\d+)/o) {
+				$line = "$inst $1f";
+			} elsif ($llab =~ /B\w?(\d+)/o) {
+				$line = "$inst $1b";
+			} else {
+				die "Can't determine local label direction\n";
+			}
+		}
+		if ($line =~ /^(\w+)\s+(\w+)\s*\,\s*\%(\w+)\s*$/o) {
+			# ARMASM local label reference
+			my $inst = $1;
+			my $op1 = $2;
+			my $llab = $3;
+			if ($llab =~ /F\w?(\d+)/o) {
+				$line = "$inst $op1\, $1f";
+			} elsif ($llab =~ /B\w?(\d+)/o) {
+				$line = "$inst $op1\, $1b";
+			} else {
+				die "Can't determine local label direction\n";
+			}
+		}
+
+		$line = process_numeric_expr($line, $outref);
+		if (defined($label)) {
+			push @$outref, "$label\:\t$line$comment\n";
+		} else {
+			push @$outref, "\t$line$comment\n";
+		}
+	}
+}
+
+
+sub process_macro($$) {
+	my ($inref, $outref) = @_;
+	my $line;
+	while(1) {
+		$line = shift @$inref;
+		last if ($line !~ /^\s*$/);
+	}
+	unless ($line =~ /^\s+(\w+)\s*(.*?)$/) {
+		die "Bad macro - no name\n";
+	}
+	my $macro_name = $1;
+	if ($macro_name eq 'INIT_LOGICAL_SYMBOL' or $macro_name eq 'INIT_NUMERIC_SYMBOL') {
+		return;
+	}
+	$line = $2;
+	my @args = split ( '\s*,\s*', $line );
+	foreach (@args) {
+		die "Bad macro argument name\n" unless (/^\$\w+$/);
+		s/^\$//;
+	}
+	my $ev = '';
+	foreach $arg (@args) {
+		$ev.="s/\\\$$arg(\\W\|\$)/\\\\$arg\$1/go;";
+	}
+	foreach (@$inref) {
+		eval $ev;
+	}
+	push @$outref, "\t.macro $macro_name ".join(',',@args)."\n";
+	process($inref, $outref);
+	push @$outref, "\t.endm\n";
+}
+
+
+sub process_logical_expr($$) {
+	my ($val, $outref) = @_;
+	$val = process_numeric_expr($val, $outref);
+	$val =~ s/\<\=/________LE________/g;	# protect <= and >= during expansion of =
+	$val =~ s/\>\=/________GE________/g;
+	$val =~ s/\=/\=\=/g;					# equality operator is = on ARMASM, == on AS
+	$val =~ s/________LE________/\<\=/g;
+	$val =~ s/________GE________/\>\=/g;
+	$val =~ s/\{TRUE\}/(1)/g;
+	$val =~ s/\{FALSE\}/(0)/g;
+
+	my @lops = split( /(\s*\:LAND\:\s*|\s*\:LOR\:\s*|\s*\:LNOT\:\s*|\s*\:DEF\:\s*|\s*\(\s*|\s*\)\s*)/, $val );
+	foreach (@lops) {
+		s/\s*\:LAND\:\s*/\:LAND\:/go;
+		s/\s*\:LOR\:\s*/\:LOR\:/go;
+		s/\s*\:LNOT\:\s*/\:LNOT\:/go;
+		s/\s*\:DEF\:\s*/\:DEF\:/go;
+		s/\s*\(\s*/\(/go;
+		s/\s*\)\s*/\)/go;
+	}
+	my @lops2;
+	while (scalar (@lops)) {
+		my $x = shift @lops;
+		if ($x eq ':DEF:') {
+			my $sym = shift @lops;
+			$sym =~ s/^\s*//;
+			$sym =~ s/\s*$//;
+			if ($sym =~ /^(\w|\$|\\)+$/) {
+				push @$outref, "\t.ifdef $sym\n\t.set __defined__$sym, 1\n\t.else\n\t.set __defined__$sym, 0\n\t.endif\n";
+				push @lops2, " __defined__$sym ";
+			} else {
+				die "Bad :DEF: operand $sym\n";
+			}
+		} elsif ($x eq ':LAND:') {
+			push @lops2, ' && ';
+		} elsif ($x eq ':LOR:') {
+			push @lops2, ' || ';
+		} else {
+			push @lops2, $x;
+		}
+	}
+	my @lops3;
+	while (scalar (@lops2)) {
+		my $x = shift @lops2;
+		if ($x eq ':LNOT:') {
+			my $operand = shift @lops2;
+			while (@lops2 && $operand =~ /^\s*$/) {
+				$operand = shift @lops2;
+			}
+			if ($operand eq '(') {
+				my $balance = 1;
+				my $compound = $operand;
+				while($balance > 0 && @lops2) {
+					$operand = shift @lops2;
+					if ($operand eq '(') {
+						++$balance;
+					}
+					elsif ($operand eq ')') {
+						--$balance;
+					}
+					$compound .= $operand;
+				}
+				push @lops3, "(0==$compound)";
+			} 
+			else {
+				push @lops3, "(0==($operand))";
+			}
+		} else {
+			push @lops3, $x;
+		}
+	}
+	return join('',@lops3);
+}
+
+sub process_numeric_expr($$) {
+	my ($val, $outref) = @_;
+	$val =~ s/\&/0x/g;			# ARMASM accepts hex numbers starting with & or 0x, AS only accepts 0x
+	$val =~ s/(\W|^)2_([0|1]+)(\W|$)/$1 0b$2$3/g;	# Binary numbers start with 2_ on ARMASM, 0b on AS
+	$val =~ s/\:AND\:/\&/g;
+	$val =~ s/\:OR\:/\|/g;
+	$val =~ s/\:SHL\:/\<\</g;
+	$val =~ s/\:SHR\:/\>\>/g;
+	return $val;
+}
+
+sub process_init_logical_symbol($$$$) {
+	my ($name, $rest, $outref, $comment) = @_;
+	my $counter;
+	if ($rest =~ /^\s*\,\s*(\w+)\s*$/) {
+		$counter = $1;
+	} elsif ($rest !~ /^\s*$/) {
+		die "Bad INIT_LOGICAL_SYMBOL\n";
+	}
+	push @$outref, "\t.ifndef $name$comment\n\t.set $name, 0\n\t.else\n\t.set $name, 1\n";
+	if ($counter) {
+		push @$outref, "\t.set $counter, $counter \+ 1\n";
+	}
+	push @$outref, "\t.endif\n";
+}
+
+sub process_init_numeric_symbol($$$$) {
+	my ($name, $value, $outref, $comment) = @_;
+	my $expr = process_numeric_expr($value, $outref);
+	push @$outref, "\t.ifndef $name$comment\n\t.set $name, $expr\n\t.endif\n";
+}
+
+sub process_area($$$) {
+	my ($line, $outref, $comment) = @_;
+	my @args = split(',',$line);
+	my $align = 0;
+	foreach (@args) {
+		if (/^\s*ALIGN\s*\=\s*(\d+)\s*$/) {
+			$align = $1;
+		}
+	}
+	push @$outref, "\t.text$comment\n\t.p2align $align\n";
+}
+
+sub process_align($$$) {
+	my ($line, $outref, $comment) = @_;
+	if ($line =~ /^\s*$/o) {
+		push @$outref, "\t.align$comment\n";
+	} else {
+		push @$outref, "\t.balign $line$comment\n";
+	}
+}
+
+sub process_dcb($$$$) {
+	my ($label, $args, $outref, $comment) = @_;
+	if (defined($label)) {
+		push @$outref, "$label\:";
+	}
+	while ($args !~ /^\s*$/) {
+		my $arg;
+		$args =~ s/^\s*//;
+		if ($args =~ /^\"/) {
+			$args =~ s/\\\"/________ESCAPED_QUOTE________/go;
+			$args =~ /\"(.*?)\"\s*(.*?)$/o or die "Unterminated string literal\n";
+			$arg = $1;
+			$args = $2;
+			$arg =~ s/________ESCAPED_QUOTE________/\\\"/go;
+			push @$outref, "\t.ascii \"$arg\"$comment\n";
+			undef $comment;
+			last if ($args !~ /\s*\,(.*?)$/o);
+			$args = $1;
+		} else {
+			$args =~ /(.*?)\s*(\,|$)(.*?)$/o;
+			$arg = $1;
+			$args = $3;
+			my $expr = process_numeric_expr($arg, $outref);
+			push @$outref, "\t.byte $expr$comment\n";
+			undef $comment;
+		}
+	}
+}
+
+sub process_dcw($$$$) {
+	my ($label, $args, $outref, $comment) = @_;
+	if (defined($label)) {
+		push @$outref, "$label\:";
+	}
+	while ($args !~ /^\s*$/) {
+		my $arg;
+		$args =~ s/^\s*//;
+		$args =~ /(.*?)\s*(\,|$)(.*?)$/o;
+		$arg = $1;
+		$args = $3;
+		my $expr = process_numeric_expr($arg, $outref);
+		push @$outref, "\t.hword $expr$comment\n";
+		undef $comment;
+	}
+}
+
+sub process_dcd($$$$) {
+	my ($label, $args, $outref, $comment) = @_;
+	if (defined($label)) {
+		push @$outref, "$label\:";
+	}
+	while ($args !~ /^\s*$/) {
+		my $arg;
+		$args =~ s/^\s*//;
+		$args =~ /(.*?)\s*(\,|$)(.*?)$/o;
+		$arg = $1;
+		$args = $3;
+		my $expr = process_numeric_expr($arg, $outref);
+		push @$outref, "\t.word $expr$comment\n";
+		undef $comment;
+	}
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/checkgcc.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,99 @@
+# 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:
+# module for checking gcc is set up correctly
+# 
+#
+
+package CheckGcc;
+
+use Preprocessor;
+
+
+sub CheckGcc_Default()
+{
+ 	# die if CPP.EXE (or whatever) in a dodgy place in the path
+	my $pbp = $ENV{PBUILDPID};
+	my @Paths=split ';', $ENV{Path};
+	unshift @Paths,'.';	# add the current directory
+	foreach (@Paths) {
+		s-/-\\-go;	# for those working with UNIX shells
+		s-^(.*[^\\])$-$1\\-o;   # ensure path ends with a backslash
+		if ((-e $_.'CPP.EXE') or (-e $_.'CPP.BAT') or (-e $_.'CPP.CMD')) {
+			unless (/\\GCC(\w\w)?\\BIN\\$/i) {
+				unless (lc($1) eq lc($pbp)) {
+					die
+						"ERROR: First CPP executable found in path is in $_,\n",
+						"but the required CPP.EXE was expected to be found in a directory\n",
+						"with a name ending in \\GCC$pbp\\BIN\\, where the Cygnus tools\n",
+						"this program depends upon are stored.\n",
+						"Is your path set up correctly?\n"
+					;
+				}
+			}
+			return;
+		}
+	}
+	die "ERROR: CPP executable not found in path\n";
+}
+
+sub CheckGcc_Generic()
+{
+	# die if CPP.EXE (or whatever pre processor) in a dodgy place in the path
+
+	my @Paths=split ';', $ENV{Path};
+	unshift @Paths,'.';	# add the current directory
+
+	my $exe = &PreprocessorToUseExe();
+	my $path = &PreprocessorToUsePath();
+	
+	foreach (@Paths) {
+		s-/-\\-go;	# for those working with UNIX shells
+		s-^(.*[^\\])$-$1\\-o;   # ensure path ends with a backslash
+		s-$-$path-;	# add in the path relative to gcc\bin.
+		if ((-e $_.$exe.'.EXE') or (-e $_.$exe.'.BAT') or (-e $_.$exe.'.CMD')) {
+			unless (/\\EPOC32\\TOOLS\\\Q$path\E$/i) {
+				die
+					"ERROR: First $exe executable found in path is in $_,\n",
+					"but the required $exe.EXE was expected to be found in a directory\n",
+					"with a name ending in \\EPOC32\\TOOLS\\$path, where the tools\n",
+					"this program depends upon are stored.\n",
+					"Is your path set up correctly?\n"
+				;
+			}
+			return;
+		}
+	}
+	die "ERROR: $exe executable not found in path\n";
+
+}
+BEGIN {
+	my $preprocessor_to_use = &PreprocessorToUseId();
+	
+	if ( $preprocessor_to_use eq "DEFAULT" )
+	{
+		&CheckGcc_Default();	# pre processor & cpp same. 
+	}
+	elsif ( $preprocessor_to_use eq "MINGW_NO_CYGWIN" )
+	{
+		&CheckGcc_Generic();	# check for preprocessor.
+	}
+	else
+	{
+		die("CHECKGCC.PM :  error should never happen\n");
+	}
+}
+
+
+1;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/checksource.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,170 @@
+# Copyright (c) 2005-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:
+# Front-end to routines checking that source matches filename policy constraints
+# 
+#
+
+use FindBin;
+use Cwd;
+use Getopt::Long qw(:config posix_default);		#permits "+" in arguments, rather than as an option identifier
+use lib $FindBin::Bin;
+use CheckSource;
+use Pathutl;
+
+my $preprocessCall = "cpp.exe -w -undef -nostdinc -+ -dI";
+
+my $verbose = 0;
+
+my $preprocess = 0;
+my $parsefile = 0;
+my $metadata = 0;
+
+GetOptions ('preprocess|pp' => \$preprocess, 'parsefile|pf' => \$parsefile, 'metadata|md' => \$metadata);
+
+my %warnings;
+
+$verbose = 1 if $ENV{CHECKSOURCE_VERBOSE};
+
+
+if (!@ARGV)
+	{
+	print ("\nchecksource.pl --preprocess|--parsefile|--metadata args\n\n");
+	}
+elsif ($preprocess)
+	{
+	my $PREPROCESSPIPE;
+	open PREPROCESSPIPE,"$preprocessCall @ARGV |" or die "ERROR: Can't invoke preprocessor for checksource processing.\n";
+
+	my %processedIncludes;
+	
+	my %homelessInclude;
+	$homelessInclude{REFERENCE} = "";
+
+	my $lineNumber = 0;
+	my $currentFile = "";
+
+	print "Preprocessing file    : ".$ARGV[scalar(@ARGV)-1]."\n" if ($verbose);
+
+	while (<PREPROCESSPIPE>)
+		{
+		if (/^\s*$/o)
+			{
+			$lineNumber++;
+			next;
+			}	
+		elsif (/^# (\d+) "(.*)"( \d+)?/o)
+			{
+			$lineNumber = scalar $1;
+			$currentFile=$2;
+			$currentFile=~s-\\\\-\\-go;
+			$currentFile=~s-\\\/-\\-go;
+			$currentFile=~s-\/\\-\\-go;
+			$currentFile=~s-\/\/-\\-go;
+			$currentFile=~s/\//\\/g;
+			$currentFile=~s/^\w://;
+			}
+
+		if ($homelessInclude{REFERENCE})
+			{
+			# Resolve #include references using "locating" comments in CPP output.  These may either follow the reference directly,
+			# or may have appeared earlier in prior CPP processing
+			if ($currentFile =~ /$homelessInclude{SEARCH}$/i)
+				{
+				CheckSource_Physical (%warnings, $homelessInclude{SOURCEFILE}, "#include", $homelessInclude{REFERENCE}, $homelessInclude{LINENUMBER}, $currentFile, $verbose);
+				$processedIncludes{lc($currentFile)} = 1;
+				}
+			else
+				{
+				my @foundProcessedIncludes;
+				foreach my $processedInclude (keys %processedIncludes)
+					{
+					push @foundProcessedIncludes, $processedInclude if ($processedInclude =~ /$homelessInclude{SEARCH}$/i);
+					}
+		
+				if (@foundProcessedIncludes == 1)
+					{
+					CheckSource_Physical  (%warnings, $homelessInclude{SOURCEFILE}, "#include", $homelessInclude{REFERENCE}, $homelessInclude{LINENUMBER}, $foundProcessedIncludes[0], $verbose);
+					}
+				elsif ((@foundProcessedIncludes > 1) && $verbose)
+					{
+					print ("WARNING: Multiple matches for #include reference $homelessInclude{REFERENCE} : $homelessInclude{SOURCEFILE}($homelessInclude{LINENUMBER})\n");
+					print "\t$_\n" foreach (@foundProcessedIncludes);
+					}
+				elsif ($verbose)
+					{
+					print ("WARNING: Couldn't find #include reference $homelessInclude{REFERENCE} : $homelessInclude{SOURCEFILE}($homelessInclude{LINENUMBER})\n");
+					}
+				}
+			$homelessInclude{REFERENCE} = "";
+			}
+
+		if (/^\s*#include\s*[\"|\<]{1}(.*)[\"|\>]{1}/)
+			{
+			CheckSource_UnixSlash (%warnings, $currentFile, "#include", $1, $lineNumber, $verbose);
+
+			$homelessInclude{SOURCEFILE} = $currentFile;
+			$homelessInclude{REFERENCE} = $1;
+			$homelessInclude{LINENUMBER} = $lineNumber;
+			$homelessInclude{SEARCH} = "\\".$homelessInclude{REFERENCE};
+			$homelessInclude{SEARCH} =~ s/\//\\/g;
+			$homelessInclude{SEARCH} = quotemeta($homelessInclude{SEARCH});
+			}
+
+		$lineNumber++ if (!/^# (\d+) "(.*)"( \d+)?/o);
+		}
+
+	close PREPROCESSPIPE;
+	}
+elsif ($parsefile)
+	{
+	my $SOURCE_FILE = $ARGV[0];		
+	open SOURCE_FILE, "< $SOURCE_FILE" or die "ERROR: Can't open $SOURCE_FILE for \"-checksource\".\n";
+
+	print "Parsing include file  : $SOURCE_FILE\n" if ($verbose);
+
+	my $lineNumber = 0;
+	
+	while (<SOURCE_FILE>)
+		{
+		$lineNumber++;
+
+		if (/^\s*#include\s*[\"|\<]{1}(.*)[\"|\>]{1}/)
+			{
+			CheckSource_UnixSlash (%warnings, $SOURCE_FILE, "#include", $1, $lineNumber, $verbose);
+			CheckSource_Lowercase (%warnings, $SOURCE_FILE, "#include", $1, $lineNumber, $verbose);
+			}		
+		}
+
+	close SOURCE_FILE;
+	}
+elsif ($metadata)
+	{
+	my ($sourcefile, $item, $reference, $linenumber, $physical, $offset) = @ARGV;
+
+	$physical = 0 if (!$physical);
+	$offset = undef if (!$offset);
+
+	CheckSource_UnixSlash (%warnings, $sourcefile, $item, $reference, $linenumber, $verbose);
+
+	if ($physical)
+		{
+		CheckSource_Physical (%warnings, $sourcefile, $item, $reference, $linenumber, $offset, $verbose);
+		}
+	else
+		{
+		CheckSource_Lowercase (%warnings, $sourcefile, $item, $reference, $linenumber, $verbose);
+		}
+	}
+
+print "$_\n" foreach (keys %warnings);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/checksource.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,471 @@
+# Copyright (c) 2005-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:
+# Routines involved in checking that source matches various filename policy constraints
+# 
+#
+
+
+package CheckSource;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+# Exported for clarity in calling scripts and modules
+our $CheckSource_PhysicalCheck = 1;
+our $CheckSource_NoUserSystemDistinction = 1;
+
+@EXPORT=qw(
+	CheckSource_MetaData
+	CheckSource_Includes
+	CheckSource_ExportedIncludes
+	CheckSource_MakefileOutput
+	CheckSource_UnixSlash
+	CheckSource_Lowercase
+	CheckSource_Physical
+	$CheckSource_PhysicalCheck
+	$CheckSource_NoUserSystemDistinction
+);
+
+use Cwd;
+use Pathutl;
+use Win32;
+
+my $exclusionsFile = $ENV{EPOCROOT}."epoc32\\tools\\filenamepolicyexclusions.txt";
+
+my $makefileWarningPrefix = "\@echo ";
+my $checksourcePrefix = "\@perl -S checksource.pl";
+my $releaseLocationRoot = quotemeta ($ENV{EPOCROOT}."epoc32");
+
+
+sub CheckSource_MetaData (\%$$$$;$;$)
+	{
+	my ($actionHash, $sourceFile, $item, $reference, $lineNumber, $physical, $offset) = @_;
+
+	return if ($reference =~ /^(\.|\.\.)$/);
+
+	my $checksourceCall = "$checksourcePrefix --metadata \"$sourceFile\" \"$item\" \"$reference\" $lineNumber";
+	$checksourceCall .= " $physical" if ($physical);
+	$checksourceCall .= " \"$offset\"" if ($offset);
+	$$actionHash{$checksourceCall} = 1;
+	}
+
+
+sub CheckSource_UnixSlash (\%$$$$;$)
+	{
+	my ($actionHash, $sourceFile, $item, $reference, $lineNumber, $verbose) = @_;
+
+	$sourceFile =~ s/^[a-zA-Z]{1}://;
+	$item =~ s/PRJ_EXPORTS \(NO DESTINATION\)/PRJ_EXPORTS/;
+
+	print "Checking - Unix slash : $sourceFile ($lineNumber) - $item:$reference\n" if ($verbose);
+
+	if ($reference =~/\\/)
+		{	
+		$$actionHash{constructWarning ($sourceFile, $lineNumber, $item, "Incorrect slash in", $reference)} = 1;
+		}
+	}
+
+
+sub CheckSource_Lowercase (\%$$$;$;$)
+	{
+	my ($actionHash, $sourceFile, $item, $reference, $lineNumber, $verbose) = @_;
+
+	return if ($reference =~ /^[\/|\\]epoc32[\/|\\]tools[\/|\\].*$/);
+
+	$sourceFile =~ s/^[a-zA-Z]{1}://;
+
+	print "Checking - lowercase  : $sourceFile ($lineNumber) - $item:$reference\n" if ($verbose);
+
+	my $exclusion = lowercaseExclusionCheck ($reference);
+
+	if ($exclusion eq "UNLISTED")
+		{
+		if ($reference =~ /[A-Z]/)
+			{			
+			$$actionHash{constructWarning ($sourceFile, $lineNumber, $item, "Incorrect case for epoc32 tree in", $reference)} = 1;
+			}
+		}
+	elsif ($exclusion !~ /(OK|ERROR)/)
+		{
+		$$actionHash{constructWarning($sourceFile, $lineNumber, $item, "Incorrect case versus exclusion list in", $reference, " vs. $exclusion")} = 1;		
+		}
+	}
+
+
+sub CheckSource_Physical (\%$$$$;$;$)
+	{
+	my ($actionHash, $sourceFile, $item, $reference, $lineNumber, $path, $verbose) = @_;
+	
+	print "Checking - physical   : $sourceFile ($lineNumber) - $item:$reference:$path\n" if ($verbose);
+
+	my $physicalCheck;
+	my $searchText;
+
+	my $examineDefaultExportDestination = ($item =~ s/PRJ_EXPORTS \(NO DESTINATION\)/PRJ_EXPORTS/) ? 1 : 0;
+
+	if ($item eq "#include")
+		{
+		# In the case of #includes, the path passed in is already the fully pathed physical file
+		# that needs to be checked (as obtained from the parsed output of CPP)
+		$searchText = $reference;
+		$physicalCheck = $path;
+		}
+	else
+		{
+		my $physicalReference;
+		if (($item =~ /^PRJ_(TEST)?MMPFILES MMP/) && ($reference !~ /\.\w+$/i))
+			{
+			$physicalReference = $reference."\.mmp";
+			$searchText = $reference."\.*";
+			}
+		elsif ($item =~ /^DEFFILE/)
+			{
+			# The full path for DEFFILE entries is always passed in, so we just
+			# need to concentrate on sorting out the oddities for the search
+			# text and then just take the final file bit as the physical
+			# reference
+
+			$searchText = $reference;			
+			$searchText .= "?\.*" if ($reference !~ /(\.def|[\\|\/])$/i);
+			$searchText =~ s/(\.def)/\?$1/i if ($item !~ /NOSTRICTDEF/);
+			$searchText =~ s/\~/\*/;			
+			$physicalReference = $searchText;
+			$physicalReference =~ s/\//\\/g;
+			$physicalReference =~ s/\?/u/;
+			$physicalReference =~ s/\.\w+$/\.def/;
+			$physicalReference = &Path_Split ('File', $physicalReference);			
+			}
+		else
+			{
+			$searchText = $reference;
+			$physicalReference = $searchText;
+			}
+
+		my $physicalLocation;
+		if ($path)
+			{
+			$physicalLocation = $path;
+			}
+		elsif ($reference =~ /^(\\|\/)/)
+			{
+			$physicalLocation = $ENV{EPOCROOT};
+			}
+		elsif ($reference =~ /^\+/)
+			{
+			$physicalLocation = $ENV{EPOCROOT}."epoc32\\";
+			}
+		elsif ($item =~ /EXTENSIONS/)
+			{
+			$physicalLocation = $ENV{EPOCROOT}."epoc32\\tools\\makefile_templates\\";
+			}
+		else
+			{
+			$physicalLocation = &Path_Split ('Path', $sourceFile);
+			}
+		$physicalReference =~ s/^[\\|\/]//;
+		$physicalCheck = $physicalLocation.$physicalReference;
+		}
+
+	$physicalCheck =~ s/\//\\/g;
+	$physicalCheck = &Path_Strip ($physicalCheck);
+
+	# If a file reference is actually under \epoc32, we just need to confirm that it's lowercase
+	if ($physicalCheck =~ /^$releaseLocationRoot/i)
+		{
+		CheckSource_Lowercase (%$actionHash, $sourceFile, $item, $reference, $lineNumber, $verbose);
+		return;
+		}
+
+	# Massage search text to provide something we can compare with a physical check on the filesystem
+	$searchText =~ s/\//\\/g;
+	$searchText =~ s/\.\.\\//g;
+	$searchText =~ s/\.\\//g;
+	$searchText =~ s/\\\\/\\/g;
+
+	my $warningSearchText = $searchText;	# Record a more intelligible version of the search text for warning purposes
+	
+	$searchText = quotemeta ($searchText);
+	$searchText =~ s/\\\*/\\w\+/g;			# * -> \w+
+	$searchText =~ s/\\\?/\\w\{1\}/g;		# ? -> \w{1}
+
+	my $physicalReality = getPhysical ($physicalCheck);
+
+	my $warningSuffix = "";
+
+	if (!$physicalReality)
+		{
+		$$actionHash{constructWarning($sourceFile, $lineNumber, $item, "Can\'t find physical file match for", $reference, " on filesystem")} = 1;
+		}
+	elsif ($physicalReality !~ /^.*$searchText$/)
+		{
+		if ($physicalReality !~ /^.*$searchText$/i)
+			{
+			# Doesn't just differ in case...something's gone wrong
+			$$actionHash{constructWarning($sourceFile, $lineNumber, $item, "Can\'t find physical file match for", $reference, " - match was attempted against $physicalReality")} = 1;		
+			}
+		else
+			{
+			if (($item =~ /^DEFFILE/ || $item =~ /^PRJ_(TEST)?MMPFILES MMP/) && ($reference !~ /$searchText$/))
+				{
+				$warningSuffix .= " (actual test \'$warningSearchText\')"
+				}
+
+			$warningSuffix .= " vs. $physicalReality";
+			$$actionHash{constructWarning($sourceFile, $lineNumber, $item, "Incorrect case versus filesystem in", $reference, $warningSuffix)} = 1;
+			}
+		}
+
+	# Special case - PRJ_EXPORTS source lines with no destination must be normalised via a new destination compliant
+	# with the filename policy.  FIXSOURCE will do this, but it needs a warning to work on
+
+	if ($examineDefaultExportDestination)
+		{
+		$physicalReality =~ /^.*($searchText)$/i;
+		my $defaultExportReference = $1;
+		
+		my $exclusion = lowercaseExclusionCheck ($defaultExportReference);
+
+		if ($defaultExportReference =~ /[A-Z]/)
+			{
+			$$actionHash{constructWarning ($sourceFile, $lineNumber, $item, "Incorrect case for epoc32 tree from default export in", $reference, $warningSuffix)} = 1;
+			}
+		}
+
+	}
+	
+
+sub CheckSource_Includes ($\%$\@;\@;\@;$)
+	{
+	# References are used for array arguments only so that they can be distinguished within the subroutine
+	my ($sourceFile, $actionHash, $preInclude, $macros, $userIncludesRef, $systemIncludesRef, $noUserSystemDistinction) = @_;
+	my (@userIncludes, @systemIncludes);
+
+	@userIncludes = @$userIncludesRef if ($userIncludesRef);
+	@systemIncludes = @$systemIncludesRef if ($systemIncludesRef);
+
+	my $call = "$checksourcePrefix --preprocess -- ";
+
+	if (($sourceFile !~ /\.inf$/i) && ($sourceFile !~ /\.mmp/i))
+		{
+		push @$macros, "__SUPPORT_CPP_EXCEPTIONS__";
+		}
+
+	my $platformPreInclude = "";
+
+	foreach my $macro (@$macros)
+		{
+		$call .= "-D$macro ";
+
+		if ($macro =~ /__ARMCC_2_2__/)
+			{
+			$platformPreInclude = $ENV{EPOCROOT}."epoc32\\include\\rvct2_2\\rvct2_2.h";
+
+			if (($sourceFile =~ /BASE\\E32\\compsupp\\/i) && $ENV{RVCT22INC})
+				{					
+				# Need some way to deal with ARMINC from the front-end...
+				my $rvctIncDir = $ENV{RVCT22INC};
+				push @systemIncludes, $rvctIncDir;
+				}
+			}
+		elsif ($macro =~ /__GCCE__/)
+			{
+			$platformPreInclude = $ENV{EPOCROOT}."epoc32\\include\\GCCE\\GCCE.h";
+
+			my $GCCEinstall = Cl_bpabi::getConfigVariable('COMPILER_INSTALL_PATH');
+			
+			push @systemIncludes, "\"\\\"$GCCEinstall\\..\\lib\\gcc\\arm-none-symbianelf\\3.4.3\\include\\\"\"";
+			}
+		}
+
+	if ($preInclude ne "")
+		{
+		$call .= "-include ".getDrive().$preInclude." ";
+		push @systemIncludes, &Path_Split ('Path', getDrive().$preInclude);
+		}		
+
+	if ($platformPreInclude ne "")
+		{
+		$call .= "-include ".getDrive().$platformPreInclude." ";
+		push @systemIncludes, &Path_Split ('Path', getDrive().$platformPreInclude);
+		}	
+
+	# Enforce user and system includes in checksource processing.
+
+	foreach my $include (@userIncludes)
+		{
+		$include =~ s/\\$//;
+		$include = getDrive().$include if (($include !~ /^[a-zA-Z]:/) && ($include !~ /^[\"|\.]/));
+		$call .= "-I $include ";
+		}
+
+	$call .= "-I- " unless $noUserSystemDistinction;
+
+	foreach my $include (@systemIncludes)
+		{
+		$include =~ s/\\$//;
+		$include = getDrive().$include if (($include !~ /^[a-zA-Z]:/) && ($include !~ /^[\"|\.]/));
+		$call .= "-I $include ";
+		}
+
+	$sourceFile =~ s/\//\\/g;
+	$sourceFile = &Path_Strip ($sourceFile);
+	$sourceFile = getDrive().$sourceFile;
+
+	$call .= $sourceFile;
+
+	$$actionHash{$call} = 1;
+
+	return $call;
+	}
+
+
+sub CheckSource_ExportedIncludes ($$\%)
+	{
+	my ($sourceFile, $destinationFile, $actionHash) = @_;
+
+	# Exclude exported files as appropriate
+	if ($destinationFile)
+		{
+		my $epoc32Include = quotemeta ($ENV{EPOCROOT})."epoc32\\\\include";
+		return if ($destinationFile !~ /^$epoc32Include/i);
+		return if ($destinationFile =~ /\.def$/i);
+		}
+
+	$$actionHash{"$checksourcePrefix --parsefile -- $sourceFile"} = 1;
+	}
+
+
+sub CheckSource_MakefileOutput(%)
+	{
+	my (%actionHash) = @_;
+
+	return "\t\@rem\n" if !(keys (%actionHash));
+
+	my $output = "";
+
+	foreach (keys (%actionHash))
+		{
+		$output .= "\t$_\n";
+		}
+
+	return $output;
+	}
+	
+
+sub getDrive
+	{
+    if(cwd =~ /^([a-zA-Z]:)/)
+    	{
+		return $1;
+    	}
+
+	return "";
+	}
+
+
+sub getPhysical ($)
+	{
+	my ($physicalReference) = @_;
+	
+	my $physicalReality = Win32::GetLongPathName($physicalReference);
+
+	if ($physicalReality)
+		{			
+		$physicalReality =~ s/^.*://;
+		$physicalReality = &Path_Strip ($physicalReality);		
+		}
+
+	return $physicalReality;
+	}
+
+
+sub constructWarning ($$$$$;$)
+	{
+	my ($sourceFile, $lineNumber, $item, $warningText, $reference, $suffix) = @_;
+
+	$sourceFile =~ s/\//\\/g;
+	$sourceFile = Win32::GetLongPathName($sourceFile);
+	$sourceFile =~ s/^[a-zA-Z]{1}://;
+	$sourceFile = &Path_Strip ($sourceFile);
+
+	my $warning = "";
+	$warning .= $sourceFile.":".$lineNumber.": ".$warningText." $item - \'".$reference."\'";
+	$warning .= $suffix if ($suffix);
+	$warning .= ".";		
+
+	return $warning;
+	}
+
+
+sub lowercaseExclusionCheck ($)
+	{
+	my ($reference) = @_;
+
+	# An exclusions file isn't mandatory
+	return "UNLISTED" if (! -e $exclusionsFile);
+
+	my $EXCLUSIONS;
+
+	if (!(open EXCLUSIONS, "< $exclusionsFile"))
+			{
+			print ("ERROR: Can't open $exclusionsFile in checksource processing.\n");
+			return "ERROR";
+			}
+
+	my $referenceDOSSlash = $reference;
+	$referenceDOSSlash =~ s/\//\\/g;
+
+	my $exclusionCheck = "UNLISTED";
+
+	while (my $exclusion = <EXCLUSIONS>)
+		{
+		next if ($exclusion =~ /^\s*$/);
+
+		$exclusion =~ s/^\s+//;
+		$exclusion =~ s/\s+$//;
+		$exclusion =~ s/\//\\/g;
+		my $quotemetaExclusion = quotemeta ($exclusion);
+
+		if ($referenceDOSSlash =~ /^$quotemetaExclusion$/i)
+			{				
+			if ($referenceDOSSlash !~ /^$quotemetaExclusion$/)
+				{
+				$exclusionCheck = $exclusion;
+				}
+			else
+				{
+				$exclusionCheck = "OK";
+				}
+			last;
+			}
+			elsif($referenceDOSSlash =~ /\\$quotemetaExclusion$/i)
+			{				
+			if ($referenceDOSSlash !~ /\\$quotemetaExclusion$/)
+				{
+				$exclusionCheck = $exclusion;
+				}
+			else
+				{
+				$exclusionCheck = "OK";
+				}
+			last;
+			}
+		}
+
+	close EXCLUSIONS;
+
+	return $exclusionCheck;
+	}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/copyfeaturevariants.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,85 @@
+# Copyright (c) 2007-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:
+# copy A.X.aaa to B.X.bbb for all X (32 chars) when given A.aaa B.bbb
+# 
+#
+
+
+my $source = shift;
+my $target = shift;
+
+my $errs = 0;
+
+# copy invariant
+use File::Copy;
+if (-f $source)
+{
+	if (copy($source, $target))
+	{
+		print "copy $source $target\n";
+	}
+	else
+	{
+		print "ERROR: failed copy $source $target\n";
+		$errs++;
+	}
+}
+
+# now think about variants
+
+use File::Basename;
+my $srcDir = dirname($source);
+my $srcRoot = basename($source);
+my $srcExt = "";
+
+if ($srcRoot =~ /^(.+)\.([^\.]+)$/)
+{
+	$srcRoot = $1;
+	$srcExt = $2;
+}
+
+my $tgtRoot = $target;
+my $tgtExt = "";
+
+if ($tgtRoot =~ /^(.+)\.([^\.]+)$/)
+{
+	$tgtRoot = $1;
+	$tgtExt = $2;
+}
+
+opendir(DIR, $srcDir) or die("ERROR: cannot read directory $srcDir\n");
+
+# copy all variants
+while (my $file = readdir(DIR))
+{
+	if ($file =~ /^$srcRoot\.(\w{32})\.$srcExt$/i)
+	{
+		my $from = "$srcDir/$file";
+		my $into = "$tgtRoot.$1.$tgtExt";
+
+		if (copy($from, $into))
+		{
+			print "copy $from $into\n";
+		}
+		else
+		{
+			print "ERROR: failed copy $from $into\n";
+			$errs++;
+		}
+	}
+}
+
+exit 1 if (!closedir(DIR) || $errs > 0);
+exit 0;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/createrfifile.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,91 @@
+#!/usr/bin/perl
+# Copyright (c) 2008-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:
+#
+
+use File::Basename;
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 0;
+
+if (@ARGV <2)
+	{
+	print (STDERR "\nCREATERFIFILE resource files combine tool V$MajorVersion.$MinorVersion.$PatchVersion\n");
+	print STDERR << 'END_OF_HELP';
+
+Usage: createrfifile.pl rss_cpp_deps_file.d output_file.rfi [exclude path]
+
+Takes a file containing CPP dependency output from the preprocessing of a .rss file and
+generates a "combined resource" .rfi that can  be consumed by CDB.
+Optionally takes an exclusion path under which "found" dependencies are then ignored.
+
+END_OF_HELP
+	exit(0);
+	}
+
+my ($deps, $rfi, $exclude) = @ARGV;
+
+if ($exclude)
+	{
+	$exclude =~ s/\\/\//g;			# Ensure consistent slashes
+	$exclude =~ s/\/\//\//g;		# Remove double slashes
+	$exclude = quotemeta($exclude);	# Convert for regex match
+	}
+
+print ("RFI : exclude under - \"$exclude\"\n");
+
+my @resources;
+open DEPS, "< $deps" or die "\nCannot read \"$deps\"!\n\n";
+while (<DEPS>)
+	{
+	# .d file format - whitespace at front is key, path format varies depending on platform
+	# the aim is to get a list of the "real" files. Missing files can appear "unpathed", although
+	# this isn't currently dealt with.
+	#
+	#HelloWorld_reg.o:  \
+	# F:/source/personal/misc/filenamepolicy/ported/examples/helloworld/HelloWorld_reg.rss \
+	#  F:/builds/sbs/9.5/epoc32/include/variant/Symbian_OS.hrh \
+	#  F:/builds/sbs/9.5/epoc32/include/appinfo.rh \
+	#  F:/builds/sbs/9.5/epoc32/include/helloworld.rsg
+	#
+	
+	s/^.*\.o\://;
+	s/^\s+//;
+	s/\s*\\$//;
+	s/\/\//\//g;
+	chomp ($_);
+	next if !/\S/;
+
+	print ("WARNING: Could not find dependency \"$_\" in \"$deps\"\n") if !(-e $_);
+	
+	print ("RFI : processing - \"$_\"\n");
+	next if ($exclude && /^$exclude/i);
+	push @resources,$_;	
+	}
+close DEPS;
+
+open RFI, "> $rfi" or die "\nCannot write \"$deps\"!\n\n";
+foreach my $resource (@resources)
+	{
+	print RFI "\n\n/* GXP ***********************\n";
+	print RFI " * ".basename($resource)."\n";
+	print RFI " ****************************/\n\n";
+	
+	open RESOURCE, "< $resource" or die "\nCannot read \"$resource\"!\n\n";
+	print RFI $_ while (<RESOURCE>);
+	close RESOURCE;
+	}
+close RFI;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/defutl.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,182 @@
+# 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:
+# this module requires Pathutl module to have been 'used' by the main program
+# General Def file utilities
+# 
+#
+
+package Defutl;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	Def_ReadFileL Def_WriteFileL
+);
+
+use File::Path;
+use File::Basename;
+
+sub Def_ReadFileL ($$$$) {
+#	this function reads a .DEF file, putting the export information into a data
+#	structure
+
+	my ($DataStructRef, $FILE, $ExportsOn, $IgnoreSequence)=@_;
+
+#	initialisation
+	@$DataStructRef=();
+
+#	this function expects all statements to appear on separate lines - though MSVC doesn't
+
+	open (FILE, "<$FILE") or die "could not open $FILE: $!";
+
+	my $PreviousOrdinal=0;
+	my $MultiLineStatement='';
+	my $NAMEorLIBRARYallowed=1;
+	my $LineNum=0;
+	while (<FILE>) {
+		$LineNum++;
+
+		my %Data;
+		$Data{Line}=$_;
+		$Data{LineNum}=$LineNum;
+
+#		blank lines and comment lines
+		if (/^\s*(;.*)?$/o) {
+			push @$DataStructRef, \%Data;
+			next;
+		}
+
+		if (/^\s*(EXPORTS|SECTIONS|IMPORTS)\s*(\s+\S+.*)?$/io) {
+#			check for multi-line sections starting
+			$MultiLineStatement=uc $1;
+			$NAMEorLIBRARYallowed=0;
+			unless ($2) {
+				push @$DataStructRef, \%Data;
+				next;
+			}
+			$_=$2;
+		}
+		elsif (/^\s*(NAME|LIBRARY|DESCRIPTION|STACKSIZE|VERSION)\s*(\s+\S+.*)?$/io) {
+#			set MULTI-LINE statement to OFF
+			$MultiLineStatement='';
+#			check single-line statements are specified correctly
+			$_=uc $1;
+#			check NAME or LIBRARY statements aren't supplied incorrectly
+			if (/^(NAME|LIBRARY)$/o) {
+				unless ($NAMEorLIBRARYallowed) {
+					die "$FILE($LineNum) : DEFFILE ERROR: NAME or LIBRARY statements must precede all other statements\n";
+				}
+				push @$DataStructRef, \%Data;
+				next;
+			}
+			$NAMEorLIBRARYallowed=0;
+			push @$DataStructRef, \%Data;
+			next;
+		}
+		else {
+			unless ($MultiLineStatement) {
+				chomp $_;
+				die "$FILE($LineNum) : DEFFILE ERROR: Unrecognised Syntax \"$_\"\n";
+			}
+		}
+
+		if ($MultiLineStatement eq 'EXPORTS') {
+#			get export data
+			if (/^\s*(\S+)\s+\@\s*(\d+)\s*(NONAME)?\s*((DATA)\s*(\d+))?\s*(R3UNUSED)?\s*(ABSENT)?\s*(;\s*(.*))?$/io) {
+				$Data{Name}=$1;
+				$Data{Ordinal}=$2;
+				if ($4) {
+#					Mark the data symbols and retain the size.
+					$Data{Data} = 1;
+					if($6){
+					$Data{Size} = $6;
+					}
+				}
+				if ($7) {
+					$Data{R3Unused} = 1;
+				}
+				if ($8) {
+					$Data{Absent} = 1;
+				}
+				if ($10) {
+					$Data{Comment}=$10;
+				}
+
+				if ($Data{Name} =~ /^(\S+?)=(\S+)$/) {
+# 					rename this export
+					$Data{ExportName}=$1;
+					$Data{Name}=$2;
+					if ($Data{Name} =~ /=/) {
+						die "$FILE($LineNum) : DEFFILE ERROR: $Data{Name} Invalid rename syntax\n";
+					}
+				}
+				else {
+					$Data{ExportName}=$Data{Name};
+				}
+#				test the export - this is probably too slow to bother with
+				my $ExportRef;
+				unless ($IgnoreSequence) {
+#					check ordinal specified in sequence - this check is a style matter
+#					rather the a .DEF file syntax matter, so maybe it shouldn't be applied
+					unless ($Data{Ordinal}==($PreviousOrdinal+1)) {
+						die "$FILE($LineNum) : DEFFILE ERROR: Ordinal not specified in sequence\n";
+					}
+				}
+				$PreviousOrdinal=$Data{Ordinal};
+				push @$DataStructRef, \%Data;
+				next;
+			}
+			if (/^\s*_E32Startup(\s*\=\s*__E32Startup)?\s+(;\s*(.*))?$/io) {
+#				Emulator's special entrypoint ordinal
+				next;
+			}
+			if (/^\s*_E32Dll(\s*\=\s*__E32Dll)?\s+(;\s*(.*))?$/io) {
+#				Emulator's special entrypoint ordinal
+				next;
+			}
+			die "$FILE($LineNum) : DEFFILE ERROR: Incorrect EXPORTS statement syntax\n";
+		}
+
+	}
+
+#	decide whether we've ended up with an EXPORTS section specified
+	if ($MultiLineStatement eq 'EXPORTS') {
+		$_[2]=1; # $ExportsOn
+	}
+	else {
+		$_[2]=0; # $ExportsOn
+	}
+
+	close FILE or die "DEFFILE ERROR: Can't close file $FILE: $!\n";
+}
+
+sub Def_WriteFileL ($$) {
+#	Writes an array of text to a file
+
+	my ($TextArrayRef, $FILE)=@_;
+	
+	# make sure path exists
+	my($filename, $directories, $suffix) = fileparse($FILE);
+	unless (-d $directories) {
+		eval { mkpath[$directories] };
+		die $@ if $@;
+	} 
+
+	open (FILE, ">$FILE") or die "DEFFILE ERROR: Could not open $FILE: $!\n";
+	print FILE @$TextArrayRef or die "DEFFILE ERROR: Can't write output to $FILE: $!\n";
+	close FILE or die "DEFFILE ERROR: Can't close file $FILE: $!\n";
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/deletefeaturevariants.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,47 @@
+# Copyright (c) 2007-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:
+# delete A.X.aaa for all X (32 chars) when given A.aaa
+# 
+#
+
+
+my $source = shift;
+
+# delete invariant
+unlink($source) if (-f $source);
+
+# now think about variants
+
+use File::Basename;
+my $srcDir = dirname($source);
+my $srcRoot = basename($source);
+my $srcExt = "";
+
+if ($srcRoot =~ /^(.+)\.([^\.]+)$/)
+{
+	$srcRoot = $1;
+	$srcExt = $2;
+}
+
+opendir(DIR, $srcDir) or die("ERROR: cannot read directory $srcDir\n");
+
+# delete all variants
+while (my $file = readdir(DIR))
+{
+	unlink("$srcDir/$file") if ($file =~ /^$srcRoot\.(\w{32})\.$srcExt$/i);
+}
+
+exit 1 if (!closedir(DIR));
+exit 0;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/e32tpver.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,30 @@
+# 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:
+# Returns the version number for E32TOOLP - update for each release
+# 
+#
+
+package E32tpver;
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	E32tpver
+);
+
+
+sub E32tpver () {
+	my $Version=679; 
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/efreeze.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,28 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+
+perl -S efreeze.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
+if errorlevel==1 goto CheckPerl
+goto End
+
+:CheckPerl
+perl -v >NUL
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
+goto End
+
+:End
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/efreeze.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,337 @@
+#!/usr/bin/perl
+# Copyright (c) 1998-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:
+# all variables called *Path* are set up to end with a backslash
+# all variables called *Path or *File are stored as absolute (file)paths
+# all variables called UpPath* are stored as relative paths
+# 
+#
+
+
+use FindBin;		# for FindBin::Bin
+use Getopt::Long;
+
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+
+BEGIN {
+# check user has a version of perl that will cope
+	require 5.005_03;
+# establish the path to the Perl libraries: currently the same directory as this script
+	$PerlLibPath = $FindBin::Bin;	# X:/epoc32/tools
+# do not convert slashes for linux
+	if ($^O eq "MSWin32") {
+		$PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+		$PerlLibPath .= "\\";
+	}
+}
+
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 1;
+
+use lib $PerlLibPath;
+use Defutl;
+
+# THE MAIN PROGRAM SECTION
+##########################
+
+{
+	my %Options;
+
+	# process the command-line
+	unless (GetOptions(\%Options, 'compare', 'remove')) {
+		exit 1;
+	}
+	unless (@ARGV==2) {
+		&Usage;
+	}
+
+	my $FRZFILE;
+	my $GENFILE;
+
+	($FRZFILE,$GENFILE)=(@ARGV);
+	
+#	check the file exists
+	unless (-e $FRZFILE) {
+		warn "WARNING: $FRZFILE: File not found - OK if freezing for first time\n";
+	}
+	unless (-e $GENFILE) {
+		die "EFREEZE ERROR: $GENFILE: File not found\n";
+	}
+
+#	Read the Frozen .DEF file if it exists
+	my @FrzDataStruct;
+	my $FrzExportsOn=0;
+	if (-e $FRZFILE) {
+		eval { &Def_ReadFileL(\@FrzDataStruct, $FRZFILE, $FrzExportsOn); };
+		die $@ if $@;
+	}
+
+#	Read the New .DEF file
+	my @GenDataStruct;
+	my $Dummy;
+	if ($GENFILE) {
+		eval { &Def_ReadFileL(\@GenDataStruct, $GENFILE, $Dummy, ($Options{compare} or $Options{remove})); };
+	}
+	die $@ if $@;
+
+#	Compare the frozen .DEF data with the new .DEF file
+	my (@NewDataStruct, @MissingDataStruct, @BadDataStruct);
+	eval { &CompareFrzGenL (\@NewDataStruct, \@MissingDataStruct, \@BadDataStruct, \@FrzDataStruct, \@GenDataStruct, $Options{remove}); };
+	die $@ if $@;
+
+#	check for errors
+	my $NumRemoved;
+	my $Ref;
+	my @Errors;
+	my $Title='EFREEZE ERROR:';
+	if ($Options{compare}) {
+		$Title='EFREEZE:';
+	}
+	if (@MissingDataStruct and $Options{remove}) {
+#		Mark missing exports as ABSENT in DEF file
+		$NumRemoved=@MissingDataStruct;
+		if ($Options{compare}) {
+			print "EFREEZE: Marking $NumRemoved Export(s) as ABSENT :\n";
+		} else {
+			print "EFREEZE: Marking $NumRemoved Export(s) as ABSENT in $FRZFILE :\n";
+		}
+		foreach (@MissingDataStruct) {
+			$$_{Absent} = 1;
+			my $Comment='';
+			if ($$_{Comment}) {
+				$Comment=" ; $$_{Comment}";
+			}
+			my $r3unused = $$_{R3Unused} ? " R3UNUSED" : "";
+			print "  $$_{Name} \@ $$_{Ordinal} NONAME$r3unused$Comment\n";
+		}
+	}
+	elsif (@MissingDataStruct) {
+		my $Num=@MissingDataStruct;
+		push @Errors, "$Title $FRZFILE: $Num Frozen Export(s) missing from $GENFILE (POSSIBLE COMPATIBILITY BREAK):\n"; 
+		foreach $Ref (@MissingDataStruct) {
+			my $r3unused = $$Ref{R3Unused} ? " R3UNUSED" : "";
+			push @Errors, "  $$Ref{LineNum}: $$Ref{Name} \@ $$Ref{Ordinal} NONAME$r3unused\n";
+		}
+		push @Errors, "\n";
+	}
+	if (@BadDataStruct) {
+		my $Num=@BadDataStruct;
+		push @Errors, "$Title $GENFILE: $Num function(s) exported at wrong ordinal:\n";
+		foreach $Ref (@BadDataStruct) {
+			my $r3unused = $$Ref{R3Unused} ? " R3UNUSED" : "";
+			push @Errors, "  $$Ref{LineNum}: $$Ref{Name} \@ $$Ref{Ordinal} NONAME$r3unused\n";
+		}
+	}
+	if (@Errors) {
+		unless ($Options{compare}) {
+			die @Errors;
+		}
+		else {
+			print @Errors;
+		}
+	}
+
+#	Update the frozen .DEF file
+	eval { &UpdateFrzFileL(\@NewDataStruct, \@FrzDataStruct, $FRZFILE, $FrzExportsOn, $Options{compare}, $NumRemoved); };
+	die $@ if $@;
+	
+
+	exit;
+}
+
+#######################################################################
+# SUBROUTINES
+#######################################################################
+
+sub Usage () {
+
+	print(
+		"\n",
+		"EFREEZE - .DEF file maintenance utility V$MajorVersion.$MinorVersion.$PatchVersion\n",
+		"\n",
+		"EFREEZE {options} [frozen .DEF file] [new .DEF file]\n",
+		"\n",
+		"options:   (case-insensitive)\n",
+		"  -Compare\n",
+		"  -Remove\n",
+		"\n"
+	);
+	exit 1;
+}
+
+sub CompareFrzGenL ($$$$$$) {
+	my ($NewStructRef, $MissingStructRef, $BadStructRef, $FrzStructRef, $GenStructRef, $remove)=@_;
+
+#	compare the input export data with the frozen data
+
+#	take a copy of the frozen .DEF file structure that we can trash
+	my @TmpStruct=@$FrzStructRef;
+
+#	remove any entries not containing export data and get the highest ordinal value used
+	my $LastOrdinal=0;
+	foreach (@TmpStruct) {
+		if ($$_{Name}) {
+			if ($LastOrdinal<$$_{Ordinal}) {
+				$LastOrdinal=$$_{Ordinal};
+			}
+			next;
+		}
+		undef $_;
+	}
+
+	my $GenRef;
+	my $TmpRef;
+	GENLOOP: foreach $GenRef (@$GenStructRef) {
+		next unless $$GenRef{Name};		# ignore lines in the .DEF file not containing an export
+		foreach $TmpRef (@TmpStruct) {
+			next unless defined $TmpRef; # ignore nullified entries in the temporary array
+#			does the function name match?
+			if ($$GenRef{Name} eq $$TmpRef{Name}) {
+#				check the names have the same ordinals
+				if ($remove or $$GenRef{Ordinal}==$$TmpRef{Ordinal}) {
+					undef $TmpRef;
+					next GENLOOP;
+				}
+#				store exports with the wrong ordinals
+				push @$BadStructRef, $GenRef;
+				undef $TmpRef;
+				next GENLOOP;
+			}
+#			Absent export?
+			if ($$TmpRef{Absent} and $$TmpRef{Ordinal}==$$GenRef{Ordinal}) {
+				next GENLOOP;
+			}
+		}
+#		store new exports not found in the frozen .DEF file with the right ordinal value
+		$LastOrdinal++;
+		$$GenRef{Ordinal}=$LastOrdinal;
+		push @$NewStructRef, $GenRef;
+	}
+
+#	all the exports left in the frozen .DEF file weren't found
+	foreach $TmpRef (@TmpStruct) {
+		next unless defined $TmpRef; # ignore nullified entries in the temporary array
+		next if $$TmpRef{Absent};	# skip entries marked as ABSENT in the DEF file
+		push @$MissingStructRef, $TmpRef;
+	}
+}
+
+sub UpdateFrzFileL ($$$$$$) {
+	my ($NewStructRef, $FrzStructRef, $FILE, $ExportsOn, $Compare, $NumRemoved)=@_;
+
+#	add the exports to the frozen .DEF file text
+	unless (@$NewStructRef or $NumRemoved) {
+		print "EFREEZE: DEF file up to date\n";
+		return;
+	}
+
+	my $NumNewExports=@$NewStructRef;
+	unless ($Compare) {
+# 		abort the operation unless the frozen .DEF file is writeable
+		if (-e $FILE and not -w $FILE) {
+			die
+				"EFREEZE ERROR: Can't append $NumNewExports New Export(s) to $FILE\n",
+				"  as file is not writeable.  Check source code control system.\n"
+			;
+		}
+		print "EFREEZE: Appending $NumNewExports New Export(s) to $FILE:\n" if ($NumNewExports);
+	}
+	else {
+		print "EFREEZE: $NumNewExports New Export(s):\n" if ($NumNewExports);
+	}
+
+	my @Text;
+	my $ExportsDeclared;
+
+#	Process the frozen .DEF file
+	if (@$FrzStructRef) { # there is already a frozen .DEF file
+		my $FrzRef;
+
+#		get the lines of text from the frozen .DEF file
+		foreach $FrzRef (@$FrzStructRef) {
+			next if (!$FrzRef);
+			if (!defined($$FrzRef{Ordinal})) {
+				push @Text, $$FrzRef{Line};
+				$ExportsDeclared = 1 if ($$FrzRef{Line} =~ /^\s*EXPORTS\s*(\s+\S+.*)?$/io);
+				next;
+			}
+			my $Comment='';
+			if ($$FrzRef{Comment}) {
+				$Comment=" ; $$FrzRef{Comment}";
+			}
+			my $r3unused = $$FrzRef{R3Unused} ? " R3UNUSED" : "";
+			my $absent = $$FrzRef{Absent} ? " ABSENT" : "";
+
+			my $data = "";
+			if( !($$FrzRef{Name} =~ /^(_ZTI|_ZTV|_ZTT)/))
+			{
+#				A symbol name with the above pattern indicates that it is a Data symbol.
+#				Mark symbols as DATA only when it cannot be found from the name alone (i.e.,
+#				explicitly exported data symbols).
+
+				if(($$FrzRef{Data}) and ($$FrzRef{Size}) ){
+				$data = " DATA $$FrzRef{Size}";
+				}
+			}
+			push @Text, "\t$$FrzRef{Name} \@ $$FrzRef{Ordinal} NONAME$data$r3unused$absent$Comment\n";
+		}
+
+#		strip any blank lines at the end of the frozen .DEF file text
+		foreach (reverse @Text) {
+			if (/^\s*$/o) {
+				$_='';
+				next;
+			}
+			last;
+		}
+
+	}
+
+#	Add an EXPORTS section header if there aren't already exports
+	unshift @Text, "EXPORTS\n" unless ($ExportsDeclared);
+
+	my $NewRef;
+	foreach $NewRef (@$NewStructRef) {
+		my $Comment='';
+		if ($$NewRef{Comment}) {
+			$Comment=" ; $$NewRef{Comment}";
+		}
+		my $r3unused = $$NewRef{R3Unused} ? " R3UNUSED" : "";
+		my $absent = $$NewRef{Absent} ? " ABSENT" : "";
+
+		my $data = "";
+		if( !($$NewRef{Name} =~ /^(_ZTV|_ZTI|_ZTT)/)) {
+#				A symbol name with the above pattern indicates that it is a Data symbol.
+#				Mark symbols as DATA only when it cannot be found from the name alone (i.e.,
+#				explicitly exported data symbols).
+			if(($$NewRef{Data}) and ($$NewRef{Size}) ){
+			$data = " DATA $$NewRef{Size}";
+			}
+		}
+		print "  $$NewRef{Name} \@ $$NewRef{Ordinal} NONAME$r3unused$Comment\n";
+		push @Text, "\t$$NewRef{Name} \@ $$NewRef{Ordinal} NONAME$data$r3unused$absent$Comment\n";
+	}
+
+#	add a terminating newline
+	push @Text, "\n";
+
+	unless ($Compare) {
+#		write the new frozen .DEF file
+		eval { &Def_WriteFileL(\@Text, $FILE); };
+		die $@ if $@;
+	}
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/epocaif.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,512 @@
+# Copyright (c) 2001-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:
+# Wrapper to support the EPOC AIF Compiler
+# 
+#
+
+
+use FindBin;		# for FindBin::Bin
+use File::Copy;		# for copy()
+use Cwd;		# for cwd
+use File::Basename;	# for basename()
+
+my $PerlBinPath;	# fully qualified pathname of the directory containing this script
+my $curdrive="x";	    	# will be initialised when first needed
+
+# establish the path to the Perl binaries
+BEGIN {
+	require 5.005_03;		# check user has a version of perl that will cope
+	$PerlBinPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlBinPath =~ s/\//\\/g;	# X:\epoc32\tools
+}
+use lib $PerlBinPath;
+use E32Variant;         # for variant specific macros
+use Pathutl;
+use Preprocessor;
+
+sub print_usage
+	{
+#........1.........2.........3.........4.........5.........6.........7.....
+	print <<USAGE_EOF;
+
+Usage:
+  epocaif [options] srcfile [-o outputfile] [-t tmpdir] [-b "bmps" | -m mbm] [-l "TargetPath:CWD"]
+
+
+The available options are
+
+   -Ixxx  -- C++ preprocessor arguments
+   -o	  -- output AIF file name including path
+   -t	  -- tempory directory for intermediate files
+   -b	  -- list of bitmaps Eg., "-b/c8\\location\\bmp1 /c8\\location\\bmp2.."
+   -m	  -- compiled MBM file (alternative to -b)
+   -l	  -- if specified, captures all source to \\epoc32\\localisation\\...
+
+The aif resource file is then passed through the C++ preprocessor, using any 
+specified preprocessor arguments, and then compiled with RCOMP.EXE to 
+generate a compiled resource.
+The -m or -b option is used to generate a suitable MBM file, if required.
+The MBM and the compiled resource are then combined to produce an AIF file.
+
+
+USAGE_EOF
+	}
+
+#-------------------------------------------------------
+# Process commandline arguments
+#
+# Can't use the Getopt package because it doesn't like the -D and -I style options
+#
+my $sourcefile="";
+my $opt_o="";
+my $opt_h="";	
+my $tmpdir="";
+my $opt_v=1;
+my $opt_b="";
+my $opt_l="";
+my $opt_m="";
+my $TrgPath;
+my $xipaif=1;
+
+my $exe = &PreprocessorToUseExe();
+my $cpp_spec= "$exe -undef -C ";	    # preserve comments
+
+my $errors = 0;
+while (@ARGV)
+	{
+	my $arg = shift @ARGV;
+
+	if ($arg =~ /^-I-$/)
+		{
+		$cpp_spec .= "-I- ";
+		next;
+		}
+	if ($arg =~ /^-I(.*)$/)
+		{
+		$cpp_spec .= "-I ";
+		if ($1 eq "")
+		    {
+		    $arg = shift @ARGV;
+		    }
+		else
+		    {
+		    $arg = $1;
+		    }
+		$cpp_spec .= quoted_path($arg)." ";
+		next;
+		}
+	if ($arg =~ /^-v$/)
+		{
+		$opt_v =1;
+		next;
+		}
+	if ($arg =~ /^-o(.*)$/)
+		{
+		$opt_o =$1;
+		$TrgPath = $opt_o;
+		next;
+		}
+
+	if ($arg =~ /^-t(.*)\\?$/)
+		{
+		$tmpdir =$1;
+		next;
+		}
+	if ($arg =~ /^-b(.*)$/)
+		{
+		$opt_b =$1;
+		next;
+		}	
+	if ($arg =~ /^-m(.*)$/)
+		{
+		$opt_m =$1;
+		next;
+		}	
+	if ($arg =~ /^-l(.*)$/)
+		{
+		$opt_l =$1;
+		next;
+		}	
+
+	if ($arg =~ /^-/)
+		{
+		print "Unknown arg: $arg\n";
+		$errors++;
+		next;
+		}
+	$sourcefile=$arg;
+	}
+
+if ($opt_m ne "" && $opt_b ne "")
+	{
+	print "Can't specify both -m and -b\n";
+	$errors++;
+	}
+if ($errors || $sourcefile eq "")
+	{
+	print_usage();
+	exit 1;
+	}
+
+my $rss_base = basename($sourcefile);
+my ($rssfile) = split(/\./, $rss_base);	    # remove extension
+my $rpp_name = "$tmpdir\\$rssfile.rpp";
+my $outputfile="$tmpdir\\AIF.RSC";	
+my $headerfile=$opt_h;
+
+if ($opt_v)
+	{
+	print "* Source file:   $sourcefile\n";
+	print "* Resource file: $outputfile\n" if ($outputfile ne "");
+	}
+
+$opt_o = "-o\"$outputfile\"" if ($outputfile ne "");
+$opt_h = "-h\"$headerfile\"" if ($headerfile ne "");
+
+
+#-------------------------------------------------------
+# Run the preprocessor
+#
+
+my $variantMacroHRHFile = Variant_GetMacroHRHFile();
+if($variantMacroHRHFile){
+    my $variantFilePath = Path_Split('Path',$variantMacroHRHFile);
+    chop ( $variantFilePath );
+    $cpp_spec .= " -I \"" . &Path_RltToWork($variantFilePath) . "\" -include " . &Path_RltToWork($variantMacroHRHFile) . " "; 
+}
+
+$cpp_spec .= "-I $PerlBinPath\\..\\include ";	# extra path to support shared tools
+$cpp_spec .= "-D_UNICODE ";
+
+$cpp_spec .= quoted_path($sourcefile) ." -o ". quoted_path($rpp_name);
+
+print "* $cpp_spec\n" if ($opt_v);
+system($cpp_spec);
+
+my $cpp_status = $?;
+die "* cpp failed\n" if ($cpp_status != 0);
+
+
+#-------------------------------------------------------
+# Copy source to epoc32\localisation
+#
+
+if ($opt_l ne "")
+{
+use lockit_info;
+	my ($rssfile, $FileType) = split(/\./, basename($TrgPath));
+	&Lockit_SrcFile($rssfile, $rpp_name, $opt_l, $FileType, $opt_b);
+}
+
+#-------------------------------------------------------
+# Merge rls strings to rpp
+#
+&Merge_rls_string($rpp_name);
+
+#-------------------------------------------------------
+# Run the resource compiler
+#
+
+my $rcomp_spec = "rcomp -u ";
+$rcomp_spec .= "-:$tmpdir\\_dump_of_resource_ "; # causes Rcomp to dump each resource (uncompressed and unpadded) in $tmpdir\\_dump_of_resource_1, $tmpdir\\_dump_of_resource_2, etc
+$rcomp_spec .= "$opt_o $opt_h -s\"$rpp_name\" -i\"$sourcefile\"";
+
+print "* $rcomp_spec\n" if ($opt_v);
+system($rcomp_spec);
+if ($? != 0)
+	{
+	print "* RCOMP failed - deleting output files\n";
+	unlink $outputfile if ($outputfile ne "");
+	unlink $headerfile if ($headerfile ne "");
+	exit 1;
+	}
+print "* deleting $rpp_name\n" if ($opt_v);
+unlink $rpp_name;
+
+#-------------------------------------------------------
+# Run bmconv, if needed
+#
+
+if ($opt_b ne "")
+	{
+	print "* bmconv /q $tmpdir\\AIF.MBM $opt_b\n" if ($opt_v);
+	system("bmconv /q $tmpdir\\AIF.MBM $opt_b");
+	if ($? != 0)
+		{
+		print "* BMCONV failed\n";
+		exit 1;
+		}
+	print "* bmconv /q /s $tmpdir\\AIF_XIP.MBM $opt_b\n" if ($opt_v);
+	system("bmconv /q /s $tmpdir\\AIF_xip.MBM $opt_b");
+	
+	if ($? != 0)
+		{
+		print "* BMCONV failed\n";
+		exit 1;
+		}
+	}
+elsif ($opt_m ne "")
+	{
+	print "* copy $opt_m $tmpdir\\AIF.MBM\n" if ($opt_v); 
+	copy($opt_m, "$tmpdir\\AIF.MBM");
+	# no xip file genarated 
+	$xipaif=0;
+	}
+else
+	{
+	# no bitmap specified - this is legitimate
+	unlink("$tmpdir\\AIF.MBM");
+	unlink("$tmpdir\\AIF_xip.MBM");
+	}
+
+#-------------------------------------------------------
+# Get the from UID from the first four bytes of "$tmpdir\\_dump_of_resource_1"
+#
+
+open(DUMP_OF_RESOURCE_1, "< $tmpdir\\_dump_of_resource_1") or die("* Can't open dump file\n");
+binmode(DUMP_OF_RESOURCE_1);
+my $data;
+my $numberOfBytesRead=read(DUMP_OF_RESOURCE_1, $data, 4);
+defined($numberOfBytesRead) or die("* Can't read from dump file\n");
+($numberOfBytesRead>=4) or die("* Dump file too short\n");
+my $uid=(unpack('V', $data))[0];
+undef($data);
+undef($numberOfBytesRead);
+close(DUMP_OF_RESOURCE_1) or die("* Can't close dump file\n");
+
+#-------------------------------------------------------
+# Produce the AIF file from the RSC and MBM files
+#
+
+my $uidcrc = "uidcrc.exe 0x101fb032 0 ".sprintf('0x%08x', $uid)." $tmpdir\\out.aif";
+my $uidcrc_xip = "uidcrc.exe 0x101fb032 0 ".sprintf('0x%08x', $uid)." $tmpdir\\out_xip.aif";
+
+print "* $uidcrc\n" if ($opt_v);
+system($uidcrc);
+if ($? != 0)
+	{
+	print "* UIDCRC failed\n";
+	exit 1;
+	}
+if ($xipaif ne 0)
+	{	
+	print "* $uidcrc\n" if ($opt_v);
+	system($uidcrc_xip);
+	if ($? != 0)
+		{
+		print "* UIDCRC failed\n";
+		exit 1;
+		}
+	}
+
+
+open(OUT_AIF, ">> $tmpdir\\out.aif") or die("* Can't open temporary file\n");
+binmode(OUT_AIF);
+
+if ($xipaif ne 0)
+	{
+	open(OUTXIP_AIF, ">> $tmpdir\\out_xip.aif") or die("* Can't open temporary file\n");
+	binmode(OUTXIP_AIF);
+	}
+
+print "* Writing length of the RSC-block\n" if ($opt_v);
+my $lengthOfRscBlock=-s("$tmpdir\\aif.rsc");
+my $numberOfPaddingBytes=(4-($lengthOfRscBlock%4))%4;
+print(OUT_AIF pack('V', $lengthOfRscBlock));
+if ($xipaif ne 0)
+	{
+	print(OUTXIP_AIF pack('V', $lengthOfRscBlock));
+	}
+print "* Appending the RSC-block\n" if ($opt_v);
+&appendFile(\*OUT_AIF, "$tmpdir\\aif.rsc");
+if ($xipaif ne 0)
+	{
+	&appendFile(\*OUTXIP_AIF, "$tmpdir\\aif.rsc");
+	}
+# append any necessary padding bytes so that the file-offset of the start of the MBM-block is a multiple of 4-bytes
+print(OUT_AIF ('_' x $numberOfPaddingBytes));
+if ($xipaif ne 0)
+	{
+	print(OUTXIP_AIF ('_' x $numberOfPaddingBytes));
+	}
+if (-e("$tmpdir\\aif.mbm"))
+	{
+	print "* Appending the MBM-block\n" if ($opt_v);
+	&appendFile(\*OUT_AIF, "$tmpdir\\aif.mbm");
+	}
+if (-e("$tmpdir\\aif_xip.mbm"))
+	{
+	print "* Appending the XIPMBM-block\n" if ($opt_v);
+	&appendFile(\*OUTXIP_AIF, "$tmpdir\\aif_xip.mbm");
+	}
+
+close(OUT_AIF) or die("* Can't close temporary file\n");
+if ($xipaif ne 0)
+	{
+	close(OUTXIP_AIF) or die("* Can't close temporary file\n");
+	}
+print "* copy $tmpdir\\out.aif $TrgPath\n" if ($opt_v);
+copy("$tmpdir\\out.aif", "$TrgPath");
+if ($xipaif ne 0)
+	{
+	my $basepath = &Path_Split('Path', $TrgPath);
+	my $ext=&Path_Split('Ext',  $TrgPath);
+	my $basename = basename($TrgPath, $ext);
+	my $xip="_xip";
+	print "* copy $tmpdir\\out_xip.aif $basepath$basename$xip$ext\n" if ($opt_v);
+	copy("$tmpdir\\out_xip.aif", "$basepath$basename$xip$ext");
+	}
+unlink("$tmpdir\\_dump_of_resource_*");
+unlink("$tmpdir\\aif.rsc");
+unlink("$tmpdir\\aif.mbm");
+unlink("$tmpdir\\out.aif");
+unlink("$tmpdir\\aif_xip.mbm");
+unlink("$tmpdir\\out_xip.aif");
+exit 0;
+
+#-------------------------------------------------------
+# Subroutine: convert path into something acceptable to CPP.EXE
+#
+
+sub quoted_path
+    {
+    my ($arg) = @_;
+    return "\"$arg\"" if ($arg !~ /^\\[^\\]/);	# not an absolute path
+    if ($curdrive eq "x")
+		{
+		$curdrive="";
+		$curdrive=$1 if (cwd =~ /^(.:)/);	
+		}
+    return "\"$curdrive$arg\"";
+    }
+
+#-------------------------------------------------------
+# Subroutine: Merge the rls strings in the rpp file specified
+#
+sub Merge_rls_string
+	{
+	my ($rppfile) = @_;
+
+	my $line;
+	my $StringId;
+	my $key;
+	my $value;
+	my $StringToSubstitute;
+	my %ResourceString;
+	
+	print "* merging text strings to $rppfile\n" if ($opt_v);
+	
+	open NEWRPP, ">$rppfile.new" or die "* Can't write to $rppfile.new";
+	open RPP, "$rppfile" or die "* Can't open $rppfile";
+	
+	while ($line = <RPP>) 	{
+		while (($StringId, $StringToSubstitute)=each %ResourceString)
+		{
+			$line=~s/\b$StringId\b/$StringToSubstitute/g if ($line !~ /^rls_string/);
+		}
+	
+		# find quoted "" strings
+		if($line =~ /^rls_string\s+(\S+)\s+(.*$)/)
+		{
+			my $text = $2;
+			$key = $1;
+			$line=~s/(.*)/\/\/$1/;
+			my $substr_count = 0;
+			if(!exists $ResourceString{$key})
+			{
+			SUBSTR:	while (1)
+			{
+				# find quoted "" strings e.g. "hello"
+				if($text =~ /^(\s*\"(.*?\\.)*.*?\")/)		
+				{
+					$value = $1;
+					$text = $';
+					++$substr_count;
+				}
+	
+				# find quoted '' strings. e.g. 'world'
+				elsif($text =~ /^(\s*\'(.*?\\.)*.*?\')/)			
+				{
+					$value = $1;
+					$text = $';
+					++$substr_count;
+				}
+	
+				# find hex strings e.g. <0x34><0x45><0x65>
+				elsif($text =~ /^(\s*(<.*?>)+)/)		
+				{
+					$value = $1;
+					$text = $';
+					++$substr_count;
+				}
+	
+				# find c comment e.g. /*hello world*/ (may exist between strings)
+				elsif($text =~ /^(\s*\/\*.*?\*\/)/)		
+				{
+					$text = $';
+					next SUBSTR; # ignore embedded comment
+				}
+	
+				# find c++ comment e.g. //hello world (may exist after strings)
+				elsif($text =~ /^(\s*\/\/.*$)/)		
+				{
+					$text = $';
+					next SUBSTR; # ignore trailing comment
+				}
+	
+				# exit search
+				else
+				{
+					if ($substr_count == 0)
+					{
+						warn("WARNING: rls_string $key either has incorrect syntax or no value\n");
+					}
+					last SUBSTR;
+				}
+			$ResourceString{$key} .= $value;
+			}
+		  	}
+		}
+		print NEWRPP $line;
+	}
+
+	close RPP;
+	close NEWRPP;
+	copy ("$rppfile.new", "$rppfile");
+	unlink ("$rppfile.new");
+	}
+
+#-------------------------------------------------------
+# Subroutine: Append a file into the open (binary) file already opened
+#
+sub appendFile
+	{
+	my $fileHandleOfTarget=shift;
+	my $fileNameOfSource=shift;
+	open(SOURCE, "< $fileNameOfSource") or die("* Can't open $fileNameOfSource\n");
+	binmode(SOURCE);
+	for (;;)
+		{
+		my $data;
+		my $numberOfBytesRead=read(SOURCE, $data, 1024);
+		defined($numberOfBytesRead) or die("* Can't read from $fileNameOfSource\n");
+		if ($numberOfBytesRead==0)
+			{
+			last;
+			}
+		print($fileHandleOfTarget $data);
+		}
+	close(SOURCE) or die("* Can't close $fileNameOfSource\n");
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/epocmbm.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,129 @@
+# Copyright (c) 2001-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:
+#
+
+use Cwd;		# for cwd
+use File::Basename;	# for basename()
+use FindBin;		# for FindBin::Bin
+my $PerlBinPath;	# fully qualified pathname of the directory containing this script
+
+my $epocroot;
+
+# establish the path to the Perl binaries
+BEGIN {
+	require 5.005_03;		# check user has a version of perl that will cope
+	$PerlBinPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlBinPath =~ s/\//\\/g;	# X:\epoc32\tools
+}
+
+use lib $PerlBinPath;
+use lockit_info;
+
+sub print_usage
+	{
+	print <<USAGE_EOF;
+
+Usage:
+  epocmbm [-h headerfile] [-o outputfile] [-b "bitmaps"] [-l "TargetPath:CWDir"]  
+
+Compile the bitmaps to an EPOC MBM image file.
+   -b	  -- list of bitmaps Eg., "-b/c8\\full path\\bmp1... /c8\\full path\\bmp2.."
+   -l     -- if specified, captures all source to \\epoc32\\localisation\\...
+
+USAGE_EOF
+	}
+
+
+#-----------------------------------------------
+# Process commandline arguments
+#
+
+my $opt_o="";
+my $opt_h="";	
+my $opt_l="";
+my $opt_b="";
+my $opt_v=0;
+
+my $errors = 0;
+while (@ARGV)
+	{
+	my $arg = shift @ARGV;
+	if ($arg =~ /^-o(.*)$/)
+		{
+		$opt_o =$1;
+		next;
+		}
+	if ($arg =~ /^-h(.*)$/)
+		{
+		$opt_h =$1;
+		next;
+		}
+	if ($arg =~ /^-b(.*)$/)
+		{
+		$opt_b =$1;
+		next;
+		}	
+	if ($arg =~ /^-l(.*)$/)
+		{
+		$opt_l =$1;
+		next;
+		}
+
+	if($arg =~ /^-/)
+		{
+		print "Unknown arg: $arg\n";
+		$errors++;
+		next;
+		}
+	}
+
+if ($errors || $opt_b eq "")
+	{
+	print_usage();
+	exit 1;
+	}
+
+my $headerfile=$opt_h;
+
+if ($opt_b ne "")
+	{
+	$opt_h = "\/h\"$headerfile\"" if ($headerfile ne "");
+	print "* bmconv /q $opt_h $opt_o $opt_b\n" if ($opt_v);
+	system("bmconv /q $opt_h $opt_o $opt_b");
+	if ($? != 0)
+		{
+		print "* BMCONV failed\n";
+		exit 1;
+		}
+	}
+
+if ($opt_l ne "")
+	{
+	my ($Resrc, $FileType) = split(/\./, basename($opt_o));
+	&Lockit_SrcFile($Resrc, "", $opt_l, $FileType, $opt_b, $Resrc.".$FileType"); # ""
+		}
+exit 0;
+
+sub Epocroot_Check
+	{
+	$epocroot = $ENV{EPOCROOT};
+	die "ERROR: Must set the EPOCROOT environment variable\n" if (!defined($epocroot));
+	$epocroot =~ s-/-\\-go;	# for those working with UNIX shells
+	die "ERROR: EPOCROOT must not include a drive letter\n" if ($epocroot =~ /^.:/);
+	die "ERROR: EPOCROOT must be an absolute path without a drive letter\n" if ($epocroot !~ /^\\/);
+	die "ERROR: EPOCROOT must not be a UNC path\n" if ($epocroot =~ /^\\\\/);
+	die "ERROR: EPOCROOT must end with a backslash\n" if ($epocroot !~ /\\$/);
+	die "ERROR: EPOCROOT must specify an existing directory\n" if (!-d $epocroot);
+	$epocroot=~ s-\\$--;		# chop trailing \\
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/epocrc.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,28 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+
+perl -S epocrc.pl  %*
+if errorlevel==1 goto CheckPerl
+goto End
+
+:CheckPerl
+perl -v >NUL
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
+goto End
+
+:End
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/epocrc.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,645 @@
+# Copyright (c) 2000-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:
+# Wrapper to support the EPOC Resource Compiler
+# 
+#
+
+use warnings;
+use Cwd;		# for cwd
+use FindBin;		# for FindBin::Bin
+use File::Copy;		# for copy()
+
+my $curdrive="x";	    	# will be initialised when first needed
+my $PerlBinPath;	# fully qualified pathname of the directory containing this script
+
+# establish the path to the Perl binaries
+BEGIN {
+	require 5.005_03;		# check user has a version of perl that will cope
+	$PerlBinPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlBinPath =~ s/\//\\/g;	# X:\epoc32\tools
+}
+use lib $PerlBinPath;
+use lockit_info;
+use E32Variant;         # for variant specific macros
+use Pathutl;
+use Preprocessor;
+
+sub print_usage
+	{
+#........1.........2.........3.........4.........5.........6.........7.....
+	print <<USAGE_EOF;
+
+Usage:
+  epocrc [options] srcfile [-ooutputfile] [-hheaderfile] [-l "TargetPath:CWDir"]  
+
+Compile an EPOC resource file, optionally generating a compiled resource 
+file and an associated header file.
+
+The available options are
+
+   -Dxxx, -Ixxx      -- C++ preprocessor arguments
+   -preincludeFILE   -- optional FILE to be used as a preinclude file in all preprocessing
+   -u                -- compile for use with Unicode EPOC
+   -ttmpdir          -- specify a directory for temporary files
+   -nocpp            -- do not call C++ preprocessor
+   -l                -- if specified, capture all source to \\epoc32\\localisation\\... 
+   -uid2 N           -- specifies 2nd UID for output file
+   -uid3 N           -- specifies 3rd UID for output file 
+   -m[nnn](,[nnn])*  -- suppress warning nnn in rcomp, can supply multiple 
+                        comma-separated three digit values
+   -v                -- verbose output
+   -vv               -- more verbose, -v passed to rcomp			
+
+See the file epocrc.config for futher usage options.
+   
+The resource file is first passed through the C++ preprocessor, using any 
+specified preprocessor arguments, and then compiled with RCOMP.EXE to 
+generate a compiled resource and the associated header file. 
+
+All intermediate files are generated into a temporary directory.
+
+Specifying either -uid2 or -uid3 overrides all uids specified in the source file.
+
+If -preinclude FILE is not specified, the preinclude file listed in
+%EPOCROOT%epoc32\\tools\\variant\\variant.cfg is used in all preprocessing.
+
+USAGE_EOF
+	}
+
+#-------------------------------------------------------
+# Process commandline arguments
+#
+# Can't use the Getopt package because it doesn't like the -D and -I style options
+#
+my $opt_uid2='';
+my $opt_uid3='';
+my $sourcefile="";
+my $opt_o="";
+my $opt_m="";
+my $opt_h="";	
+my $opt_l="";
+my $tmpdir="";
+my $unicode=0;
+my $opt_v=0;
+my $opt_vmore=0;
+my $opt_cpp = 1;
+my $check_rls_items = 0;
+my $strict_checking = 0;
+my $test_mode = 0;
+my $warnings_to_enable = 0;
+
+my $variantMacroHRHFile = "";
+my $exe = &PreprocessorToUseExe();
+my $cpp_spec= "$exe -nostdinc -undef -C ";	    # preserve comments
+
+my $errors = 0;
+while (@ARGV)
+	{
+	my $arg = shift @ARGV;
+	if ($arg =~ /^-D(.*)$/)
+		{
+		if ($1 eq "")
+		    {
+		    $arg = shift @ARGV;
+		    $cpp_spec .= "-D \"$arg\" ";
+		    }
+		else
+		    {
+		    $cpp_spec .= "$arg ";
+		    }
+		next;
+		}
+	if ($arg =~ /^-I-$/)
+		{
+		$cpp_spec .= "-I- ";
+		next;
+		}
+	if ($arg =~ /^-I(.*)$/)
+		{
+		$cpp_spec .= "-I ";
+		if ($1 eq "")
+		    {
+		    $arg = shift @ARGV;
+		    }
+		else
+		    {
+		    $arg = $1;
+		    }
+		$cpp_spec .= quoted_path($arg)." ";
+		next;
+		}
+	if ($arg =~ /^-preinclude(.*)$/)
+		{
+		$variantMacroHRHFile = $1;
+		next;
+		}
+	if ($arg =~ /^-v$/)
+		{
+		$opt_v =1;
+		next;
+		}
+	if ($arg =~ /^-vv$/)
+		{
+		$opt_vmore =1;
+		$opt_v =1;
+		next;
+		}
+	if ($arg =~ /^-nocpp$/)
+		{
+		$opt_cpp =0;
+		next;
+		}
+
+	if ($arg =~ /^-uid2$/)
+		{
+		$opt_uid2 = shift @ARGV;
+		next;
+		}
+	
+	if ($arg =~ /^-uid3$/)
+		{
+		$opt_uid3 = shift @ARGV;
+		next;
+		}
+	
+	if ($arg =~ /^-u$/)
+		{
+		$unicode =1;
+		next;
+		}
+	if ($arg =~ /^-o(.*)$/)
+		{
+		$opt_o =$1;
+		next;
+		}
+	if ($arg =~ /^-h(.*)$/)
+		{
+		$opt_h =$1;
+		next;
+		}
+	if ($arg =~ /^-t(.*)\\?$/)
+		{
+		$tmpdir ="$1\\";
+		next;
+		}
+	if ($arg =~ /^-l(.*)$/)
+		{
+		$opt_l =$1;
+		next;
+		}
+	if($arg =~ /^(-m.*)$/)
+		{
+		$opt_m =$1;
+		next;
+		}
+	if ($arg =~ /^-epocrc-test$/)
+		{
+		$test_mode = 1;
+		next;
+		}
+	if ($arg =~ /^-/)
+		{
+		print "Unknown arg: $arg\n";
+		$errors++;
+		next;
+		}
+
+	if (($opt_uid3 ne "*") && ($opt_uid2 eq "0"))
+		{
+    print "\n Error: uid3 specified without uid2 \n";
+	  $errors++;
+	  exit;
+	  }
+	     
+	$sourcefile=$arg;
+	}
+
+if ($errors || $sourcefile eq "")
+	{
+	print_usage();
+	exit 1;
+	}
+
+my @enabled_warnings = ();
+my $file_line;
+my @includes_from_config;
+my $epocrc_config = $ENV{EPOCROOT}. "epoc32\\tools\\epocrc.config";
+
+if(-e $epocrc_config)
+	{
+	print "Opening configuration file " . $ENV{EPOCROOT} . "epoc32\\tools\\epocrc.config.\n" if ($opt_v);
+	open EPOCRC_CONFIG, $ENV{EPOCROOT}. "epoc32\\tools\\epocrc.config" or die $ENV{EPOCROOT} . "epoc32\\tools\\epocrc.config";
+	
+	while ($file_line = <EPOCRC_CONFIG>)
+		{
+		if($file_line=~/^\s*check_rls_items\s*=\s*(\d+)\s*;?\s*(\#.*)?$/)
+			{ # matches check_rls_items = <digits> followed by optional semi-colon followed by optional perl comment
+			$check_rls_items = $1;
+			}
+		elsif($file_line=~/^\s*strict_checking\s*=\s*(\d+)\s*;?\s*(\#.*)?$/)
+			{ # matches strict_checking = <digits> followed by optional semi-colon followed by optional perl comment
+			$strict_checking = $1;
+			}
+		elsif($file_line=~/^\s*\#.*$/)
+			{ # matches perl comment on a line by itself
+			}
+		elsif($file_line=~/^\s*$/)
+			{ # matches empty lines and lines with only whitespace
+			}
+		elsif($file_line=~/^\s*Include\:\s*(.*)\s*$/i)
+			{ # matches Include: followed by a file location
+			push @includes_from_config, $1;
+			}
+		elsif($file_line=~/^\s*warnings_to_enable\s*=\s*(\S+)\s*;?\s*(\#.*)?$/)
+			{ # matches warnings_to_enable = <warnings> where <warnings> is a comma separated list of the warning numbers
+			$warnings_to_enable = $1;
+			# Append 0's to the warning numbers to make them 3 digit
+			@enabled_warnings = map (sprintf("%03d",$_), split(/,/, $warnings_to_enable));
+			}
+		else
+			{
+			print "Error: cannot parse line -- $file_line\n";
+			exit(1);
+			}
+		}
+	}
+else
+	{
+	print "No configuration file found at " . $ENV{EPOCROOT} . "epoc32\\tools\\epocrc.config, using default values.\n" if ($opt_v);
+	}
+
+unless ($check_rls_items==0 || $check_rls_items==1)
+	{
+	print "* Error: \$check_rls_items must take the value 0 or 1\n";
+	exit(1);
+	}
+unless ($strict_checking==0 || $strict_checking==1)
+	{
+	print "* Error: \$strict_checking must take the value 0 or 1\n";
+	exit(1);
+	}
+
+if($check_rls_items==0 && $strict_checking==1)
+	{
+	print "* Error: \$check_rls_items must be set to 1 to allow strict checking of rls comments\n";
+	exit(1);
+	}
+
+print "Values: \$check_rls_items=$check_rls_items ,\$strict_checking=$strict_checking and \$warnings_to_enable=$warnings_to_enable\n" if ($opt_v);
+ 
+# Remove the warnings to be enabled from the warnings to be supressed list
+if(@enabled_warnings) 
+	{
+ 	foreach my $warnings(@enabled_warnings)
+ 		{
+ 		$opt_m =~ s/$warnings,*//g;
+ 		}
+ 	}
+ 
+# Remove the last , character from $opt_m, which could have been left by previous processing
+$opt_m =~ s/,{1}$//;
+	
+# If all warnings are removed, then $opt_m needs to be blanked
+if ($opt_m =~/^-m$/) 
+	{
+	$opt_m = "";
+	}
+use File::Basename;
+my $outputfile=$opt_o;
+my $rss_base = basename($sourcefile);
+my ($rssfile) = split(/\./, $rss_base);	    # remove extension
+my $output_base;
+my $not_used;
+my $lang;
+my $rpp_name;
+
+if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+
+
+$output_base = basename($outputfile);
+($not_used,$lang) = split(/\.r/, $output_base);	    # get current lang from the filename
+
+$rpp_name = $tmpdir . $rssfile . $lang . ".rpp";
+
+}
+else {
+
+$rpp_name = $tmpdir. $rssfile . ".rpp";
+	
+}
+my $headerfile=$opt_h;
+
+if ($opt_v)
+	{
+	print "* Source file:   $sourcefile\n";
+	print "* Resource file: $outputfile\n" if ($outputfile ne "");
+	print "* Header file:   $headerfile\n" if ($headerfile ne "");
+	}
+
+$opt_o = "-o\"$outputfile\"" if ($outputfile ne "");
+$opt_h = "-h\"$headerfile\"" if ($headerfile ne "");
+
+
+#-------------------------------------------------------
+# Run the preprocessor
+#
+
+if($opt_cpp) 
+	{
+	$cpp_spec .= "-D_UNICODE " if ($unicode);
+	
+	$cpp_spec .= quoted_path($sourcefile) ." -o ". quoted_path($rpp_name);
+
+  # get the HRH file containing all the Variant specific Macros, if not specified on the command line
+	$variantMacroHRHFile = Variant_GetMacroHRHFile() if (!$variantMacroHRHFile);
+	if($variantMacroHRHFile)
+		{
+		my $variantFilePath = Path_Split('Path',$variantMacroHRHFile);
+		chop( $variantFilePath );
+		$cpp_spec .= " -I ".quoted_path($variantFilePath)." -include ".quoted_path($variantMacroHRHFile); 
+		}
+	
+	if($check_rls_items)
+		{
+		my $includePath;
+		foreach my $include (@includes_from_config)
+			{
+			my $relInclude = $ENV{EPOCROOT} . $include;
+			$relInclude=~s/^(.*)\\$/$1/;
+			if(-d $relInclude)
+				{				
+				$cpp_spec .= " -I ".quoted_path($relInclude);
+				}
+			elsif(-e $relInclude)
+				{
+				$includePath = Path_Split('Path',$include);
+				$includePath=~s/^(.*)\\$/$1/;
+				$cpp_spec .= " -I ".quoted_path($ENV{EPOCROOT}.$includePath)." -include ".quoted_path($relInclude);			
+				}
+			else
+				{
+				print "Warning; cannot recognise $include as a valid file or directory.\n";
+				}
+			}
+		}
+		
+	print "* $cpp_spec\n" if ($opt_v);
+	system($cpp_spec);
+
+	my $cpp_status = $?;
+	die "* cpp failed\n" if ($cpp_status != 0);
+	}
+
+
+#-------------------------------------------------------
+# Copy rpp files to epoc32\localisation if not checking
+# rls items for localisation tags
+
+if ($opt_l ne "" && $check_rls_items == 0)
+	{
+if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+	&Lockit_SrcFile($rssfile, $rpp_name, $opt_l, "RSC", "", $outputfile, $lang);
+}
+else {
+	&Lockit_SrcFile($rssfile, $rpp_name, $opt_l, "RSC", "", $outputfile);
+}
+	}
+
+#-------------------------------------------------------
+# Merge rls strings to rpp if not checking rls items
+# for localisation tags
+
+if($check_rls_items == 0)
+	{
+	&Merge_rls_string($rpp_name);	
+	}
+
+#-------------------------------------------------------
+# Test stage if -test_mode has been used
+#
+
+my $rcomp_spec = "";
+my $test_number = "";
+my $test_dir = "";
+my $output_redir = "";
+if($test_mode)
+	{
+	my $file_line;	
+	open EPOCRC_TEST, "epocrc.test";
+	while ($file_line = <EPOCRC_TEST>)
+		{
+		if($file_line =~ /^\s*RCOMP:\s*(\S+)\s*$/)
+			{
+			$rcomp_spec = $1;
+			}
+		elsif($file_line =~ /^\s*TEST-NUMBER:\s*(\d+)\s*$/)
+			{
+			$test_number = "$1";
+			}
+		elsif($file_line =~ /^\s*TEST-DIR:\s*(\S+)\s*$/)
+			{
+			$test_dir = $1;
+			}
+		}
+	if($rcomp_spec eq "" || $test_number eq "" || $test_dir eq "")
+		{
+		print "$rcomp_spec\n";
+		print "$test_number\n";
+		print "$test_dir\n";
+		print "Error: could not extract required information from epocrc.test file\n";
+		exit(1);
+		}
+	$output_redir = " 1>" . $test_dir . $rcomp_spec . "\.stdout 2>" . $test_dir . $rcomp_spec . "\.stderr";
+	$rcomp_spec .= " ";
+	}
+		
+#-------------------------------------------------------
+# Run the resource compiler
+#
+if($rcomp_spec eq "")
+	{
+	$rcomp_spec = "rcomp ";
+	}
+$rcomp_spec .= "-u " if ($unicode);
+$rcomp_spec .= "-v " if ($opt_vmore);
+$rcomp_spec .= "$opt_m " if ($opt_m ne "");
+$rcomp_spec .= "-l " if ($check_rls_items);
+$rcomp_spec .= "-force " if($strict_checking); 
+if ($opt_uid2 ne '' || $opt_uid3 ne '')
+	{
+	$opt_uid2 = "0" if ($opt_uid2 eq '');	# defaults to zero
+	$opt_uid3 = "*" if ($opt_uid3 eq '');	# defaults to * = derived from NAME
+	$rcomp_spec .= "-{$opt_uid2,$opt_uid3} ";
+	}
+$rcomp_spec .= "$opt_o $opt_h -s\"$rpp_name\" -i\"$sourcefile\"";
+$rcomp_spec .= "$output_redir";
+print "* $rcomp_spec\n" if ($opt_v);
+system($rcomp_spec);
+if ($? != 0)
+	{
+	print "* RCOMP failed - deleting output files\n";
+	unlink $outputfile if ($outputfile ne "");
+	unlink $headerfile if ($headerfile ne "");
+	exit 1;
+	}
+
+	if (-e $outputfile)
+	{
+		use File::stat; 
+		if (stat($outputfile)->size > 65535)
+		{
+			# Resource file bigger than 64kB are not supported.
+			print "* Compiled resource file bigger than 64kB\n";
+			print "* RCOMP failed - deleting output files\n";
+			unlink $outputfile if ($outputfile ne "");
+			unlink $headerfile if ($headerfile ne "");
+			exit 1;
+		}
+	}
+
+#-------------------------------------------------------
+# Copy rpp files to epoc32\localisation if checked
+# file for localisation tags
+
+if ($opt_l ne "" && $check_rls_items == 1)
+	{
+if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+	&Lockit_SrcFile($rssfile, $rpp_name, $opt_l, "RSC", "", $outputfile, $lang);
+}
+else {
+	&Lockit_SrcFile($rssfile, $rpp_name, $opt_l, "RSC", "", $outputfile);
+}
+}
+
+# exit cleanly
+
+if(!$test_mode)
+	{
+	print "* deleting $rpp_name\n" if ($opt_v);
+	unlink $rpp_name;
+	}
+exit 0;
+
+
+#-------------------------------------------------------
+# Subroutine: convert path into something acceptable to CPP.EXE
+#
+
+sub quoted_path
+    {
+    my ($arg) = @_;
+    return "\"$arg\"" if ($arg !~ /^\\[^\\]/);	# not an absolute path
+    if ($curdrive eq "x")
+		{
+		$curdrive="";
+		$curdrive=$1 if (cwd =~ /^(.:)/);	
+		}
+    return "\"$curdrive$arg\"";
+    }
+
+#-------------------------------------------------------
+# Subroutine: Merge the rls strings in the rpp file specified
+#
+sub Merge_rls_string
+	{
+	my ($rppfile) = @_;
+
+	my $line;
+	my $StringId;
+	my $key;
+	my $value;
+	my $StringToSubstitute;
+	my %ResourceString;
+	
+	print "* merging text strings to $rppfile\n" if ($opt_v);
+	
+	open NEWRPP, ">$rppfile.new" or die "* Can't write to $rppfile.new";
+	open RPP, "$rppfile" or die "* Can't open $rppfile";
+	
+	while ($line = <RPP>) 	{
+		while (($StringId, $StringToSubstitute)=each %ResourceString)
+		{
+			$line=~s/\b$StringId\b/$StringToSubstitute/g if ($line !~ /^rls_string/);
+		}
+	
+		# find quoted "" strings
+		if($line =~ /^rls_string\s+(\S+)\s+(.*$)/)
+		{
+			my $text = $2;
+			$key = $1;
+			$line=~s/(.*)/\/\/$1/;
+			my $substr_count = 0;
+			if(!exists $ResourceString{$key})
+			{
+			SUBSTR:	while (1)
+			{
+				# find quoted "" strings e.g. "hello"
+				if($text =~ /^(\s*\"(.*?\\.)*.*?\")/)		
+				{
+					$value = $1;
+					$text = $';
+					++$substr_count;
+				}
+	
+				# find quoted '' strings. e.g. 'world'
+				elsif($text =~ /^(\s*\'(.*?\\.)*.*?\')/)			
+				{
+					$value = $1;
+					$text = $';
+					++$substr_count;
+				}
+	
+				# find hex strings e.g. <0x34><0x45><0x65>
+				elsif($text =~ /^(\s*(<.*?>)+)/)		
+				{
+					$value = $1;
+					$text = $';
+					++$substr_count;
+				}
+	
+				# find c comment e.g. /*hello world*/ (may exist between strings)
+				elsif($text =~ /^(\s*\/\*.*?\*\/)/)		
+				{
+					$text = $';
+					next SUBSTR; # ignore embedded comment
+				}
+	
+				# find c++ comment e.g. //hello world (may exist after strings)
+				elsif($text =~ /^(\s*\/\/.*$)/)		
+				{
+					$text = $';
+					next SUBSTR; # ignore trailing comment
+				}
+	
+				# exit search
+				else
+				{
+					if ($substr_count == 0)
+					{
+						warn("WARNING: rls_string $key either has incorrect syntax or no value\n");
+					}
+					last SUBSTR;
+				}
+			$ResourceString{$key} .= $value;
+			}
+		  	}
+		}
+		print NEWRPP $line;
+	}
+
+	close RPP;
+	close NEWRPP;
+	copy ("$rppfile.new", "$rppfile");
+	unlink ("$rppfile.new");
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/featurevariantmap.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,505 @@
+# Copyright (c) 2007-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:
+#
+
+# modified start: makefile improvement 
+use Cwd;
+# modified end: makefile improvement 
+use Digest::MD5;
+use File::Basename;
+
+package featurevariantmap;
+our $verbose = 0;
+
+my $featureListDir = "$ENV{EPOCROOT}epoc32\\include\\variant\\featurelists";
+
+sub LoadFeatureList
+	{
+	my %featurehash;
+	
+	# Try and find the feature master list folder
+	if (!opendir DIR, $featureListDir)
+		{
+		print "\nERROR: Failed to open feature list directory $featureListDir: $!";
+		return \%featurehash;
+		}
+		
+	# Load the list of features from each file
+	foreach my $file ( grep(/\.txt$/i, readdir DIR) )
+		{
+		$file = "$featureListDir\\$file";
+		print "Reading feature list from $file\n" if ($verbose);
+
+		if (!open IN, $file)
+			{
+			print "\nERROR: Failed to read feature list $file: $!";
+			}
+		else
+			{
+			while(my $line = <IN>)
+				{
+				$line =~ s/\/\/.+$//; # Get rid of c++ style comments
+				if ($line =~ /(\S+)/)
+					{
+					$featurehash{$1} = $file;
+					}
+				}
+			close IN;
+			}
+			
+		}
+	closedir DIR;
+	return \%featurehash;
+	}
+	
+sub ValidFeature
+{
+	our $featurelist;
+	my $name = shift;
+	
+	$featurelist = LoadFeatureList() if !$featurelist;
+	return exists $featurelist->{$name};
+# modified start: makefile improvement 
+}
+sub GetVariantListFromVmap
+{
+	my $obj = shift;
+	my $vmapfile = shift;
+	if(open(VMAP, "<$vmapfile"))
+	{
+		my @varlist;
+		while(<VMAP>)
+		{
+			if(/^\w{32}\s+(\w+)/)
+			{
+				push @varlist, $1;
+			}
+
+		}
+		close(VMAP);
+		return @varlist;
+	}
+	close(VMAP);
+	return;
+	
+}
+sub CheckOldVmapFile
+{
+	my $thisObj = shift;
+	my $vmapfile = shift;
+	my $varRef = shift;
+	my $buildincludes = $$varRef{BUILD_INCLUDES};
+	my $parents = $$varRef{PARENTS};
+	my $children = $$varRef{CHILDREN};
+	my $varianthrh = $$varRef{VARIANT_HRH};
+	my %variantMacrolist;
+	my $Options = "-dM -undef -nostdinc -+";
+	my $Drive = $1 if (Cwd->cwd =~ /^(.:)/);
+	if($buildincludes)
+	{
+		foreach (@$buildincludes)
+		{
+			$Options .= " -I \"".$Drive.$_."\"";
+		}
+	}
+	if($varianthrh)
+	{
+		$Options .= " \"".$Drive.$varianthrh."\"";
+	}
+	if(open(CPP, "cpp $Options 2>&1 |"))
+	{
+		while(<CPP>)
+		{
+			my ( $key, $value );
+			if (/^#define (\w+(?:\([^\)]*\))?)(?:\s(\S.*?))?\s*$/)
+			{
+				my $tmpKey = $1;
+				my $tmpValue = $2;
+				$tmpValue =~ s/,/\\,/g;
+				($key, $value ) = ( $tmpKey, $tmpValue ? "\'$tmpValue\'" : 'defined' );
+			}
+			if ($key && ValidFeature($key))
+			{
+				$variantMacrolist{$key} = $value;
+			}
+		}
+		if(!close(CPP))
+		{
+			print "Incomplete pre-precess of $varianthrh \n";
+		}
+	}
+	my $findReusedKey = 1;
+	my %vmapfeatureinfo;
+	my $keyhash;
+	my $macroList;
+	if(open(VMAP, "<$vmapfile"))
+	{
+		while(<VMAP>)
+		{
+			if(/^\w{32}\s+(\w+)/)
+			{
+				$findReusedKey = 1;
+				s/(^\w{32})\s+\w+\s+//;
+				$keyhash = $1;
+				my @feature = split(/(?<=[^\\]),/, $_);
+				foreach my $value (@feature)
+				{
+					if($value =~ /([^\s]*)\s*=\s*(.*)/)
+					{
+						$vmapfeatureinfo{$1} = $2;
+					}
+				}
+				foreach my $key (sort keys %vmapfeatureinfo)
+				{
+					
+					if(($vmapfeatureinfo{$key} eq "undefined") && (not(exists($variantMacrolist{$key}))))
+					{
+						$findReusedKey = 1;
+					}
+					elsif($vmapfeatureinfo{$key} eq $variantMacrolist{$key})
+					{
+						$findReusedKey = 1;
+					}else
+					{
+						$findReusedKey = 0;
+						last;
+					}
+				}
+				if( $findReusedKey == 1)
+				{
+					$macroList = $_;
+					last;
+				}
+				undef(%vmapfeatureinfor);
+				undef($keyhash);
+			}
+		}
+	}
+	if($findReusedKey == 1)
+	{
+    	return ($keyhash, $macroList);
+	}
+	else
+	{
+		return;
+	}
+}
+# modified end: makefile improvement 
+	
+# Usage:	featurevariantmap->Hash(\@sources, \%var)
+#
+# Generate a hash value from the source files for a target using the
+# given feature variant data.
+#
+# \@sources	- list of source files (full path)
+# \%var		- variant data (from featurevariantparser->GetVariant)
+#
+# returns the hash value, or "" if an error occurs.
+	
+sub Hash
+{
+	my $thisObj = shift;
+	my @result = $thisObj->HashAndFeatures(@_);
+	return $result[0];
+}
+
+# Usage:	featurevariantmap->HashAndFeatures(\@sources, \%var)
+#
+# Generate a hash value from the source files for a target using the
+# given feature variant data.
+#
+# \@sources	- list of source files (full path)
+# \%var		- variant data (from featurevariantparser->GetVariant)
+#
+# returns a list of two entries [0] the hash value, or "" if an error occurs [1] A string of macros tested or affecting the code
+
+sub HashAndFeatures
+{
+	my $thisObj = shift;
+	my $srcRef = shift;
+	my $varRef = shift;
+
+	return "" if (!$srcRef || !$varRef);
+	return "" if (!$$varRef{'VALID'});
+
+	# get the pre-processing options
+	my $pre = $$varRef{'PREINCLUDE'};
+	my $inc = $$varRef{'BUILD_INCLUDES'};
+	my $mac = $$varRef{'MACROS'};
+
+	# Pass -dU option to get list of macros affecting the code
+	my $options = "-dU -undef -nostdinc -+";
+
+	if ($pre)	# pre-include file
+	{
+		$options .= " -include \"$pre\"";
+	}
+
+	if ($inc)	# include directories
+	{
+		foreach (@$inc)
+		{
+			$options .= " -I \"$_\"";
+		}
+	}
+
+	if ($mac)	# macro definitions
+	{
+		foreach (@$mac)
+		{
+			$options .= " -D$_";
+		}
+	}
+
+	my %testedMacrosHash;
+	
+	# Macros that affect the mmp file also affect the variant - so add them to the list
+	foreach my $key ( keys %{ $$varRef{MMPTESTED} } )
+		{
+		$testedMacrosHash{$key} = $$varRef{MMPTESTED}->{$key} if (ValidFeature($key));
+		}
+		
+	foreach my $src (@$srcRef)
+	{
+		my $options = "-I " . File::Basename::dirname($src) . " $options";
+
+		print "cpp $options $src\n" if ($verbose);
+
+		if (open(CPP, "cpp $options $src 2>&1 |"))
+		{
+			while (<CPP>)
+			{
+				print $_ if ($verbose && /No such file/);
+
+				# Scan for #define or #undef generated for -dU
+				my ( $key, $value );
+				if (/^#define (\w+(?:\([^\)]*\))?)(?:\s(\S.*?))?\s*$/)
+				{
+# modified start: makefile improvement 
+					my $tmpKey = $1;
+					my $tmpValue = $2;
+					$tmpValue =~ s/,/\\,/g;
+					( $key, $value ) = ( $tmpKey, $tmpValue ? "\'$tmpValue\'" : 'defined' );
+# modified end: makefile improvement 
+				}
+				elsif (/^#undef (.+)$/)
+				{
+					( $key, $value ) = ( $1, 'undefined' );
+				}
+				
+				if ($key && ValidFeature($key))
+				{
+					# Warn the user if a macro appears to have changed value - shouldn't really happen
+					# Feature macros should only be set in platform HRH files and not in the code
+					if (exists $testedMacrosHash{$key} && $testedMacrosHash{$key} ne $value)
+					{
+						print "WARNING: Feature macro $key redefined from $testedMacrosHash{$key} to $value\n";
+					}
+					
+					# Store the macro details
+					$testedMacrosHash{$key} = $value;
+				}
+			}
+			if (!close(CPP))
+			{
+				# this probably means that a rsg file was included
+				# that hasn't been generated yet.
+				print "Incomplete pre-process of $src\n" if ($verbose);
+			}
+		}
+		else
+		{
+			print "ERROR: Could not pre-process $src\n";
+			return "";
+		}
+	}
+
+	# Now generate the tested macros string
+	my $testedMacros = '';
+	foreach my $key ( sort keys %testedMacrosHash )
+	{
+		$testedMacros .= ',' if $testedMacros;
+		$testedMacros .= "$key=$testedMacrosHash{$key}";
+	}
+	
+	print "Tested feature list: $testedMacros\n" if $verbose;
+	return ( Digest::MD5::md5_hex($testedMacros), $testedMacros );
+}
+
+# Usage:	featurevariantmap->Save("my.dll", "1234", "myvar", \@hints)
+#
+# Write a hash value for a target into the target.vmap file along
+# with some optional hints data.
+#
+# "my.dll"	- the target (full path)
+# "1234"	- the hash value (32 character hex number)
+# "myvar"	- the feature variant name
+# \@hints	- optional list of extra strings (eg. "FEATUREVARIANT")
+#
+# returns 0 if OK and non-zero if an error occurs.
+
+sub Save
+{
+	my $thisObj = shift;
+	my $binName = shift;
+	my $keyValue = shift;
+	my $varName = shift;
+	my $features = shift;
+	my $hintRef = shift;
+
+	# read the current data first if the .vmap file already exists
+# modified by SV start: makefile improvement 
+	my $vmapFile = "$binName.$varName.vmap";
+	my @lines;
+	my $tmpinfo = "$keyValue $varName";
+	$tmpinfo .= " $features" if $features;
+	if (open(VMAP, $vmapFile))
+	{
+		my @tmp=<VMAP>;
+		if (grep (/$tmpinfo/, @tmp)){
+			close(VMAP);
+			return 0;
+		}
+		else {
+			foreach  (@tmp)
+			{
+				if (/^\w{32}\s+(\w+)/)
+				{
+					push(@lines, $_) unless (uc($1) eq uc($varName));
+				}
+			}
+			close(VMAP);
+		}
+	}
+# modified by SV end: makefile improvement 
+
+	# write the new data to the .vmap file
+	if (!open(VMAP, ">$vmapFile"))
+	{
+		print "ERROR: Could not write VMAP to $vmapFile\n";
+		return 1;
+	}
+
+	# put the hints at the beginning
+	if ($hintRef)
+	{
+		foreach (@$hintRef)
+		{
+			print VMAP "$_\n";
+		}
+	}
+
+	# then the "key var" pairs
+	foreach (@lines)
+	{
+		print VMAP $_;
+	}
+	print VMAP "$keyValue $varName";
+	print VMAP " $features" if $features;
+	print VMAP "\n";
+	
+	close(VMAP);
+	return 0;
+}
+
+# Usage:    featurevariantmap->Find("my.dll", "myvar")
+#
+# Look for a binary using its "final" name. We will use the feature
+# variant map and the feature variant name to deduce the "variant"
+# binary name and test for its existence.
+#
+# "my.dll"	- the final target (full path)
+# "myvar"	- the feature variant name
+#
+# returns the file name if found, or "" otherwise.
+
+sub Find
+{
+	my $thisObj = shift;
+	my $binName = shift;
+	my $varName = shift;
+
+	# look for the vmap file
+# modified by SV start: makefile improvement 
+	my $vmapFile = "$binName.$varName.vmap";
+# modified by SV end: makefile improvement 
+
+	if (-e $vmapFile)
+	{
+		my $key = $thisObj->GetKeyFromVMAP($varName, $vmapFile);
+
+		if ($key)
+		{
+			$binName =~ /^(.*)\.([^\.]*)$/;
+			$binName = "$1.$key.$2";
+		}
+		else
+		{
+			print "ERROR: No \'$varName\' variant for $binName in $vmapFile\n";
+			return "";	# file not found
+		}
+	}
+
+	# check that the actual binary exists
+	if (-e $binName)
+	{
+		return $binName;
+	}
+	return "";	# file not found
+}
+
+# internal functions
+
+sub GetKeyFromVMAP
+	{
+	my $thisObj = shift;
+	my @res = $thisObj->GetDataFromVMAP(@_);
+	return $res[0];
+	}
+	
+# Usage:    featurevariantmap->GetDataFromVMAP("myvar", "mydll.vmap")
+#
+# Opens the vmap file indicated and returns the data for the requested variant
+#
+# "myvar"	- the feature variant name
+# "my.vmap"	- the final target vmap file (full path)
+#
+# Returns a list ( hash, features ) for the variant in the vmap or undef if not found
+
+sub GetDataFromVMAP
+{
+	my $thisObj = shift;
+	my $varName = shift;
+	my $fileName = shift;
+
+	if (!open(VMAP, $fileName))
+	{
+		print "ERROR: Could not read VMAP from $fileName\n";
+		return "";
+	}
+	while (<VMAP>)
+	{
+		chomp;
+		if (/(\w{32})\s+$varName\s+(.*)$/i or /(\w{32})\s+$varName$/i)
+		{
+			my ( $hash, $features ) = ( $1, $2 ? $2 : '' );
+			close(VMAP);
+			return ( $hash, $features );
+		}
+	}
+	close(VMAP);
+	return;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/featurevariantparser.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,939 @@
+#
+# Copyright (c) 2007 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:
+#
+
+# Module FEATUREVARIANTPARSER. Parses .VAR files and returns key variables.
+
+# The following hashes can be used with this module:
+
+# NAME 				-> Returns the name of the variant file (without the extension)
+
+# FULLPATH 			-> Returns the full path of the variant file (including the extension)
+
+# VALID 			-> Set to 1 if the variant file is valid, otherwise set to 0
+
+# VIRTUAL 			-> Set to 1 if the variant is a grouping node, otherwise set to 0
+
+# ROM_INCLUDES 		-> Returns a pointer to the list of ROM_INCLUDES (including Parent nodes).
+
+# BUILD_INCLUDES 	-> Returns a pointer to the list of BUILD_INCLUDES (including Parent nodes).
+
+# VARIANT_HRH 		-> Returns the full VARIANT_HRH file path used by the VAR file.
+
+# PARENTS			-> Returns a pointer to the list of all the parent nodes, starting with immediate parent
+
+# CHILDREN			-> Returns a pointer to the list of all the children nodes.
+
+# USAGE : The GetVariant method should only be called using featurevariantparser->GetVariant(var_name, directory(optional) );
+# If the directory for the VAR file is not supplied,the default directory will be searched for var_name.var
+
+
+package featurevariantparser;
+use File::Spec;
+
+my @buildinclude;
+my @rominclude;
+my @parents;
+my @childNodes;
+my $virtual;
+my $childNodeStatus;
+my $varianthrh;
+
+my $defaultDir = "$ENV{EPOCROOT}epoc32\\tools\\variant";
+
+my $dir;
+my $fullpath;
+my $fulldir;
+
+my $pathregex = '.+[^\s]'  ;   # Regex to match all characters (including \ or /), excluding whitespaces.
+
+our $verbose = 0;
+
+# Wrapper function to return all the correct variables
+# Arguments : (Variant Name, Variant Directory(optional))
+# Returns a Hash.
+#
+# Note: This has to return a copy of all the data - no references!
+#  There are package globals that are reused on a call to this function
+#  so references would go out of date after repeated calls to GetVariant
+#  This package should have been written using objects - too late now
+
+sub GetVariant
+{
+
+    @buildinclude    = ();
+    @rominclude      = ();
+    @parents         = ();
+    @childNodes      = ();
+    $dir             = "";
+    $fullpath        = "";
+    $varianthrh      = "";
+    $virtual         = 0;
+    $childNodeStatus = 0;
+    
+    my $parnodes = "";
+    my %data;
+    my $children  = "";
+    my $romincs   = "";
+    my $buildincs = "";
+
+    $data{'VALID'} = 0;
+
+    my ( $empty, $varname, $dirname ) = @_;
+
+    my $fullvarpath = ReturnFullVariantPath( $varname, $dirname );
+
+    if ( $dirname )
+    {
+        $fulldir = $dirname;
+    }
+    else
+    {
+        $fulldir = $defaultDir;
+    }
+
+    $data{'FULLPATH'} = "$fullvarpath";
+    $data{'NAME'}     = "$varname";
+
+    # If the variant file exists, check the syntax and setup variables.
+    if ( FileExists($fullvarpath) )
+    {
+
+        if ( CheckVarFileSyntax( $fullvarpath, $varname ) )
+        {
+            $data{'VALID'} = 1;
+        }
+    }
+    else
+    {
+        print "ERROR: $fullpath" . " does not exist\n";
+    }
+
+    my $count = 0;
+
+    # If VAR file is valid, setup all other variables.
+    if ( $data{'VALID'} )
+    {
+
+        $romincs   = FindRomInclude($fullvarpath);
+        $buildincs = FindBuildInclude($fullvarpath);
+        $children  = FindChildNodes($fullvarpath);
+        $parnodes  = FindParentNodes($fullvarpath);
+
+        # Remove empty elements from the BUILD_INCLUDE list     
+        @$buildincs = grep /\S/, @$buildincs;
+
+        # Fix paths for all BUILD_INCLUDES
+        for ( my $i = 0 ; $i < scalar(@$buildincs) ; $i++ )
+        {
+            @$buildincs[$i] = FixPaths( @$buildincs[$i] );
+        }
+
+        # Remove empty elements from the ROM_INCLUDE list
+		@$romincs = grep /\S/, @$romincs;
+
+        # Fix paths for all ROM_INCLUDES
+        for ( my $i = 0 ; $i < scalar(@$romincs) ; $i++ )
+        {
+            @$romincs[$i] = FixPaths( @$romincs[$i] );
+        }
+
+        # Remove empty elements from the CHILDREN list
+		@$children = grep /\S/, @$children;
+		
+        # Remove empty elements from the PARENT list
+		@$parnodes = grep /\S/, @$parnodes;
+
+        $data{'BUILD_INCLUDES'} = CloneList($buildincs);        
+        $data{'ROM_INCLUDES'}   = CloneList($romincs);
+        $data{'PARENTS'}        = CloneList($parnodes);
+        $data{'CHILDREN'}       = CloneList($children);
+        $data{'VARIANT_HRH'}    = $varianthrh;
+        $data{'VIRTUAL'}        = $virtual;
+    }
+
+    # If variant file is not valid, return reference to a blank array
+    else
+    {
+        $data{'BUILD_INCLUDES'} = [];
+        $data{'ROM_INCLUDES'}   = [];
+        $data{'VARIANT_HRH'}    = "";
+        $data{'PARENTS'}        = [];
+        $data{'CHILDREN'}       = [];
+    }
+
+    return %data;
+}
+
+# Helper method that clones a reference to a simple list
+sub CloneList
+    {
+    my $ref = shift;
+    
+    # Check the reference is a list
+    die "Not a list ref" if ref($ref) ne 'ARRAY';
+    
+    # Create a new list object
+    my @list;
+    foreach my $entry ( @$ref )
+        {
+        # Only clone lists of scalars
+        die "Not a scalar" if ref($entry);
+        
+        # Add the entry to the new list
+        push @list, $entry;
+        }
+    
+    # return a reference to the copy    
+    return \@list;
+    }
+    
+# Method to correct all the slashes, and also append EPOCROOT if the path begins with a \ or /
+# If path doesn't start with \ or /, returns an abosulte canonical path
+sub FixPaths
+{
+
+    my $arr = $_[0];
+
+    if ( $arr =~ m/^\// )
+    {
+       $arr =~ s/^\/?//;
+        return File::Spec->canonpath( "$ENV{EPOCROOT}" . "$arr" );
+    }
+
+    elsif ( $arr =~ m/^\\/ )
+    {
+        $arr =~ s/^\\?//;
+        return File::Spec->canonpath( "$ENV{EPOCROOT}" . "$arr" );
+    }
+
+    else
+    {
+        return File::Spec->rel2abs( File::Spec->canonpath("$arr") );
+    }
+
+}
+
+# Method to construct a full variant path from the variant file and directory
+sub ReturnFullVariantPath
+{
+
+    my $vardirectory = $_[1];
+    my $varname      = $_[0];
+
+    # Check if a directory is supplied
+    if ($vardirectory)
+    {
+        $dir = "$vardirectory";
+    }
+
+    else
+    {
+        $dir = $defaultDir;
+    }
+    my $filename = "$varname" . "\.var";
+    $fullpath = File::Spec->catfile( File::Spec->rel2abs($dir), $filename );
+
+    if ( !File::Spec->file_name_is_absolute($fullpath) )
+    {
+        $fullpath = File::Spec->rel2abs($fullpath);
+    }
+
+    return $fullpath;
+}
+
+# Method to find the BUILDINCLUDE values of the VAR file.
+sub FindBuildInclude
+{
+
+    my $filename = $_[0];
+
+    my $parentNodes;
+
+    # Construct a list of parent nodes if node is a child
+    if ($childNodeStatus)
+    {
+        $parentNodes = FindParentNodes("$filename");
+    }
+
+    if ($parentNodes)
+    {
+
+        # Go through and build the list of all parent BUILD_INCLUDES
+        for ( my $i = scalar(@$parentNodes) - 1 ; $i >= 0 ; $i-- )
+        {
+
+            my $tmp = ReturnFullVariantPath( @$parentNodes[$i], $fulldir );
+            open( NEWHANDLE, "<$tmp" );
+            while (<NEWHANDLE>)
+            {
+                if (/BUILD_INCLUDE/)
+                {
+                    ExtractBuildIncludeValue($_);
+                }
+            }
+            close(NEWHANDLE);
+        }
+    }
+
+    # Append the BUILD_INCLUDES of the VAR file in the end
+    open( NEWHANDLE, "<$filename" );
+
+    while (<NEWHANDLE>)
+    {
+        if (/BUILD_INCLUDE/)
+        {
+            ExtractBuildIncludeValue($_);
+        }
+    }
+    close(NEWHANDLE);
+
+    undef(@parents);    # Flush out parent array
+
+    return \@buildinclude;
+
+}
+
+# Method to extract the BUILD_INCLUDE value of a node.
+sub ExtractBuildIncludeValue
+{
+
+# If modifier append is found, push the buildinclude to the end of the array list.
+    if (/^BUILD_INCLUDE\s+append\s+($pathregex)/)
+    {
+        push( @buildinclude, ($1) );
+
+    }
+
+# If modifier prepend is found, push the buildinclude to the beginning of the array list.
+    if (/^BUILD_INCLUDE\s+prepend\s+($pathregex)/)
+    {
+        unshift( @buildinclude, ($1) );
+    }
+
+#If keyword set is found, then empty the buildinclude variable and push the new value
+    if (/^BUILD_INCLUDE\s+set\s+($pathregex)/)
+    {
+        undef(@buildinclude);
+        push( @buildinclude, ($1) );
+    }
+
+}
+
+# Method to find the ROMINCLUDE values of the VAR file.
+sub FindRomInclude
+{
+
+    my $filename = $_[0];
+
+    my $parentNodes;
+
+    # Construct a list of parent nodes if node is a child
+    if ($childNodeStatus)
+    {
+        $parentNodes = FindParentNodes("$filename");
+    }
+
+    if ($parentNodes)
+    {
+
+        # Go through and build the list of all parent ROM_INCLUDES
+        for ( my $i = scalar(@$parentNodes) - 1 ; $i >= 0 ; $i-- )
+        {
+            my $t = ReturnFullVariantPath( @$parentNodes[$i], $fulldir );
+            open( NEWHANDLE, "<$t" );
+
+            while (<NEWHANDLE>)
+            {
+                if (/ROM_INCLUDE/)
+                {
+                    ExtractRomIncludeValue($_);
+                }
+            }
+            close(NEWHANDLE);
+        }
+    }
+
+    # Append the ROM_INCLUDES of the VAR file in the end
+    open( NEWHANDLE, "<$filename" );
+
+    while (<NEWHANDLE>)
+    {
+        if (/ROM_INCLUDE/)
+        {
+            ExtractRomIncludeValue($_);
+        }
+    }
+
+    undef(@parents);    # Flush out parent array;
+    return \@rominclude;
+
+}
+
+# Method to extract the ROM_INCLUDE value of a node.
+sub ExtractRomIncludeValue
+{
+
+# If modifier append is found, push the rominclude to the end of the array list.
+    if (/^ROM_INCLUDE\s+append\s+($pathregex)/)
+    {
+        push( @rominclude, ($1) );
+    }
+
+# If modifier prepend is found, push the rominclude to the beginning of the array list.
+    if (/^ROM_INCLUDE\s+prepend\s+($pathregex)/)
+    {
+        unshift( @rominclude, ($1) );
+    }
+
+# If keyword set is found, then empty the rominclude variable and push the new value
+    if (/^ROM_INCLUDE\s+set\s+($pathregex)/)
+    {
+        undef(@rominclude);
+        push( @rominclude, ($1) );
+    }
+
+}
+
+# Method to find the immediate parent node of a child node
+sub ExtractExtendsValue
+{
+
+    $_[0] =~ m/^EXTENDS\s+(\w+)/;
+    return $1;
+}
+
+# Extract the value of the VARIANT keyword
+sub ExtractVariantValue
+{
+
+    $_[0] =~ m/^VARIANT\s+(\w+)/;
+    return $1;
+}
+
+# Extracts the value of the HRH file from the VARIANT_HRH line supplied
+sub ExtractHrhValue
+{
+
+    $_[0] =~ m/^VARIANT_HRH\s+($pathregex)/;
+    return $1;
+
+}
+
+# Finds if the variant file is a group node
+# Note: This method is only a supplementary method, not actually used during this module
+#       Provides a quick way to check is any VAR file is grouping node or not without loading the entire file.
+sub IsVirtual
+{
+
+    my $filename = $_[0];
+
+    open( READHANDLE, "<$filename" );
+    while (<READHANDLE>)
+    {
+        if (/^VIRTUAL\s*$/)
+        {
+            close(READHANDLE);
+            return 1;
+        }
+    }
+    close(READHANDLE);
+    return 0;
+}
+
+# Constructs a list of Parent nodes for a given Child node.
+sub FindParentNodes
+{
+
+    my $filename   = $_[0];
+    my $hasparents = 0;
+
+    open( READHANDLE, "<$filename" );
+    while (<READHANDLE>)
+    {
+        if (/EXTENDS/)
+        {
+            $hasparents = 1;
+            push( @parents, ExtractExtendsValue($_) );
+
+        }
+    }
+
+    close(READHANDLE);
+
+    if ( $hasparents == 1 )
+    {
+        FindParentNodes(
+            ReturnFullVariantPath( @parents[ scalar(@parents) - 1 ], $fulldir )
+        );
+    }
+    else
+    {
+        return \@parents;
+    }
+
+}
+
+# Constructs a list of Child nodes for a given Parent node (full path or .var path required)
+sub FindChildNodes
+{
+
+    my $var = ReturnNativeVarName("$_[0]");
+
+    my $tmpname    = "";
+    my @childarray = ();
+
+    opendir( DIR, $fulldir );
+
+    while ( defined( my $file = readdir(DIR) ) )
+    {
+
+        if ( $file =~ m/\.var$/ )
+        {
+            $tmpname = $file;
+            $tmpname =~ s/\.var$//;
+
+            open( FILEHANDLE, ReturnFullVariantPath( $tmpname, $fulldir ) );
+
+            while (<FILEHANDLE>)
+            {
+
+                if (/^EXTENDS/)
+                {
+                    if ( lc $var eq lc ExtractExtendsValue($_) )
+                    {
+                        push( @childarray, $tmpname );
+                    }
+                }
+
+            }
+            close(FILEHANDLE);
+        }
+    }
+
+    close(DIR);
+
+    foreach my $child (@childarray)
+    {
+        push( @childNodes, $child );
+    }
+
+    foreach my $child (@childarray)
+    {
+        FindChildNodes( ReturnFullVariantPath( $child, $fulldir ) );
+    }
+
+    return \@childNodes;
+}
+
+# Method to return all the buildable (i.e. No syntax erros and non-virtual) list of
+# variants that can be built in the specified directory. If no directory is specified,
+# the default location is searched.
+
+# Usage: GetBuildableFeatureVariants(<Directory>)
+
+sub GetBuildableFeatureVariants
+{
+
+    my $empty = shift;
+    my $dir   = shift;
+    my @list;
+    my $fulldir;
+
+    if ( $dir )
+    {
+        $fulldir = $dir;
+    }
+    else
+    {
+        $fulldir = $defaultDir;
+    }
+
+    opendir( DIR, $fulldir );
+
+    while ( defined( my $file = readdir(DIR) ) )
+    {
+
+        if ( $file =~ m/\.var$/ )
+        {
+
+            $file =~ s/\.var$//;
+
+            my $fullpath = ReturnFullVariantPath( $file, $fulldir );
+
+            if ( CheckVarFileSyntax( $fullpath, $file )
+                && !IsVirtual($fullpath) )
+            {
+                push( @list, $file );
+
+            }
+        }
+    }
+
+    return sort @list;
+
+}
+
+# Method to return a list of the valid and non-virtual children of a given VAR node, in a given location.
+# If the calling var file is non-virtual, it is returned as the only element of the list If not, then
+# the method parses though and finds all buildable children
+
+# USAGE: ResolveFeatureVariant(<varname>,<dirame>);
+
+sub ResolveFeatureVariant
+{
+
+    my $empty   = shift;
+    my $varfile = shift;
+    my $dir     = shift;
+    my $fulldir;
+    my @list;
+
+    if ( !$dir eq "" )
+    {
+        $fulldir = $dir;
+    }
+    else
+    {
+        $fulldir = $defaultDir;
+    }
+    my $fullpath = ReturnFullVariantPath( $varfile, $fulldir );
+
+    if ( CheckVarFileSyntax( $fullpath, $varfile ) && !IsVirtual($fullpath) )
+    {
+        push( @list, $varfile );
+        return @list;
+    }
+
+    my %variant = GetVariant( 0, $varfile, $fulldir );
+    my $child = $variant{'CHILDREN'};
+
+    foreach my $item (@$child)
+    {
+
+        my $fullpath = ReturnFullVariantPath( $item, $fulldir );
+
+        if ( CheckVarFileSyntax( $fullpath, $item ) && !IsVirtual($fullpath) )
+        {
+            push( @list, $item );
+        }
+    }
+
+    return @list;
+
+}
+
+# Method to return all valid (no syntax errors only) list of variants
+# in the specified directory. If no directory is specified,the default location is searched.
+
+# Usage: GetValidVariants(<Directory>)
+
+sub GetValidVariants
+{
+
+    my $empty = shift;
+    my $dir   = shift;
+    my @list;
+    my $fulldir;
+
+    if ( !$dir eq "" )
+    {
+        $fulldir = $dir;
+    }
+    else
+    {
+        $fulldir = $defaultDir;
+    }
+
+    opendir( DIR, $fulldir );
+
+    while ( defined( my $file = readdir(DIR) ) )
+    {
+
+        if ( $file =~ m/\.var$/ )
+        {
+
+            $file =~ s/\.var$//;
+
+            my $fullpath = ReturnFullVariantPath( $file, $fulldir );
+
+            if ( CheckVarFileSyntax( $fullpath, $file ) )
+            {
+
+                push( @list, $file );
+
+            }
+        }
+    }
+
+    return sort @list;
+}
+
+# Returns the Variant name from a complete path, without the .var extension
+sub ReturnNativeVarName
+{
+
+    my $tmp = "$_[0]";
+    $tmp =~ /^.*[\\|\/](.*)\.var$/i;  
+    return $1;
+
+}
+
+# Checks if a file passed to this function exists.
+sub FileExists
+{
+	return -e $_[0];
+
+}
+
+# Checks if the default variant file (default.var) exists in the directory supplied.
+# If no directory is supplied, looks under the default location.
+# Should only be called directly from the featurevariantparser module reference, not from any methods within the module.
+
+# USAGE: featurevariantparser->DefaultExists(<DirName>);
+# <DirName> : Optional -- Specifies which directory to look under to find the default.var file. Can be relative or absolute.
+
+sub DefaultExists
+{
+
+    my $dirToSearch = "";
+    if ( $_[1] )
+    {
+        $dirToSearch = $_[1];
+    }
+    else
+    {
+        $dirToSearch = $defaultDir;
+    }
+
+    $dirToSearch =
+      File::Spec->canonpath(
+        File::Spec->rel2abs( File::Spec->canonpath("$dirToSearch") ) );
+
+    return ( -e "$dirToSearch/default.var" );
+
+}
+
+# Checks the variant file for the correct syntax and reports any errors
+# Also sets up some variables(VIRTUAL ,VARIANT_HRH and VARIANT) whilst file is being parsed.
+
+# Usage: CheckVarFileSyntaxt(<fullpath>,<varfile>) . Note: <varfile> without .var
+sub CheckVarFileSyntax
+{
+
+    my $fullpath          = $_[0];
+    my $varname           = $_[1];
+    my $varianthrhpresent = 0;
+
+    open( READVAR, "<$fullpath" );
+    my $exp  = "#";
+    my $line = "";
+
+    while (<READVAR>)
+    {
+        $line = $.;
+
+	# Checks for a valid argument supplied to EXTENDS keyword. Checks for one and only one argument supplied.
+        if (/^EXTENDS/)
+        {
+            if ( !m/^EXTENDS\s+./ )
+            {
+                print "\nERROR: Invalid format supplied to argument EXTENDS on line "
+                  . "$."
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+            my $str = ExtractExtendsValue($_);
+            if ( $str =~ /\s+/ )
+            {
+                print "\nERROR: Cannot extend from two nodes. Error in line "
+                  . "$."
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+
+            $childNodeStatus = 1;
+
+        }
+
+        # Checks for the grammar of BUILD_INCLUDE, i.e. KEYWORD MODIFIER VALUE
+        elsif (/^BUILD_INCLUDE/)
+        {
+
+          if (!m/^BUILD_INCLUDE\s+(append|prepend|set)\s+$pathregex/)
+            {
+                print "\nERROR: Invalid syntax supplied to keyword BUILD_INCLUDE on line "
+                  . "$."
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+            
+		 if (m/^BUILD_INCLUDE\s+(append|prepend|set)\s+$pathregex\s+$pathregex/)
+            {
+                print "\nERROR: Too many arguments supplied to keyword BUILD_INCLUDE on line "
+                  . "$."
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+        }
+
+        # Checks for the grammar of ROM_INCLUDE, i.e. KEYWORD MODIFIER VALUE
+        elsif (/^ROM_INCLUDE/)
+        {
+
+		if (!m/^ROM_INCLUDE\s+(append|prepend|set)\s+$pathregex/)
+            {
+                print "\nERROR: Invalid syntax supplied to keyword ROM_INCLUDE on line "
+                  . "$."
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+
+       if (m/^ROM_INCLUDE\s+(append|prepend|set)\s+$pathregex\s+$pathregex/)
+            {
+                print "\nERROR: Too many arguments supplied to keyword ROM_INCLUDE on line "
+                  . "$."
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+        }
+
+        # Checks for a valid VARIANT name
+        elsif (/^VARIANT[^_HRH]/)
+        {
+            if ( !m/^VARIANT\s+\w+/ )
+            {
+                print "\nERROR: VARIANT name not specified on line " . "$."
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+            if ( uc("$varname") ne uc( ExtractVariantValue($_) ) )
+            {
+                print "\nERROR: VARIANT filename does not match variant name specified on line "
+                  . "$line"
+                  . " in file "
+                  . "$fullpath"
+                  . "\nVariant value extracted from the VAR file is " . "$_";
+            }
+
+        }
+
+        # Checks that keyword VIRTUAL is declared correctly
+        elsif (/^VIRTUAL/)
+        {
+            if (m/^VIRTUAL\s+\w+/)
+            {
+                print "\nERROR: Invalid declaration of VIRTUAL on line " . "$."
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+
+            $virtual = 1;
+        }
+
+        # Checks if VARIANT_HRH is declared correctly.
+        elsif (/^VARIANT_HRH/)
+        {
+            $varianthrhpresent = 1;
+            my $lineno = $.;
+            if ( !m/^VARIANT_HRH\s+./ )
+            {
+                print "\nERROR: Invalid format supplied to argument VARIANT_HRH on line "
+                  . "$lineno"
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+
+            my $str = ExtractHrhValue($_);
+            if ( $str =~ /\s+/ )
+            {
+                print "\nERROR: Cannot have 2 or more hrh files. Error in line "
+                  . "$lineno"
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+
+            if ( !FileExists( FixPaths($str) ) )
+            {
+                print "\nERROR: VARIANT HRH file : "
+                  . FixPaths($str)
+                  . " specified on line "
+                  . "$lineno"
+                  . " does not exist";
+                return 0;
+            }
+
+            $varianthrh = FixPaths( ExtractHrhValue($_) );
+
+        }
+        
+        # If none of the valid keywords are found
+        else
+        {
+
+            # Do nothing if a comment or blank line is found
+            if ( (m/$exp\s+\S/) || (m/$exp\S/) || ( !m/./ ) || (m/^\n/) )
+            {
+            }
+
+            # Unsupported keyword
+            else
+            {
+
+                print "\nERROR: Invalid keyword " . '"' . "$_" . '"'
+                  . " found on line " . "$."
+                  . " in file "
+                  . "$fullpath";
+                return 0;
+            }
+        }
+    }
+
+    close(READVAR);
+
+    # If no HRH file defined, check if the default one exists
+    if ( !$varianthrhpresent )
+    {
+        print "\nINFO: No VARIANT_HRH defined in VAR file, using $ENV{EPOCROOT}epoc32\\include\\variant\\$varname\.hrh" if ($verbose);
+        my $str =
+          ExtractHrhValue(
+            "VARIANT_HRH $ENV{EPOCROOT}epoc32\\include\\variant\\$varname\.hrh"
+          );
+
+        if ( !FileExists($str) )
+        {
+            print "\nERROR: VARIANT HRH file : " . "$str " . "does not exist\n";
+            return 0;
+        }
+        else
+        {
+            $varianthrh = $str;
+        }
+    }
+    return 1;
+}
+
+1;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/fixsource.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,852 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+
+
+use Getopt::Long;
+use File::Spec;
+use File::Copy;
+use File::Path;
+use File::Basename;
+
+my $toolVersion = "2.1";
+
+# Example warnings:
+#
+# Incorrect slash
+#	\src\common\generic\comms-infras\commsfw\group\bld.inf:10: Incorrect slash in PRJ_EXPORTS - '..\inc\commschan.h'.
+#	\src\cedar\generic\base\f32\group\ecomp.mmp:14: Incorrect slash in SYSTEMINCLUDE - '..\inc'.
+#	\src\common\generic\syncml\framework\TransportProvision\HttpWsp\SmlHttpBase.cpp:13: Incorrect slash in #include - 'http\rhttpheaders.h'.
+#
+# Incorrect case for epoc32 tree
+#	\src\common\generic\syslibs\pwrcli\group\bld.inf:23: Incorrect case for epoc32 tree in PRJ_EXPORTS - '\epoc32\rom\include\PwrCli.IBY'.
+#	\src\common\generic\security\crypto\group\hash.mmp:8: Incorrect case for epoc32 tree in TARGET - 'hash.DLL'.
+#	\src\common\generic\syslibs\ecom\ongoing\Framework\frame\Discoverer.cpp:20: Incorrect case for epoc32 tree in #include - 'BaSPI.h'.
+#
+# Incorrect case versus filesystem
+#	\src\common\generic\comms-infras\commdb\commdbshim\group\BLD.INF:20: Incorrect case versus filesystem in PRJ_EXPORTS - '..\inc\cdblen.h' vs. \src\common\generic\comms-infras\commdb\commdbshim\INC\CDBLEN.H.
+#	\src\common\generic\syslibs\ecom\ongoing\Framework\MMPFiles\EComServer.mmp:45: Incorrect case versus filesystem in USERINCLUDE - '..\..\framework\inc' vs. \src\common\generic\syslibs\ecom\ongoing\Framework\inc.
+#	\src\common\generic\comms-infras\commdb\commdbshim\INC\CDBOVER.H:16: Incorrect case versus filesystem in #include - 'cdbpreftable.h' vs. \src\common\generic\comms-infras\commdb\commdbshim\INC\CDBPREFTABLE.H.
+#
+# Incorrect case for epoc32 tree from default export (i.e. source export case will replicated under \epoc32)
+#	\src\common\generic\application-protocols\http\group\bld.inf:22: Incorrect case for epoc32 tree from default export in PRJ_EXPORTS - '..\inc\HTTPSocketConstants.h'.
+#	\src\common\generic\messaging\email\smtpservermtm\group\bld.inf:11: Incorrect case for epoc32 tree from default export in PRJ_EXPORTS - '..\inc\smts.h' vs. \src\common\generic\messaging\email\smtpservermtm\inc\SMTS.H.
+#
+# Incorrect case versus exclusion list
+#	\src\common\generic\Multimedia\openmax\group\bld.inf:14: Incorrect case versus exclusion list in PRJ_EXPORTS - '\epoc32\include\openmax\il\OMX_Types.h' vs. OMX_TYPES.H.
+#	\src\common\generic\Multimedia\openmax\inc\openmax\il\OMX_Audio.h:41: Incorrect case versus exclusion list in #include - 'OMX_Types.h' vs. OMX_TYPES.H.
+#
+# Can't find physical file match for
+#	\src\common\generic\app-framework\conarc\group\BLD.INF:48: Can't find physical file match for PRJ_TESTMMPFILES MMP - '..\tsrc\tcon3_V2.mpp' on filesystem.
+#
+
+
+# 1. Check arguments, output help etc.
+
+my $analyse = 0;
+my $list = 0;
+my $update = 0;
+my $warnings = "";
+my $verbose = 0;
+my $debug = 0;
+my $debugUpdate = 0;
+GetOptions ('analyse|a' => \$analyse, 'list|l' => \$list, 'update|u' => \$update, 'warnings|w=s' => \$warnings,
+			'verbose|v' => \$verbose, 'debug|d' => \$debug, 'debugupdate|du' => \$debugUpdate);
+
+if (@ARGV == 0)
+	{
+	print (STDERR "\nFIXSOURCE.BAT - Version $toolVersion\n");
+
+	print STDERR << 'END_OF_HELP';
+
+Usage: fixsource.bat -analyse|-list|-update|-warnings buildlog_1.log [buildlog_n.log] 
+
+Parses the output from the specified build logs to locate warnings produced via
+"abld -checksource".  Provides the option to update source automatically to comply
+with Symbian's Filename Policy.
+
+-analyse | -a	             List and describe all warnings that cannot be addressed
+                             by this tool.
+-list    | -l	             List all source files that can be updated by this tool
+                             using "-update".
+-update  | -u	             Update source files, as output by "-list", to comply with
+                             Symbian's Filename Policy.
+-warnings| -w [all|fixable]  Output all unique "-checksource" warnings present in the
+                             specified logs:
+                                all     - every warning, regardless of whether this
+                                          tool can fix them.
+                                fixable - only warnings that this tool can fix.
+-verbose | -v                Additional verbose output for the "-update" option.
+
+NOTES:
+* The tool assumes that the original build source and layout is present on the drive
+  where it is being executed.
+* With the exception of the "-warnings all" output, any warnings for files under the
+  known release and build locations of %EPOCROOT%epoc32\include and
+  %EPOCROOT%epoc32\build are discarded by default.
+
+END_OF_HELP
+
+	}
+
+
+# 2. Parse the logs storing all GNU format warnings and errors
+
+
+my %ActionableFilenamePolicyWarnings;	# Hash Key (filename)
+										#	Hash Key (line number)
+										#		Hash Key (problematic text)
+										#			Hash Key ORIGINAL_WARNINGS
+										#				Hash Key (original warning)
+										#					1
+										#			Hash Key ITEM
+										#				item type that has generated the warning
+										#			Hash Key SEARCH_TEXT
+										#				quotemeta version of problematic text
+										#			Hash Key UNIX_SLASH
+										#				1
+										#			Hash Key LOWERCASE
+										#				1
+										#			Hash Key PHYSICAL
+										#				1
+										#			Hash Key EXCLUSION
+										#				1
+										#			Hash Key PHYSICAL_REALITY
+										#				Hash Key (physical reality)
+										#					1
+										#				fully pathed filesystem reality used in physical checking
+										#			Hash Key EXCLUSION_LISTING
+										#				required format of reference as dictated from an exclusion list
+										#			Hash Key ACTUAL_TEST
+										#				test used for check when this differed from that in actual source
+										#			Hash Key DEFAULT_EXPORT
+										#				special case - a PRJ_EXPORTS line without a destination will break
+										#				the filename policy if the source line is not lowercase
+my %NonActionableFilenamePolicyWarnings;
+my %AllFilenamePolicyWarnings;
+my %OtherWarningsAndErrors;
+
+foreach my $BUILD_LOG (@ARGV)
+	{
+	open BUILD_LOG, "< $BUILD_LOG" or die "\nCannot read \"$BUILD_LOG\"!\n\n";
+
+	while (<BUILD_LOG>)
+		{
+		chomp;
+			
+		if (/^\\\S+:.*: .+$/)
+			{
+			if (!/:\d+: (Incorrect case|Incorrect slash|Can\'t find) /)
+				{
+				$OtherWarningsAndErrors{$_} = 1 if (!/(unresolved api-item|unknown base class|unresolved xref|no image file|xm-replace_text)/);	# Ignore the noise of doc stuff...
+				next;					
+				}
+
+			$AllFilenamePolicyWarnings{$_} = 1;
+			
+			if (/: Can\'t find /)
+				{
+				$NonActionableFilenamePolicyWarnings{$_} = 1;
+				next;
+				}
+
+			my $originalWarning = $_;
+
+			/(^.*):(\d+): Incorrect (case for epoc32 tree|case versus filesystem|case versus exclusion list|slash|case for epoc32 tree from default export) in (.+) - \'(.+?)\'/;
+
+			my $filename = $1;
+			my $lineNumber = $2;
+			my $type = $3;
+			my $item = $4;
+			my $problematicText = $5;
+
+			$type =~ s/case for epoc32 tree from default export/defaultexport/;
+			$type =~ s/case for epoc32 tree/lowercase/;
+			$type =~ s/case versus filesystem/physical/;
+			$type =~ s/case versus exclusion list/exclusion/;
+
+			my $actualTest = "";
+			my $physicalReality = "";
+			my $exclusionListing = "";
+			$actualTest = $1 if (/\(actual test \'(.*)\'\)/);
+
+			if (/ vs\. (.*)\./)
+				{
+				$physicalReality = $1 if ($type eq "physical");
+				$exclusionListing = $1 if ($type eq "exclusion");
+				}
+
+			if ($debug)
+				{
+				print ("ORIGINAL WARNING   : $originalWarning\n");
+				print ("FILENAME           : $filename\n");
+				print ("LINENUMBER         : $lineNumber\n");
+				print ("TYPE               : $type\n");
+				print ("ITEM               : $item\n");
+				print ("PROBLEMATIC TEXT   : $problematicText\n");
+				print ("ACTUAL TEST        : $actualTest\n") if ($actualTest);
+				print ("PHYSICAL REALITY   : $physicalReality\n") if ($physicalReality);
+				print ("EXCLUSION LISTING  : $exclusionListing\n") if ($exclusionListing); 
+				print ("\n");
+				}
+
+			next if ($warnings =~ /all/i);
+
+	# Line Number
+
+			my $lineNumberHashRef;
+			if ($ActionableFilenamePolicyWarnings{$filename})
+				{
+				$lineNumberHashRef = $ActionableFilenamePolicyWarnings{$filename};
+				}
+			else
+				{
+				my %newHash;
+				$lineNumberHashRef = \%newHash;
+				$ActionableFilenamePolicyWarnings{$filename} = $lineNumberHashRef;
+				}
+
+	# Problematic Text
+
+			my $problematicTextHashRef;
+			if ($lineNumberHashRef->{$lineNumber})
+				{
+				$problematicTextHashRef = $lineNumberHashRef->{$lineNumber};
+				}
+			else
+				{
+				my %newHash;
+				$problematicTextHashRef = \%newHash;
+				$lineNumberHashRef->{$lineNumber} = $problematicTextHashRef;
+				}
+
+	# Attributes
+
+			my $attributesHashRef;
+			if ($problematicTextHashRef->{$problematicText})
+				{
+				$attributesHashRef = $problematicTextHashRef->{$problematicText};
+				}
+			else
+				{
+				my %newHash;
+				$attributesHashRef = \%newHash;
+				$problematicTextHashRef->{$problematicText} = $attributesHashRef;
+				}
+
+	# Attributes : Original Warnings
+
+			my $originalWarningsHashRef;
+			if ($attributesHashRef->{ORIGINAL_WARNINGS})
+				{
+				$originalWarningsHashRef = $attributesHashRef->{ORIGINAL_WARNINGS};
+				}
+			else
+				{
+				my %newHash;
+				$originalWarningsHashRef = \%newHash;			
+				$attributesHashRef->{ORIGINAL_WARNINGS} = $originalWarningsHashRef;
+				}
+			$originalWarningsHashRef->{$originalWarning} = 1;
+
+	# Attributes : Item
+
+			$attributesHashRef->{ITEM} = $item;
+
+	# Attributes : Search Text
+
+			$attributesHashRef->{SEARCH_TEXT} = quotemeta ($problematicText);
+
+	# Attributes : Unix Slash
+
+			$attributesHashRef->{UNIX_SLASH} = 1 if ($type eq "slash");
+
+	# Attributes : Lowercase
+
+			$attributesHashRef->{LOWERCASE} = 1 if ($type eq "lowercase");
+
+	# Attributes : Physical
+
+			$attributesHashRef->{PHYSICAL} = 1 if ($type eq "physical");
+
+	# Attributes : Exclusion
+
+			$attributesHashRef->{EXCLUSION} = 1 if ($type eq "exclusion");
+
+	# Attributes : Physical Reality
+
+			my $physicalRealityHashRef;
+			if ($physicalReality)
+				{
+				if ($attributesHashRef->{PHYSICAL_REALITY})
+					{
+					$physicalRealityHashRef = $attributesHashRef->{PHYSICAL_REALITY};
+					}
+				else
+					{
+					my %newHash;
+					$physicalRealityHashRef = \%newHash;			
+					$attributesHashRef->{PHYSICAL_REALITY} = $physicalRealityHashRef;
+					}
+				$physicalRealityHashRef->{$physicalReality} = 1;
+				}
+
+	# Attributes : Actual Test
+
+			$attributesHashRef->{ACTUAL_TEST} = $actualTest if ($actualTest);
+
+	# Attributes : Exclusion Listing
+
+			$attributesHashRef->{EXCLUSION_LISTING} = $exclusionListing if ($exclusionListing);
+
+	# Attributes : Default Export
+
+			$attributesHashRef->{DEFAULT_EXPORT} = 1 if ($type eq "defaultexport");
+			}
+		}
+
+	close BUILD_LOG;
+	}
+
+
+# 3. Examine source and warnings and compile lists of files and warnings that we can/can't do anything about
+
+my %WarningsNotMatchingSource;
+my %WarningsWithMissingFiles;
+my %WarningsForBothLowercaseAndPhysicalOnSameReference;
+my %WarningsForMultiplePhysicalUpdates;
+
+
+if ($analyse || $list || $update || $debugUpdate || $warnings =~ /^fixable$/i)
+	{
+		
+	foreach my $SOURCE_FILE (sort keys %ActionableFilenamePolicyWarnings)
+		{
+			
+	# Discard anything in known release locations
+
+		if ($SOURCE_FILE =~ /\\epoc32\\(include|build)\\/i)
+			{
+			delete ($ActionableFilenamePolicyWarnings{$SOURCE_FILE});
+			next;
+			}
+
+		my $lineNumbersHashRef = $ActionableFilenamePolicyWarnings{$SOURCE_FILE};
+
+	# Discard warnings where source files cannot be found
+
+		if (!(open SOURCE_FILE, "< $SOURCE_FILE"))
+			{
+			foreach my $lineNumber (sort keys (%$lineNumbersHashRef))
+				{
+				my $problematicTextHashRef = $lineNumbersHashRef->{$lineNumber};
+
+				foreach my $problematicText (sort keys (%$problematicTextHashRef))
+					{
+					my $attributesHashRef = $problematicTextHashRef->{$problematicText};
+					my $originalWarningsHashRef = $attributesHashRef->{ORIGINAL_WARNINGS};
+					
+					foreach my $originalWarning (keys (%$originalWarningsHashRef))
+						{
+						$WarningsWithMissingFiles{$originalWarning} = 1;
+						}					
+					}
+				}
+			delete ($ActionableFilenamePolicyWarnings{$SOURCE_FILE});
+			next;
+			}
+
+
+	# Identify and discard warnings where, for the same reference:
+	# (a) both lowercase and physical warnings are flagged and
+	# (b) multiple, different, filesystem matches have been found
+	# These will need to be resolved manually
+
+		foreach my $lineNumber (sort keys (%$lineNumbersHashRef))
+			{
+			my $problematicTextHashRef = $lineNumbersHashRef->{$lineNumber};
+
+			foreach my $problematicText (sort keys (%$problematicTextHashRef))
+				{
+				my $attributesHashRef = $problematicTextHashRef->{$problematicText};
+				my $originalWarningsHashRef = $attributesHashRef->{ORIGINAL_WARNINGS};
+
+				my $skipPhysicalUpdate = 0;
+				my $skipLowercaseUpdate = 0;
+				
+				if ($attributesHashRef->{LOWERCASE} && $attributesHashRef->{PHYSICAL})
+					{
+					$skipPhysicalUpdate = 1;
+					$skipLowercaseUpdate = 1;
+
+					foreach my $originalWarning (keys %{$originalWarningsHashRef})
+						{
+						next if ($originalWarning !~ /Incorrect case/);
+
+						$originalWarning =~ /\:(.*$)/;
+
+						my $lowercaseAndPhysicalWarningsHashRef;	
+						if ($WarningsForBothLowercaseAndPhysicalOnSameReference{$SOURCE_FILE})
+							{
+							$lowercaseAndPhysicalWarningsHashRef = $WarningsForBothLowercaseAndPhysicalOnSameReference{$SOURCE_FILE};
+							}
+						else
+							{
+							my %newHash;
+							$lowercaseAndPhysicalWarningsHashRef = \%newHash;			
+							$WarningsForBothLowercaseAndPhysicalOnSameReference{$SOURCE_FILE} = $lowercaseAndPhysicalWarningsHashRef;
+							}
+						$lowercaseAndPhysicalWarningsHashRef->{$1} = 1;						
+						}
+					}
+
+				my $physicalRealityHashRef = $attributesHashRef->{PHYSICAL_REALITY};
+
+				if ($physicalRealityHashRef && ((keys %{$physicalRealityHashRef}) > 1))
+					{						
+					my $physicalMatchCheck;
+					if ($attributesHashRef->{ACTUAL_TEST})
+						{
+						$physicalMatchCheck = $attributesHashRef->{ACTUAL_TEST};
+						}
+					else
+						{
+						$physicalMatchCheck = $problematicText;
+						$physicalMatchCheck =~ s/\.\.[\\|\/]//g;
+						$physicalMatchCheck =~ s/\.[\\|\/]//g;
+						}
+
+					$physicalMatchCheck =~ s/\\\\/\\/g;		
+					$physicalMatchCheck =~ s/\/\//\//g;
+					$physicalMatchCheck =~ s/\//\\/g;
+					$physicalMatchCheck = quotemeta($physicalMatchCheck);
+					$physicalMatchCheck =~ s/\\\*/\\w\+/g;			# * -> \w+
+					$physicalMatchCheck =~ s/\\\?/\\w\{1\}/g;		# ? -> \w{1}
+
+					my %normalisedPhysicalReferences;
+	
+					foreach my $physicalReality (keys %{$physicalRealityHashRef})
+						{
+						$physicalReality =~ /($physicalMatchCheck)$/i;
+						$normalisedPhysicalReferences{$1} = 1;
+						}
+
+					if ((keys (%normalisedPhysicalReferences)) > 1)
+						{
+						foreach my $originalWarning (keys %{$originalWarningsHashRef})
+							{
+							next if ($originalWarning !~ /Incorrect case versus/);
+
+							$originalWarning =~ /\:(.*$)/;
+
+							my $multiplePhysicalWarningsHashRef;	
+							if ($WarningsForMultiplePhysicalUpdates{$SOURCE_FILE})
+								{
+								$multiplePhysicalWarningsHashRef = $WarningsForMultiplePhysicalUpdates{$SOURCE_FILE};
+								}
+							else
+								{
+								my %newHash;
+								$multiplePhysicalWarningsHashRef = \%newHash;			
+								$WarningsForMultiplePhysicalUpdates{$SOURCE_FILE} = $multiplePhysicalWarningsHashRef;
+								}
+							$multiplePhysicalWarningsHashRef->{$1} = 1;
+							}
+						$skipPhysicalUpdate = 1;
+						}
+					}
+
+				$attributesHashRef->{LOWERCASE} = 0 if ($skipLowercaseUpdate);
+				$attributesHashRef->{PHYSICAL} = 0 if ($skipPhysicalUpdate);
+
+				if (!$attributesHashRef->{LOWERCASE} && !$attributesHashRef->{PHYSICAL} &&
+					!$attributesHashRef->{UNIX_SLASH} && !$attributesHashRef->{DEFAULT_EXPORT} &&
+					!$attributesHashRef->{EXCLUSION})
+					{
+					delete ($problematicTextHashRef->{$problematicText});
+					}
+				}
+
+			delete ($lineNumbersHashRef->{$lineNumber}) if (!scalar (keys %{$problematicTextHashRef}));
+			}
+
+		my $lineNumber = 0;
+
+		while (my $line = <SOURCE_FILE>)
+			{
+			$lineNumber++;
+
+			next if (!($lineNumbersHashRef->{$lineNumber}));
+
+			my $problematicTextHashRef = $lineNumbersHashRef->{$lineNumber};
+
+			foreach my $text (keys %{$problematicTextHashRef})
+				{
+				my $attributesHashRef = $problematicTextHashRef->{$text};				
+
+				chomp ($line);
+
+				if ($line !~ /(\"|\<|^|\s){1}$attributesHashRef->{SEARCH_TEXT}/)
+					{
+					# Put warning(s) onto the failed list, as we can't find the required text
+					# in the source present on the machine
+						
+					my $originalWarningsHashRef = $attributesHashRef->{ORIGINAL_WARNINGS};
+					foreach my $originalWarning (keys %{$originalWarningsHashRef})
+						{
+						$WarningsNotMatchingSource{$originalWarning} = $line;
+						}
+						
+					delete ($problematicTextHashRef->{$text});
+					}
+				}
+
+			delete ($lineNumbersHashRef->{$lineNumber}) if (!scalar (keys %{$problematicTextHashRef}));
+			}
+
+		delete ($ActionableFilenamePolicyWarnings{$SOURCE_FILE}) if (!scalar (keys %{$lineNumbersHashRef}));
+		close SOURCE_FILE;
+		}
+	}
+
+
+# 4. Provide -warnings [all|fixable] output
+
+if ($warnings =~ /^all$/i)
+	{
+	foreach my $warning (sort keys %AllFilenamePolicyWarnings)
+		{
+		print ("$warning\n");
+		}
+	}
+elsif ($warnings =~ /^fixable$/i)
+	{
+	my %fixableWarnings;
+		
+	foreach my $sourceFile (keys %ActionableFilenamePolicyWarnings)
+		{
+		my $lineNumbersHashRef = $ActionableFilenamePolicyWarnings{$sourceFile};
+		
+		foreach my $lineNumber (keys (%$lineNumbersHashRef))
+			{
+			my $problematicTextHashRef = $lineNumbersHashRef->{$lineNumber};
+
+			foreach my $text (keys %{$problematicTextHashRef})
+				{
+				my $attributesHashRef = $problematicTextHashRef->{$text};				
+				my $originalWarningsHashRef = $attributesHashRef->{ORIGINAL_WARNINGS};
+
+				foreach my $originalWarning (keys %{$originalWarningsHashRef})
+					{						
+					$fixableWarnings{$originalWarning} = 1;
+					}
+				}
+			}
+		}
+
+	foreach my $fixableWarning (sort keys %fixableWarnings)
+		{
+		print ("$fixableWarning\n");
+		}		
+	}
+
+
+# 5. Provide -list output
+
+if ($list)
+	{
+	foreach my $sourceFile (sort keys %ActionableFilenamePolicyWarnings)
+		{
+		print ("$sourceFile\n");
+		}
+	}
+
+
+# 6. Provide -analyse output
+
+if ($analyse)
+	{
+	print ("\nFilename policy warnings with missing files\n".
+		     "-------------------------------------------\n\n");
+	foreach my $warningWithMissingFile (sort keys %WarningsWithMissingFiles)
+		{
+		print ("$warningWithMissingFile\n");
+		}
+	print ("NONE\n") if (!scalar (keys %WarningsWithMissingFiles));
+
+
+	print ("\n\nFilename policy warnings that don't match source\n".
+		       "------------------------------------------------\n\n");		
+	foreach my $warningNotMatchingSource (sort keys %WarningsNotMatchingSource)
+		{
+		print ("$warningNotMatchingSource\n");
+		print ("\tACTUAL LINE : \'$WarningsNotMatchingSource{$warningNotMatchingSource}\'\n");
+		}
+	print ("NONE\n") if (!scalar (keys %WarningsNotMatchingSource));
+
+	print ("\n\nFilename policy warnings with both lowercase and physical warnings for the same reference\n".
+		       "-----------------------------------------------------------------------------------------\n\n");		
+	foreach my $sourceFile (sort keys %WarningsForBothLowercaseAndPhysicalOnSameReference)
+		{
+		print ("$sourceFile\n");
+		foreach my $warning (sort keys %{$WarningsForBothLowercaseAndPhysicalOnSameReference{$sourceFile}})
+			{
+			print ("\t$warning\n");
+			}
+		}
+	print ("NONE\n") if (!scalar (keys %WarningsForBothLowercaseAndPhysicalOnSameReference));
+
+	print ("\n\nMultiple differing physical filename policy warnings for the same reference\n".
+		       "---------------------------------------------------------------------------\n\n");		
+	foreach my $sourceFile (sort keys %WarningsForMultiplePhysicalUpdates)
+		{
+		print ("$sourceFile\n");
+		foreach my $warning (sort keys %{$WarningsForMultiplePhysicalUpdates{$sourceFile}})
+			{
+			print ("\t$warning\n");
+			}
+		}
+	print ("NONE\n") if (!scalar (keys %WarningsForMultiplePhysicalUpdates));
+
+	print ("\n\nNon-actionable filename policy warnings\n".
+		     "---------------------------------------\n\n");		
+	foreach my $nonActionableWarning (sort keys %NonActionableFilenamePolicyWarnings)
+		{
+		print ("$nonActionableWarning\n");
+		}
+	print ("NONE\n") if (!scalar (keys %NonActionableFilenamePolicyWarnings));
+
+
+	print ("\n\nOther detected warnings unrelated to filename policy\n".
+		     "----------------------------------------------------\n\n");		
+	foreach my $otherWarningOrError (sort keys %OtherWarningsAndErrors)
+		{
+		print ("$otherWarningOrError\n");
+		}
+	print ("NONE\n") if (!scalar (keys %OtherWarningsAndErrors));
+
+	print ("\n\n");
+	}
+
+
+# 7. Perform -update function
+
+if ($update || $debugUpdate)
+	{
+	foreach my $SOURCE_FILE (sort keys %ActionableFilenamePolicyWarnings)
+		{
+		if (!(open SOURCE_FILE, "< $SOURCE_FILE"))
+			{				
+			print ("ERROR: Could not open $SOURCE_FILE to read.\n");
+			next;
+			}
+
+		print ("Updating \'$SOURCE_FILE\'...\n") unless ($debugUpdate);
+
+		my $lineNumbersHashRef = $ActionableFilenamePolicyWarnings{$SOURCE_FILE};
+		my $lineNumber = 0;
+		my @newSourceFile;
+
+		while (my $line = <SOURCE_FILE>)
+			{
+			$lineNumber++;
+
+			if ($lineNumbersHashRef->{$lineNumber})
+				{				
+				print ("\tOriginal : $line") if ($verbose);
+					
+				my $problematicTextHashRef = $lineNumbersHashRef->{$lineNumber};
+
+				# We need to order the updates on a per-line basis so that, for example,
+				# a search and update for 'nkern\arm\' occurs after one for 'include\nkern\arm\nk_plat.h'
+				# We can do this by length, making sure the longest updates are performed first
+				my @problematicTextOrderedHashKeys = sort {length $b <=> length $a} (keys %{$problematicTextHashRef});
+
+				foreach my $problematicText (@problematicTextOrderedHashKeys)
+					{
+					my $attributesHashRef = $problematicTextHashRef->{$problematicText};
+					my $revisedText = $problematicText;
+
+		# Physical
+
+					if ($attributesHashRef->{PHYSICAL})
+						{
+						my $physicalRealityHashRef = $attributesHashRef->{PHYSICAL_REALITY};
+
+						my $physicalReality = (keys %{$physicalRealityHashRef})[0];
+						my $physicalRealityUnixSlash = $physicalReality;
+						$physicalRealityUnixSlash =~ s/\\/\//g;						
+							
+						if ($physicalReality =~ /($attributesHashRef->{SEARCH_TEXT})$/i ||
+							$physicalRealityUnixSlash =~ /($attributesHashRef->{SEARCH_TEXT})$/i)
+							{
+							# Simple case - direct match with just case and slash differences
+							my $replacement = $1;
+							$replacement =~ s/\\/\//g;
+							$revisedText =~ s/$attributesHashRef->{SEARCH_TEXT}/$replacement/;
+							}
+						else
+							{
+							# What we're looking at in the source file doesn't map directly
+							# to what's physically on the file system.
+
+							my $modifiedSearchText = $problematicText;
+							$modifiedSearchText =~ s/\.\.[\\|\/]//g;
+							$modifiedSearchText =~ s/\.[\\|\/]//g;
+
+							my $physicalMatchCheck;
+							if ($attributesHashRef->{ACTUAL_TEST})
+								{
+								$physicalMatchCheck = $attributesHashRef->{ACTUAL_TEST};
+								}
+							else
+								{
+								$physicalMatchCheck = $modifiedSearchText;
+								}
+
+							# The physical match check needs to remove double-slashing...
+							$physicalMatchCheck =~ s/\\\\/\\/g;		
+							$physicalMatchCheck =~ s/\/\//\//g;
+							
+							$modifiedSearchText = quotemeta($modifiedSearchText);
+							$physicalMatchCheck = quotemeta($physicalMatchCheck);
+
+							$physicalMatchCheck =~ s/\\\*/\\w\+/g;			# * -> \w+
+							$physicalMatchCheck =~ s/\\\?/\\w\{1\}/g;		# ? -> \w{1}
+
+							if ($physicalReality =~ /($physicalMatchCheck)$/i ||
+								$physicalRealityUnixSlash =~ /($physicalMatchCheck)$/i )
+								{
+								my $replacement = $1;
+								$replacement =~ s/\\/\//g;
+								
+								if ($attributesHashRef->{ACTUAL_TEST} &&
+									($attributesHashRef->{ITEM} =~ /MMP$/ || $attributesHashRef->{ITEM} =~ /DEFFILE/))
+									{
+									# Both DEFFILE and PRJ_[TEST]MMPFILE entries may be specifed without extension
+									$replacement =~ s/\.\w+$// if ($problematicText !~ /\.\w+$/);
+
+									# DEFFILE entries may have eabi\bwins in the physical match and had a "u" inserted or appended 
+									if ($attributesHashRef->{ITEM} =~ /DEFFILE/ && $replacement !~ /$modifiedSearchText$/i)
+										{
+										$replacement =~ s/(eabi|bwins)\//~\//i if ($problematicText =~ /~[\\|\/]/);
+										$replacement =~ s/u(\.\w+)?$/$1/i if ($attributesHashRef->{ITEM} !~ /NOSTRICTDEF/);
+										}
+									}
+
+								$revisedText =~ s/$modifiedSearchText/$replacement/;
+								}
+							else
+								{
+								print ("ERROR: Can\'t perform physical consistency updates for:");
+								
+								my $originalWarningsHashRef = $attributesHashRef->{ORIGINAL_WARNINGS};
+								foreach my $originalWarning (keys %{$originalWarningsHashRef})
+									{
+									print ("\t$originalWarning") if ($originalWarning =~ /case versus/);
+									}
+
+								print ("\n");
+								}
+							}
+						}
+
+		# Exclusion
+
+					if ($attributesHashRef->{EXCLUSION})
+						{
+						my $exclusionListingSearch = quotemeta($attributesHashRef->{EXCLUSION_LISTING});						
+						$revisedText =~ s/$exclusionListingSearch/$attributesHashRef->{EXCLUSION_LISTING}/i;
+						}						
+
+		# Slash
+					if ($attributesHashRef->{UNIX_SLASH})
+						{
+						$revisedText =~ s/\\/\//g;
+						$revisedText =~ s/\/\//\//g;		# Don't allow replacements that lead to "//" in paths
+						}
+
+		# Lowercase
+
+					if ($attributesHashRef->{LOWERCASE})
+						{
+						$revisedText = lc ($revisedText);
+						}
+
+		# Default Export
+
+					if ($attributesHashRef->{DEFAULT_EXPORT})
+						{
+						my $exportedFilename = lc (basename ($problematicText));							
+						$revisedText .= " \/epoc32\/include\/".$exportedFilename;
+						}
+
+					$line =~ s/(\"|\<|^|\s){1}$attributesHashRef->{SEARCH_TEXT}/$1$revisedText/;
+					}
+
+				print ("\tUpdated  : $line") if ($verbose);
+				}
+				
+			push @newSourceFile, $line;
+			}
+
+		close SOURCE_FILE;
+
+		if ($debugUpdate)
+			{
+			# Don't touch the original source, but create two trees for easy comparison
+				
+			my $baseDir = dirname ($SOURCE_FILE);				
+			mkpath ("\\compare\\orig".$baseDir);
+			mkpath ("\\compare\\updated".$baseDir);
+			print ("Copying  \'\\compare\\orig".$SOURCE_FILE."\'...\n");
+			copy ($SOURCE_FILE, "\\compare\\orig".$SOURCE_FILE);
+			$SOURCE_FILE = "\\compare\\updated".$SOURCE_FILE;
+			print ("Updating \'$SOURCE_FILE\'...\n");
+			}
+
+		if (!(open SOURCE_FILE, "> $SOURCE_FILE"))
+			{				
+			print ("ERROR: Could not open $SOURCE_FILE to write.\n");
+			next;
+			}
+
+		foreach my $line (@newSourceFile)
+			{
+			print (SOURCE_FILE $line);
+			}
+
+		close SOURCE_FILE;
+		}
+
+	print ("\n") if ($verbose);
+	}
+
+__END__
+
+:endofperl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/gendef.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+# Copyright (c) 2008-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:
+# e32toolp/e32util/gendef.pl
+# 
+#
+
+use FindBin;		# for FindBin::Bin
+
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+
+BEGIN {
+# check user has a version of perl that will cope
+	require 5.005_03;
+}
+
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 0;
+
+
+# THE MAIN PROGRAM SECTION
+##########################
+
+unless (@ARGV>1)
+{
+	&Usage;
+}
+my @exports = @ARGV;
+my $outfile = shift @exports;
+
+open OUTFILE, ">$outfile" or die "Gendef.pl: Unable to open $outfile for writing";
+
+print OUTFILE "EXPORTS\n";
+my $exportNum = 1;
+foreach (@exports)
+{
+	print OUTFILE "\t$_ @ $exportNum NONAME\n";
+	++$exportNum;
+}
+
+close OUTFILE;
+
+#######################################################################
+# SUBROUTINES
+#######################################################################
+
+sub Usage () {
+
+	print(
+		"\n",
+		"GENDEF - Generate a DEF file from passed exports V$MajorVersion.$MinorVersion.$PatchVersion\n",
+		"\n",
+		"GENDEF.PL [output def file] [1st export name] ([Other export names]...)\n",
+		"\n",
+		"\n",
+		"\n"
+	);
+	exit 1;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/genshimsrc.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,207 @@
+@REM Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+@REM This component and the accompanying materials are made available
+@REM under the terms of "Eclipse Public License v1.0"
+@REM which accompanies this distribution, and is available
+@REM at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@REM
+@REM Initial Contributors:
+@REM Nokia Corporation - initial contribution.
+@REM 
+@REM Contributors:
+@REM
+
+@goto invoke
+
+#!perl
+
+use FindBin;		# for FindBin::Bin
+use Getopt::Long;
+use Cwd;
+
+$_ = cwd;
+tr/\//\\/;
+my $Pwd = $_;
+
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+
+# establish the path to the Perl binaries
+BEGIN {
+	require 5.005_03;				# check user has a version of perl that will cope
+# establish the path to the Perl libraries: currently the same directory as this script
+	$PerlLibPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+	$PerlLibPath .= "\\";
+}
+use lib $PerlLibPath;
+
+use Defutl;
+use Genutl;
+
+my %opts = ();
+
+my $result = GetOptions(\%opts,
+			"srcpath:s",
+			"defpath:s",
+			"name:s",
+			"version:s",
+			"alignstack",
+			"help",
+		       );
+
+Usage() if(!$result || $opts{'help'} || @ARGV < 1);
+
+my $srcPath = $opts{"srcpath"} || $Pwd;
+my $defPath = $opts{"defpath"} || $srcPath;
+my $outputName = $opts{"name"} || "shim";
+my %Version;
+if ($opts{version}) {
+	%Version = &Genutl_StringToVersion($opts{version}) or die "Bad version number\n";
+} else {
+	$Version{major} = 0;
+	$Version{minor} = 0;
+}
+
+my $infile = pop @ARGV;
+
+my @DefData;
+eval { &Def_ReadFileL(\@DefData, $infile); } ;
+die $@ if $@;
+
+sub WriteFunction($$$) {
+  my ($ordinal, $branchTarget, $comment) = @_;
+  my $fnName = "export_at_ordinal_$ordinal";
+  if ($branchTarget =~ /^\"(.*)\"$/) {
+	  $branchTarget = $1;
+	}
+  if ($comment =~ /(null)/) {
+    $comment = $branchTarget;
+  }
+
+  print CPP <<FUNCTION_DEFINITION;
+
+EXPORT_C __NAKED__ int $fnName()
+//
+// $comment
+//
+	{
+	asm("B $branchTarget ");
+	}
+
+FUNCTION_DEFINITION
+}
+
+sub WriteFunctionAligned($$$) {
+  my ($ordinal, $branchTarget, $comment) = @_;
+  my $fnName = "export_at_ordinal_$ordinal";
+  if ($branchTarget =~ /^\"(.*)\"$/) {
+	  $branchTarget = $1;
+	}
+  if ($comment =~ /(null)/) {
+    $comment = $branchTarget;
+  }
+
+  print CPP <<FUNCTION_DEFINITION2;
+
+EXPORT_C __NAKED__ int $fnName()
+//
+// $comment
+//
+	{
+	asm("stmfd sp!, {r4,lr} ");
+	asm("mov r4, sp ");
+	asm("bic sp, sp, #4 ");
+	asm("bl $branchTarget ");
+	asm("mov sp, r4 ");
+	asm("ldmfd sp!, {r4,pc} ");
+	}
+
+FUNCTION_DEFINITION2
+}
+
+sub WriteCppHeader($) {
+  my ($filename) = @_;
+  print CPP <<FILE_HEADER;
+//
+// $filename - generated by GENSHIMSRC.BAT
+//
+
+#include <e32def.h>
+#include <e32const.h>
+#include <cpudefs.h>
+
+FILE_HEADER
+}
+
+sub WriteExport($$$) {
+  my ($ordinal, $export, $comment) = @_;
+
+  if ($comment =~ /(null)/) {
+    $comment = $export;
+  }
+  printf DEF "\t${export}=export_at_ordinal_${ordinal}__Fv \@ $ordinal NONAME \; $comment\n";
+}
+
+my $cppFile = "$srcPath\\$outputName\.cia";
+die "ERROR: Couldn't open $cppFile\n" unless open CPP, ">$cppFile";
+my $vstring = &Genutl_VersionToFileAugment(%Version);
+my $defFile = "$defPath\\${outputName}$vstring\.def";
+die "ERROR: Couldn't open $defFile\n" unless open DEF, ">$defFile";
+
+WriteCppHeader(uc "${outputName}.cia");
+printf DEF "EXPORTS\n";
+
+foreach my $defData (@DefData){
+  my $ord = $$defData{Ordinal};
+  if ($ord) {
+	my $name = $$defData{Name};
+	my $comment = $$defData{Comment};
+	if ($opts{alignstack}) {
+		WriteFunctionAligned($ord, $name, $comment);
+	} else {
+		WriteFunction($ord, $name, $comment);
+	}
+	WriteExport($ord, $name, $comment);
+  }
+}
+
+close CPP;
+close DEF;
+
+#####################################################################
+sub Usage
+{
+	print <<EOT;
+
+genshimsrc
+
+	Generate source for a shim DLL and its associated deffile from a supplied deffile
+
+Usage:
+	genshimsrc [options] deffile
+
+Where:
+	[deffile]     The source deffile
+
+Options:
+	--srcpath         the path for the output source file (defaults to CWD)
+	--defpath         the path for the output DEF file (defaults to srcpath)
+	--name            the name to use for the output files (defaults to shim)
+	--version         the version to use for the output DEF file (defaults to 0.0)
+	--alignstack      use shims which align the stack to an 8 byte boundary
+EOT
+	exit 1;
+}
+
+1;
+
+__END__
+
+# Tell emacs that this is a perl script even 'though it has a .bat extension
+# Local Variables:
+# mode:perl
+# tab-width:4
+# End:
+
+:invoke
+@perl -x -S genshimsrc.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/h2inc.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,956 @@
+#!/usr/bin/perl
+# Copyright (c) 2002-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:
+# e32toolp\e32util\h2inc.pl
+# Convert structures in C++ include files to assembler format
+# Syntax:
+# perl h2inc.pl <input.h> <output.inc> <format>
+# where <format>=arm or x86
+# 
+#
+
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 0;
+
+%basictypes = (
+	TInt8		=>	1,
+	TUint8		=>	1,
+	TInt16		=>	2,
+	TUint16		=>	2,
+	TInt32		=>	4,
+	TUint32		=>	4,
+	TInt		=>	4,
+	TUint		=>	4,
+	TInt64		=>	8,
+	TUint64		=>	8,
+	TLinAddr	=>	4,
+	TVersion	=>	4,
+	TPde		=>	4,
+	TPte		=>	4,
+	TProcessPriority => 4
+);
+
+if (scalar(@ARGV)!=3) {
+	die "H2INC format management tools V$MajorVersion.$MinorVersion.$PatchVersion\nperl h2inc.pl <input.h> <output.inc> <format>\n";
+}
+my ($infile, $outfile, $format) = @ARGV;
+open IN, $infile or die "Can't open $infile for input\n";
+my $in;
+while (<IN>) {
+	$in.=$_;
+}
+close IN;
+$format = uc($format);
+$format_sub = undef();
+$comment_sub = undef();
+$end_sub = undef();
+if ($format eq "ARMASM") {
+	$format_sub = \&armasm_format;
+	$comment_sub = \&armasm_comment;
+	$end_sub = \&armasm_end;
+} elsif ($format eq "AS") {
+	$format_sub = \&as_format;
+	$comment_sub = \&as_comment;
+	$end_sub = \&as_end;
+} elsif ($format eq "TASM") {
+	$format_sub = \&tasm_format;
+	$comment_sub = \&tasm_comment;
+	$end_sub = \&tasm_end;
+} else {
+	die "Format $format unknown\nOnly ARMASM, AS or TASM supported\n";
+}
+
+# First remove any backslash-newline combinations
+$in =~ s/\\\n//gms;
+
+# Change escaped quotes to double quotes
+$in =~ s/\\\"/\"\"/gms;
+$in =~ s/\\\'/\'\'/gms;
+
+# Remove any character constants
+$in =~  s/\'(.?(${0})*?)\'//gms;
+
+# Remove any string literals
+$in =~ s/\"(.*?)\"//gms;
+
+# Strip comments
+$in =~ s/\/\*(.*?)\*\//\n/gms;
+$in =~ s/\/\/(.*?)\n/\n/gms;
+
+# Collapse whitespace into a single space or newline
+$in =~ s/\t/\ /gms;
+$in =~ s/\r/\ /gms;
+$in =~ s/(\ )+/\ /gms;
+$in =~ s/\n(\ )*/\n/gms;
+$in =~ s/(\ )*\n/\n/gms;
+
+# Tokenize on non-identifier characters
+my @tokens0 = split(/(\W)/,$in);
+my @tokens;
+foreach $t (@tokens0) {
+	next if ($t eq " " or $t eq "");
+	push @tokens, $t;
+}
+
+my %macros;
+my %filescope;
+$filescope{file}=1;
+$filescope{name}='*** FILE SCOPE ***';
+my @ftypedefs;
+$filescope{typedefs}=\@ftypedefs;
+my $line=1;
+parse_scope(\%filescope, \@tokens, \$line);
+
+
+my @output;
+push @output, &$comment_sub('*' x 80);
+push @output, &$comment_sub($outfile);
+push @output, &$comment_sub('*' x 80);
+push @output, &$comment_sub("GENERATED FILE - DO NOT EDIT");
+push @output, "";
+
+output_scope(\%filescope, \@output);
+
+push @output, &$end_sub();
+push @output, "";
+
+open OUT, ">$outfile" or die "Can't open $outfile for write\n";
+print OUT join("\n", @output);
+print OUT "\n\n";
+close OUT;
+
+sub get_token($$) {
+	my ($tokenlist,$line) = @_;
+	while (scalar(@$tokenlist)) {
+		my $t = shift @$tokenlist;
+		return $t if (!defined($t));
+		return $t if ($t !~ /^\s*$/);
+		++$$line;
+	}
+}
+
+sub skip_qualifiers($) {
+	my ($tokens) = @_;
+	my $f=0;
+	my %quals = (
+		EXPORT_C => 1,
+		IMPORT_C => 1,
+		inline => 1,
+		const => 0,
+		volatile => 0,
+		static => 0,
+		extern => 0,
+		LOCAL_C => 0,
+		LOCAL_D => 0,
+		GLDEF_C => 0,
+		GLREF_C => 0,
+		GLDEF_D => 0,
+		GLREF_D => 0
+		);
+	for (;;) {
+		my $t = $$tokens[0];
+		my $q = $quals{$t};
+		last unless (defined ($q));
+		$f |= $q;
+		shift @$tokens;
+	}
+	return $f;
+}
+
+sub parse_indirection($) {
+	my ($tokens) = @_;
+	my $level = 0;
+	for (;;) {
+		my $t = $$tokens[0];
+		if ($t eq '*') {
+			++$level;
+			shift @$tokens;
+			next;
+		}
+		last if ($t ne "const" and $t ne "volatile");
+		shift @$tokens;
+	}
+	return $level;
+}
+
+sub parse_scope($$$) {
+	my ($scope, $tokens, $line) = @_;
+	my $state = 0;
+	my %values;
+	my @classes;
+	my @enums;
+	my $curr_offset=0;
+	my $overall_align=0;
+	$scope->{values}=\%values;
+	$scope->{classes}=\@classes;
+	$scope->{enums}=\@enums;
+	while (scalar(@$tokens)) {
+		my $t = shift @$tokens;
+		if ($state>=-1 and $t eq "\n") {
+			++$$line;
+			$state=1;
+			next;
+		} elsif ($state==-1 and $t ne "\n") {
+			next;
+		} elsif ($state==-2 and $t ne ';') {
+			next;
+		}
+		if ($state>0 and $t eq '#') {
+			if ($scope->{scope}) {
+				warn "Preprocessor directive in class/struct at line $$line\n";
+			}
+			$t = shift @$tokens;
+			if ($t eq 'define') {
+				my $ident = shift @$tokens;
+				my $defn = shift @$tokens;
+				if ($defn ne '(') {	# don't do macros with parameters
+					$macros{$ident} = $defn;
+				}
+			}
+			$state=-1;	# skip to next line
+			next;
+		}
+		if ($t eq "struct" or $t eq "class") {
+			next if ($state==0);
+			$state=0;
+			my %cl;
+			$cl{specifier}=$t;
+			$cl{scope}=$scope;
+			my @members;
+			my @typedefs;
+			$cl{members}=\@members;
+			$cl{typedefs}=\@typedefs;
+			my $new_class = \%cl;
+			my $n = get_token($tokens,$line);
+			if ($n !~ /\w+/) {
+				die "Unnamed $t not supported at line $$line\n";
+			}
+			$new_class->{name}=$n;
+			my @class_match = grep {$_->{name} eq $n} @classes;
+			my $exists = scalar(@class_match);
+			my $b = get_token($tokens,$line);
+			if ($b eq ':') {
+				die "Inheritance not supported at line $$line\n";
+			} elsif ($b eq ';') {
+				# forward declaration
+				push @classes, $new_class unless ($exists);
+				next;
+			} elsif ($b ne '{') {
+				die "Syntax error at line $$line\n";
+			}
+			if ($exists) {
+				$new_class = $class_match[0];
+				if ($new_class->{complete}) {
+					die "Duplicate definition of $cl{specifier} $n\n";
+				}
+			}
+			push @classes, $new_class unless ($exists);
+			parse_scope($new_class, $tokens, $line);
+			next;
+		} elsif ($t eq "enum") {
+			$state=0;
+			my $n = get_token($tokens,$line);
+			my $name="";
+			if ($n =~ /\w+/) {
+				$name = $n;
+				$n = get_token($tokens,$line);
+			}
+			push @enums, $name;
+			if ($n ne '{') {
+				die "Syntax error at line $$line\n";
+			}
+			parse_enum($scope, $tokens, $line, $name);
+			next;
+		} elsif ($t eq '}') {
+			$state=0;
+			if ($scope->{scope}) {
+				$t = get_token($tokens,$line);
+				if ($t eq ';') {
+					$scope->{complete}=1;
+					last;
+				}
+			}
+			die "Syntax error at line $$line\n";
+		}
+		$state=0;
+		if ($scope->{scope}) {
+			if ($t eq "public" or $t eq "private" or $t eq "protected") {
+				if (shift (@$tokens) eq ':') {
+					next;	# ignore access specifiers
+				}
+			die "Syntax error at line $$line\n";
+			}
+		}
+		unshift @$tokens, $t;
+		my @currdecl = parse_decl_def($scope, $tokens, $line);
+		if ($t eq 'static') {
+			next;	# skip static members
+		}
+		my $typedef;
+		if ($t eq 'typedef') {
+			$typedef = 1;
+			$t = shift @currdecl;
+			$t = $currdecl[0];
+		} else {
+			$typedef = 0;
+		}
+		next if (scalar(@currdecl)==0);
+		if ($t eq "const") {
+			# check for constant declaration
+			my $ctype = lookup_type($scope, $currdecl[1]);
+			if ($ctype->{basic} and $currdecl[2]=~/^\w+$/ and $currdecl[3] eq '=') {
+				if ($typedef!=0) {
+					die "Syntax error at line $$line\n";
+				}
+				shift @currdecl;
+				shift @currdecl;
+				my $type = $ctype->{name};
+				my $name = shift @currdecl;
+				my $size = $ctype->{size};
+				shift @currdecl;
+				my $value = get_constant_expr($scope,\@currdecl,$line);
+				$values{$name} = {type=>$type, size=>$size, value=>$value};
+				next;
+			}
+		}
+		if (skip_qualifiers(\@currdecl)!=0 or ($scope->{file} and !$typedef)) {
+			next;	# function declaration or stuff at file scope
+		}
+		my $type1 = shift @currdecl;	# type, type pointed to or return type
+		if ($type1 !~ /^\w+$/) {
+			die "Syntax error at line $$line\n";
+		}
+		my $ind1 = parse_indirection(\@currdecl);
+		my $ident;	# identifier being declared
+		my $size = -1;
+		my $array = -1;
+		my $align = 0;
+		my $alias;
+		my $category;
+		if ($currdecl[0] eq '(' and $currdecl[1] eq '*' and $currdecl[2]=~/^\w+$/) {
+			# function pointer
+			$ident = $currdecl[2];
+			$size = 4;
+			$category = 'fptr';
+			shift @currdecl;
+			shift @currdecl;
+			shift @currdecl;
+		} elsif ($currdecl[0]=~/^\w+$/) {
+			$ident = shift @currdecl;
+			if ($currdecl[0] ne '(') {
+				# not function declaration
+				if ($ind1>0) {
+					# pointer
+					$category = 'ptr';
+					$size = 4;
+				} else {
+					my $type2 = lookup_type($scope, $type1);
+					if (!defined($type2)) {
+						die "Unrecognised type $type1 at line $$line\n";
+					}
+					if ($type2->{basic}) {
+						$alias = $type2->{name};
+						$size = $type2->{size};
+						$category = 'basic';
+					} elsif ($type2->{enum}) {
+						$alias = $type2->{name};
+						$category = 'enum';
+						$size = 4;
+					} elsif ($type2->{class}) {
+						$alias = $type2->{name};
+						$size = $type2->{class}->{size};
+						$category = 'class';
+						$align = $type2->{class}->{align};
+					} elsif ($type->{ptr}) {
+						$size = 4;
+						$category = 'ptr';
+						$align = 4;
+					} elsif ($type->{fptr}) {
+						$size = 4;
+						$category = 'ptr';
+						$align = 4;
+					}
+				}
+			}
+		}
+		if ($size>0) {
+			# data member declared
+			# check for array
+			if ($currdecl[0] eq '[') {
+				shift @currdecl;
+				$array = get_constant_expr($scope, \@currdecl, $line);
+				if ($array<=0) {
+					die "Bad array size at line $$line\n";
+				}
+				if ($currdecl[0] ne ']') {
+					die "Syntax error at line $$line\n";
+				}
+			}
+			my $members = $scope->{members};
+			my $typedefs = $scope->{typedefs};
+			if ($align==0) {
+				$align = $size;
+			}
+			my $am = $align-1;
+			unless ($typedef) {
+				my $al = $curr_offset & $am;
+				if ($align==8 and $al!=0) {
+					die "Bad alignment of 64-bit data $ident at line $$line\n";
+				}
+				$curr_offset += ($align-$al) if ($al!=0);
+			}
+			if ($array>0) {
+				$size = ($size + $am) &~ $am;
+				if ($typedef) {
+					push @$typedefs, {name=>$ident, category=>$category, alias=>$alias, size=>$size*$array, spacing=>$size, array=>$array};
+				} else {
+					push @$members, {name=>$ident, size=>$size*$array, offset=>$curr_offset, spacing=>$size};
+				}
+				$size *= $array;
+			} else {
+				if ($typedef) {
+					push @$typedefs, {name=>$ident, category=>$category, alias=>$alias, size=>$size};
+				} else {
+					push @$members, {name=>$ident, size=>$size, offset=>$curr_offset};
+				}
+			}
+			unless ($typedef) {
+				$curr_offset += $size;
+				if ($align > $overall_align) {
+					$overall_align = $align;
+				}
+			}
+		}
+	}
+	if ($scope->{scope}) {
+		if ($state==-2) {
+			die "Missing ; at end of file\n";
+		}
+		if (!$scope->{complete}) {
+			die "Unexpected end of file at line $$line\n";
+		}
+		my $total_size = ($curr_offset + $overall_align - 1) &~ ($overall_align - 1);
+		$scope->{size} = $total_size;
+		$scope->{align} = $overall_align;
+	}
+}
+
+sub get_operand($$$) {
+	my ($scope,$tokens,$line) = @_;
+	my $t = get_token($tokens,$line);
+	if ($t eq '-') {
+		my $x = get_operand($scope,$tokens,$line);
+		return -$x;
+	} elsif ($t eq '+') {
+		my $x = get_operand($scope,$tokens,$line);
+		return $x;
+	} elsif ($t eq '~') {
+		my $x = get_operand($scope,$tokens,$line);
+		return ~$x;
+	} elsif ($t eq '!') {
+		my $x = get_operand($scope,$tokens,$line);
+		return $x ? 0 : 1;
+	} elsif ($t eq '(') {
+		my $x = get_constant_expr($scope,$tokens,$line);
+		my $t = get_token($tokens,$line);
+		if ($t ne ')') {
+			die "Missing ) at line $$line\n";
+		}
+		return $x;
+	} elsif ($t eq "sizeof") {
+		my $ident = get_token($tokens,$line);
+		if ($ident eq '(') {
+			$ident = get_token($tokens,$line);
+			my $cb = get_token($tokens,$line);
+			if ($cb ne ')') {
+				die "Bad sizeof() syntax at line $$line\n";
+			}
+		}
+		$ident = look_through_macros($ident);
+		if ($ident !~ /^\w+$/) {
+			die "Bad sizeof() syntax at line $$line\n";
+		}
+		my $type = lookup_type($scope, $ident);
+		if (!defined $type) {
+			die "Unrecognised type $ident at line $$line\n";
+		}
+		if ($type->{basic}) {
+			return $type->{size};
+		} elsif ($type->{enum}) {
+			return 4;
+		} elsif ($type->{ptr}) {
+			return 4;
+		} elsif ($type->{fptr}) {
+			return 4;
+		}
+		my $al = $type->{class}->{align};
+		my $sz = $type->{class}->{size};
+		return ($sz+$al-1)&~($al-1);
+	}
+	$t = look_through_macros($t);
+	if ($t =~ /^0x[0-9a-f]+/i) {
+		return oct($t);
+	} elsif ($t =~ /^\d/) {
+		return $t;
+	} elsif ($t =~ /^\w+$/) {
+		my $x = lookup_value($scope,$t);
+		die "Unrecognised identifier '$t' at line $$line\n" unless defined($x);
+		return $x;
+	} else {
+		die "Syntax error at line $$line\n";
+	}
+}
+
+sub look_through_macros($) {
+	my ($ident) = @_;
+	while ($ident and $macros{$ident}) {
+		$ident = $macros{$ident};
+	}
+	return $ident;
+}
+
+sub lookup_value($$) {
+	my ($scope,$ident) = @_;
+	while ($scope) {
+		my $vl = $scope->{values};
+		if (defined($vl->{$ident})) {
+			return $vl->{$ident}->{value};
+		}
+		$scope = $scope->{scope};
+	}
+	return undef();
+}
+
+sub lookup_type($$) {
+	my ($scope,$ident) = @_;
+	if ($basictypes{$ident}) {
+		return {scope=>$scope, basic=>1, name=>$ident, size=>$basictypes{$ident} };
+	}
+	while ($scope) {
+		if ($basictypes{$ident}) {
+			return {scope=>$scope, basic=>1, name=>$ident, size=>$basictypes{$ident} };
+		}
+		my $el = $scope->{enums};
+		my $cl = $scope->{classes};
+		my $td = $scope->{typedefs};
+		if (grep {$_ eq $ident} @$el) {
+			return {scope=>$scope, enum=>1, name=>$ident, size=>4 };
+		}
+		my @match_class = (grep {$_->{name} eq $ident} @$cl);
+		if (scalar(@match_class)) {
+			return {scope=>$scope, class=>$match_class[0]};
+		}
+		my @match_td = (grep {$_->{name} eq $ident} @$td);
+		if (scalar(@match_td)) {
+			my $tdr = $match_td[0];
+			my $cat = $tdr->{category};
+			if ($cat eq 'basic' or $cat eq 'enum' or $cat eq 'class') {
+				$ident = $tdr->{alias};
+				next;
+			} else {
+				return { scope=>$scope, $cat=>1, $size=>$tdr->{size} };
+			}
+		}
+		$scope = $scope->{scope};
+	}
+	return undef();
+}
+
+sub get_mult_expr($$$) {
+	my ($scope,$tokens,$line) = @_;
+	my $x = get_operand($scope,$tokens,$line);
+	my $t;
+	for (;;) {
+		$t = get_token($tokens,$line);
+		if ($t eq '*') {
+			my $y = get_operand($scope,$tokens,$line);
+			$x = $x * $y;
+		} elsif ($t eq '/') {
+			my $y = get_operand($scope,$tokens,$line);
+			$x = int($x / $y);
+		} elsif ($t eq '%') {
+			my $y = get_operand($scope,$tokens,$line);
+			$x = int($x % $y);
+		} else {
+			last;
+		}
+	}
+	unshift @$tokens, $t;
+	return $x;
+}
+
+sub get_add_expr($$$) {
+	my ($scope,$tokens,$line) = @_;
+	my $x = get_mult_expr($scope,$tokens,$line);
+	my $t;
+	for (;;) {
+		$t = get_token($tokens,$line);
+		if ($t eq '+') {
+			my $y = get_mult_expr($scope,$tokens,$line);
+			$x = $x + $y;
+		} elsif ($t eq '-') {
+			my $y = get_mult_expr($scope,$tokens,$line);
+			$x = $x - $y;
+		} else {
+			last;
+		}
+	}
+	unshift @$tokens, $t;
+	return $x;
+}
+
+sub get_shift_expr($$$) {
+	my ($scope,$tokens,$line) = @_;
+	my $x = get_add_expr($scope,$tokens,$line);
+	my $t, $t2;
+	for (;;) {
+		$t = get_token($tokens,$line);
+		if ($t eq '<' or $t eq '>') {
+			$t2 = get_token($tokens,$line);
+			if ($t2 ne $t) {
+				unshift @$tokens, $t2;
+				last;
+			}
+		}
+		if ($t eq '<') {
+			my $y = get_add_expr($scope,$tokens,$line);
+			$x = $x << $y;
+		} elsif ($t eq '>') {
+			my $y = get_add_expr($scope,$tokens,$line);
+			$x = $x >> $y;
+		} else {
+			last;
+		}
+	}
+	unshift @$tokens, $t;
+	return $x;
+}
+
+sub get_and_expr($$$) {
+	my ($scope,$tokens,$line) = @_;
+	my $x = get_shift_expr($scope,$tokens,$line);
+	my $t;
+	for (;;) {
+		$t = get_token($tokens,$line);
+		if ($t eq '&') {
+			my $y = get_shift_expr($scope,$tokens,$line);
+			$x = $x & $y;
+		} else {
+			last;
+		}
+	}
+	unshift @$tokens, $t;
+	return $x;
+}
+
+sub get_xor_expr($$$) {
+	my ($scope,$tokens,$line) = @_;
+	my $x = get_and_expr($scope,$tokens,$line);
+	my $t;
+	for (;;) {
+		$t = get_token($tokens,$line);
+		if ($t eq '^') {
+			my $y = get_and_expr($scope,$tokens,$line);
+			$x = $x ^ $y;
+		} else {
+			last;
+		}
+	}
+	unshift @$tokens, $t;
+	return $x;
+}
+
+sub get_ior_expr($$$) {
+	my ($scope,$tokens,$line) = @_;
+	my $x = get_xor_expr($scope,$tokens,$line);
+	my $t;
+	for (;;) {
+		$t = get_token($tokens,$line);
+		if ($t eq '|') {
+			my $y = get_xor_expr($scope,$tokens,$line);
+			$x = $x | $y;
+		} else {
+			last;
+		}
+	}
+	unshift @$tokens, $t;
+	return $x;
+}
+
+sub get_constant_expr($$$) {
+	my ($scope,$tokens,$line) = @_;
+	my $x = get_ior_expr($scope,$tokens,$line);
+	return $x;
+}
+
+sub parse_enum($$$$) {
+	my ($scope,$tokens,$line,$enum_name) = @_;
+	my $vl = $scope->{values};
+	my $x = 0;
+	for (;;) {
+		my $t = get_token($tokens,$line);
+		last if ($t eq '}');
+		if (!defined($t)) {
+			die "Unexpected end of file at line $$line\n";
+		}
+		if ($t !~ /^\w+$/) {
+			die "Syntax error at line $$line\n";
+		}
+		if (defined($vl->{$t})) {
+			die "Duplicate identifier at line $$line\n";
+		}
+		my $t2 = get_token($tokens,$line);
+		if ($t2 eq ',') {
+			$vl->{$t} = {type=>$enum_name, size=>4, value=>$x, enum=>1};
+			++$x;
+		} elsif ($t2 eq '}') {
+			$vl->{$t} = {type=>$enum_name, size=>4, value=>$x, enum=>1};
+			++$x;
+			last;
+		} elsif ($t2 eq '=') {
+			$x = get_constant_expr($scope, $tokens, $line);
+			$vl->{$t} = {type=>$enum_name, size=>4, value=>$x, enum=>1};
+			++$x;
+			$t2 = get_token($tokens,$line);
+			last if ($t2 eq '}');
+			next if ($t2 eq ',');
+			die "Syntax error at line $$line\n";
+		} else {
+			unshift @$tokens, $t2;
+		}
+	}
+	my $t = get_token($tokens,$line);
+	if ($t ne ';') {
+		die "Missing ; at line $$line\n";
+	}
+}
+
+sub parse_decl_def($$$) {
+	my ($scope,$tokens,$line) = @_;
+	my $level=0;
+	my @decl;
+	while ( scalar(@$tokens) ) {
+		my $t = get_token($tokens, $line);
+		if ($t eq ';' and $level==0) {
+			return @decl;
+		}
+		push @decl, $t;
+		if ($t eq '{') {
+			++$level;
+		}
+		if ($t eq '}') {
+			if ($level==0) {
+				die "Syntax error at line $$line\n";
+			}
+			if (--$level==0) {
+				return ();	# end of function definition reached
+			}
+		}
+	}
+	die "Unexpected end of file at line $$line\n";
+}
+
+sub dump_scope($) {
+	my ($scope) = @_;
+	my $el = $scope->{enums};
+	my $cl = $scope->{classes};
+	my $vl = $scope->{values};
+	print "SCOPE: $scope->{name}\n";
+	if (scalar(@$el)) {
+		print "\tenums:\n";
+		foreach (@$el) {
+			print "\t\t$_\n";
+		}
+	}
+	if (scalar(keys(%$vl))) {
+		print "\tvalues:\n";
+		foreach $vname (keys(%$vl)) {
+			my $v = $vl->{$vname};
+			my $x = $v->{value};
+			my $t = $v->{type};
+			my $sz = $v->{size};
+			if ($v->{enum}) {
+				print "\t\t$vname\=$x (enum $t) size=$sz\n";
+			} else {
+				print "\t\t$vname\=$x (type $t) size=$sz\n";
+			}
+		}
+	}
+	if ($scope->{scope}) {
+		my $members = $scope->{members};
+		foreach (@$members) {
+			my $n = $_->{name};
+			my $sz = $_->{size};
+			my $off = $_->{offset};
+			my $spc = $_->{spacing};
+			if (defined $spc) {
+				print "\t$n\[\]\: spacing $spc size $sz offset $off\n";
+			} else {
+				print "\t$n\: size $sz offset $off\n";
+			}
+		}
+		print "\tOverall size : $scope->{size}\n";
+		print "\tOverall align: $scope->{align}\n";
+	}
+	foreach $s (@$cl) {
+		dump_scope($s);
+	}
+}
+
+sub output_scope($$) {
+	my ($scope, $out) = @_;
+	my $el = $scope->{enums};
+	my $cl = $scope->{classes};
+	my $vl = $scope->{values};
+	my $sn = scope_full_name($scope);
+	my $sp = ($scope->{file}) ? "" : $sn."_";
+	if ($scope->{file}) {
+		push @$out, "";
+		push @$out, &$comment_sub("FILE SCOPE");
+		push @$out, "";
+	} else {
+		push @$out, "";
+		push @$out, &$comment_sub($scope->{specifier}." ".$scope->{name});
+		push @$out, "";
+	}
+	if (scalar(keys(%$vl))) {
+		foreach $vname (keys(%$vl)) {
+			my $v = $vl->{$vname};
+			my $x = $v->{value};
+			my $t = $v->{type};
+			my $sz = $v->{size};
+			push @$out, &$format_sub($sp.$vname, $x);
+		}
+	}
+	if ($scope->{scope}) {
+		my $members = $scope->{members};
+		foreach (@$members) {
+			my $n = $_->{name};
+			my $sz = $_->{size};
+			my $off = $_->{offset};
+			my $spc = $_->{spacing};
+			push @$out, &$format_sub($sp.$n, $off);
+			if (defined $spc) {
+				push @$out, &$format_sub($sp.$n."_spc", $spc);
+			}
+		}
+		push @$out, &$format_sub($sp."sz", $scope->{size});
+	}
+	foreach $s (@$cl) {
+		if ($s->{complete})	{
+			output_scope($s, $out);
+		}
+	}
+}
+
+sub scope_full_name($) {
+	my ($scope) = @_;
+	if ($scope->{file}) {
+		return "";
+	}
+	my $parent = $scope->{scope};
+	if ($parent->{file}) {
+		return $scope->{name};
+	}
+	return scope_full_name($parent)."_".$scope->{name};
+}
+
+sub pad($$) {
+	my ($lineref, $n) = @_;
+	my $l = length ($$lineref);
+	if ($l < $n) {
+		$$lineref .= ' 'x($n-$l);
+	}
+}
+
+#
+# Subroutines for ARMASM compatible output
+#
+sub armasm_format($$;$) {
+	my ($name, $value, $comment) = @_;
+	my $r = "$name ";
+	pad(\$r, 40);
+	$r .= sprintf("EQU 0x%08x", $value & 0xFFFFFFFF);
+	if ($comment and $comment!~/^\s*$/) {
+		$r .= " ";
+		pad(\$r, 60);
+		$r .= "; $comment";
+	}
+	return $r;
+}
+
+sub armasm_comment($) {
+	my ($comment) = @_;
+	return "; $comment";
+}
+
+sub armasm_end() {
+	return "\n\tEND\n";
+}
+
+#
+# Subroutines for GNU AS compatible output
+#
+sub as_format($$;$) {
+	my ($name, $value, $comment) = @_;
+	my $r = "    .equ $name, ";
+	pad(\$r, 50);
+	$r .= sprintf("0x%08x", $value & 0xFFFFFFFF);
+	if ($comment and $comment!~/^\s*$/) {
+		$r .= " ";
+		pad(\$r, 65);
+		$r .= "/* $comment */";
+	}
+	return $r;
+}
+
+sub as_comment($) {
+	my ($comment) = @_;
+	if (length ($comment) > 0) {
+		return "/* $comment */";
+	} else {
+		return "";
+	}
+}
+
+sub as_end() {
+	return "";
+}
+
+#
+# Subroutines for Turbo Assembler compatible output
+#
+sub tasm_format($$;$) {
+	my ($name, $value, $comment) = @_;
+	my $r = "$name ";
+	pad(\$r, 40);
+	$r .= sprintf("EQU 0%08xh", $value & 0xFFFFFFFF);
+	if ($comment and $comment!~/^\s*$/) {
+		$r .= " ";
+		pad(\$r, 60);
+		$r .= "; $comment";
+	}
+	return $r;
+}
+
+sub tasm_comment($) {
+	my ($comment) = @_;
+	return "; $comment";
+}
+
+sub tasm_end() {
+	return "";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/listfeaturevariants.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,47 @@
+# Copyright (c) 2007-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:
+# list A.X.aaa for all X (32 chars) when given A.aaa
+# 
+#
+
+
+my $source = shift;
+
+# list invariant
+print "$source\n" if (-f $source);
+
+# now think about variants
+
+use File::Basename;
+my $srcDir = dirname($source);
+my $srcRoot = basename($source);
+my $srcExt = "";
+
+if ($srcRoot =~ /^(.+)\.([^\.]+)$/)
+{
+	$srcRoot = $1;
+	$srcExt = $2;
+}
+
+opendir(DIR, $srcDir) or die("ERROR: cannot read directory $srcDir\n");
+
+# list all variants
+while (my $file = readdir(DIR))
+{
+	print "$srcDir\\$file\n" if ($file =~ /^$srcRoot\.(\w{32})\.$srcExt$/i);
+}
+
+exit 1 if (!closedir(DIR));
+exit 0;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/makedef.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,553 @@
+#!/usr/bin/perl
+# Copyright (c) 1998-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:
+# all variables called *Path* are set up to end with a backslash
+# all variables called *Path or *File are stored as absolute (file)paths
+# all variables called UpPath* are stored as relative paths
+# 
+#
+
+use strict   ;
+
+use FindBin;		# for FindBin::Bin
+use Getopt::Long;
+
+my $PerlBinPath;	# fully qualified pathname of the directory containing this script
+my $EntryPoint;         
+my $InternalEntryPoint;
+
+# establish the path to the Perl binaries
+BEGIN {
+	require 5.005_03;				# check user has a version of perl that will cope
+	$PerlBinPath = $FindBin::Bin;	# X:/epoc32/tools
+
+	if ($^O eq "MSWin32")
+		{	
+		$PerlBinPath =~ s/\//\\/g;		# X:\epoc32\tools
+		}
+}
+use lib $PerlBinPath;
+
+use Defutl;
+use File::Copy;
+
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 1;
+
+my %Options;	# command line option information
+
+my $NamedSymLkup = 0;			# This flag is used to enable named lookup on emulator
+my $IgnoreUnfrozenExports = 0;	# This flag is used to ignore the 'unfrozen exports' warnings. This is 
+								# required for STDEXEs which export symbols just to enable 'named lookup'
+								# from within the STDEXE (via 'dlsym') and are never exposed outside (via def files or
+								# import libraries.
+my $ExportEntrypointE32Dll = 0;	 # Workaround: To export entry point _E32DLL for target type STDDLL
+
+# THE MAIN PROGRAM SECTION
+##########################
+
+{
+
+	my $INFILE;
+	my $FRZFILE;
+	my $OUTFILE;
+	my @ObjFiles;
+
+	# process the command-line
+	unless (GetOptions(\%Options, '1=s', '2=s', 'deffile=s', 'frzfile=s', 'inffile=s', 'overwrite', 'absent=s', 'ignore_unfrozen_noncallable', 'SystemTargetType', 'sym_name_lkup', 'ignore_unfrozen_exports','export_entrypoint_E32Dll')) {
+		exit 1;
+	}
+	unless (@ARGV==1) {
+		&Usage;
+	}
+
+#	check the flags
+
+	if (($Options{deffile} and $Options{inffile}) or (not ($Options{deffile} or $Options{inffile}))) {
+		die "MAKEDEF ERROR: Must specify either -Deffile [file] or -Inf [file]\n";
+	}
+	if ($Options{2} && !$Options{1}) {
+		die "MAKEDEF ERROR: Can't specify second export name and not first export name\n";
+	}
+
+#	process the flags
+	if ($Options{deffile}) {
+		$INFILE=$Options{deffile};
+		unless (-e $INFILE) {
+			die "MAKEDEF ERROR: $INFILE: Deffile not found\n";
+		}
+	}
+	else {
+		$INFILE=$Options{inffile};
+		unless (-e $INFILE) {
+			die "MAKEDEF ERROR: $INFILE: Inffile not found\n";
+		}
+	}
+	if ($Options{frzfile}) {
+		$FRZFILE=$Options{frzfile};
+#		check the frozen .DEF file exists
+		unless (-e $FRZFILE) {
+			die "MAKEDEF ERROR: $FRZFILE: Frzfile not found\n";
+		}
+	}
+	$OUTFILE=pop @ARGV;
+
+
+	$NamedSymLkup = $Options{sym_name_lkup};
+	$IgnoreUnfrozenExports = $Options{ignore_unfrozen_exports};
+	$ExportEntrypointE32Dll = $Options{export_entrypoint_E32Dll};	# Workaround: To export entry point _E32DLL for target type STDDLL
+
+#	Read the Frozen .DEF file if specified
+	my @FrzDataStruct;
+	if ($FRZFILE) {
+		eval { &Def_ReadFileL(\@FrzDataStruct, $FRZFILE); };
+		die $@ if $@;
+		if ($Options{1}) {
+#			Check that frozen def file matches the -1 and -2 arguments given, if any
+			my $export1="";
+			my $export2="";
+			foreach my $FrzRef (@FrzDataStruct) {
+				next unless $$FrzRef{Name};		# ignore lines not containing an export
+				if ($$FrzRef{Ordinal} == 1) {
+					$export1 = $$FrzRef{Name};
+					next;
+				}
+				if ($$FrzRef{Ordinal} == 2) {
+					$export2 = $$FrzRef{Name};
+					next;
+				}
+				if ($Options{1} && ($Options{1} ne $export1)) {
+					die "MAKEDEF ERROR: $FRZFILE: Frzfile ordinal 1 does not match command line\n";
+				}
+				if ($Options{2} && ($Options{2} ne $export2)) {
+					die "MAKEDEF ERROR: $FRZFILE: Frzfile ordinal 2 does not match command line\n";
+				}
+			}
+		}
+	}
+	elsif ($Options{1}) {
+#		create an export structure for the names passed on the command line
+		push @FrzDataStruct, {
+			Name=>$Options{1},
+			ExportName=>$Options{1},
+			Ordinal=>1
+		};
+		if ($Options{2}) {
+			push @FrzDataStruct, {
+				Name=>$Options{2},
+				ExportName=>$Options{2},
+				Ordinal=>2
+			};
+		}
+	}
+
+#	Read the Input .DEF file
+	my @InDataStruct;
+	if ($Options{deffile}) {
+		eval { &Def_ReadFileL(\@InDataStruct, $INFILE); };
+	}
+	else {
+		eval { &ReadInfFileL(\@InDataStruct, $INFILE); };
+	}
+	die $@ if $@;
+
+#	Compare the frozen .DEF data with the input .DEF or export info file data
+	my (@NewDataStruct, @MissingDataStruct, @MatchedDataStruct);
+	eval { &CompareFrzInL (\@NewDataStruct, \@MissingDataStruct, \@MatchedDataStruct, \@FrzDataStruct, \@InDataStruct); };
+	die $@ if $@;
+
+	# MAKEDEF should generate a warning if the def file has no exports (old or new)
+	# and the associated MMP 'targettype' is not a System Target type.
+	print "MAKEDEF WARNING: $OUTFILE has no EXPORTS\n" unless (@MatchedDataStruct || @NewDataStruct || $Options{SystemTargetType});
+
+#	Create the output .DEF file
+	eval { &CreateDefFileL(\@NewDataStruct, \@MatchedDataStruct, $OUTFILE, $FRZFILE); };
+	die $@ if $@;
+
+#	report missing frozen export errors
+	if (@MissingDataStruct) {
+		my @Errors;
+		my $Num=@MissingDataStruct;
+		my $Ref;
+		if ($FRZFILE) {
+			push @Errors, "MAKEDEF ERROR: $Num Frozen Export(s) missing from object files (POSSIBLE COMPATIBILITY BREAK):\n";
+			foreach $Ref (@MissingDataStruct) {
+				push @Errors, "  $FRZFILE($$Ref{LineNum}) : $$Ref{Name} \@$$Ref{Ordinal}\n";
+			}
+		}
+		else {
+			push @Errors, "MAKEDEF ERROR: command-line: $Num Frozen Export(s) missing from object files (POSSIBLE COMPATIBILITY BREAK):\n";
+			foreach $Ref (@MissingDataStruct) {
+				push @Errors, "  $$Ref{Name} \@$$Ref{Ordinal}\n";
+			}
+		}
+		die "\n", @Errors;
+	}
+	elsif ($Options{overwrite} && -w $FRZFILE) #sag
+		{
+		print "Copying $OUTFILE to $FRZFILE\n";
+		rename $FRZFILE, "$FRZFILE.bak";
+		copy($OUTFILE, $FRZFILE);
+		}
+
+	exit 0;
+}
+
+#######################################################################
+# SUBROUTINES
+#######################################################################
+
+sub Usage () {
+
+	print(
+		"\n",
+		"MAKEDEF - .DEF file generator V$MajorVersion.$MinorVersion.$PatchVersion\n",
+		"\n",
+		"MAKEDEF {options} [Output .DEF file]\n",
+		"\n",
+		"options:   (case-insensitive)\n",
+		"  -Deffile [Input .DEF file]\n",
+		"  -Inffile [Input export information file]\n",
+		"  -Frzfile [Frozen .DEF file]\n",
+		"  -1 [first export name] {-2 [second export name]}\n",
+		"  -Overwrite\n",
+		"  -Absent [symbol to use for absent exports]\n",
+		"  -ignore_unfrozen_noncallable\n",
+		"  -SystemTargetType\n",
+		"  -sym_name_lkup [Enable symbol lookup by name]\n",
+		"  -ignore_unfrozen_exports \n",
+		"\n",
+		"Either specify -Deffile or -Inffile, and\n",
+		"either -Frzfile or -1 {-2} if required.\n"
+	);
+	exit 1;
+}
+
+sub ReadInfFileL ($$$) {
+	my ($DataStructRef, $FILE)=@_;
+
+#	open export information file for reading
+	open (FILE, "<$FILE") or die "could not open $FILE: $!";
+
+#	read the export info. file, and create dummy frozen .DEF file text
+	my $LineNum=0;
+	my $Ordinal=0;
+	my $Comment='';
+	my $Name='';
+	my $InfType=0;	# dumpbin output
+	my %exports;	# MWLD workaround - record mangled names in case we don't see the demangled ones
+	my $Line;
+	while ($Line=<FILE>) {
+	        my $Data=0;
+			my $SymbolSize=0;
+		$LineNum++;
+		if ($InfType == 0) {
+			if ($Line =~ /\*\*\* ARCHIVE SYMBOL TABLE.* \*\*\*/o) {
+				$InfType=1;	# mwld disassembly output
+				next;
+			}
+			if ($Line =~ /^\s+(\?\S+)(\s+\((.*)\))?$/o) {
+#                   ??0TAgnAlarmDefaults@@QAE@XZ (public: __thiscall TAgnAlarmDefaults::TAgnAlarmDefaults(void))
+				$Name=$1;
+				$Comment=$3;
+			} 
+			elsif ($Line =~ /^\s+_(\S+)(\s+\((.*)\))?$/o) {
+# frozen ordinals like "UserNoLongerSupported01" seem to inherit a leading underscore in the dumpbin output
+				$Name=$1;
+				$Comment=$3;
+			}
+			elsif ($Line =~ /^\s+_(\S+) DATA (\d+)(\s+\((.*)\))?$/o) {
+#				Mark the data symbols and retain their sizes
+				$Name=$1;
+				$Data=1;
+				$SymbolSize=$2;
+				$Comment=$4;
+			}
+			else {
+				next;
+			}
+		}
+		else {
+			# The Windows CW linker produces .inf files with a 'something' unmangled comment at the end, the Linux CW linker doesn't
+			if ($Line =~ /^\s*\d+\s+\(.+\)\s+__imp_((.)(\S+))(\s+'__declspec\(dllimport\)\s+(.*)')?$/o) {
+					if ($2 eq "_") {
+							$Name = $3;		# C symbol, so remove leading underscore
+							$Comment = $5 if ($4);	# name isn't mangled anyway
+					} else {
+							$Name = $1;		# C++ mangled name
+							$Comment = $5 if ($4);	# can't unmangle names...
+					}
+
+					# One side-effect of ignoring comments if they're not present is that Windows entry points need to be
+					# specifically ignored.  Previously they were ignored by virture of the fact they had no comment.
+					next if ($Name eq "_E32Dll" || $Name eq "_E32Startup");
+
+					$Comment = $4 ? $5 : $Name;
+					
+					# need to save both the line number and
+					# comment
+					my %entry;
+					$entry{'lineNum'} = $LineNum;
+					$entry{'comment'} = $Comment;
+					$exports{$Name}=\%entry;
+					next;
+			}
+			if ($Line =~ /\*\*\* Unmangled Symbols \*\*\*/o) {
+				# Currently for Linux "Unmangled Symbols" section is blank
+				<FILE>; 
+				$Line = <FILE>; 
+				$LineNum+=2;
+				if ($^O eq "MSWin32") {
+					if ($Line !~ /^\s*\d+:\s+(\S+)$/o) {
+						print STDERR "MAKEDEF WARNING: unknown inf file format\n";
+						next;
+					}
+				}
+				$Name = length $1 ? $1 : '';
+# Workaround: if MWLD can't demangle the name, we will see only the __imp_ version.
+				if ($Name =~ /^__imp_(\S+)$/o) {
+					$Name = $1;
+				}
+				$Line = <FILE>; 
+				$LineNum++;
+				next if ($Line !~ /^\s+(.+)$/o);
+				$Comment = $1;
+			}
+			elsif ($Line =~ /^0x\S{8}\s+__imp__(\S+)$/o) {
+				$Name = $1;	# leading underscore already removed
+				$Comment = '';	# a C symbol, and therefore not mangled
+			}
+			else {
+				next;
+			}
+		}
+# Check for WINS entrypoint symbols
+		if ($Name eq "_E32Dll" || $Name eq "_E32Startup") {
+			$EntryPoint = $Name;
+			# when mwld resolves an exported symbol S coming from
+			# the def file, it looks both for S() and _S() in
+			# every object file but only for _S() in static
+			# libraries.
+			#
+			# As a consequence, we need to distinguish the
+			# internal entry point name from the external one.
+			$InternalEntryPoint = "_$Name" if ($InfType != 0);
+			my $entry = $exports{$Name};
+			$entry->{'lineNum'} = 0; # indicates processed name
+			next;
+		}
+		$Ordinal++;
+		$Comment='' if (!defined $Comment);
+		push @$DataStructRef, {
+			Ordinal=>$Ordinal,
+			Name=>$Name,
+			Data=>$Data,
+			Size=>$SymbolSize,
+			ExportName=>$Name,
+			Comment=>$Comment,
+			LineNum=>$LineNum
+		};
+		my $entry = $exports{$Name};
+		$entry->{'lineNum'} = 0; # indicates processed name
+	}
+	foreach $Name (keys %exports) {
+	    	my $entry = $exports{$Name};
+		$LineNum = $entry->{'lineNum'};
+		if ($LineNum > 0) {
+			$Ordinal++;
+			push @$DataStructRef, {
+				Ordinal=>$Ordinal,
+				Name=>$Name,
+				ExportName=>$Name,
+				Comment=> $entry->{'comment'},
+				LineNum=>$LineNum
+			};
+		}
+	}
+}
+
+sub CompareFrzInL ($$$$$) {
+	my ($NewStructRef, $MissingStructRef, $MatchedStructRef, $FrzStructRef, $InStructRef)=@_;
+	my $AbsentSubst = $Options{absent};
+	my $IgnoreNoncallable = $Options{ignore_unfrozen_noncallable};
+	
+#	compare the input export data with the frozen data
+
+#	this function trashes the frozen .DEF data structure and the new .DEF data structure
+
+#	nullify non-export statements in the structures
+	foreach (@$FrzStructRef,@$InStructRef) {
+		next if $$_{Name};
+		undef $_;
+	}
+
+	my $LastOrdinal=0;
+
+	my $FrzRef;
+	my $InRef;
+	FRZLOOP: foreach $FrzRef (@$FrzStructRef) {
+		next unless $$FrzRef{Name};		# ignore lines in the .DEF file not containing an export
+		if ($LastOrdinal<$$FrzRef{Ordinal}) {
+			$LastOrdinal=$$FrzRef{Ordinal};
+		}
+		foreach $InRef (@$InStructRef) {
+			next unless defined $InRef; # ignore nullified entries in the temporary array
+#			does the function name match?
+			if ($$InRef{Name} eq $$FrzRef{Name}) {
+#				give the generated export the same number as the corresponding frozen one
+				$$InRef{Ordinal}=$$FrzRef{Ordinal};
+				$$InRef{Data}=$$FrzRef{Data};
+				$$InRef{Size}=$$FrzRef{Size};
+#				if the export is marked as absent, redirect it appropriately
+				if ($$FrzRef{Absent}) {
+					if ($AbsentSubst) {
+						$$InRef{Name} = $AbsentSubst;
+						$$InRef{ExportName} = sprintf("\"_._.absent_export_%d\"", $$InRef{Ordinal});
+					}
+				}
+				push @$MatchedStructRef, $InRef;
+				undef $InRef;
+				next FRZLOOP;
+			}
+		}
+#		these frozen exports haven't been found in the object files
+#		first check for ABSENT declarations
+		if ($AbsentSubst and $$FrzRef{Absent}) {
+			$$FrzRef{Name} = $AbsentSubst;
+			$$FrzRef{ExportName} = sprintf("\"_._.absent_export_%d\"", $$FrzRef{Ordinal});
+			push @$MatchedStructRef, $FrzRef;
+			next FRZLOOP;
+		}
+
+#		No - it's really missing
+		push @$MissingStructRef, $FrzRef;
+#		put a comment in the generated .DEF file to that effect
+		$$FrzRef{Missing}=1;
+		push @$MatchedStructRef, $FrzRef;
+	}
+
+#	all the exports left in the new .DEF file aren't frozen - give them the right ordinals
+	foreach $InRef (@$InStructRef) {
+		next unless defined $InRef; # ignore nullified entries
+		if ($$InRef{Name} =~ /^_ZTV|_ZTI/) {
+			# EABI non-callable exports
+			next if ($IgnoreNoncallable);	
+		}
+		$LastOrdinal++;
+		$$InRef{Ordinal}=$LastOrdinal;
+		push @$NewStructRef, $InRef;
+	}
+}
+
+sub CreateDefFileL ($$$$) {
+#	creates a new .DEF file
+	my ($NewStructRef, $MatchedStructRef, $FILE, $FRZFILE)=@_;
+
+	my @Text=("EXPORTS\n");
+	my $LineNum=1;
+
+
+	my $InRef;
+	foreach $InRef (@$MatchedStructRef) {
+		my $Comment='';
+		if ($$InRef{Comment}) {
+			$Comment=" ; $$InRef{Comment}";
+		}
+		if ($$InRef{Missing}) {
+			push @Text, '; MISSING:';
+		}
+		my $Data = "";
+		if( defined $$InRef{Data} && $$InRef{Data} == 1) {
+		$Data = " DATA $$InRef{Size}" ;
+		}
+		my $r3unused = $$InRef{R3Unused} ? " R3UNUSED" : "";
+
+#		A def file entry with the keyword 'NONAME' indicates the MW linker that a named-lookup is not enabled. 
+#		Note that although it may seem, but named lookup is either enabled or disabled on a per-binary basis and not
+#		per-symbol.
+		my $noname = $NamedSymLkup ? "": " NONAME";
+		if ($$InRef{ExportName} and ($$InRef{ExportName} ne $$InRef{Name})) {
+			push @Text, "\t$$InRef{ExportName}=$$InRef{Name} \@ $$InRef{Ordinal} $noname$Data$r3unused$Comment\n";
+		} else {
+			push @Text, "\t$$InRef{Name} \@ $$InRef{Ordinal} $noname$Data$r3unused$Comment\n";
+		}
+		$LineNum++;
+		next;
+	}
+	if (@$NewStructRef) {
+
+#		warn about unfrozen exports and add them to the end of the generated .DEF file
+		my $Num=@$NewStructRef;
+		my @Warnings;
+
+		if(!$IgnoreUnfrozenExports) {
+			my $warning = "MAKEDEF WARNING: $Num export(s) not yet Frozen";
+
+			if ($FRZFILE)
+				{
+				$warning .= " in $FRZFILE";
+				}
+
+			$warning .= ":\n";
+
+			push @Warnings, $warning;
+		}
+
+		push @Text, "; NEW:\n";
+		$LineNum++;
+		foreach $InRef (@$NewStructRef) {
+			my $Comment='';
+			if ($$InRef{Comment}) {
+				$Comment=" ; $$InRef{Comment}";
+			}
+			my $Data = "";
+			if(defined $$InRef{Data} && $$InRef{Data} == 1){
+			$Data = " DATA $$InRef{Size}";
+			}
+			my $r3unused = $$InRef{R3Unused} ? " R3UNUSED" : "";
+			my $noname = $NamedSymLkup ? "": " NONAME";
+			if ($$InRef{ExportName} and ($$InRef{ExportName} ne $$InRef{Name})) {
+				push @Text, "\t$$InRef{ExportName}=$$InRef{Name} \@ $$InRef{Ordinal} $noname$Data$r3unused$Comment\n";
+			} else {
+				push @Text, "\t$$InRef{Name} \@ $$InRef{Ordinal} $noname$Data$r3unused$Comment\n";
+			}
+			$LineNum++;
+			if(!$IgnoreUnfrozenExports) {
+				push @Warnings, "  $FILE($LineNum) : $$InRef{Name} \@$$InRef{Ordinal}\n";
+			}
+			next;
+		}
+		print @Warnings;
+	}
+	if ($EntryPoint) {
+		push @Text, "\t$EntryPoint";
+		push @Text, "=$InternalEntryPoint" if ($InternalEntryPoint);
+		push @Text, "\t; Entry point for emulation\n";
+	}
+	elsif ($ExportEntrypointE32Dll) {		# Workaround: To export entry point _E32DLL for target type STDDLL
+		push @Text, "\t_E32Dll";
+		push @Text, "=__E32Dll" ;
+		push @Text, "\t; Entry point for STDDLL emulation\n";
+	}
+
+#	add a terminating newline
+	push @Text, "\n";
+
+#	write the new .DEF file
+	eval { &Def_WriteFileL(\@Text, $FILE); };
+	die $@ if $@;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/omapsig.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+# e32toolp\e32util\omapsig.pl
+#
+# Copyright (c) 2008 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: 
+#
+# Prepend OMAP boot signature to miniboot binaries
+#
+# Syntax:
+#	perl omapsig.pl <load address in hex> <input miniboot> <output minboot with sig>
+#
+
+use warnings;
+use IO::Handle;
+use File::Copy;
+
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 0;
+
+if (scalar(@ARGV)!=3) {
+	die "OMAPSIG signature tool V$MajorVersion.$MinorVersion.$PatchVersion\nperl omapsig.pl <load address in hex> <input miniboot> <output minboot with sig>\n";
+}
+
+my ($load_address, $infile, $outfile) = @ARGV;
+
+$load_address = pack('L', hex($load_address));
+
+my $filesize_in_bytes = -s $infile;
+
+print "miniboot input ", $filesize_in_bytes, " bytes\n";
+
+$filesize_in_bytes = pack('L', $filesize_in_bytes);
+
+open my $in, "< $infile" or die "Can't open $infile for input: $!";
+binmode($in);
+open my $out, "> $outfile" or die "Can't open $outfile for output: $!";
+binmode($out);
+$out->autoflush(1);
+
+print $out $filesize_in_bytes;
+print $out $load_address;
+
+copy($in, $out) or die "Couldn't copy from $infile to $outfile: $!";
+
+close $in;
+close $out;
+
+print "signed miniboot output ", -s $outfile, " bytes\n";
+exit;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/prepdef.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,151 @@
+#!/usr/bin/perl
+# Copyright (c) 2003-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:
+# e32toolp/e32util/prepdef.pl
+# 
+#
+
+
+use FindBin;		# for FindBin::Bin
+use Getopt::Long;
+
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+
+BEGIN {
+# check user has a version of perl that will cope
+	require 5.005_03;
+# establish the path to the Perl libraries: currently the same directory as this script
+	$PerlLibPath = $FindBin::Bin;	# X:/epoc32/tools
+	if ($^O eq "MSWin32")
+	{
+		$PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+		$PerlLibPath .= "\\";
+	}
+}
+
+use lib $PerlLibPath;
+use Defutl;
+
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 1;
+
+# THE MAIN PROGRAM SECTION
+##########################
+
+{
+	
+
+	# process the command-line
+	unless (@ARGV==2 ||  @ARGV==3 || @ARGV==4) {
+		&Usage;
+	}
+	my ($FRZFILE,$GENFILE,$DATASWITCH,$ABSENTSYM)=@ARGV;
+	
+	
+
+#	Read the Frozen .DEF file
+	my @FrzDataStruct;
+	my $FrzExportsOn=0;
+	eval { &Def_ReadFileL(\@FrzDataStruct, $FRZFILE, $FrzExportsOn); };
+	die $@ if $@;
+
+	eval { &WriteOutputFileL(\@FrzDataStruct, $GENFILE, $DATASWITCH, $ABSENTSYM); };
+	die $@ if $@;
+
+	exit;
+}
+
+#######################################################################
+# SUBROUTINES
+#######################################################################
+
+sub Usage () {
+
+	print(
+		"\n",
+		"PREPDEF - Prepare frozen DEF file for library generation V$MajorVersion.$MinorVersion.$PatchVersion\n",
+		"\n",
+		"PREPDEF [frozen .DEF file] [processed .DEF file] [nodatasizes] [entrypoint_name]\n",
+		"\n",
+		"\n",
+		"\n"
+	);
+	exit 1;
+}
+
+
+
+sub WriteOutputFileL ($$$$) {
+	my ($FrzStructRef, $FILE, $DATASWITCH, $ABSENTSYM)=@_;
+
+	my @Text;
+
+	if ($ABSENTSYM) {
+		$ABSENTSYM = '='.$ABSENTSYM;
+	}
+
+#	Process the frozen .DEF file
+	my $FrzRef;
+	my $ExportsDeclared;
+
+#	get the lines of text from the frozen .DEF file
+	foreach $FrzRef (@$FrzStructRef) {
+		next if (!$FrzRef);
+		if (!defined($$FrzRef{Ordinal})) {
+			push @Text, $$FrzRef{Line};
+			$ExportsDeclared = 1 if ($$FrzRef{Line} =~ /^\s*EXPORTS\s*(\s+\S+.*)?$/io);
+			next;
+		}
+		my $Comment='';
+		if ($$FrzRef{Comment}) {
+			$Comment=" ; $$FrzRef{Comment}";
+		}
+#		Mention if it is a Data symbol along with its size.
+		my $data = "";
+		if(defined $$FrzRef{Data})
+			{			
+			if ($DATASWITCH eq "nodatasizes")
+				{
+				$data = " DATA";
+				}
+			else
+				{
+				$data = " DATA $$FrzRef{Size}";
+				}
+			}
+		my $r3unused = $$FrzRef{R3Unused} ? " R3UNUSED" : "";
+		my $ord = $$FrzRef{Ordinal};
+		if ($$FrzRef{Absent}) {
+			push @Text, "\t\"_._.absent_export_$ord\"$ABSENTSYM \@ $ord NONAME$data$r3unused$Comment\n";
+		} else {
+			my $export = $$FrzRef{ExportName};
+			if ($export ne $$FrzRef{Name})
+				{
+				$export .= "=$$FrzRef{Name}";
+				}
+			push @Text, "\t$export \@ $ord NONAME$data$r3unused$Comment\n";
+		}
+	}
+	unshift @Text, "EXPORTS\n" unless ($ExportsDeclared);
+
+#	add a terminating newline
+	push @Text, "\n";
+
+#	write the new frozen .DEF file
+	eval { &Def_WriteFileL(\@Text, $FILE); };
+	die $@ if $@;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/preprocessor.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,101 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# prepocessor.pm
+# Used to allow us to access and manipulate other pre processors
+# 
+#
+
+package Preprocessor;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	PreprocessorToUseId PreprocessorToUseExe PreprocessorToUsePath 
+);
+
+
+
+#
+# Returns the preprocessor name.
+# (After checking it is valid)
+#
+sub PreprocessorToUseId()
+{
+    $env="0";
+    if (defined $ENV{ALT_PRE})
+    {
+	$env = $ENV{ALT_PRE};
+    }
+    
+    if ( $env eq "1" ) # Only a value of 1 will use alternative preprocessor
+    {
+        return "MINGW_NO_CYGWIN";
+    }
+    else
+    {
+        return "DEFAULT";
+    }
+}
+
+
+
+#
+# Returns the preprocessor exe name.
+# without the exe extension.
+#
+
+
+sub PreprocessorToUseExe()
+{
+    $env = &PreprocessorToUseId();
+    
+    if ( ($env eq "DEFAULT") )
+    {
+        return "cpp";
+    }
+    elsif ( $env eq "MINGW_NO_CYGWIN" )
+    {
+        return "scpp";
+    }
+}
+
+
+
+
+#
+# Returns the full path and exe of the preprocessor relative to the 
+# gcc\bin path.
+#
+sub PreprocessorToUsePath()
+{
+    $env = &PreprocessorToUseId();
+
+    if ( ($env eq "") || ($env eq "DEFAULT") )
+    {
+        return "";
+    }
+    elsif ( $env eq "MINGW_NO_CYGWIN" )
+    {
+        return ""; # Currently same path as default (different name though !)
+    }
+    else
+    { # Nothing really to use.
+        die
+            "Unable to find the correct pre processor\n",
+    }
+}
+
+
+1;
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/selectbootmak.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,40 @@
+# Copyright (c) 2002-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:
+# Used to select a makefile which matches the installed version of armasm
+# check to see which version of armasm we've got (first on PATH).
+# if its the old one then copy the file specified by $old to $dest
+# else copy $src to $dest
+# 
+#
+
+use File::Copy;
+
+my ($dest, $old, $src) = @ARGV;
+
+my $oldVersionId = "ARM AOF Macro Assembler vsn 2.37 (Advanced RISC Machines SDT 2.11) [Sep  9 1997]";
+
+open ARMASM, "armasm -help|";
+
+my $id = <ARMASM>;
+
+chop $id;
+
+close ARMASM;
+
+$src = $old if ($id eq $oldVersionId);
+
+unlink $dest;
+
+copy("$src", "$dest");
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/e32util/set-rvct.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,149 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S %0 %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
+goto endofperl
+@rem ';
+#!perl
+#line 15
+use FindBin;
+
+my $SELF_NAME = "set-rvct";
+
+my $self_path;
+
+BEGIN
+{
+    $self_path = $FindBin::Bin;
+}
+
+use lib $self_path;
+
+use RVCT_ver2set;
+
+
+# Some internal helper functions.
+sub _usage_and_die(@);
+sub _err_and_die(@);
+sub _warning(@);
+sub _fixup_path($$);
+
+
+sub main(@)
+{
+    my @available = RVCT_ver2set::get_versions();
+
+    _err_and_die("no RVCT versions found; check that ABLD_RVCT_INI is set.")
+        unless(@available);
+
+    my ($vers, @junk) = @_;
+
+    _usage_and_die(@available)
+        if ( !$vers || @junk || !RVCT_ver2set::compiler_exists($vers) );
+
+    if ($ENV{ABLD_PLAT_INI})
+    {
+        _warning("ABLD_PLAT_INI is set; the build system might clobber your settings.");
+    }
+
+    my $path = _fixup_path( $ENV{PATH}, RVCT_ver2set::get_bin_path($vers) );
+
+    # Create the batch file.
+    {
+        my $fname = "..__.bat";
+
+        open (my $file,  ">",  $fname)
+            or _err_and_die("couldn't create $fname.");
+
+        print $file "set PATH=$path\n";
+
+        my ($n, $p);
+
+        $n = RVCT_ver2set::get_bin_name($vers);
+        $p = RVCT_ver2set::get_bin_path($vers);
+        print $file "set $n=$p\n";
+
+        $n = RVCT_ver2set::get_inc_name($vers);
+        $p = RVCT_ver2set::get_inc_path($vers);
+        print $file "set $n=$p\n";
+
+        $n = RVCT_ver2set::get_lib_name($vers);
+        $p = RVCT_ver2set::get_lib_path($vers);
+        print $file "set $n=$p\n";
+
+        print $file "echo.\n";
+        print $file "armcc --vsn\n";
+
+        close $file or _err_and_die("couldn't close $fname.");
+    }
+}
+
+sub _usage_and_die(@)
+{
+    for (@_)
+    {
+        print STDERR "    $SELF_NAME $_\n";
+    }
+
+    exit 1;
+}
+
+sub _err_and_die(@)
+{
+    print STDERR "error: @_\n";
+    exit 1;
+}
+
+sub _warning(@)
+{
+    print STDERR "warning: @_\n";
+}
+
+sub _fixup_path($$)
+{
+    my @path = split(/;/, shift);
+    my $bin  = shift;
+
+    my @result = ();
+
+    foreach (@path)
+    {
+        push @result, ($_) unless ($_ eq $bin);
+    }
+
+    return join(";", $bin, @result);
+}
+
+
+main(@ARGV);
+
+
+
+__END__
+:endofperl
+
+if "%errorlevel%" == "0" (if exist ..__.bat call ..__.bat & del ..__.bat)
+
+:: vim:ft=perl
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/conv_khronos_hdr_to_cpp.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,86 @@
+# Copyright (c) 2008-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:
+# Convert the given header file from Khronos into a stub implementation file
+# 
+#
+
+use File::Basename;
+use File::Path;
+
+my $debug = 0;
+my $prog = "conv_khronos_hdr_to_cpp.pl";
+my $source = shift;
+my $target = shift;
+my $operation_mode = shift;
+my @lines;
+
+if ($debug)
+	{
+	print "$prog: Args $source $target $operation_mode\n";
+	}
+
+if ("$operation_mode" eq "delete")
+	{
+	&cleanup();
+	exit 0;
+	}
+elsif ("$operation_mode" eq "create")
+	{
+	&setupFiles();
+	&generateStubImplementation();
+	exit 0;
+	}
+else
+	{
+	print "Usage error: $prog source target [create|delete]\n";
+	exit 1;
+	}
+
+sub cleanup()
+	{
+	unlink "$target";
+	}
+
+sub setupFiles()
+	{
+	my $dir;
+	$dir = dirname($target);
+	mkpath $dir;
+	
+	open(INFILE,  "$source") or die "Can't open input file $source; $!\n";
+	open(OUTFILE, ">$target") or die "Can't open output file $target; $!\n";
+	print OUTFILE '/* Auto-generated: ' . "$prog" . ' v1.0 */' . "\n";
+	print OUTFILE '/* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).  All rights reserved. */' . "\n";
+	}
+
+sub generateStubImplementation()
+	{
+	@lines = <INFILE>;
+	foreach (@lines)
+		{
+		# Find function prototype lines
+		if (/^GL_APICALL/)
+			{
+			# Convert the function prototype into a stub function definition
+			s/\;$/ { }/;
+			# Record the stub functions.  There will be a stub implementation
+			# file which includes these stub functions.  This ensures we never
+			# accidentally miss a new function added to the header file supplied
+			# as $source.  We expect compiler warnings (missing use of arguments,
+			# absent return value etc.).  The aim is to get something which will
+			# compile so that a DEF file can be generated.
+			print OUTFILE "$_";
+			}
+		}
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/conv_khronos_openvg_hdr_to_cpp.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,84 @@
+# Copyright (c) 2008-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:
+# Convert the given header file from Khronos into a stub implementation file
+# 
+#
+
+use File::Basename;
+use File::Path;
+
+my $debug = 0;
+my $prog = "conv_khronos_openvg_hdr_to_cpp.pl";
+my $source = shift;
+my $target = shift;
+my $operation_mode = shift;
+my @lines;
+
+if ($debug) {
+  print "$prog: Args $source $target $operation_mode\n";
+}
+
+if ("$operation_mode" eq "delete") {
+  &cleanup();
+  exit 0;
+} elsif ("$operation_mode" eq "create") {
+  &setupFiles();
+  &generateStubImplementation();
+  exit 0;
+} else {
+  print "Usage error: $prog source target [create|delete]\n";
+  exit 1;
+}
+
+sub cleanup()
+  {
+    unlink "$target";
+  }
+
+sub setupFiles()
+  {
+    my $dir;
+    $dir = dirname($target);
+    mkpath $dir;
+	
+    open(INFILE,  "$source") or die "Can't open input file $source; $!\n";
+    open(OUTFILE, ">$target") or die "Can't open output file $target; $!\n";
+    print OUTFILE '/* Auto-generated: ' . "$prog" . ' v1.0 */' . "\n";
+    print OUTFILE '/* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).  All rights reserved. */' . "\n";
+  }
+
+sub generateStubImplementation()
+  {
+    @lines = <INFILE>;
+    my $s = "";
+    foreach (@lines) {
+      # Find function prototype lines
+      if (/^VG[U]?_API_CALL/ || length($s) != 0) {
+	    $s = $s.$_;
+		if (/;/) {
+		  # Convert the function prototype into a stub function definition
+		  $s =~ s/\;$/ { }/;
+		  # Record the stub functions.  There will be a stub implementation
+		  # file which includes these stub functions.  This ensures we never
+		  # accidentally miss a new function added to the header file supplied
+		  # as $source.  We expect compiler warnings (missing use of arguments,
+		  # absent return value etc.).  The aim is to get something which will
+		  # compile so that a DEF file can be generated.
+		  print OUTFILE "$s";
+		  $s = "";
+		}
+      }       
+    }
+
+  }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/ecopyfile.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,134 @@
+# Copyright (c) 2001-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:
+#
+
+use File::Copy;
+use File::Basename;
+use File::Path;
+
+
+if (@ARGV!=2)
+	{
+#........1.........2.........3.........4.........5.........6.........7.....
+	print <<USAGE_EOF;
+Usage : perl ecopyfile.pl srcfile dstfile
+
+If dstfile exists and is identical to srcfile then do nothing,
+otherwise copy srcfile to dstfile.
+
+USAGE_EOF
+	exit 1;
+	}
+
+my $srcfile = shift;
+my $dstfile = shift;
+
+# Sanity checking
+#
+
+if (!-e $srcfile)
+	{
+	print STDERR "$srcfile does not exist\n";
+	exit 1;
+	}
+
+if (!-f $srcfile)
+	{
+	print STDERR "$srcfile is not a plain file\n";
+	exit 1;
+	}
+
+my $updating = -e $dstfile;
+
+if ($updating && !-f $dstfile)
+	{
+	print STDERR "$dstfile exists, but is not a plain file\n";
+	exit 1;
+	}
+
+# Can we avoid doing the copy?
+#
+
+if ($updating && !defined($ENV{ECOPYFILE_ALWAYS_COPY}) && (-s $srcfile == -s $dstfile))
+	{
+	# file exists and is the same size - check contents
+
+	open SRC, $srcfile or print STDERR "Cannot open $srcfile\n" and exit 1;
+	open DST, $dstfile or print STDERR "Cannot open $dstfile\n" and exit 1;
+
+	binmode SRC;
+	binmode DST;
+
+	my $srcbuf;
+	my $dstbuf;
+	my $srclen;
+	my $dstlen;
+	my $same = 1;
+
+	while ($same)
+		{
+		$srclen = read SRC, $srcbuf, 4096;
+		$dstlen = read DST, $dstbuf, 4096;
+		if ($srclen == 0 && $dstlen == 0)
+			{
+			last;
+			}
+		$same= $srcbuf eq $dstbuf;
+		}
+
+	close SRC;
+	close DST;
+
+	if ($same)
+		{
+		# Files match - no need to copy
+		exit 0;
+		}
+
+	# files are different
+	}
+
+# Copy srcfile to dstfile
+#
+
+my $action = "create";
+
+if ($updating) {
+	$action = "update";
+}
+else {
+	# see if the destination directory exists to create the file into...
+	my $directory = dirname($dstfile);
+	if (!-e $directory) {
+		# ...and attempt to create it if not.
+		if (!mkpath ($directory)) {
+			print STDERR "Failed to create directory $directory\n";
+			exit 1;
+		}
+	}
+}
+
+
+if (!copy ($srcfile, $dstfile))
+        {
+	print STDERR "Failed to $action file $dstfile\n";
+	unlink $dstfile;
+	exit 1;
+	}
+
+
+printf "%sd %s\n", ucfirst $action, $dstfile;
+exit 0;
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/emkdir.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,48 @@
+# Copyright (c) 1999-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:
+#
+
+use File::Path;
+
+
+# THE MAIN PROGRAM SECTION
+{
+	unless (@ARGV) {
+		&Usage();
+	}
+
+	my $originalPath = join (' ',@ARGV);
+	print ("Creating $originalPath\n");
+
+#	temp change for old perl
+	foreach (@ARGV) {
+		s-\\-\/-go;
+	}
+	mkpath([@ARGV]);
+	foreach my $path (@ARGV) {
+	    if (! -e $path) {
+		print ("ERROR: Couldn't create $path\n");
+	    }
+	}
+}
+
+sub Usage () {
+	print <<ENDHERESTRING;
+Usage : perl emkdir.pl list_of_directories
+
+  Creates the directories listed
+ENDHERESTRING
+
+	exit 1;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/ermdir.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,36 @@
+# Copyright (c) 1999-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:
+#
+
+use File::Path;
+
+
+# THE MAIN PROGRAM SECTION
+{
+	unless (@ARGV) {
+		&Usage();
+	}
+
+	rmtree([@ARGV]);
+}
+
+sub Usage () {
+	print <<ENDHERESTRING;
+Usage : perl ermdir.pl list_of_directories
+
+  Removes the directories listed
+ENDHERESTRING
+
+	exit 1;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/err_formatter.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,111 @@
+# Copyright (c) 2001-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:
+# err_formatter.pm
+# This tool is asked to invoke the Lada compiler and reformat the errors/warnings from CW
+# style to Visual Studio error/warning reporting style.
+# 
+#
+
+
+use FindBin;
+
+my $command = join(' ', @ARGV);
+open PIPE, "$command 2>&1 | ";
+
+
+my $nextLineOfInterest = 0;
+my $new_error_line=();
+my $comp_msg=();
+my $error_token=();
+
+# The error/warning format for CW compiler for the option 
+# -msgstyle parseable is as follows:
+#
+# ToolName|ToolType|MsgType (FileName|Linenumber|digit|digit|digit|digit)
+# = AtToken
+# > ErrorMsg
+#
+# In the above format, the symbols '|', '(', ')', '=' and '>' occur always
+# and this tool assumes there presence.
+# Also, in the above, 
+#	'ToolName' here is mwccsym2.exe
+#	'ToolType' here is Compiler
+#	'MsgType' is either Error or Warning
+#	'FileName' is the file that caused the compiler error/warning
+#	'Linenumber' is the line at which the error/warning is reported
+#	'AtToken' is the token at which the error/warning was reported.
+#	'ErrorMsg' is the error message and it amrks the end of this error/warning.
+#
+
+my @msgs;
+while(<PIPE>)
+{
+	if( $nextLineOfInterest == 1)
+	{
+		if($_ =~ /^>(.*)/)
+		{
+			$comp_msg .= $1;
+			$new_error_line .= "$comp_msg ";
+			$new_error_line .= ": $error_token" if($error_token);
+			push @msgs, $new_error_line;
+			
+			$nextLineOfInterest = 0;
+			$comp_msg = "";
+			$error_token = "";
+			next;
+		}
+		if($_ =~ /^=(.*)/)
+		{
+			$error_token = $1;
+			next;
+		}
+		if($_ =~ /\((.*)\|([0-9]+)\|([0-9]+)\|([0-9]+)\|([0-9]+)\|([0-9]+)\)/)
+		{
+######### $1 is file name
+######### $2 is line number
+
+			$new_error_line = $1."(";
+			$new_error_line .= $2;
+			$new_error_line .= ")";
+			$new_error_line .= ": ";
+
+			next;
+		}
+	}
+	if($_ =~ /Compiler\|Error/)
+	{
+		$comp_msg = "Error: ";
+		$nextLineOfInterest = 1;
+		next;
+	}
+	elsif($_ =~ /Compiler\|Warning/)
+	{
+		$comp_msg = "Warning: ";
+		$nextLineOfInterest = 1;
+		next;
+	}
+	else
+	{
+		$nextLineOfInterest = 0;
+		push @msgs, $_;
+	}
+}
+
+close PIPE;
+my $msg;
+foreach $msg (@msgs)
+{
+	print "$msg\n";
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/genutl.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,107 @@
+# 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:
+# Contains utility subroutines for MAKMAKE and associated scripts
+# 
+#
+
+package Genutl;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	Genutl_AnyToHex
+	Genutl_VersionToUserString
+	Genutl_VersionToHexString
+	Genutl_VersionToFileAugment
+	Genutl_StringToVersion
+	Genutl_ParseVersionedName
+	Genutl_NormaliseVersionedName
+);
+
+
+sub Genutl_AnyToHex ($) {
+# changes decimal and hexadecimal numbers to the required hexadecimal format
+	my $Num=$_[0];
+	$Num=lc $Num;	# lower casing the x specifying hexadecimal essential
+	if ($Num=~/^(\d{1,10}|0x[\dabcdef]{1,8})$/o) { # this isn't perfect
+		$Num=oct $Num if $Num=~/^0x/o;
+		return sprintf "0x%.8lx", $Num;
+	}
+	return undef;
+}
+
+sub Genutl_VersionToUserString(%) {
+	my (%ver) = @_;
+	return sprintf("%d\.%d", $ver{major}, $ver{minor});
+}
+
+sub Genutl_VersionToHexString(%) {
+	my (%ver) = @_;
+	return sprintf("%04x%04x", $ver{major}, $ver{minor});
+}
+
+sub Genutl_VersionToFileAugment(%) {
+	my (%ver) = @_;
+	return sprintf("{%04x%04x}", $ver{major}, $ver{minor});
+}
+
+sub Genutl_StringToVersion($) {
+	my ($s) = @_;
+	if ($s =~ /^(\d+)\.(\d+)$/) {
+		my %ver;
+		$ver{major} = $1;
+		$ver{minor} = $2;
+		if ($ver{major}<32768 and $ver{minor}<32768) {
+			return %ver;
+		}
+	}
+	return undef;
+}
+
+sub Genutl_ParseVersionedName($) {
+	my ($nref) = @_;
+	return 1 unless ($$nref =~ /\{|\}/);
+	my $a;
+	my $b;
+	if ($$nref =~ /(.*)\{((\d|a|b|c|d|e|f){8})\}(.*?)/i) {
+		$a = $1;
+		$b = $3;
+	} elsif ($$nref =~ /(.*)\{\s*(\d+)\s*\.\s*(\d+)\s*\}(.*?)$/i) {
+		$a = $1;
+		$b = $4;
+		my $major = $2;
+		my $minor = $3;
+		return 0 if ($major>=32768 or $minor>=32768);
+		$$nref = $a.sprintf("{%04x%04x}",$major,$minor).$b;
+	} else {
+		return 0;
+	}
+	if ($a=~/\{|\}/ or $b=~/\{|\}/) {
+		return 0;
+	}
+	return 1;
+}
+
+sub Genutl_NormaliseVersionedName($) {
+	my ($name) = @_;
+	if ($name =~ /(.*)\{\s*(\d+)\s*\.\s*(\d+)\s*\}(.*?)$/i) {
+		my $a = $1;
+		my $b = $4;
+		my $major = $2;
+		my $minor = $3;
+		return $a.sprintf("{%04x%04x}",$major,$minor).$b if ($major<32768 and $minor<32768);
+	}
+	return $name;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/listzip.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+# Copyright (c) 2008-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:
+# e32toolp/genutil/listzip.pl
+# Utility for listing the contents of a zip file.
+# Syntax:
+# perl listzip.pl <prefix> <zipfile>
+# This command will print all files in the <zipfile>. Each file name is prefixed by
+# <prefix> and is printed on a separate line.
+# 
+#
+
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 0;
+
+sub _print_usage_and_die();
+sub _print_err_and_die(@);
+
+sub main(@)
+{
+    my ($prefix, $zipf, @junk) = @_;
+
+    _print_usage_and_die() if (!$prefix || !$zipf || @junk);
+
+    _print_err_and_die("$prefix is not a directory.") unless -d $prefix;
+    _print_err_and_die("$zipf doesn't exist.") unless -f $zipf;
+
+    my @raw_data = qx/unzip -l $zipf/;
+
+    for (@raw_data)
+    {
+        if ($_ =~ /^\s*\d+\s+\d\d[-|\/|\.]\d\d[-|\/|\.]\d\d\s+\d\d:\d\d\s+(.*)/)
+        {
+            my $line = "${prefix}/$1";
+            $line =~ s/\//\\/g if($^O =~ /^MSWin32$/i);
+	    # don't print directories under the <build> tags
+	    if (!($line =~ /[\\|\/]$/)) {
+		    print "$line\n";
+		    }
+        }
+    }
+}
+
+sub _print_usage_and_die()
+{
+    print "LISTZIP zip files process tool V$MajorVersion.$MinorVersion.$PatchVersion\nusage: listzip.pl <prefix> <zipfile>\n";
+    exit 2;
+}
+
+sub _print_err_and_die(@)
+{
+    print "listzip.pl: error: @_\n";
+    exit 1;
+}
+
+main(@ARGV);
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/modload.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+# 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:
+# Runtime module-loading routine for loading e32tools modules into 'main' module
+# 
+#
+
+
+package ModLoad;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	Load_SetVerbose
+	Load_SetModulePath
+	Load_ModuleL
+);
+
+my %Mode=(
+	Verbose=>0
+);
+my $ModulePath;
+
+sub Load_SetVerbose () {
+	$Mode{Verbose}=1;
+}
+
+sub Load_SetModulePath ($) {
+	$ModulePath=$_[0];
+}
+
+sub Load_ModuleL (@) {
+# Loads a module into the 'main' package, including all the functions the module defines for export
+
+	my @ModBaseList=@_;
+	my $ModBase;
+	foreach $ModBase (@ModBaseList) {
+		$ModBase=uc $ModBase;
+		die "ERROR: Can't load \"$ModulePath$ModBase.PM\"\n" unless -e "$ModulePath$ModBase.PM";
+		if ($Mode{Verbose}) {
+			print "Loading Module: \"",$ModBase,".PM\"\n";
+		}
+		package main;
+		require $ModBase.".PM" or die "ERROR: Can't load function from \"$ModulePath$ModBase.PM\"\n";
+		my $Package=ucfirst lc $ModBase;
+		$Package->import;
+	}
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/output.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,110 @@
+# 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:
+# Text formatting module
+# 
+#
+
+package Output;
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	OutSetLength OutSetPostWrap OutFormat Output
+	OutText
+);
+
+
+
+my $Len=80;
+my $PreWrap="\\";
+my $PreWrapLen=length($PreWrap);
+my $PostWrap=' ';
+my $PostWrapLen=length($PostWrap);
+my $Buf='';
+my $Text='';
+
+sub OutSetLength ($) {
+	if ($_[0]) {
+		$Len=$_[0];
+		return $Len;
+	}
+	$Len=80;
+}
+
+sub OutSetPreWrap ($) {
+	$PreWrap=$_[0];
+	$PreWrapLen=length($PreWrap);
+}
+
+sub OutSetPostWrap ($) {
+	$PostWrap=$_[0];
+	$PostWrapLen=length($PostWrap);
+}
+
+sub OutFormat (@) {
+	my $Item;
+	foreach $Item (@_) {
+		$Buf.=$Item;
+	}
+}
+
+sub OutWrite () {
+	my @Buf=();
+	my $CurLen=0;
+	if ($Buf=~/^(\s)/o) {
+		# output any starting spaces or tabs
+		$Text.=$1;
+		$CurLen=length($1);
+	}
+	while ($Buf=~/([^ "\t\n\r\f]*"[^"\t\n\r\f]+"[^ "\t\n\r\f]*|[^ "\t\n\r\f]+)/go) {
+		# get the elements of $Buf into @Buf
+		push @Buf, $1;
+	}
+	$Buf='';
+	my $Elem;
+	foreach $Elem (@Buf) {
+		my $ElemLen=length($Elem);
+		if (($CurLen+$ElemLen+$PreWrapLen) > $Len) {
+			# $Len doesn't account for the newline character
+			# wrap the line if adding another element will take it over the prescribed length
+			$Text.="$PreWrap\n$PostWrap";
+			$CurLen=$PostWrapLen;
+		}
+		elsif ($CurLen>$PostWrapLen) {
+			# add a space to the line if they're are already elements in the line
+			$Text.=' ';
+			$CurLen++;
+		}
+		# add element to the line
+		$Text.=$Elem;
+		$CurLen+=$ElemLen;
+	}
+	# finish with a newline
+	$Text.="\n";
+}
+
+sub Output (@) {
+	OutWrite if $Buf;	# output the formatted text before doing any more output
+	my $Item;
+	foreach $Item (@_) {
+		$Text.=$Item;
+	}
+}
+
+sub OutText () {
+	my $temp=$Text;
+	$Text='';
+	$temp;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/pathutl.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,384 @@
+# 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:
+# General Path and File Utility Functions for use with Makmake
+# Distinguish paths from filepaths by assuming paths end with "\"
+# therefore ensure this is the case for all paths coming into programs using this module
+# 
+#
+
+package Pathutl;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	Path_SetVerbose Path_Drive Path_WorkPath Path_RltToWork Path_AbsToWork
+	Path_DelFiles Path_Split Path_Dirs Path_StepDirs Path_Strip 
+	Path_MakePathL Path_UpToRoot Path_MakeRlt Path_MakeAbs Path_Chop
+	Path_MakeEAbs Path_Quote Path_MakeRltToBase Path_Norm Path_PrefixWithDrive Path_PrefixWithDriveAndQuote
+);
+
+use Cwd;
+use File::Path;                # for mkpath
+
+my %Mode=(
+	Verbose=>0
+);
+my $Drive;
+my $WorkPath;
+my @WorkPathList;
+
+sub Path_SetVerbose () {
+	$Mode{Verbose}=1;
+}
+
+sub Path_Drive () {
+# return the current drive - programs shouldn't change directory if using this module
+	$Drive;
+}
+
+sub Path_WorkPath () {
+# return the current working directory - programs shouldn't change directory if using this module
+	$WorkPath;
+}
+
+sub helper_MakeRlt ($@) {
+# helper function for computing relative path(s) given a base path
+	my ($BaseRef,@List)=@_;
+	foreach my $p (@List) {
+		my $filename=&Path_Split('File',$p);
+		my @plist=&Path_Dirs($p);
+		my $upcount=scalar @{$BaseRef};
+		foreach (@{$BaseRef}) {
+			if (uc $_ ne uc $plist[0]) {
+				last;
+			}
+			$upcount -= 1;
+			shift @plist;
+		}
+		$p="";
+		while ($upcount-->0) {
+			$p .= "..\\";
+		}
+		foreach (@plist) {
+			$p .= "$_\\";
+		}
+		$p=".\\" if ($p eq "");		# ensure a well-formed result if path == work
+		$p .= $filename;
+	}
+	return wantarray ? @List : $List[0];	
+}
+
+sub Path_RltToWork (@) {
+# make a path or list of paths relative to the current working directory
+	my @List=@_;
+	@List=&helper_MakeRlt(\@WorkPathList,@List);
+	return wantarray ? @List : $List[0];
+}
+
+sub Path_MakeRltToBase ($@) {	#args: $_[0] Base $_[1]... list of (Abs FilePath/Path)
+# make a path, or list of paths, relative to a particular directory specified by the first
+# path passed into the function
+	return undef unless $_[0]=~m-(|\\$)-o;	# allow for null value passed in
+	my ($Base,@List)=@_;
+	my @BasePathList=&Path_Dirs($Base);
+	@List=&helper_MakeRlt(\@BasePathList,@List);
+	return wantarray ? @List : $List[0];	
+}
+
+sub Path_AbsToWork (@) {
+# make a path or list of paths relative to the current working directory absolute
+	my @List=@_;
+	@List=&Path_MakeAbs($WorkPath,@List);
+	return wantarray ? @List : $List[0];	
+}
+
+sub Path_DelFiles (@) {
+# delete a list of files
+	my @List=@_;
+	my $File;
+	foreach $File (@List) {
+		if (unlink $File) {
+			if ($Mode{Verbose}) {
+				print "Deleted File: \"$File\"\n";
+			}
+			next;
+		}
+		if ($Mode{Verbose}) {
+			print "Not Found: \"$File\"\n";
+		}
+	}
+}
+
+sub Path_Split ($$) {	#args: $_[0] 'Path' or 'Base' or 'Ext' $_[1] Abs/Rel FilePath/Path
+# return the section of a file path required - Path, Base, Ext or File
+	my ($Sect,$P)=@_;
+
+	return '' if !$P;
+	
+	$Sect= ucfirst lc $Sect;
+	if ($Sect eq 'Path') {
+		if ($P=~/^(.*\\)/o) {
+			return $1;
+		}
+		return '';
+	}
+	if ($Sect eq 'Base') {
+		if ($P=~/\\?([^\\]*?)(\.[^\\\.]*)?$/o) {
+			return $1;
+		}
+		return '';
+	}
+	if ($Sect eq 'Ext') {
+		if ($P=~/(\.[^\\\.]*)$/o) {
+			return $1;
+		}
+		return '';
+	}
+	if ($Sect eq 'File') {
+		if ($P=~/([^\\]*)$/o) {
+			return $1;
+		}
+		return '';
+	}
+	undef;
+}
+
+sub Path_Dirs ($) {	#args: $_[0] Abs FilePath/Path
+# return an ordered list of individual directories that make up a path
+	return undef unless $_[0]=~m-^\\-o;
+	my $P=&Path_Split('Path',$_[0]);
+	return undef unless $P=~s-^(.*)\\$-$1-o;
+	$P=~s-^\\(.*)-$1-o;
+	split /\\/,$P;
+}
+
+sub Path_StepDirs ($) { #args: $_[0] Abs FilePath/Path
+# return an ordered list of paths - starting with the directory in the root directory from the
+# path passed into the function, each subsequent path contains the next directory from the path
+# passed into the function, and the last path is the same as the path passed into the function
+	return undef unless $_[0]=~m-^\\-o;
+	my $P=$_[0];
+	my @Dirs=&Path_Dirs($P);
+	my @StepDirs;
+	my $dir;
+	my $stepDir="\\";
+	foreach $dir (@Dirs) {
+		$stepDir.="$dir\\";
+		push @StepDirs, $stepDir;
+	}
+	@StepDirs;
+}
+
+sub Path_Strip ($) {	#args: $_[0] Abs FilePath/Path
+# Remove excess occurrences of '..' and '.' from a path
+	return undef unless $_[0]=~m-^\\-o;
+	my $P=$_[0];
+	while ($P=~s-\\\.\\-\\-go) { }
+	while ($P=~s-\\(?!\.{2}\\)[^\\]*\\\.{2}(?=\\)--go) { }
+	$P;
+}
+
+sub Path_MakePathL (@) {	#args: @_ list of Abs FilePath/Path
+# make a directory or list of directories
+	my @Paths=@_;
+	my $P;
+	foreach $P (@Paths) { 
+		return undef unless $P=~m-^\\-o;
+		$P=&Path_Split('Path',$P);
+		$P=&Path_Strip($P);
+		$P=~m-(.*)\\-o;
+		if (-d $1) {
+			if ($Mode{'Verbose'}) {
+				print "Existing Path: \"$P\"\n";
+			}
+			next;
+		}
+		mkpath[$P];
+		if ($Mode{'Verbose'}) {
+			print "Created Path: \"$P\"\n";
+		}
+	}
+	return wantarray ? @Paths : $Paths[0];
+}
+
+sub Path_UpToRoot ($) {	#args: $_[0] Abs FilePath/Path
+# return the path that will lead from the directory the path passed into the function
+# specifies back up to the root directory
+	return undef unless $_[0]=~m-^\\-o;
+	my $Path=$_[0];
+	my $UpP;
+	while ($Path=~m-\\-go) {
+		$UpP.="..\\";
+	}
+	undef $Path;
+	$UpP=~s-^(.*)\.\.\\-$1-o;
+	$UpP=".\\" unless $UpP;
+}
+
+sub Path_MakeRlt ($@) {	#args: $_[0] Start UpPath $_[1]... list of (Abs FilePath/Path)
+# make a path, or list of paths, relative to a particular directory specified by the first
+# path passed into the function which leads upwards from a particular directory
+	return undef unless $_[0]=~m-(|\\$)-o;	# allow for null value passed in
+	my ($UpPath,@List)=@_;
+	my $p;
+	foreach $p (@List) {
+		return undef unless $p=~m-^\\-o;
+		$p=~s-^\\(.*)$-$1-o;
+		$p=$UpPath.$p;
+	}
+	return wantarray ? @List : $List[0];	
+}
+
+sub Path_MakeAbs ($@) {	#args: $_[0] Start Abs FilePath/Path $_[1]... list of (Abs/Rel FilePath/Path)
+# make a path, or list of paths, absolute given the directory specified by the first path
+# passed into the function which the other paths passed into the function are assumed to be
+# relative to
+	return undef unless $_[0]=~m-^\\-o;
+	my ($Path,@List)=@_;
+	my $BasePath=&Path_Split("Path",$Path);
+	undef $Path;
+	my $p;
+	foreach $p (@List) {
+		if ($p=~m-^\.{2}-o) {
+			$p=&Path_Strip($BasePath.$p);
+			next;
+		}
+		if ($p=~m-^[^\.\\]-o) {
+			$p=&Path_Strip($BasePath.$p);
+			next;
+		}
+		if ($p=~m-^\\-o) {
+			$p=&Path_Strip($p);
+			next;
+		}
+		if ($p=~m-^\.\\(.*)$-o) {
+			$p=&Path_Strip($BasePath.$1);
+			next;
+		}
+		return undef;
+	}
+	return wantarray ? @List : $List[0];
+}
+
+sub Path_MakeEAbs ($@) {	#args: $_[0] Start EPOCPath Abs FilePath/Path $_[1]... list of (Abs/Rel FilePath/Path)
+# Variant of MakAbs which also maps "+\\" to "${EPOCPath}"
+	return undef unless $_[0]=~m-^\\-o;
+	my ($EPOCPath,$Path,@List)=@_;
+	my $BasePath=&Path_Split("Path",$Path);
+	undef $Path;
+	my $p;
+	foreach $p (@List) {
+		if ($p=~m-^\\epoc32\\(.*)$-io) {	# change - special case for existing \\epoc32 references
+			$p=$EPOCPath.$1;
+			next;
+		}
+		if ($p=~m-^\s*\+\\(.*)$-o) {
+			$p=$EPOCPath.$1;
+			next;
+		}
+		if ($p=~m-^\.{2}-o) {
+			$p=&Path_Strip($BasePath.$p);
+			next;
+		}
+		if ($p=~m-^[^\.\\]-o) {
+			$p=$BasePath.$p;
+			next;
+		}
+		if ($p=~m-^\\-o) {
+			next;
+		}
+		if ($p=~m-^\.\\(.*)$-o) {
+			$p=&Path_Strip($BasePath.$1);
+			next;
+		}
+		return undef;
+	}
+	return wantarray ? @List : $List[0];
+}
+
+sub Path_Chop (@) {
+# remove the terminating backslash from a path, or list of paths, if there is one
+	my @List=@_;
+	my $Path;
+	foreach $Path (@List) {
+		$Path=~s-^(.*)\\$-$1-o;
+	}
+	return wantarray ? @List : $List[0];
+}
+
+sub Path_Quote ($) {
+# Quote name for use in GNU makefiles
+	my @List=@_;
+	my $Path;
+	foreach $Path (@List) {
+		$Path=~s- -\\ -go if (defined($Path));
+	}
+	return wantarray ? @List : $List[0];
+}
+
+sub Path_Norm ($) {
+# Normalise source specified paths for processing
+	my ($Path) = @_;
+	$Path =~ s/\//\\/g;
+	return $Path;
+}
+
+sub Path_PrefixWithDrive ($) {
+# Take a path, or list of paths, and prefix with drive based on CWD.
+# Relative paths are just returned.
+	my @List=@_;
+	my $Path;
+	my $Drive=$1 if (cwd =~ /^(.:)/); 
+
+	foreach $Path (@List) {
+		next if ($Path !~ /^\\/);
+		$Path=$Drive.$Path;
+	}
+	
+	return wantarray ? @List : $List[0];
+}
+
+sub Path_PrefixWithDriveAndQuote ($) {
+# Take a path, or list of paths, and prefix with drive based on CWD.
+# Relative paths are just quoted.
+	my @List=@_;
+	my $Path;
+	my $Drive=$1 if (cwd =~ /^(.:)/); 
+
+	foreach $Path (@List) {
+		next if ($Path !~ /^\\/);
+		$Path=$Drive.$Path;
+	}
+
+	foreach $Path (@List) {
+		$Path="\"".$Path."\"";
+	}
+	
+	return wantarray ? @List : $List[0];
+}
+
+
+
+BEGIN {
+# get the current working directory
+	$WorkPath=cwd;
+	$WorkPath=~s-/-\\-go; # separator from Perl 5.005_02+ is forward slash
+	$WorkPath=~s/^(.:)//o;    # remove drive letter
+	$Drive=$1;
+	$WorkPath=~s-^(.*[^\\])$-$1\\-o;        # ensure workpath ends with a backslash
+	@WorkPathList=&Path_Dirs($WorkPath);
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/genutil/prepfile.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,172 @@
+# 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:
+# module for preprocessing makmake-style project files
+# 
+#
+
+
+package Prepfile;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	Prepfile_SetVerbose Prepfile_SetUpperCase Prepfile_ProcessL Prepfile_SetCmdOptions
+);
+
+
+use Checkgcc;
+use Pathutl;
+use Preprocessor;
+
+my %Mode=(
+	Verbose=>0,
+	UpperCase=>0,
+        CmdOptions=>''
+);
+
+sub Prepfile_SetVerbose () {
+	$Mode{Verbose}=1;
+}
+
+sub Prepfile_SetUpperCase () {
+	$Mode{UpperCase}=1;
+}
+
+sub Prepfile_SetCmdOptions ($) {
+        $Mode{CmdOptions} = shift;
+        $Mode{CmdOptions} .= ' ' if $Mode{CmdOptions};
+}
+
+sub Prepfile_ProcessL ($$;$@) {
+# use the C++ preprocessor to process a file.  The function fills the data structure specified
+# by the first argument, an array reference, according to the contents of the second argument -
+# a filehandle.  Any other arguments are assumed to be MACROS and are defined for preprocessing.
+
+	my ($ArrayRef,$FILE,$VariantHRHFile,@Macros)=@_;
+	die "\nERROR: Project File \"$FILE\" not found\n" unless -e $FILE;
+
+	my $exe = &PreprocessorToUseExe();
+ 	my $cpp = "$exe.EXE $Mode{CmdOptions}-undef -nostdinc -+ ";
+	my @CppCall;
+ 	push @CppCall, $cpp;
+
+	push @CppCall, join '',	"-I ",&Path_PrefixWithDriveAndQuote("$ENV{EPOCROOT}epoc32\\include"),
+							" -I .",
+							" -I ",&Path_PrefixWithDriveAndQuote(&Path_Split('Path',$FILE));
+
+	my $Macro;
+	# add CL macros to the CPP call for preprocessing of the file
+	foreach $Macro (@Macros) {
+		$Macro=uc $Macro;					 # add the underscores so we can tell what has been
+		push @CppCall, "-D $Macro=_____$Macro"; # expanded and remove the space CPP puts in most of the time
+	}
+	#if a variant file is used
+	if(defined($VariantHRHFile)){
+        my $variantFilePath = Path_Split('Path',$VariantHRHFile);
+	chop( $variantFilePath );
+        push @CppCall, " -I " . &Path_PrefixWithDriveAndQuote($variantFilePath) . " -include " . &Path_PrefixWithDriveAndQuote($VariantHRHFile); 
+	}
+	# all macros made upper case and suppress user-expansion of macros for nefarious purposes
+
+	push @CppCall, &Path_PrefixWithDriveAndQuote($FILE);
+	if ($Mode{'Verbose'}) {
+		print "@CppCall\n";
+	}
+	my $CPPPIPE;
+	open CPPPIPE,"@CppCall |" or die "ERROR: Can't invoke CPP.EXE\n";
+
+	# read the processed output
+	#--------------------------
+
+	my $LineNum=0;
+	my $FileName;
+	while (<CPPPIPE>) {
+
+		# skip blank lines
+		if (/^\s*$/o) {
+			$LineNum++;
+			next;
+		}
+
+		my @Tmp=();
+
+	    # Process the file information lines that cpp inserts.
+		# (note that we don't currently do anything with the
+		# number cpp sometimes puts out after the filename -
+		# it's something to do with inclusion nesting levels)
+		if (/^# (\d+) "(.*)"( \d+)?/o) {
+			$LineNum = scalar $1;
+			my $CurFile=$2;
+			$CurFile=~s-\\\\-\\-go;
+			$CurFile=~s-\\\/-\\-go;
+			$CurFile=~s-\/\\-\\-go;
+			$CurFile=~s-\/\/-\\-go;
+			$CurFile=~s-\/-\\-go;
+			$CurFile=~s-(.:)--go;
+
+			$CurFile=&Path_AbsToWork($CurFile);
+			@Tmp=('#', $CurFile);
+			push @{$ArrayRef}, [ @Tmp ];
+			next;
+		}
+
+		# Process file data
+		push @Tmp, $LineNum;
+		# get rid of the space that cpp puts in most of the time after macro expansion (CPP help doesn't say exactly when!)
+		# don't upper case everything until you've done this.
+		
+		foreach $Macro (@Macros) {
+			s/\/ _____$Macro /\/$Macro/g;
+			s/_____$Macro /$Macro/g;
+			s/_____$Macro/$Macro/g;
+		}
+		if(/^macro/i)
+		{
+			#Parse and Store the mmp file statement by retaining double quotes
+			while (/("([^\t\n\r\f]+)"|([^ \t\n\r\f]+))/go) {
+			        my $Flag = $2 ? $2 : $3;
+				if($Flag =~ m/\\\"/) { 
+					$Flag =~ s/\"\\/\\/g;
+					$Flag =~ s/\""/\"/g;
+				}
+				push @Tmp, $Flag;
+			}
+		}
+		else
+		{
+			#Parse and Store the mmp file statement by removing double quotes
+			while (/("([^"\t\n\r\f]+)"|([^ "\t\n\r\f]+))/go) {
+				push @Tmp, $2 ? $2 : $3;
+			}
+		}
+		push @{$ArrayRef}, [ @Tmp ];
+		$LineNum++;
+	}		
+
+	if ($Mode{UpperCase}) {
+#		upper-case all the data
+		my $Line;
+		my $Item;
+		foreach $Line (@{$ArrayRef}) {
+			foreach $Item (@$Line) {
+				$Item=uc $Item;
+			}
+		}
+	}
+	close CPPPIPE or die $! ? "ERROR: Error closing $exe.exe pipe ($!)\n\t@CppCall\n"
+ 				: "ERROR: $exe.exe returned non-zero exit status ($?)\n\t@CppCall\n";
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/group/abld.mrp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,10 @@
+component dev_build_sbsv1_abld
+
+source	\src\tools\build\sbsv1\abld
+binary	\src\tools\build\sbsv1\abld\group	all
+exports	\src\tools\build\sbsv1\abld\group
+
+notes_source \component_defs\release.src
+
+ipr T
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/group/bld.inf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,146 @@
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+// 
+//      ******* IMPORTANT CHANGE TO THE CONTENTS OF THIS FILE (2010/02/11) *******
+//
+//      Some of the content of this file has been moved to another bld.inf.
+// 	    (this is in response to http://developer.symbian.org/bugs/show_bug.cgi?id=151)
+//
+//      If you were planning to edit the "buildsystem" exports, e.g.
+//                  TEMPLATE EXTENSION MAKEFILES FOR ABLD
+//      ...then you now need to go to the following bld.inf to make the change.
+//      ../../buildsystem/group/bld.inf
+// 
+//      **** END OF IMPORTANT CHANGE TO THE CONTENTS OF THIS FILE (2010/02/11) ****
+//
+
+
+// ORIGINAL bld.inf contents (e32toolp component) follow
+PRJ_PLATFORMS
+TOOLS2
+
+PRJ_EXPORTS
+
+// Symbian Build System common files
+../e32util/defutl.pm 			/epoc32/tools/Defutl.pm
+../e32util/e32tpver.pm 			/epoc32/tools/E32tpver.pm
+../e32util/efreeze.pl 			/epoc32/tools/efreeze.pl
+../e32util/h2inc.pl 			/epoc32/tools/h2inc.pl
+../e32util/makedef.pl 			/epoc32/tools/makedef.pl
+../e32util/prepdef.pl 			/epoc32/tools/prepdef.pl
+../genutil/pathutl.pm 			/epoc32/tools/Pathutl.pm
+../e32util/createrfifile.pl		/epoc32/tools/createrfifile.pl
+../e32util/gendef.pl 			/epoc32/tools/gendef.pl
+../e32util/set-rvct.bat 		/epoc32/tools/set-rvct.bat
+../e32util/omapsig.pl			/epoc32/tools/omapsig.pl
+../platform/sym_lkup_util.pl		/epoc32/tools/sym_lkup_util.pl
+../platform/ARMV5.mk			/epoc32/tools/compilation_config/ARMV5.mk
+../platform/extractvars.make		/epoc32/tools/compilation_config/extractvars.make
+../platform/GCCE.mk			/epoc32/tools/compilation_config/GCCE.mk
+../genutil/listzip.pl			/epoc32/tools/listzip.pl
+../genutil/conv_khronos_openvg_hdr_to_cpp.pl        /epoc32/tools/conv_khronos_openvg_hdr_to_cpp.pl 
+../genutil/ecopyfile.pl        /epoc32/tools/ecopyfile.pl
+../genutil/conv_khronos_hdr_to_cpp.pl        /epoc32/tools/conv_khronos_hdr_to_cpp.pl  
+../e32util/armasm2as.pl        /epoc32/tools/armasm2as.pl
+../e32util/copyfeaturevariants.pl        /epoc32/tools/copyfeaturevariants.pl 
+
+// BSF files
+../platform/armv6.bsf        /epoc32/tools/armv6.bsf 
+../platform/armv6t2.bsf        /epoc32/tools/armv6t2.bsf 
+../platform/gccev7.bsf        /epoc32/tools/gccev7.bsf 
+../platform/armv5smp.bsf        /epoc32/tools/armv5smp.bsf 
+../platform/armv6smp.bsf        /epoc32/tools/armv6smp.bsf 
+../platform/gccev6t2.bsf        /epoc32/tools/gccev6t2.bsf
+../platform/gccev6.bsf        /epoc32/tools/gccev6.bsf 
+../platform/armv6_abiv1.bsf        /epoc32/tools/armv6_abiv1.bsf 
+../platform/armv7.bsf        /epoc32/tools/armv7.bsf  
+
+#ifdef SBSV2
+#ifndef TOOLS2_LINUX
+// export Symbian Build System v1 in case of no confliction.
+
+../genutil/modload.pm        /epoc32/tools/modload.pm  
+../bldmake/linkdeps.pl        /epoc32/tools/linkdeps.pl  
+../platform/cl_gccxml.pm        /epoc32/tools/cl_gccxml.pm 
+../platform/ide_cw.pm        /epoc32/tools/ide_cw.pm 
+../platform/cl_gcc.pm        /epoc32/tools/cl_gcc.pm 
+../toolinfo/gcce_plat2set.pm        /epoc32/tools/gcce_plat2set.pm 
+../platform/cl_x86gcc.pm        /epoc32/tools/cl_x86gcc.pm 
+../platform/filenamepolicyexclusions.txt        /epoc32/tools/filenamepolicyexclusions.txt 
+../makmake/makdeps.pm        /epoc32/tools/makdeps.pm 
+../e32util/epocmbm.pl        /epoc32/tools/epocmbm.pl 
+../platform/cl_edg.pm        /epoc32/tools/cl_edg.pm 
+../platform/cl_tools.pm        /epoc32/tools/cl_tools.pm 
+../e32util/fixsource.bat        /epoc32/tools/fixsource.bat 
+../platform/cl_generic.pm        /epoc32/tools/cl_generic.pm 
+../platform/e32variant.pm        /epoc32/tools/e32variant.pm 
+../platform/bpabiutl.pm        /epoc32/tools/bpabiutl.pm 
+../genutil/prepfile.pm        /epoc32/tools/prepfile.pm 
+../platform/ide_vc6.pm        /epoc32/tools/ide_vc6.pm 
+../bldmake/bldmake.pl        /epoc32/tools/bldmake.pl 
+../e32util/checkgcc.pm        /epoc32/tools/checkgcc.pm 
+../e32util/epocrc.pl        /epoc32/tools/epocrc.pl 
+../memtrace/memtrace.bat        /epoc32/tools/memtrace.bat 
+../platform/cw_project_template_v3.xml        /epoc32/tools/cw_project_template_v3.xml 
+../bldmake/abld.pl        /epoc32/tools/abld.pl 
+../platform/default_plats.txt        /epoc32/tools/default_plats.txt 
+../platform/e32plat.pm        /epoc32/tools/e32plat.pm 
+../e32util/_secure_e32env.pm        /epoc32/tools/e32env.pm 
+../e32util/deletefeaturevariants.pl        /epoc32/tools/deletefeaturevariants.pl 
+../platform/cw_link_descriptor_template_v2.cwlink        /epoc32/tools/cw_link_descriptor_template_v2.cwlink 
+../makmake/mmp.pm        /epoc32/tools/mmp.pm 
+../genutil/err_formatter.pl        /epoc32/tools/err_formatter.pl 
+../platform/cl_bpabi.pm        /epoc32/tools/cl_bpabi.pm 
+../bldmake/metabld.bat        /epoc32/tools/metabld.bat 
+../e32util/epocrc.bat        /epoc32/tools/epocrc.bat 
+../platform/lockit_info.pm        /epoc32/tools/lockit_info.pm 
+../toolinfo/rvct_plat2set.pm        /epoc32/tools/rvct_plat2set.pm 
+../platform/default_plats_v2.txt        /epoc32/tools/default_plats_v2.txt 
+../platform/cl_x86.pm        /epoc32/tools/cl_x86.pm 
+../platform/cl_mingw.pm        /epoc32/tools/cl_mingw.pm 
+../bldmake/metabld.pl        /epoc32/tools/metabld.pl 
+../e32util/checksource.pl        /epoc32/tools/checksource.pl 
+../makmake/makmake.pl        /epoc32/tools/makmake.pl 
+../platform/findimp.pl        /epoc32/tools/findimp.pl 
+../e32util/checksource.pm        /epoc32/tools/checksource.pm 
+../e32util/genshimsrc.bat        /epoc32/tools/genshimsrc.bat 
+../toolinfo/rvct_ver2set.pm        /epoc32/tools/rvct_ver2set.pm   
+../e32util/selectbootmak.pl        /epoc32/tools/selectbootmak.pl 
+../makmake/makhelp.pm        /epoc32/tools/makhelp.pm 
+../platform/cl_codewarrior.pm        /epoc32/tools/cl_codewarrior.pm 
+../bldmake/wrappermakefile.pm        /epoc32/tools/wrappermakefile.pm 
+../genutil/genutl.pm        /epoc32/tools/genutl.pm 
+../platform/cl_vscw.pm        /epoc32/tools/cl_vscw.pm 
+../e32util/epocaif.pl        /epoc32/tools/epocaif.pl 
+../bldmake/bldmake.bat        /epoc32/tools/bldmake.bat 
+../e32util/listfeaturevariants.pl        /epoc32/tools/listfeaturevariants.pl 
+../memtrace/memtrace.pl        /epoc32/tools/memtrace.pl 
+../genutil/ermdir.pl        /epoc32/tools/ermdir.pl 
+../platform/armutl.pm        /epoc32/tools/armutl.pm 
+../platform/cl_arm.pm        /epoc32/tools/cl_arm.pm 
+../makmake/makmake.bat        /epoc32/tools/makmake.bat 
+../e32util/featurevariantparser.pm        /epoc32/tools/featurevariantparser.pm 
+../makmake/_secure_trgtype.pm        /epoc32/tools/trgtype.pm 
+../genutil/emkdir.pl        /epoc32/tools/emkdir.pl 
+../platform/cw_link_descriptor_template.cwlink        /epoc32/tools/cw_link_descriptor_template.cwlink  
+../genutil/output.pm        /epoc32/tools/output.pm 
+../e32util/efreeze.bat        /epoc32/tools/efreeze.bat 
+../platform/cw_project_template_v4.xml        /epoc32/tools/cw_project_template_v4.xml 
+../platform/fcloggerutl.pm        /epoc32/tools/fcloggerutl.pm 
+../platform/cl_win.pm        /epoc32/tools/cl_win.pm 
+../e32util/featurevariantmap.pm        /epoc32/tools/featurevariantmap.pm 
+../e32util/preprocessor.pm        /epoc32/tools/preprocessor.pm 
+../platform/winutl.pm        /epoc32/tools/winutl.pm 
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/group/build.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,4 @@
+To build e32toolp, call
+
+\e32toolp\group\setupprj.bat
+\e32toolp\group\bld.bat rel
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/group/info.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,184 @@
+SETUPPRJ.BAT
+============
+SETUPPRJ will create a BLD.BAT file in the GROUP directory and
+read the LI.PRJ file in other second-level directories, creating
+a BLD.BAT in each which will provide commands for building any
+.BAT, .PL and .PM files to \epoc32\tools.
+SETUPPRJ will also create \E32TOOLP\GROUP\E32TOOLP.REL
+
+PERLPREP.BAT
+============
+PERLPREP strips "use strict;" debugging lines out
+of .PL and .PM files and perl warning generation -w flag out of .BAT
+files.  It is used for REL builds of E32TOOLP.
+
+RELEASING E32TOOLP
+==================
+make changes to source
+change release.txt - update the date and "made by" details
+add any new files which contain a version number to setver.bat
+(remember perl files can use the service in E32TPVER.PM).
+cd \e32toolp\group
+run setver [version] to apply the latest version number.
+cd \e32toolp
+cvs commit to commit the version changes
+cd \e32toolp\group
+do setupprj to create the batch and .rel file
+do bld clean
+do bld rel
+Prep the tree for release to PVCS:
+cd \
+perl \tools\pvcs-release.pl -f e32toolp
+Tag the modules you're releasing:
+cd \e32toolp
+cvs tag E32TOOLPvNNN
+Move the Latest-Release tag to the new files:
+cvs rtag -d Latest-Release e32toolp
+cvs rtag -r E32TOOLPvNNN Latest-Release e32toolp
+cd \e32toolp\group
+Create a vdiff.lis file with mnt difsrc <previous release>
+do set vcsid=BASETEAM
+do mnt lock  to make sure BASETEAM has the lock for all li.prj files
+do mnt putsrc
+do mnt versrc
+do mnt putrel
+do set vcsid=<your vcsid>
+cd \e32toolp
+Tag the release as complete (on the main branch)
+	cvs tag Release-NNN-complete
+go to the root of a clean drive
+getrel e32toolp tools <version>
+check it basically works - eg bldmake, makmake /mmp
+rd /s /q epoc32
+pgetbld e32toolp group
+setupprj
+bld rel
+mnt valid
+check \e32toolp\valid.lis
+update Lotus Notes
+update tlmakmak.rtf
+
+OTHER INFO
+==========
+CASE SENSITIVITY
+	Perl pattern-matching is twice as quick if it's done case-sensitive - keep
+	all data uppercase except when it's actually being outputted - at that point
+	it  can be formatted by doing something like ucfirst lc ...
+	This is important so that pattern-matching done on data can assume
+	uppercase.
+
+CPP
+	cpp assumes with -M and -MG that missing user headers live in the same directory as the
+	source while missing system headers live in the first system include directory specified.
+	This is not in fact true.  CPP always searches the directory containing the source file
+	for headers if no user include path is specified explicitly.  Then, and only then, if the
+	-MG option is specified to -M cpp will just bang out the missing files without a path,
+	whether or not they exist in the current directory or not.  This means that if cpp is
+	invoked in a makefile, (this probably applies to gcc too), cpp will fail unless these headers
+	without a path exist in the working directory. 
+
+	cpp doesn't replace lines of text within #defines within other #defines 
+	with blank space if the lines aren't applicable for the current set of
+	macros.  This can upset makmake's reporting of correct line numbers for errors.
+
+	cpp documentation states that a space is put at the end of a macro expansion
+	"most of the time".  We need to strip this back out after cpp has done its
+	preprocessing in prepfile.pm.  By expanding macros to themselves with three
+	leading underscores we can tell where a macro has been expanded and strip
+	the space added.
+
+MAKMAKE MODULE DESIGN
+	the IDE/CL modules should provide
+	a complete list of possible build variants and be designed in such a way that a particular
+	implementation would not have to use all the builds if it didn't want to.  I think this
+	will be the case already.  So, for example, if MISA could not do RELGDB the the CL_ARM code
+	should never assume that all builds are required (except DEB or REL, which we must insist upon as a
+	default in some cases).
+
+
+QUOTES IN MAKEFILES
+
+	Must be consistent with quotes round long filenames.  If remove quotes round .in
+	file as a target to appease ar, the target will not be found and relgdb will not
+	build.  It seems that without the quotes the filename is parsed so the leading .\
+	on the front of the relgdb paths no longer makes a difference so rel and relgdb
+	targets are considered the same.  This means that rules for the rel and relgdb .in
+	file, if it is around this target that the quotes are removed, and all subsequent
+	dependencies and rules, will be done for each source file - eg gcc looks like it
+	will be called twice with different flags.  For the relgdb build nmake will complain
+	that it doesn't know how to build the .in file because it sees it as a dependency of
+	the main target with quotes and doesn't recognise it as the same thing appearing later
+	as a target without quotes because the .\ is parsed out.  The rel build doesn't complain
+	because it has no preceding .\ to parse out.  In short, filenames without quotes are parsed and
+	amount to the same thing as filenames with quotes if the only difference between the two is the
+	quotes and not the path itself.
+
+
+COMPILER FLAGS
+==============
+
+ALL BUILDS
+/nologo    - dont display the banner
+/Zp4       - Zp[n] - pack structs on n-byte boundary (whatever that means) /W4        - top level warnings
+/Fo<file>  - specifies object file (left blank so base name taken from .cpp     
+file)
+/c         - compile only, don't link because we'll be linking later
+
+SPECIAL CASES
+
+/ML     - Use run-time library -> Single-threaded       (WINS exe release) /MD     - Use run-time library -> Multi-threaded DLL    (WINS dll release)
+these two flags have "d" appended for debug builds so that the respective debug run-time library is used instead.  These flags are probably unnecessary for all projects not using Win32 libraries but MSVC puts them in by default, and it doesn't do any harm to have them I don't think
+
+/O1     - minimum size optimisation (WINS release)
+/Ob1    - disable inline function expansion (WINS release)  (reason uncertain!)
+
+/Od     - disable optimisations (WINS debug)
+
+/Zi     - generate debugging info into program database (WINS debug)
+
+/FR     - generate browse info (WINS debug)
+
+/Fd<file>     - name program database (WINS debug)
+
+/X      - suppresses searching of include directories specified by environmental
+include variable (so used for all projects not using Win32 services)
+
+
+LINKER FLAGS
+============
+
+ALL BUILDS
+/nologo                 - suppress startup banner /subsystem:windows      - MSVC always puts this in anyway /machine:IX86           - ditto
+/out:<file>             - specifies filename for target /WARN:3                 - top-level warnings
+/nodefaultlib           - don't use Win32 libraries (if any are being used then 
+they are listed before this flag and so are not        
+affected by it)
+
+SPECIAL CASES
+/baseaddress:<hex num>  - base address for DLLs, specified by user /entry:"_E32Startup"    - EPOC32 entry point for EXEs /entry:"_E32Dll"        - EPOC32 entry point for DLLs
+
+/incremental:no         - (WINS release) - presumably so a full-link is always  
+performed
+/incremental:yes        - (WINS debug)  - presumably to save time linking-fully 
+when working on a project
+
+/dll                    - (WINS dll targets)
+
+/pdb<file>              - (WINS debug) <file> names program database
+
+/deffile:<file>         - (WINS dll targets) <file> specifies a def file to     
+refer to if one is specified by the user
+
+/implib:<file>          - specifies name of import library to be created for dll
+targets if one is to be created
+
+/debug                  - (WINS debug)  generates debugging information
+
+
+SOURCES OF INFORMATION FOR MAKMAKE ETC
+======================================
+NMAKE Reference in MSVC help
+Cygnus help files in R:\gcc\help - eg cpp.hlp
+Lotus notes - Epoc Software Design - Development Environment - suggestions
+for better build procedures
+Perl newsgroups
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/group/perlprep.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,58 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+REM a basic perl preprocessor
+
+if exist %0.bat perl -x %0.bat %1 %2 %3 %4 %5
+if exist %0 perl -x %0 %1 %2 %3 %4 %5
+GOTO End
+
+#!perl
+
+use strict;
+
+die "Usage:\nPERLPREP [infile] [outfile]\n" unless @ARGV==2;
+
+my ($INFILE, $OUTFILE)=map lc $_, @ARGV;
+die "Can't find $INFILE\n" unless -e $INFILE;
+
+if ($INFILE=~/\.(bat|cmd|pm|pl)$/io) {
+	open INFILE,$INFILE or die "Can't open $INFILE: $!\n";
+	my $FileText='';
+	while (<INFILE>) {
+		s/(perl)(\.exe)?\s+-w/$1$2/io;		# remove perl -w switch - has to be first switch
+		s/use\s+strict;\s*\n//oe;	# remove use strict; statement
+		$FileText.=$_;
+	}
+	close INFILE or die "Can't close $INFILE: $!\n";
+	open OUTFILE,">$OUTFILE" or die "Can't open $OUTFILE: $!\n";
+	print OUTFILE $FileText;
+	close OUTFILE or die "Can't close $OUTFILE: $!\n";
+}
+else {
+	system "copy $INFILE $OUTFILE";
+}
+
+
+__END__
+
+:End
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/group/release.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,3925 @@
+
+<unchange>
+================
+(Made by Zheng Shen 12/06/2010)
+1) minor: enable the following scripts on Linux
+conv_khronos_openvg_hdr_to_cpp.pl
+conv_khronos_hdr_to_cpp.pl
+copyfeaturevariants.pl
+ecopyfile.pl
+armasm2as.pl 
+
+===============
+sym_lkup_util 	version 1.1.0
+listzip 	version 1.1.0
+prepdef 	version 1.1.1
+omapsig 	version 1.1.0
+makedef 	version 1.1.1
+h2inc 		version 1.1.0
+gendef 		version 1.1.0
+createrfifile 	version 1.1.0
+efreeze 	version 1.1.1
+================
+(Made by Marvin Shi 02/06/2010)
+1) change for linux porting
+
+=======
+Version 1.1.0 (efreeze.pl)
+Version 1.1.0 (prepdef.pl)
+Version 1.1.0 (makedef.pl)
+================
+(Made by Lorence Wang 14/05/2010)
+1) Lorence Wang
+  Make efreeze.pl prepdef.pl makedef.pl sym_lkup_util.pl stand alone
+
+Version 0.01.679
+================
+(Made by Zheng Shen 11/02/2009)
+1) Marvin Shi
+	PDEF144284  refine fix for Bug 151 -  bldmake is not in PDK2.0c
+2) Ross Qin
+  PDEF144387  Tools meta files should not be exported in the build phase 
+
+Version 0.01.678
+================
+(Made by Zheng Shen 8/02/2009)
+1) Brook Hong
+	PDEF144276  Excess warnings from makedef.pl 
+2) Marvin Shi
+  PDEF144257  Add libWFC and WF to case check exclusions 
+
+Version 0.01.676
+================
+(Made by Marvin Shi 3/02/2010)
+1) Marvin Shi
+	PDEF144099 Missing vmap files when using symbian binary variantion 
+
+Version 0.01.675
+================
+(Made by Marvin Shi 18/01/2010)
+1) Marvin Shi
+	DEF143085  Bug 151 - bldmake is not in PDK2.0c 
+
+Version 0.01.674
+================
+(Made by Zheng Shen 16/12/2009)
+1) Marvin Shi
+	DEF143406  symbian BV build failed for feature variant target build 
+
+Version 0.01.673
+================
+(Made by Marvin Shi 25/11/2009)
+1) Yan Jin
+	DEF143140  Toolsmod integrate to ABLD
+2) Zheng Shen
+	DEF143198  ABLD cannot build STD project when standard C++ support is not available 
+	
+Version 0.01.672
+================
+(Made by Marvin Shi 13/11/2009)
+1) Zheng Shen
+  DEF143038 ABLD is in poor performance on feature variant handling
+2) Marvin Shi
+  DEF142311  SBSv1 hangs when building for GCCE if RVCT license server not available 
+ 	
+Version 0.01.671
+================
+(Made by Vino Jose 24/09/2009)
+
+1) VincentF
+	DEF142155 h2inc.pl produces wrong output with 64-bit Perl
+
+Version 0.01.670
+================
+(Made by Ross Qin, 15/09/2009)
+1) Yan Jin
+	PDEF142025 ABLD LIBRARY ARMV6 does not get exported correct to ARMV6 folder 
+
+Version 0.01.669
+================
+(Made by Ross Qin, 11/09/2009)
+1) Zheng Shen
+	DEF142005 Remove the hardcode RVCT path when RVCT auto switch feature is disabled
+
+Version 0.01.668
+================
+(Made by Zhi Dou, 24/08/2009)
+1) Marvin Shi
+	DEF141643 boost library integration causes dependency warning
+
+Version 0.01.667
+================
+(Made by Zhi Dou, 13/07/2009)
+1) Marvin Shi
+	PDEF138235 [StrayScanner]GCCXML build macros out-of-date 
+
+Version 0.01.666
+================
+(Made by JohnS, 24/02/2009)
+1) MichaelMoate
+	DEF135478 tools_e32toolp.mrp is missing entries for naviengine extension makefiles
+
+Version 0.01.665
+================
+(Made by SivashankarN, 14/11/2008)
+1) Dan Handley
+	DEF128540 Building for the x86gcc platform by default!
+
+Version 0.01.664
+================
+(Made by Kun Xu, 17/06/2008)
+1) Kun Xu
+	PDEF122710 Problems in cl_bpabi.pm impacting Java builds.
+	PDEF123589 ARMV6 BSF handled incorrectly in tools.
+
+Version 0.01.663
+================
+(Made by ParameshwariB, 23/05/2008)
+1) TomCosgrove
+	DEF123134: X86 GCC only: Don't delete the PE-COFF files; they are needed by GDB
+
+Version 0.01.662
+================
+(Made by William Roberts, 22/04/2008)
+1) William Roberts
+	Move make.exe and scpp.exe into e32toolp\binutils directory, and
+	add zip files of the matching source code, comply with the GPL license
+	Adjust setupprj.bat and bld.inf accordingly.
+
+Version 0.01.662
+================
+(Made by Iain Williamson, 08/04/2008)
+1) Iain Williamson
+	GT0367 MS3.2.1 DS781 PREQ1902: Product Creation Tools: Kit Information File
+
+Version 0.01.661
+================
+(Made by Jon Chatten, 06/02/2008)
+1) Jon Chatten
+	DEF117441: SBSv2 - e32toolp should support .rfi generation for GCCXML builds
+
+Version 0.01.660
+================
+(Made by Jon Chatten, 17/01/2008)
+1) Jon Chatten
+	DEF116424: ABLD should ignore the DEPENDS keyword in .mmp file START RESOURCE blocks
+
+Version 0.01.659
+================
+(Made by Peter Harper, 20/12/2007)
+1) Peter Harper
+	CR1234: Product Usability: Fix Symbian's Binary Variation Solution
+	Needs new verion of GCC CPP (Symbian build 548)
+
+Version 0.01.658
+================
+(Made by Jon Coppeard, 15/11/2007)
+1) Jon Coppeard
+	DEF114126: maksym can be speeded up
+
+Version 0.01.657
+================
+(Made by Mool Chand Tyagi, 12/10/2007)
+1) Mool Chand Tyagi
+	PREQ1338: Supporting Static analysis tool in ABLD
+
+Version 0.01.656
+================
+(Made by Saravana KumarP, 27/09/2007)
+1) Saravana KumarP
+	PREQ1801: Feature Manager supporting tool enhancements
+
+Version 0.01.655
+================
+(Made by YiluZhu, 29/08/2007)
+1) YiluZhu
+	DEF110344: [TCL Build]:Warnings related to tools_sdb in DP00005 
+
+Version 0.01.654
+================
+(Made by AndrewSmi, 09/08/2007)
+1) AndrewSmi
+	DEF110094: Run mode debug: debuggable keyword not supported for armv5_abiv1 in MCL
+
+Version 0.01.653
+================
+(Made by Stephen Mansfield 22/08/2007)
+1) stephenm
+    DEF110923: Add new PLUGIN3 target type for EC43 ECOM Interface Extensions
+
+Version 0.01.652
+================
+(Made by Saurabh, 6/08/2007)
+1) Saurabh
+	PDEF107553: Symbian should treat wchar_t as default datatype for OETYPE building any project. 
+
+Version 0.01.651
+================
+(Made by Madhu, 20/07/2007)
+1) Madhu
+	PDEF109271: maksym sometimes ignores ctors & dtors in preference to "sub_objects". 
+
+Version 0.01.650
+================
+(Made by Andrew Haigh, 17/05/2007)
+1) AndrewHaigh
+	PREQ1426: Added support for DEBUGGABLE MMP keyword.
+
+
+================
+(Made by Dusko,  12/12/2006)
+1) Dusko
+	PDEF096684: RF LOCAL_BUILD_PATH is causing build problems with RVCT but works with WINSCW
+
+Version 0.01.648
+================
+(Made by Dusko,  24/11/2006)
+1) KunalM
+	DEF097985  - TOOLS2 build platform doesn't provide the advertised macros correctly
+
+Version 0.01.647
+================
+(Made by Kunal,  08/11/2006)
+1) KunalM
+   PREQ1182 - GNU Make-based build system
+   MS3.6 DS .425 	
+
+Version 0.01.646
+================
+(Made by Dusko,  06/11/2006)
+1) JonC
+   PDEF096296 - Build system generated paths/files don't all comply with the Filename Policy
+
+Version 0.01.645
+================
+(Made by Dusko,  11/10/2006)
+1) Dusko
+DEF093326: MAKSYMROFS.PL broken by changes to rofsbuild log format
+
+Version 0.01.644
+================
+(Made by Dusko,  27/09/2006)
+1) JohanG
+	DEF090303: TARGETTYPE LIB should not permit additional LIBRARY statements.
+
+Version 0.01.643
+================
+(Made by Dusko,  12/09/2006)
+1) JonC
+	Fix for DEF093939 - "abld -checksource" benign warnings are picked up by SCANLOG.
+
+Version 0.01.642
+================
+(Made by Srinivaskv,  11/09/2006)
+1)Srinivaskv
+        BR1874.1 The Instcol.exe build utility is no longer useful as there is no need to deal with black and white screens.Hence this legacy tool should be removed.
+
+Version 0.01.641
+================
+(Made by Dusko,  05/09/2006)
+1) Dusko
+	DEF093365 abld reallyclean not working for h2 
+	INC090726 Failure to replace zip files in abld export if existing files have later times  
+2)	JonC
+	DEF093291 - "abld -checksource" ignores WIN32_LIBRARY statements
+	DEF093289: FIXSOURCE doesn't deal with exclusion list entries correctly
+	
+Version 0.01.640
+================
+(Made by JonathanM,  01/09/2006)
+1) AttilaV
+	DEF091560 Warning when using PAGED keyword in MMP file
+
+Version 0.01.639
+================
+(Made by JonC,  09/08/2006)
+1) JonC
+	Oghma,GT0312,MS3.1 DS.188 - PREQ1182: System-wide: Application of Filename Policy to production build 
+
+Version 0.01.638
+================
+(Made by Dusko,  31/07/2006)
+1) Dusko
+	PDEF087907: Size of compiled resource file is limited up to 64KB
+
+Version 0.01.637
+================
+(Made by Dusko,  25/07/2006)
+1) Dusko
+	INC088496 .c files are compiled with -c90 even if -cpp is specified in the OPTIONS list
+2) JohanG 
+	PDEF090318 Targetpath cases need to match
+3)	JonC
+	DEF088256 CW >=3.1 IDE builds and multiple LANG statements - brok
+
+Version 0.01.636
+================
+(Made by Dusko, 20/07/2006)
+1) Jon Chatten 
+	DEF090302  PRJ_EXPORTS sections in bld.inf files don't support local relative destinations	
+
+
+Version 0.01.635
+================
+(Made by Dusko,  23/06/2006)
+1) Dusko
+	INC088374 Catalogs_3.1 does not compile on S60 3.1 build robot (SOS 9.2 wk24)	
+
+Version 0.01.634
+================
+(Made by Dusko,  23/06/2006)
+1) Rajeswari Rajan
+	INC087802: GCCE Linker can't handle dependencies correctly with -O2 optimization
+
+Version 0.01.633
+================
+(Made by Dusko, 19/06/2006)
+1) JohanG
+	DEF067717: printsym.pl doesn't show DLL name for DLLs without symbols
+
+Version 0.01.632
+================
+(Made by Dusko, 15/06/2006)
+1) JohanG
+	DEF066625: MMP XML files have wrong name to fixes branch.
+	DEF087354: abld makefile - dependencies don't work for user header files
+	DEF087077 S60 3.0: GCCE Compiler/Linker will not link static libraries with circular depen
+	DEF087811 GCCE build broken - elf2e32 not update
+	DEF080212 Extension makefile setupprj step doesn't work if Cygwin is in the path
+	DEF086001 cl_bpabi: reorder the list of linked static libraries to support gcce compiler
+
+2) Dusko 
+	PDEF087156 evalid doesn't ignore RCS tags in header files 
+
+3) SatyakamM
+	DEF087646 Broken MakHelp.pm in MCL 
+
+Version 0.01.631
+================
+(Made by DavidM, 26/05/2006)
+
+1.	AttilaV
+	Milestone: Argus,GT0286,MS3.2
+	Extended MAKMAKE (MAKAKE.PL, MMP.PM, CL_ARM.pm, CL_BPAPI.pm, MAKHELP.PM) to handle new compression related MMP keywords and
+	pass the compression parameter to ELFTRAN/ELF3E32 in tha makefiles.
+
+Version 0.01.630
+================
+(Made by Dusko, 31/05/2006)
+1) JohanG
+	DEF087163 cl_gccml.pm corrupts the mmp.xml generated for GXP files (and CDB)
+2) JonC 
+	DEF087148 "abld -check" sensitive to EC MAKE descriptive output 
+
+Version 0.01.629
+================
+(Made by Dusko, 30/05/2006)
+1) SatyakamM
+	DEF083913: efreeze does'nt mark the frozen DATA symbols as DATA
+
+Version 0.01.628
+================
+(Made by Dusko, 25/05/2006)
+1) Dusko
+	DEF073575 "bldmake -v bldfiles" produces incorrect output
+
+Version 0.01.627
+================
+(Made by Dusko, Mon 19/05/2006)
+1) Johan Groth
+	DEF077591 Dependency generation cannot be turned of in Java builds 
+	DEF084331 Can't find produced GCCXML files in some cases
+	DEF066625 MMP XML files have wrong name 
+	DEF078382 MMP: STRINGTABLE doesn't support forward slashed paths 
+ 
+Version 0.01.626
+================
+(Made by Dusko, Mon 08/05/2006)
+1) Dusko
+	INC084690 Bldmake fails when RVCT isn't installed
+
+Version 0.01.625
+================
+(Made by Dusko, 13/04/2006)
+1) Dusko
+	DEF075216 Tools stubs+abld+tranasm doesnt work
+
+Version 0.01.624
+================
+(Made by JonC, 03/04/2006)
+1) JonC
+	INC079605 Build tools path length limitations
+
+Version 0.01.623
+================
+(Made by Dusko, 23/03/2006)
+1) SatyakamM
+	DEF083247 DEF File oddity - MW linker failure 
+
+Version 0.01.622
+================
+(Made by Dusko, 21/03/2006)
+1) Dusko
+	DEF082351: CW IDE GCCE project creation broken...
+
+Version 0.01.621
+================
+(Made by Dusko, 16/03/2006)
+1) Dusko
+	DEF081536: TARGET keyword is still required with TARGETTYPE NONE
+
+Version 0.01.620
+================
+(Made by Dusko, 07/03/2006)
+1) Dusko
+	DEF080983 .dso files are missing 
+	DEF075343 epocrc.pl is ceateing incorrect .INFO files
+	DEF081762 Incorrectly flipping the file extension for STATICLIBS 
+
+
+Version 0.01.619
+================
+(Made by Dusko, 20/02/2006)
+1) Dusko
+	DEF080567 epocrc.bat script only allows 9 parameters 
+	EF080568 Cannot force C++ compile for ARMV5 builds
+	DEF078622 "abld build gccxml" broken.
+
+Version 0.01.618
+================
+(Made by Jonc, 15/02/2006)
+1) JonC
+	DEF080188 START STRINGTABLE doesn't permit use of the temp generated header only
+
+Version 0.01.617
+================
+(Made by Jonc, 30/01/2006 and 03/02/2006)
+1) JonC
+	 PREQ1366 - Prepare codebase for Linux-hosted system build
+	 Argus, GT0282, MS3.6, DS.138, Tight and Loose Integration Extension Makefiles Tools Support
+
+Version 0.01.616
+================
+(Made by Dusko, 05/01/2006)
+
+1)	Dusko
+	INC073941: Symbian build tools override "--cpu" ARMCC parameter
+2)	JonC
+	DEF075532 - CR ABEK-6CYHEC has broken EVALID ELF comparisons
+
+Version 0.01.615
+================
+(Made by Dusko, 09/12/2005)
+	1)	Dusko
+		DEF073923 makmake for gcce platform is failing 
+		DEF074514 PRJ_EXPORTS failure when files #included within bld.infs using "/" in paths 
+		DEF074174 VA_* macros cannot be used with GCCE 
+		DEF075224: cl_gccxml.pm does not separate user and system includes 	
+
+Version 0.01.614
+================
+(Made by JonC, 09/12/2005)
+1)	JonC
+	PREQ1366 - Tools changes as a result of filename policy
+	MS3.4 DS.145
+
+Version 0.01.613
+================
+(Made by Dusko, 16/11/2005)
+1)	JonC
+	PREQ1366 - Prepare codebase for Linux-hosted system build
+	MS3.2 DS.138 BR.1718	
+2)	Dusko
+	DEF068711: bldmake bldfiles <platform> failing.
+3)	KuldipN
+	DEF073602 - Problems integrating new compilers into toolchain
+
+Version 0.01.612
+================
+(Made by JonC, 15/11/2005)
+1) JonC
+	 PREQ1366 - Prepare codebase for Linux-hosted system build
+	 MS3.1 DS.140 BR.1683.1
+
+Version 0.01.611
+================
+(Made by MichaelMo, 08/11/2005)
+
+1) JonCo
+	 DEF071838: Fixupsym.pl can't cope with folders containing "." in their names
+
+Version 0.01.610
+================
+(Made by Dusko, 04/11/2005)
+1) Dusko
+	DEF072548 Tools stubs+abld+def2dll doesn't work
+
+Version 0.01.609
+================
+(Made by KuldipN, 12/10/2005)
+1) KuldipN
+	PREQ1028 - Plug-in compiler integration (DS 063)
+
+Version 0.01.607
+================
+(Made by Dusko, 15/09/2005)
+1) Dusko
+	DEF068226: CW IDE resource builds don't reflect MMP "START RESOURCE" ordering...   
+	DEF068229: CodeWarrior does not list .inl files in its file listing
+
+Version 0.01.606
+(Made by AndrewSmi, 07/09/2005)
+1) AndrewSmi
+	DEF062651 - RComp compiles erronously omitted structs
+	INC061459 - RCOMP is not warning about identifiers being used as strings
+
+Version 0.01.605
+================
+(Made by KuldipN, 06/09/2005)
+1) KuldipN
+	PREQ1028 - Plug-in compiler integration
+
+Version 0.01.604
+================
+(Made by JonC, 05/09/2005)
+1) JonC
+	MINOR_CHANGE - Addition of non-default EDG MAKMAKE backend.
+
+Version 0.01.603
+================
+(Made by Dusko, 19/08/2005)
+1) Dusko
+	DEF066617: OPTION in MMP files for Symbian 9 does not support GCCE.
+
+Version 0.01.602
+================
+(Made by Dusko, 12/08/2005)
+1) Dusko
+	DEF065225 ARMV5 IDE builds differ from their command line counterparts... 
+	DEF066431 Debugging button not available on some targets because bad default setting
+	DEF065954 CodeWarrior Complains about rss files not being included in the project 
+	DEF066129 Make defect has potential to causes failure in MCL 
+
+Version 0.01.601
+================
+(Made by MaximK, 05/08/2005)
+1) RichardCo
+	MINOR_CHANGE: Add optional dir section to metabld mbc file parsing, to aid Base builds.
+
+Version 0.01.600
+================
+(Made by Dusko, 28/07/2005)
+1) Dusko
+	DEF065839 [System Build] BLDMAKE fails to find ARM Version number 
+
+Version 0.01.599
+================
+(Made by JonC, 21/07/2005)
+1) JonC
+      PREQ1032 Hardware-dependent support for "VFP" floating point acceleration and accelerated maths functions
+
+Version 0.01.598
+================
+(Made by Dusko, 15/07/2005)
+1) Marcel
+	TOOLS03801: CodeWarrior Tool back Cannot build Winscw targets if ABIV2 is selected
+
+Version 0.01.597
+================
+(Made by Dusko, 13/07/2005)
+1) Dusko
+	DEF065018 bldmake calls armcc more often than needed 
+	DEF064902 SYM files are not copied into the release directory
+
+Version 0.01.596
+================
+(Made by Dusko, 01/07/2005)
+1) Dusko
+	DEF064173 secdump.exe blows up when you try and use it 
+
+Version 0.01.595
+================
+(Made by Dusko, 29/06/2005)
+1) Dusko
+	DEF064083 Cannot build ARMV5 Target in CodeWarrior starting with build 03635.01 
+	DEF063878 Recognition of C-style trigraphs is not enabled on WINSCW 
+
+Version 0.01.594
+================
+(Made by KuldipN, 22/06/2005)
+1) KuldipN
+	DEF060825  PR0104: Addition of GCCE support to CodeWarrior
+
+Version 0.01.593
+================
+(Made by KuldipN, 15/06/2005)
+1) KuldipN
+	DEF062125  PR104: Custom DLL generation is failing 
+
+Version 0.01.592
+================
+(Made by Dusko, 10/06/2005)
+1) Dusko
+	DEF060666 bldmake.pl checks armv5 compiler version for every "bldmake bldfiles"
+	DEF062217 ARMv4 build broken / --noscanlib should be re-enabled
+	DEF061950 fixupsym passed incorrect parameter to armlink?
+	DEF056540 CW IDE 9.1 builds shouldn't have ARM4 as a default build platform...
+
+Version 0.01.591
+================
+(Made by KuldipN, 27/05/2005)
+1) KuldipN
+      PREQ413   Changes to support the GCCE toolchain.
+      PREQ414   Enable Commercial Compatible Compilers
+      DEF061420 Elf2e32 Problems
+
+Version 0.01.590
+================
+(Made by Dusko, 20/05/2005)
+1) Dusko
+      DEF060878 Abld escapes space characters
+
+Version 0.01.589
+================
+(Made by ChetanaK, 20/05/2005)
+1) Chetana
+	PREQ834 - ARMV6 support in ABIV2 mode.
+
+Version 0.01.588
+================
+(Made by Dusko, 12/05/2005)
+1) Dusko
+         DEF059351 CHANGES TO CW DEFAULT PROJECT IMPORT TEMPALTES NEEDED TO PROGRESS SEMC FIX 
+
+Version 0.01.587
+================
+(Made by KuldipN, 11/05/2005)
+1) KuldipN
+         DEF060826 - PR0104 - PostLinker Memory Leaks
+
+Version 0.01.586
+================
+(Made by Dusko, 10/05/2005)
+1) BalaT
+	DEF061079 EXPORTUNFROZEN fails to create .lib files 
+
+Version 0.01.585
+================
+(Made by KuldipN, 3/05/2005)
+1) KuldipN
+	PREQ413 Changes to support the GCCE toolchain.
+
+Version 0.01.584
+================
+(Made by Dusko, 27/04/2005)
+1) Dusko
+	INC057221 (Tool chain) Log system messages
+    DEF059345 abld.pl incorrectly lists armv5 twice on 'abld help'
+    INC057946 Should be able to conditionally include code for a platform added via a BSF file 
+    INC058044 Symbian should define ECOM_PLUGIN_UDEB 
+
+
+Version 0.01.583
+================
+(Made by BalaT, 14/04/2005)
+1) BalaT
+	DEF058405 : Linker error when building components in CodeWarrior using RVCT 2.2
+
+Version 0.01.582
+================
+(Made by JonathanM, 24/03/2005)
+1) JonathanM
+	DEF058113: Problem when building within the CW IDE 3.0
+2) AndrewR
+	DEF058129: CW unnecessarily intercepts Win32 exceptions
+3) WilliamRo
+	DEF058094 : e32toolp setupprj.bat should always install the "secure" files. 
+
+Version 0.01.581
+================
+(Made by JonC, 18/03/2005)
+1) JonC
+	DEF057405 : ARMv5 build fails with a command line which is too long 
+
+Version 0.01.580
+================
+(Made by Bala, 18/03/2005)
+1) Bala
+	DEF057008 : RVCT2.2 leading edge build fails with errors in base/coreldr files.
+
+Version 0.01.579
+================
+(Made by Bala, 10/03/2005)
+1) Bala
+	DEF056929 : [System Build] ARMv5 errors in build 03514 (9.1)
+
+Version 0.01.578
+================
+(Made by Dusko 09/03/2005)
+1) Dusko
+	DEF054844 - The cwlink files has the command -noimplib attached to its parameter without a s.
+	DEF054512 - fixupsyms.pl on CEDAR does not support RVCT.
+2) Bala
+    DEF056440 - CodeWarrior ARMV5 linking fails 
+
+
+Version 0.01.577
+================
+(Made by Bala, 09/03/2005)
+1) Bala
+	PREQ1027 Submission of some enhancements for RVCT 2.2 Run-Time ABI Compliance to MCL
+
+Version 0.01.576
+================
+(Made by ..., xx/yy/2005)
+1) AndrewR
+	MINOR_CHANGE: Fix link32 command generation in ide_vc6.pm
+
+Version 0.01.575
+================
+(Made by DjordjeK, 21/02/2005)
+1) AndrewR
+	MINOR_CHANGE: Add __SUPPORT_CPP_EXCEPTIONS__ to MS-Dev workspaces
+
+Version 0.01.574
+================
+(Made by Bala, 22/02/2005)
+1) Bala
+	PREQ1027 Submission of RVCT 2.2 Run-Time ABI Compliance to MCL
+
+Version 0.01.573
+================
+(Made by Dusko, 21/02/2005)
+1) Dusko
+	DEF055405 GCCXML fails for projects with more than 150 source files
+
+Version 0.01.572
+================
+(Made by CarlosF, 15/02/2005)
+1) AndrewR
+	MINOR_CHANGE: Fix MS-Dev workspace generation
+
+Version 0.01.571
+================
+(Made by Dusko, 14/02/2005)
+1) Dusko
+	DEF054764 Cannot turn off compression on executables built on EKA2, armv5 platform.
+
+Version 0.01.570
+================
+(Made by ChetanaK, 09/02/2005)
+1) Chetana
+	PREQ834 and PREQ835 - ARMV6 support
+
+Version 0.01.569
+================
+(Made by Dusko, 24/01/2005)
+1) Dusko
+	DEF054203 ABLD LISTING is broken for ARMV5 
+
+Version 0.01.568
+================
+(Made by Dusko, 19/01/2005)
+1) Dusko
+	DEF051245 - Some Base components won't build for ARMV5 within the OEM3.0 IDE
+	DEF052081 - abld listing on ARMV5 doesn't include code addresses
+
+Version 0.01.567
+================
+(Made by Dusko, 18/01/2005)
+1) Dusko
+	DEF052948 - GCCXML Remarks caused by CM concurrency problems.
+
+Version 0.01.566
+================
+(Made by Dusko, 20/12/2004)
+1) Dusko
+	DEF052149 - ABLD output is incorrectly ordered when output is redirected to a file
+	DEF052588 - Problems building test code - case sensitive tools? 
+
+Version 0.01.565
+================
+(Made by Dusko, 20/12/2004)
+1) Dusko
+	1) INC052330 - Problems building AIF files 
+	2) DEF052182 - Local project header file inclusion in CW IDE projects doesn't always work...
+	3) DEF051361 - Remove CTPKG from trgtype.pm file
+
+Version 0.01.564
+================
+(Made by Dusko, 06/12/2004)
+1) Dusko
+	Reverting changes introduced by cln 468659.
+
+Version 0.01.563
+================
+(Made by Dusko, 03/12/2004)
+1) Dusko
+	1) DEF052428 - [System Build]: CBR (make.exe) errors in 03431 builds
+
+Version 0.01.562
+================
+(Made by Dusko, 02/12/2004)
+
+1) Dusko
+	1) DEF052149 - ABLD output is incorrectly ordered when output is redirected to a file
+	2) DEF052182 - Local project header file inclusion in CW IDE projects doesn't always work...
+	3) DEF051361 - Remove CTPKG from trgtype.pm file
+2) BalaT
+	1) DEF050507 - GNU Make Errors in Windows Application Event Log
+
+
+Version 0.01.561
+================
+(Made by JonathanM, 29/11/2004)
+
+1)	JonathanM
+	1)	Add 2 new capabilities SurroundingsDD and UserEnvironment.
+		Part of Change Request CDRS-65RK9F
+
+Version 0.01.560
+================
+(Made by Dusko, 23/11/2004)
+1) BalaT
+	1) DEF051128 - armv5 library build in parallel cause conflicts
+
+2) Dusko
+	1) DEF051237 - bldmake should not include "arm4" in the default list of platforms for 9..0
+	2) DEF051838 - BLDMAKE error if two :zip exports refer to the same directory
+	3) DEF051383 - ARMV5 command line builds can fail with a "via" file buffer over-run
+
+3) Jon 
+	1) DEF051947 - SystemPath is not set when building for CW_IDE:ARM4
+
+
+1) WilliamRo
+	1)	Removed the migration note for MMP files which don't have a VENDORID
+		This has served its purpose, but is now confusing 3rd parties who think
+		that they should apply for a vendor ID - in fact they shouldn't, because this
+		is a compromise mechanism for licensees to use instead of securing some of
+		their APIs. Only signed SIS files are allowed to include vendor IDs.
+		To check a ROM for vendor ID values, look for "Vendor ID:" in the ROMBUILD
+		log file.
+		
+Version 0.01.559
+================
+(Made by JonC, 17/11/2004)
+
+	Yankee,PR0102,MS3.6 (PREQ 417 partial) CW miscellaneous updates
+	MINOR_CHANGE Update to e32toolp CW IDE tests, version and release notes.
+
+Version 0.01.558
+================
+(Made by Dusko, 08/11/2004)
+1) BalaT
+	1) FIX for DEF051333 - [System Build] Makmake plugins don't pass SystemTargetType to makedef
+
+Version 0.01.557
+================
+(Made by Dusko, 05/11/2004)
+1) BalaT
+	1) DEF047267 - NTT - App-services\alarmserver TRepeatdefinitions udeb fails
+	2) DEF044048 - RVCT version of DEF2DLL camplains about DLLs not having exports 
+2) Dusko 	
+	1) DEF048405 - FPU flags cannot be over ridden from the MMP files, for VFP support.
+
+Version 0.01.556
+================
+(Made by Dusko, 25/10/2004)
+1) JonC
+	1) DEF050428 - __PRODUCT_INCLUDE__ set when it shouldn't be for Codewarrior ARMV5 builds
+	2) DEF050463 - CW IDE WINSCW builds can ignore "Symbian Linker | Additional Command Line:" 
+2) Dusko 	
+	1) DEF049913 - Buildtools dependency on link.exe for 8.1b/9.0 
+
+Version 0.01.555
+================
+(Made by xxx, yy/zz/2004)
+
+1) AndrewR
+	1)	DEF049659 - ARMV5 Compile of EXPORTUNFROZEN MMPs fails to create internal DEF file.
+
+
+Version 0.01.554
+================
+(Made by Dusko, 08/10/2004)
+1) JonC
+	1) DEF049860 - MAKMAKE doesn't fully support CW OEM3.0 
+
+2) BallaT
+	1) DEF049659 - ARMV5 Compile of EXPORTUNFROZEN MMPs fails to create internal DEF file.
+
+	
+Version 0.01.553
+================
+(Made by Dusko, 04/10/2004)
+1) Dusko 
+	Fixes for:
+	DEF049136 - GCCXML: Missing BMARM .def files reported during build.
+	DEF048405 - FPU flags cannot be over ridden from the MMP files, for VFP support.
+	
+2) JonC
+	DEF049354 ARMv5 falls over if linking too many objects  
+
+Version 0.01.552
+================
+(Made by JonC, 16/09/2004)
+1) Jon 
+	Contributes to implementation of PREQ417 (MS3.4 EABI Plugin)
+	e32toolp support for OEM3.0, including ARMV5 IDE builds. 
+
+
+================
+1) William
+	1)	Add support for "TARGET" in START RESOURCE ... END blocks
+		This supplies the basename for the resource file, in place
+		of the default which is the basename of the source file.
+	2)	Fix DEF048180 - engdoc should be excluded from tools_e32toolp
+	3)	Change setupprj.bat so that it verifies the tools_e32toolp.mrp file
+	4)	Change setupprj.bat so that it accepts "secure" as an optional
+		argument. If "secure" is specified, files of the form _secure_xxx
+		are exported as xxx, overriding the (insecure) xxx if it existed.
+
+Version 0.01.551
+================
+(Made by AndreBr, 27/08/2004)
+1) Andre 
+    DEF048272  GCCXML: Makefiles aren't building for 9.0 
+
+
+Version 0.01.550
+================
+(Made by MichaelP, 27/08/2004)
+
+1)	JonathanM
+	1)	MINOR CHANGE: Changed MMP.PL to not issue a warning for an incorrect second UID
+		when this UID is 0x01111111'. This allows test code to deliberately set an
+		incorrect UID.
+
+
+Version 0.01.549
+================
+(Made by KuldipN, 24/08/2004)
+
+1) Dusko & Andre
+	DEF047480  GCCXML: Reference EABI .def files in MMPXML. 
+	DEF047585  GCCXML: Include .def file in GXP Files 
+	DEF047903  GCCXML Platform Doesn't exist when pre-processing bld.inf
+	DEF047413 - Bldmake.pl produces and error that is not Scanlog compatibl
+	DEF047918  Gccxml abld -v -k target problem 
+	DEF047256  ABLD REALLYCLEAN only cleans up the epoc32\build tree 
+	DEF047939  GCCXML: Malformed MMPXML file in GXP 
+
+	MINOR_CHANGE
+	Update of the components used in the automated IDE tests.
+
+Version 0.01.548
+================
+(Made by KuldipN, 5/08/2004)
+	Rolled back to previous version of make to remove fix for
+	DEF046967  Build Errors: Java Build Problems  
+
+Version 0.01.547
+================
+(Made by KuldipN, 27/07/2004)
+
+1) Dusko 
+	1) DEF044958 - some build files are not erased by "abld clean" and "abld reallyclean"  
+	2) DEF046923 Makefile errors with GCCXML build target.
+	3) DEF046922 abld gccxml target ignores EPOCROOT. 
+2) Nahid
+	1) DEF046576 - mmp.pm doesn't produce scanlog compatabile output.
+	2) DEF045994 - Edll.lib in mmp causes CW Warning Messages
+3) Kuldip
+	1) INC046929 - Problem with emkdir.pl - directories not being made
+	2) DEF046967  Build Errors: Java Build Problems  
+
+Version 0.01.546
+================
+(Made by JonC, 12/07/2004)
+
+1) Jon 
+	1) Fix for DEF046739  BUILD ERRORS 8.1b - Build 03313.
+	   As a result, the following fixes are reverted:
+		1) Fix for DEF046732 - \epoc32\build MRP based location breaks test script assumptions.
+		2) Fix for DEF046538 - Build tools fail with very long pathnames.
+		3) Fix for DEF044958 - Some build files are not erased by "abld clean" and "abld reallyclean".
+		4) Fix for DEF046408 - Tools should warn if non-supported RVCT will be used in ARMV5 builds.
+
+Version 0.01.545
+================
+(Made by JonC, 09/07/2004)
+
+1) Jon 
+	1) Fix for DEF046732 - \epoc32\build MRP based location breaks test script assumptions.
+
+Version 0.01.544
+================
+(Made by Dusko, 06/07/2004)
+
+1) Dusko 
+	1) Fix for DEF046538 - Build tools fail with very long pathnames.
+	2) Fix for DEF044958 - Some build files are not erased by "abld clean" and "abld reallyclean".
+	3) Fix for DEF046408 - Tools should warn if non-supported RVCT will be used in ARMV5 builds.
+
+Version 0.01.543
+================
+(Made by Gus, 02/07/2004)
+
+1) Dusko 
+	1) Fix for CR...APOS-626C6K   -notest option added to bldmake.
+
+Version 0.01.542
+================
+(Made by Dusko, 23/06/2004)
+
+1) Dusko 
+	1) Fix for DEF044958 - some build files are not erased by "abld clean" and "abld reallyclean".
+2) Jon
+	1) Fix for "DEF045712 - Large projects build within Codewarrior IDE fail to link".
+	   (Comment update).
+
+
+Version 0.01.541
+================
+(Made by GusR, 22/06/2004)
+
+1) Gus 
+	1) 	PR0099 
+	Sierra MS3.4
+	PREQ687 - "Optimized module build (EABI)."
+	
+
+
+Version 0.01.540
+================
+(Made by JonC, 17/06/2004)
+
+1) Jon 
+	1) Fix for "DEF046143 - make.exe should report runtime exceptions in the Windows Event Log"
+
+
+Version 0.01.539
+================
+(Made by Dusko, 15/06/2004)
+
+1) Dusko 
+	1) Fix for DEF044666 - Bldmake unable to cope with makefiles with the same name.
+2) Gus 
+	1) Fix for DEF045445 - No Dependency in generated makefiles is not being used.
+	2) Fix for DEF045077 - Warnings generated by build tools when built using "bld deb".
+	3) Fix for DEF045255 - Using BLD DEB to build the tools creates errors when tools are used
+3) Naheed
+   1) Fix for DEF045349 - abld build fails to export data when built for one component
+	  - Ensure exports are done when building for one component.
+4) Jon 
+	1) Fix for "DEF046059 : emkdir.pl output should be more verbose"
+
+
+Version 0.01.538
+================
+(Made by Dusko, 28/05/2004)
+
+1) Dusko 
+	1) fix for DEF045551 - GCCXML: Malformed XML when targetpath specified in MMP.
+2) Jon
+	1) Fix for "DEF045035 - Codewarrior ignores #if macro statements in .mmp file.
+	2) Fix for "DEF045460 - RDL TARGETTYPEs require a .def file in EABI builds"
+
+Version 0.01.537
+================
+(Made by Dusko, 25/05/2004)
+
+1) Dusko 
+	1) Fix for DEF045503 - Warnings when building for gccxml platform
+	2) Fix for DEF045428 - GCCXML Compiler Options.
+
+
+Version 0.01.536
+================
+(Made by Dusko, 19/05/2004)
+
+1) Dusko 
+	1) Fix for DEF045168 - GCCXML: MMPXML should contain working directory from which GXP was built.
+
+
+Version 0.01.535
+================
+(Made by Dusko, 14/05/2004)
+
+1) Dusko 
+	1) DEF045015 - Build tools: gccxml should not be one of the default targets
+2) Gus
+	1) DEF045077 - Warnings generated by build tools when built using "bld deb"
+	2) INC044804 - Problem with TEMPMAKESISDECOY during localisation
+3) Jon
+	1) DEF044702 - Disable "stop on application launch" by default in Codewarrior settings panel.
+	2) DEF044703 - Linking projects within the Codewarrior IDE fails for large projects.
+	3) DEF045031 - Incorrect importing of mmp projects into Codewarrior with
+                   TARGETTYPE set as lib
+
+Version 0.01.534
+================
+(Made by GusR, 05/05/2004)
+
+1) GusR
+	Ease Of Deployment
+	  alt_pre=1 now uses scpp.exe for preprocessing
+	  local_build_path now defines where the object files are placed
+	  the gcc directory can now be on a local drive
+	  -savespace -keepgoing now sets nodependencies	
+	New File : preprocessor.pm
+	new File : scpp.exe
+
+Version 0.01.533
+================
+(Made by JonC, 29/04/2004)
+
+1) Jon
+	Fixes for:
+	1) DEF044751 Tools_e32toolp MRP file not specifying new .pm file.
+	2) DEF044147 ARMV5 builds ignore AIF generation as part of the RESOURCE step.
+	3) DEF044230 ARMv5/UDEB should build with -O0
+	4) DEF044048 RVCT version of DEF2DLL camplains about DLLs not having exports 
+
+Version 0.01.532
+================
+(Made by Dusko, 26/04/2004)
+
+1) Dusko 
+	Adding support for Backwards Compatibility Analysis Tool
+	Files changed: cl_generic.pm, e32plat.pm, bldmake.pl
+	New file: cl_gccxml.pl
+
+1) Dusko
+	1) DEF043895 - cl_codewarrior.pm not able to handle long commandlines.
+
+Version 0.01.530
+================
+(Made by Dusko, 06/04/2004)
+
+1) Jon
+	1) Fix for "DEF044083 Incorrect list of warnings suppressed in cl_arm.pm"
+
+
+Version 0.01.529
+================
+(Made by Dusko, 02/04/2004)
+
+1) Dusko
+	1) Fix for DEF043637 - CSYSTEM macro hard coded to WINS.
+	2) Fix for DEF043632 - Cedar tools should not hardwire EKA2 or DO_NOT_USE_THIS_MACRO.
+2) Jon
+	1) Fix for DEF043608 - ARMv5 build tools to "ignore" more warnings.
+	2) Fix for DEF043938 - Projects imported into CW for ARM4 builds do not link.
+	3) Fix for DEF043630 - EABI builds should define "EABI" 
+	4) Fix for DEF043607 - ARMv5 UDEB builds do NOT produce debug information 
+
+
+Version 2.00.528
+===========================
+(Made by JonathanM, 19/03/2004)
+
+1.	JonathanM
+	1.	Implemented the requirements:
+		REQ2632 - Configurability of the enforcement of capabilities
+		REQ2633 - Security violation diagnostic
+		REQ3142 - Associate Platform Security information with an executable.
+		See /cedar/generic/base/documentation/Base_How_To_Configure_Platform_Security_Settings.doc
+
+Version 0.01.527
+================
+(Made by Dusko, 18/03/2004)
+
+1) Dusko
+	1) Fix for DEF042453 - Mistakes in API Classification.
+	2) Fix for DEF042408 - EVALID can't deal with more than 3 "-x" arguments
+2) Jens
+	1) Fix for DEF042878 - verbose output in "abld -v test romfile"
+                           appears in generated oby file
+3) Jon
+	1) Fix for DEF043598 - CAPABILITY in OEM2.0 .pref files prevents IDE build...
+
+Patch for Version 2.00.526
+===========================
+1)	JonathanM
+	1)	Fix for defect DEF043311 - In the CodeWarrior IDE, UID.CPP files are incorrectly generated
+
+Version 2.00.526
+===========================
+(Made by JonathanM, 26/02/2004)
+
+1)	JonathanM
+	1)	Modifications made for implementation of
+		Change Request JDOD-5VUJ7F - Change in executable format of EKA2 binaries.
+	2)	Made MAKMAKE use the new Platform Security capability names.
+	3)	Tools now use the sytax "cap1+cap2+cap3" to specify a neamed set of capabilities
+		(Rather than specifying a single hexadecimal number.)
+
+Version 0.01.525
+================
+(Made by AndrewJ, 13/02/2004)
+
+1)ChrisM
+	1) Fix for DEF041533 - metabld should not insist on paths starting from the root of the drive
+	   added a -r option to indicate the directory tree should be from the current location and not the root.
+
+Version 0.01.524
+================
+(Made by Dusko, 12/02/2004)
+
+1) Dusko
+	1) Fix for DEF041403  Incorrect makefiles is generated for CWTOOLS  
+
+Version 0.01.523
+================
+(Made by Dusko, 30/01/2004)
+
+1) Dusko
+	1) Fix for DEF041857 - MAKMAKE should not complain about MACRO statement with no arguments
+2) Jon
+	1) Fix for DEF041769 - Minor Perl problem in IDE_VC6.PM
+	2) Fix for DEF041802 - Auto Target Libraries should be switched on by default in Code Warrior.
+	3) Fix for DEF041697 - CW command line and IDE builds generate redundant "browse" files
+3) Kuldip
+	1) Fix for DEF41756 ROFSBUILD checks adequate image size incorrectly.
+	2) Fix for DEF41699 Preserving of intermediate files to enable building of ROM from obey file generated by buildrom.pl 
+
+Version 0.01.522
+================
+(Made by Dusko, 22/01/2004)
+
+1) Dusko
+	1) Fix for DEF041591 - BLDMAKE should not complain about "-ARMI" in PRJ_PLATFORMS
+2)  Jon
+	1) Fix for DEF041319 - Remove display of compiler generated commands by default from CW 
+	2) Fix for DEF041432 - makmake.pl uses undefined variable @variant_macros 
+
+Version 0.01.521
+================
+(Made by Dusko, 05/01/2004)
+
+1)  Dusko
+	DEF040718  cedar\generic\base\wins fails to export correctly if EPOCROOT is not \ 
+2)  Kuldip
+	Fix for INC040504  "makedef.pl does not recognise exported data in codewarrior DLLs"
+
+Version 0.01.520
+================
+(Made by JonC, 18/12/2003)
+
+1)  JonC
+	Fix for DEF041019 - CodeWarrior OEM2.8 IDE project settings are incorrect.
+	Fix for DEF041136 - Error found in "tools_e32toolp.mrp"... 
+
+Version 0.01.519
+================
+(Made by Dusko, 17/12/2003)
+
+1)	Kuldip
+	REQ1648 A3.2 Improved Command Line Build Tools   Strict BUILDROM
+
+1)	Jon
+	REQ2212 A.3.4 Code Warrior Tooling, Support for Metrowerks  
+    CodeWarrior for Symbian OS 2.8., Contributes to implementation of 
+    TOOLS/MAKMAKE/cw.17,
+
+1)	Darran
+	Sirocco, CR PHAR-5QYMSN
+    Support nested inclusion of (preprocessor) HR  
+    files in varinat.cfg
+
+1)  Andy
+	low level support for REQ1730, REQ2206 and REQ2140.3.1.
+	support for 'downgrading' cpu specific components when they're missing during 
+	ROMBUILD I.E. ARMV5O1 -> ARMV5. This is similar to the kind of downgrading that
+	takes place  for ARMI, ARM4 and THUMB builds.
+
+Version 0.01.518
+================
+(Made by Dusko, 24/11/2003)
+
+1)	Dusko
+	1)	DEF037657  Cedar tools dont support  COMPRESSTARGET and NOCOMPRESSTARGET MMP keywords
+		Files changed mmp.pm,cl_gcc.pm
+
+	2)	DEF037095  E32Variant can only be used by tools in \epoc32\tools 
+		File changed e32variant.pm
+
+Version 0.01.517
+================
+(Made by Dusko, 10/10/2003)
+1) Kuldip
+	1)	DEF036127 FIXUPSYM requires an EPOCROOT
+		Fixed in \tools\e32toolp\makesym\fixupsym.pl
+
+2) Dusko 
+	1)	DEF038828  Can't build projects that have AIF c12,8 in mmp file
+		Files changed mmp.pm, makmake.pl, cl_generic.pm and ide_cw.pm 
+
+3)	Dennis
+	1)	Fix problem with cl_arm.pm - when building UDFP, UDFP.LIB was added
+		to the list of libraries which caused infinite loops.
+
+Version 0.01.516
+================
+(Made by Dusko, 02/10/2003)
+1) Kuldip
+	1)	DEF038583 - BLDMAKE Error in 03114_Symbian_OS_v8.0b
+		Fixed in \tools\e32toolp\genutil\pathutil.pm
+2) Johannes
+	2)	Fix for DEF037095 - E32variant can only be used by tools in \epoc32\tools
+
+
+Version 0.01.515
+================
+
+(Made by Dennis, 24/09/2003)
+
+1. Dennis
+	1.	Implemented CR ATHE-5PZEAU (Add Version Numbers to Symbian OS Executables).
+
+2. JonathanM
+	1.	Created new .MMP Target types, "NOTIFIER2" and "TEXTNOTIFIER2"
+		This has been added for Notifier plugins which use the new Version 2
+		Client/Server APIs.
+
+
+Version 0.01.512
+================
+(Made by DuskoJ, 22/08/2003)
+
+1) Morgan
+	1)	Added ROFSBUILD extension support to BUILDROM.PL
+		BUILDROM automatically generates the appropriate obey commands for non-XIP
+		ROFS obey files.
+	2)	Improved \tools\e32tools\rombuild\addextension.pl to understand ROFS images
+		and extensions.  addextension.pl can be used to join xip and non-xip images.
+
+2) Dusko 
+	1)	DEF036665 - MAKMAKE should put EGCC.LIB at end of LIB list
+	2) WINUTL.PM changes - support for building tools with CodeWarrior
+
+
+3) Andy 1)	REQ2178 - GENSHIMSRC Generate source for a shim DLL and its associated deffile from a supplied deffile
+
+
+Version 0.01.511
+================
+(Made by DuskoJ, 25/07/2003)
+
+1) Morgan
+	1)	Integrated "fix" for DEF032836 - Rogue Multimedia warning in typhoon build 02194a
+	MAKDEPS.PM is now more defensive when adding to the bad system dependency list.
+2) Jon
+	1)	Fix for defect DEF035996 - Cpp.exe Permission denied failure.
+
+3. Dusko
+	1. fixed DEF036388 Cedar version of maksym.pl is out of date
+
+
+Version 0.01.510
+================
+(Made by DuskoJ, 10/07/2003)
+
+ 1) DuskoJ
+	1) Adding support for building tools with CodeWarrior. 
+	   files changed: 1. bldmake.pl
+					  2. e32plat.pm
+	   new files:	  1. cl_tools.pm  
+	
+  	2) Changes to epocaif to generate .aif files in new format. Aiftool.exe is no
+           longer needed.
+
+  	3) Changes to cl_generic so that when abdl -what command is executed both,
+           XIP and NON XIP version of aif files which are generated with epocaif are 
+  	   listed.
+
+ 2) JohanesK
+	1) DEF036206 - variant.cfg information not used when generating MAKMAKE dependencies
+
+
+Version 0.01.509
+================
+(Made by DuskoJ 07/07/2003)
+
+	1) Fixed DEF035953  Build errors for "cedar\generic\tools\redistribution" 
+	
+
+Version 0.01.508
+================
+(Made by JonC, 26/06/2003)
+
+      1) DEF035949 - EKA2 define is not passed to compiler in Cedar CW IDE builds.
+      2) Update of mmpscan.pl and mmp_testlist.txt to reflect changed Cedar TARGETTYPEs and components.
+      3) Update to build variant documentation.
+
+
+Version 0.01.507
+================
+(Made by JohannesK, 24/06/2003)
+
+      1) Fixed DEF035897 - cedar roms failed to build.
+
+Version 0.01.506
+================
+(Made by JohannesK, 23/06/2003)
+      1) Enabling product variant builds (ported changes from Typhoon).
+
+      2) Fixed DEF035683 - CW project creation is broken in Cedar.
+
+      3) Fixed DEF035802 - Bad case-sensivity in E32variant.pm.
+
+      
+Version 0.01.505
+================
+(Made by JonathanM, 20/05/2003)
+
+1)	JonathanM
+	1)	Modified Cedar tools to define macros 'EKA2' and 'DO_NOT_USE_THIS_MACRO' when
+		processing BLD.INF, MMP files and compiling source.
+	2)	Fixed some missing EPOCROOT support. (Include path for CPP and exported zips.)
+	3)	Modified Cedar GENBUILD to work with master codeline directory structure.
+
+2)	Nicolas
+	CHANGES FOR MASTER CODELINE:
+	1)	Brought back to life AIF support which was removed by submission 229467 to the
+		Jet Stream mainline.  This involved changing various perl scripts and upgrading 
+		winc.zip to a recent Typhoon build (2175) which include versions of bafl.dll and
+		aiftool.exe which support the new resource format.
+	2)	Brought back to life CTL target needed by some techview apps.
+
+
+Version 0.01.504
+================
+(Made by William, 18/03/2003)
+
+1)	Dusko
+	1)	Updated EVALID to use ELF dump to compare ELF files.
+
+2)	William
+	1)	Fixed defect DEF020022 - Minutes & seconds reversed in scanlog.pl output
+	2)	Added SCANLOG.TXT to document of the log file format and patterns used by scanlog.pl
+	3)	Updated EVALID.TXT to add information about "ELF file" comparisons.
+	4)	Updated cl_codewarrior.pm & ide_cw.pm to support CodeWarrior for Symbian OS, OEM v2.0
+
+
+Version 0.01.503
+================
+(Made by William, 10/02/2003)
+
+1) Dusko
+	
+	1)	makmake.pl - Fixed a defect in makmake (added missing $CurSource{BaseTrg} to SourceStruct)
+	2)	Redefined SrcList function (functionality has not changed)
+	3)	Deleted Uids funciton 
+
+	4)	mmp.pm - Deleted inappropriate comments
+	5)	Deleted UIDs function 
+
+	6)	mmp_notes.txt - Some changes to structure description.
+	
+	7)	cl_generic.pl - Uids info extracted from existing data in ResourceStruct 
+	   	and unneeded call to Uids function deleted.
+        
+	8)	bldmake.pl Changes which enable bldmake to understand additional syntax in PRJ_EXPORTS
+	   	part of bld.inf. More complex makefiles are generated in the  epoc32\build tree.
+	   	Generation of the new rules is put into a separate subroutine - CreatePlatExports
+	   	PRJ_EXPORTS now accepts exports to paths including a drive letter: the file(s)
+	   	will be exported to the corresponding subdirectory of epoc32\data, and also exported
+	   	at the RESOURCE step in emulator builds to the corresponding emulated directory.
+	   	For example:  myfile.txt z:\system\data\myfile.txt
+	   	causes exports to epoc32\data\z\system\data\myfile.txt, and also to
+	   	epoc32\release\XXX\{udeb,urel}\z\system\data for each emulator target XXX.
+
+
+1) William
+	1)	Fix defect DEF000968 - MAKMAKE grants capabilities which don't yet exist
+	2)	Add support for "CAPABILITY ALL -ROOT", i.e. for subtracting capabilities for a set
+	3)	Change the default CAPABILITY setting to ALL+0x80000000 so that it can still be clearly
+		identified in executables.
+	4)	Update CodeWarrior IDE support to use the Symbian V8 Linker plugin, and to reject
+		attempts to build IDE projects for "CodeWarrior for Symbian OS, Pro1".
+	5)	Add e32toolp\test directory for regression tests.
+	6)	Add mmpscan.pl which scans MMP files for significant features, and mmp_testlist.txt which
+		covers all of the MAKMAKE features in less than 40 of the current 2432 MMP files.
+	7)	Updates to mmpscan.pl to work in more cases.
+	8)	Additional test functionality cw_ide_test.pl which builds MMP files using both the
+		CodeWarrior IDE and directly via MAKMAKE and commandline builds, comparing the results.
+	9)	Change epocrc.pl to avoid explicitly specifying the default uids argument -{0,*} if
+		neither -uid2 nor -uid3 is specified. This allows UID2 and UID3 keywords in the source
+		files to take effect.
+	10)	Change genbuild.pl to process all specified source files, concatenating them
+		and generating scripts named after the first file.
+	11)	Add "<option arm_build XXX>" to genbuild.pl, so that we can specify additional
+		builds such as <option arm_build armv5> for RVCT builds.
+	12)	Update scanlog to detect RVCT compiler warnings and errors, and added "use strict".
+	13)	Arrange for scanlog.pl to ignore sections which refer to armv* or *edg, so that mainline
+		builds can include early RVCT attempts without swamping the error and warning counts. This
+		skipping is disabled by specifying the "-v" flag to scanlog.pl.
+	14)	Fix Perl warning in evalid.pl
+	15)	Updates to test code (cw_ide_test.pl, mmpscan.pl, mmp_testlist.txt).
+	16)	Change cl_codewarrior.pm to use ".o" rather than ".obj" for compatibility with the IDE
+		builds, and to compile xxx.uid.cpp to uid.o for the same reason: the IDE and command line
+		builds will then produce identical .map files
+	17)	Change ide_cw.pm to avoid specifying a base address for EXEs, to match the command line build.
+	18)	Change ide_cw.pm to specify -D__XXX_ for ASSPs (i.e. when platform != real platform).
+	19)	Change MAKMAKE to reject CodeWarrior for Symbian OS v1.0 as unable to support Jet Stream builds.
+	20)	Remove obsolete target types, post UIKON and ECOM data caging releases.
+		This removes CTL, CTPKG, FEP, MDL, OPX, RDL and WLOG.
+	21)	Remove the cw_ide.pm workaround for ignoring MBW and mapping MCL->MBM. There
+		are no remaining B&W files in Jet Stream, and all of the Color files are now correctly
+		named. The instcol script is no longer needed but still exists to avoid disrupting build
+		scripts: it now just says "instcol is no longer used".
+	22)	Remove support for AIF files, which no longer exist.
+	23)	Fix defect DEF015570 "Irritating and useless X86 builds in default abld platforms list".
+		To include X86 in "ALL" platforms, define environment variable ABLD_ALL_INCLUDES_X86.
+	24)	Disallow .cia files in WINSCW builds.
+	25)	Add support for SRCDBG in ide_cw.pm
+	26)	Change the generated target names in CW projects to be just "ABI BLD" without the MMP name.
+	27)	Fix defect preventing BASEADDRESS being specified for IDE builds of EXEXP targets.
+	28)	Handle Win32Library list correctly in CW projects.
+	29)	Change cw_ide_test.pl so that it restores all of the original files after testing.
+	30)	Update mmp_testlist.txt to a workable set of MMP files, marked "not MISA" and "not WINSCW"
+		if they can't be built in both ABIs.
+	31)	Change scanlog.pl to tolerate malformed log files, which would have helped to detect the 
+		true cause of things like DEF016577 "Scanlog does not detect errors in JRCK log". If the
+		phase doesn't finish properly, no timing will be displayed.
+	32)	Added ===+ timing information to genbuild.pl, for closer analysis of build times.
+	33)	Integrate the "list of color depth" changes for CR MFRN-5HTH2G "Make it possible to have 
+		different color depth of icons and masks in the aif file". We don't have AIF files any more,
+		but this applies to bitmaps as well.
+	34)	Propagate the 7.0s ecopyfile.pl change to support "Build from Clean" process.
+	35)	Remove all record of the WINC platform
+	36)	Remove the .assp files, now that everything is built into a single directory.
+	
+	
+Version 0.01.502
+================
+(Made by William, 20/09/2002)
+
+1) Dusko
+	1)	Fix defect ROS-59ZDWH "OPTIONS keyword doesn't respect upper and lower case"
+		Both the OPTIONS and MACRO keywords now respect the case of their arguments, so it's possible
+		to specify mixed-case compiler flags or mixed case #defines.
+		
+2) William
+	1)	Implement automatic selection of CodeWarrior for Symbian OS v2.0 ("Ganymede") based on
+		examination of environment variables. If the MWSym2Libraries variable exists and refers
+		to directories which all exist, the Ganymede compiler will be used instead of the older
+		Callisto compiler.
+	2) 	Implemented various Metrowerks suggested improvements to the CodeWarrior project template
+	3)	Added more support for the "Symbian Installation" preference panel, and an association for
+		.pkg files.
+	4)	Add EXPORTUNFROZEN to the .pref file for CW IDE projects, as it's supported in Ganymede.
+	5)	Add WINSCW support for WIN32_LIBRARIES which are not in the system search path, for use
+		by the Win32 Ethernet Driver.
+	6)	Fix defect ROS-5CAH9W "EVALID can't handle directory names containing spaces"
+	7) 	Change ide_cw.pm and CW_project_template.xml to assume the new Symbian Resources compiler
+		which handles RSC, MBM and AIF files via a .resources file.
+	8)	Change MAKMAKE so that the cw_ide:plat1+plat2+plat3 commandline arg won't always do the
+		WINSCW target first: it now uses the cw_ide plat in the necessary places to get the .xml
+		file generated, but uses plat1 everywhere else.
+	9)	Change abld.pl to allow WINSCW in the "ALL" list if either v1.0 or v2.0 of CodeWarrior for
+		Symbian OS is installed.
+	10)	Change cl_codewarrior.pm so that WINSCW makefiles will use v2.0 of CodeWarrior for Symbian
+		OS if it's installed, or fallback to v1.0. Make the necessary minor adjustments to the
+		generated Makefiles to compensate for differences in v1.0 and v2.0 tools.
+	11)	Fix defect ROS-5D6FRK "Makmake code to select between CodeWarrior versions is incorrect"
+	12)	Fix defect ROS-5CMNVG "EPOCROOT check gets in the way of CodeWarrior mmp file import"
+	
+ 
+Version 0.01.501
+================
+(Made by ?, --/--/2002)
+
+1)	William
+	1)	Changed genbuild.pl to generate scripts with relative paths, instead of assuming 
+		that the paths in the .txt files were always relative to the root.
+	2)	Removed references to WINC and ARM3 from genbuild.pl
+	3)	Changed BLDMAKE.PL to remove ARMI and THUMB from the list of default platforms
+	4)	Disabled the LNK4089 warning caused by /OPT:REF in MSVC builds.
+	5)	Downgrade the use of "-XXX" which isn't in the default list to a BLDMAKE warning if 
+		-k specified: seems reasonable since the net effect is not to build for platform XXX.
+	6)	More work on defect ROS-595LHD "abld -what problems with very long pathnames" - the non-generic
+		RELEASEABLES are now handled in the same way as the GENERIC_RELEASEABLES, to avoid exceeding
+		line length limits.
+	7)	Fix defect PAL-59YHRT "Build errors not being reported in summary files" - change scanlog.pl to
+		report missing components as "Things not built".
+	8)	Changed the epocrc.pl, epocmbm.pl and epocaif.pl wrapper scripts in anticipation of the
+		new Symbian Resource compiler plugin for CodeWarrior.
+		epocrc.pl - handle "-I-" and UNC paths correctly
+		epocaif.pl - handle "-I-" and UNC paths, use "-o" when preprocessing .rss file, report bmconv failure
+		epocmbm.pl - remove EPOCROOT check to subroutine, report bmconv failure
+	9)	Improve	the Path_RltToWork function to generate more concise relative paths. This impacts
+		any binary which has __FILE__ as read-only data, e.g. via the ASSERT() macro in 
+		epoc32\include\mda\common\base.inl
+	10)	Fix defect CHN-58WEZ3 "EPOCRC.PL fails in VC6 IDE builds with long paths" by supplying
+		an absolute path to epocrc.pl, and having epocrc.pl add the current drive letter instead
+		of generating a relative path. Similar code in epocaif.pl was altered as well.
+	11)	Update EVALID to handle "Preprocessed text" ignoring the lines which indicate the #include
+		structure (and which include source filenames).
+	12)	Update EVALID to ignore the "unique _head & _iname" symbols from import libraries when they
+		appear in gcc MAP files, using the same pattern as for ARM object files.
+	13)	Introduce MAKMAKE "CAPABILITY" keyword which takes a space-separated list of capability names
+		and computes the hex value for the combined list. This is passed to PETRAN in cl_gcc or cl_x86.
+	14)	Change winutl.pm to use __EMULATOR_IMAGE_HEADER() in the xxx.uid.cpp file, adding the extra
+		extra process priority and capability information.
+	15)	Abandon the notion of CompatibleABIs, chiefly by stopping cl_gcc.pm from generating the extra
+		libraries.
+	16)	Change scanlog.pl to pick up more warnings, and to print the warning lines in a "Warning details"
+		section at the end.
+
+2)	Dennis
+	1)	Applied William's suggested changes to enable polymorphic DLLs to have additional exports.
+		Exports 1 and 2 in the DEF file are required to match the polymorphic exports.
+	2)	Made it possible to export a ZIP archive from a component. The following line
+
+		:zip archive.zip basedir
+
+		in the PRJ_EXPORTS or PRJ_TESTEXPORTS section of an MMP file will cause 'archive.zip' to be
+		unzipped into the 'basedir' directory at the export stage of the build.
+		CLEANEXPORT will delete each unzipped file and WHAT will list each unzipped file.
+
+3)	ChrisM
+	1)	Changed memtrace.pl to work with EKA2 memtrace tracing.  MT:P xxxx trace output has
+		the length of the tick in microseconds, so memtrace.pl uses this to work out its
+		time stamp if it is present, otherwise it defaults to EKA1 behaviour.
+
+4)	Andy Sizer
+	1)	Added support for .CIA assembler files.
+		First attempt at support for new RVCT compiler.
+	
+Version 0.01.500
+================
+(Made by AndrewT, 23/05/2002)
+
+EKA2 changes
+
+1)	Andrew
+	1)	Def file processing allows a by-name export "_E32Dll" or "_E32Startup" to appear
+		in the def file. This is elminated from the no-name freeze process and
+		re-introduced to the end of the build def file. This supports the v7 entrypoint
+		scheme, and does not appear in frozen def files.
+	2)	Added target type EXEXP for v7 support of EXEs with exports. This replaces 
+		EXEDLL, which is no longer supported. Removed support for EPOCEXE, these
+		targets should just become EXE.
+	3)	Changed target type KDLL to use a new EKLL.LIB and to not be ASSP specific. These
+		DLLs are all used by the kernel, but do not link to the kernel, and are only built
+		for ARM4 or WINS
+	4)	Changed WINS use of entry-points, DLLs have no Win32 entrypoint but include the
+		_E32Dll symbol to ensure that this is exported by name (see 1). EXEs have a Win32
+		entrypoint to allow auto-boot of the emulator before running the EPOC program, and
+		force the inclusion of the _E32Startup symbol to ensure that this is exported by
+		name.
+
+2)	Nicolas
+	1)	Removed spurious code in cl_x86.pm which caused x86
+		releasables to be copied into \epoc32\tools.
+	2)	Merged in EKA1 WINSCW support and adapted it to EKA2
+		(EXEXP, emulated E32 entry points, EPOCHEAPSIZE, ...).
+	3)	Added new MMP keyword WIN32_HEADERS to instruct makmake
+		to search the standard include directories.
+
+---------------------------
+
+Pre-EKA2 changes
+
+1)	William
+	1)	Revise compare_summary.pl to match scanlog.pl, which stops compare_summary.pl from hanging
+	2)	Change MAKMAKE to use "cpp -undef" when generating source file dependency information.
+	3)	Change BLDMAKE to generate an abld.bat file with the BldInfPath quoted in case it contains 
+		spaces: there's a lot more work still to do, but this is a start...
+	4) 	Remove any leading backslash on filenames in SOURCE statements, since they are by definition
+		interpreted as paths relative to the prevailing SOURCEPATH. This affects FREETYPE.MMP, which
+		was otherwise generating names like graphics\freetype\group\..\\freetype2
+	5)	Fix defect ROS-58CQTC "CW IDE can't import strangely formatted MMP file" by making ide_cw.pm
+		form its own list of source directories from the (SOURCEPATH, SOURCE) pairs.
+	6)	Fix defect BAD-57QNL7 "Charconv does not compile from CodeWarrior GUI" by making ide_cw.pm
+		order the access paths explicitly for userinclude and systeminclude.
+	7)	Change GENBUILD.PL to generate additional batch files for "abld clean" and "abld reallyclean".
+	8)	Implement MAKMAKE support for IDE targets which support multiple platforms: so far this
+		consists of supporting "makmake mmpname someide:plat1+plat2+plat3" syntax and providing the
+		list (plat1, plat2, plat3) to any backend which cares to ask for it.
+	9)	Implement various changes to the generation of CodeWarrior IDE projects: 
+		* Pick up the list of platforms from the "cw_ide:plat1+plat2+plat3" commandline arg (if any)
+		* Enable the "System Log" window for WINSCW UDEB targets
+		* Default "Display generated commands in msg window" to false for all targets
+		* Add the "SymbianImportLibraryPath" setting for use in Ganymede
+		* Allow multiple resource files if they all use the same TARGETPATH
+	10)	Use mwwinrc to compile Win32 resource files in WINSCW builds
+	11)	Fix defect ROS-58VCQY "MAKMAKE fails if + included in pathname" by using quotemeta() to do 
+		the full job on $S_SysDecoyPath
+	12)	Fix defect GAA-57WNNR "Error in bldmake.pl -what option for cw_ide" by reporting the .xml and
+		.pref files correctly. Note however that BLDMAKE can't always get the .pref or .uid.cpp filenames
+		right because they are generated (or not) using information inside the MMP file.
+	13)	Fix defect ROS-595LHD "abld -what problems with very long pathnames" by counting the actual 
+		length of the GENERIC_RELEASEABLESn lines and breaking before it goes over 1900 characters.
+	14) 	Various EVALID improvements, including support for ignoring comments in SGML files
+	15)	Added evalid.txt file for export into epoc32\engdoc\e32toolp
+
+2)	Uma
+	1)	Fix defect ANN-595CNZ "using abld build creates a epoc32 folder in the root of your drive".
+	
+Version 0.01.304
+================
+(Made by William, 22/02/2002)
+
+1)	William
+	1)	Introduce "START RESOURCE ... END" syntax to allow resources to be built into a directory
+		which is neither \System\Data nor the TARGETPATH of the main executable, and to allow
+		resources to be built without an associated header file. Both RESOURCE and SYSTEMRESOURCE
+		are expressed as shorthands for the new syntax, and the internal handling of resources
+		has been unified. As a side-effect, this provides the proper fix for defect JOE-52ZJP3 
+		"Conditional #includes in resource files".
+	2)	Include WINS and WINSCW into the "abld all" platforms according to the presence in the 
+		environment of associated environment variables. If you have the CodeWarrior compiler installed
+		you will have a CWFolder environment variable: ABLD.PL will notice this and include WINSCW
+		in the "ALL" target. WINS is included if the MSDevDir variable is present.
+	3)	Make SETUPPRJ.BAT generate a makefile which is resilient against filenames which contain spaces,
+		and which will keep going even if an individual file can't be installed.
+	4)	Fix defect ROS-573K9P "MMP keyword MACRO keyword not supported in CW IDE projects".
+	5)	Fix defect ROS-57CFVC "CW IDE projects can no longer find RSS files".
+	6)	Fix defect ROS-57CFYY "CW IDE projects fail if RSS file is in unusual place".
+	7)	Clone the targets from the XML template project rather than altering them directly, which
+		is a necessary precursor to supporting ASSP targets, where the ARM4 targets may need to be
+		used more than once.
+	8)	Remove backwards-compatibility support in CL_GCC.PM which copied resources, bitmaps and AIF files
+		from the epoc32\data\z tree into the $(PLATFORM)\$(CFG) directories.
+	9)	Fixed defect ROS-57PJYW "MSVC-based builds are using warning level /W1 by default" by reinstating
+		the /W4 warning level for MSVC-based builds, which was accidentally lost in change 109090.
+		The change also deals with the CL.EXE objection to multiple /Wn arguments on the same commandline, 
+		so that OPTION MSVC /W0 won't itself cause "Command line warning D4025".
+	10)	Annotate all of the CL.EXE command line options used in cl_win.pm and ide_vc6.pm, and move the
+		/GF option into the main definitions rather than repeating it for every source file.
+		
+
+Version 0.01.303
+================
+(Made by William, 06/02/2002)
+
+1)	Uma
+	1)	Changed epocrc.pl and lockit_info.pm to support rls_string (CR JCLE-549DVM).
+
+2)	William
+	1)	Fix defect JOE-52ZJP3 "Conditional #includes in resource files".
+		Use the same "combine the dependency list" quick fix strategy as for 6.1, since the 
+		"multiple languages in MMP files" approach to localisation is on the way out anyway.
+	2)	Make EVALID insensitive to the _head* and __*_iname symbols in the import libraries 
+		generated by DLLTOOL. 
+	3)	Fix defect ROS-55AN6D "fixupsym.pl fails immediately"
+	4)	Update MAKSYM.PL use FindBin::Bin rather than scanning the PATH variable
+	5)	Update SCANLOG.PL to detect recursive make failures (i.e. make[n]: *** rather than just make: ***)
+	6)	Remove the old support for warning waivers, and make the printing of "MISSING:" files 
+		independent of the number of fatal errors
+	7)	Fix defect ROS-55BM2X "ar failure with very large components" by splitting the list of
+		objects into 150-file groups, to avoid the 32K line length limit on Win32 process arguments.
+	8)	Add a "Build All" target to generated CodeWarrior projects, and cut out some junk from the
+		project template.
+	9)	Fix ROS-56QP3D "Problem with EPOCSTACKSIZE when generating CW IDE Projects"
+	10) Revise EPOCRC.PL for use from CodeWarrior IDE RCOMP plugin: drive CPP.EXE differently, and
+		remove the EPOCROOT check. Only the LOCKIT processing needs EPOCROOT, and lockit_info.pm does
+		it's own check when necessary.
+	11) Fix deferred defect HET-4X9G2P "commandline help for epocrc.pl is missleading"
+	12)	Fix defect ROS-55JM2S "Emulator EXEs can come with unexpected .EXP and .LIB files" 
+		for WINSCW by explicitly disabling the exports and import library when linking an EXE.
+	13)	Assume the "CodeWarrior for Symbian OS Professional Edition V1.0" version of MWLD.EXE,
+		which removes the dependence on the Developer Studio LIB.EXE tool for WINSCW builds.
+	14)	Use the CodeWarrior "MWCWinx86Includes" environment variable rather that the Developer Studio
+		"INCLUDE" environment variable when generating WINSCW makefiles.
+	15)	Catch an additional form of MWLD.EXE warning in scanlog.pl
+
+Version 0.01.302
+================
+(Made by William, 03/12/2001)
+
+1)	William
+	1)	Reinstate "use strict;" in MAKMAKE.PL, and fix errors uncovered
+	2)	Fix parsing of "OPTION" to handle the rest of the line better, and
+		to concatenate multiple OPTION statements for the same key.
+	3)	Fix use of uninitialised variable in MAKSYM.PL
+	4)	Change ABLD.PL and MAKEMAKE.PL to specify the -r option to make, so that MAKE 
+		doesn't try built-in inference rules to remake the makefiles or the targets: the
+		BLDMAKE makefiles are very simple and don't need any of that stuff, and the MAKMAKE
+		makefiles contain explicit rules for everything we want.
+	5)	Changed cl_codewarrior.pm and cl_gcc.pm to remove the use of inline files. 
+		It turned out to be simple to change the "ar -M" command into a direct "ar cr" 
+		command line, and the CodeWarrior makefile doesn't use the bscmake rule anyway.
+	6)	Rearranged dependencies so that real files do not depend on "phony" targets.
+		This involved moving the MAKEWORKLIBRARY dependency, and adding MAKEWORK$Bld
+		to the UREL and UDEB target. Changed cl_codewarrior.pm to remove the remaining
+		mentions of .sbr files.
+	7)	Removed the trailing \ from the directory definitions in cl_generic.pm (things like
+		EPOCBLD, EPOCLIB etc) so that they won't be troublesome to MAKE.
+	8)	Removed !if "OS" == "Windows_NT" conditional stuff into the Perl scripts, so
+		that the resulting Makefiles aren't conditional at all.
+	9)	Added Generic_Quote, which quotes a filename in the style required for the
+		type of makefile being generated, and Generic_CopyAction which deals with
+		copying a file (default ?$) to the target of the rule ($@).
+		These are available to users of cl_generic.pm and used within the generic functions.
+	10)	Added MakeCmd to the E32Plat.cmd information, and use it in BLDMAKE to determine
+		the way that the recursive Makefile should be called. Also pass it from MAKMAKE
+		to the cl_XXX.pm module, which checks it and passes the value on to cl_generic.pm
+		if used.
+	11)	Added -s to the recursive calls for WHAT, to avoid any directory information being
+		printed by MAKE.
+	12)	Changed epocaif.pl and epocrc.pl to use File::Copy rather than system "copy..." in
+		the lockit processing.
+	13)	Reworked cl_codewarrior.pm and cl_gcc.pm that they can support both MAKE and NMAKE,
+		generating appropriate Makefiles according to the type requested by MAKMAKE.
+	14)	Change E32PLAT.PM to specify MAKE makefiles for all ARM and WINSCW targets.
+	15)	Removed use of wildcard "$BaseTrg.*" in CLEANLIBRARY
+	16)	Added detection of ABLD fatal errors to scanlog.pl
+	17)	Removed use of DUMPBIN for extracting list of exports in cl_codewarrior.pm, and
+		modified MAKEDEF.PL to handle the mwld.exe output used instead.
+	18)	Fix defect BRN-52RCVD "Evalid doesn't work correctly when run from a 
+		directory more than one level deep."
+	19)	Fix defect ROS-53ECQY "Can't disable WINSCW builds in PRJ_PLATFORMS"
+	20) Change GENBUILD.PL to do "resource" before "library" so that static libraries can
+		make use of generated .RSG and .MBG header files. At the same time, disentangle the
+		WINS and WINC build steps so that WINC is required to stand by itself.
+	21)	In genbuild.pl, remove the extra "what" & "check" steps before the "final" step for 
+		WINS and WINSCW, and pass the "keepgoing" flag to the export step.
+	22)	Fix defect BRN-52KL2Y "\epoc32\localisation\*.rpp and *.info files are not reported 
+		by the build tools as releaseables". All of the files placed in epoc32\localisation
+		are now reported by MAKMAKE as generic releasables.
+	23)	Fix defect ROS-52XGQY "fixupsym.pl is broken by recent MAKMAKE changes" and improve
+		speed of directory scanning (still takes too long though...)
+	24)	Add "what" and "check" reporting to the tools part of genbuild.pl
+	25)	Change makedef.pl to allow filenames with drive letters, and adjust to support both 
+		2.4.5 and 2.5 versions of the CodeWarrior linker.
+	26)	Convert all Perl scripts to use FindBin rather than explicit scanning of the PATH variable.
+	27)	Fix defect FOD-53SN8N "Can't pass more than 1024 characters into ar". by changing cl_gcc.pm 
+		to build the archive files with the full pathnames of the temporary files. This avoids the 
+		need to use "cd xxx;", which caused MAKE.EXE to use a DOS batch file to execute the command.
+	28)	Changed EVALID.PL to ignore the pathnames leading to object files when comparing libraries and
+		MAP files. Also arranged to ignore the MAP file lines involving .stab and .stabstr information.
+	30)	Fix defect THY-54BG7T "Error when invoking GNU make directly" by duplicating the
+		PATH & Path handling from the BLDMAKE-generated makefiles
+	31)	Fix defect PLD-54FQ6U "Recompiling for ARM after making source changes results in link failures"
+		by reinstating the deletion of the .in file prior to calling "ar".
+	32)	Fix a few places where MAKMAKE assumed that pathnames do not contain spaces
+	33)	Add the CW_IDE platform (cf VC6) and implement it in ide_cw.pm with an associated template
+		for the generated .xml file.
+	34)	Restructure MAKMAKE.PL + MMP.PM file handling as SetVarsFromMmp, so that ide_cw.pm can call back
+		to reprocess the MMP file for other platforms.
+	35)	Adjust cl_codewarrior.pm to match the CodeWarrior Symbian Compiler Plugin, and fix a defect with
+		EXPORTUNFROZEN generating the import library from the wrong def file.
+	36)	Change winutl.pm to avoid the LINK.EXE version check for WINSCW builds.
+	37)	Change EVALID.PL to ignore more variations on pathnames when comparing .MAP files
+	38)	Add compare_summary.pl, a utility for comparing two lots of scanlog.pl output.
+
+2)	Uma
+	1)	Fix Defect JUA-53ULTP "abld reallyclean wins" waits for the user input 
+		in order to finish execution"
+
+Version 0.01.301
+================
+(Made by William, 07/08/2001)
+
+1)	William
+	1)	Require 5.005_03 in BLDMAKE and MAKMAKE, so that pre 518 versions of Perl will
+		explicitly fail early rather than fail during FindBin.
+	2)	Extend support for EPOCROOT-relative paths to "SOURCEPATH" keyword, so that
+		generated source files can be stored in the EPOC32\Build tree. Use something like
+		
+		  SOURCEPATH  \epoc32\build\generated\http
+		  SOURCEPATH  +\build\generated\http
+
+		to get files in %EPOCROOT%epoc32\build\generated\http.
+	3)	Remove unnecessary EPOCROOT check in epocaif.pl
+	4)	Turn up optimisation level in CodeWarrior UREL builds.
+	5)	Change bldmake.pl to that "bldmake plat all" works in the way you'd expect, printing
+		a list of all the supported platforms and the information for each one.
+	6)	Update the ASSP file support so that the keyword SINGLE names the associated
+		single ASSP and builds the additional platform description. Remove SISA.ASSP and
+		add "SINGLE SISA" to the MISA.ASSP file.
+	7)	Move all of the ASSP definitions out of E32PLAT.PM into .ASSP files.
+	8)	Add genutils\ecopyfile.pl which acts like "copy src dst" except that it won't
+		update dst if it's identical to src. Changed the various cl_*.pm modules in
+		Makmake to use perl -S ecopyfile.pl instead of schemes based on diff -s
+	9)	Abstract common parts of cl_gcc.pm, cl_win.pm and cl_codewarrior.pm into a shared
+		file cl_generic.pm, and adjust accordingly. This changes the interface expected by
+		MAKMAKE.PL, so the ide_vc6.pm file was also changed.
+	10)	Provide cl_generic.pm support for accumulating the various MAKEWORK targets, and
+		doing all of the directory creation.
+	11)	Provide generic build of resource, bitmap and AIF files into \epoc32\data\Z, with
+		backwards-compatibility copying from the central place into the \epoc32\release
+		directories. This copying will stay for the emulated Z drives, but could be
+		removed for the ARM targets.
+	12)	Implemented support in the Win32-based platforms for DLLs which are both statically
+		and dynamically linked (e.g. FXCM.DLL). This consists of putting the word
+
+			COPY_FOR_STATIC_LINKAGE
+
+		in the START WINS ... END section, and causes the generated makefile to build the
+		DLL into the target directory and then copy it into the release\xxx\yyy directory
+		used to resolve static linkage. This removes the need for some extension makefiles.
+	13)	Reinstated some lost "perl -w" and "use strict;" checking for the "DEB" version 
+		of e32toolp.
+	14)	Revisited the "no target directory for WINC" and "missing TAREGTPATH for resources"
+		handling. It's now consistent throughout, and avoids paths which expand to include
+		two consecutive separators. In the process, I discovered that WINC was building
+		SYSRESOURCE things into an "emulated Z drive" for WINC: clearly wrong so I applied
+		the "no target directory policy" for WINC as well.
+	15)	Added "-w nounusedexpr" to the list of globally disabled warnings in CodeWarrior
+		builds: this unhelpfully reports uses of va_start(), TPckgBuf<TInt> and other
+		entirely reasonable things.
+	16)	Moved linkdeps.pl into e32toolp\bldmake, and deleted the old BATCH component
+	17)	Added make.exe to e32toolp\group and bootstrap it via setupprj.bat. This is the
+		Win32 native build of make 3.79.1, compiled with the HAVE_CASE_INSENSITIVE_FS option.
+	18)	Changed BLD.INF syntax to accept
+
+		    makefile    extension_makefile
+		    nmakefile   extension_makefile   // invoke with nmake
+		    gnumakefile extension_makefile   // invoke with make
+
+		Currently "makefile" is a synonym for "nmakefile", but eventually I'd like to change
+		it over and get rid of "gnumakefile" which is rather ugly.
+		Currently the only "gnumakefile" extension Makefile is in RCOMP.
+	19)	Changed BLDMAKE.PL and ABLD.PL to use MAKE rather than NMAKE, and generate the 
+		appropriate GNU-style Makefiles in the \epoc32\build tree. This required a change
+		to make 3.79.1, which is now labelled with "(Symbian build 002)".
+	20)	Changed scanlog.pl to detect errors and warnings produced by MAKE as well as NMAKE.
+
+1)	GregZ
+	1)	Add first cut of MMP file support for specifying additional compiler options.
+		The syntax is
+
+		    OPTION <keyword> <rest of line>
+
+		where the keywords are interpreted by the MAKMAKE back-ends. Currently the
+		recognised keywords are CW, GCC and MSVC, and there is enough support to
+		deal with "OPTION CW -W off" for turning off warnings in CodeWarrior builds.
+
+
+Version 0.01.300
+================
+(Made by William, 02/05/2001)
+
+NB. Requires ActiveState Perl 518 or later, otherwise MAKMAKE fails due to problems with FindBin.pm
+
+1)	William
+	1)	Changed MAKMAKE to use WINC\UREL\AIFTOOL.EXE rather than WINC\UDEB
+	2)	Changed MAKMAKE to add "abld listing" support for WINS and WINSCW builds
+	3)	Changed MAKMAKE support for "abld listing" so that the assembler listings
+		are named 
+		
+		    <source_basename>.lst.<abi>
+		    
+		e.g. UP_TRP.lst.ARM4, UP_TRP.lst.WINS etc. Previously they were all called UP_TRP.lis
+		Also changed the philosophy slightly: the listing file is still generated in the
+		\epoc32\build tree, but the LISTING target now always copies the file, rather than
+		copying it as a side-effect of generating it. This makes it easier to alternate 
+		between UREL and UDEB versions.
+	4)	Changed MAKMAKE to generate a MAP file for WINSCW release builds.
+	5)	Improved support for ABIs defined via ASSP files: you can now specify ABI, ASSP, 
+		ASSPABI and Single via the ASSP file, but with very limited error checking. 
+		Changed MISA and SISA into targets defined by ASSP files to prove that it works.
+	6)	Updated instcol.pl to allow for either WINSCW or WINS or both.
+	7)	Added EPOCAIF.PL to generate AIF files, and changed MAKMAKE to use it. This involves
+		adding an include path relative to the location of MAKMAKE.PL so that the SDK can ship
+		a single shared AIFTOOL.RH which will do for all DFRDs. This contributes to fixing
+		defect HET-4VEM87 "Location of release\winc on SDKs places restrictions on developers".
+	8)	Fix defect ROS-4VNJTC "EVALID doesn't correctly compare x86 import libraries" by
+		using "dumpbin /symbols /exports" as suggested.
+	9)	Removed MNT.CMD from the moribund setver.bat script
+
+
+Version 0.01.226
+================
+(Made by Morgan, 08/03/2001)
+
+1)	Morgan
+	1)	Altered MAKMAKE GCC platform (CL_GCC.PM) to include intrinsic libraries
+			EDLLSTUB.LIB	- class Dll::
+			EGCC.LIB		- helper functions not in EUSER.LIB
+
+
+Version 0.01.225
+================
+(Made by Dennis, 05/02/2001)
+
+1)	William
+	1)	Fix defect HEY-4S7N73 "MAKMAKE doesn't force GCC to pass include directories to AS" by
+		forcing the .s extension on assembler files to be uppercase. This causes GCC to put the
+		assembler source file through the preprocessor first, which allows us to use the
+		C preprocessor to organise assembler source. This area will need revisiting when we
+		change to a non-GCC compiler for v7.
+	2)	Fix defect ROS-4TAGHW "MAKMAKE should put .EXP files into the \epoc32\build tree"
+	3)	Removed all remaining traces of MCORE - this will imply BLD.INF changes to remove
+		it as well, since it's no longer a recognised platform.
+	4)	Removed tool-related .IPR files, and the SETUPPRJ support for them
+	5)	Fix defect ROS-4TFGCK "BLDMAKE -keepgoing does not prevent attempts to export 
+		missing files" by rearranging the EXPORTS code in bldmake.pl
+
+2)	William
+	1)	Implement initial support for CodeWarrior 6.0 compiler, as WINSCW defining __CW32__
+	2)	Revert to using LIB.EXE for generate import libraries, as MWLD doesn't seem to
+		support this functionality.
+
+3)	Zill
+	1)	Fix defect ROS-4TFGAN "scanlog.pl should detect and report bld.inf warnings"
+
+
+Version 0.01.224
+================
+(Made by Pete, 19/01/2001)
+
+1)	William
+	1)	Fix defect EDNRCHN-4DAMG8 "Small problem with MAKMAKE" by requiring the LINK.EXE
+		output to contain a "version" line.
+	2)	Don't export the DISTRIBUTION.POLICY document to engdoc\e32toolp, to fix
+		defect ARG-4RJFNV "E32ToolP Exports a distribution.policy file ..."
+	3)	Fix defect EDNABRY-4MLEWA "EPOCROOT error message could be more informative" by 
+		checking separately for the unsupported use of a drive letter.
+	4)	Apply the fix for empty path elements to all the other E32TOOLP scripts which
+		use the same algorithm.
+	5)	Fix defect ROS-4SMKB6 "MAKMAKE doesn't check TARGETPATH strongly enough"
+	6)	Fix defect EDNAWIR-4NAM7R "Not possible to include a library for DEBUG only" by
+		implementing the DEBUGLIBRARY keyword: MMP.PM now builds two lists, with LIBRARY
+		statements contributing to both and DEBUGLIBRARY only contributing to the debug list.
+		Tested with FLOGGER.LIB in PPP.MMP, which removed the MSVC LNK4005 warning.
+	7)	Documented SRCDBG and DEBUGLIBRARY
+	8)	Implement "BLDMAKE -K" to support IPR-filtered builds, and make genbuild.pl pass
+		the keepgoing flag to bldmake.
+	9)	Fix defect ROS-4RWF42 "MAKMAKE clean targets should not use wildcards", by
+		converting the WHAT target into a RELEASABLES= list, then using it in both
+		WHAT and CLEANRELEASE. This preserves the identity that CLEANRELEASE should
+		remove exactly the things listed by WHAT.
+	10)	Fix defect EDNWROS-4NULY5 "MAKMAKE can generate Makefiles containing lines longer 
+		than 2048 characters" by using \ continuation in the relevant places.
+
+2)	Jonathan
+	1)	Added memtrace tool and documentation.
+
+
+Version 0.01.223
+================
+(Made by RobertJ, 13/12/2000)
+
+1)	William
+	1)	Update MAKSYM.PL to cope with multiple ROM images in a single ROMBUILD.LOG file.
+		Derive the name of the SYMBOL file from the ROM image name, except for the
+		first ROM image where the SYMBOL file name can be overridden by the optional
+		commandline argument. "maksym x y" will therefore behave the same as before, but
+		"maksym x" will use a sensible name related to the ROM image rather than MAKSYM.LOG.
+	2)	Update FIXUPSYM.PL to cope with multiple ROM images by stopping at the end of the
+		first image. It needs to do this because the same file could appear in multiple
+		extension ROMs, and live at a different address in each one.
+	3)	Rearrange FIXUPSYM.PL internals to test things in a better order, and to give more
+		meaningful explanations for some "can't fixup" conditions.
+	4)	Fix defect ROS-4S6HRP 'MAKSYM can fail with "Empty compile time value..."' in MAKSYM.PL,
+		FIXUPSYM.PL and HPSYM.PL by converting an empty path element into "."
+
+1)	William
+	1)	Update genbuild.pl to support licensee builds
+		- Removed the old PVCS support and references to M*CORE
+		- Replaced batch\build\special.bat with canned special case command
+		  sequences in genbuild.pl
+		- Validate components by checking for the presence of the BLD.INF file
+		  and issuing a "MISSING COMPONENT" warning for those which don't have
+		  BLD.INF files. Only components which pass this test are included in the
+		  generated CMD files.
+		- Generate additional script xxx_pbuild.cmd, so that genpbuild.pl functionality
+		  is supported by genbuild.pl
+
+ 
+Version 0.01.222
+================
+(Made by Alastair, 16/11/2000)
+
+1)	William
+	1)	Fix defect EDNABRY-4QDEN5 "Scanlog.pl doesn't pick up petran errors" by
+		adding a check for "ERROR: bad relocation:", which is actually a warning that
+		PETRAN has had to guess about the meaning of a relocation.
+	2)	Fix defect EDNJLID-4QCGPS "Instcol batch tool not compatible with Win2000" by
+		replacing the batch file with a Perl script.
+
+2)	Alastair
+	1)	Changed prepfile.pm so that it reports information about files
+	  	included into the file that it's processing.  Updated makmake and
+	  	bldmake error reporting to take advantage of the new information.
+	2)	Added new build tool, metabld.pl.  For more information, see the
+	  	documentation in \e32toolp\docs\metabld.rtf, which is exported to
+	  	\epoc32\engdoc\e32toolp\.
+
+
+Version 0.01.221
+================
+(Made by Nicolas, 10/10/2000)
+
+1)	William
+	1)	Fix defect EDNWROS-4N4JLF "ranlib can damage archive files" by not
+		running ranlib. The ar command already generates the symbol
+		directory, so ranlib is unnecessary.
+
+2)	Nicolas
+	2)	Introduced SRCDBG makmake keyword.  When it is specified (no
+		argument), UDEB builds do not use the -O flag any more.  This is
+		hopefully a temporary work-around that will be removed when every
+		EPOC components build and run ok without optimisations.
+	
+
+Version 0.01.220
+================
+(Made by Dennis, 13/09/2000)
+
+1) William
+	1) Sundry M*Core changes to MAKMAKE
+	2) Added "DefFile" key to E32PLAT.PM PlatHash, for selecting the style of DEF file or
+	   predefined exports: this is used to implement the decision that MCORE will use BMARM
+	   def files until such time as we find a name-mangling difference between GCC 98r2 & 99r1
+	3) Put a test into BLDMAKE.PL so that the path is extended with the mcore-tools\pe\bin
+	   directory for MCORE and MCGM builds. This allows the bootstrap to build for MCORE via
+	   extension makefiles.
+	4) Fixed various warnings from perl -w, e.g "ambiguous used of {xxx} resolved to {"xxx"}"
+	5) Corrected messages about "EXPORTFROZEN" to say "EXPORTUNFROZEN"
+	6) Added -Wno-unknown-pragmas to the GCC makefiles, to suppress MCORE warnings. It seems to
+	   be harmless on the 98r2 GCC, so I've made it standard.
+	7) Fix defect EDNCMOS-4NJJ5L "makmake error message incomplete if UID2 is wrong."
+	8) Fix defect EDNRANS-4NQKXP "Can't build Opltran WINC tool under vc6"
+	9) Change EPOCRC.PL to call RPREP, to support the generation of LOCKIT.
+
+
+Version 0.01.213
+================
+(Made by Morgan, 5/7/2000)
+
+1) Anon
+	1) Changes to
+	Change 43137
+	//EPOC/development/base/6.0/e32toolp/BLDMAKE/BLDMAKE.PL#3
+	//EPOC/development/base/6.0/e32toolp/PLATFORM/CL_WIN.PM#3
+
+
+Version 0.01.212
+================
+(Made by MarkCa, 16/05/00)
+
+1)	Alastair
+	Fixed COMABRY-4JGKQ9 "Test T_R32 fails in UREL under WINS/WINC", by specifying
+	the /Op option for all WINS/WINC UREL builds.  This flag disables optimisation of
+	floating-point comparisons and gives better consistency in this area.
+
+
+Version 0.01.211
+================
+(Made by Morgan, 7.4.2000)
+
+1)	William
+	Removed EBLD.BAT
+	Updated MAKMAKE.IPR to reflect changes to Perl modules
+	Removed LISTASM.IPR now that LISTASM.BAT has gone
+
+
+Version 0.01.210
+================
+(Made by Alastair, 15.3.2000)
+
+1)	Alastair
+	MAKMAKE
+	1)	PROJECT .mmp keyword no longer recognised by Makmake.
+	2)	SUBPROJECT .mmp keyword no longer recognised by Makmake - SOURCEPATH
+		keyword to be used instead.  SOURCEPATH works in the same way except
+		that relative paths specified with the SOURCEPATH keyword are considered
+		to be relative to the .mmp file directory rather than the top-level
+		project directory.
+	3)	UNICODEUID .mmp keyword no longer recognised by Makmake - there's now
+		only one keyword for specifying UIDs - UID - which applies only for
+		UNICODE builds of EPOC now that narrow builds are no longer supported.
+	4)	Documentation in \e32toolp\docs updated for this release.
+
+Version 0.01.209
+================
+(Made by Alastair, 10.3.2000)
+
+
+1)	Alastair
+	1)	Created new module, Trgtype.pm, which is loaded by Makmake and
+	  	contains all the data pertaining to target types as Makmake
+	  	understands them, including the mangled names for exports and second
+	  	UIDs for polymorphic DLLs.
+		Adding targettypes for new plugins should now simply be a matter of
+		adding a new entry in the data structure contained in Trgtype.pm.
+
+	2)	Reorganised Makmake.pl and Mmp.pm.
+
+	3)	Fixed regression introduced in version 207 - NOTIFIER target type and
+		FEP UID affected.  Also updated IDE_VC6.PM to counter NMAKE treating
+		'$' symbols as macros when these symbols occur in mangled function
+		names.
+
+	4)	Added warning hint that generated headers should be included with
+		angle brackets since these headers are generated into system include
+		directories.
+
+	5)	Change default .def file location from
+			\<project>\B<platform>\
+		to
+			..\B<platform>	(relative to the .mmp file directory)
+
+	6)	Changed build directory structure from 
+			\EPOC32\Build\<project>\<executable_basename>\<platform>\<build>\
+		to
+			\EPOC32\Build\<absolute_path_to_mmp_file>\<mmp_file_basename>\<platform>\<build>\
+
+	7)	Added new SOURCEPATH .mmp keyword.  This keyword works in exactly the
+		same way as the existing SUBPROJECT keyword, except that relative
+		paths (those specified without an initial backslash) will be treated
+		as relative to the directory containing the .mmp file rather than the
+		top-level directory specified by the PROJECT keyword.  The PROJECT and
+		SUBPROJECT keywords will soon be removed from Makmake altogether.
+
+	8)	The SOURCEPATH and bitmap-specific SOURCEPATH statements now default
+		to the directory containing the .MMP file.
+
+	MAKMAKE & BLDMAKE
+	1)	Changed default makefile directory structure from 
+			\EPOC32\Make\<project>\<platform>\
+		to
+			\EPOC32\Build\<absolute_path_to_mmp_file>\<mmp_file_basename>\<platform>\
+
+	2)	Changed bldmake directory structure from
+			\EPOC32\Bldmake\<project>\
+		to
+			\EPOC32\Build\<absolute_path_to_bld.inf_file>\
+
+		Note that batch files listing tests created by bldmake will therefore
+		be created in this new location, and the .IBY files used in building
+		base roms will be generated into
+		\EPOC32\ROM\<absolute_path_to_bld.inf_file>\.
+
+		The batch files for running these tests will be ROM-built to Z:\test
+		with a name which reflects the path to the relevant bld.inf file, e.g.
+		Test\F32TEST.GROUP.ARMI.AUTO.BAT.
+
+	BLDMAKE & ABLD
+	1)	Added new section to BLD.INF files for exporting files for use with
+		test code from source.  Syntax is
+
+		PRJ_TESTEXPORTS
+		[<source path>\<source file>]	{<destination>}
+		// list each file exported from source on a separate line
+		// {<destination>} defaults to BLD.INF dir
+
+		The files will be exported as part of "ABLD TEST BUILD ..." as well as
+		with "ABLD TEST EXPORT".  "ABLD TEST CLEANEXPORT" will remove the
+		copied files.
+
+	2)	Added new ABLD command, ABLD LISTING, to create an assembler listing
+		for a particular source file.  Syntax is
+		
+		ABLD [test] LISTING [-k][-v] [<platform>] [<build>] [<program>] [<source>]
+
+		Specify just the basename of the source file.  The listing file will
+		be created in the build directory and copied to the same directory as
+		the source file.
+		This command replaces the LISTASM tool, which has now been removed.
+
+	3)	ABLD.PL now changes directory to the directory containing the relevant
+		BLD.INF file when it is invoked.  This change means that extension
+		makefiles should be able to specify paths relative to the BLD.INF file
+		specifying them rather than absolute paths.
+
+	LISTASM
+	1)	Replaced by ABLD LISTING command.  Type "ABLD HELP LISTING" for
+	  	syntax.
+
+
+	GENERAL
+	1)	Updated SETUPPRJ.BAT to export E32TOOLP tools documentation from
+		\e32toolp\docs to \epoc32\engdoc\e32toolp\.
+		Updated this documentation so that it it up-to-date with this release
+		of E32TOOLP, and will hopefully be edited for every future release.
+
+	2)	Removed PARSECOM.PM. Makmake, Efreeze and Makedef now use Perl
+		standard library command-line parser module - Getopt - instead.  This
+		change means that only a hyphen ("-"), rather than a forward slash
+		("/") or a hyphen, can be used to specify switches for these programs.
+
+	GENBUILD
+	1)	Added call for tools platform to create libraries now that some
+		components create libraries for this platform.
+
+2)	Jonathan
+	FIXUPSYM
+	1)	Only relink executables if they're not already fixed up for the correct
+	  	ROM addresses.
+
+
+Version 0.01.208
+================
+(Made by Pete 24/02/00)
+
+1)	Alastair
+	MAKMAKE
+	1)	Applied hacks for building EUSER.DLL in the MSVC IDE as they
+		are applied to command-line builds of EUSER.DLL.
+
+2)	Jonathan
+	1)	Merged in fixupsym and hpsym tools from ER5u e32toolp v134.
+
+
+Version 0.01.207
+================
+(Made by Simon, 01/02/00)
+
+1)	Simon
+	MAKMAKE
+	1)	Changed hardwired directory to new source structure
+	2)	'PROJECT' keyword is now ignored in mmp files
+
+Version 0.01.206
+================
+(Made by Dennis, 19/01/00)
+
+1)	Alastair
+	GENERAL
+	1)	Removed obsolete tstparse.pl.
+
+	MAKMAKE
+	1)	Fixed Symbian defect EDNMRED-4E5NSD "VC6 always asks to build a dummy
+		RSS file before execute".
+	2)	Tools platform now refuses to build anything but EXE target types.
+	3)	Now using perl script emkdir.pl to create directories in makefiles
+		rather than mkdir because it can make paths all at one go under
+		Windows95/98.
+	4)	Added code so that Win32 resources can be specified with a path relative
+		to the .MMP file as well as absolutely.
+	5)	Changed flags for generating .PDB files in WINS builds so that .MMP
+		files with a targetpath specified produce just one .PDB file in the same
+		directory as the executable created.  This change should also enable
+		debugging executables with target paths on different PC drives.
+	6)	Created new .MMP Target type, "notifier", with a 2nd UID 0x10005522 and 
+		1st export "IMPORT_C CArrayPtr<MEikSrvNotifierBase>* NotifierArray()".
+		The targetpath for the executable will default to "system\notifiers".
+
+
+	MAKMAKE & BLDMAKE
+	1)	Added code to read a .ASSP module in \EPOC32\Tools for specifying a new
+		ASSP.  Syntax for the module is
+
+			ABI		[ARM4|ARMI]		# default is ARMI
+		
+		"ABI" specifies the Application Binary Interface for ASSP releasables, such
+		as EDISP.DLL, which do not specify .MMP keywords ASSPABI, ASSPLIBRARY,
+		or ASSPEXPORTS.
+	2)	Added .ASSP modules for MMAD and MAWD, taking them out of E32PLAT.PM.
+	3)	Removed platforms ARM3, MX86, SARM3, SROS, including ARM3 flags in
+		Cl_arm.pm.
+	4)	Changed MEIG and SEIG ASSPs to build for ARM4 rather than ARM3 hardware.
+	5)	Changes to support partially MCORE development
+		a) MCORE and MCGM have been added as platforms to E32Plat.pm.
+		b) Cl_arm.pm has been renamed Cl_gcc.pm and MCORE-specific tools options
+		incorporated.  The system path in MCORE makefiles is prefixed with the path
+		to the MCORE gcc tools rather than the ARM gcc tools.
+	6)	Changes put in as a side-effect of making the MCORE changes
+		a)	GENERIC_WINS is no longer defined for preprocessing .MMP and BLD.INF
+		files to mean WINS but not WINC or TOOLS.
+		b)	__GCC32__ and __VC32__ are now defined for .MMP and BLD.INF
+		preprocessing for compiler-specific conditions.
+		c)	Minor changes to MAKMAKE.PL and MAKDEPS.PM.
+
+
+	GENBUILD
+	1)	Removed references to ARM3.
+
+
+Version 0.01.205
+================
+(Made by Peter, 15/12/99)
+
+MAKMAKE
+1)	Peter
+	1)	Modified E32PLAT.PM so that MEIG builds use ARM4 rather than ARM3.
+
+
+
+Version 0.01.204
+================
+(Made by Morgan, 3/12/99)
+
+1)	Alastair
+	GENERAL
+	1)	Removed dependence on latest version of perl from setupprj.bat, which was
+		introduced in version 203.
+	2)	Removed MNT.BAT and associated files.
+	3)	Added emkdir.pl, a script for creating directory paths.
+
+
+Version 0.01.203
+================
+(Made by Anonymous)
+
+1)	Alastair
+	MAKMAKE
+	1)	Changed VC6 default configuration for all executables (WINS, WINC,
+		TOOLS) to Debug rather than Release.
+
+	2)	Removed -undef flag from the call to CPP to generate dependencies
+		while it's not being used in compiling the source code.
+
+	3)	Changed order of link dependencies in makefiles so that object files
+		generated from the source files of a project are listed before import
+		libraries the project links to.  This change means that the object files
+		will be built even if a required import library is missing, rather than
+		the build of the project failing immediately with nothing being built.
+
+	4)	Added new perl script, ERMDIR.PL, to \EPOC32\Tools.  Makmake command-
+		line generated makefiles now use this script to remove build directories
+		with ABLD CLEAN, rather than deleting individual files.  RMDIR /S/Q
+		unfortunately doesn't work under Windows95/98, hence the need for a
+		script.
+
+	5)	Fixed minor Windows95/98 syntax error in IDE workspaces:
+			IF NOT %ERRORLEVEL%==0 ...
+		has been changed to
+			IF ERRORLEVEL 1 ...
+
+	6)	(From Chris) added USERLDFLAGS macro for passing to calls to the GCC
+		linker for re-linking executables for use with a debugger.
+
+	7)	Added some dependency information for resource targets in the VC6
+		supplementary makefile so that rebuilding is attempted more
+		appropriately.
+
+	MAKMAKE & BLDMAKE
+	1)	Added -undef flag to the call to CPP to preprocess .MMP and BLD.INF
+		files.  This fixes Symbian defect EDNRFID-4CPJY2 'Can't have source
+		directory called "ARM"'.
+
+	2)	Changed .MMP and BLD.INF preprocessor module so that it can be switch
+		between upper-casing the contents of the processed file or leaving case
+		alone.  BLDMAKE now uses the leave-case-alone mode so that exported files
+		retain the case specified in the BLD.INF file.  MAKMAKE uses the upper-
+		case mode.
+
+	BLDMAKE
+	1)	Extended ABLD -keepgoing option so that it is applied for NMAKE calls on
+		particular project makefiles as well as to calls on the meta-makefiles for
+		each component.
+
+	2)	Improved ABLD error checking so that calls such as ABLD BUILD EWSRV ARMI
+		will report an error because the platform is specified after the program
+		rather than going on to build EWSRV for all supported platforms.
+
+	3)	Bldmake bldfiles will now overwrite read-only abld.bat files.
+
+	EFREEZE
+	1)	Changed EFREEZE.PL to check whether the frozen .DEF file is writeable if
+		there are new exports to be added to this file.  If the file is not
+		writeable the script will exit with a suitable error message.  Fixes 
+		Symbian defect EDNABAN-4CDFAK "Some abld commands die with read-only
+		files".
+
+	GENERAL
+	1)	Changed SETUPPRJ.BAT to use GNU MAKE rather than NMAKE.  This means the
+		Cygnus GNU tools need to be in the path before E32TOOLP can be built.
+
+
+Version 0.01.202
+================
+(Made by Alastair 12/10/99)
+
+1)	Alastair
+
+	BLDMAKE & MAKMAKE
+	1)	Removed support for the old GCC compiler.  Building for platforms MARM
+		and SARM is no longer supported.  If MARM is specified as a platform in
+		the BLD.INF file then it will still be expanded to mean ARM4, ARMI and
+		THUMB but really these platforms should be listed explicitly or the
+		default relied upon.
+
+	MAKMAKE
+	1)	Added list of source macros defined for preprocessing to the help
+		displayed by MAKMAKE -PLAT <platform>.  This list isn't complete, since
+		the definition of some macros will depend upon the contents of a
+		particular .MMP file.  Unlisted macros are as follows:
+			__MARM_<ABI>__ if the platform CPU is MARM
+				(where <ABI> may vary according to .MMP contents),
+			Any macros defined in the .MMP file,
+			__DLL__ or __EXE__ respectively if the general target type is DLL or EXE,
+			WIN32 and _WINDOWS if the project links to Win32 libraries,
+			_UNICODE,
+			_DEBUG or NDEBUG for Debug and Release builds respectively.
+
+	2)	Added extratarget, RECREATEWORKSPACE, to the supplementary MSVC6
+		workspace makefile.
+		This target is intended for use as a custom tool within the MSVC IDE, for regenerating
+		workspace once the .MMP file has been edited within the IDE.  To install the target as
+		a custom tool in the IDE, select Tools->Customise...->Tools, and choose a name for the
+		tool, e.g. "Recreate Workspace".  Next, type "nmake.exe" as the command and
+		"-nologo -f $(WkspDir)\$(WkspName).sup.make recreateworkspace" as the program arguments.
+		Leave the "initial directory" field blank, and tick the "Close window on exiting" checkbox.
+		Having edited the .MMP file for a project, select the new tool from the tools menu to
+		recreate the workspace.  If the commands have run correctly, you will be prompted to
+		reload the workspace.
+
+	3)	Changed makefiles to use DIFF.EXE (part of the GCC distribution from GCC
+		version 523) rather than FC4BAT.EXE to compare generated headers.
+		FC4BAT.EXE is no longer required.
+
+	4)	Changed LIBRARY targets in static library makefiles so that they depend
+		upon the UDEB and UREL targets.  This change means that the ABLD LIBRARY
+		command will create static libraries as well as import libraries.
+
+
+	BLDMAKE
+	1)	Added BLDMAKE PLAT <platform> command, which lists the macros defined
+		for the preprocessing of PRJ_MMPFILES and PRJ_TESTMMPFILES sections of
+		BLD.INF files for the <platform> specified.
+
+	2)	Now dynamically loading module PREPFILE.PM, which depends upon
+		CHECKGCC.PM, so that CPP.EXE is checked only if it is going to be used.
+		This change addresses ER5u defect EDNDFER-4BGN9L "BLDMAKE should not insist
+		on CPP being in the right place unless it's going to use it."
+
+	3)	Bldmake now generates a list of programs supported by each platform in a
+		Perl data structure, so that ABLD can tell whether a particular program
+		as specified on the ABLD command-line should be built for a particular
+		platform.  Fewer obscure errors should now be produced by ABLD,
+		especially since error reporting has been tidied up somewhat.
+
+	4)	If the [platform] or [build] parameters are missed out of the ABLD
+		command-line, they will be assumed to be "ALL".  This means that commands
+		such as ABLD BUILD ECONS will build all the UDEB and UREL versions of
+		ECONS for all the platforms specified in the BLD.INF file, as would
+		ABLD BUILD ALL ALL ECONS.  This change means, as far as Engineering
+		components are concerned, that components must avoid using the names of
+		platforms and builds used during overnight building as the basenames of
+		.MMP files or extension makefiles - MAWD, MISA, MCGA, TOOLS, UDEB, UREL,
+		etc.
+		
+		These last 2 changes address the issues raised by ER5u defect EDNDFER-4BPE3P
+		"It would be good if you didn't have to specify a platform".
+
+	5)	Removed the "hidden" status of ABLD command CLEANEXPORT, so that it
+		appears in the list of available commands.  This command will delete all
+		the files generated with ABLD EXPORT.
+
+	6)	Changed component makefiles that BLDMAKE generates so that
+		\epoc32\gcc\bin on the current drive is added to the front of the PATH.
+		This change will ensure that GCC tools on the current drive are used where
+		custom builds make use of the GCC tools.
+
+	EVALID
+	1)	(From William) Updated EVALID.PL which can use \epoc32\tools\pfsdump to
+		compare two EPOC permanent file stores.
+
+	GENBUILD
+	1)	(From William) some improvements to scanlog.pl.
+
+	2)	(From William) a new alternative overnight genbuild log scanning script -
+		complog.pl.
+
+
+
+Version 0.01.201
+================
+(Made by Alastair, 17.9.99)
+
+1)	Alastair
+
+	LISTASM
+	1)	Fixed problem with projects where the basename of the target is
+		different from the basename of the project's makefile.
+	2)	Added code to generate the build directory to contain the generated
+		listing file.
+
+	MAKMAKE
+	1)	Fixed ER5U defect EDNGTIN-4BTGJU "Fatal error in vc6 .SUP.MAKE file".
+
+
+Version 0.01.200
+================
+(Made by Alastair, 9.9.99)
+
+1)	Alastair
+
+	GENBUILD
+	1)	(From William) Changed batch file output so that a list of executables 
+		that should have been produced is added to the log file.
+	2)	(From William) Added SCANLOG.PL, which summarises the output from
+		GENBUILD.  Call "perl -S scanlog.pl < [genbuild_logfile]".
+
+	MAKMAKE
+	1)	Help now displays the EXPORTUNFROZEN keyword and the target types WLOG,
+		VAR and KEXT.
+	2)	Changed FEP targettype first export to the correct version following the
+		change made to the function in CONE version 160.  This fixes ER5u defect
+		EDNDBAR-4BHH87, "MAKMAKE's knowledge of the FEP interface is out of date".
+
+	BLDMAKE
+	1)	Changed ROM names of the batch file for running the tests for a
+		component from <component>.auto.bat and <component>.manual.bat to
+		<component>.<platform>.auto.bat and <component>.<platform>.manual.bat
+		respectively.  This change will only affect E32TEST and F32TEST, since
+		it's only the rombuild for these 2 components which makes use of the
+		experimental .IBY files generated by BLDMAKE.
+
+
+Version 0.01.127
+================
+(Made by Morgan, 26.8.99)
+
+1)	Alastair
+
+	MAKMAKE
+	1)	Implemented new .MMP keyword, EXPORTUNFROZEN, which means "generate an
+		import library containing frozen AND unfrozen exports".  If this keyword
+		is specified, an import library containing all exports will be created
+		as a side-effect of building the main target, instead of an import library
+		being created directly from the frozen .DEF file.
+		Note that, for the new ARM targets, extra import libraries for
+		compatible targets will not be created, as they are when the import
+		library is created directory from the frozen .DEF file.
+		Note also that warnings about unfrozen exports will still appear.
+
+	2)	Trapped error where duplicate bitmap targets are specified in a .MMP
+		file.
+
+	3)	Removed change to make the bitmap header lower-case in the makefile now
+		that BMCONV doesn't use the case to decide the format for the enum in
+		the generated header.
+
+	4)	Changed PLATFORM\IDE_VC6.PM to make Debug rather than Release builds the
+		default in the VC6 IDE.
+
+	5)	Added 2 new experimental IBY file creation keywords, ROMTARGET and
+		RAMTARGET.
+
+	6)	Changed the target in makefiles called by ABLD -WHAT to WHAT rather than
+		RELEASABLES - this doesn't apply to extension makefiles, where the
+		target is still RELEASABLES.
+
+	7)	Removed -LIST option which used to cause assembler listings to be
+		generated.  This is now done with the new LISTASM tool, and support for
+		this tool has been added to the generated makefiles.
+
+	BLDMAKE
+	1)	Allowed "ALL" to be specified as a platform so that it is possible to
+		build, e.g., makefiles for all supported platforms for a particular
+		project within a component using just one command.
+
+	2)	Updated BLDMAKE\EGMAK.FIL with some more information about how to write
+		extension makefiles for use with ABLD.
+
+	3)	BLD.INF processing now allows platforms to be added to and removed from the
+		default PRJ_PLATFORM list.  Keyword "DEFAULT", if specified, will be
+		expanded to the list of default platforms - WINS, ARMI, ARM4 and THUMB with
+		the new gcc compiler.  Prefix platforms to be removed from the default
+		list with a minus sign [-], and add platforms simply by specifying them
+		as usual.
+		(This feature was actually implemented some time ago).
+
+	4)	Added experimental code for creating .IBY files - this currently only
+		works for E32TEST and F32TEST using the command ABLD TEST ROMFILE.
+
+	5)	Added GENBUILD.PL (from William) and GENBUILD.BAT which produces an
+		effect not dissimilar to "ABLD BUILD" for a list of components.
+
+	6)	Added warning if the new gcc compiler is not installed that the new
+		platforms, ARMI, ARM4, THUMB, etc. will not be available.
+
+	LISTASM
+	1)	New tool to generate an assembler listing for a particular source file.
+		Syntax is
+
+		LISTASM [platform] [build] [source_file]
+
+		The tool searched for the .lis target corresponding to the source_file
+		in the platform makefiles in \EPOC32\Make, and executes the command to
+		generate the .lis directory along with the .o file in the intermediate
+		files directory, and then copy this file to the source_file directory.
+		Only GCC makefiles support this tool.
+
+
+Version 0.01.126
+================
+(Made by Alastair, 19.8.99)
+
+1)	Alastair
+
+	BLDMAKE
+	1)	Fixed problem with target FINAL not being called in extension makefiles.
+
+
+Version 0.01.125
+================
+(Made by Alastair, 18.8.99)
+
+1)	Alastair
+
+	GENERAL
+	1)	Jumped the version numbers because release 120 erroneously reports
+		itself as version 124.
+
+	2)	Added new #defines for BLD.INF and .MMP preprocessing for the new
+		compiler targets
+			ARMI defines MARM_ARMI
+			ARM4 defines MARM_ARM4
+			THUMB defines MARM_THUMB
+			ARM3 defines MARM_ARM3
+
+		These #defines aren't applied for ASSP-specific platforms such as MAWD
+		since we can't know the final ABI until we've processed the .MMP file.
+
+
+	MAKMAKE
+	1)	Added new .MMP keyword, ASSPABI, for use in deciding the ABI for
+		projects built for ASSP-specific targets.  See note MAKMAKE #1 for
+		E32TOOLP version 120 - ASSPABI is implied by ASSPEXPORTS or
+		ASSPLIBRARY.
+
+	2)	Removed support for creating VC5 makefiles.
+
+	3)	Added warning during Win32 makefile creation if MSVC6 Service pack 3
+		is not installed.
+
+	4)	Using -march=armv4t for ARM4, to allow direct use of BX in the kernel,
+		where the component is built for ARM4 but the platform can support thumb
+		instructions.
+
+	5)	Added 2 new target types, KEXT and VAR, for kernel extension DLLs and
+		variant DLLs respectively.  Variant DLLs export the function
+		VariantInitialise__Fv at ordinal one for ARM platforms, and link to
+		EVAR.LIB rather than EDLL.LIB.  Kernel extension DLLs link to EEXT.LIB
+		rather than EDLL.LIB.
+
+	6)	Added code to apply .MMP keyword ASSPABI implicitly for known kernel
+		target types - KEXT, LDD, PDD and VAR.
+
+	7)	Added new target type, WLOG, for WSERV logging DLLs.  These DLLs export
+		the function CreateDebugLog(int, TDesC16 &) at ordinal 1, and have
+		second uid 0x10003b23.
+
+
+	EFREEZE/MAKEDEF
+	1)	Minor change in E32UTIL\DEFUTL.PM so that an EXPORTS statement without
+		a subsequent EXPORT definition can have blank space following it.
+
+
+	BLDMAKE
+	1)	Renamed the batch file BLDMAKE creates from BLD.BAT to ABLD.BAT to give
+		it a name less likely to clash with batch files already in existence.
+		The "A" could be said to stand for "Automated".
+
+	2)	Changed ABLD.BAT syntax, which is now as follows
+
+		ABLD [test] BUILD ( ( [-check] | [-what] ) | ( [-k] [-s] [-v] ) )  [<platform>]  [<build> [<program>] ]
+			(this command combines the EXPORT, MAKEFILE, LIBRARY, RESOURCE, TARGET, and FINAL commands).
+		ABLD [test] CLEAN ( ( [-check] | [-what] ) | ( [-k] [-v] ) )  [<platform>]  [<build> [<program>] ]
+			(removes everything that would be created by the corresponding TARGET command)
+		ABLD EXPORT ( ( [-check] | [-what] ) | ( [-k] [-v] ) )
+			(copies the exported files to their destinations)
+		ABLD [test] FINAL  [-k] [-v]   [<platform>]  [<build> [<program>] ]
+			(allows extension makefiles to carry out any build activities necessary after other build activities have been completed)
+		ABLD [test] FREEZE  [-k] [-v]  [<platform>]  [<program>]
+			(freezes exported functions in a .DEF file)
+		ABLD HELP ( [commands] | [options] | [<command>] )
+			(displays lists of commands or options, or help about a particular command)
+		ABLD [test] LIBRARY  [-k] [-v]  [<platform>]  [<program>]
+			(builds the import libraries from the frozen .DEF files)
+		ABLD [test] MAKEFILE ( ( [-check] | [-what] ) | ( [-k] [-v] ) )  [<platform>] [<program>]
+			(creates makefiles or IDE workspaces)
+		ABLD [test] REALLYCLEAN ( ( [-check] | [-what] ) | ( [-k] [-v] ) )  [<platform>]  [<build> [<program>] ]
+			(as for the CLEAN command, but also removes exported files and makefiles)
+		ABLD [test] RESOURCE [-k] [-v]  [<platform>]  [<build> [<program>] ]
+			(creates resource files, bitmaps and AIFs)
+		ABLD [test] TARGET ( ( [-check] | [-what] ) | ( [-k] [-s] [-v] ) )  [<platform>]  [<build> [<program>] ]
+			(creates the main executable, and also the resource files, bitmaps and AIFs)
+		ABLD [test] TIDY [-k] [-v]  [<platform>]  [<build> [<program>] ]
+			(removes releasables which need not be released from a component)
+
+		Options -k, -s and -v can also be specified as -keepgoing, -savespace and
+		-verbose respectively. Specifying -k will mean unrelated build activies will be
+		carried out after errors, -s causes intermediate files to be deleted if building
+		the main executable is successful and -v displays the calls to tools taking
+		place within makefiles during building. Options -what and -check can also be
+		specified as -w and -c respectively. Specifying -what will display the files
+		which will be created or deleted by a particular command, while -check will
+		check that all the files which would be displayed by -what actually exist.
+
+
+2)	Jonathan
+
+	MAKSYM
+	1)	Relax sanity check so that only .text needs to be found in
+	  	rombuild.log.
+	2)	Include data files in the output.
+
+
+
+Version 0.01.121
+================
+(Made by Alastair, 4.8.99)
+
+1)	Alastair
+
+	GENERAL
+	1)	Added GROUP\BUILD.TXT which contains a brief explanation of how to build
+		E32TOOLP.
+
+	EFREEZE
+	1)	Fixed problem with 'EXPORTS' not being added to the top of empty frozen
+		.DEF files when freezing for the first time.
+
+	MAKMAKE
+	1)	Fixed problems with RELEASABLES targets in generated makefiles - target
+		paths for bitmaps were being missed out as was the data path for system
+		resources.
+
+	2)	Fixed problem with generating VC6 workspaces for projects incorporating
+		resource files.
+
+	3)	Added some #defines for source code preprocessing (there are no
+		corresponding #defines for .MMP preprocessing for these #defines):
+
+			Platform		#define
+			ARMI			__MARM_ARMI__
+			ARM4			__MARM_ARM4__
+			THUMB			__MARM_THUMB__
+			ARM3			__MARI_ARM3__
+			
+
+	BLDMAKE
+	1)	Removed TESTBATS target - batch files for test programs are now created
+		with "BLDMAKE BLDFILES" if required.
+
+	2)	Added temporary code to include ARMI, ARM4 and THUMB as targets for the
+		new gcc compiler if MARM is specified explicitly as a platform in a
+		BLD.INF file.
+
+	3)	Changed output from BLD -CHECK so that missing releasables are listed to
+		STDERR in the following format
+
+		MISSING: <first missing releasable>
+		MISSING: <second missing releasable>
+		  ...
+
+	4)	Changed "Nothing to do" report so that it is applied on a per-target basis
+		rather than on a per-makefile basis in the makefiles that BLDMAKE creates.
+		This means that the "Nothing to do" message is not produced by BLD -CHECK
+		or BLD -WHAT with projects that don't have any releasables or any test
+		releasables or any exports.
+
+	5)	Changed BLD.PL so that if ALL is specified as the build parameter, then
+		BLD.PL loops round the available builds for the platform making the
+		relevant calls to NMAKE rather than calling NMAKE once with the
+		corresponding ALL target specified.  This means that custom-build
+		makefiles written for use with BLDMAKE will no longer have to attempt to
+		deal with $(CFG)==ALL.
+
+
+
+
+Version 0.01.120
+================
+(Made by Alastair, 2.8.99)
+
+1)	Alastair
+
+	MAKMAKE
+	1)	Added support for the 3 new GCC compiler platforms - ARMI, ARM4 and
+		THUMB.  Also added support for ARM3, which is effectively old MARM 
+		built with the new GCC compiler.  Compatible import libraries are
+		produced as well as the import libraries for the new platform in
+		question - so, for example, if a DLL is built for ARM4 then an ARMI
+		import library will also be produced.
+		ASSP platforms built with the new compiler will build a selection of
+		interworking/plain arm executables depending upon whether ASSPEXPORT or
+		ASSPLIBRARY statements are present in the relevant .MMP files:
+
+					ASSPEXPORT/ASSPLIBRARY		otherwise
+		MAWD		ARM4						ARMI
+		MCGA		ARM4						ARMI
+		MEIG		ARM3						ARM3
+		MISA		ARM4						ARM4
+		MMAD		ARM4						ARMI
+		SCGA		ARM4						ARMI
+		SEIG		ARM3						ARM3
+		SROS		ARM4						ARMI
+
+	2)	Added code so that bitmap headers are only generated into
+		\EPOC32\Include if the contents of the header file have changed.  A
+		change is required to BMCONV so that the generated file name is
+		omittted from the header before this will work properly.
+
+	3)	Removed -REL option.  Now, targets RELEASABLES and RELEASABLES<build>
+		are added to generated makefiles so that
+		 nmake -nologo -s -f <makefile> RELEASABLES will display a list of
+		releasables that a build of the makefile will produce.
+
+	5)	Added new target type, EPOCEXE, for executables within EPOC
+		launchable from the shell.  On the target machine these executables have
+		no exports and are built as EXEs.  In the Emulator, on the other hand,
+		these executables are built as DLLs which export a single function
+			EXPORT_C TInt WinsMain()
+		at ordinal 1, to be called by the "EXE recogniser" when the executable
+		is launched.  Makmake supplies the mangled name of this function at link
+		time so there is no need to specify a .DEF file for these target types
+		under any platform.  EXEDLL is still supported as a separate targettype
+		so that an EXE under EPOC can export functionality to client DLLs, and
+		if no exports are required under EPOC then a dummy function will still
+		have to be exported at least until the new gcc compiler is available.
+
+	6)	"MAKMAKE <project> VC5" is no longer specifiable - VC6 must be specified
+		instead.  VC5 workspaces are still supported and will be created instead
+		of VC6 workspaces if the VC5 version of LINK.EXE is found first in the 
+		system path.
+
+	7)	Changed default first library from E(DLL|EXE).o under MARM and
+		E(DLL|EXE).obj under WINS to E(DLL|EXE).LIB under all platforms.  This
+		change means that building with this version of E32TOOLP requires E32
+		version 195.
+
+	8)	Removed support for NARROW builds - these changes include
+		a)	Removed support for .MMP UID keyword.
+		b)	Only one frozen .DEF file is expected to exist for each DLL|EXEDLL,
+			though the 'U' basename suffix will still be applied unless the
+			NOSTRICTDEF file keyword is specified.
+		c)	The generated .DEF file is now created in the directory above where
+			it used to be - e.g. in \epoc32\build\e32\euser\wins\ rather than
+			\epoc32\build\e32\euser\wins\udeb\.  This means that you can freeze
+			using either build, rather than having to freeze using the debug
+			build under WINS and the release build under MARM.
+		d)	The LIB(UNICODE|NARROW) FREEZE(UNICODE|NARROW) targets have been
+			removed from generated makefiles.
+
+	BLDMAKE
+	1)	Default BLD.INF platforms now depend upon which version of the GCC
+		compiler is in use.  With the old compiler, the platforms are WINS and
+		MARM, with the new, WINS, ARMI, ARM4 and THUMB.
+		If platforms are explicitly listed in the BLD.INF file and both the old
+		and new compilers are being used intermittently then list all the
+		platforms necessary for both compilers in the BLD.INF and Bldmake will
+		silently remove any that aren't appropriate to the compiler in use.
+		Bldmake detects at run-time whether the new compiler is in use, as does
+		Makmake, and changes its behaviour accordingly.
+
+	2)	Added -what option to BLD.PL.  BLD -what <platform> <build> <.MMP base>
+		will now display a list of releasables.  Releasables will not be
+		displayed where .MMP files are listed in the BLD.INF file with the TIDY
+		keyword.  This option replaces BLDMAKE's RELFILES target, which has been
+		removed.  The option requires MAKMAKE to have generated the makefiles
+		for the component since it utilises the new RELEASABLES target in the
+		generated makefiles.
+
+	3)	Added -check option to BLD.PL.
+		BLD -check <platform> <build> <.MMP base> will check that releasables
+		have been created and send a list of those that have not to STDERR.
+
+	4)	Changed BLD -LIB option now that narrow builds are no longer supported.
+		There is no longer a need to specify UNICODE or NARROW as the second
+		parameter, just use BLD -LIB <platform> {<.MMP basename>} instead.
+
+2)	Jonathan
+
+	MAKSYM - Replaces C++ version formerly in e32tools. Changes are: 
+	1)	Added support for GNU ld version 2.9-psion-98r2. Can still parse map
+	  	files produced by ld 2.6.
+	2)	0-length functions/labels are eliminated from the output file. This is 
+	  	probably a defect rather than a feature.
+	3)	The last function in the .text segment has its length calculated
+	  	correctly when using ld 2.9 map files, and fairly correctly when
+	  	using ld 2.6 map files.
+
+
+Version 0.01.113
+================
+(Made by Alastair, 21.7.99)
+
+1)	Alastair
+
+	MAKMAKE
+	1)	Refined checkgcc.pm so that it doesn't object to GCC being installed
+		on a substituted drive under Windows95/98.
+
+	2)	Changed MAKEWORK<build> target in command-line makefiles so that it is
+		depended upon by the RESOURCE<build> target rather than the <build>
+		target so that the work directories are created even if just the
+		RESOURCE<build> target is being created.
+
+	3)	Fixed SGCA platform so that it's ASSP is MCGA rather than MEIG.
+
+	4)	Changed BITMAP keyword .MMP processing so that the order of source
+		bitmaps as specified in the .MMP file is preserved.
+
+
+Version 0.01.112
+================
+(Made by Alastair, 15.7.99)
+
+1)	Alastair
+
+	MAKMAKE
+	1)	Added TARGETPATH statement syntax to START BITMAP ... END blocks.  If a
+		path is specified with this keyword, it will be added to
+		\EPOC32\Release\WINS\<build>\Z\ and act as the location for the target
+		bitmap.  If this statement is not used then the bitmap will be created
+		in the directory specified by the main .MMP TARGETPATH statement as
+		before.
+
+	2)	Changed pre-link step in MSVC makefiles for DLLs so that, rather than
+		having several pre-link step calls to equivalent commands in command-
+		line makefiles, there is one call to nmake on <project>.sup.make, which
+		contains the command-line equivalent commands.  If this nmake call
+		fails, then the export object that these commands might create is
+		deleted so that the second-stage link fails rather that misleadingly 
+		reporting no errors.
+		Also defined $(PATH) in <project>.sup.make so that the path here is the
+		same as the path was when Makmake generated the file - this should solve
+		problems relating to MSVC's strange concept of paths in custom-build
+		steps.
+
+	3)	Added post-build step in MSVC makefiles to create the import library
+		from the frozen .DEF file so that MSVC build behaviour is the same as
+		command-line build behaviour in this respect.
+
+	4)	Changed resource building in MSVC so that most of the work is done in
+		<project>.sup.make rather than in the error-prone custom-build step.
+
+	5)	Added -pipe switch to GCC calls in arm makefiles.  This flag should
+		speed up compilation by having GCC use pipes rather than temporary files
+		to communicate between the various stages of compilation.
+
+	6)	Changed testing of LINK.EXE version number so that a warning about
+		needing MSVC5 Service Pack 3 is not generated when using MSVC6.
+
+	7)	Changed CLEANBUILD targets in WINS command-line makefiles so that
+		incremental linker files in the RELEASE directory are deleted too.
+
+	8)	Re-implemented mechanism for defining macros on the NMAKE command-
+		line using the $(USERDEFS) NMAKE macro due to popular demand.
+
+
+	MAKEDEF
+	1)	Changed warning about frozen exports not being found in the object files
+		into an error so that it stops the build after a new .DEF file is
+		generated.
+
+	2)	Re-organised error and warning reporting so that clicking on the output
+		message in the MSDEV output window will bring up the relevant frozen or
+		generated .DEF file at the appropriate line number.
+
+
+	BLDMAKE
+	1)	Removed terminating backslash from directory name where tests are applied
+		to check that the directory exists, because some older versions of
+		Perl like build 307 can't cope with that.
+
+	2)	Disable check for duplicate platforms specified in BLD.INF files in
+		case bld.inf files #include bld.inf files from sub-components.
+
+	GENERAL
+	1)	Changed system for building E32TOOLP so that it's more Windows95/98
+		friendly.
+
+
+Version 0.01.111
+================
+(Made by Alastair, 12.7.99)
+
+1)	Alastair
+
+	MAKMAKE
+	1)	Added new RESOURCE<build> targets to generated makefiles.
+
+	2)	Added temporary change so that WINC static libraries are built and linked
+		against in directory \EPOC32\Release\WINC rather that
+		\EPOC32\Release\WINS.
+
+
+	BLDMAKE
+	1)	Added option to BLD.PL, -RESOURCE, which will invoke the new RESOURCE<build>
+		targets in Makmake-generated makefiles.  In other words, this option will build
+		just the bitmaps, aifs and resource files for a component and no
+		binaries or import libraries.
+		Any custom-build makefiles incorporated into the Bldmake system with the BLD.INF
+		MAKEFILE keyword will need to add RESOURCE: targets or errors will be reported.
+		
+	2)	Changed default build for BLD.PL with no options specified or the -savespace
+		option specified.  The default used to be DEB for WINS and REL for MARM.
+		It's now ALL whatever the platform.
+
+	3)	Bldmake relfiles command can now handle multiple releasables listed on
+		the same line by Makmake's -rel flag or custom-build makefiles'
+		RELEASABLES target.  The command splits on whitespace unless spaces
+		occur within quotation marks.
+
+
+
+Version 0.01.110
+================
+(Made by Alastair, 6.7.99)
+
+1)	Alastair
+
+	MAKMAKE
+	1)	Generated command-line makefiles now contain comments providing the name
+		of the .MMP file, the target, target type and general target type.
+	2)	Fixed CLEAN targets for resource files so that they now delete XXX.R* 
+		files rather than XXX.R.* files.
+	3)	Updated -REL flag to include releasables for resources, bitmaps and
+		aifs in the list of releasables produced.
+	4)	Changed AIF handling so that colour depth settings and bitmaps are
+		optional parameters rather than mandatory.
+
+
+	BLDMAKE
+	1)	Changed bldmake bldfiles so that a perl file BLD.PL is no longer
+		generated.  Instead, there is just one BLD.PL in \EPOC32\Tools which is
+		invoked by the respective \<project>\group\bld.bat files with a path to
+		the generated bldmake files.  Among these generated files is
+		PLATFORM.PM, which contains information about the platforms that a
+		particular project supports; this module is loaded by BLD.PL at run-
+		time.
+	2)	Fixed erroneous assumption that bld.inf files won't list .MMP files in
+		another top-level directory which was causing makmake and bldmake to
+		disagree about the destination of makefiles generated with the -D switch.
+	3)	Changed BLDMAKE so that it will fail if not called from the directory
+		containing the BLD.INF file.
+	4)	Changed BLDMAKE output directory so that if the BLD.INF directory is not
+		a two-level directory the second-level directory of which is called
+		"GROUP" then the output directory will be
+			\EPOC32\Bldmake\<full-path to BLD.INF file>\ rather than
+			\EPOC32\Bldmake\<first-level directory of BLD.INF path>\.  This is a
+		temporary move to support developers external to Symbian.
+
+	GENERAL
+	1)	Added fetcher definition file, E32TOOLP.FTC, to the group directory.
+
+
+Version 0.01.109
+================
+(Made by Alastair 29.6.99)
+
+WARNINGS
+1)	EBLD commands may be broken by change (11) to MAKMAKE below, if such a
+	command invokes MAKMAKE with the -D switch.
+
+1)	Alastair
+
+	MAKMAKE
+	1)	Updated Cl-arm.pm to be switchable between the current version of the
+		gcc compiler we use and the newer Gcc29.
+	2)	Removed a "t", standing for thumb, from one of the new Gcc29 plain ARM
+		flags.
+	3)	Added CLEANBUILDALL target as a synonym for CLEANBUILD in command-line
+		makefiles.
+	4)	Removed warning about NARROW .DEF files not being found.
+	5)	.MMP files are now included in generated IDE makefiles as source documents
+		by default.  You'll now get a warning if you're already
+		specifying your .MMP files with the DOCUMENT keyword.
+	6)	Added warning when creating Win32 makefiles which appears if MSVC5
+		Service Pack 3 is not installed.
+	7)	Added new .MMP keyword, MACRO, for specifying user-defined macros for
+		source code preprocessing.  Letters in MACROS will always be upper-
+		cased.  It's no longer possible to define macros on the NMAKE command-
+		line using the $(USERDEFS) NMAKE macro.
+	8)	.MMP files now support bitmaps.  .MMP syntax is
+			START BITMAP <target>
+			{HEADER}
+			SOURCEPATH	<source path>
+			SOURCE		<colour depth> <list of source .BMP files>
+			END
+		SOURCE and SOURCEPATH statements can be repeated any number of times -
+		the directory specified with the SOURCEPATH statement will apply for all
+		subsequent SOURCE statements.  There is no support for localisation of
+		bitmaps.  Colour and black-and-white bitmaps should be specified as
+		separate entities.  There is currently no support for building bitmaps
+		within the MSVC IDE.
+		A lot of source files appear to incorrectly user #include generated
+		headers rather that system #include them with angle brackets.
+	9)	.MMP files now support application information files.  .MMP syntax is
+			AIF	<target> <source path> <resource> \
+				<colour depth> <list of source .BMP files>
+		Colour and black-and-white .AIF files should be specified as separate
+		entities.  Only one colour depth may be specified for all source .BMP
+		files.  There is no support for localisation of .AIF files and currently
+		no support for building .AIF files within the MSVC IDE.
+	10)	Fixed problem with building resources in the MSVC IDE - include paths
+		for .RSS file preprocessing are now specified relative to the .DSP file
+		rather than relative to the working directory where the command to
+		create the .DSP file was invoked.
+	11)	Changed MAKMAKE -D switch so that makefiles are created in
+		 \EPOC32\Make\<project>\<platform>\ rather than
+		 \EPOC32\Make\<platform>\.  This change is to prevent clashes during
+		overnight builds where different components have .MMP files with the
+		same name.
+	12)	Added --thumb-entry LD.EXE flag for THUMB builds.
+	13)	Changed build and release directories for static libraries so that,
+		for example, static libraries will always build into
+		\EPOC32\Release\MARM... rather than \EPOC32\Release\MAWD.  This change
+		may have to be redressed should code for static libraries need to
+		differ for different ASSPs or between single and multi-process versions
+		of EPOC, though this is not currently the case.
+
+		
+	MAKMAKE & BLDMAKE
+	1)	GENERIC_WINS is now defined for preprocessing of .MMP files and BLD.INF
+		files for platforms WINS and VC5, while GENERIC_MARM is defined for
+		platform MARM - this macro effectively means "just MARM", as opposed to
+		MAWD, MEIG, MISA, etc. all of which define the MARM macro too.
+
+
+	BLDMAKE
+	1)	Updated BLDMAKE.PL with a few of William's suggestions to check for
+		missing/duplicate exported files, create .MAKE files rather than .MAK
+		files and other bits and bobs.  Also,  if the BLD.INF file for your
+		component isn't in a subdirectory called "Group" then BLDMAKE generates
+		it's work files into \EPOC32\Bldmake\<full path to BLD.INF dir>\ rather
+		than \EPOC32\Bldmake\<component>\.
+	2)	Added option -savespace to generated BLD.BAT for building as normal
+		except that if the build is successful then the intermediate files will
+		be deleted from the build directories.
+	3)	Changed "TEST" command-line argument so it needn't be specified before
+		any of the available options, it still needs to be the first of the
+		argments though.
+	4)	Bldmake bldfiles now always creates meta-makefiles for exports, programs
+		and test programs.  If these makefiles have nothing to do when they are
+		invoked they report the fact.
+	5)	Added syntax for specifying custom-build makefiles.  Specify these in
+		the PRJ_MMPFILES section of BLD.INF with keyword MAKEFILE.  All
+		subsequent arguments are the same as for .MMP files.  See
+		\e32toolp\bldmake\egmak.fil for an example custom-build makefile.
+	6)	Changed BLD.BAT help so that it's printed to STDOUT rather than STDERR
+		so that it doesn't scroll off the screen with 'bld |more'.
+	7)	Changed BLDMAKE.PL so that BLD.INF is not preprocessed for VC5 and WINS
+		platforms everytime.
+
+
+	OTHER
+	1)	Removed superseded EVALID.CMD.
+
+Version 0.01.108
+================
+(Made by Alastair, 9.6.99)
+
+This release requires VC5 Service Pack 3 to be installed.
+
+You can tell if VC5 SP3 is installed by typing link without any arguments and 
+checking the version number.  If the version is 5.10.7303 you have SP3 installed.  
+You can get SP3 from directory "\\sentinel-main\ualastrb\VS97_SP3".
+
+EXTRA INFORMATION
+	0)	Some of the changes below have been adjusted so that this version of
+		E32TOOLP will continue to work with projects which depend upon E32
+		version 186 and earlier versions.
+	1)	\EPOC32\LINK\ has been renamed \EPOC32\RELEASE\ for temporary backwards
+		compatability.  The UNICODE sub-directory has been renamed UDEB under
+		WINS and UREL under MARM, the NARROW sub-directory has been renamed DEB
+		under WINS and REL under MARM.
+	2)	Targets will attempt to link to [EDLL|EEXE].o under MARM and
+		[EDLL|EEXE].obj under WINS for the moment.
+	3)	Flag -undef will not yet be used in gcc calls because an extra #define
+		is required in the E32 source code for this to work.
+
+MAKMAKE
+	0)	Renamed zip file in S:\e32toolp\zip\ from E32TOOLP.<ver> to TOOLS.<ver>.
+		The files within this zip file now also have full pathnames so ensure
+		you unzip them into the root of your EPOC drive with any flags required
+		to recreate the directory structure.
+
+	1)	Changed makefiles so that import libraries can be generated separately
+		from dlls, direct from the frozen .DEF file.  Import libraries are now
+		generated into directory \Epoc32\Link\[platform]\[NARROW|UNICODE]\. 
+		nmake /f [makefile] [LIB|LIBUNICODE|LIBNARROW] can be used to generate
+		the import libraries, though the libraries will be generated anyway during
+		command-line builds.  This change means that new exports you add to your
+		component won't appear in the component's import libraries until the new
+		exports are frozen.
+
+	2)	Changed DEFFILE .MMP keyword so that, whether the keyword is used or not,
+		the default .DEF file name, \[project]\B[platform]\[target basename].DEF,
+		will be applied if no other filename is specified.  If a .DEF file does
+		not exist for DLL or EXEDLL targets, warnings will be issued about the 
+		project not being frozen.
+
+	3)	Added new makefile targets to command-line makefiles to make freezing
+		easier - FREEZE, FREEZEUNICODE and FREEZENARROW.  Use
+			nmake /f [makefile] [target]
+		to freeze a component.  The makefile will call perl on EFREEZE.PL to
+		compare the frozen .DEF file, if it exists, with the new one and insert
+		any new exports into the frozen .DEF file.  Once the project has been
+		frozen, regenerate the makefile so that it won't produce warnings and
+		will reference the frozen .DEF file in the right places.  The .MMP file
+		need not be altered to include a DEFFILE statement as with previous
+		versions of E32TOOLP.
+		Use xcopy /e *.def *.frz or a similar command if you wish to back up
+		your .DEF files before freezing.
+		ARM targets will take the new .DEF files from the REL and UREL build
+		directories, while Win32 targets will take the new .DEF files from the
+		DEB and UDEB build directories.
+
+	4)	Changed build directory to
+			\EPOC32\Build\[Project]\[Target basename]\[platform]\[build]\.
+
+	5)	Removed LONGBLDPATH keyword.
+
+	6)	Removed NOBROWSEINFO keyword, which was specific tocommand-line Win32
+		makefiles.
+
+	7)	Removed support for MSVC4 makefiles.
+
+	8)	Remove -CLEAN and -MAKEWORK flags.  Using NMAKE on the clean and makework
+		targets in the generated makefiles to carry out these tasks is more versatile 
+		and more efficient.
+
+	9)	Changed targettype LIB so that it builds static libraries properly.
+		DLLs and EXEs will now link to EDLL.LIB and EEXE.LIB respectively,
+		rather than EDLL.OBJ and EEXE.OBJ.  This change means that components
+		built with this version of E32TOOLP will require the latest version of
+		E32, and won't be able to build using the latest version of E32 and old
+		versions of E32TOOLP.
+
+	10)	Static libraries are now generated into
+		\Epoc32\Link\[platform]\[build]\.
+
+	11)	Added new .MMP keyword, STATICLIBRARY, for specifying that a target
+		links to static libraries.
+
+	12)	Removed OBJECT keyword, for linking a target to pre-compiled objects.
+		This keyword wasn't working under ARM builds anyway. If your project
+		links to pre-compiled objects you can list them as static libraries
+		using the new STATICLIBRARY keyword instead - and preferably get them
+		supplied as static libraries rather than object files.
+
+	13)	Changed VC5 makefiles to use a pre-link command which calls link.exe,
+		dumpbin.exe, makedef.pl, and lib.exe as command-line makefiles do.
+		This should mean that DLLs built in VC5 are generated in exactly the 
+		same way as DLLs built with command-line makefiles, though the import
+		libraries will not be generated.  This procedure also avoids the
+		warnings about exports being defined multiple times.
+
+	14)	Added custom build step for building resources within the VC5 IDE.  This
+		change addresses EDN934964
+		"MAKMAKE should integrate EIKRS as a custom build step".  All resources
+		specified for a project should be compiled automatically for all
+		languages specified.  Strangely, VC5 seems not to be able to find
+		rcomp.exe and fc4bat.exe if these tools are invoked without a path,
+		but has no problems with CPP.EXE - even if no system path to CPP.EXE is
+		set.
+		Unfortunately, if a .RSC file is custom-built within the IDE, MSVC assumes
+		it is a Windows resource file and tries to link it with the main target,
+		which causes an error.  To avoid this problem a change	 has been applied so
+		that, if building a resource file for language SC, the output file as far as
+		MSVC is concerned is a .RSC.dummy file, which is created whenever the .RSC
+		file is created.
+
+	15)	Added new targettypes for some types of polymorphic dll.  These are
+			ANI	- animation dlls
+			CTL - system controls
+			FEP - front end processors
+			MDA - media server plug-ins
+			MDL - mime recognisers
+			OPX - OPL extensions
+			PDL - printer drivers
+			RDL - recognisers
+		If any of these targettypes is specified and no deffile is specified
+		then makmake will ensure the correct functions are exported at ordinal
+		1, and, in some cases, ordinal 2.  Makmake will also put in the correct
+		second uid if no uids are specified.
+
+	16)	If a polymorphic dll of recognised type has the wrong second uid a
+		warning will now be issued.  Note that if such a dll, e.g. an APP,
+		specifies the second uid as zero ("0" or "0x00000000") the correct
+		second uid for that polymorphic dll will be applied.  This is useful
+		when you want makmake to handle the second uid but you want to specify
+		an additional third uid.
+
+	17)	Added command-line flag, /PLAT [platform] which displays platform-
+		specific .MMP file syntax.
+
+	18)	Removed __PSISOFT32__ macro now that we have __SYMBIAN32__ defined for
+		all projects.
+
+	19)	Removed __XCON__ macro which had been defined for __WINC__ builds.
+
+	20)	Default .DEF file directory for __WINC__ .DEF files is now
+		\[project]\BWINS rather than \[project]\BWINC.
+
+	21)	Added new module, E32PLAT.PM, which replaces WINS.PM, MARM.PM, etc,
+		containing data about all the platforms currently supported by Epoc.
+		Current platform defines are now as follows:
+		(all these macros begin and end with a pair of underscores).
+
+		All		__SYMBIAN32__ __PSISOFT32__
+
+		MARM	__GCC32__ __EPOC32__ __MARM__
+		MAWD	__GCC32__ __EPOC32__ __MARM__ __MAWD__
+		MCGA	__GCC32__ __EPOC32__ __MARM__ __MCGA__
+		MEIG	__GCC32__ __EPOC32__ __MARM__ __MEIG__
+		MISA	__GCC32__ __EPOC32__ __MARM__ __MISA__
+		MMAD	__GCC32__ __EPOC32__ __MARM__ __MMAD__
+		SARM	__GCC32__ __EPOC32__ __MARM__          __SINGLE__
+		SEIG	__GCC32__ __EPOC32__ __MARM__ __MEIG__ __SINGLE__
+		SROS	__GCC32__ __EPOC32__ __MARM__ __MROS__ __SINGLE__
+		SCGA	__GCC32__ __EPOC32__ __MARM__ __MCGA__ __SINGLE__
+		MX86	__VC32__  __EPOC32__ __MX86__
+		WINS	__VC32__  __WINS__
+		WINC	__VC32__  __WINS__   __WINC__
+
+		The major change here is that __MARM__ now represents the CPU-type being
+		used while __MAWD__, __MEIG__, etc denote the ASSP (Application Specific
+		Standard Product).  This change will affect few releaseables apart from
+		the base team's, since most people's MARM releaseables should run on
+		all the ARM ASSPs without modification.
+
+	22)	Added new .MMP keyword, ASSPEXPORTS.  If this keyword is specified
+		makmake by default will look for an ASSP-specific deffile rather than a
+		CPU-specific one.  In other words, if you're building EKERN.EXE for MISA
+		and specify ASSPEXPORTS and deffile EKERN.DEF without a path makmake will
+		select a deffile from \E32\BMISA rather than \E32\BMARM.
+
+	23)	Replaced FIRSTOBJECT keyword with FIRSTLIB.  This keyword takes the full
+		name, rather than the basename, of the first library in the link to replace
+		EEXE.LIB or EDLL.LIB.
+
+	24)	Changed MAKMAKE.PL and BLDMAKE.PL so additional .PM modules are searched
+		for in whichever directory in the system path the .PL module is first
+		found, rather than the first /^(\w:)?\\EPOC32\\TOOLS\\?$/io style
+		directory found in the path.
+
+	25)	Added -s flag to first call to linker 'LD' in gcc makefiles.  This option
+		strips symbolic information from the output file and specifying it will
+		speed up linking very slightly.
+
+	26)	Fixed EDN870985 "VC5 should put strings into read-only memory".  By
+		specifying the CL.EXE command-line option /GF strings are pooled and
+		placed in read-only memory, thus EPOC builds are emulated more closely.
+		This change applies for WINC too, and applies for MSVC builds as well as
+		command-line builds.
+
+	27)	Added /List option to makmake command-line.  This option will generate a
+		makefile which will produce assembler code listing files, one for each
+		source file, in the build directory during compilation.  This option is
+		only supported for ARM builds at the moment.  These files will have the
+		extension ".S".
+
+	28)	Added -undef switch to GCC calls in ARM makefiles and to CPP calls
+		during dependency generation.  This switch means 
+		"Do not predefine any nonstandard macros.  (Including architecture flags)."
+
+	29)	Added code to module Platform\Cl_arm.pm to create
+		makefiles compatible with Cygnus' latest release of GCC.
+
+	30)	Added code to replace forward slashes with backslashes in data read from
+		environment variables to assist those running makmake in unix shells.
+
+	31)	Removed CL.EXE flag /Ob1 and LINK.EXE flag /incremental:yes from
+		Win32 makefiles because the respective tools apply these by default.
+
+	32)	\EPOC32\Include\E32uid.h is now searched for LDD and PDD narrow and
+		UNICODE second uid values so there is no need for these values to be
+		updated in Makmake everytime the kernel interface changes.
+		\E32\Inc\E32uid.h is searched instead if PROJECT is specified as E32.
+
+	33)	Removed MAKSYS.PM.  Moved function to apply the, now reduced, number of
+		patches required for building E32 into MAKMAKE.PL.
+
+	34)	Added pseudotarget ALL: to command-line makefiles which will build all
+		variants of a target, DEB, REL, UDEB and UREL.
+
+	35)	Removed IMPLIB targettype for generating import libraries - this targettype
+		should no longer be required now that import libraries can be generated
+		separately.
+
+	36)	Added new flag to makmake, -REL, which will display a list of
+		releasables for a component.  This flag is intended for use by BLDMAKE
+		for generating lists of releasables.
+
+	37)	Added support for building Win32 tools.  The platform name is "TOOLS",
+		and makefiles created using "makmake <.MMP basename> tools" will not
+		link to eexe.obj and will link to the Win32 standard libraries by
+		default.  For examples look at the source for the latest E32TOOLS, which
+		has been converted to use makmake.  EXEs will be copied to
+		\Epoc32\Tools\ once built.
+
+	38)	Added new keyword, ASSPLIBRARY, with the same syntax as LIBRARY
+		statements.  This statement is for specifying a target links to import
+		libraries which differ for different ASSPs.  EKERN.LIB is such a
+		library, which differs between MEIG, MAWD and MISA.  EUSER.LIB, on the
+		other hand, presents the same interface under MEIG, MAWD and MISA though 
+		EUSER.DLL is different under each platform.  This keyword should only
+		need to be used in .MMP files for device drivers.
+
+	39)	If the ASSPEXPORTS keyword is not specified and if a DLL is built under
+		an ASSP platform such as MEIG or MAWD, rather than MARM, then the import
+		library for the DLL will be built into \Epoc32\Link\MARM rather than
+		\Epoc32\Link\MAWD.  This change shouldn't affect any projects outside of
+		the Base team though a side-effect of this change is that WINC import
+		libraries will be created in \Epoc32\Link\WINS - this shouldn't be a
+		problem since WINS and WINC should be binary compatible anyway.
+
+EVALID
+	1)	Fixed EDN704662 "EVALID should change the order of it's logging".
+	2)	Fixed EDN650568 "EVALID wins-lib is no good with VC++6.0".
+	3)	Included William's new improved Evalid - Evalid.bat will be used in
+		preference to Evalid.cmd if invoked "evalid".  I haven't removed
+		superseded Evalid.cmd so that the fixes I've already made are archived.
+
+EFREEZE
+	1)	Added new batch file, EFREEZE.BAT to create frozen
+		.DEF files for the first time or to maintain currently existing frozen
+		.DEF files.  Perl is called on EFREEZE.PL in makmake-generated makefiles
+		to read exports out of the frozen .DEF file and the new .DEF
+		file, check and compare them, and append any new exports to the end
+		of the frozen .DEF file.
+		EFREEZE.BAT syntax is 
+			EFREEZE {-Compare} [frozen .DEF file] [new .DEF file]
+		If the -compare option is specified then the frozen .DEF file will not
+		be changed, but information about differences between the files will be
+		generated as in standard EFREEZE operation.
+
+MAKEDEF
+	1)	Added new perl script, MAKEDEF.PL, which replaces DEFMAKE.EXE and
+		DEFTOOL.EXE from E32TOOLS.  Perl is called on this script in makmake-
+		generated makefiles to reorder exports during a build according to which
+		of these exports are already frozen.  Under Win32 platforms, DUMPBIN is
+		called on the import library generated after the first stage of linking
+		to create a list of exports which MAKEDEF.PL can read.  Under EPOC
+		platforms, DLLTOOL is used to generate an interim .DEF file as before.
+		Generated .DEF files follow the .DEF file layout style used in the .DEF
+		files that DLLTOOL generates for all platforms, even WINS.  This makes a
+		WINDIFF comparison of old frozen .DEF files and .DEF files generated by
+		MAKEDEF difficult, though EFREEZE.BAT can be used to do the comparison
+		instead.  If you change the name/parameters of any exported function in
+		source code then updating the freeze file is slightly tricky since
+		EFREEZE.BAT will refuse to do the comparison because of the missing
+		export in the generated .DEF file, though the new mangled name of the
+		export will still appear as a new export at the end of the generated .DEF
+		file.  Some improvements in this area will follow shortly.
+
+BLDMAKE
+	1)	Just one project file, BLD.INF, is now processed by BLDMAKE, rather
+		than several B[platform].PRJ files.  Use #defines as in .MMP files to 
+		specify that certain releasables should only be built for certain
+		platforms.
+		Type BLDMAKE without any parameters for help.
+		The BLD.INF file for your project should reside in the project's 
+		group directory.
+		Type "BLDMAKE INF" for basic BLD.INF syntax.
+		When "BLDMAKE BLDFILES" is typed, BLD.BAT is created in the project's
+		group directory which will call \EPOC32\Bldmake\<project>\BLD.PL.
+		BLD.PL will make calls to nmake to do it's building.  For each platform
+		supported by the project there will be a makefile in
+		\EPOC32\Bldmake\<project>\ controlling building for that platform.
+		There will be a separate makefile for each platform for any test programs.
+		There will also be a makefile to control the exporting of headers.
+		BLD.BAT syntax is much the same as before, except that PREPARING and
+		CLEANING are controlled by passing parameters -MAKMAKE and -CLEAN
+		respectively rather than using separate batch files.  Building of Import
+		Libraries can be controlled separately by using the -LIB and -CLEANLIB
+		flags.  If build commands are to refer to test programs then "TEST" must
+		be the first parameter specified to BLD.BAT, even if the project only
+		contains test programs - e32test is such a component.
+
+GENERAL
+	1)	Changed MNT.BAT to MNT.CMD so that use can be made of SETLOCAL and
+		ENDLOCAL.
+	2)	Removed all li.prj files - these can now be generated by our CVS system.
+
+
+
+Version 0.01.107
+================
+(Made by Alastair, 17/5/99)
+
+Alastair
+	1)	Made the new import libary-building targets dependent upon .DEF files
+		so that libraries are only built if out-of-date with respect to the .DEF
+		files rather than every time.
+
+
+Version 0.01.106
+================
+(Made by Alastair, 17/5/99)
+
+Alastair
+	1)	Added new targets for building .LIB files directly from .DEF files.
+		Targets are LIB<build> where build is DEB, REL, UDEB or UREL.
+
+
+Version 0.01.105
+================
+(Made by Alastair, 14/5/99)
+
+Alastair
+	1)	Added MCGA.PM and updated MAKSYS.PM (both provided by Simon) for the
+		COGENT port.
+
+
+Version 0.01.100
+================
+(Made by Alastair, 1.2.99)
+
+GENERAL
+	1)	Boiler-plated source.
+	2)	Replaced hard-coded R: with %s% in MNT.BAT.
+
+
+Version 0.01.099
+================
+(Made by Alastair, 21.12.98)
+
+MAKMAKE
+	1)	Changed narrow and unicode second UID defaults for LDD targettypes,
+		following corresponding changes to E32 version 159.
+
+
+Version 0.01.098
+================
+(Made by Alastair, 27.11.98)
+
+GENERAL
+	1)	Added EBLD.BAT, previously released as part of EIKTOOLS, to E32TOOLP's
+		releasables.
+
+MAKMAKE
+	1)	Makmake now creates \Epoc32\Release\Wins\App.def when creating a VC4 or
+		VC5 makefile for an app, and does similar things for LDD and PDD
+		targettypes.
+	2)	New file system target, FSY, incorporated, which automates the second uid
+		and the first ordinal export for file system builds in the same way this
+		is accomplished for other supported polymorphic dll targettypes.
+	3)	Added new .MMP keyword, EPOCFIXEDPROCESS, which will pass on the -fixed
+		switch to petran.
+	4)	Removed /LANG command-line flag which used to allow a language to be
+		specified on the command-line.
+	5)	Changed LANG .MMP keyword so that it can take a list of languages, so
+		a resource file will be compiled multiple times, once for each language
+		specified.  If no language lists are specified the language list will
+		default to just SC.  Fixes Epoc S/W problem 228,
+			"mmp fileas doesn't allow compiling 2 language variants".
+	6)	Added extra build stage for command-line wins builds which calls lib.exe
+		to generate an import library and export object from the dll's deffile
+		created by defmake.  The VC5 linker running with Service pack 3 will now
+		no longer produce warnings about multiple exports - though you'll still 
+		get them if you build within the VC5 IDE.
+	7)	RESOURCE and SYSTEMRESOURCE keywords can now take a list of resources.
+		This fixes Epoc S/W problem 300,
+			"Makmake should support multiple resource files".
+		Each resource file will be built for each language specified.
+	8)	Added warnings if duplicate sources, languages, systeminclude paths,
+		userinclude paths, resources or libraries are specified in .MMP files.
+		The duplicates are not listed in the makefile.
+		This fixes Epoc S/W problem 366
+			"MAKMAKE doesn't spot duplicate SOURCE files".
+	9)	Added SROS.PM from Malcolm, and updated MAKSYS.PM accordingly.
+	10)	Changed CL_WIN.PM so that the preprocessing stage for resource files in
+		command-line WINS makefiles always lists the directory containing the
+		source as the first user include directory.  This was an omission from 
+		change #3 in E32TOOLP version 097.
+
+BLDMAKE
+	1)	Created batch files, except those in the group directory, are now
+		created in directory \Epoc32\Bldmake\<project>\<platform>\ rather than in
+		the \<project>\B<plat>\ directories.
+	2)	Batch files created in the group directory are set to be read-only.
+
+
+Version 0.01.097
+================
+(Made by Alastair, 12.11.98)
+
+MAKMAKE
+	1)	VC5 .dsw generated files are no longer all hardwired to point to
+		Euser.dsp.
+	2)	Removed RELGDB configuration for ARM builds.
+	3)	Fixed Epoc S/W problem 277 -
+		'Cannot specify "current directory" as a USERINCLUDE path in MAKMAKE'.
+		The directory containing the source file is now always searched for
+		user-included dependencies (thats #include "<dep>").  This brings
+		dependency-generation by MAKMAKE and MARM makefiles into line with WINS
+		makefiles, where CL.EXE has always searched the directory containing the
+		source (except for the fact that CL.EXE makes no user/system
+		distinction).
+	4)	__SYMBIAN32__ is now defined for all builds.  __PSISOFT32__ is still
+		defined for backward compatibility.
+	5)	New keyword, FIRSTOBJECT, which takes the base name of an object to
+		replace EEXE or EDLL as the first object to be linked.
+	6)	Removed change to link some functions in EKERN by name rather than by
+		ordinal.
+	7)	Fixed Epoc S/W problem 216 - "MAKMAKE's "clean" targets are noisy".
+		Clean targets are now silent (under Windows_NT, at least).
+	8)	Changed the directory which MAKMAKE searches for it's .PM modules to be the
+		first /^(\w:)?\\EPOC32\\TOOLS\\?$/io style directory found in the path
+		environment variable, rather than assuming \EPOC32\TOOLS\ unless
+		<drive>:\EPOC32\TOOLS exists in the path.  
+	9)	Added \E32TOOLP\E32UTIL\Checkgcc.pm, which checks that the first executable
+		version of CPP found in the system path is CPP.EXE and is found in a
+		/^(\w:)?\\EPOC32\\GCC\\BIN\\?$/io style directory.
+	10)	Removed SARMBE.PM, and big-endian hacks from CL_ARM.PM.
+
+BLDMAKE
+	1)	Fix to make sure WINC release directories are created before WINS
+		releaseables that WINC uses are copied across.
+	2)	Change to make sure VC5 batch files are created by bldmake all.
+	3)	OS environment variable is now checked, and output redirection to log
+		files is only attempted if the OS is set to Windows_NT so that bldmake-
+		generated batch files are Windows95 friendly.
+	4)	Warning put in batch files to the effect that bldmake has generated the
+		file and it shouldn't be edited.
+
+
+Version 0.01.096
+================
+(Made by Alastair, 26.10.98)
+
+MAKMAKE
+	1)	No longer carrying out the autouid keyword behaviour for targettypes LIB
+		and IMPLIB.
+	2)	Fixed bug whereby if an EXEDLL target is specified with a lower-
+		case .exe extension the extension wouldn't be changed to .dll for WINS
+		builds.
+
+Version 0.01.095
+================
+(Made by Alastair, 22.10.98)
+
+GENERAL
+	1)	Symbianised Perl source files.
+
+MAKMAKE
+	1)	Added code to handle forward slash file separator which is used in
+		filenames returned by function "cwd" from library Cwd.pm in perl
+		versions 5.005+.  Fixes Epoc S/W problem SW1-215.
+	2)	EXEDLL targets specified without an extension will have the correct extension
+		(.DLL or .EXE) added depending whether the makefile is for a single or
+		multi-process build.
+		Fixes Epoc Software Problem SW1-11.
+	3)	VC5 module now creates .DSW file to save a couple of clicks in the MSVC5
+		workspace.
+	4)	Removed 'D' basename suffix for debug deffiles, both those makmake
+		references as 'freeze' files and those it creates, under all platforms.
+		MARM debug and release builds should already be interoperable, this
+		change is designed to "encourage" the interoperability of WINS debug and
+		release builds, starting with E32.
+	5)	Added new keyword, UNICODEUID, to be used for the specification of
+		second and third unicode uids.  A warning will be generated and no
+		unicode targets provided in the makefile if a second ascii uid is
+		specified but a second unicode uid isn't.
+	6)	Made WINS AUTOUID keyword behaviour compulsory, so every WINS project
+		gets the UIDs it specifies in the .MMP compiled into WINS automatically.
+		This means that current users of the AUTOUID keyword will need to remove
+		it from their .MMP files to avoid a warning.  Those Luddites not
+		already using this keyword will have to remove the #pragma data_seg(".E32_UID")
+ 		section used to specify WINS uids from their code if their project is to link
+		correctly.
+	7)	Added new keyword, EPOCPROCESSPRIORITY, for the specification of process
+		priority for executables.  This keyword will be ignored under Win32
+		platforms.  Specify low,background,foreground,high,windowserver,fileserver,
+		realtimeserver or supervisor.  The value specified will be passed to
+		petran via its -priority switch.
+	8)	Fixed Epoc S/W problem 274 
+			"Problems with include paths containing spaces[MAKMAKE]".
+
+EVALID
+	1)	Added William Roberts' updated EVALID.CMD.  Fixes Epoc S/W problem 151 
+		'EVALID does not support "wins-exe"'.
+
+
+Version 0.01.094
+================
+(Made by Alastair, 22.10.98)
+
+BLDMAKE
+	1)	Batch files created by BLDMAKE are now more Windows95-friendly, but will
+		still fall over due to the 2> syntax in these files.
+	2)	Prepare.bat no longer creates any directories - there was never any need
+		to do this since MAKMAKE did it anyway.
+
+
+Version 0.01.093
+================
+(Made by Petteri, 14.07.98)
+
+MAKMAKE
+
+1)  Fixed SW1-62. (Unicode flags added for resource files in unicode builds.)
+
+2)  Fixed a problem related to capitalisation of filenames when analysing
+    dependencies. 
+
+EVALID
+
+1)  Integrated Andrew Tholke's validation tool. He writes:
+
+  The basic syntax is
+
+  EVALID type file1 file2
+
+  where type specifies the object type, and is one of:
+
+  text, binary
+  wins-dll, wins-lib
+  marm-dll, marm-exe, marm-lib, marm-map
+
+  and file1 and file2 are the two files to be compared, e.g.
+ 
+  evalid marm-dll edbms.dll \epoc32\release\marm\rel\edbms.dll
+
+  EVALID defaults to appending its output to the file .\evalid.lis. 
+  Prior to validating a component set, this file should be deleted. 
+  To force the output to the console, the "-c" switch should be specified before the type, e.g.
+
+  evalid -c wins-lib edbms.lib \epoc32\release\wins\deb\edbms.lib
+
+  To direct the output to a different logfile "-l <logfile>" should be used before the type, e.g.
+
+  evalid -l valid.log marm-map edbms.map \epoc32\release\marm\rel\edbms.map
+
+
+Version 0.01.092
+================
+(Made by Petteri, 10.06.98)
+
+MAKMAKE
+
+1)  Added a new module MAKSYS.PM which handles various base related exceptions
+    to MAKMAKE rules.
+
+2)  Changed OBJECT keyword to look for the files in the target directory rather 
+    than in the build directory.
+
+3)  For Win95 compatibility 'del file1 file2' commands are no longer used.
+
+4)  EXEDLL UIDs are now correct under WINS.
+
+5)  Extension .mmp can now be included in the MMP-file name when starting MAKMAKE.
+
+6)  Two new platform modules have been added. MAWD is for Windermere architecture
+    and MMAD is for MAD Linda.
+
+7)  Filenames in makefiles are no longer automatically turned upper case. Most of
+    the time the capitalisation used in MMP-files is preserved.
+
+8)  Added a new keyword EPOCHEAPSIZE. It can be used to set the minimum and
+    maximum size of the heap in ARM builds.
+
+9)  The following keywords have been moved out of the START MARM ... END block
+    and their names have been changed:
+      ALLOWDLLDATA       is now EPOCALLOWDLLDATA
+      CALLDLLENTRYPOINTS        EPOCCALLDLLENTRYPOINTS
+      DATALINKADDRESS           EPOCDATALINKADDRESS
+      STACKSIZE                 EPOCSTACKSIZE
+
+
+Version 0.01.091
+================
+(Made by Alastair, 18th February, 1998)
+
+This new component contains perl programs that were previously
+contained in component E32TOOLS.  Currently E32TOOLP contains
+MAKMAKE and BLDMAKE which will be removed from the next release
+of E32TOOLS.
+
+Changes from programs in E32TOOLS(090)
+
+MAKMAKE
+
+1)  Added -u flag for calls to rcomp in command-line unicode builds so that
+    the resource file is built with wide strings.
+
+2)  Added new START MARM .. END block keyword, CALLDLLENTRYPOINTS, which will
+    suppress the passing of flag -nocall to PETRAN.  This keyword takes
+    no parameters.
+
+3)  Added new LINKAS keyword. This keyword is platform-independent and replaces
+    the platform-specific START MARM .. END block keyword DLLNAME.  Use LINKAS
+    to specify the full name of the dll you are building if that name is to be
+    different from the name specified by the TARGET keyword for linking
+    purposes.  This keyword currently has no effect for Win32 platforms.  For
+    MARM platforms, the name specified will have the third uid for the executable
+    inserted before its extension and will then be passed to PETRAN as a parameter
+    for the -dllname flag.
+
+4)  For EXEDLL targettypes, if the name specified with the TARGET keyword has
+    the extension .EXE, this will be changed to .DLL within single-process
+    platform makefiles such as WINS makefiles.
+
+5)  For EXEDLL targettypes, extension changes will be applied to names specified
+    with the LINKAS keyword as they are for names specified with the TARGET keyword.
+    So, for single-process platforms (eg WINS), .EXE extensions will become .DLL, and
+    for multi-process platforms (eg MARM), the extension .EXE will be applied whatever
+    extension is specified for the name in the MMPFILE.
+  
+7)  Added new module, OUTPUT.PM, to enable MAKMAKE to wrap long lines neatly
+    within makefiles where appropriate.
+
+8)  Renamed E32TVER.PM E32TPVER.PM.
+
+9)  Changed header information on all files to
+    # Copyright (c) 1998 Psion Software plc
+    # All rights reserved
+
+
+BLDMAKE
+
+1)  Changed BLDMAKE's batch file so it doesn't produce the help for the 'CALL'
+    batch file command if invoked BLDMAKE /?.
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/group/setupprj.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,542 @@
+@REM Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+@REM This component and the accompanying materials are made available
+@REM under the terms of "Eclipse Public License v1.0"
+@REM which accompanies this distribution, and is available
+@REM at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@REM
+@REM Initial Contributors:
+@REM Nokia Corporation - initial contribution.
+@REM 
+@REM Contributors:
+@REM
+@REM Description:
+@REM builds bld.bat files for subprojects within this component
+
+@if exist %0.bat perl -w -x %0.bat %1 %2 %3 %4 %5
+@if exist %0 perl -w -x %0 %1 %2 %3 %4 %5
+@GOTO End
+
+#!perl
+
+use strict;
+use Cwd;
+
+my $EPOCRoot;
+
+BEGIN {
+	$EPOCRoot = $ENV{EPOCROOT};
+	$EPOCRoot .= "\\" unless($EPOCRoot =~ /\\$/);
+	die "ERROR: Must set the EPOCROOT environment variable\n" if (!defined($EPOCRoot));
+	$EPOCRoot =~ s-/-\\-go;	# for those working with UNIX shells
+	die "ERROR: EPOCROOT must not be a UNC path\n" if ($EPOCRoot =~ /^\\\\/);
+	die "ERROR: EPOCROOT must end with a backslash\n" if ($EPOCRoot !~ /\\$/);
+	die "ERROR: EPOCROOT must specify an existing directory\n" if (!-d $EPOCRoot);
+}
+
+
+my $EPOCToolsPath="${EPOCRoot}epoc32\\tools";
+
+my $EPOCToolsConfigFilePath="${EPOCRoot}epoc32\\tools\\compilation_config";
+
+my $DocsPath="${EPOCRoot}epoc32\\EngDoc\\E32toolp";
+
+my $TemplateFilePath="${EPOCRoot}epoc32\\tools\\makefile_templates";
+
+my $ShellFilePath="${EPOCRoot}epoc32\\tools\\shell";
+
+my $BinFilePath="${EPOCRoot}epoc32\\tools";
+
+if (scalar @ARGV > 1) {
+	die "Too many arguments for setupprj.bat\n";
+}
+
+# only the secure platform is now supported, but keep the argument
+# checking as insurance against future developments.
+#
+my $secure = 1;
+if (scalar @ARGV == 1) {
+	my $option = $ARGV[0];
+	if ($option !~ /^secure$/i) {
+		die "Unknown option $ARGV[0] - did you mean \"secure\"?\n";
+	}
+}
+
+my $GroupDir=$0;  # $0 is this script
+$GroupDir=~s-^\w:(.*)$-$1-o;  # remove drive letter
+$GroupDir=~s-\/-\\-go;
+unless ($GroupDir=~m-^\\-o)
+	{
+	# $GroupDir is relative
+	my $Cwd=cwd();
+	$Cwd=~s-^\w:(.*)$-$1-o;  # remove drive letter
+	$Cwd=~s-\/-\\-go;
+	$Cwd=~s-^\\$--o;  # make sure we don't end in a backslash
+	$GroupDir="$Cwd\\$GroupDir";  # append relative group dir to absolute Cwd
+	}
+$GroupDir=~s-^(.*\\)[^\\]+$-$1-o; # remove filename, leaving just path
+# strip the resulting path of excess occurrences of . and ..
+while ($GroupDir=~s-\\\.\\-\\-go) { }
+while ($GroupDir=~s-\\(?!\.{2}\\)[^\\]*\\\.{2}(?=\\)--go) { }
+
+$GroupDir=~s-\\$--o;	# remove trailing backslash
+chdir "$GroupDir" or die "Can't cd to $GroupDir: $!\n";
+
+my %Files=();
+
+# read the component
+opendir E32TOOLP, ".." or die "ERROR: Can't open dir ..\n";
+my $SubDir;
+foreach $SubDir (grep /^[^\.]/o, map lc $_, readdir E32TOOLP) {
+	if ($SubDir!~/^(group|doc|test|binutils|maksym)$/o) {
+		opendir SUBDIR, "..\\$SubDir" or die "ERROR: Can't open dir \"..\\$SubDir\"\n";
+		my @FileList = map lc $_, readdir SUBDIR;
+		foreach my $file (grep /^[^_\.].+\.(pm|pl|bat|cmd|config|bsf|xml|cwlink|txt)$/o, @FileList) {
+			$Files{$file} = "$SubDir\\$file";
+		}
+		if ($secure) {
+			# Look for additional files whose names start with _secure_
+			my @securefiles = grep /^_secure_.+\.(pm|pl|bat|cmd|config|bsf|xml|cwlink|txt)$/o, @FileList;
+			foreach my $file (@securefiles) {
+				my $dstfile = $file;
+				$dstfile =~ s/^_secure_//;
+				if (defined($Files{$dstfile})) {
+					print "$dstfile: $SubDir\\$file overrides $Files{$dstfile}\n";
+				}
+				$Files{$dstfile} = "$SubDir\\$file";
+			}
+		}
+	}
+}
+
+# read the compiler configuration files
+my @ConfigFiles;
+
+opendir CONFIGDIR, "..\\platform" or die "ERROR: Can't open dir \"..\\platform\"\n";
+@ConfigFiles = grep /\.(mk|make)/i, readdir CONFIGDIR;
+
+closedir CONFIGDIR;
+
+opendir SUBDIR, "..\\doc" or die "ERROR: Can't open dir \"..\\doc\"\n";
+my @Docs = map lc $_, readdir SUBDIR;
+@Docs = grep /^[^\.].+\.(rtf|doc|changes|txt|html|htm)$/o, @Docs;
+	
+closedir SUBDIR;	
+
+open TEMPLATEFILESUBDIR, "\"dir \/s \/b \/a-d ..\\..\\buildsystem\\extension\" |";
+my @TemplateFiles=();
+my %TemplateDirs;
+while (<TEMPLATEFILESUBDIR>)
+	{
+	next if ($_ !~ /\.(mk|meta)$/i);	
+	$_ =~ s/^.*\\buildsystem\\extension\\//i;
+	chomp $_;
+	push @TemplateFiles, $_;
+	$_ =~ /^(.*\\)/o;
+	my $path = $1;
+	$path =~ s/\\$//;
+	$TemplateDirs{$path}=1;	
+	}
+close TEMPLATEFILESUBDIR;
+
+opendir SHELLFILESUBDIR, "..\\..\\buildsystem\\shell" or die "ERROR: Can't open dir \"..\\..\\buildsystem\\shell\"\n";
+my @ShellFiles = map lc $_, readdir SHELLFILESUBDIR;
+@ShellFiles = grep /^[^\.].+\.(mk)$/o, @ShellFiles;
+closedir SHELLFILESUBDIR;
+
+open BINFILESUBDIR, "\"dir \/s \/b \/a-d ..\\..\\buildsystem\\bin\" |";
+my @BinFiles=();
+my %BinDirs;
+while (<BINFILESUBDIR>)
+    	{
+    	next if ($_ !~ /\.(exe|jar)$/i);	
+    	$_ =~ s/^.*\\buildsystem\\bin\\//i;
+    	chomp $_;
+    	push @BinFiles, $_;
+    	$_ =~ /^(.*\\)/o;
+    	my $path = $1;
+    	$path =~ s/\\$//;
+    	$BinDirs{$path}=1;	
+    	}
+close BINFILESUBDIR;
+
+my $PrintGroupDir=$GroupDir;
+$PrintGroupDir=~s-\\-\\\\-go;
+
+# Create BLD.BAT
+my $OutTxt='';
+&Output(
+	"\@echo off\n",
+	"\@goto invoke\n",
+	"\n",
+	"#!perl\n",
+	"unless (\@ARGV==1 && \$ARGV[0]=~/^(deb|rel|clean|releasables)\$/io) {\n",
+	"	die\n",
+	"		\"E32TOOLP's bld.bat - usage\\n\",\n",
+	"		\"BLD [param]\\n\",\n",
+	"		\"where\\n\",\n",
+	"		\"param = DEB or REL or CLEAN\\n\"\n",
+	"	;\n",
+	"}\n",
+	"my \$Param=lc \$ARGV[0];\n",
+	"chdir \"$PrintGroupDir\";\n",
+	"if (\$Param =~ /releasables/i)\n",
+	"{\n",
+	"open PIPE, \"..\\\\..\\\\make-abld\\\\make -s -f e32toolp.make \$Param |\" or die \"Can't invoke make: \$!\\n\";\n",
+	"while (<PIPE>) { print \$_; }\n",
+	"close PIPE;\n",
+	"\n",
+	"exit;\n",
+	"}\n",
+	"print \"..\\\\..\\\\make-abld\\\\make -s -f e32toolp.make \$Param\\n\";\n",
+	"open PIPE, \"..\\\\..\\\\make-abld\\\\make -s -f e32toolp.make \$Param |\" or die \"Can't invoke make: \$!\\n\";\n",
+	"while (<PIPE>) { }\n",
+	"close PIPE;\n",
+	"\n",
+	"__END__\n",
+	"\n",
+	":invoke\n",
+	"perl -x $GroupDir\\bld.bat %1 %2\n"
+);
+	
+my $BLDFILE='bld.bat';
+print "Creating File \"$BLDFILE\"\n";
+open BLDFILE,">$BLDFILE" or die "\nERROR: Can't open or create Batch file \"$BLDFILE\"\n";
+print BLDFILE "$OutTxt" or die "\nERROR: Can't write output to Batch file \"$BLDFILE\"\n";
+close BLDFILE or die "\nERROR: Can't close Batch file \"$BLDFILE\"\n";
+
+
+# Create the make file
+$OutTxt='';
+&Output(
+	"\n",
+	"ifeq (\$(OS),Windows_NT)\n",
+	"ERASE = \@erase 2>>nul\n",
+	"else\n",
+	"ERASE = \@erase\n",
+	"endif\n",
+	"\n",
+	"\n",
+	"$EPOCToolsPath :\n",
+	"\t\@perl -w ..\\genutil\\emkdir.pl $EPOCToolsPath\n", 
+	"\n",
+	"$TemplateFilePath :\n",
+	"\t\@perl -w ..\\genutil\\emkdir.pl $TemplateFilePath\n", 
+	"\n"
+);
+
+foreach (sort keys %TemplateDirs) {
+	&Output(
+	"$TemplateFilePath\\$_ :\n",
+	"\t\@perl -w ..\\genutil\\emkdir.pl $TemplateFilePath\\$_\n", 
+	"\n"
+	);
+}
+
+foreach (sort keys %BinDirs) {
+ 	&Output(
+ 	"$BinFilePath\\$_ :\n",
+ 	"\t\@perl -w ..\\genutil\\emkdir.pl $BinFilePath\\$_\n", 
+ 	"\n"
+ 	);
+}
+
+&Output(
+	"$ShellFilePath :\n",
+	"\t\@perl -w ..\\genutil\\emkdir.pl $ShellFilePath\n", 
+	"\n",
+	"$EPOCToolsConfigFilePath :\n",
+	"\t\@perl -w ..\\genutil\\emkdir.pl $EPOCToolsConfigFilePath\n", 
+	"\n",
+	"$DocsPath :\n",
+	"\t\@perl -w ..\\genutil\\emkdir.pl $DocsPath\n", 
+	"\n",
+	"\n",
+	"deb : $EPOCToolsPath $EPOCToolsConfigFilePath $DocsPath $TemplateFilePath $ShellFilePath "
+);
+
+foreach (sort keys %TemplateDirs) {
+	&Output(
+	"$TemplateFilePath\\$_ "
+	);
+}
+
+foreach (sort keys %BinDirs) {
+ 	&Output(
+ 	"$BinFilePath\\$_ "
+ 	);
+}
+
+&Output("\n");
+
+my $File;
+foreach $File (keys %Files) {
+	&Output(
+		"\tcopy \"..\\$Files{$File}\" \"$EPOCToolsPath\\$File\" >nul\n"
+	);
+}
+
+my $ConfigFile;
+foreach $ConfigFile (@ConfigFiles) {
+	&Output(
+		"\tcopy \"..\\platform\\$ConfigFile\" \"$EPOCToolsConfigFilePath\\$ConfigFile\" >nul\n"
+	);
+}
+
+foreach $File (@Docs) {
+	&Output(
+			"\tcopy \"..\\doc\\$File\" \"$DocsPath\\$File\" >nul\n"
+	);
+}
+
+my $tfile;
+foreach $tfile (@TemplateFiles) {
+	&Output(
+			"\tcopy \"..\\..\\buildsystem\\extension\\$tfile\" \"$TemplateFilePath\\$tfile\" >nul\n"
+	);
+}
+
+my $bfile;
+foreach $bfile (@BinFiles) {
+ 	&Output(
+ 			"\tcopy \"..\\..\\buildsystem\\bin\\$bfile\" \"$BinFilePath\\$bfile\" >nul\n"
+ 	);
+}
+
+my $sfile;
+foreach $sfile (@ShellFiles) {
+	&Output(
+			"\tcopy \"..\\..\\buildsystem\\shell\\$sfile\" \"$ShellFilePath\\$sfile\" >nul\n"
+	);
+}
+
+&Output(
+	"\n",
+	"\n",
+	"rel : $EPOCToolsPath $EPOCToolsConfigFilePath $DocsPath $TemplateFilePath $ShellFilePath "
+);
+
+foreach (sort keys %TemplateDirs) {
+	&Output(
+	"$TemplateFilePath\\$_ "
+	);
+}
+
+foreach (sort keys %BinDirs) {
+ 	&Output(
+ 	"$BinFilePath\\$_ "
+ 	);
+}
+
+&Output("\n");
+
+	
+foreach $File (keys %Files) {
+	&Output(
+		"\t.\\perlprep.bat \"..\\$Files{$File}\" \"$EPOCToolsPath\\$File\"\n"
+	);
+}
+
+foreach $ConfigFile (@ConfigFiles) {
+	&Output(
+		"\tcopy \"..\\platform\\$ConfigFile\" \"$EPOCToolsConfigFilePath\\$ConfigFile\" >nul\n"
+	);
+}
+
+foreach $File (@Docs) {
+	&Output(
+			"\tcopy \"..\\doc\\$File\" \"$DocsPath\\$File\" >nul\n"
+	);
+}
+
+foreach $tfile (@TemplateFiles) {
+	&Output(
+			"\tcopy \"..\\..\\buildsystem\\extension\\$tfile\" \"$TemplateFilePath\\$tfile\" >nul\n"
+	);
+}
+foreach $bfile (@BinFiles) {
+ 	&Output(
+ 			"\tcopy \"..\\..\\buildsystem\\bin\\$bfile\" \"$BinFilePath\\$bfile\" >nul\n"
+ 	);
+}
+foreach $sfile (@ShellFiles) {
+	&Output(
+			"\tcopy \"..\\..\\buildsystem\\shell\\$sfile\" \"$ShellFilePath\\$sfile\" >nul\n"
+	);
+}
+&Output(
+	"\n",
+	"rel deb : $EPOCToolsPath\\make.exe\n",
+	"$EPOCToolsPath\\make.exe: ..\\..\\make-abld\\make.exe\n",
+	"\tcopy \$\? \$\@\n"
+);
+
+&Output(
+	"\n",
+	"rel deb : $EPOCToolsPath\\scpp.exe\n",
+	"$EPOCToolsPath\\scpp.exe: ..\\..\\scpp-abld\\scpp.exe\n",
+	"\tcopy \$\? \$\@\n"
+);
+
+
+&Output(
+	"\n",
+	"clean :\n"
+);
+foreach $File (keys %Files) {
+	&Output(
+		"\t-\$(ERASE) \"$EPOCToolsPath\\$File\"\n"
+	);
+}
+foreach $ConfigFile (@ConfigFiles) {
+	&Output(
+		"\t-\$(ERASE) \"$EPOCToolsConfigFilePath\\$ConfigFile\"\n"
+	);
+}
+foreach $File (@Docs) {
+	&Output(
+			"\t-\$(ERASE) \"$DocsPath\\$File\"\n"
+	);
+}
+foreach $tfile (@TemplateFiles) {
+	&Output(
+			"\t-\$(ERASE) \"$TemplateFilePath\\$tfile\"\n"
+	);
+}
+foreach $bfile (@BinFiles) {
+ 	&Output(
+ 			"\t-\$(ERASE) \"$BinFilePath\\$bfile\"\n"
+ 	);
+}
+foreach $sfile (@ShellFiles) {
+	&Output(
+			"\t-\$(ERASE) \"$ShellFilePath\\$sfile\"\n"
+	);
+}
+
+&Output(
+	"\n",
+	"releasables :\n"
+);
+foreach $File (keys %Files) {
+	&Output(
+		"\t\@echo $EPOCToolsPath\\$File\n"
+	);
+}
+foreach $ConfigFile (@ConfigFiles) {
+	&Output(
+		"\t\@echo $EPOCToolsConfigFilePath\\$ConfigFile\n"
+	);
+}
+foreach $File (@Docs) {
+	&Output(
+			"\t\@echo $DocsPath\\$File\n"
+	);
+}
+foreach $tfile (@TemplateFiles) {
+	&Output(
+			"\t\@echo $TemplateFilePath\\$tfile\n"
+	);
+}
+foreach $bfile (@BinFiles) {
+ 	&Output(
+ 			"\t\@echo $BinFilePath\\$bfile\n"
+ 	);
+}
+foreach $sfile (@ShellFiles) {
+	&Output(
+			"\t\@echo $ShellFilePath\\$sfile\n"
+	);
+}
+
+my $MAKEFILE="e32toolp.make";
+print "Creating File \"$MAKEFILE\"\n";
+open MAKEFILE,">$MAKEFILE" or die "\nERROR: Can't open or create Batch file \"$MAKEFILE\"\n";
+print MAKEFILE "$OutTxt" or die "\nERROR: Can't write output to Batch file \"$MAKEFILE\"\n";
+close MAKEFILE or die "\nERROR: Can't close Batch file \"$MAKEFILE\"\n";
+
+
+
+# this code autocreates the .rel file
+
+my @ToolsDst = ("make.exe", "scpp.exe");
+my @DocsDst = @Docs;
+my @ConfigFilesDst = @ConfigFiles;
+my @TemplateFilesDst = @TemplateFiles;
+my @BinFilesDst = @BinFiles;
+my @ShellFilesDst = @ShellFiles;
+
+push @ToolsDst, keys %Files;
+
+# TOOLS.REL file 
+
+my $RELFILE="tools.rel";
+print "Creating File \"$RELFILE\"\n";
+open RELFILE,">$RELFILE" or die "\nERROR: Can't open or create Rel file \"$RELFILE\"\n";
+print RELFILE "${EPOCRoot}epoc32\\tools\\";
+print RELFILE join("\n${EPOCRoot}epoc32\\tools\\", sort @ToolsDst);
+print RELFILE join("\n${EPOCRoot}epoc32\\tools\\compilation_config\\","", sort @ConfigFilesDst);
+print RELFILE join("\n${EPOCRoot}epoc32\\EngDoc\\E32toolp\\","", sort @DocsDst);
+close RELFILE or die "\nERROR: Can't close Rel file \"$RELFILE\"\n";
+
+# Check MRP file - the modern equivalent of tools.rel
+
+my $NewMRPText = "component tools_e32toolp\n";
+$NewMRPText .= "# This file is generated by setupprj.bat\n\n";
+$NewMRPText .= "ipr T\n";
+$NewMRPText .= "ipr O  \\sf\\os\\buildtools\\sbsv1_os\\e32toolp\\binutils\n\n";
+$NewMRPText .= "source \\sf\\os\\buildtools\\sbsv1_os\\e32toolp\n";
+$NewMRPText .= "source \\sf\\os\\buildtools\\toolsandutils\\buildsystem\n";
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\", "",sort @ToolsDst);
+# Don't include EngDoc files in the MRP file
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\compilation_config\\","", sort @ConfigFilesDst);
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\makefile_templates\\","", sort @TemplateFilesDst);
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\","", sort @BinFilesDst);
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\shell\\","", sort @ShellFilesDst);
+$NewMRPText .= "\n\n";
+$NewMRPText .= "notes_source \\component_defs\\release.src\n";
+
+my $MRPFILE="abld.mrp";
+open MRPFILE,"<$MRPFILE" or die "\nERROR: Can't read MRP file \"$MRPFILE\"\n";
+my $OldMRPText = "";
+sysread MRPFILE, $OldMRPText, 100000;	# assumes MRP file is less than 100,000 bytes
+close MRPFILE or die "\nERROR: Can't close MRP file \"$MRPFILE\"\n";
+
+if ($OldMRPText ne $NewMRPText) {
+	print "REMARK: MRP file \"$MRPFILE\" differs from setupprj.bat generated content\n";
+	print "Creating suggested new MRP file \"$MRPFILE.new\"\n";
+	open MRPFILE,">$MRPFILE.new" or die "\nERROR: Can't open or create MRP file \"$MRPFILE.new\"\n";
+	print MRPFILE $NewMRPText;
+	close MRPFILE or die "\nERROR: Can't close MRP file \"$MRPFILE.new\"\n";
+}
+
+
+# SUBROUTINE SECTION
+####################
+sub Output (@) {
+	my $Txt;
+	foreach $Txt (@_) {
+		$OutTxt.=$Txt;
+	}
+}
+
+sub UpToRoot ($) {	#args: $_[0] Abs FilePath/Path
+# return the path that will lead from the directory the path passed into the function
+# specifies back up to the root directory
+	return undef unless $_[0]=~m-^\\-o;
+	my $Path=$_[0];
+	my $UpP;
+	while ($Path=~m-\\-go)
+		{
+		$UpP.="..\\";
+		}
+	undef $Path;
+	$UpP=~s-^(.*)\.\.\\-$1-o;
+	$UpP=".\\" unless $UpP;
+}
+
+
+
+__END__
+
+:End
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/group/setver.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,78 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+goto Invoke
+
+#!perl
+
+#
+# use to set the version in relevant e32toolp files.
+#
+# Add new files requiring this service to the @InputFiles list below.
+#
+# Each file must contain the text to be changed in the form
+# 'version=xxx', where xxx is a 3 digit number.
+#
+
+use strict;
+
+my @InputFiles=qw(
+	\E32TOOLP\E32UTIL\E32TPVER.PM
+);
+	
+die "Usage:\nSETVER [version]\n" unless $#ARGV==0;
+
+my $Version=shift @ARGV;
+
+die "Unexpected version format\n" unless $Version=~/\d{3}/o;
+
+my $FILE;
+foreach $FILE (@InputFiles) {
+	open FILE, $FILE or die "Can't open \"$FILE\": $!\n";
+	my $FileText='';
+	my $Unchanged=1;
+	while (<FILE>) {
+		if ($Unchanged) {
+			$Unchanged=0 if s/^(.*version=)\d{3}([^\d]*.*)$/$1$Version$2/io;
+		}
+		$FileText.=$_;
+	}
+	open FILE,">$FILE" or die "Can't open \"$FILE\": $!\n";
+	print FILE $FileText;
+	close FILE or die "Can't close \"$FILE\": $!\n";
+}
+
+__END__
+
+:Invoke
+@rem command.com is rubbish and does not understand "%*"
+@shift
+@perl -x \E32TOOLP\GROUP\SETVER.BAT %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/kif/group/bld.inf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,30 @@
+// Copyright (c) 2007-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:
+//
+
+PRJ_PLATFORMS
+
+TOOLS2
+
+PRJ_EXPORTS
+../perl/genkif.pl	/epoc32/tools/genkif.pl
+kif1.xsd	/epoc32/data/kif1.xsd
+
+PRJ_MMPFILES
+
+PRJ_EXTENSIONS
+
+start   extension   tools/kif
+
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/kif/group/kif1.xsd	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). All Rights Reserved. 
+-->
+<xsd:schema
+  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+  xmlns:ki="http://www.symbian.com/kif1"
+  targetNamespace="http://www.symbian.com/kif1">
+	<xsd:element name="kitinfo">
+		<xsd:complexType>
+			<!-- Note I'd like to have used xsd:all here but it's not allowed to contain xsd:any -->
+			<xsd:sequence>
+				<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+				<xsd:element ref="ki:release"/>
+				<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+			</xsd:sequence>
+			<xsd:attribute name="label" type="xsd:string" use="required"/>	
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="release">
+		<xsd:complexType>
+			<xsd:attribute name="version" type="xsd:string" use="required"/>
+			<xsd:attribute name="build" type="xsd:string" use="required"/>
+		</xsd:complexType>
+	</xsd:element>
+</xsd:schema>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/kif/perl/genkif.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,84 @@
+# Copyright (c) 2007-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:
+#
+
+use XML::Simple;
+use File::Path;
+use File::Copy;
+use Win32::File;
+use Getopt::Long;
+use strict;
+
+my $outfile;
+my $verbose;
+GetOptions("o=s", \$outfile, "v+", \$verbose);
+
+if (!defined $outfile) {
+	die "ERROR: Syntax: genkif.pl -o <kif filename>\n";
+} elsif (-f $outfile) {
+	print STDOUT "REMARK: KIF generation skipped due to it already existing (in '$outfile').\n";
+	exit 0;
+} elsif (-e $outfile) {
+	die "ERROR: KIF output file '$outfile' must not be a directory or other non-file type\n";
+} elsif ($verbose) {
+	print "Got output file of '$outfile'\n";
+}
+
+my $buildnum = $ENV{'BuildNumber'};
+if (!defined $buildnum) {
+	die "ERROR: KIF generation skipped due to the BuildNumber environment variable not being set.\n";
+} elsif ($verbose) {
+	print "Got build number of '$buildnum'\n";
+}
+
+my $namespace = "ki";
+my $nsuri = "http://www.symbian.com/kif1";
+my $schema = "kif1.xsd";
+
+my $build;
+my $version;
+if ($buildnum =~ /^(.*)_Symbian_OS_v(.*)$/) {
+	$build = $1;
+	$version = $2;
+	print "Parsed build number as $build, os version $version\n" if $verbose;
+} else {
+	die "ERROR: Build number '$buildnum' is not a valid build number\n";
+}
+
+# Generate the Kit Information File
+
+print "Constructing the KIF data\n" if $verbose;
+
+my $mapper = new XML::Simple('rootname' => $namespace.':kitinfo', 'searchpath' => '.');
+
+my $hash = {
+	'xsi:schemaLocation' => "$nsuri $schema",
+	"xmlns:".$namespace => $nsuri,
+	'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
+	'label' => $buildnum,
+	$namespace.':release' => {
+		'build' => $build,
+		'version' => $version
+	}
+};
+
+print "Writing the KIF data to '$outfile'\n" if $verbose;
+
+open(my $out, ">$outfile") or die "ERROR: Couldn't open $outfile for writing: $!\n";
+
+print $out $mapper->XMLout($hash, 'xmldecl' => "<?xml version='1.0'?>");
+
+close($out) or die "ERROR: Couldn't write to $outfile".": $!\n";
+
+print "Generated KIF in $outfile\n";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/makmake/_secure_trgtype.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,423 @@
+# Copyright (c) 2000-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:
+# this package controls target types known to the build system
+# To add new types to the system, simply add an entry to the %Types data structure.
+# Look at the existing types for an appropriate example
+# 
+#
+
+package Trgtype;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	Trg_GetL
+	Trg_List
+);
+
+use Genutl;
+
+my %Types=(
+	ANI=>{
+		'Exports'=>{
+			MARM=>['CreateCAnimDllL__Fv'],
+			EABI=>['_Z15CreateCAnimDllLv'],
+			WINS=>['?CreateCAnimDllL@@YAPAVCAnimDll@@XZ'],
+			X86=>['?CreateCAnimDllL@@YAPAVCAnimDll@@XZ'],
+			x86gcc=>['_Z15CreateCAnimDllLv']
+		},
+		UID2=>'0x10003b22',
+	},
+	APP=>{
+		'Exports'=>{
+			MARM=>['NewApplication__Fv'],
+			EABI=>['_Z14NewApplicationv'],
+			WINS=>['?NewApplication@@YAPAVCApaApplication@@XZ'],
+			X86=>['?NewApplication@@YAPAVCApaApplication@@XZ'],
+		},
+		NeedUID3=>1,
+		UID2=>'0x100039ce',
+		Deprecated=>"Convert to EXE",
+	},
+	CTL=>{
+		'Exports'=>{
+			MARM=>['CreateControlL__FRC7TDesC16'],
+			EABI=>['_Z14CreateControlLRK7TDesC16'], 
+			WINS=>['?CreateControlL@@YAXABVTDesC16@@@Z'],
+			X86=>['?CreateControlL@@YAXABVTDesC16@@@Z'],
+		},
+		UID2=>'0x10003a34',
+		Deprecated=>"Convert to application",
+	},
+	DLL=>{
+		NeedDeffile=>1,
+	},	
+	EPOCEXE=>{
+		Basic=>'EXEDLL',
+		'Exports'=>{
+			WINS=>['?WinsMain@@YAHXZ'],
+		},
+	},
+	EXE=>{
+		Basic=>'EXE',
+	},
+	EXEDLL=>{
+		Basic=>'EXEDLL',
+		NeedDeffile=>1,
+	},
+	EXEXP=>{
+		Basic=>'EXE',
+		NeedDeffile=>1,
+	},
+	FSY=>{
+		'Exports'=>{
+			MARM=>['CreateFileSystem'],
+			EABI=>['CreateFileSystem'],
+			WINS=>['CreateFileSystem'],
+			X86=>['CreateFileSystem'],
+			x86gcc=>['CreateFileSystem']
+		},
+		UID2=>'0x100039df',
+	},
+	IMPLIB=>{
+		NeedDeffile=>1,
+		Basic=>'IMPLIB',
+	},	
+	KDLL=>{
+		FirstLib=>'EKLL.LIB',
+#		Kernel=>1,
+		System=>1,
+	},
+	KEXT=>{
+		FirstLib=>'EEXT.LIB',
+#		Kernel=>1,
+		System=>1,
+	},
+	KLIB=>{
+		Basic=>'LIB',
+#		Kernel=>1,
+		System=>1,
+	},
+	LDD=>{
+		FirstLib=>'EDEV.LIB',
+#		Kernel=>1,
+		System=>1,
+		'Exports'=>{
+			MARM=>['CreateLogicalDevice__Fv'],
+			EABI=>['_Z19CreateLogicalDevicev'],
+			WINS=>['?CreateLogicalDevice@@YAPAVDLogicalDevice@@XZ'],
+			X86=>['?CreateLogicalDevice@@YAPAVDLogicalDevice@@XZ'],
+			x86gcc=>['_Z19CreateLogicalDevicev']
+		},
+		UID2=>'0x100000af',
+	},
+	LIB=>{
+		Basic=>'LIB',
+	},
+	ECOMIIC=>{
+		'Exports'=>{
+			MARM=>['ImplementationGroupProxy__FRi'],
+			EABI=>['_Z24ImplementationGroupProxyRi'], 
+			WINS=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z'],
+			X86=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z'],
+		},
+		Path=>'System\Libs\Plugins',
+		UID2=>'0x10009D8D',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	PLUGIN=>{
+		'Exports'=>{
+			MARM=>['ImplementationGroupProxy__FRi'],
+			EABI=>['_Z24ImplementationGroupProxyRi'],
+			WINS=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z'],
+			X86=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z'],
+			x86gcc=>['_Z24ImplementationGroupProxyRi']
+		},
+		ResourcePath=>'Resource\Plugins',
+		UID2=>'0x10009D8D',
+	},
+	PLUGIN3=>{
+		'Exports'=>{
+			MARM=>['ImplementationGroupProxy__FRi'],
+			EABI=>['_Z24ImplementationGroupProxyRi'],
+			WINS=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy3@@AAH@Z'],
+			X86=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy3@@AAH@Z'],
+			x86gcc=>['_Z24ImplementationGroupProxyRi']
+		},
+		ResourcePath=>'Resource\Plugins',
+		UID2=>'0x10009D93',
+	},
+	MDA=>{
+		'Exports'=>{
+			MARM=>['NewMediaLibraryL__Fv'],
+			EABI=>['_Z16NewMediaLibraryLv'],
+			WINS=>['?NewMediaLibraryL@@YAPAVCMdaLibrary@@XZ'],
+			X86=>['?NewMediaLibraryL@@YAPAVCMdaLibrary@@XZ'],
+		},
+		UID2=>'0x1000393f',
+		Deprecated=>"Convert to ???",
+	},
+	MDL=>{
+		'Exports'=>{
+			MARM=>['CreateRecognizer__Fv'],
+			EABI=>['_Z16CreateRecognizerv'],
+			WINS=>['?CreateRecognizer@@YAPAVCApaDataRecognizerType@@XZ'],
+			X86=>['?CreateRecognizer@@YAPAVCApaDataRecognizerType@@XZ'],
+		},
+		UID2=>'0x10003a19',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	RDL=>{
+		'Exports'=>{
+			MARM=>['CreateRecognizer__Fv'],
+			EABI=>['_Z16CreateRecognizerv'],
+			WINS=>['?CreateRecognizer@@YAPAVCApaFileRecognizerType@@XZ'],
+		},
+		UID2=>'0x10003a37',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	NOTIFIER=>{
+		'Exports'=>{
+			MARM=>['NotifierArray__Fv'],
+			EABI=>['_Z13NotifierArrayv'],
+			WINS=>['?NotifierArray@@YAPAV?$CArrayPtr@VMEikSrvNotifierBase@@@@XZ'],
+			X86=>['?NotifierArray@@YAPAV?$CArrayPtr@VMEikSrvNotifierBase@@@@XZ'],
+		},
+		Path=>'System\Notifiers',
+		UID2=>'0x10005522',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	NOTIFIER2=>{
+		'Exports'=>{
+			MARM=>['NotifierArray__Fv'],
+			EABI=>['_Z13NotifierArrayv'],
+			WINS=>['?NotifierArray@@YAPAV?$CArrayPtr@VMEikSrvNotifierBase2@@@@XZ'],
+			X86=>['?NotifierArray@@YAPAV?$CArrayPtr@VMEikSrvNotifierBase2@@@@XZ'],
+		},
+		Path=>'System\Notifiers',
+		UID2=>'0x101fdfae',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	TEXTNOTIFIER2=>{
+		'Exports'=>{
+			MARM=>['NotifierArray__Fv'],
+			EABI=>['_Z13NotifierArrayv'],
+			WINS=>['?NotifierArray@@YAPAV?$CArrayPtr@VMNotifierBase2@@@@XZ'],
+			X86=>['?NotifierArray@@YAPAV?$CArrayPtr@VMNotifierBase2@@@@XZ'],
+			x86gcc=>['_Z13NotifierArrayv']
+		},
+		Path=>'System\Notifiers',
+		UID2=>'0x101fe38b',
+		# Not deprecated - the Text Window Server will have AllFiles, 
+		# so it can continue scanning for binaries
+	},
+	PDD=>{
+		FirstLib=>'EDEV.LIB',
+#		Kernel=>1,
+		System=>1,
+		'Exports'=>{
+			MARM=>['CreatePhysicalDevice__Fv'],
+			EABI=>['_Z20CreatePhysicalDevicev'],
+			WINS=>['?CreatePhysicalDevice@@YAPAVDPhysicalDevice@@XZ'],
+			X86=>['?CreatePhysicalDevice@@YAPAVDPhysicalDevice@@XZ'],
+			x86gcc=>['_Z20CreatePhysicalDevicev']
+		},
+		UID2=>'0x100039d0',
+	},
+	PDL=>{
+		'Exports'=>{
+			MARM=>['NewPrinterDeviceL__Fv'],
+			EABI=>['_Z17NewPrinterDeviceLv'],
+			WINS=>['?NewPrinterDeviceL@@YAPAVCPrinterDevice@@XZ'],
+			X86=>['?NewPrinterDeviceL@@YAPAVCPrinterDevice@@XZ'],
+			x86gcc=>['_Z17NewPrinterDeviceLv']
+		},
+		UID2=>'0x10003b1c',
+		ResourcePath=>'Resource\Printers',
+	},
+	STDDLL=>{
+		NeedDeffile=>1,
+		UID2=>'0x20004C45',
+	},
+	STDEXE=>{
+		Basic=>'EXE',
+		UID2=>'0x20004C45',
+	},
+	STDLIB=>{
+		Basic=>'LIB',
+	},
+	VAR=>{
+		'Exports'=>{
+			MARM=>['VariantInitialise__Fv'],
+			EABI=>['_Z17VariantInitialisev'],
+			X86=>['?VariantInitialise@@YAPAVAsic@@XZ'],
+			x86gcc=>['_Z17VariantInitialisev']
+		},
+		FirstLib=>'EVAR.LIB',
+#		Kernel=>1,
+		System=>1,
+	},
+	VAR2=>{
+		'Exports'=>{
+			MARM=>['VariantInitialise'],
+			EABI=>['VariantInitialise'],
+			X86=>['VariantInitialise'],
+			x86gcc=>['VariantInitialise']
+		},
+		FirstLib=>'EVAR.LIB',
+		System=>1,
+	},
+	NONE=>{
+		Basic=>'IMPLIB',
+	},
+);
+
+sub Trg_GetL ($$$) {
+#	takes target type, followed by a ref to a data structure
+#	to fill with exports, second UID and default targetpath, etc.,
+#
+#	dies upon error
+
+	my ($Candidate, $TrgHash_ref)=@_;
+	$Candidate= uc $Candidate;
+
+#	Is type in our list?
+	unless (defined $Types{$Candidate}) {
+		die "ERROR: Target type \"$Candidate\" not supported\n";
+	}
+
+#	Get the data
+	my %TrgHash=%{$Types{$Candidate}};
+
+
+#	Set the defaults
+	$TrgHash{Name}=$Candidate;
+
+	
+	unless ($TrgHash{Basic}) {
+		$TrgHash{Basic}='DLL';
+	}
+
+	unless ($TrgHash{FirstLib}) {
+		$TrgHash{FirstLib}='';
+	}
+
+	unless ($TrgHash{Kernel}) {
+		$TrgHash{Kernel}=0;
+	}
+
+	unless ($TrgHash{System}) {
+		$TrgHash{System}=0;
+	}
+
+	unless ($TrgHash{Exports}{MARM}) {
+		$TrgHash{Exports}{MARM}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{MARM}}<=2) {
+			die "INTERNAL ERROR: Too many MARM exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+	unless ($TrgHash{Exports}{EABI}) {
+		$TrgHash{Exports}{EABI}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{EABI}}<=2) {
+			die "INTERNAL ERROR: Too many EABI exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+	unless ($TrgHash{Exports}{WINS}) {
+		$TrgHash{Exports}{'WINS'}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{WINS}}<=2) {
+			die "INTERNAL ERROR: Too many WINS exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+	unless ($TrgHash{Exports}{X86}) {
+		$TrgHash{Exports}{X86}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{X86}}<=2) {
+			die "INTERNAL ERROR: Too many X86 exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+	unless ($TrgHash{Exports}{x86gcc}) {
+		$TrgHash{Exports}{x86gcc}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{x86gcc}}<=2) {
+			die "INTERNAL ERROR: Too many x86gcc exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+
+	unless ($TrgHash{NeedDeffile}) {
+		$TrgHash{NeedDeffile}=0;
+	}
+
+	unless ($TrgHash{NeedUID3}) {
+		$TrgHash{NeedUID3}=0;
+	}
+
+	unless ($TrgHash{Path}) {
+		$TrgHash{Path}='';
+	}
+	else {
+		# apply terminating backslash
+		$TrgHash{Path}=~s-^(.*[^\\])$-$1\\-o;
+		# apply Z drive
+		$TrgHash{Path}="Z\\$TrgHash{Path}";
+	}
+
+	unless ($TrgHash{ResourcePath}) {
+		$TrgHash{ResourcePath}='';
+	}
+	else {
+		# apply terminating backslash & Z drive
+		$TrgHash{ResourcePath}=~s-^(.*[^\\])$-Z\\$1\\-o;
+	}
+
+	unless ($TrgHash{UID2}) {
+		$TrgHash{UID2}='';
+	}
+	else {
+		$TrgHash{UID2}=&Genutl_AnyToHex($TrgHash{UID2});
+		unless (defined $TrgHash{UID2}) {
+			die "INTERNAL ERROR: UID2 badly defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+#	Deprecated target warnings
+
+	if ($TrgHash{Deprecated}) {
+		print "MIGRATION_NOTE: type \"$TrgHash{Name}\" is deprecated - $TrgHash{Deprecated}\n";
+	}
+	
+#	Pass the data
+	%{$TrgHash_ref}=%TrgHash;
+}
+
+sub Trg_List () {
+#	returns a list of known poly types
+
+	sort keys %Types;
+}
+
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/makmake/makdeps.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,409 @@
+# 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:
+# Module which wraps the dependency information provided the preprocessor when invoked with certain switches
+# so that dependency information rather than preprocessing information is produced.
+# 
+#
+
+package Makdeps;
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	Deps_InitL
+	Deps_SetVerbose
+	Deps_SetUserHdrsOnly
+	Deps_SetNoDependencies
+	Deps_SetSysIncPaths
+	Deps_SetUserIncPaths
+	Deps_SetPlatMacros
+	Deps_SetStdIncSysIncPaths
+	Deps_GenDependsL
+	Deps_SetPrefixFile
+	Deps_GetNoDependencies
+	Deps_SetNoDependenciesStatus
+	Deps_GetOSVariantFile
+	Deps_SetOSVariantFile
+);
+
+use Checkgcc;
+use Pathutl;
+use Preprocessor;
+
+
+my $ChopSysDecoyPath;
+my $EPOCIncPath;
+my @StdPaths;
+my %Mode;
+my @PlatMacros;
+my $SysDecoyPath;
+my @SysFlags;
+my @SysPaths;
+my @UserFlags;
+my @UserPaths;
+my $PrefixFileOption = "";
+my $VariantFile=&main::VariantFile();
+
+# special variable used in pattern-matching - special characters nullified
+my $S_SysDecoyPath;
+
+BEGIN {	# NB don't initialise essential items to be provided later by calling module, then will cause errors with undef
+	$Mode{'Verbose'}=0;
+	$Mode{'UserHdrsOnly'}=0;
+	$Mode{'NoDependencies'}=0;
+	@PlatMacros=();
+	# note -MG option assumes missing user headers live in 1st userincpath and missing sys headers in 1st sysdir
+	@SysPaths=();
+	@UserPaths=();
+	@StdPaths=();
+	@SysFlags=();
+	@UserFlags=();
+	# Use random number to ensure DecoyPath is unique (ish)
+	srand();
+	my $randnum=int(rand(100));
+	if (defined $ENV{PBUILDPID}) {
+		$SysDecoyPath=&Path_WorkPath."TEMPMAK$ENV{PBUILDPID}SYSDECOY$randnum\\";
+	} else {
+		$SysDecoyPath=&Path_WorkPath."TEMPMAKSYSDECOY$randnum\\";
+	}
+	$S_SysDecoyPath=quotemeta($SysDecoyPath);
+	$ChopSysDecoyPath=&Path_Chop($SysDecoyPath);
+}
+
+sub Deps_InitL ($@) {	# abs Generated Hdr dir, StdIncsysdir (with drive letter if required)
+# set up a decoy system include path, and set which path will contain generated headers, eg .RSG files, and which
+# paths are the standard system include paths for the compiler used - eg \MSDEV\INCLUDE
+	($EPOCIncPath,@StdPaths)=@_;
+
+# remove the decoy directory then try to make it again - if it contains files rmdir won't work, so mkdir won't
+# work and the user will have to sort it out.  If it doesn't contain files and has been left lying around
+# because someone has killed the program half-way through, then rmdir will remove it and mkdir will work OK
+	rmdir $ChopSysDecoyPath if -d $ChopSysDecoyPath;
+	mkdir $ChopSysDecoyPath,2 or die "ERROR: Can't make temp dir \"$ChopSysDecoyPath\"\nIf it already exists, please remove it\n";
+}
+sub Deps_SetVerbose {
+	$Mode{'Verbose'}=1;
+}
+
+sub Deps_SetUserHdrsOnly {
+# allow calling program to dictate that only listings of user headers, not system headers, be produced
+	$Mode{'UserHdrsOnly'}=1;
+}
+
+sub Deps_SetNoDependencies {
+# Ensure that we do not create a list of dependencies.
+	$Mode{'NoDependencies'}=1;
+}
+
+sub Deps_GetNoDependencies {
+# Get the status of NoDependencies.
+	return $Mode{'NoDependencies'};
+}
+
+sub Deps_SetNoDependenciesStatus($) {
+# Ensure that we do not create a list of dependencies.
+	$Mode{'NoDependencies'}=shift;
+}
+
+sub Deps_GetOSVariantFile() {
+# Return the variant .hrh file currently defined
+	return $VariantFile;
+}
+
+sub Deps_SetOSVariantFile($) {
+# Override the variant .hrh file currently defined
+	$VariantFile=shift;
+}
+
+sub Deps_SetSysIncPaths (@) {	# takes list abs paths
+# set the system include paths where we'll look for system included files, and
+# for user included files if these are not found in the user include directories
+	return unless @_;
+	@SysPaths=@_;
+	@SysFlags=&Path_Chop(@SysPaths); # newer gcc doesn't like trailing backslash
+	@SysFlags=&Path_PrefixWithDriveAndQuote(@SysFlags);
+	my $Flag;
+	foreach $Flag (@SysFlags) {
+		$Flag=~s/^(.*)$/-I $1/o;
+	}
+}
+sub Deps_SetUserIncPaths (@) {	# takes list of abs paths
+# set the user include paths to find user included files in
+	return unless @_;
+	@UserPaths=@_;
+	@UserFlags=&Path_Chop(@UserPaths); # newer gcc doesn't like trailing backslash
+	@UserFlags=&Path_PrefixWithDriveAndQuote(@UserFlags);
+	my $Flag;
+	foreach $Flag (@UserFlags) {
+		$Flag=~s/^(.*)$/-I $1/o;
+	}
+}
+sub Deps_SetPlatMacros (@) {
+# set the macros to be defined by the preprocessor
+	return unless @_;
+	@PlatMacros=@_;
+	my $Flag;
+	foreach $Flag (@PlatMacros) {
+		if($Flag =~ m/\\\"/) { 
+			$Flag =~ s/\\\"/\"/g ; 
+		}
+		$Flag=~s/^(.*)$/-D$1/o;
+	}
+}
+
+sub Deps_SetPrefixFile($) {
+    my ($file) = @_;
+    $PrefixFileOption = " -include $file ";
+}
+
+sub Deps_GenDependsL ($@) {	# takes abs source filepath and list of Build Macros
+
+	if ( $Mode{'NoDependencies'} ) {
+		# no need build a dependency list.
+		return;
+	}
+
+#	Set any more macros the preprocessor needs to be defined for the source file
+#	to be preprocessed.
+#	Call preprocessor and produce the dependency listing.
+
+	my ($Src,@BldMacros)=@_;
+
+	if (not -e $Src) {
+		warn "WARNING: \"",$Src,"\" not found!\n";
+		return;
+	}
+
+# 	Always put the source path at the head of the user path list
+#	and take it out at the end of this function
+	unshift @UserPaths, &Path_Split('Path', lc $Src);
+
+	my $ChopSysDecoyPath=&Path_Chop($SysDecoyPath); # newer gcc doesn't like trailing backslash
+	my $MacroFlag;
+	foreach $MacroFlag (@BldMacros) {
+		$MacroFlag=~s/^(.*)$/-D$1/o;
+	}
+	undef $MacroFlag;
+
+	my $ChopSrcPath=&Path_Chop(&Path_Split('Path',$Src)); # newer gcc doesn't like trailing backslash
+	my $ProductVariantFlag = "";
+	if($VariantFile){
+	    $ProductVariantFlag  = "-include " . &Path_PrefixWithDriveAndQuote($VariantFile);
+	}
+	my $VariantIncludePath;
+	if (defined &main::PMPrefixFile)
+	{
+	$VariantIncludePath = &main::PMPrefixFile;
+	$VariantIncludePath =~ s/"//g;
+	$VariantIncludePath = Path_Split("path", $VariantIncludePath);
+	
+	$VariantIncludePath = Path_Chop($VariantIncludePath);
+	$VariantIncludePath = Path_PrefixWithDriveAndQuote($VariantIncludePath);
+	}
+	my $CPPCommand;
+ 	my $exe = &PreprocessorToUseExe();
+	$CPPCommand = "$exe -undef -M -MG -nostdinc $PrefixFileOption";
+	$CPPCommand .= " -I $VariantIncludePath" if $VariantIncludePath;
+	$CPPCommand .= " -I ".&Path_PrefixWithDriveAndQuote($ChopSrcPath)." @UserFlags -I- -I ".&Path_PrefixWithDriveAndQuote($ChopSysDecoyPath)." @SysFlags @PlatMacros @BldMacros $ProductVariantFlag ".&Path_PrefixWithDriveAndQuote($Src);
+
+	if ($Mode{'Verbose'}) {
+		print "$CPPCommand\n"
+	}
+ 	open CPPPIPE,"$CPPCommand |" or die "ERROR: Can't invoke $exe.EXE\n";
+
+	# XYZ.CPP.o: \
+	#  ..\..\..\base\bafl\src\xyz.cpp \
+	#  ..\..\..\EPOC32\INCLUDE\E32DES16.H ..\..\..\EPOC32\INCLUDE\E32STD.INL \
+	#  ..\..\..\EPOC32\INCLUDE\E32BASE.INL \
+	#  ..\..\..\base\bafl\inc\bautil.h \
+	#  ..\..\..\awkward\ name\bafl\inc\bautil.h \
+	#  ..\..\..\lastthing.h
+
+	my @RTWDepList;
+	while (<CPPPIPE>) {
+		s/ \\$//oi;	# remove trailing continuation character
+		s/\\ /;/go;	# convert embedded spaces (\<space>) into semicolon which can't occur in filenames
+		# avoid the target of the rule by requiring whitespace in front of each element
+		while (/\s(\S+)/go) {
+			my $dep = $1;
+			$dep =~ s/;/ /go;	# spaces were turned into semicolon, so convert back again here
+			$dep =~ s-/-\\-go;	# replace forward slashes with backward slashes
+			$dep =~ s/^.\://;
+			$dep =~ s/\s+$//; 	# remove trailing spaces
+			push @RTWDepList,$dep;
+		}
+	}
+	close CPPPIPE or die "ERROR: $exe.EXE failure\n";
+
+	# drop the first dependent, which is the source file itself
+	shift @RTWDepList;
+
+# make all paths absolute
+	my @DepList=&Path_AbsToWork(@RTWDepList);
+	undef @RTWDepList;
+
+# test the dependencies
+	eval { @DepList=&TestDepends($Src,@DepList); };
+	die $@ if $@;
+	
+	my @SortedDepList;
+# get just those headers found in the user include path if user headers only specified
+	if (not $Mode{'UserHdrsOnly'}) {
+		@SortedDepList=sort @DepList;
+	}
+	else {
+		my @UserDepList=();
+		my $Dep;
+		my $UserPath;
+		DEPLOOP: foreach $Dep (@DepList) {
+			foreach $UserPath (@UserPaths) {
+				if ($UserPath eq &Path_Split('Path',$Dep)) {
+					push @UserDepList, $Dep;
+					next DEPLOOP;
+				}
+			}
+		}
+		@SortedDepList=sort @UserDepList;
+	}
+
+# take the source path out of the user path list
+	shift @UserPaths;
+
+	@SortedDepList;
+} 
+
+
+sub TestDepends (@) { # takes source list of absolute dependencies - called by GenDepends
+# check that the dependencies exist or are to be generated later, because gcc with the -MG switch
+# will assume that missing system headers live in the first system include path specified (the decoy
+# directory in our case), and the missing user headers live in the current working directory
+
+	my ($Src,@DepList)=@_;
+
+	my @BadSysList;
+	my @BadUserList;
+	my $Dep;
+	my @GoodList;
+	my $SrcPath=&Path_Split('Path', $Src);
+
+	my $Path;
+	my $File;
+	DEPLOOP: foreach $Dep (@DepList) { # system dependencies not found
+		$Path=&Path_Split('Path', lc $Dep);
+		if ($Dep=~/^$S_SysDecoyPath(.*)$/o) { # allow things like "#include <sys\stats.h>"
+# any files listed as existing in the system decoy directory will be missing system include files
+			$File=$1;
+# change any missing generated header entries so that they are thought to be in $EPOCIncPath, where they will be generated to
+			if ($File=~/\.(RSG|MBG)$/oi) {
+				push @GoodList, "$EPOCIncPath$File";
+				next DEPLOOP;
+			}
+# remove missing system include files from the list if they actually exist in standard directories - since the makefiles can't handle
+# files which may be on a different drive - we don't mind this because if we're using MSVC then we can assume
+# the MSVC include files will exist
+			my $LR;
+			foreach $LR (@StdPaths) {	# tackle MSDEV include dir on diff drive
+				if (-e "$LR$File") {	# don't put MSDEV includes in dep list - drive letter would end up in makefile
+					next DEPLOOP;
+				}
+			}
+# put any other missing system files on the bad list after checking that they really don't exist on the system paths
+# at this point in time.  This check is applied in an attempt to avoid sporadic warnings in the build where system
+# headers have been listed in the system decoy directory, and hence flagged as missing, when they do seem to have
+# been present at this time post-build...
+			foreach $Path (@SysPaths) {
+				if (-e "$Path$File") {
+					next DEPLOOP;
+				}
+			}
+			push @BadSysList, $File;
+			next DEPLOOP;
+		}
+# preprocessor lists any missing user headers as existing in the current directory,
+# and, if no userinclude paths are specified,
+# searches to path containing the source file for user headers by default
+		if ($Path eq lc &Path_WorkPath) { # possible missing user headers
+			$File=&Path_Split('File',$Dep);
+			# does the userinclude path contain the current working directory?
+			my $LoopPath;
+			my $WorkPathInUserPaths=0;
+			foreach $LoopPath (@UserPaths) {
+				if ( (lc $LoopPath) eq (lc &Path_WorkPath) ) {
+					$WorkPathInUserPaths=1;
+					next;
+				}
+			}
+			if ($WorkPathInUserPaths) { # the user include path contains the current working directory
+				if (-e $Dep) {
+					push @GoodList,$Dep;	# file found in specified userinclude path, OK
+					next DEPLOOP;
+				}
+			}
+			push @BadUserList, $File;	# file not found in specified userinclude path, bad
+			next DEPLOOP;
+		}
+		push @GoodList, $Dep;
+	}
+
+	my $Bad;
+	if (@BadSysList) {
+		warn	"\nWARNING: Can't find following headers in System Include Path\n";
+		foreach $Bad (@BadSysList) {
+			print STDERR " <$Bad>";
+		}
+		print STDERR "\n(Sys Inc Paths";
+		foreach $Path (@SysPaths,@StdPaths) {
+			print STDERR " \"$Path\"";
+		}
+		warn
+			")\nDependency list for \"$Src\" may be incomplete\n",
+			"\n"
+		;
+	}
+	if (@BadUserList) {
+		warn "\nWARNING: Can't find following headers in User or System Include Paths\n";
+		my $GenHdr=0;
+		foreach $Bad (@BadUserList) {
+			print STDERR " \"$Bad\"";
+			if ($File=~/\.(RSG|MBG)$/o) {
+				$GenHdr=1;
+			}
+		}
+		print STDERR "\n(User Inc Paths";
+		foreach $Path (@UserPaths) {
+			print STDERR " \"$Path\"";
+		}
+		warn
+			")\nDependency list for \"$Src\" may be incomplete\n",
+			"\n"
+		;
+		if ($GenHdr) {
+			warn
+				"Note that generated headers should be system-included with angle brackets <>\n",
+				"\n"
+			;
+		}
+	}
+
+	@GoodList;
+}
+
+
+END {
+	# remove the dependency decoy directories
+	if (-d "$ChopSysDecoyPath") {
+		rmdir "$ChopSysDecoyPath" or warn "Please remove temp dir \"$ChopSysDecoyPath\"\n";
+	}
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/makmake/makhelp.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,225 @@
+# 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:
+#
+
+
+package Makhelp;
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	Help_Invocation
+	Help_Mmp
+	Help_Plat
+);
+
+
+use E32tpver;
+use featurevariantparser;
+# also requires main module to have loaded platform module(s) and Modload.pm and Trgtype.pm
+
+sub Help_Invocation () {
+
+	print
+		"\n",
+		"MAKMAKE - Makefile Creation Utility (Build ",&E32tpver,")\n",
+		"\n",
+		"MAKMAKE {flags} [{MMPFilePath}MMPFileRoot] [Platform[.Feature Variant]]\n",
+		"\n",
+		"Flags: (case insensitive)\n",
+		" -D               -> create makefile in ", $E32env::Data{BldPath}, "[project]\\[platform]\\\n",
+		" -MMP             -> information - basic mmp syntax\n",
+		" -PLAT [platform] -> information - platform-specific mmp syntax\n",
+		" -V               -> verbose mode\n",
+		" -ND              -> generate no dependencies info\n",
+		" -[debug|no_debug]-> enable/disable generation of symbolic debug information for ARM ABI compliant platforms\n",
+		" -LOGFC           -> enable function call logging\n",
+		" -INVARIANT       -> force default feature variant processing only, unless FEATUREVARIANT is present in the .mmp file\n",
+		"\n"
+	;
+
+	my @Plats=&main::Plat_List;
+	print
+		"Available Platforms: (case insensitive)\n",
+		" @Plats\n"
+	;
+
+	my @BuildableFeatureVariants=featurevariantparser->GetBuildableFeatureVariants();
+	if (@BuildableFeatureVariants)
+		{
+		@BuildableFeatureVariants = map{uc($_)} @BuildableFeatureVariants;
+
+		print
+			"\nAvailable Feature Variants for Supporting Platforms: (case insensitive)\n",
+			" @BuildableFeatureVariants\n"
+		;
+		}
+}
+
+sub Help_Mmp () {
+
+	my @TrgTypes=&main::Trg_List;
+	my $TrgTypes='TARGETTYPE             [';
+	my $Spacing=length($TrgTypes);
+	my $LineLen=$Spacing;
+	foreach (@TrgTypes) {
+		$TrgTypes.=$_.'|';
+		$LineLen+=(length($_)+1);
+		if ($LineLen>($Spacing+50)) {
+			$TrgTypes.="\n".(' 'x$Spacing);
+			$LineLen=$Spacing;
+		}
+	}
+	chop $TrgTypes;
+	$TrgTypes.=']';
+
+	print <<ENDHERE;
+
+Makmake Project File - Basic Syntax
+
+/* Use C++ comments if required */
+START BITMAP           [target]
+TARGETPATH             [emulated_path_on_target_machine]
+HEADER
+SOURCEPATH             [.mmp-relative_source_path (default - .mmp_dir)]
+SOURCE                 [color_depth] [source_bitmaps]
+END
+
+START RESOURCE         [source]
+TARGET                 [target (default - source)]
+TARGETPATH             [emulated_path_on_target_machine]
+HEADER
+LANG                   [languages (overrides global LANG)]
+UID                    [uid(s) for resource file]
+END
+
+START STRINGTABLE      [source]
+EXPORTPATH             [location]
+HEADERONLY             [export only header file]
+END
+
+AIF                    [target] [src_path] [resource] {[color_depth] [bitmaps]}
+ALWAYS_BUILD_AS_ARM
+ARMFPU                 [SOFTVFP | VFPV2]
+ASSPABI
+ASSPEXPORTS
+ASSPLIBRARY            [ASSP_libraries]
+BYTEPAIRCOMPRESSTARGET
+CAPABILITY             [NONE | list of {-}CAPABILITY_NAME]
+COMPRESSTARGET
+DEBUGGABLE             [Executable can be debugged in a running system]
+DEBUGGABLE_UDEBONLY    [Only Debug (UDEB) executables can be debugged in a running system]
+DEBUGLIBRARY           [libraries - use in addition to LIBRARY for DEBUG builds]
+
+DEFFILE                [{path}{deffile} (default -
+                          \[project]\B[platform]\[target basename].DEF)
+                        If the path ends in \~\ the ~ is replace by B[platform] ]
+
+DOCUMENT               [sourcepath-relative_documents]
+EPOCALLOWDLLDATA
+EPOCCALLDLLENTRYPOINTS
+EPOCDATALINKADDRESS    [relocation_address]
+EPOCFIXEDPROCESS
+EPOCHEAPSIZE           [min_size][max_size]
+EPOCPROCESSPRIORITY    [PRIORITY_NAME]
+EPOCSTACKSIZE          [stack_size]
+EXPORTLIBRARY          [executables export library name if different from TARGET]
+EXPORTUNFROZEN
+FIRSTLIB               [first link object - overrides EEXE.LIB or EDLL.LIB]
+FEATUREVARIANT         [process for all variants when '-invariant' is used in MAKMAKE calls]
+INFLATECOMPRESSTARGET
+LANG                   [languages (defaults to SC)]
+LIBRARY                [libraries]
+LINKAS                 [executable's linking name if different from TARGET]
+LINKEROPTION           [COMPILER] [rest of line is linker options]
+MACRO                  [user-defined_macros]
+NEWLIB                 [override default operator new/operator delete library]
+NOCOMPRESSTARGET
+NOEXPORTLIBRARY        [don't generate an export library]
+NOSTRICTDEF
+OPTION                 [COMPILER] [rest of line is extra compiler options]
+OPTION_REPLACE         [oldComplierOption] [newOption]
+PAGED
+PAGEDCODE
+PAGEDDATA
+RAMTARGET              // syntax not yet finalized
+RESOURCE               [sourcepath-relative_resources]
+ROMTARGET              // syntax not yet finalized
+SECUREID               [secure ID]
+SMPSAFE                [mark executable as SMP safe]
+SOURCE                 [sourcepath-relative_sources]
+SOURCEPATH             [.mmp relative_source_path (default - .mmp_dir]
+SRCDBG
+STATICLIBRARY          [static_libraries]
+STDCPP
+NOSTDCPP
+STRICTDEPEND
+SYSTEMINCLUDE          [system_include_path]
+SYSTEMRESOURCE         [sourcepath-relative_system_resources]
+TARGET                 [target]
+TARGETPATH             [emulated_path_on_target_machine]
+$TrgTypes
+UID                    [uid2|0 {uid3}]
+UNPAGED
+UNPAGEDCODE
+UNPAGEDDATA
+USERINCLUDE            [user_include_path - source_dir searched first always]
+VENDORID               [vendorid]
+VERSION                [MAJOR.minor {explicit} - specify version number of
+                         the target. If EXPLICIT specified decorate target
+                         filename and DEF file name with version.]
+WCHARENTRYPOINT
+
+#if defined([PLATFORM])
+[universal keyword statements restricted to [PLATFORM] ]
+#endif
+
+START [PLATFORM]
+[platform-specific keyword statements]
+// use MAKMAKE /PLAT [PLATFORM] to display these
+END
+
+ENDHERE
+
+}
+
+sub Help_Plat ($$$$$) {
+	my ($Plat,$CPU,$DefFile,$MmpMacrosRef, $MacrosRef)=@_;
+
+#	list of source macros is incomplete in this function.  It may also contain:
+#	__MARM_<ABI>__ if the platform CPU is MARM - (ABI may vary according to .MMP contents though)
+#	Any macros defined in the .MMP file
+#	__DLL__ or __EXE__ respectively if the $BasicTrgType is DLL or EXE
+#	WIN32 and _WINDOWS if the project links to Win32 libraries
+#
+#	Furthermore, build macros _UNICODE, _DEBUG or _NDEBUG aren't listed - the _UNICODE
+#	macro should probably be defined as a permanent macro now that we're not doing Narrow
+#	builds anymore.
+
+	$DefFile= 'B'.$DefFile unless ($DefFile eq 'EABI');
+	print
+		"\n",
+		"Makmake Project File - Platform-specific Syntax\n",
+		"\n",
+		"// Platform   -> $Plat\n",
+		"// Default_Def_Dir -> \\[project]\\$DefFile\\\n",
+		"// MMP_Macros -> @$MmpMacrosRef\n",
+		"// Source_Macros -> @$MacrosRef (+ others)\n",
+		"\n",
+		"START [MMP_Macro]\n"
+	;
+	&main::PMHelp_Mmp if defined &main::PMHelp_Mmp;
+	print "END\n";
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/makmake/makmake.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,28 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+
+perl -S makmake.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
+if errorlevel==1 goto CheckPerl
+goto End
+
+:CheckPerl
+perl -v >NUL
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
+goto End
+
+:End
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/makmake/makmake.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1901 @@
+# 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:
+# all variables called *Path* are set up to end with a backslash
+# all variables called *Path or *File are stored as absolute (file)paths within makmake
+# all variables called UpPath* are stored as relative paths within makmake
+# 
+#
+
+
+use FindBin;		# for FindBin::Bin
+use Getopt::Long;
+use Cwd;
+# modified start: makefile improvement 
+use File::stat;
+use Time::localtime;
+# modified end: makefile improvement 
+
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+
+# Prototype to remove warning.
+sub AddStringTables();
+
+BEGIN {
+# check user has a version of perl that will cope
+	require 5.005_03;
+# establish the path to the Perl libraries: currently the same directory as this script
+	$PerlLibPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+	$PerlLibPath .= "\\";
+}
+
+use lib $PerlLibPath;
+use E32env;
+use E32Plat;
+use E32Variant;
+use Genutl;
+use Modload;
+use Pathutl;
+use Trgtype;
+use CheckSource;
+use featurevariantparser;
+use featurevariantmap;
+
+# THE MAIN PROGRAM SECTION
+##########################
+
+{
+	Load_SetModulePath($PerlLibPath);
+	Plat_Init($PerlLibPath);
+}
+
+my $MAKEFILE;
+my $MMPFILE;
+my %Options;
+my %Plat;
+my %TruePlat;
+my %BldMacros;
+my $PlatArg;
+my @PlatOverrideList=();
+my $EABIDef;
+my $DebugSwitch=undef;
+
+my $IsCompilerWrapperOption = 0;
+my $IsProxyWrapperOption = 0;
+my $FeatureVariantArg;
+my %FeatureVariantInfo;
+
+{
+	# process the command line
+	unless (GetOptions(\%Options, 'd', 'mmp', 'plat=s', 'v', 'arm', 'nd' , 'ithumb' , 'iarm' , 'debug', 'no_debug', 'logfc','wrap:s')) {
+		exit 1;
+	}
+	#Update the variable to set the information of -wrap option
+	if(exists($Options{wrap})) {
+		if ($Options{wrap} eq "") {
+			# Set the Compiler wrapper option information i.e. '1'
+			$IsCompilerWrapperOption = 1;
+		} elsif ($Options{wrap} eq "proxy") {
+			$IsProxyWrapperOption = 1;
+		} else {
+			print "WARNING: Invalid value for option -wrap: $Options{wrap}\n";
+		}
+	}
+	
+	$Options{makemakefile}='1' unless ($Options{mmp} || $Options{plat});
+
+	if ($Options{mmp} or $Options{plat}) {
+		eval { &Load_ModuleL('MAKHELP'); };
+		die $@ if $@;
+	}
+
+	if ($Options{mmp}) {
+		&Help_Mmp;
+		exit;
+	}
+
+	if ($Options{plat}) {
+		eval { &Plat_GetL($Options{plat},\%Plat,\%BldMacros); };
+		die $@ if $@;
+		eval { &Load_ModuleL($Plat{MakeMod}); };
+		die $@ if $@;
+		&Help_Plat($Plat{Real},$Plat{CPU}, $Plat{DefFile}, \@{$Plat{MmpMacros}},\@{$Plat{Macros}});
+		exit;
+	}
+
+#	show help & exit if necessary
+	if (@ARGV != 2) {
+		&Usage();
+	}
+	if ($Options{v}) {
+		print "perl -S makmake.pl @ARGV\n";
+		&Load_SetVerbose;
+		&Path_SetVerbose;
+		&Plat_SetVerbose;
+	}
+
+	$PlatArg=uc pop @ARGV;
+
+	# Process build platform arguments where they differ from the "norm"
+	if ($PlatArg=~/^(\S+)\.(\S+)$/)
+		{
+		# Explicit feature variant platforms take the form <base platform>.<variant name>
+		# e.g. armv5.variant1
+		$PlatArg=$1;
+		$FeatureVariantArg=$2;
+		}
+	elsif ($PlatArg=~/^(\S+):(\S+)$/)
+		{
+		# IDE platforms can take the form cw_ide:<platform-1>+<platform-2>+<platform-n>
+		# e.g. cw_ide:plat1+plat2+plat3
+		# 			
+		$PlatArg=$1;
+		@PlatOverrideList=split(/\+/,$2);
+		}
+
+	eval { &Plat_GetL($PlatArg,\%TruePlat,\%BldMacros); };
+	die $@ if $@;
+	if (scalar @PlatOverrideList) {
+		$PlatArg=$PlatOverrideList[0];
+	}
+
+	
+	$MMPFILE=pop @ARGV;
+	die "ERROR: Can't specify MMP file on a different drive\n" if $MMPFILE=~/^\w:\\/o;
+	if ($MMPFILE!~/.MMP$/io) {
+		$MMPFILE.='.MMP';
+	}
+	$MMPFILE=&Path_AbsToWork($MMPFILE);
+
+	eval { &Load_ModuleL('Mmp'); };
+	die $@ if $@;
+	if ($Options{v}) {
+		&Mmp_SetVerbose;
+	}
+	if ($Options{d}) {
+		die "ERROR: $E32env::Data{EPOCPath} does not exist\n" if (!-d $E32env::Data{EPOCPath});
+	}
+	
+	if ($Options{debug}) {
+		$DebugSwitch = 1;
+	}
+	elsif($Options{no_debug}){
+		$DebugSwitch = 0;
+	}
+}
+
+my %LinkerOptions;
+my %WarningLevel;
+my $ABI;
+my @AifStruct;
+my $AllowDllData;
+my $CompressTarget;
+my $CompressTargetMode;   #NONE
+my $ASSPExports;
+my @ASSPLibList;
+my @BitMapStruct;
+my $BuildAsARM=$Options{arm};
+my $CallDllEntryPoints;
+my $Capability;
+my @CapabilityFlags;
+my $DataLinkAddress;
+my @DebugLibList;
+my %Def;
+my %DocHash;
+my $ExportUnfrozen;
+my $FirstLib;
+my $FixedProcess;
+my %HeapSize;
+my @LibList;
+my $LinkAs;
+my $LinkAsBase;
+my $ExportLibrary;
+my $NoExportLibrary;
+my %MmpFlag;
+my @PlatTxt2D;
+my $ProcessPriority;
+my @RamTargets;
+my @ResourceStruct;
+my @RomTargets;
+my $SmpSafe;
+my @SourceStruct;
+my $StackSize;
+my @StatLibList;    
+my $StdCpp;
+my $NoStdCpp;
+my $NewLib;
+my @SysIncPaths;
+my @ResourceSysIncPaths;
+my $ResourceVariantMacroHRHFile;
+my $Trg;
+my %TrgType;
+my @UidList;
+my @UserIncPaths;
+my $SrcDbg;
+my %Path;
+my %Version;
+my $SecureId;
+my $VendorId;
+my $variantMacroHRHFile = Variant_GetMacroHRHFile();  # HRH file containing macros specific to a variant
+my %ReplaceOptions;
+my $ARMFPU;
+my @StringTable;
+my @StringTableUserIncPaths;
+my $CodePagingTargetMode;	# 0-N/A, 1-UNPAGED, 2-PAGED
+my $DataPagingTargetMode;	# 0-N/A, 1-UNPAGED, 2-PAGED
+my %CheckSourceUDEBIncludes;
+my %CheckSourceURELIncludes;
+my %CheckSourceMMPMetaData;
+my %CheckSourceMMPIncludes;
+my $IsWideCharMain=0;
+my $IsDebuggable; # 0-NONDEBUGGABLE, 1-DEBUGGABLE, 2-DEBUGGABLE_UDEBONLY
+
+
+use constant NOTPAGED => 0;
+use constant UNPAGED => 1;
+use constant PAGED => 2;
+
+use constant INFLATECOMPRESSIONMETHOD => 1;
+use constant BYTEPAIRCOMPRESSIONMETHOD => 2;
+
+use constant NOTDEBUGGABLE => 0;
+use constant DEBUGGABLE =>  1;
+use constant DEBUGGABLE_UDEBONLY => 2;
+
+# If the platform does support feature variants but none are specified, then we assume the use of "DEFAULT" if it exists
+# If default doesn't exist feature variantion is basically disabled?
+$FeatureVariantArg = 'default' if (!$FeatureVariantArg && defined &PMSupportsFeatureVariants && featurevariantparser->DefaultExists());
+
+# Preload the details of the variant requested if any - we need the HRH file for MMP file processing
+if ($FeatureVariantArg)
+	{
+	# First check the feature variant is valid
+	my @buildableFeatureVariants = featurevariantparser->GetBuildableFeatureVariants();
+	die "ERROR: \"$PlatArg.$FeatureVariantArg\" feature variant is either invalid or virtual.\n" if !(grep /^$FeatureVariantArg$/i, @buildableFeatureVariants);
+
+	# Now load the variant
+	%FeatureVariantInfo = featurevariantparser->GetVariant($FeatureVariantArg);
+	
+	# Change the HRH file to use
+	$variantMacroHRHFile = $FeatureVariantInfo{VARIANT_HRH} if $FeatureVariantInfo{VARIANT_HRH};
+	}
+	
+&SetVarsFromMmp($PlatArg);
+die $@ if $@;
+
+{
+	# set up the makefile filepath - need to do this before loading the platform module
+	# because UID source file will be added and set up in the makefile path under WINS
+	if ($Options{d}) {
+		$MAKEFILE=join ('', $Path{Bld}, &Path_Split('Base',$MMPFILE), $TruePlat{Ext});
+	}
+	else {
+		$MAKEFILE=join "", &Path_WorkPath, &Path_Split('Base',$MMPFILE), $TruePlat{Ext};
+	}
+}
+
+{
+	# Generate an X86GCC def file from eabi def file in build dir if needed
+	if (($PlatArg eq "X86GCC" || $PlatArg eq "X86GMP") && $Def{Base} && not -e &DefFile)
+	{
+		# Find the equivalent eabi def file
+		my $eabiDefFile = File::Spec->canonpath("$Def{Path}../eabi/$Def{Base}$Def{Ext}");
+		if (-e $eabiDefFile)
+		{
+			# Need to create MAKEFILE directory early in this case
+			eval { &Path_MakePathL($MAKEFILE); };
+			die $@ if $@;
+			# Change def file path to build path 
+			$Def{Path} = $Path{Bld};
+			&generateX86GCCDefFile($eabiDefFile, &DefFile);
+		}
+		else
+		{
+			print "WARNING: Unable to find EABI def file at $eabiDefFile to generate X86GCC def file with\n";
+		}
+	}
+}
+
+{
+
+
+#	load the platform module
+	eval { &Load_ModuleL($TruePlat{MakeMod}); };
+	die $@ if $@;
+
+	unless (defined &PMHelp_Mmp) {
+#		check this function is defined - all modules must have it - if not perhaps the
+#		platform module has not loaded is compiler module successfully via "use"
+		die "ERROR: Module \"$Plat{MakeMod}\" not loaded successfully\n";
+	}
+}
+
+	# Allow the platform to bow out if feature variants have been specified but it doesn't support them
+	if ($FeatureVariantArg && !defined &PMSupportsFeatureVariants)
+		{
+		die "ERROR: The \"$PlatArg\" platform does not support feature variants.\n";
+		}
+
+{
+	# allow the platform to bow out if it can't support some .MMP file specifications
+	if (defined &PMCheckPlatformL) {
+		eval { &PMCheckPlatformL(); };
+		die $@ if $@;
+	}
+}
+
+my @StdIncPaths=();
+
+{
+	# get the platform module to do it's mmpfile processing - WINS modules may set up an extra source file
+	# for UIDs here depending upon the targettype
+	&PMPlatProcessMmp(@PlatTxt2D) if defined &PMPlatProcessMmp;
+}
+
+%CheckSourceMMPMetaData = &Mmp_CheckSourceMMPMetaData();
+%CheckSourceMMPIncludes = &Mmp_CheckSourceMMPIncludes();
+
+# merge checksource processing from platform specific .mmp sections, if applicable
+%CheckSourceMMPMetaData = (%CheckSourceMMPMetaData, &PMPlatCheckSource()) if defined &PMPlatCheckSource;
+
+@ResourceSysIncPaths = @SysIncPaths;
+$ResourceVariantMacroHRHFile = $variantMacroHRHFile;
+
+AddStringTables();
+
+# Process feature variants if applicable
+
+if ($FeatureVariantArg)
+	{
+	if ($Options{v})
+		{
+		$featurevariantmap::verbose = 1;
+		$featurevariantparser::verbose = 1;
+		}
+
+	# Get the default variant details
+	my %DefaultFeatureVariantInfo = $FeatureVariantInfo{NAME} =~ /^default$/i ? %FeatureVariantInfo : featurevariantparser->GetVariant("DEFAULT");	
+	die "ERROR: Feature variant \"$PlatArg.default\" is invalid.\n" if !$DefaultFeatureVariantInfo{VALID};
+
+	# The following IF statement decides whether to use the default variant and not use the hash in the filename 
+	# This prevents the generation of dll's/exe's for which variants are not needed (i.e they are invariant)
+	# It also avoids the time-consuming and redundant hash generation
+	# A component is considered invariant if it's not a DLL or EXE or FEATUREVARIANT isn't present in the .mmp file
+	
+# modified start: makefile improvement 
+	if ($TrgType{Basic} =~ /^(EXEDLL|EXE|DLL|LIB)$/ && &Mmp_IsFeatureVariant)
+# modified end: makefile improvement 
+		{
+		# Load the requested variant if it hasn't already been preloaded		
+		%FeatureVariantInfo = featurevariantparser->GetVariant($FeatureVariantArg) if !$FeatureVariantInfo{NAME} || $FeatureVariantInfo{NAME} ne $FeatureVariantArg;
+		}
+	else
+		{
+		# Use the default variant
+		%FeatureVariantInfo = %DefaultFeatureVariantInfo;
+		$FeatureVariantInfo{INVARIANT} = 1;
+		$FeatureVariantInfo{NAME} = uc $FeatureVariantArg;
+		}
+
+	die "ERROR: Feature variant \"$PlatArg.$FeatureVariantInfo{NAME}\" is invalid.\n" if !$FeatureVariantInfo{VALID};
+	
+	my @featureVariantSysIncPaths = (@{$FeatureVariantInfo{BUILD_INCLUDES}},@SysIncPaths);
+	
+	# Further process paths and filenames so that they include a drive letter.
+	# We store this in a hash specifically for passing on to featurevariantmap->Hash
+	
+	my @processedIncludes = &Path_PrefixWithDrive(&Path_Chop(@UserIncPaths), &Path_Chop(@featureVariantSysIncPaths));
+	push @processedIncludes, &Path_Chop(&PMToolChainIncDir) if defined &PMToolChainIncDir && &PMToolChainIncDir;
+	
+	my $processedPreInclude = "";
+	if (defined &PMPrefixFile)
+		{
+		$processedPreInclude = &PMPrefixFile;
+		$processedPreInclude =~ s/\"//g;
+		$processedPreInclude = &Path_PrefixWithDrive($processedPreInclude);		
+		}
+
+	my %processedFeatureVariantInfo;
+	$processedFeatureVariantInfo{PREINCLUDE} = $processedPreInclude if $processedPreInclude;
+	$processedFeatureVariantInfo{BUILD_INCLUDES} = \@processedIncludes if @processedIncludes;
+	$processedFeatureVariantInfo{VALID} = 1;
+	
+	# Pass in the details of the macros tested in the MMP
+	$processedFeatureVariantInfo{MMPTESTED} = &Mmp_TestedMacros();
+
+	my @pathedSrcList = ();
+	push @pathedSrcList, Path_PrefixWithDrive($$_{SrcPath}.$$_{CurFile}) foreach (@SourceStruct);
+
+	foreach my $bld (@{$Plat{Blds}})
+		{
+# modified start: makefile improvement 
+		my @reusedHash;
+# modified end: makefile improvement 
+		if ($FeatureVariantInfo{INVARIANT})															# Invariant override
+			{
+			$FeatureVariantInfo{$bld."_LABEL"} = "INVARIANT";
+			}
+		else
+			{
+# modified by SV start: makefile improvement 
+			my $vmap = "$E32env::Data{RelPath}".lc($Plat{Real})."\\".lc($bld)."\\".Trg()."." . $FeatureVariantInfo{NAME}.".vmap";
+# modified by SV end: makefile improvement 
+			$vmap = Path_PrefixWithDrive($vmap);
+			if(-e $vmap){
+				my @variantlist = featurevariantmap->GetVariantListFromVmap($vmap);
+				my @calls;
+				foreach(@variantlist)
+				{
+					my $target = "CHECKVMAP".uc($bld);
+					my $makefile = $MAKEFILE.".".$_;
+					if(-e $makefile){
+						push @calls, "make -r -f \"$makefile\"  $target";
+					}
+				}
+				foreach my $call (@calls)
+				{
+					print "call: $call" if $Options{v};
+					open PIPE, "$call |";
+					while(<PIPE>) {
+						print $_;
+					}
+					close PIPE;
+				}
+				if(-e $vmap){
+					@reusedHash = featurevariantmap->CheckOldVmapFile($vmap, \%FeatureVariantInfo);
+				}
+			}
+			if(defined(@reusedHash))
+			{
+				$FeatureVariantInfo{$bld."_LABEL"} = $reusedHash[0];
+				$FeatureVariantInfo{$bld."_FEATURES"} = $reusedHash[1];
+				next;
+			}
+# modified end: makefile improvement 
+			my @macros = (@{$Plat{Macros}}, @{$BldMacros{$bld}}, "__SUPPORT_CPP_EXCEPTIONS__");
+			push @macros, "__PRODUCT_INCLUDE__=\"".&Path_PrefixWithDrive($FeatureVariantInfo{VARIANT_HRH})."\"" if $FeatureVariantInfo{VARIANT_HRH};
+			$processedFeatureVariantInfo{MACROS} = \@macros;
+
+			print ("Feature variant hash processing: \"$FeatureVariantInfo{NAME} $bld\"\n") if $Options{v};
+			
+			my @result = featurevariantmap->HashAndFeatures(\@pathedSrcList, \%processedFeatureVariantInfo);
+			$FeatureVariantInfo{$bld."_LABEL"} = $result[0];
+			$FeatureVariantInfo{$bld."_FEATURES"} = $result[1];
+			
+			die "ERROR: Can't obtain hash for \"$PlatArg.$FeatureVariantInfo{NAME}\" feature variant.\n" if !$FeatureVariantInfo{$bld."_LABEL"};
+			}
+		}
+
+	# Customise standard content based on feature variant updates
+	@SysIncPaths = @featureVariantSysIncPaths;
+	$variantMacroHRHFile = $FeatureVariantInfo{VARIANT_HRH};
+	$MAKEFILE .= ".$FeatureVariantInfo{NAME}";
+
+	# Resources are always processed in the context of the default variant's system include and variant files when
+	# feature variants are in use
+	@ResourceSysIncPaths = (@{$DefaultFeatureVariantInfo{BUILD_INCLUDES}},@ResourceSysIncPaths);
+	$ResourceVariantMacroHRHFile = $DefaultFeatureVariantInfo{VARIANT_HRH};
+	}
+
+
+{
+	# if verbose mode set, output some info
+	#--------------------------------------
+	if ($Options{v}) {
+		print  
+			"Target: \"$Trg\"\n",
+			"TargetType: \"$TrgType{Name}\"\n",
+			"Libraries: \"@LibList\"\n",
+			"Debug Libraries: \"@DebugLibList\"\n",
+			"Static Libraries: \"@StatLibList\"\n",
+			"Uids: \"@UidList\"\n",
+			"BuildVariants: \"@{$Plat{Blds}}\"\n",
+			"TargetMakeFile: \"$MAKEFILE\"\n",
+			"UserIncludes: \"<Source Dir> @UserIncPaths\"\n",
+			"SystemIncludes: \"@SysIncPaths\"\n"
+		;
+
+	if (%FeatureVariantInfo)
+		{
+		print 
+			"Feature Variant Name: \"$FeatureVariantInfo{NAME}\"\n",
+			"Feature Variant SystemIncludes: \"@{$FeatureVariantInfo{BUILD_INCLUDES}}\"\n",
+			"Feature Variant HRH file: \"$FeatureVariantInfo{VARIANT_HRH}\"\n";
+
+		foreach my $bld (@{$Plat{Blds}})
+			{
+			print "Feature Variant $bld Label: \"".$FeatureVariantInfo{$bld."_LABEL"}."\"\n";			
+			}
+		
+		}
+	}
+}
+
+# Special handling for non-default invariant makefiles without FEATUREVARIANT in the MMP file
+# In this situation the default variant makefle is just included into the variant makefile
+# modified start: makefile improvement 
+if ($TrgType{Basic} =~ /^(EXEDLL|EXE|DLL|LIB)$/ && %FeatureVariantInfo && $FeatureVariantInfo{INVARIANT})
+	{
+	$MAKEFILE =~ s/([^.]*$)/DEFAULT/;
+# modified by SV start: makefile improvement 
+		if( $FeatureVariantInfo{NAME} !~ /^default$/i)
+			{
+				print "not creating makefile for  : $FeatureVariantInfo{NAME}\n" if ($Options{v});
+			}
+# modified by SV end: makefile improvement 
+	if(-e $MAKEFILE )
+		{
+		my $mmp_time = -M $MMPFILE;
+		my $makefile_time = -M $MAKEFILE;
+		if( $makefile_time <= $mmp_time)
+			{
+			exit;
+			}
+		}
+	undef %FeatureVariantInfo;
+	%FeatureVariantInfo = featurevariantparser->GetVariant("default");
+	$FeatureVariantInfo{INVARIANT} = 1;
+	$FeatureVariantInfo{UREL_LABEL} = 'INVARIANT';
+	$FeatureVariantInfo{UDEB_LABEL} = 'INVARIANT';
+	}
+# modified by SV start: makefile improvement 
+	elsif(%FeatureVariantInfo)
+	{
+	my $variant_info = &Path_Chop($E32env::Data{BldPath}).$Path{BldInfPath}."\\FeatureVariantInfo\\".$Plat{Real}."\\".$Plat{Real}.".".$FeatureVariantInfo{NAME}.".".&Path_Split('Base', $MMPFILE).".info";
+	#if mmp file does not exists
+	$variant_info = &Path_Chop($E32env::Data{BldPath}).$Path{BldInfPath}."\\FeatureVariantInfo\\".$Plat{Real}."\\".$Plat{Real}.".".$FeatureVariantInfo{NAME}.".info" if ! -e $MMPFILE;
+# modified by SV end: makefile improvement 
+	my $variant_key = "VARIANT_PLAT_NAME_".&Path_Split('Base', $MMPFILE);
+	$variant_info_new = $variant_info.".tmp";
+	open VARIANTINFOR_NEW, ">$variant_info_new" or die "ERROR: Can't open or create file \"$variant_info_new\"\n";
+
+	# Open the variant infor file
+	open VARIANTINFOR, "<$variant_info" or die "ERROR: Can't open file \"$variant_info\"\n";
+	while(<VARIANTINFOR>)
+		{
+		if(/^$variant_key/)
+			{
+			print VARIANTINFOR_NEW $variant_key.":=".$FeatureVariantInfo{NAME}."\n";
+			}
+			else
+			{
+			print VARIANTINFOR_NEW $_;
+			}
+		}
+	# Close and cleanup
+	close VARIANTINFOR or die "ERROR: Can't close file \"$variant_info\"\n";
+	close VARIANTINFOR_NEW or die "ERROR: Can't close file \"$variant_info\"\n";
+	unlink $variant_info;
+	rename($variant_info_new, $variant_info);
+	if ($Options{v}) {
+		print "Successful Variant Infor File Creation\n";
+
+		}
+	}
+# modified end: makefile improvement 
+
+my $CurAifRef;
+my $CurBaseObj;
+my $CurBld;
+my $CurBitMapRef;
+my @CurDepList;
+my $CurDoc;
+my $CurResrc;
+my $CurResourceRef;
+my $CurSrc;
+my $CurSrcPath;
+my $ResrcIsSys;
+# modified start: makefile improvement 
+my %CurSrcSet;
+# modified end: makefile improvement 
+
+# Set up library paths getting the backend module to help if it wants to
+{
+	&InitLinkPaths();
+}
+
+{
+
+	# LOOPING SECTION
+	#----------------
+	# Load the output module
+	eval { &Load_ModuleL('OUTPUT'); };
+	die $@ if $@;
+
+ 
+	# Believe include first on the system list. 
+    my $VariantFile=&main::VariantFile();
+    if($VariantFile){
+        my $VariantFilePath = Path_Split('Path',$VariantFile);
+        chop($VariantFilePath);
+
+        push(@SysIncPaths, $VariantFilePath);
+    }
+
+	my $ResourceVariantFile=&main::ResourceVariantFile();
+    if($ResourceVariantFile){
+        my $ResourceVariantFilePath = Path_Split('Path',$ResourceVariantFile);
+        chop($ResourceVariantFilePath);
+
+        push(@ResourceSysIncPaths, $ResourceVariantFilePath);
+    }
+    
+    ## Add default system include info for TOOLS2
+    if ($PlatArg eq 'TOOLS2') {    	
+    	push @SysIncPaths , "$E32env::Data{EPOCPath}include\\tools\\stlport";
+    }
+
+	# If the stdcpp keyword is used, or if the target type is STD* ...
+	if ($StdCpp or $TrgType{Name} eq 'STDEXE' or $TrgType{Name} eq 'STDDLL' or $TrgType{Name} eq 'STDLIB') {
+		push @SysIncPaths, $E32env::Data{EPOCPath}."include\\stdapis";
+	}
+
+	&PMStartBldList($Plat{MakeCmd}) if defined &PMStartBldList;
+	my $LoopBld;
+	foreach $LoopBld (@{$Plat{Blds}}) {
+		$CurBld=$LoopBld;
+		&PMBld if defined &PMBld;
+	}
+	undef $CurBld;
+	undef $LoopBld;
+	&PMEndBldList if defined &PMEndBldList;
+
+
+	# Load the Dependency Generator
+	eval { &Load_ModuleL('MAKDEPS'); };
+	die $@ if $@;
+	eval { &Deps_InitL($E32env::Data{EPOCIncPath},@StdIncPaths); };
+	die $@ if $@;
+	if ($Options{v}) {
+		&Deps_SetVerbose;
+	}
+	if ($Plat{UsrHdrsOnly}) {
+		&Deps_SetUserHdrsOnly;
+	}
+
+	if ($Options{nd} || ($ENV{SYMBIANBUILD_DEPENDENCYOFF} && ($ENV{SYMBIANBUILD_DEPENDENCYOFF}==1))) {
+		&Deps_SetNoDependencies
+	}
+	&Deps_SetNoDependencies if(grep /boostlibrary/i, &Mmp_UserIncPaths);
+
+	&Deps_SetUserIncPaths(@UserIncPaths);
+	&Deps_SetSysIncPaths(@ResourceSysIncPaths);
+	&Deps_SetPlatMacros(@{$Plat{Macros}});
+
+	my $prefixFile;
+	$prefixFile = &PMPrefixFile if defined &PMPrefixFile;
+	&Deps_SetPrefixFile($prefixFile) if $prefixFile;
+
+#	Start source list - bitmaps, resources, .AIF files, documents, sources.
+
+	# If feature variants are in use, dependency analysis may use a different overall variant file to that for "straight" source
+	my $curDepOSVariantFile = &Deps_GetOSVariantFile();
+	&Deps_SetOSVariantFile($ResourceVariantFile);
+
+	&PMStartSrcList if defined &PMStartSrcList;
+
+#	start bitmaps
+
+	if ($Options{v}) {
+		print "Starting bitmaps\n";
+	}
+	my $LoopBitMapRef;
+	foreach $LoopBitMapRef (@BitMapStruct) {
+		$CurBitMapRef=$LoopBitMapRef;
+		if ($Options{v}) {
+			print "BitMap: \"$$CurBitMapRef{Trg}\"\n";
+		}
+		&PMBitMapBld if defined &PMBitMapBld;
+	}
+	undef $CurBitMapRef;
+	undef $LoopBitMapRef;
+
+#	end bitmaps
+
+#	start resources
+
+	if ($Options{v}) {
+		print "Starting resources\n";
+	}
+	my $LoopResourceRef;
+	foreach $LoopResourceRef (@ResourceStruct) {
+		$CurResourceRef=$LoopResourceRef;
+		if ($Options{v}) {
+			print "Resource: \"$$CurResourceRef{Trg}\"\n";
+		}
+		eval { @CurDepList=&Deps_GenDependsL($$CurResourceRef{Source}, ("LANGUAGE_$$CurResourceRef{Lang}")); };
+		die $@ if $@;
+		&PMResrcBld if defined &PMResrcBld;
+		undef @CurDepList;
+	}
+	undef $CurResourceRef;
+	undef $LoopResourceRef;
+
+#	end resources
+
+#	start aifs
+
+	if ($Options{v}) {
+		print "Starting aifs\n";
+	}
+
+# Add tools-relative include path to sys includes, to allow for shared include\aiftool.rh
+	use FindBin;
+	$FindBin::Bin =~ /:(.*)\//;
+	my $extraIncPath = $1;
+	$extraIncPath =~ s/\//\\/g;
+	my @SavedResourceSysIncPaths = @ResourceSysIncPaths;
+	push @ResourceSysIncPaths, "$extraIncPath\\INCLUDE";
+	&Deps_SetSysIncPaths(@ResourceSysIncPaths);
+
+	my $LoopAifRef;
+	foreach $LoopAifRef (@AifStruct) {
+		$CurAifRef=$LoopAifRef;
+		if ($Options{v}) {
+			print "Aif: \"$$CurAifRef{Trg}\"\n";
+		}
+		eval { @CurDepList=&Deps_GenDependsL("$$CurAifRef{Source}"); };
+		die $@ if $@;
+		&PMAifBld if defined &PMAifBld;
+		undef @CurDepList;
+	}
+	undef $CurAifRef;
+	undef $LoopAifRef;
+
+	@ResourceSysIncPaths = @SavedResourceSysIncPaths;
+
+#	end aifs
+
+#	start sources
+
+	if ($Options{v}) {
+		print "Starting sources\n";
+	}
+	
+	my $SrcRef;
+	&Deps_SetOSVariantFile($curDepOSVariantFile);
+	&Deps_SetSysIncPaths(@SysIncPaths);
+
+	foreach $SrcRef (@SourceStruct){
+		 $CurSrcPath=$$SrcRef{SrcPath};
+		 $CurSrc=$$SrcRef{CurFile};
+
+		 my @userIncludes = &Mmp_UserIncPaths;
+		 @userIncludes = (@userIncludes, @StringTableUserIncPaths) if (@StringTableUserIncPaths);
+		 unshift (@userIncludes, $CurSrcPath);		 
+
+		 if ($TruePlat{Ext} !~ /\.DSP|\.xml/i)
+		 	{
+			foreach my $buildVariant (@{$Plat{Blds}})
+				{		 		
+				my @macros = &MacroList;
+				@macros = (@macros, @{$BldMacros{$buildVariant}});
+
+				my $checkSourceCommandStore;
+			
+				if ($buildVariant =~ /rel$/i)
+					{
+					$checkSourceCommandStore = \%CheckSourceURELIncludes
+					}
+				else
+					{
+					$checkSourceCommandStore = \%CheckSourceUDEBIncludes
+					}
+				CheckSource_Includes($CurSrcPath.$CurSrc, %$checkSourceCommandStore, $VariantFile, @macros, @userIncludes, @SysIncPaths);
+			}
+		 }
+		 if ($Options{v}) {
+			print "Sourcepath: \"$CurSrcPath\"\n";
+		 }
+		 &PMStartSrc if defined &PMStartSrc;
+
+#			strict depend alt 1 start - call different module function if strict depend flag specified
+			if (((not $MmpFlag{StrictDepend}) || (not defined &PMSrcBldDepend)) && defined &PMSrcDepend) {
+				eval { @CurDepList=&Deps_GenDependsL($CurSrcPath.$CurSrc);};
+				die $@ if $@;
+# modified start: makefile improvement 
+				foreach $srcFile (@CurDepList) {
+					if(not exists($CurSrcSet{$srcFile})){
+						my $srctmp = $srcFile;
+						$CurSrcSet{$srctmp} = 1;
+					}
+				}
+# modified end: makefile improvement 
+				&PMSrcDepend if defined &PMSrcDepend;
+				undef @CurDepList;
+			}
+							
+#			strict depend alt 1 end
+
+			my $LoopBld;
+			foreach $LoopBld (@{$Plat{Blds}}) {
+				$CurBld=$LoopBld;
+				&PMStartSrcBld if defined &PMStartSrcBld;
+
+#				strict depend alt 2 start - call the module function that deals with dependencies generated for each build variant
+				if ($MmpFlag{StrictDepend} && defined &PMSrcBldDepend) {
+					eval { @CurDepList=Deps_GenDependsL($CurSrcPath.$CurSrc,@{$BldMacros{$CurBld}}); };
+					die $@ if $@;
+					&PMSrcBldDepend if defined &PMSrcBldDepend;
+					undef @CurDepList;
+				}
+#				strict depend alt 2 end
+
+				&PMEndSrcBld if defined &PMEndSrcBld;
+			}
+			undef $CurBld;
+			undef $LoopBld;
+			&PMEndSrc if defined &PMEndSrc;
+# modified start: makefile improvement 
+			my $cursrcfile = $CurSrcPath.$CurSrc;
+			if(not exists($CurSrcSet{$cursrcfile})){
+				$CurSrcSet{$cursrcfile} = 1;
+			}
+# modified end: makefile improvement 
+		}
+		undef $CurSrc;
+		undef $CurSrcPath;  
+	
+	
+
+#	end sources
+
+#	start documents
+
+	if ($Options{v}) {
+		print "Starting documents\n";
+	}
+	my $LoopSrcPath;
+	foreach $LoopSrcPath (sort keys %DocHash) {
+		$CurSrcPath=$LoopSrcPath;
+		if ($Options{v}) {
+			print "Sourcepath: \"$CurSrcPath\"\n";
+		}
+		my $LoopDoc;
+		foreach $LoopDoc (sort @{$DocHash{$CurSrcPath}}) {
+			$CurDoc=$LoopDoc;
+			if ($Options{v}) {
+				print "Document: \"$CurDoc\"\n";
+			}
+			&PMDoc if defined &PMDoc;
+		}
+		undef $CurDoc;
+		undef $LoopDoc;
+	}
+	undef $CurSrcPath;
+	undef $LoopSrcPath;
+
+#	end documents
+
+#	rombuild
+
+	my %SpecialRomFileTypes=(
+		KEXT=>'extension[MAGIC]',
+		LDD=>'device[MAGIC]',
+		PDD=>'device[MAGIC]',
+		VAR=>'variant[MAGIC]'
+	);
+	my %KHash1 = (
+		kext=>1,
+		ldd=>1,
+		pdd=>1,
+		var=>1,
+		kdll=>1
+	);
+	my %KHash2 = (
+		primary=>1,
+		variant=>1,
+		extension=>1,
+		device=>1
+	);
+	unless ($TrgType{Basic} =~ /^IMPLIB$/io or $TruePlat{Ext} =~ /\.DSP|\.xml/i) { # change to avoid rombuild target for IDE makefiles
+		&Output("ROMFILE:\n");
+		unless ($Plat{OS} ne 'EPOC32' or $TrgType{Basic} eq 'LIB') {
+			my $ref;
+			foreach $ref (@RomTargets) {
+				my $ABIDir = '##MAIN##';
+				my $RomFileType='file';
+				if ($$ref{FileType}) {	# handle EKERN.EXE and EFILE.EXE with new ROMFILETYPE keyword instead
+					$RomFileType=$$ref{FileType}; # or just do this bit as a custom build makefile
+				}
+				elsif ($CallDllEntryPoints) {
+					$RomFileType='dll';
+				}
+				elsif ($SpecialRomFileTypes{$TrgType{Name}}) {
+					$RomFileType=$SpecialRomFileTypes{$TrgType{Name}};
+				}
+				my $RomPath="sys\\bin\\";
+				if ($$ref{Path}) {
+					$RomPath=$$ref{Path};
+				}
+				elsif ($TrgType{Path}) {
+					$RomPath=$TrgType{Path};
+					$RomPath=~s-z\\(.*)-$1-o;
+				}
+				my $RomFile=$LinkAsBase;
+				if ($$ref{File}) {
+					$RomFile=$$ref{File};
+				}
+				my $RomDecorations='';
+				if ($DataLinkAddress) {
+					$RomDecorations="reloc=$DataLinkAddress";
+				}
+				elsif ($FixedProcess) {
+					$RomDecorations.='fixed';
+				}
+				
+				$ABIDir = '##KMAIN##' if ($KHash1{lc $TrgType{Name}});
+				$ABIDir = '##KMAIN##' if ($KHash2{lc $RomFileType});
+				my $IbyTextFrom="$RomFileType=$E32env::Data{RelPath}$ABIDir\\##BUILD##\\$Trg";
+				my $IbyTextTo="$RomPath$RomFile";
+				my $Spaces= 60>length($IbyTextFrom) ? 60-length($IbyTextFrom) : 1; 
+				&Output("\t\@echo ", $IbyTextFrom, ' 'x$Spaces, "$IbyTextTo $RomDecorations\n");
+			}
+			foreach $ref (@RamTargets) {
+				my $ABIDir = '##MAIN##';
+				$ABIDir = '##KMAIN##' if ($KHash1{lc $TrgType{Name}});
+				my $RomFileType='data';
+				my $RomPath="sys\\bin\\";
+				if ($$ref{Path}) {
+					$RomPath=$$ref{Path};
+				}
+				my $RomFile=$Trg;
+				if ($$ref{File}) {
+					$RomFile=$$ref{File};
+				}
+				my $RomDecorations='attrib=r';
+
+				my $IbyTextFrom="$RomFileType=$E32env::Data{RelPath}$ABIDir\\##BUILD##\\$Trg";
+				my $IbyTextTo="$RomPath$RomFile";
+				my $Spaces= 60>length($IbyTextFrom) ? 60-length($IbyTextFrom) : 1; 
+				&Output("\t\@echo ", $IbyTextFrom, ' 'x$Spaces, "$IbyTextTo $RomDecorations\n");
+			}
+		}
+	}
+#	end rombuild
+
+	&PMEndSrcList if defined &PMEndSrcList;
+}
+
+{
+
+	# open the makefile and write all the text it requires to it if makmake has so far been successful
+	#-------------------------------------------------------------------------------------------------
+	eval { &Path_MakePathL($MAKEFILE); };
+	die $@ if $@;
+	if ($Options{v}) {
+		print "Creating: \"$MAKEFILE\"\n";
+	}
+	open MAKEFILE,">$MAKEFILE" or die "ERROR: Can't open or create file \"$MAKEFILE\"\n";
+	print MAKEFILE &OutText or die "ERROR: Can't write output to file \"$MAKEFILE\"\n";
+	close MAKEFILE or die "ERROR: Can't close file \"$MAKEFILE\"\n";
+	if ($Options{v}) {
+		print "Successful MakeFile Creation\n";
+	}
+}
+
+	
+################ END OF MAIN PROGRAM SECTION #################
+#------------------------------------------------------------#
+##############################################################
+
+
+
+
+
+# SUBROUTINE SECTION
+####################
+
+sub FatalError (@) {
+
+	print STDERR "MAKMAKE ERROR: @_\n";
+	exit 1;
+}
+
+sub Usage () {
+
+		eval { &Load_ModuleL('MAKHELP'); };
+		die $@ if $@; 
+		eval { &Help_Invocation; };
+		die $@ if $@;
+		exit;
+}
+
+sub getEABIDef() {
+	# Preprocess the mmp with ARMv5 platform settings so we can pick up 
+    # EABI specific def file entries etc. 
+    my ($platname)="ARMV5";
+    
+    # get platform info for armv5
+    eval { &Plat_GetL($platname,\%Plat,\%BldMacros); };
+	return $@ if $@;
+	&Mmp_Reset;
+	# process 
+    
+    # set package to ignore warnings about missing .def file. 
+    &Mmp_SetIgnoreMissingDef;
+    
+    eval { &Mmp_ProcessL($E32env::Data{EPOCPath}, $MMPFILE, \%Plat, $FeatureVariantInfo{BUILD_INCLUDES}); };
+	return $@ if $@;
+	my %EABIDef=%{&Mmp_Def};
+	
+    # handle case that def file doesn't exist -> Simply set to ""
+    my $EABIDefFile = "$EABIDef{Path}$EABIDef{Base}$EABIDef{Ext}";;
+   	unless (-e "$EABIDefFile") {
+        $EABIDefFile = "";
+	}
+    
+    return $EABIDefFile;
+	
+}
+
+sub SetVarsFromMmp ($) {
+
+	my ($platname)=@_;
+    
+	if($platname eq "GCCXML") {
+        $EABIDef = getEABIDef();
+    } 
+    else {
+        $EABIDef = "";
+    }
+
+	# MMP FILE PROCESSING - filter the mmp file content through the GCC preprecessor
+	#-------------------------------------------------------------------------------
+	eval { &Plat_GetL($platname,\%Plat,\%BldMacros); };
+	return $@ if $@;
+	&Mmp_Reset;
+
+	if($platname eq "GCCXML" || $platname eq "X86GCC" || $platname eq "X86GMP") {
+	# set package to ignore warnings about missing .def file, this is necessary,
+	# as either EABI .def or GCC .def may not exist, and this shouldn't be reported
+	# as a warning or error. Similarly for x86gcc def files - these are autogenerated.
+	&Mmp_SetIgnoreMissingDef;
+	}
+
+	eval { &Mmp_ProcessL($E32env::Data{EPOCPath}, $MMPFILE, \%Plat, $FeatureVariantInfo{BUILD_INCLUDES}); };
+	return $@ if $@;
+
+	%WarningLevel=&Mmp_WarningLevel;
+	%LinkerOptions=&Mmp_LinkerOptions;
+	$ABI=&Mmp_ABI;
+	@AifStruct=@{&Mmp_AifStruct};
+	$AllowDllData=&Mmp_AllowDllData;
+	$CompressTarget=&Mmp_CompressTarget;
+	$CompressTargetMode=&Mmp_CompressTargetMode;
+	$ASSPExports=&Mmp_ASSPExports;
+	@ASSPLibList=&Mmp_ASSPLibList;
+	@BitMapStruct=@{&Mmp_BitMapStruct};
+	$BuildAsARM=$BuildAsARM || &Mmp_BuildAsARM;
+	$CallDllEntryPoints=&Mmp_CallDllEntryPoints;
+	$Capability=&Mmp_Capability;
+	@CapabilityFlags=&Mmp_CapabilityFlags;
+	$DataLinkAddress=&Mmp_DataLinkAddress;
+	@DebugLibList=@{&Mmp_DebugLibList};
+	%Def=%{&Mmp_Def};
+	%DocHash=%{&Mmp_DocHash};
+	$ExportUnfrozen=&Mmp_ExportUnfrozen;
+	$FirstLib=&Mmp_FirstLib;
+	$FixedProcess=&Mmp_FixedProcess;
+	%HeapSize=%{&Mmp_HeapSize};
+	@LibList=@{&Mmp_LibList};
+	$LinkAs=&Mmp_LinkAs;
+	$LinkAsBase=&Mmp_LinkAsBase;
+	$ExportLibrary=&Mmp_ExportLibrary;
+	$NewLib = &Mmp_NewLib;
+    $NoExportLibrary=&Mmp_NoExportLibrary;
+	%MmpFlag=%{&Mmp_MmpFlag};
+	@PlatTxt2D=&Mmp_PlatTxt2D;
+	$ProcessPriority=&Mmp_ProcessPriority;
+	@RamTargets=&Mmp_RamTargets;
+	@ResourceStruct=@{&Mmp_ResourceStruct};
+	@RomTargets=&Mmp_RomTargets;
+	$SmpSafe=&Mmp_SmpSafe;
+	@SourceStruct=@{&Mmp_SourceStruct};
+	$StackSize=&Mmp_StackSize;
+	@StatLibList=&Mmp_StatLibList;    
+	$StdCpp = &Mmp_StdCpp;
+	$NoStdCpp = &Mmp_NoStdCpp;
+	@SysIncPaths=&Mmp_SysIncPaths;
+	$Trg=&Mmp_Trg;
+	%TrgType=%{&Mmp_TrgType};
+	@UidList=&Mmp_UidList;
+	@UserIncPaths=&Mmp_UserIncPaths;
+	$SrcDbg=&Mmp_SrcDbg;
+	%Version=&Mmp_Version;
+	$SecureId=&Mmp_SecureId;
+	$VendorId=&Mmp_VendorId;
+	%ReplaceOptions=&Mmp_Replace;
+	$ARMFPU=&Mmp_ARMFPU;
+	@StringTable=@{&Mmp_StringTable};
+	$CodePagingTargetMode=&Mmp_CodePagingTargetMode;
+	$DataPagingTargetMode=&Mmp_DataPagingTargetMode;
+	$IsWideCharMain=&Mmp_IsWideCharMain;
+	$IsDebuggable=&Mmp_IsDebuggable;
+
+#	finish defining any macros
+
+	if ($Plat{CPU} eq 'MARM') {
+#		apply the ABI source define - note that it is difficult to define a corresponding
+#		.MMP define since we can't be sure what the ABI is until we've processed the .MMP file,
+#		though we could apply it for generic MARM builds only
+		push @{$Plat{Macros}}, "__MARM_${ABI}__";
+	}
+
+	if ($TrgType{Basic}=~/^(DLL|EXE)$/o) { # this macro may soon be removed
+		push @{$Plat{Macros}},'__'.$TrgType{Basic}.'__';
+	}
+
+#	add the macros defined in the .mmp file
+	push @{$Plat{Macros}}, &Mmp_Macros;
+
+# set up a hash containing the start paths for various things
+	undef %Path;
+
+#	set up ASSP link path - this is the path where the target looks for ASSP-specific import libraries
+        $Path{ASSPLink}="$E32env::Data{LinkPath}$Plat{ASSP}\\";
+
+#	set up build path
+	my $BldInfPath=cwd;
+	$BldInfPath=~s-/-\\-go;						# separator from Perl 5.005_02+ is forward slash
+	$BldInfPath=~s/^(.:)//o;					# remove drive letter
+	$BldInfPath=~s-^(.*[^\\])$-$1\\-o;			# ensure workpath ends with a backslash
+	$Path{BldInfPath} = $BldInfPath;			# Remember the path to bldinf
+	$Path{Bld}=join('', &Path_Chop($E32env::Data{BldPath}), $BldInfPath, &Path_Split('Base',$MMPFILE), "\\$Plat{Real}\\");
+}
+
+sub generateX86GCCDefFile()
+{
+	my ($oldPath, $newPath) = @_;
+	print "Generating X86GCC deffile from $oldPath\n";
+	if (!open(OLDDEF, $oldPath))
+	{
+		print "Warning: Failed to open $oldPath for reading\n".
+		return;
+	}
+	# Force creation of new def file even if one already exists
+	if (!open(NEWDEF, ">$newPath"))
+	{
+		close OLDDEF;
+		print "Warning: Failed to open $newPath for writing\n".
+		return;
+	}
+	while (<OLDDEF>)
+	{
+		chomp;
+		if (/^\s*_ZT(I|V)/ && !/\sABSENT/i)
+	    {
+		# Typeinfo that isn't already absent. Add the ABSENT keyword.
+		    my @frags = split /;/, $_, 2; # 1 or 2 parts depending on the presence of a comment
+		    $frags[0] =~ s/\s*$/ ABSENT /;
+		    $_ = join ';', @frags;
+	    }
+	    else
+	    {
+		# Try to substitute any va_list params with char* (Pc). Ignore if no match
+		s/St9__va_list/Pc/g;
+	    }
+		print NEWDEF "$_\n";	    
+	}
+	close OLDDEF;
+	close NEWDEF;
+	print "Successfully generated $newPath\n";
+}
+
+sub InitLinkPaths() {
+#	set up lib path - this is the path where the target puts it's import library
+
+	my $ABI=&Mmp_ABI;
+
+#	let the build target determine where it puts its import libray and where its links against its imports
+	my $UnderlyingABI=$ABI;
+	$UnderlyingABI=&PMUnderlyingABI($ABI) if defined &PMUnderlyingABI;
+
+	$Path{Lib}="$E32env::Data{LinkPath}";
+	unless ($ASSPExports) {
+		$Path{Lib}.= lc($UnderlyingABI)."\\";
+	} 
+	else {
+		$Path{Lib}.= lc($Plat{ASSP})."\\";
+	}
+
+
+#	set up link path - this is the place where the target looks for ordinary libraries
+	$Path{Link}="$E32env::Data{LinkPath}"."$UnderlyingABI\\";
+
+#	set up stat link path - this is where the target looks for static libraries
+	$Path{StatLink}="$E32env::Data{LinkPath}";
+	if ($Plat{StatLink}) {
+			$Path{StatLink}.=lc($Plat{StatLink})."\\";
+	} else {
+		unless ($Plat{OS} eq 'WINS') {	# WINC and WINS versions of EEXE are different
+			$Path{StatLink}.=lc($ABI)."\\"; # ARM static libraries are currently always ASSP-independent
+		}
+		else {
+			$Path{StatLink}.=lc($Plat{ASSP})."\\"; # WINC static libraries are currently always ASSP-specific
+		}
+	}
+
+#	set up release path
+	$Path{Rel}="$E32env::Data{RelPath}".lc($Plat{Real})."\\";
+	
+}
+
+sub CreateExtraFile ($$) { # takes abs path for source and text
+# allows modules to create extrafiles
+	my ($FILE,$Text)=@_;
+	if ($Options{makemakefile}) {	# only create if making the makefile
+		if ($Options{v}) {
+			print "Creating \"$FILE\"\n";
+		}
+		eval { &Path_MakePathL($FILE); };
+		die $@ if $@;
+		open FILE, ">$FILE" or die "WARNING: Can't open or create \"$FILE\"\n";
+		print  FILE $Text or die "WARNING: Can't write text to \"$FILE\"\n";
+		close FILE or die "WARNING: Can't close \"$FILE\"\n";
+	}
+}
+
+sub ABI () {
+	$ABI;
+}
+sub AddSrc ($$) { # needs abs path for source
+# allows modules to add a source file to the project and have it created if necessary
+	my ($SRCFILE,$Text)=@_;
+	my $SrcPath=&Path_Split('Path',$SRCFILE);
+	my $CurFile=&Path_Split('File',$SRCFILE);
+	my $BaseName=&Path_Split('Base',$SRCFILE);
+	
+	if ((not -e $SRCFILE) || (-M $SRCFILE > -M $MMPFILE)) {
+		# only create the file if it's older than the .MMP file
+		CreateExtraFile($SRCFILE,$Text);
+	}
+	 my %CurSource;
+	 $CurSource{SrcPath}=$SrcPath;
+	 $CurSource{CurFile}=$CurFile;
+	 $CurSource{BaseTrg}=$BaseName;
+	 push @SourceStruct, \%CurSource;
+}
+sub AddPlatMacros (@) {
+# allows modules to add extra macros to the platform macro list
+	push @{$Plat{Macros}},@_;
+}
+sub AifRef () {
+	$CurAifRef;
+}
+sub AifStructRef () {
+	\@AifStruct;
+}
+sub AllowDllData () {
+	$AllowDllData;
+}
+sub CompressTarget () {
+	$CompressTarget;
+}
+sub CompressTargetMode () {
+	$CompressTargetMode;
+}
+sub BuildAsARM () {
+	return 0 if $Options{ithumb};
+	return 1 if $Options{iarm};
+	$BuildAsARM;
+}
+sub ASSPLibList () {
+	@ASSPLibList;
+}
+sub ASSPLinkPath () {
+#	this is the path where the target looks for ASSP-specific import libraries
+	my $Path=$Path{ASSPLink};
+	if ($CurBld) {
+		if ($Plat{OS} eq 'EPOC32') {
+			$Path.="UREL\\";
+		}
+		else {
+			$Path.="UDEB\\";
+		}
+	}
+	$Path;
+}
+sub BaseMak () {
+	&Path_Split('Base',$MAKEFILE);
+}
+sub BaseResrc () {
+	&Path_Split('Base',$CurResrc);
+}
+sub BaseResrcList () {
+	my @ResrcList=&ResrcList;
+	my $Path;
+	foreach $Path (@ResrcList) {
+		$Path=&Path_Split('Base',$Path);
+	}
+	@ResrcList;
+}
+sub BaseSrc () {
+	&Path_Split('Base',$CurSrc);
+}
+sub ExtSrc () {
+	&Path_Split('Ext',$CurSrc);
+}
+sub BaseSrcList () {
+	my @SrcList=&SrcList;
+	my $Path;
+	foreach $Path (@SrcList) {
+		$Path=&Path_Split('Base',$Path);
+	}
+	@SrcList;
+}
+sub BaseSysResrcList () {
+	my @SysResrcList=&SysResrcList;
+	my $Path;
+	foreach $Path (@SysResrcList) {
+		$Path=&Path_Split('Base',$Path);
+	}
+	@SysResrcList;
+}
+sub BaseTrg () {
+	&Path_Split('Base',$Trg);
+}
+sub BitMapRef () {
+	$CurBitMapRef;
+}
+sub BitMapStructRef () {
+	\@BitMapStruct;
+}
+sub Bld () {
+	$CurBld;
+}
+sub BldList () {
+	@{$Plat{Blds}};
+}
+sub BldPath () {
+	my $Path=$Path{"Bld"};
+	if ($CurBld) {
+		$Path.=$FeatureVariantInfo{$CurBld."_LABEL"}."\\" if (%FeatureVariantInfo && !$FeatureVariantInfo{INVARIANT} && $FeatureVariantInfo{$CurBld."_LABEL"});
+		$Path.="$CurBld\\";
+	}
+	$Path;
+}
+sub CallDllEntryPoints () {
+	$CallDllEntryPoints;
+}
+sub Capability () {
+	$Capability;
+}
+sub CapabilityFlags () {
+	@CapabilityFlags;
+}
+sub DataLinkAddress () {
+	$DataLinkAddress;
+}
+sub DataPath () {
+	$E32env::Data{DataPath};
+}
+sub DebugLibList () {
+	@DebugLibList;
+}
+sub DefFile () {
+	"$Def{Path}$Def{Base}$Def{Ext}";
+}
+sub DefFileType () {
+	$Plat{DefFile};
+}
+sub DepList () {
+	sort @CurDepList;
+}
+sub Doc () {
+	$CurDoc;
+}
+sub DocList () {
+	if ($CurSrcPath) {
+		return sort @{$DocHash{$CurSrcPath}};
+	}
+	my @DocList;
+	my $Key;
+	foreach $Key (keys %DocHash) {
+		push @DocList,@{$DocHash{$Key}};
+	}
+	sort @DocList;
+}
+sub EPOCPath () {
+	$E32env::Data{EPOCPath};
+}
+sub EPOCDataPath () {
+	$E32env::Data{EPOCDataPath};
+}
+sub EPOCIncPath () {
+	$E32env::Data{EPOCIncPath};
+}
+sub EPOCRelPath () {
+	$E32env::Data{RelPath};
+}
+sub EPOCSecurePlatform () {
+	$E32env::Data{SecurePlatform};
+}
+sub EPOCToolsPath () {
+	$E32env::Data{EPOCToolsPath};
+}
+sub Exports () {
+	@{$TrgType{Exports}{$Plat{"DefFile"}}};
+}
+sub ExportUnfrozen () {
+	$ExportUnfrozen;
+}
+sub FirstLib () {
+	$FirstLib;
+}
+sub FixedProcess () {
+	$FixedProcess;
+}
+sub BasicTrgType () {
+	$TrgType{Basic};
+}
+sub HeapSize () {
+	%HeapSize;
+}
+sub LibList () {
+	@LibList;
+}
+sub LibPath () {
+#	this is the path where the target puts it's import library
+	my $Path=$Path{Lib};
+	if ($CurBld) {
+		if (($Plat{DefFile} eq 'EABI') || ($Plat{DefFile} eq 'x86gcc') || ($Plat{OS} eq 'TOOLS2')) {
+			$Path.="lib\\";
+		}
+		elsif ($Plat{OS} eq 'EPOC32') {
+			$Path.="urel\\";
+		}
+		else {
+			$Path.="udeb\\";
+		}
+	}
+	$Path;
+}
+sub LinkAs () {
+	$LinkAs;
+}
+sub LinkAsBase () {
+	$LinkAsBase;
+}
+sub ExportLibrary () {
+	$ExportLibrary;
+}
+sub NoExportLibrary () {
+	$NoExportLibrary;
+}
+sub LinkPath () {
+#	this is the place where the target looks for CPU-specific libraries
+	my $Path=$Path{Link};
+	if ($CurBld) {
+		if ($Plat{DefFile} eq 'EABI' || $Plat{DefFile} eq 'x86gcc') {
+			$Path.="LIB\\";
+		}
+		elsif ($Plat{OS} eq 'EPOC32') {
+			$Path.="UREL\\";
+		}
+		else {
+			$Path.="UDEB\\";
+		}
+	}
+	$Path;
+}
+
+sub MacroList ($) {
+	if ($_[0]) {
+	return @{$BldMacros{$_[0]}};
+	}
+	return @{$Plat{Macros}} unless $CurBld;
+	(@{$Plat{Macros}},@{$BldMacros{$CurBld}});
+}
+
+# returns the file containing Variant specific Macros
+sub VariantFile($)
+{
+    return $variantMacroHRHFile;
+}
+# returns the file containing Variant specific Macros, which may differ from the above if feature variants are used
+sub ResourceVariantFile($)
+{
+    return $ResourceVariantMacroHRHFile;
+}
+sub MakeFilePath () {
+	&Path_Split('Path',$MAKEFILE);
+}
+sub MmpFile () {
+	$MMPFILE;
+}
+sub PerlLibPath () {
+	$PerlLibPath;
+}
+sub Plat () {
+	$Plat{Real};
+}
+sub PlatABI () {
+	$Plat{"ABI"};
+}
+sub PlatCompiler () {
+	$Plat{"Compiler"};
+}
+sub PlatName () {
+	$Plat{Name};
+}
+sub PlatOS () {
+	$Plat{OS};
+}
+sub PlatOverrideList () {
+	@PlatOverrideList;
+}
+sub ProcessPriority () {
+	$ProcessPriority;
+}
+sub RelPath () {
+	my $Path=$Path{Rel};
+	if ($CurBld) {
+		$Path .= lc($CurBld)."\\";
+	}
+	$Path;
+}
+sub ResourceRef () {
+	$CurResourceRef;
+}
+sub ResourceStructRef () {
+	\@ResourceStruct;
+}
+sub SetCurBld($) {
+	$CurBld=$_[0];		# used by ide_cw.pm when handling additional platforms
+}
+sub	SetStdIncPaths (@) {
+# allows module to set standard include paths
+	@StdIncPaths=();
+	my $Path;
+	foreach $Path (@_) {
+		$Path=~s-^(.*[^\\])$-$1\\-o if defined($Path);
+		push @StdIncPaths, $Path;	# only place drive letters may appear, up to modules to handle
+	}
+}
+sub Src () {
+	$CurSrc;
+}
+sub SourceStructRef () {
+	\@SourceStruct;		#array of references to hashes of SOURCEPATH => (filename1, filename2, ...)
+	}
+sub SrcList () {
+	my @SrcList;
+    my $KeyRef;
+    foreach $KeyRef (@SourceStruct) {
+            push @SrcList,$$KeyRef{CurFile};
+           } 
+	 @SrcList;
+}
+
+sub SmpSafe () {
+	$SmpSafe;
+}
+
+sub StackSize () {
+	$StackSize;
+}
+sub StatLibList () {
+	@StatLibList;
+}
+sub StatLinkPath () {
+	my $Path=$Path{StatLink};
+	if ($CurBld) {
+		$Path.="$CurBld\\";
+	}
+	$Path;
+}
+sub StdCpp () {
+	$StdCpp;
+}
+sub NoStdCpp () {
+	$NoStdCpp;
+}
+
+sub NewLib () {
+	$NewLib;
+}
+sub SetStatLinkPath($) {
+	($Path{StatLink}) = @_;
+}
+sub SrcPath () {
+	$CurSrcPath;
+}
+sub SysIncPaths () {
+	@SysIncPaths;
+}
+sub ResourceSysIncPaths () {
+	return @ResourceSysIncPaths;
+}
+sub Trg (;$) {
+	# The optional $bld argument permits (U)DEB and (U)REL distinction in situations where $CurBld isn't set/relevant
+	my ($bld) = @_;
+	$bld = $CurBld if (!$bld);
+
+	return "" if !$Trg;
+
+	my $localTrg = $Trg;	
+	my $vinfo = $FeatureVariantInfo{$bld."_LABEL"};
+	$localTrg =~ s/(\.[^\.]+)$/\.$vinfo$1/ if ($bld && %FeatureVariantInfo && !$FeatureVariantInfo{INVARIANT} && $vinfo);
+	return $localTrg;
+}
+sub TrgPath () {
+	$TrgType{Path};
+}
+sub TrgType () {
+	$TrgType{Name};
+}
+# this can probably go as its always 0 now
+sub KernelTrg () {
+	$TrgType{Kernel};
+}
+sub SystemTrg () {
+	$TrgType{System};
+}
+sub UidList () {
+	@UidList;
+}
+sub UserIncPaths () {
+	@UserIncPaths;
+}
+sub SrcDbg () {
+	$SrcDbg;
+}
+sub CompilerOption
+{
+	my $CompOption=$WarningLevel{$_[0]};
+	$CompOption="" if (!defined($CompOption)); 
+	$CompOption;
+}
+sub LinkerOption
+{
+    my $lnkOption = $LinkerOptions{$_[0]};
+    $lnkOption="" if (!defined($lnkOption));
+    $lnkOption;
+}
+
+sub PlatRec () {
+	%Plat;
+}
+
+sub Version() {
+	%Version;
+}
+
+sub SecureId() {
+	$SecureId;
+}
+
+sub VendorId () {
+	$VendorId;
+}
+
+sub EABIDef () {
+	$EABIDef;
+}
+
+sub ReplaceOptions () {
+	my @ReplacementOptions = ();
+	if (defined($ReplaceOptions{$_[0]}))
+	{
+		@ReplacementOptions=@{$ReplaceOptions{$_[0]}};
+	}	
+	@ReplacementOptions;
+}
+
+sub ARMFPU () {
+	$ARMFPU;
+}
+
+sub IsDebuggable () {
+	$IsDebuggable;
+}
+
+sub PlatTxt2D () {
+	@PlatTxt2D;
+}
+
+sub ToolChain () {
+	my $ToolChain = $TruePlat{Toolchain};
+	$ToolChain ="" if(!defined ($TruePlat{Toolchain}) );
+	$ToolChain;
+}
+
+sub StringTables () 
+{
+	@StringTable;
+}
+
+
+#This generates and adds the generated source of the stringtable to the source list so it's included in the binary.
+sub AddStringTables ()
+{
+	if(@StringTable)
+	{
+		foreach my $stringtable (@StringTable)
+		{
+			my %genSrcHash;
+
+			$genSrcHash{SrcPath} = $Path{Bld};
+			$genSrcHash{CurFile} = $stringtable->{BaseTrg}.".cpp";
+			$genSrcHash{BaseTrg} = $stringtable->{BaseTrg};
+
+			push(@SourceStruct, \%genSrcHash) if !$stringtable->{Hdronly};
+
+			# Execute it now.  This can probably be moved into the makefile by adding a suitable rule
+			# to ensure the resource file is generated before the source tries to #include it.
+			my $stPath = $Path{Bld};
+
+			my $stCpp = $stringtable->{BaseTrg}.".cpp";
+			my $stHeader = lc($stringtable->{BaseTrg}).".h";
+			my $stFile = $stringtable->{STFile};
+			my $stOrigin = $stringtable->{STPath};
+			system("perl -S ecopyfile.pl $stOrigin$stFile $stPath$stFile");
+			system("perl -S stringtable.pl $stPath$stFile");
+
+			#If it's an exported header we'll need to export it.
+			if(defined $stringtable->{ExportPath}) 
+			{
+				my $exportpath = $stringtable->{ExportPath};
+
+				system("perl -S ecopyfile.pl $stPath$stHeader $exportpath\\$stHeader");
+
+				push(@UserIncPaths, $exportpath);
+				push(@StringTableUserIncPaths, $exportpath);
+			}
+			#otherwise we just need the path of the generated header to be added 'userinclude'.
+			else 
+			{
+				push(@UserIncPaths, $Path{Bld});
+				push(@StringTableUserIncPaths, $Path{Bld});
+			}
+		}
+	}
+}
+
+sub CheckSourceMMPMetaData () {
+	%CheckSourceMMPMetaData;
+}
+
+sub CheckSourceMMPIncludes () {
+	%CheckSourceMMPIncludes;
+}
+
+sub CheckSourceURELIncludes () {
+	%CheckSourceURELIncludes;
+}
+
+sub CheckSourceUDEBIncludes () {
+	%CheckSourceUDEBIncludes;
+}
+
+sub CodePagingTargetMode() {
+	$CodePagingTargetMode;
+}
+
+sub DataPagingTargetMode() {
+	$DataPagingTargetMode;
+}
+
+sub DebugSwitchUsed () {
+	return 1 if (defined $DebugSwitch);
+	return 0;
+}
+
+sub SymbolicDebugEnabled () {
+	return $DebugSwitch;
+}
+
+sub IsFunctionCallLogging() {
+	$Options{logfc};
+}
+
+sub IsWideCharMain() {
+	return $IsWideCharMain;
+}
+
+sub MmpMacros(){
+	my @mmpMacros=&Mmp_Macros;
+	return @mmpMacros;
+}
+
+sub FeatureVariantInfo()
+	{
+	return %FeatureVariantInfo;
+	}
+
+sub FeatureVariantVMapFile()
+	{
+	return "" if !%FeatureVariantInfo || defined $FeatureVariantInfo{INVARIANT};
+
+	my $target = RelPath().Trg();
+	$target =~ s/\.$FeatureVariantInfo{$CurBld."_LABEL"}//;
+# modified by SV start: makefile improvement 
+	my $vmap = $target. "." . $FeatureVariantInfo{NAME}.".vmap";
+# modified by SV end: makefile improvement 
+
+	eval { &Path_MakePathL($vmap); };	
+
+	if (featurevariantmap->Save($target, $FeatureVariantInfo{$CurBld."_LABEL"}, $FeatureVariantInfo{NAME}, $FeatureVariantInfo{$CurBld."_FEATURES"}, &Mmp_IsFeatureVariant ? [ 'FEATUREVARIANT' ] : undef))
+		{
+		die "ERROR: Couldn't create feature variant map file \"$vmap\".\n";
+		}
+
+	return $vmap;
+	}
+
+sub FeatureVariantBaseTrg()
+	{
+	# In some situations, for example .sym files, we need a feature variant tagged name
+	# based on the normal BaseTrg i.e. root target name but minus extension.
+	my $localBaseTrg = BaseTrg();
+		
+	if (%FeatureVariantInfo && !defined $FeatureVariantInfo{INVARIANT})
+		{
+		$localBaseTrg .= ".".$FeatureVariantInfo{$CurBld."_LABEL"};
+		}
+
+	return $localBaseTrg;
+	}
+
+sub CommandFile()
+	{
+	my $plat = Plat();	
+	$plat .= ".$FeatureVariantInfo{NAME}" if %FeatureVariantInfo;
+	return MakeFilePath().BaseTrg().".$plat.".Bld().".objects.via";
+	}
+
+#Compiler wrapper option support
+sub CompilerWrapperOption()
+{
+  # Return 1 if compiler wrapper option option(-wrap) is specified else return 0	
+  $IsCompilerWrapperOption;
+}
+
+#Proxy wrapper option support
+sub ProxyWrapperOption()
+{
+  # Return 1 if compiler wrapper option option(-wrap) is specified else return 0	
+  $IsProxyWrapperOption;
+}
+# modified start: makefile improvement 
+sub getSrcSet()
+{
+	return \%CurSrcSet;
+}
+# modified end: makefile improvement 
+
+#1 = STDCPP support is available
+#others = STDCPP support is not available
+my $stdcppsupport;
+
+#STDCPP support check (SYMBIAN_OE_LIBSTDCPP)
+#return non-zero means STDCPP support is available,
+#otherwise it's not available
+sub StdCppSupport()
+{
+	return $stdcppsupport if (defined $stdcppsupport);
+	
+	my @hrhMacros = &Variant_GetMacroList;
+	if (grep /^\s*SYMBIAN_OE_LIBSTDCPP\s*$/, @hrhMacros)
+	{
+		$stdcppsupport = 1;
+	}
+	else
+	{
+	    $stdcppsupport = 0;
+	}
+	
+	return $stdcppsupport;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/makmake/mmp.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,2410 @@
+# 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:
+# Processes an mmp file and sets up subroutines to return the data
+# 
+#
+
+package Mmp;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	Mmp_SetVerbose
+	Mmp_ProcessL
+
+	Mmp_ABI
+	Mmp_AifStruct
+	Mmp_AllowDllData
+	Mmp_CompressTarget
+	Mmp_ASSPExports
+	Mmp_ASSPLibList
+	Mmp_BuildAsARM
+	Mmp_BitMapStruct 
+	Mmp_CallDllEntryPoints
+	Mmp_Capability
+	Mmp_CapabilityFlags
+	Mmp_DataLinkAddress
+	Mmp_DebugLibList 
+	Mmp_Def
+	Mmp_DocHash
+	Mmp_ExportUnfrozen
+	Mmp_FirstLib
+	Mmp_FixedProcess
+	Mmp_HeapSize
+	Mmp_LibList 
+	Mmp_LinkAs
+	Mmp_LinkAsBase
+	Mmp_ExportLibrary
+	Mmp_NewLib
+	Mmp_NoExportLibrary
+	Mmp_Macros
+	Mmp_MmpFlag
+	Mmp_PlatTxt2D
+	Mmp_ProcessPriority
+	Mmp_ResourceStruct 
+	Mmp_SmpSafe
+	Mmp_RamTargets
+	Mmp_RomTargets
+	Mmp_SourceStruct 
+	Mmp_StackSize
+	Mmp_StatLibList 
+	Mmp_SysIncPaths
+	Mmp_Trg
+	Mmp_TrgType
+	Mmp_UidList
+	Mmp_UserIncPaths
+	Mmp_SrcDbg
+	Mmp_StdCpp
+	Mmp_NoStdCpp
+	Mmp_WarningLevel
+	Mmp_LinkerOptions
+	Mmp_Reset
+	Mmp_Uids
+	Mmp_Version
+	Mmp_SecureId
+	Mmp_VendorId
+	Mmp_Replace
+	Mmp_ARMFPU	
+	Mmp_SetIgnoreMissingDef 
+	Mmp_StringTable
+	Mmp_CompressTargetMode
+	Mmp_CodePagingTargetMode
+	Mmp_DataPagingTargetMode
+	Mmp_CheckSourceMMPMetaData
+	Mmp_CheckSourceMMPIncludes
+	Mmp_IsWideCharMain
+	Mmp_IsDebuggable
+	Mmp_IsFeatureVariant
+	Mmp_TestedMacros
+);
+
+
+use Genutl;
+use Prepfile;
+use Pathutl;
+use Trgtype;
+use CheckSource;
+use Cwd;
+
+my %ProcessPriorityNames = (
+	LOW=>'Low',
+	BACKGROUND=>'Background',
+	FOREGROUND=>'Foreground',
+	HIGH=>'High',
+	WINDOWSERVER=>'WindowServer',
+	FILESERVER=>'FileServer',
+	REALTIMESERVER=>'RealTimeServer',
+	SUPERVISOR=>'SuperVisor'
+);
+
+my %CapabilityNames;
+
+my %Mode;
+
+my $ABI;
+my @AifStruct;
+my $AllowDllData=0;
+
+use constant COMPRESS => 0;
+use constant NOCOMPRESS => 1;
+my $CompressTarget=COMPRESS;	# compress the target binary (negative logic)
+use constant NOCOMPRESSIONMETHOD => 0;
+use constant INFLATECOMPRESSIONMETHOD => 1;
+use constant BYTEPAIRCOMPRESSIONMETHOD => 2;
+my $CompressTargetMethod=NOCOMPRESSIONMETHOD;   #NONE
+
+my $ASSPABISwitch=0;
+my $ASSPExports=0;
+my @ASSPLibList;
+my @BitMapStruct;
+my $BuildAsARM=0;
+my $CallDllEntryPoints=0;
+my $Capability;
+my @CapabilityFlags=(0,0);
+my %CurSource;
+my $DataLinkAddress='';
+my @DebugLibList;
+my %Def;
+$Def{Path}='';
+$Def{Base}='';
+$Def{Ext}='';
+my %DocHash;
+my $ExportUnfrozen=0;
+my $FirstLib;
+my $FixedProcess=0;
+my %HeapSize;
+my @LangList;
+my @LibList;
+my $LinkAs;
+my $LinkAsBase;
+my $ExportLibrary;
+my $NoExportLibrary;
+my @Macros;
+my %MmpFlag;
+my $NewLib;
+my @PlatTxt2D;
+my $ProcessPriority='';
+my @ResourceStruct;
+my @RamTargets;
+my @RomTargets=({}); # include default
+my $SmpSafe = 0;
+my @SourceStruct;
+my $StackSize='';
+my @StatLibList;
+my $StdCpp = 0;
+my $NoStdCpp = 0;
+my @SysIncPaths;
+my $Trg;
+my %TrgType;
+my @UidList;
+my @UserIncPaths;
+my $SrcDbg=0;
+my %Compiler;
+my %LinkerOptions;
+my %Version;
+my $SecureId;
+my $VendorId;
+my %Replace;
+my $ARMFPU;
+my $IgnoreMissingDef=0;
+my @StringTableStruct;
+my $CodePagingTargetMode;	# 0-N/A, 1-UNPAGED, 2-PAGED
+my $DataPagingTargetMode;	# 0-N/A, 1-UNPAGED, 2-PAGED
+my $WideCharMain=0;
+my $IsDebuggable;	# 0-NON_DEBUGGABLE, 1-DEBUGGABLE,2-DEBUGGABLE_UDEBONLY
+my $FeatureVariant=0;
+use constant NOTPAGED => 0;
+use constant UNPAGED => 1;
+use constant PAGED => 2;
+use constant NON_DEBUGGABLE => 0;
+use constant DEBUGGABLE => 1;
+use constant DEBUGGABLE_UDEBONLY => 2;
+my %CheckSourceMMPMetaData;
+my %CheckSourceMMPIncludes;
+my %mmptestedMacrosHash;
+
+# List of deprecated 2nd UIDs. These are checked in a Secure Platform
+my %deprecatedUIDs=
+    (
+    "0x10005e32" => "Unmigrated FEP detected from use of UID 0x10005e32 ",
+    "0x10004cc1" => "Unmigrated Application Initaliser (CEikLibrary deriver) detected from use of UID 0x10004cc1 ",
+    "0x10003a30" => "Unmigrated Conarc plugin detected from use of UID 0x10003a30",
+    "0x10003a19" => "Unmigrated Recogniser detected from use of UID 0x10003a19",
+    "0x10003a37" => "Unmigrated Recogniser detected from use of UID 0x10003a37",
+    "0x10003a34" => "Unmigrated CTL detected from use of UID 0x10003a34"
+    );
+
+
+sub Mmp_Reset() {
+	undef $ABI;
+	undef @AifStruct;
+	$AllowDllData=0;
+	$CompressTarget=COMPRESS;
+    $CompressTargetMethod=NOCOMPRESSIONMETHOD;
+	$ASSPABISwitch=0;
+	$ASSPExports=0;
+	$BuildAsARM=0;
+	undef @ASSPLibList;
+	undef @BitMapStruct;
+	$CallDllEntryPoints=0;
+	undef $Capability;
+	@CapabilityFlags=(0,0);
+	undef $VendorId;
+	$DataLinkAddress='';
+	undef @DebugLibList;
+	undef %Def;
+	$Def{Path}='';
+	$Def{Base}='';
+	$Def{Ext}='';
+	undef %DocHash;
+	$ExportUnfrozen=0;
+	undef $FirstLib;
+	$FixedProcess=0;
+	undef %HeapSize;
+	undef @LangList;
+	undef @LibList;
+	undef $LinkAs;
+	undef $LinkAsBase;
+	undef $ExportLibrary;
+	undef @Macros;
+	undef %MmpFlag;
+	undef $NewLib;
+	undef @PlatTxt2D;
+	$ProcessPriority='';
+	undef @ResourceStruct;
+	undef @RamTargets;
+	@RomTargets=({}); # include default
+	undef @SourceStruct;   
+	$StackSize='';
+	undef @StatLibList;
+	$SmpSafe = 0;
+	$StdCpp = 0;
+	$NoStdCpp = 0;
+	undef @SysIncPaths;
+	undef $Trg;
+	undef %TrgType;
+	undef @UidList;
+	undef @UserIncPaths;
+	$SrcDbg=0;
+	undef %Compiler;
+	undef %LinkerOptions;
+    undef %Version;
+    $IgnoreMissingDef=0;
+    undef $ARMFPU;
+	undef @StringTableStruct;
+	$CodePagingTargetMode=0;	# default N/A
+	$DataPagingTargetMode=0;	# default N/A
+	$IsDebuggable=0; # Default = 0 (Not debuggable)
+	undef %mmptestedMacrosHash;
+}
+
+BEGIN {
+	$Mode{'Verbose'}=0;
+
+	%CapabilityNames = (
+
+		TCB =>					(1<<0),
+		COMMDD =>				(1<<1),
+		POWERMGMT =>			(1<<2),
+		MULTIMEDIADD =>			(1<<3),
+		READDEVICEDATA =>		(1<<4),
+		WRITEDEVICEDATA =>		(1<<5),
+		DRM =>					(1<<6),
+		TRUSTEDUI =>			(1<<7),
+		PROTSERV =>				(1<<8),
+		DISKADMIN =>			(1<<9),
+		NETWORKCONTROL =>		(1<<10),
+		ALLFILES =>				(1<<11),
+		SWEVENT =>				(1<<12),
+		NETWORKSERVICES =>		(1<<13),
+		LOCALSERVICES =>		(1<<14),
+		READUSERDATA =>			(1<<15),
+		WRITEUSERDATA =>		(1<<16),
+		LOCATION =>				(1<<17),
+		SURROUNDINGSDD =>		(1<<18),
+		USERENVIRONMENT =>		(1<<19),
+#old capability names have zero value
+		ROOT =>				0,
+		MEDIADD =>			0,
+		READSYSTEMDATA =>	0,
+		WRITESYSTEMDATA =>	0,
+		SOUNDDD =>			0,
+		UIDD =>				0,
+		KILLANYPROCESS =>	0,
+		DEVMAN =>			0,
+		PHONENETWORK =>		0,
+		LOCALNETWORK =>		0
+	);
+	my $all=0;
+	foreach (keys %CapabilityNames)
+		{
+		$all = $all | $CapabilityNames{$_};
+		}
+	$CapabilityNames{"ALL"} = $all;
+}
+
+sub Mmp_SetVerbose () {
+	$Mode{'Verbose'}=1;
+}
+
+sub Mmp_SetIgnoreMissingDef() {
+    $IgnoreMissingDef = 1;
+}
+
+sub Mmp_ProcessL ($$$$) {
+	my ($EPOCPath, $MMPFILE, $Plat_ref, $BuildIncList)=@_;
+	my $emulator = $$Plat_ref{OS} ne 'EPOC32';
+
+	if ($Mode{Verbose}) {
+		&Prepfile_SetVerbose;
+	}
+
+	# Generate macro usage information and add variant build includes
+	my $options = '-dU';
+	foreach ( @$BuildIncList )
+		{
+		$options .= ' -I ' . &Path_PrefixWithDriveAndQuote($_);
+		}
+
+#	preprocess the project description file
+	my @Mmp2D;
+	Prepfile_SetCmdOptions($options);
+	eval { &Prepfile_ProcessL(\@Mmp2D, $MMPFILE, &main::VariantFile(), @{$$Plat_ref{MmpMacros}}); };
+	Prepfile_SetCmdOptions('');
+	die $@ if $@;
+
+	my @checkSourceMacros;
+	foreach (@{$$Plat_ref{MmpMacros}}) {
+		$_=uc $_;
+		push @checkSourceMacros, " $_=_____$_";
+	}
+
+	my $current = cwd;
+	$current =~ s/\//\\/g;
+	$current =~ s/^[a-zA-Z]://;
+
+	# Mimic what the current parsing routine does in terms of include paths and .mmp files
+	my @checkSourceUserIncludePaths;
+	push @checkSourceUserIncludePaths, "$ENV{EPOCROOT}epoc32\\include";
+	push @checkSourceUserIncludePaths, "\.";
+	push @checkSourceUserIncludePaths, $current;
+	my @checkSourceSystemIncludePaths = ();
+
+	CheckSource_Includes($MMPFILE, %CheckSourceMMPIncludes, &main::VariantFile(), @checkSourceMacros, @checkSourceUserIncludePaths, @checkSourceSystemIncludePaths, $CheckSource_NoUserSystemDistinction);
+
+	my $NoStrictDef=0;
+	my $TrgPath='';
+	my $TrgType;
+
+	my $MmpPath=&Path_Split('Path', $MMPFILE);
+
+	my @MmpDie=();
+	my @MmpWarn=();
+	my @MmpDiagnostic=();
+	my @MmpMigrationNote=();
+
+	my (%CheckAif, %CheckASSPLib, %CheckDoc, %CheckLang, %CheckLib, %CheckMacro, %CheckResrc, %CheckSrc, %CheckStatLib, %CheckSysInc, %CheckSysResrc, %CheckUserInc);
+
+	my ($CheckDef);
+
+	my ($CheckRamTargets, $CheckRomTargets);
+
+	my ($OtherPlatSwitch, $PlatTxtSwitch);
+
+	my (%CurBitMap, $CurBitMapSrcPath);
+	$CurBitMapSrcPath=$MmpPath;
+
+	my (%CurResource, %ResourceCheckLang);
+
+	my %CurStringTable;
+	my ($CurSrcPath, $MmpMacro, $Line);
+	$CurSrcPath=$MmpPath;
+
+#	include the .MMP file as a document
+	@{$DocHash{$MmpPath}}=(&Path_Split('File', $MMPFILE));
+	$CheckDoc{$MMPFILE}='zero - specified by default';
+
+# process the data structure
+	my $CurFile=$MMPFILE;
+	LINE: foreach $Line (@Mmp2D) {
+		my $LineNum=shift @$Line;
+		$_=shift @$Line;
+		if ($LineNum eq '#') {
+			$CurFile=$_;
+			next LINE;
+		}
+
+		# Get details of tested macros affecting the MMP file
+		# We get this from -dU preprocessor option
+		if (/^#define$/ && "@$Line" =~ /^(\w+(?:\([^\)]*\))?)(?:\s(\S.*?))?\s*$/)
+			{
+			# Record macro details for defined tested macro
+			$mmptestedMacrosHash{$1} = $2 ? "\'$2\'" : 'defined';
+			next LINE;
+			}
+		elsif (/^#undef$/)
+			{
+			# Record macro details for undefined tested macro
+			$mmptestedMacrosHash{"@$Line"} = 'undefined';
+			next LINE;
+			}
+				
+		$CurFile = &Path_Norm ($CurFile);
+		
+		$_=uc $_;
+
+		my $mainElement = $_;
+		
+		if ($PlatTxtSwitch) {
+			if (/^END$/o) {
+				$PlatTxtSwitch=0;
+				next LINE;
+			}
+			push @PlatTxt2D, [ "$CurFile($LineNum)", $_, @$Line ];
+			next LINE;
+		}
+		if ($OtherPlatSwitch) {
+			if (/^END$/o) {
+				$OtherPlatSwitch=0;
+				next LINE;
+			}
+			next LINE;
+		}
+		# ----------- handle body of START BITMAP ... END -------------
+		if (%CurBitMap) {
+			if (/^SOURCE$/o) {
+				unless (@$Line>1) {
+					push @MmpDie, "$CurFile($LineNum) : Not enough arguments for Bitmap keyword SOURCE\n";
+				}
+				my $cldepth = shift @$Line;
+				my @ClDepths = split(/,/, $cldepth);
+				foreach (@ClDepths) {
+					$_ = lc $_; # bmconv can't handle upper-case 'C's
+					unless (/^c?\d\d?a?$/o) {
+						push @MmpDie, "$CurFile($LineNum) : BITMAP color depth \"$_\" - unexpected format\n";
+					}
+				}
+				@ClDepths = (@ClDepths) x @$Line;	# make a sufficiently long list of color depths
+				foreach (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "BITMAP SOURCE", $_, $LineNum, $CheckSource_PhysicalCheck, $CurBitMapSrcPath);
+					$_ = &Path_Norm($_);
+					
+					$_=lc $_;	# bmconv generates a header with case-sensitive enums
+					my $bitmap = "$CurBitMapSrcPath$_";
+					push @{$CurBitMap{Source}}, { # sources must be kept in order
+						Src=>$bitmap,
+						ClDepth=>shift @ClDepths	# take next color depth from the list
+					};
+					unless (-e $bitmap) {
+						push @MmpWarn, "$CurFile($LineNum) : BITMAP source \"$CurBitMapSrcPath$_\" not found\n";
+					}
+				}
+				next LINE;
+			}
+			if (/^END$/o) {
+				$CurBitMapSrcPath=$MmpPath;
+				my %BitMap=%CurBitMap;
+				undef %CurBitMap;
+				push @BitMapStruct, \%BitMap;
+				next LINE;
+			}
+			if (/^SOURCEPATH$/o) {
+				unless ($CurBitMapSrcPath=shift @$Line) {
+					push @MmpDie, "$CurFile($LineNum) : No path specified with Bitmap keyword SOURCEPATH\n";
+					next LINE;
+				}
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "BITMAP SOURCEPATH", $CurBitMapSrcPath, $LineNum, $CheckSource_PhysicalCheck);
+				$CurBitMapSrcPath = &Path_Norm($CurBitMapSrcPath);
+				
+				$CurBitMapSrcPath=~s-^(.*[^\\])$-$1\\-o;   # ensure path ends with a backslash
+				$CurBitMapSrcPath=&Path_MakeAbs($CurFile,$CurBitMapSrcPath);
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Too many arguments for Bitmap keyword SOURCEPATH\n";
+				}
+				next LINE;
+			}
+			if (/^HEADER$/o) {
+				if ($CurBitMap{Hdr}) {
+					push @MmpWarn, "$CurFile($LineNum) : Bitmap HEADER already specified at line $CurBitMap{Hdr}\n";
+					next LINE;
+				}
+				$CurBitMap{Hdr}="$CurFile($LineNum)";
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Bitmap keyword HEADER takes no arguments\n";
+				}
+				next LINE;
+			}
+
+
+			if (/^TARGETPATH$/o) {
+				if ($CurBitMap{TrgPath}) {
+					push @MmpWarn, "$CurFile($LineNum) : Bitmap TARGETPATH already specified\n";
+					next LINE;
+				}
+				unless ($CurBitMap{TrgPath}=shift @$Line) {
+					push @MmpDie, "$CurFile($LineNum) : No path specified with Bitmap keyword TARGETPATH\n";
+					next LINE;
+				}
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "BITMAP TARGETPATH", $CurBitMap{TrgPath}, $LineNum);
+				$CurBitMap{TrgPath} = &Path_Norm($CurBitMap{TrgPath});
+
+				$CurBitMap{TrgPath}=~s-^\\(.*)$-$1-o;        # remove leading backslash, if any
+				$CurBitMap{TrgPath}=~s-^(.*[^\\])$-$1\\-o;   # ensure path ends with a backslash
+				$CurBitMap{TrgPath}="z\\$CurBitMap{TrgPath}";
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Too many arguments for Bitmap keyword TARGETPATH\n";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : Unrecognised Bitmap Keyword \"$_\"\n";
+		}
+		
+		# ----------- handle body of START RESOURCE ... END -------------
+		if (%CurResource) {
+			if (/^END$/o) {
+				$CurResource{SrcPath}=$CurSrcPath;
+				my %Resource=%CurResource;
+				undef %CurResource;
+				push @ResourceStruct, \%Resource;
+				undef %ResourceCheckLang;
+				next LINE;
+			}
+			if (/^HEADER$/o) {
+				if ($CurResource{Hdr}) {
+					push @MmpWarn, "$CurFile($LineNum) : Resource HEADER already specified at line $CurResource{Hdr}\n";
+					next LINE;
+				}
+				elsif ($CurResource{Hdronly}) {
+					push @MmpWarn, "$CurFile($LineNum) : Resource HEADERONLY already specified at line $CurResource{Hdr}\n";
+					next LINE;
+				}
+				$CurResource{Hdr}="$CurFile($LineNum)";
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Resource keyword HEADER takes no arguments\n";
+				}
+				next LINE;
+			}
+			if (/^HEADERONLY$/o) {
+				if ($CurResource{Hdronly}) {
+					push @MmpWarn, "$CurFile($LineNum) : Resource HEADERONLY already specified at line $CurResource{Hdr}\n";
+					next LINE;
+				}
+				elsif ($CurResource{Hdr}) {
+					push @MmpWarn, "$CurFile($LineNum) : Resource HEADER already specified at line $CurResource{Hdr}\n";
+					next LINE;
+				}
+				$CurResource{Hdronly}="$CurFile($LineNum)";
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Resource keyword HEADERONLY takes no arguments\n";
+				}
+				next LINE;
+			}
+
+			if (/^LANG$/o) {
+				if (@$Line) {
+					my $Candidate;
+					foreach $Candidate (@$Line) {
+						if ($ResourceCheckLang{$Candidate}) {
+							push @MmpWarn, "$CurFile($LineNum) : Duplicate Language \"$Candidate\" at line $ResourceCheckLang{$Candidate}\n";
+							next; 
+						}
+						push @{$CurResource{Lang}}, $Candidate;
+						$ResourceCheckLang{$Candidate}="$CurFile($LineNum)";
+					}
+					next LINE;
+				}
+				push @MmpWarn, "$CurFile($LineNum) : No Languages specified for keyword LANG\n";
+				next LINE;
+			}
+			if (/^TARGET$/o) {
+				if ($CurResource{BaseTrg}) {
+					push @MmpWarn, "$CurFile($LineNum) : Resource TARGET already specified\n";
+					next LINE;
+				}
+			    my $src=shift @$Line;
+			    CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "RESOURCE TARGET", $src, $LineNum);
+			    
+			    $src = &Path_Norm($src);
+				$CurResource{BaseTrg}=&Path_Split('Base',$src);
+				unless ($CurResource{BaseTrg}) {
+					push @MmpDie, "$CurFile($LineNum) : No name specified with Resource keyword TARGET\n";
+					next LINE;
+				}
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Too many arguments for Resource keyword TARGET\n";
+				}
+				next LINE;
+			}
+			if (/^TARGETPATH$/o) {
+				if ($CurResource{TrgPath}) {
+					push @MmpWarn, "$CurFile($LineNum) : Resource TARGETPATH already specified\n";
+					next LINE;
+				}
+				unless ($CurResource{TrgPath}=shift @$Line) {
+					push @MmpDie, "$CurFile($LineNum) : No path specified with Resource keyword TARGETPATH\n";
+					next LINE;
+				}
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "RESOURCE TARGETPATH", $CurResource{TrgPath}, $LineNum);
+				$CurResource{TrgPath} = &Path_Norm($CurResource{TrgPath});
+				
+				$CurResource{TrgPath}=~s-^\\(.*)$-$1-o;        # remove leading backslash, if any
+				$CurResource{TrgPath}=~s-^(.*[^\\])$-$1\\-o;   # ensure path ends with a backslash
+				$CurResource{TrgPath}="z\\$CurResource{TrgPath}";
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Too many arguments for Resource keyword TARGETPATH\n";
+				}
+				next LINE;
+			}
+			if (/^UID$/o) {
+				if (@$Line) {
+					if (scalar @$Line>2) {
+						push @MmpWarn, "$CurFile($LineNum) : Can't specify more than 2 Uids\n";
+						next LINE;
+					}
+					foreach (@$Line) {
+						$_=&Genutl_AnyToHex($_);
+						if (defined $_) {
+							push @{$CurResource{Uids}}, $_;
+							next;
+						}
+						push @MmpDie, "$CurFile($LineNum) : Uid doesn't fit expected number format\n";
+						next LINE;
+					}
+					next LINE;
+				}
+				push @MmpWarn, "$CurFile($LineNum) : No Uids specified for Resource keyword UID\n";
+				next LINE;
+			}
+			if (/^DEPENDS$/o) {
+				# Note that DEPENDS lines are tolerated, but ignored - these are only relevant to build systems
+				# other than ABLD
+				next LINE;
+			}
+			
+			push @MmpWarn, "$CurFile($LineNum) : Unrecognised Resource Keyword \"$_\"\n";
+		}
+		if (/^WCHARENTRYPOINT$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			if ($TrgType=~/^STDEXE$/io) {
+				$WideCharMain=1;	
+			}
+			else{
+				push @MmpWarn, "$CurFile($LineNum) : WCHARENTRYPOINT is supported only for Target Type STDEXE\n";
+			}
+			next LINE;
+		}
+		# ----------- handle body of START STRINGTABLE ... END -------------
+		if(%CurStringTable)
+		{	
+			if (/^END$/o) {
+				my %stringtable = %CurStringTable;
+				push @StringTableStruct, \%stringtable;
+				undef %CurStringTable;
+				next LINE;
+			}
+			if (/^EXPORTPATH/o) {
+				if (scalar @$Line != 1) {
+					push @MmpDie, "$CurFile($LineNum) : Wrong number of arguments for EXPORTPATH\n";
+				} 
+				if(defined $CurStringTable{ExportPath})	{
+					push @MmpDie, "$CurFile($LineNum) : Redefinition of EXPORTPATH\n";
+				}
+				else {
+				    my $src=shift @$Line;
+					$CurStringTable{ExportPath} = $src;
+
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "STRINGTABLE EXPORTPATH", $CurStringTable{ExportPath}, $LineNum);
+					
+					$CurStringTable{ExportPath} = &Path_Norm($CurStringTable{ExportPath});					
+
+					$CurStringTable{ExportPath} =~ s/\\$//o;   # ensure path doesn't end with a backslash (cl_generic.pm will add one)
+					$CurStringTable{ExportPath} = &Path_MakeEAbs($EPOCPath,$CurFile,$CurStringTable{ExportPath});
+
+				}
+				next LINE;
+			}
+			if (/^HEADERONLY$/o) {
+				if ($CurStringTable{Hdronly}) {
+					push @MmpWarn, "$CurFile($LineNum) : Stringtable HEADERONLY already specified\n";
+					next LINE;
+				}
+				$CurStringTable{Hdronly}="$CurFile($LineNum)";
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Stringtable keyword HEADERONLY takes no arguments\n";
+				}
+				next LINE;
+			}
+		}
+		# ----------- handle top-level MMP file -------------------	
+		if (/^START$/) {
+			unless ($_=uc shift @$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : No Argument specified for START block\n";
+				next LINE;
+			}
+			foreach $MmpMacro (@{$$Plat_ref{MmpMacros}}) {
+				if ($_ eq $MmpMacro) {
+					$PlatTxtSwitch="$CurFile($LineNum)";
+					next LINE;
+				}
+			}
+			if ($_ eq 'BITMAP') {
+				unless ($CurBitMap{Trg}=shift @$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : No Bitmap Target specified\n";
+					$CurBitMap{Trg}='NoTargetSpecified';
+				}
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Too many arguments for START BITMAP clause\n";
+				}
+
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "START BITMAP", $CurBitMap{Trg}, $LineNum);
+				$CurBitMap{Trg} = &Path_Norm($CurBitMap{Trg});
+				next LINE;
+			}
+			if ($_ eq 'RESOURCE') {
+				if (scalar @$Line != 1) {
+					push @MmpWarn, "$CurFile($LineNum) : Wrong number of arguments for START RESOURCE clause\n";
+				} 
+				else {
+				    my $src=shift @$Line;
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "START RESOURCE", $src, $LineNum, $CheckSource_PhysicalCheck, $CurSrcPath);
+					$src = &Path_Norm($src);
+				    
+					$CurResource{Source}="$CurSrcPath$src";
+				}
+
+				
+				next LINE;
+			}
+			if ($_ eq 'STRINGTABLE') {
+				if (scalar @$Line != 1) {
+					push @MmpWarn, "$CurFile($LineNum) : Wrong number of arguments for START STRINGTABLE clause\n";
+				} 
+				else {
+				    my $Candidate = shift @$Line;
+				    CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "START STRINGTABLE", $Candidate, $LineNum, $CheckSource_PhysicalCheck, $CurSrcPath);
+					$Candidate = &Path_Norm($Candidate);
+				    
+					$Candidate =~ s/^\\//;	# remove leading \, if any	
+					$CurStringTable{BaseTrg}=&Path_Split('Base',$Candidate);
+					my $path=&Path_Split('Path',$Candidate);
+					if($path){
+					  $CurStringTable{STPath}=&Path_MakeAbs($CurSrcPath,&Path_Split('Path',$Candidate));
+					}
+					else {
+					  $CurStringTable{STPath}=$CurSrcPath;
+					}
+					$CurStringTable{STFile}=&Path_Split('File',$Candidate);
+
+				}
+				next LINE;
+			}
+			$OtherPlatSwitch="$CurFile($LineNum)";
+			next LINE;
+		}
+
+		if (/^AIF$/o) {
+			my ($trg, $dir, $file, $clDepth, @bitmaps)=@$Line;
+			unless ($file) { # bitmaps aren't essential
+				push @MmpDie, "$CurFile($LineNum) : Not enough arguments for keyword AIF\n";
+				next LINE;
+			}
+			my %Data;
+			$Data{Trg} = $trg;	# Defect: may include directory
+			$dir=~s-^(.*[^\\])$-$1\\-o;   # ensure path ends with a backslash
+			$Data{Source}=&Path_MakeAbs($CurFile, "$dir$file");
+			unless (-e "$Data{Source}") {
+				push @MmpWarn, "$CurFile($LineNum) : AIF source \"$Data{Source}\" not found\n";
+			}
+			if ($CheckAif{$Data{Trg}}) {
+				push @MmpDie, "$CurFile($LineNum) : Duplicate Aif \"$Data{Trg}\" at line $CheckAif{$Data{Trg}}\n";
+				next LINE;
+			}
+			$CheckAif{$Data{Trg}}="$CurFile($LineNum)";
+			push @AifStruct, \%Data;
+			next LINE unless (@bitmaps);
+			# handle bitmaps
+			my @ClDepths = split(/,/, $clDepth);
+			foreach (@ClDepths) {
+				$_ = lc $_; # bmconv can't handle upper-case 'C's
+				unless (/^c?\d\d?$/o) {
+					push @MmpDie, "$CurFile($LineNum) : AIF color depth \"$_\" - unexpected format\n";
+				}
+			}
+			@ClDepths = (@ClDepths) x @bitmaps;	# make a sufficiently long list of color depths
+			foreach $file (@bitmaps) {
+				if ($file !~ /^\\/) {
+					$file = &Path_MakeAbs($CurFile, "$dir$file");
+				}
+				push @{$Data{BitMaps}}, { # sources must be kept in order
+					Src=>$file,
+					ClDepth=>shift @ClDepths	# take next color depth from the list
+				};
+				unless (-e $file) {
+					push @MmpWarn, "$CurFile($LineNum) : AIF source \"$file\" not found\n";
+				}
+			}
+			next LINE;
+		}
+		if (/^ASSPABI$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$ASSPABISwitch=1;
+			next LINE;
+		}
+		if (/^ASSPEXPORTS$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$ASSPExports=1;
+			next LINE;
+		}
+		if (/^ASSPLIBRARY$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum);
+					$Candidate = &Path_Norm($Candidate);
+					
+					unless ($emulator or &Genutl_ParseVersionedName(\$Candidate)) {
+						push @MmpWarn, "$CurFile($LineNum) : Bad version in ASSPLIBRARY\n";
+					}
+					if ($CheckASSPLib{$Candidate}) {
+						push @MmpWarn, "$CurFile($LineNum) : Duplicate Library \"$Candidate\" at line $CheckASSPLib{$Candidate}\n";
+						next; 
+					}
+					
+					push @ASSPLibList, $Candidate;
+					$CheckASSPLib{$Candidate}="$CurFile($LineNum)";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Libraries specified for keyword ASSPLIBRARY\n";
+			next LINE;
+		}
+		if (/^CAPABILITY$/o) {
+			if (defined($Capability)) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine CAPABILITY\n";
+				next LINE;
+			}
+			if (scalar @$Line == 0) {
+				push @MmpWarn, "$CurFile($LineNum) : Wrong number of arguments for CAPABILITY\n";
+				next LINE;
+			}
+			foreach my $capname (@$Line) {
+				my $invert = 0;
+				if ($capname =~ /^-(\w*)/) {
+					$invert = 0xffffffff;
+					$capname = $1;
+				}
+				my $capFlag = 0;
+				if (defined($CapabilityNames{uc $capname})) {
+					$capFlag = $CapabilityNames{uc $capname};
+					if (not $capFlag) {
+						push @MmpDiagnostic, "$CurFile($LineNum) : Use of old capability name, \"$capname\" ignored\n";
+						next;
+					}
+					if ("ALL" eq uc $capname and $invert) {
+						push @MmpWarn, "Capability '-ALL' not allowed";
+						next;
+					}
+				}
+				elsif ("NONE" eq uc $capname) {
+					if($invert) {
+						push @MmpWarn, "Capability '-NONE' not allowed";
+						next;
+					}
+				}
+				else {
+					push @MmpWarn, "$CurFile($LineNum) : Unknown capability \"$capname\" ignored\n";
+					next;
+				}
+				# append name to capability string
+				if (defined($Capability) and not $invert) { $Capability .= "+"; }
+				if($invert) { $Capability .= "-"; }
+				$Capability .= $capname;
+
+				# add capability mask to flags
+				$CapabilityFlags[0] = $CapabilityFlags[0] ^ $invert;
+				$CapabilityFlags[0] = $CapabilityFlags[0] | $capFlag;
+				$CapabilityFlags[0] = $CapabilityFlags[0] ^ $invert;
+				$CapabilityFlags[1] = 0;
+				next;
+			}
+			next LINE;
+		}
+		if (/^DEBUGLIBRARY$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum);
+					$Candidate = &Path_Norm($Candidate);
+					
+					unless ($emulator or &Genutl_ParseVersionedName(\$Candidate)) {
+						push @MmpWarn, "$CurFile($LineNum) : Bad version in DEBUGLIBRARY\n";
+					}
+					if ($CheckLib{$Candidate}) {
+						push @MmpWarn, "$CurFile($LineNum) : Duplicate Library \"$Candidate\" at line $CheckLib{$Candidate}\n";
+						next; 
+					}
+					
+					push @DebugLibList, $Candidate;
+					$CheckLib{$Candidate}="$CurFile($LineNum)";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Libraries specified for keyword DEBUGLIBRARY\n";
+			next LINE;
+		}
+		if (/^DEFFILE$/o)  {
+			if ($CheckDef) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine DEFFILE\n";
+				next LINE;
+			}
+			$CheckDef=1;
+			unless ($_=shift @$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : No file specified for keyword DEFFILE\n";
+				next LINE;
+			}
+
+			$Def{CheckSource_MMPEntry} = $_;		
+			$Def{CheckSource_LineNumber} = $LineNum;
+			$Def{CheckSource_MMPFile} = $CurFile;
+			
+			$_ = &Path_Norm($_);
+			
+			$Def{Base}=&Path_Split('Base',$_);
+			$Def{Ext}=&Path_Split('Ext',$_);
+			$Def{Path}=&Path_Split('Path',$_);
+			
+			if ($Def{Path}) {
+				$Def{Path}=&Path_MakeEAbs($EPOCPath,$CurFile,$Def{Path});
+			}
+
+			if ($Def{Base} =~ /\{|\}/) {
+				push @MmpDie, "$CurFile($LineNum) : Bad DEFFILE name\n";
+			}
+			next LINE;
+		}
+		if (/^DOCUMENT$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum, $CheckSource_PhysicalCheck, $CurSrcPath);
+					$Candidate = &Path_Norm($Candidate);
+					
+					if ($CheckDoc{"$CurSrcPath$Candidate"}) {
+						push @MmpWarn, "$CurFile($LineNum) : Duplicate Document \"$CurSrcPath$Candidate\" at line ", $CheckDoc{"$CurSrcPath$Candidate"}, "\n";
+						next; 
+					}
+					unless (-e "$CurSrcPath$Candidate") {
+						push @MmpWarn, "$CurFile($LineNum) : DOCUMENT \"$CurSrcPath$Candidate\" not found\n";
+					}
+					
+					push @{$DocHash{$CurSrcPath}}, $Candidate;
+					$CheckDoc{"$CurSrcPath$Candidate"}="$CurFile($LineNum)";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Files specified for keyword DOCUMENT\n";
+			next LINE;
+		}
+		if (/^EPOCALLOWDLLDATA$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$AllowDllData=1;
+			next LINE;
+		}
+		if (/^ALWAYS_BUILD_AS_ARM$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$BuildAsARM=1;
+			next LINE;
+		}
+		if (/^EPOCCALLDLLENTRYPOINTS$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$CallDllEntryPoints=1;
+			next LINE;
+		}
+		if (/^EPOCDATALINKADDRESS$/o) {
+			if (@$Line) { 
+				my $temp=&main::Genutl_AnyToHex(shift @$Line);
+				if (defined $temp) {
+					$DataLinkAddress=$temp;
+					next LINE;
+				}
+				push @MmpDie, "$CurFile($LineNum) : Data link address doesn't fit expected number format\n";
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No data link address specified for keyword $_\n";
+			next LINE;
+		}
+		if (/^EPOCFIXEDPROCESS$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$FixedProcess=1;
+			next LINE;
+		}
+		if (/^EPOCHEAPSIZE$/o) {
+			if (@$Line) {
+				my $tempMin=&main::Genutl_AnyToHex(shift @$Line);
+				if (defined $tempMin) {
+					if (@$Line) {
+						my $tempMax=&main::Genutl_AnyToHex(shift @$Line);
+						if (defined $tempMax) {
+							$HeapSize{Min}=$tempMin;
+							$HeapSize{Max}=$tempMax;
+							next LINE;
+						}
+						push @MmpDie, "$CurFile($LineNum) : maximum heap size doesn't fit expected number format\n";
+						next LINE;
+					}
+					push @MmpDie, "$CurFile($LineNum) : No maximum heap size specified for keyword $_\n";
+					next LINE;
+				}
+				push @MmpDie, "$CurFile($LineNum) : minimum heap size doesn't fit expected number format\n";
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No minimum heap size specified for keyword $_\n";
+			next LINE;
+		}
+		if (/^EPOCPROCESSPRIORITY$/o) {
+			if ($ProcessPriority) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine EPOCPROCESSPRIORITY\n";
+				next LINE;
+			}
+			if ($ProcessPriority=shift @$Line) {
+				if (defined($ProcessPriorityNames{uc $ProcessPriority})) {
+					$ProcessPriority = $ProcessPriorityNames{uc $ProcessPriority}; # canonical form
+					next LINE;
+				}
+				push @MmpDie, "$CurFile($LineNum) : ProcessPriority \"$ProcessPriority\" not supported\n";
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Priority specified for keyword EPOCPROCESSPRIORITY\n";
+			next LINE;
+		}
+		if (/^EPOCSTACKSIZE$/o) {
+			if (@$Line) {
+				my $temp=&main::Genutl_AnyToHex(shift @$Line);
+				if (defined $temp) {
+					$StackSize=$temp;
+					next LINE;
+				}
+				push @MmpDie, "$CurFile($LineNum) : Stack size doesn't fit expected number format\n";
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No stack size specified for keyword STACKSIZE\n";
+			next LINE;
+		}
+		if (/^COMPRESSTARGET$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$CompressTarget=COMPRESS;
+            $CompressTargetMethod=NOCOMPRESSIONMETHOD; # means 'use default'
+			next LINE;
+		}
+		if (/^NOCOMPRESSTARGET$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$CompressTarget=NOCOMPRESS;
+            $CompressTargetMethod=NOCOMPRESSIONMETHOD;
+			next LINE;
+		}
+        if (/^INFLATECOMPRESSTARGET$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+            $CompressTarget=COMPRESS;
+			$CompressTargetMethod=INFLATECOMPRESSIONMETHOD;
+			next LINE;
+		}
+		if (/^BYTEPAIRCOMPRESSTARGET$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+            $CompressTarget=COMPRESS;
+			$CompressTargetMethod=BYTEPAIRCOMPRESSIONMETHOD;
+			next LINE;
+		}
+		if (/^EXPORTUNFROZEN$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$ExportUnfrozen=1;
+			next LINE;
+		}
+		if (/^FIRSTLIB$/o) {
+			if ($FirstLib) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine FIRSTLIB\n";
+				next LINE;
+			}
+			if ($FirstLib=shift @$Line) {
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $FirstLib, $LineNum);
+				$FirstLib = &Path_Norm($FirstLib);
+				next LINE;
+			}
+			
+			push @MmpWarn, "$CurFile($LineNum) : Nothing specified for keyword FIRSTLIB\n";
+			next LINE;
+		}
+		if (/^LANG$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					if ($CheckLang{$Candidate}) {
+						push @MmpWarn, "$CurFile($LineNum) : Duplicate Language \"$Candidate\" at line $CheckLang{$Candidate}\n";
+						next; 
+					}
+					push @LangList, $Candidate;
+					$CheckLang{$Candidate}="$CurFile($LineNum)";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Languages specified for keyword LANG\n";
+			next LINE;
+		}
+		if (/^LIBRARY$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum);
+					$Candidate = &Path_Norm($Candidate);
+					
+					unless ($emulator or &Genutl_ParseVersionedName(\$Candidate)) {
+						push @MmpWarn, "$CurFile($LineNum) : Bad version in LIBRARY\n";
+					}
+					if ($CheckLib{$Candidate}) {
+						push @MmpWarn, "$CurFile($LineNum) : Duplicate Library \"$Candidate\" at line $CheckLib{$Candidate}\n";
+						next; 
+					}
+					
+					push @LibList, $Candidate;
+					push @DebugLibList, $Candidate;	    # appears in both
+					$CheckLib{$Candidate}="$CurFile($LineNum)";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Libraries specified for keyword LIBRARY\n";
+			next LINE;
+		}
+		if (/^LINKAS$/o) {
+			if ($LinkAs) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine LINKAS\n";
+				next LINE;
+			}
+			if ($LinkAs=shift @$Line) {
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No name specified for keyword LINKAS\n";
+			next LINE;
+		}
+		if (/^EXPORTLIBRARY$/o) {
+			if ($NoExportLibrary) {
+				push @MmpDie, "$CurFile($LineNum) : Can't specify both EXPORTLIBRARY and NOEXPORTLIBRARY\n";
+				next LINE;
+			}
+			if ($ExportLibrary) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine EXPORTLIBRARY\n";
+				next LINE;
+			}
+			if ($ExportLibrary=shift @$Line) {
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $ExportLibrary, $LineNum);
+				$ExportLibrary = &Path_Norm($ExportLibrary);
+				$ExportLibrary=&Path_Split('Base',$ExportLibrary);
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No name specified for keyword EXPORTLIBRARY\n";
+			next LINE;
+		}
+		if (/^NOEXPORTLIBRARY$/o) {
+			if ($ExportLibrary) {
+				push @MmpDie, "$CurFile($LineNum) : Can't specify both EXPORTLIBRARY and NOEXPORTLIBRARY\n";
+				next LINE;
+			}
+			$NoExportLibrary = 1;
+			next LINE;
+		}
+		if (/^NEWLIB$/o) {
+			if ($NewLib) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine NEWLIB\n";
+				next LINE;
+			}
+			if ($NewLib = shift @$Line) {
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $NewLib, $LineNum);
+				$NewLib = &Path_Norm($NewLib);
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No library specified for keyword NEWLIB\n";
+			next LINE;
+		}
+		if (/^MACRO$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					if ($CheckMacro{$Candidate}) {
+						push @MmpWarn, "$CurFile($LineNum) : Duplicate Macro \"$Candidate\" at line $CheckMacro{$Candidate}\n";
+						next; 
+					}
+					push @Macros, $Candidate;
+					$CheckMacro{$Candidate}="$CurFile($LineNum)";
+				}
+				next LINE;
+			}
+			next LINE; 
+		}
+		if (/^NOSTRICTDEF$/o) {
+			if ($NoStrictDef) {
+				push @MmpWarn, "$CurFile($LineNum) : NOSTRICTDEF already set\n";
+				next LINE;
+			}
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword NOSTRICTDEF takes no arguments\n";
+			}
+			$NoStrictDef=1;
+			next LINE;
+		}
+		if (/^RAMTARGET$/o) {
+			if ($CheckRamTargets) {
+				push @MmpWarn, "$CurFile($LineNum) : RAM targets already specified at line $CheckRamTargets\n";
+				next LINE;
+			}
+			$CheckRamTargets="$CurFile($LineNum)";
+			unless (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : No targets specified for keyword RAMTARGET\n";
+				next LINE;
+			}
+			if ($$Line[0] eq '+') {
+				my %Data=();
+				push @RamTargets, \%Data;	# include default
+				shift @$Line;
+			}
+			my $Elem;
+			foreach $Elem (@$Line) {
+				my %Data=();
+				$Data{File}=&Path_Split('File',$Elem);
+				$Data{Path}=&Path_Split('Path',$Elem);
+				push @RamTargets, \%Data;
+			}
+			next LINE;
+		}
+		if (/^RESOURCE$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {			
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum, $CheckSource_PhysicalCheck, $CurSrcPath);
+					$Candidate = &Path_Norm($Candidate);
+					
+					if ($CheckResrc{$Candidate}) {
+						push @MmpDie, "$CurFile($LineNum) : Duplicate Resource $Candidate at line $CheckResrc{$Candidate}\n";
+						next;
+					}
+					
+					$CheckResrc{$Candidate}="$CurFile($LineNum)";
+					my $source="$CurSrcPath$Candidate";
+					unless (-e $source) {
+						push @MmpWarn, "$CurFile($LineNum) : RESOURCE source \"$source\" not found\n";
+					}
+					
+					$CurResource{BaseTrg}=&Path_Split('Base',$Candidate);
+					$CurResource{Source}=$source;
+					$CurResource{Hdr}="$CurFile($LineNum)";
+					# $CurResource{TrgPath} will be filled in at the end;
+					my %Resource=%CurResource;
+					undef %CurResource;
+					push @ResourceStruct, \%Resource;
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Resources specified for keyword RESOURCE\n";
+			next LINE; 
+		}
+		if (/^ROMTARGET$/o) {
+			if ($CheckRomTargets) {
+				push @MmpWarn, "$CurFile($LineNum) : ROM targets already specified at line $CheckRomTargets\n";
+				next LINE;
+			}
+			$CheckRomTargets="$CurFile($LineNum)";
+			unless (@$Line) {
+				@RomTargets=();
+				next LINE;
+			}
+			if ($$Line[0] eq '+') {
+				shift @$Line;
+			}
+			else {
+				@RomTargets=(); # remove default
+			}
+			my $Elem;
+			foreach $Elem (@$Line) {
+				my %Data=();
+				$Data{File}=&Path_Split('File',$Elem);
+				$Data{Path}=&Path_Split('Path',$Elem);
+				push @RomTargets, \%Data;
+			}
+			next LINE;
+		}
+		if (/^SMPSAFE$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$SmpSafe = 1;
+			next LINE;
+		}
+		if (/^SOURCE$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum, $CheckSource_PhysicalCheck, $CurSrcPath);
+					$Candidate = &Path_Norm($Candidate);
+					
+					$Candidate =~ s/^\\//;	# remove leading \, if any	
+					$CurSource{BaseTrg}=&Path_Split('Base',$Candidate);
+					my $path=&Path_Split('Path',$Candidate);
+					if($path){
+					  $CurSource{SrcPath}=&Path_MakeAbs($CurSrcPath,&Path_Split('Path',$Candidate));
+					}
+					else {
+					  $CurSource{SrcPath}=$CurSrcPath;
+					}
+					$CurSource{CurFile}=&Path_Split('File',$Candidate);
+
+					my %Source=%CurSource;
+					undef %CurSource;
+					push @SourceStruct, \%Source;
+					
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Sources specified for keyword SOURCE\n";
+			next LINE; 
+		}
+		if (/^SOURCEPATH$/o) {
+			if ($CurSrcPath=shift @$Line) {
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $CurSrcPath, $LineNum, $CheckSource_PhysicalCheck);				
+				$CurSrcPath = &Path_Norm($CurSrcPath);
+				
+				$CurSrcPath=~s-^(.*[^\\])$-$1\\-o;	# in case no terminating backslash
+				$CurSrcPath=&Path_MakeEAbs($EPOCPath,$CurFile,$CurSrcPath);
+				if (-d &Path_Chop($CurSrcPath)) {
+					next LINE;
+				}
+				push @MmpWarn, "$CurFile($LineNum) : SOURCEPATH \"$CurSrcPath\" not found\n";
+				next LINE;
+			}
+			push @MmpDie, "$CurFile($LineNum) : No Source Path specified for keyword SOURCEPATH\n";
+			next LINE;
+		}
+		if (/^STATICLIBRARY$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum);
+					$Candidate = &Path_Norm($Candidate);
+					
+					if ($CheckStatLib{$Candidate}) {
+						push @MmpWarn, "$CurFile($LineNum) : Duplicate Library \"$Candidate\" at line $CheckStatLib{$Candidate}\n";
+						next;
+					}
+					
+					push @StatLibList, $Candidate;
+					$CheckStatLib{$Candidate}="$CurFile($LineNum)";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Libraries specified for keyword STATICLIBRARY\n";
+			next LINE;
+		}
+		if (/^STDCPP$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$StdCpp=1;
+			next LINE;
+		}
+  		if (/^NOSTDCPP$/o) {
+  			if (@$Line) {
+  				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+  			}
+  			$NoStdCpp=1;
+  			next LINE;
+  		}
+		if (/^STRICTDEPEND$/o) {
+			if ($MmpFlag{StrictDepend}) {
+				push @MmpWarn, "$CurFile($LineNum) : STRICTDEPEND already set\n";
+				next LINE;
+			}
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword STRICTDEPEND takes no arguments\n";
+			}
+			$MmpFlag{StrictDepend}=1;
+			next LINE;
+		}
+		if (/^SYSTEMINCLUDE$/o){
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum, $CheckSource_PhysicalCheck);
+					$Candidate = &Path_Norm($Candidate);
+					
+					$Candidate=~s-^(.*[^\\])$-$1\\-o;   # ensure path ends with a backslash
+					$Candidate=&Path_MakeEAbs($EPOCPath,$CurFile,$Candidate);
+					if ($CheckSysInc{$Candidate}) {
+						next; 
+					}
+					push @SysIncPaths,$Candidate;
+					$CheckSysInc{$Candidate}="$CurFile($LineNum)";
+					if (-d &Path_Chop($Candidate)) {
+						next;
+					}
+					push @MmpWarn, "$CurFile($LineNum) : SYSTEMINCLUDE path \"$Candidate\" not found\n";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Paths specified for keyword SYSTEMINCLUDE\n";
+			next LINE;
+		}
+		if (/^SYSTEMRESOURCE$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum, $CheckSource_PhysicalCheck, $CurSrcPath);
+					$Candidate = &Path_Norm($Candidate);
+					
+					if ($CheckSysResrc{$Candidate}) {
+						push @MmpDie, "$CurFile($LineNum) : Duplicate Resource \"$Candidate\" at line $CheckSysResrc{$Candidate}\n";
+						next; 
+					}
+					$CheckSysResrc{$Candidate}="$CurFile($LineNum)";
+					my $source="$CurSrcPath$Candidate";
+					unless (-e $source) {
+						push @MmpWarn, "$CurFile($LineNum) : SYSTEMRESOURCE source \"$source\" not found\n";
+					}
+					$CurResource{BaseTrg}=&Path_Split('Base',$Candidate);
+					$CurResource{Source}=$source;
+					$CurResource{Hdr}="$CurFile($LineNum)";
+					$CurResource{TrgPath}="z\\system\\data\\";	# needs to match e32env.pm
+					my %Resource=%CurResource;
+					undef %CurResource;
+					push @ResourceStruct, \%Resource;
+				}
+				if (&main::EPOCSecurePlatform()) {    
+					push @MmpMigrationNote, "Obsolete SYSTEMRESOURCE keyword specified in \"$MMPFILE\"";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Resources specified for keyword SYSTEMRESOURCE\n";
+			next LINE; 
+		}
+		if (/^TARGET$/o) {
+			if ($Trg) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine TARGET\n";
+				next LINE;
+			}
+			if ($Trg=shift @$Line) {
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Trg, $LineNum);
+				$Trg = &Path_Norm($Trg);
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Target specified for keyword TARGET\n";
+			next LINE;
+		}
+		if (/^TARGETPATH$/o) {
+			if ($TrgPath) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine TARGETPATH\n";
+				next LINE;
+			}
+			unless ($TrgPath=shift @$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : No Path specified for keyword TARGETPATH\n";
+				next LINE;
+			}
+
+			CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $TrgPath, $LineNum);
+			$TrgPath = &Path_Norm($TrgPath);
+			
+			$TrgPath=~s-^\\(.*)$-$1-o;
+			$TrgPath=~s-^(.*[^\\])$-$1\\-o;
+			$TrgPath="z\\$TrgPath";
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Too many arguments for keyword TARGETPATH\n";
+			}
+			next LINE;
+		}
+		if (/^TARGETTYPE$/o) {
+			if ($TrgType) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine TARGETTYPE\n";
+				next LINE;
+			}
+			unless ($TrgType=shift @$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : No Type specified for keyword TARGETTYPE\n";
+				next LINE;
+			}
+			eval { &Trg_GetL($TrgType, \%TrgType); };
+			if ($@) {
+				push @MmpDie, "$CurFile($LineNum) : $@";
+			}
+			next LINE;
+		}
+		if (/^UID$/o) {
+			if (@$Line) {
+				foreach (@$Line) {
+					if ($#UidList>=1) {
+						push @MmpWarn, "$CurFile($LineNum) : Can't specify more than 2 Uids\n";
+						next LINE;
+					}
+					$_=&Genutl_AnyToHex($_);
+					if (defined $_) {
+						push @UidList, $_;
+						next;
+					}
+					push @MmpDie, "$CurFile($LineNum) : Uid doesn't fit expected number format\n";
+					next LINE;
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Uids specified for keyword UID\n";
+			next LINE;
+		}
+		if (/^SECUREID$/o) {
+			if ($SecureId) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine SECUREID\n";
+				next LINE;
+			}
+			if (@$Line) {
+				$SecureId = &Genutl_AnyToHex(shift @$Line);
+				if (!defined $SecureId) {
+					push @MmpDie, "$CurFile($LineNum) : SECUREID doesn't fit expected number format\n";
+					next LINE;
+				}
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Too many arguments for keyword SECUREID\n";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : Missing argument for keyword SECUREID\n";
+			next LINE;
+		}
+		if (/^VENDORID$/o) {
+			if (defined($VendorId)) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine VENDORID\n";
+				next LINE;
+			}
+			if (@$Line) {
+				$VendorId = &Genutl_AnyToHex(shift @$Line);
+				if (!defined $VendorId) {
+					push @MmpDie, "$CurFile($LineNum) : VENDORID doesn't fit expected number format\n";
+					next LINE;
+				}
+				if (@$Line) {
+					push @MmpWarn, "$CurFile($LineNum) : Too many arguments for keyword VENDORID\n";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : Missing argument for keyword VENDORID\n";
+			next LINE;
+		}
+		if (/^USERINCLUDE$/o) {
+			if (@$Line) {
+				my $Candidate;
+				foreach $Candidate (@$Line) {
+					CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, $mainElement, $Candidate, $LineNum, $CheckSource_PhysicalCheck);
+					$Candidate = &Path_Norm($Candidate);
+					
+					$Candidate=~s-^(.*[^\\])$-$1\\-o;   # ensure path ends with a backslash
+					$Candidate=&Path_MakeEAbs($EPOCPath,$CurFile,$Candidate);
+					if ($CheckUserInc{$Candidate}) {
+						next; 
+					}
+					push @UserIncPaths,$Candidate;
+					$CheckUserInc{$Candidate}="$CurFile($LineNum)";
+					if (-d &Path_Chop($Candidate)) {
+						next;
+					}
+					push @MmpWarn, "$CurFile($LineNum) : USERINCLUDE path \"$Candidate\" not found\n";
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : No Paths specified for keyword USERINCLUDE\n";
+			next LINE;
+		}
+		if (/^SRCDBG$/o) {
+			if (@$Line) {
+				push @MmpWarn, "$CurFile($LineNum) : Keyword $_ takes no arguments\n";
+			}
+			$SrcDbg=1;
+			next LINE;
+		}
+		if (/^VERSION$/o) {
+			if (%Version) {
+				push @MmpDie, "$CurFile($LineNum) : Attempt to redefine VERSION\n";
+				next LINE;
+			}
+			unless (@$Line) {
+				push @MmpDie, "$CurFile($LineNum) : Missing argument to VERSION\n";
+				next LINE;
+			}
+			%Version = &Genutl_StringToVersion(shift @$Line);
+			if (!%Version) {
+				push @MmpDie, "$CurFile($LineNum) : Bad VERSION number\n";
+				next LINE;
+			}
+			if (@$Line) {
+				if ((lc $$Line[0]) eq 'explicit') {
+					$Version{explicit} = 1;
+					shift @$Line;
+				}
+				if (scalar(@$Line)) {
+					push @MmpDie, "$CurFile($LineNum) : Garbage after VERSION number\n";
+				}
+			}
+			next LINE;
+		}
+		
+		if (/^OPTION$/oi ) {
+			if (@$Line >= 2) {
+				my $compilerkey= uc shift @$Line;
+				if (!defined($Compiler{$compilerkey})) {
+					# first use of "OPTION xxx"
+					$Compiler{$compilerkey}=shift @$Line;
+				}
+				# concatenate extra stuff
+				while (@$Line) {
+					$Compiler{$compilerkey}.=" ".shift @$Line;
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : Keyword OPTION requires at least two arguments\n";
+			next LINE;
+			}
+		if (/^LINKEROPTION$/oi ) {
+			if (@$Line >= 2) {
+			        # first parameter is the compiler
+				my $compilerkey= uc shift @$Line;
+				if (!defined($Compiler{$compilerkey})) {
+					# first use of "LINKEROPTION xxx"
+					$LinkerOptions{$compilerkey}=shift @$Line;
+				}
+				# concatenate extra stuff
+				while (@$Line) {
+					$LinkerOptions{$compilerkey}.=" ".shift @$Line;
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : Keyword LINKEROPTION requires at least two arguments\n";
+			next LINE;
+			}
+		if (/^OPTION_Replace$/oi ) {
+			if (@$Line >= 2) {
+				my $compilerkey= uc shift @$Line;
+				my $repOptions= shift @$Line;
+				while (@$Line) 
+				{
+					$repOptions.= " ".shift @$Line;
+				}
+				$repOptions =~ s/=\s*/=/g;
+				push @{$Replace{$compilerkey}},$repOptions;
+				
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : Keyword OPTION_Replace requires at least two arguments\n";
+			next LINE;
+			}
+		if (/^ARMFPU$/oi) {
+			if ($ARMFPU) {
+				push @MmpWarn, "$CurFile($LineNum) : Attempt to redefine ARMFPU\n";
+				next LINE;
+			}
+			if ($ARMFPU=shift @$Line) {
+				if (($ARMFPU !~ /^SOFTVFP$/oi) && ($ARMFPU !~ /^VFPV2$/oi)) {
+					push @MmpWarn, "$CurFile($LineNum) : ARMFPU can only specify SOFTVFP or VFPV2 as an argument\n";
+					undef $ARMFPU;
+				}
+				next LINE;
+			}
+			push @MmpWarn, "$CurFile($LineNum) : ARMFPU must specify either SOFTVFP or VFPV2 as an argument\n";
+			next LINE;
+		}
+		if( /^PAGED$/o) {
+			#revert "PAGED" keyword from code and data paged to code paged only
+			#if ($CodePagingTargetMode == PAGED or $DataPagingTargetMode == PAGED) {
+			if ($CodePagingTargetMode == PAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : duplicate paging setting\n";
+			}
+			#revert "PAGED" keyword from code and data paged to code paged only
+			#if ($CodePagingTargetMode == UNPAGED or $DataPagingTargetMode == UNPAGED) {
+			if ($CodePagingTargetMode == UNPAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : conflict paging setting\n";
+			}
+			$CodePagingTargetMode = PAGED;
+			#revert "PAGED" keyword from code and data paged to code paged only
+			#$DataPagingTargetMode = PAGED;
+			next LINE;
+			}
+		if( /^UNPAGED$/o) {
+			if ($CodePagingTargetMode == UNPAGED or $DataPagingTargetMode == UNPAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : duplicate paging setting\n";
+			}
+			if ($CodePagingTargetMode == PAGED or $DataPagingTargetMode == PAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : conflict paging setting\n";
+			}
+			$CodePagingTargetMode = UNPAGED;
+			$DataPagingTargetMode = UNPAGED;
+			next LINE;
+			}
+		if( /^PAGEDCODE$/o) {
+			if ($CodePagingTargetMode == PAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : duplicate paging setting\n";
+			}
+			if ($CodePagingTargetMode == UNPAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : conflict paging setting\n";
+			}
+			$CodePagingTargetMode = PAGED;
+			next LINE;
+			}
+		if( /^UNPAGEDCODE$/o) {
+			if ($CodePagingTargetMode == UNPAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : duplicate paging setting\n";
+			}
+			if ($CodePagingTargetMode == PAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : conflict paging setting\n";
+			}
+			$CodePagingTargetMode = UNPAGED;
+			next LINE;
+			}
+		if( /^PAGEDDATA$/o) {
+			if ($DataPagingTargetMode == PAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : duplicate paging setting\n";
+			}
+			if ($DataPagingTargetMode == UNPAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : conflict paging setting\n";
+			}
+			$DataPagingTargetMode = PAGED;
+			next LINE;
+			}
+		if( /^UNPAGEDDATA$/o) {
+			if ($DataPagingTargetMode == UNPAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : duplicate paging setting\n";
+			}
+			if ($DataPagingTargetMode == PAGED) {
+				push @MmpWarn, "$CurFile($LineNum) : conflict paging setting\n";
+			}
+			$DataPagingTargetMode = UNPAGED;
+			next LINE;
+			}
+		if( /^DEBUGGABLE_UDEBONLY$/o) {
+			$IsDebuggable = DEBUGGABLE_UDEBONLY;
+			next LINE;
+			}
+		if( /^DEBUGGABLE$/o) {
+			if ($IsDebuggable != DEBUGGABLE_UDEBONLY)
+			{
+				$IsDebuggable = DEBUGGABLE;
+			}
+			next LINE;
+			}
+		if( /^FEATUREVARIANT$/o) {
+			push @MmpDie, "$CurFile($LineNum) : FEATUREVARIANT specified multiple times" if ($FeatureVariant);
+			$FeatureVariant = 1;
+			next LINE;
+			}
+
+		push @MmpWarn, "$CurFile($LineNum) : Unrecognised Keyword \"$_\"\n";
+	}
+
+	undef $Line;
+	undef $MmpMacro;
+
+
+	# test the mmp contents
+	#----------------------
+	if ($PlatTxtSwitch || $OtherPlatSwitch)	{
+		push @MmpDie, $PlatTxtSwitch ? $PlatTxtSwitch : $OtherPlatSwitch, ": Unterminated START ... END block\n";
+	}
+	undef $PlatTxtSwitch;
+	undef $OtherPlatSwitch;
+
+	# Check the consistency of the mmp file contents
+	unless ($Trg) {
+		unless($TrgType=~/^NONE$/io){
+			push @MmpDie, "ERROR: No Target specified\n";
+		}
+	}
+	unless ($TrgType) {
+		push @MmpDie, "ERROR: No TargetType specified\n";
+	}
+  	if( $StdCpp && $NoStdCpp ) {
+  		push @MmpWarn, "WARNING: Keyword statement STDCPP not permitted with keyword NOSTDCPP.\n";
+  		push @MmpWarn, "WARNING: Keyword statements STDCPP and NOSTDCPP ignored.\n";
+  		$StdCpp = 0;
+  		$NoStdCpp = 0;
+  	}
+
+	if (($TrgType =~ /^LIB$/io) && (scalar(@DebugLibList) || scalar(@LibList) || scalar(@StatLibList))) {
+		push @MmpWarn, "WARNING: Library statements (DEBUGLIBRARY, LIBRARY or STATICLIBRARY) not permitted with TARGETTYPE LIB.";
+		push @MmpWarn, "WARNING: Library statements (DEBUGLIBRARY, LIBRARY or STATICLIBRARY) ignored.\n";
+		undef @DebugLibList;
+		undef @LibList;
+		undef @StatLibList;
+	}
+
+	if ($TrgType =~ /^LIB$/io && $NewLib) {
+		push @MmpWarn, "WARNING: Library statement NEWLIB not permitted with TARGETTYPE LIB.";
+		push @MmpWarn, "WARNING: Library statement NEWLIB ignored.\n";
+		undef @DebugLibList;
+		undef @LibList;
+		undef @StatLibList;
+	}
+
+	if ($TrgType =~ /^STD(EXE|DLL)$/io && $NewLib) {
+		push @MmpWarn, "WARNING: Library statement NEWLIB not permitted with TARGETTYPE STD*.";
+		push @MmpWarn, "WARNING: Library statement NEWLIB ignored.\n";
+		undef @DebugLibList;
+		undef @LibList;
+		undef @StatLibList;
+	}
+
+	if (($TrgType=~/^IMPLIB$/io) || ($TrgType=~/^NONE$/io)) {
+		push @MmpDie, "ERROR: SOURCE not permitted with TARGETTYPE $TrgType\n" if (@SourceStruct);
+	} elsif (!@SourceStruct) {
+		push @MmpDie, "ERROR: No Sources specified\n";
+	}
+	if ($TrgType{NeedUID3} && $#UidList<1) {
+		push @MmpWarn, "WARNING: No Uid3 specified in \"$MMPFILE\" for TargetType \"$TrgType\"\n";
+	}
+	if ($Trg && $Trg=~/\{|\}/) {
+		push @MmpDie, "ERROR: Bad TARGET name specified\n";
+	}
+	if ($ExportLibrary and $ExportLibrary=~/\{|\}/) {
+		push @MmpDie, "ERROR: Bad EXPORTLIBRARY name specified\n";
+	}
+	if ($LinkAs and $LinkAs=~/\{|\}/) {
+		push @MmpDie, "ERROR: Bad LINKAS name specified\n";
+	}
+	# Make sure a valid compression method has been chosen if target is going to be paged
+	if ($CodePagingTargetMode == PAGED && $CompressTarget == COMPRESS) {
+		if ($CompressTargetMethod == INFLATECOMPRESSIONMETHOD) {
+			push @MmpWarn, "Incompatible keywords! The INFLATECOMPRESSTARGET is not allowed with PAGED!\n";
+			push @MmpWarn, "Changing compression method to BYTEPAIRCOMPRESSTARGET\n";
+		}
+		$CompressTargetMethod = BYTEPAIRCOMPRESSIONMETHOD;
+	}
+
+  # Ensure 2nd UID is not deprecated
+  if (&main::EPOCSecurePlatform() && $TrgType{Basic} eq "DLL")
+    {
+    $deprecatedUIDs{"0x100039ce"} = "Unmigrated dll style application detected from use of UID 0x100039ce";
+    }
+  
+  # Do not need UIDs for a resource only (i.e. TARGETTYPE is "none") mmp file
+  if  ((!$TrgType=~/^NONE$/io) && &main::EPOCSecurePlatform() && defined($deprecatedUIDs{$UidList[0]}))
+    {
+    push @MmpMigrationNote, "$deprecatedUIDs{$UidList[0]}\n";
+    }
+
+#	PUT IN SOME DEFAULTS
+
+	if ($TrgPath eq '') {
+		# set up default path from $TrgType 
+		$TrgPath = $TrgType{Path};
+	}
+	my $ResourceTrgPath = $TrgType{ResourcePath};
+	if ($ResourceTrgPath eq '') {
+		$ResourceTrgPath = $TrgPath;	# default to TrgPath, as before
+	}
+	unless (%Version) {
+	    if ($$Plat_ref{DefFile} =~ /^\s*EABI\s*/i ) {
+			$Version{major} = 10;	# Start major versions at 10 for EABI to allow coexistence with GCC98r2 ABI
+		} else {
+			$Version{major} = 1;
+		}
+		$Version{minor} = 0;
+	}
+
+	# check for languages
+	@LangList=('SC') unless @LangList;
+
+  if (&main::EPOCSecurePlatform() && !defined($Capability) &&
+    (($TrgType{Basic} eq "DLL") || (uc($TrgType) eq "EXEXP")))
+    {
+    push @MmpMigrationNote, "No Capabilities set in \"$MMPFILE\" for TargetType: $TrgType\n";
+    }
+
+	# Supply default capability mask if not set explicitly, and convert to hex string
+	$Capability = "none" unless (defined($Capability));
+	$CapabilityFlags[0] = 0 unless (defined($CapabilityFlags[0]));
+        $CapabilityFlags[1] = 0 unless (defined($CapabilityFlags[1]));
+
+        $CapabilityFlags[0] = sprintf("0x%08x", $CapabilityFlags[0]);
+        $CapabilityFlags[1] = sprintf("0x%08x", $CapabilityFlags[1]);
+
+#	ensure all bitmaps have targetpaths and check for duplicate bitmaps
+	my %BitMapCheck;
+	my $BitMapRef;
+	foreach $BitMapRef (@BitMapStruct) {
+		unless ($$BitMapRef{TrgPath}) {
+			$$BitMapRef{TrgPath}=$ResourceTrgPath;
+		}
+		if ($BitMapCheck{"$$BitMapRef{TrgPath}$$BitMapRef{Trg}"}) {
+			push @MmpDie, "ERROR: Duplicate bitmap target \"$$BitMapRef{TrgPath}$$BitMapRef{Trg}\"\n";
+			next;
+		}
+		$BitMapCheck{"$$BitMapRef{TrgPath}$$BitMapRef{Trg}"}=1;
+	}
+
+#	ensure all resources have targetpaths, expand language list and check for duplicates
+	my %ResourceCheck;
+	my $ResourceRef;
+	my @PerLanguageResourceStruct;
+	foreach $ResourceRef (@ResourceStruct) {
+					
+		unless ($$ResourceRef{BaseTrg}) {
+			$$ResourceRef{BaseTrg}=&Path_Split('Base',$$ResourceRef{Source});
+		}
+		unless ($$ResourceRef{TrgPath}) {
+			$$ResourceRef{TrgPath}=$ResourceTrgPath;
+		}
+		unless ($$ResourceRef{Lang}) {
+			@{$$ResourceRef{Lang}}=@LangList;
+		}
+		# generate one instance per language.
+		my @list = @{$$ResourceRef{Lang}};
+		my $base = "$$ResourceRef{TrgPath}$$ResourceRef{BaseTrg}";
+		foreach my $lang (@list) {
+			my %newResourceRef = %{$ResourceRef};
+			$newResourceRef{Lang} = $lang;
+			$newResourceRef{Trg} = $base.lc("\.R$lang");
+			push @PerLanguageResourceStruct, \%newResourceRef;
+		}
+	}
+	@ResourceStruct = @PerLanguageResourceStruct;
+	undef @PerLanguageResourceStruct;
+	
+	foreach $ResourceRef (@ResourceStruct) {
+		if ($ResourceCheck{"$$ResourceRef{TrgPath}$$ResourceRef{Trg}"}) {
+			push @MmpDie, "ERROR: Duplicate Resource target \"$$ResourceRef{TrgPath}$$ResourceRef{Trg}\"\n";
+			next;
+		}
+		$ResourceCheck{"$$ResourceRef{TrgPath}$$ResourceRef{Trg}"}=1;
+	}
+
+	my $Plat=&main::Plat;
+
+	if (@MmpDie || @MmpWarn || @MmpDiagnostic || @MmpMigrationNote) {
+		warn "\nMMPFILE \"$MMPFILE\"\n";
+		if (@MmpDiagnostic) {
+			warn
+				"DIAGNOSTIC MESSAGE(S)\n",
+				@MmpDiagnostic,
+				"\n"
+			;
+			}
+
+		foreach my $printedWarning (@MmpWarn)
+			{
+			print "WARNING: $printedWarning\n";
+			}
+		foreach my $printedError (@MmpDie)
+			{
+			print "FATAL ERROR: $printedError\n";
+			}
+
+		foreach my $printedMigrationNote (@MmpMigrationNote)
+			{
+			print "MIGRATION_NOTE: $printedMigrationNote\n";
+			}		
+
+		if (@MmpDie)
+			{
+			die;
+			}
+	}
+
+
+#	COMPLETE THE UID LIST
+
+	while ($#UidList<1) {
+		push @UidList, '0x00000000';
+	}
+
+	# check the second UID, or set it
+	if ($TrgType{UID2}) {
+		if ($UidList[0]=~/^0x00000000$/o) {
+			# put in second uid for known targetypes without them
+			$UidList[0]=$TrgType{UID2};
+		}
+		elsif ($UidList[0] ne $TrgType{UID2}) {
+			# text comparison is OK here because UIDs have both been through AnyToHex function
+			if ($UidList[0] ne '0x01111111') {
+				# issue warning (but not if UID == 0x01111111 (to allow test code to deliberately set incorrect UID)
+				warn(
+					"WARNING: Second Uid is $UidList[0], but\n",
+					" expected value for Target Type $TrgType is $TrgType{UID2}\n"
+				);
+			}
+		}
+	}
+
+#	Put in the first UID in the list
+	if ($TrgType{Basic}=~/^DLL$/o) {
+		unshift @UidList, '0x10000079';
+	}
+	elsif ($TrgType{Basic}=~/^(EXE)$/o) {
+		unshift @UidList, '0x1000007a';
+	}
+	elsif ($TrgType{Basic}=~/^(EXEDLL)$/o) {
+# EXE on EPOC32, DLL on Emulator
+# NOTE: On EKA1 EXEDLL used EXE UID1 on emulator
+# On EKA2 this is unacceptable
+		if (!$emulator) {
+			unshift @UidList, '0x1000007a';
+		} else {
+			unshift @UidList, '0x10000079';
+		}
+	}
+	else {
+		unshift @UidList, '0x00000000';
+	}
+
+# If no SID specified use UID3
+	$SecureId = $UidList[2] unless(defined $SecureId);
+
+#	SORT OUT TARGET TYPE DATA STRUCTURE
+
+	# set the target path
+	if ($TrgPath) {
+		$TrgType{Path}=$TrgPath;
+	}
+
+#	put in the $Linkas default
+	if (!$LinkAs and $TrgType=~/^IMPLIB$/io) {
+		$LinkAs = $Trg;
+		$LinkAs =~ s/\.lib$/\.dll/i;
+	} else {
+		$LinkAs = $Trg unless $LinkAs;
+	}
+	$LinkAsBase = $LinkAs;
+	unless ($emulator) {
+		$LinkAs = &DecorateWithVersion($LinkAs, %Version);
+	}
+
+# If explicit version add to target
+	if ($Version{explicit} && !$emulator) {
+		$Trg = &DecorateWithVersion($Trg, %Version);
+	}
+
+
+#	Reconcile any EXEDLL targettypes - must be done after first UIDs put in the list
+#	and after the $LinkAs keyword has been defined/defaulted
+	if ($TrgType{Basic} eq 'EXEDLL') {
+		$TrgType{Basic} = $emulator ? 'DLL' : 'EXE';
+		$Trg=&Path_Split('Base',$Trg).'.EXE';
+		$LinkAsBase=&Path_Split('Base',$LinkAsBase).'.EXE';
+		$LinkAs=&Path_Split('Base',$LinkAs).'.EXE';
+	}
+
+#	put in the $ExportLibrary default
+	$ExportLibrary=&Path_Split('Base',$Trg) unless $ExportLibrary;
+	unless ($emulator) {
+		$ExportLibrary = &DecorateWithVersion($ExportLibrary, %Version);
+	}
+
+#	Get the EPOC entrypoint static library
+	unless ($FirstLib) {
+		unless ($TrgType{FirstLib}) {
+			$FirstLib="E$TrgType{Basic}.LIB";
+		}
+		else {
+			$FirstLib=$TrgType{FirstLib};
+		}
+	}
+
+
+#	 WORK OUT THE ASSP IMPLICATIONS
+
+#	Nullify ASSP-specific API things for WINS/WINC since the API should always be
+#	the same for WINC as for WINS,
+	if ($emulator) {
+		$ASSPABISwitch=0;
+		$ASSPExports=0;
+		unshift @LibList, @ASSPLibList;
+		unshift @DebugLibList, @ASSPLibList;	# keep DebugLibList in sync with LibList
+		@ASSPLibList=();
+	}
+	else {
+#		Force ASSPABISwitch for known kernel components or if ASSPEXPORTS or ASSPLIBRARY specified in .MMP file
+		if ($TrgType{Kernel} or $ASSPExports or @ASSPLibList) {
+			$ASSPABISwitch=1;
+		}
+	}
+
+#	Switch the ABI if necessary
+	unless ($ASSPABISwitch) {
+#		apply the standard ABI
+		$ABI=$$Plat_ref{ABI};
+	}
+	else {
+#		kernel-specific stuff
+#		check that the platform is not generic
+		if ($$Plat_ref{Generic}) {
+			die "ERROR: Can't apply ASSPABI, ASSPEXPORTS or ASSPLIBRARY for generic platform \"$$Plat_ref{Name}\n";
+		}
+
+#		apply the ASSP-specific ABI
+		$ABI=$$Plat_ref{ASSPABI};
+	}
+
+#	COMPLETE THE .DEF FILE STRUCTURE
+
+	# apply the default .DEF filename, and
+	# check as far as possible that the project is frozen
+	if (($TrgType{NeedDeffile} or $CheckDef)) {
+		unless ($Def{Path} and $Def{Path} !~ /\\\~\\$/) {
+			my $augment;
+			if ($ASSPExports) {
+			    if ($$Plat_ref{DefFile} =~ /^\s*EABI\s*/i ) {
+					$augment = $$Plat_ref{ASSP};
+			    } else {
+					$augment = "B$$Plat_ref{ASSP}";
+			    }
+			} else {
+			    if ($$Plat_ref{DefFile} =~ /^\s*EABI\s*/i ) {
+					$augment = lc($$Plat_ref{DefFile});
+			    } else {
+					$augment = lc("B$$Plat_ref{DefFile}");
+			    }
+			}
+			if ($Def{Path} =~ /\\\~\\$/) {
+				$Def{Path} =~ s/\\\~\\$/\\$augment\\/;
+			} else {
+				$Def{Path}=&Path_Strip(&Path_Split('Path',$MMPFILE)."..\\$augment\\");
+			}
+		}
+		unless ($Def{Base}) {
+			$Def{Base} = &Path_Split('Base',$LinkAsBase);
+		}
+		unless ($Def{Ext}) {
+			$Def{Ext}='.def';
+		}
+#		now that we've dumped narrow, treat the 'u' basename suffix as part of the frozen
+#		.DEF file basename.  Once we've dumped the suffix we won't have to store the extension
+#		separately either
+		if (!$emulator && $Version{explicit}) {
+			$Def{Base} .= &Genutl_VersionToFileAugment(%Version);
+		} elsif (!$NoStrictDef) {
+			$Def{Base}.='u';
+		}
+
+		if ($Def{CheckSource_MMPEntry})
+		{
+			my $type = "DEFFILE";
+			$type .= " (NOSTRICTDEF)" if ($NoStrictDef);
+			
+			# for GCCXML and X86GCC, ignore check source errors for missing .def file
+			my $checkdef = (($IgnoreMissingDef) && ($Def{Path} =~ /[\\\/]bmarm[\\\/]/ || $$Plat_ref{Name} eq "X86GCC" || $$Plat_ref{Name} eq "X86GMP")) ? 0 : 1;
+			
+			if( $checkdef ) {
+			  CheckSource_MetaData(%CheckSourceMMPMetaData, $Def{CheckSource_MMPFile}, $type, $Def{CheckSource_MMPEntry}, $Def{CheckSource_LineNumber}, $CheckSource_PhysicalCheck, $Def{Path});
+			}
+		}
+			
+#		check deffile exists,
+        unless (-e "$Def{Path}$Def{Base}$Def{Ext}") {
+            if($IgnoreMissingDef == 0) {
+                warn "WARNING: Frozen .def file $Def{Path}$Def{Base}$Def{Ext} not found - project not frozen\n";
+            }
+     	}
+	}
+}
+
+sub Mmp_ABI () {
+	$ABI;
+}
+sub Mmp_AifStruct () {
+	\@AifStruct;
+}
+sub Mmp_AllowDllData () {
+	$AllowDllData;
+}
+sub Mmp_CompressTarget () {
+	$CompressTarget;
+}
+sub Mmp_CompressTargetMode () {
+	$CompressTargetMethod;
+}
+sub Mmp_ASSPExports () {
+	$ASSPExports;
+}
+sub Mmp_ASSPLibList () {
+	@ASSPLibList;
+}
+sub Mmp_BitMapStruct () {
+	\@BitMapStruct;
+}
+sub Mmp_BuildAsARM () {
+	$BuildAsARM;
+}
+sub Mmp_CallDllEntryPoints () {
+	$CallDllEntryPoints;
+}
+sub Mmp_Capability () {
+	$Capability;
+}
+sub Mmp_CapabilityFlags () {
+	@CapabilityFlags;
+}
+sub Mmp_DataLinkAddress () {
+	$DataLinkAddress;
+}
+sub Mmp_DebugLibList () {
+	\@DebugLibList;
+}
+sub Mmp_Def () {
+	\%Def;
+}
+sub Mmp_DocHash () {
+	\%DocHash;
+}
+sub Mmp_ExportUnfrozen () {
+	$ExportUnfrozen;
+}
+sub Mmp_FirstLib () {
+	$FirstLib;
+}
+sub Mmp_FixedProcess () {
+	$FixedProcess;
+}
+sub Mmp_HeapSize () {
+	\%HeapSize;
+}
+sub Mmp_LibList () {
+	\@LibList;
+}
+sub Mmp_LinkAs () {
+	$LinkAs;
+}
+sub Mmp_LinkAsBase () {
+	$LinkAsBase;
+}
+sub Mmp_ExportLibrary () {
+	$ExportLibrary;
+}
+sub Mmp_NoExportLibrary () {
+	$NoExportLibrary;
+}
+sub Mmp_NewLib () {
+	$NewLib;
+}
+sub Mmp_Macros () {
+	@Macros;
+}
+sub Mmp_MmpFlag () {
+	\%MmpFlag;
+}
+sub	Mmp_PlatTxt2D () {
+	@PlatTxt2D;
+}
+sub Mmp_ProcessPriority () {
+	$ProcessPriority;
+}
+sub Mmp_RamTargets () {
+	@RamTargets;
+}
+sub Mmp_ResourceStruct () {
+	\@ResourceStruct;
+}
+sub Mmp_RomTargets () {
+	@RomTargets;
+}
+sub Mmp_SourceStruct () {
+	\@SourceStruct;
+}
+sub Mmp_StackSize () {
+	$StackSize;
+}
+sub Mmp_StatLibList () {
+	@StatLibList;
+}
+sub Mmp_StdCpp () {
+	$StdCpp;
+}
+sub Mmp_NoStdCpp () {
+	$NoStdCpp;
+}
+sub Mmp_SysIncPaths () {
+	@SysIncPaths;
+}
+sub Mmp_Trg () {
+	$Trg;
+}
+sub Mmp_TrgType () {
+	\%TrgType;
+}
+sub Mmp_UidList () {
+	@UidList;
+}
+sub Mmp_UserIncPaths () {
+	@UserIncPaths;
+}
+sub Mmp_SrcDbg () {
+	$SrcDbg;
+}
+
+sub Mmp_WarningLevel() {
+     %Compiler; 
+} 
+
+sub Mmp_LinkerOptions() {
+    %LinkerOptions
+}
+
+sub Mmp_Version() {
+	%Version;
+}
+
+sub Mmp_SecureId() {
+	$SecureId;
+}
+
+sub Mmp_VendorId () {
+	$VendorId;
+}
+
+sub DecorateWithVersion($$) {
+	my ($name, %ver) = @_;
+	my $base = &Path_Split('Base', $name);
+	my $ext = &Path_Split('Ext', $name);
+	unless ($base =~ /\{(\d|a|b|c|d|e|f){8}\}$/i) {
+		$base .= &Genutl_VersionToFileAugment(%Version);
+	}
+	return "$base$ext";
+}
+
+sub Mmp_Replace() {
+	%Replace;
+}
+
+sub Mmp_SmpSafe() {
+	$SmpSafe;
+}
+
+sub Mmp_StringTable() {
+	\@StringTableStruct;
+}
+sub Mmp_ARMFPU() {
+	$ARMFPU;
+}
+
+sub Mmp_CheckSourceMMPMetaData() {
+	%CheckSourceMMPMetaData;
+}
+
+sub Mmp_CheckSourceMMPIncludes() {
+	%CheckSourceMMPIncludes;
+}
+
+sub Mmp_CodePagingTargetMode() {
+	$CodePagingTargetMode;
+}
+
+sub Mmp_DataPagingTargetMode() {
+	$DataPagingTargetMode;
+}
+
+sub Mmp_IsWideCharMain() {
+	$WideCharMain;
+}
+
+sub Mmp_IsDebuggable() {
+	$IsDebuggable;
+}
+
+sub Mmp_IsFeatureVariant() {
+	$FeatureVariant;
+}
+
+# Return the macros tested in the MMP file
+sub Mmp_TestedMacros() {
+	return \%mmptestedMacrosHash;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/memtrace/memtrace.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,27 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+perl -S memtrace.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
+if errorlevel==1 goto CheckPerl
+goto End
+
+:CheckPerl
+perl -v >NUL
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
+goto End
+
+:End
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/memtrace/memtrace.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,265 @@
+# Copyright (c) 2000-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:
+# Postprocess EPOC memory usage trace file
+# 
+#
+
+no strict 'vars';
+use English;
+# Standard Symbian boilerplate to find and load E32env library
+use FindBin;		# for FindBin::Bin
+use Getopt::Long;
+
+my $PerlLibPath;    # fully qualified pathname of the directory containing our Perl modules
+
+BEGIN {
+# check user has a version of perl that will cope
+	require 5.005_03;
+# establish the path to the Perl libraries: currently the same directory as this script
+	$PerlLibPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+	$PerlLibPath .= "\\";
+}
+
+use lib $PerlLibPath;
+use Modload;
+Load_SetModulePath($PerlLibPath);
+
+my $tickperiod = 0;
+my $emulproc = quotemeta("epoc[00000000]0001::");
+my $apprun = quotemeta("apprun[10003a4b]");
+my $ramdrive = quotemeta("TheRamDriveChunk");
+
+my @chunknames;	# Array of chunk names, indexed by chunkid
+my @traces;		# Array of chunk traces, each trace being an array
+				# of (tick,chunkid,size) triples
+my @chunkgroup;	# Group that a chunk belongs to, indexed by chunkid
+my @groupnames;	# Array of chunk group names (normally a group==a process)
+my @groups;		# Array of chunk groups, each group being an array of chunkids
+
+my %opts;
+my $result = GetOptions (\%opts, "detailed", "help");
+if($result && ($opts{'help'} || $#ARGV<0))
+	{
+	&help;
+	exit 0;
+	}
+if(!$result || $#ARGV>0)
+	{
+	&usage;
+	exit 1;
+	}
+
+my $file = $ARGV[0];
+open TRACE,$file or die "Error: Can't open trace file \"$file\".\n";
+
+#
+# Parse trace file
+#
+my %current;	# chunkids hashed by DChunk address
+my $nextchunkid;
+while(<TRACE>)
+	{
+	if (/MT:P\s+(\d+)\s*$/)
+		{
+		$tickperiod = $1;
+		}
+	elsif (/MT:C\s+(\d+)\s+([0-9a-fA-F]+)\s+(.+)\s*$/)
+		{
+		$current{$2} = $nextchunkid++;
+		push @chunknames, $3;
+		}
+	elsif (my ($tick, $addr, $size, $name) =
+		   (/MT:A\s+(\d+)\s+([0-9a-fA-F]+)\s+([0-9a-fA-F]+)\s+(.+)\s*$/))
+		{
+		my $chunkid = $current{$addr};
+		die "Error: Parsing failure - is trace file complete ?"
+			unless (defined $chunkid);
+		push @traces, [0+$tick, $chunkid, hex($size)];
+
+		# Check whether chunk has been renamed to something more useful
+		$chunknames[$chunkid] = $name
+			if (($chunknames[$chunkid] =~ /^$emulproc/io) ||
+				($chunknames[$chunkid] =~ /^$apprun/io));
+		}
+	elsif (/MT:D\s+(\d+)\s+([0-9a-fA-F]+)\s+(.+)\s*$/)
+		{
+		die "Error: Parsing failure" unless (defined $current{$2});
+		push @traces, [0+$1, $current{$2}, 0];
+		delete $current{$2};
+		}
+	elsif (/(MT:.\s+.*)/)
+		{
+		printf "Warning: Unrecognised trace line \"$1\".\n";
+		}
+	}
+close TRACE;
+die "Error: File \"$file\" does not contain any memory traces.\n"
+  unless ($#chunknames>0);
+
+
+#
+# Group chunks together by name
+#
+for (0..$#chunknames)
+	{
+	my $chunkid = $_;
+	my $name = $chunknames[$chunkid];
+	$name = $1 if ($name =~ /($ramdrive)$/i);	# Special handling for ramdrive
+	$name = $1 if ($name =~ /^$emulproc(.*)/i);	# Use thread names on Emulator
+	($name) = ($name =~ /([^:]+)/);				# otherwise strip thread name
+
+	# yuck! linear search
+	my $found = 0;
+	for (0..$#groupnames)
+		{
+		my $groupid = $_;
+		if ($groupnames[$groupid] eq $name)
+			{
+			$found = 1;
+			push @{$groups[$groupid]}, $chunkid;
+			$chunkgroup[$chunkid] = $groupid;
+			last;
+			}
+		}
+	
+	if (!$found)
+		{
+		push @groupnames, $name;
+		push @groups, [$chunkid];
+		$chunkgroup[$chunkid] = $#groups;
+		}
+	}
+
+# Strip instance number (if any) from group name for presentation
+for (0..$#groupnames)
+	{
+	$groupnames[$_] = $1 if ($groupnames[$_] =~ /^([^]]+]?)/);
+	}
+
+#
+# Output
+#
+my @chunksizes; # Array of chunk sizes, indexed by chunkid
+for (0..$#chunknames) { $chunksizes[$_] = 0 };
+	
+if ($opts{'detailed'})
+	{
+	# Detailed output
+
+	foreach my $name (@groupnames) { print ",\"$name\"" };
+	print "\n";
+
+	# if the tick size in microseconds hasn't been reported in the log with MT:P, take a guess
+	my $tickdiv = 0;
+	if ($tickperiod == 0)
+		{
+		# Uses hacky method to determine whether on Emulator or Target
+		$tickdiv = ($chunknames[0] =~ /^$emulproc/io) ? 10 : 64;
+		}
+	else
+		{
+		# tickperiod is number of microseconds 
+		$tickdiv = 1000000 / $tickperiod;
+		}
+
+	my ($oldtick, $minitick) = (0,0);
+	my @groupsizes;
+	for my $trace (@traces)
+		{
+		my ($tick, $chunkid, $size) = @$trace;
+		if ($oldtick != $tick)
+			{
+			$oldtick = $tick;
+			$minitick=0;
+			}
+
+		$chunksizes[$chunkid] = $size;
+		my $groupid=$chunkgroup[$chunkid];
+		my $groupsize = 0;
+		foreach $chunkid (@{$groups[$groupid]})
+			{
+			$groupsize += $chunksizes[$chunkid];
+			}
+		$groupsizes[$groupid] = $groupsize;
+
+		print $tick/$tickdiv + ($minitick++)/1000000;
+		foreach $groupsize (@groupsizes)
+			{
+			if ($groupsize)
+				{
+				printf ",%d", $groupsize/1024;
+				}
+			else
+				{
+				print ',';		# make output prettier by omitting 0s
+				}
+			}
+		print "\n";
+		}
+	}
+else
+	{
+	# Summary output
+
+	my @grouphighs;
+	for my $trace (@traces)
+		{
+		my ($tick, $chunkid, $size) = @$trace;
+		$chunksizes[$chunkid] = $size;
+		my $groupid=$chunkgroup[$chunkid];
+		my $groupsize = 0;
+		foreach $chunkid (@{$groups[$groupid]})
+			{
+			$groupsize += $chunksizes[$chunkid];
+			}
+		$grouphighs[$groupid] = $groupsize
+			if (!defined($grouphighs[$groupid]) ||
+				($grouphighs[$groupid] < $groupsize));
+	}
+
+	printf "\"Process\", Size [K]\n";
+	for (0..$#groupnames)
+		{
+		printf "\"$groupnames[$_]\", %d\n", $grouphighs[$_]/1024;
+		}
+	}
+exit 0;
+
+
+sub help ()
+	{
+	my $build;
+	
+	&Load_ModuleL('E32TPVER');
+	print "\nmemtrace - " .
+	  "Postprocess EPOC memory usage trace (Build ", &E32tpver, ")\n";
+	&usage;
+	}
+	
+sub usage ()
+	{
+	print <<EOF
+
+Usage:
+  memtrace [-d] <logfile>
+
+Where:
+  <logfile>     Memory usage trace file.
+
+Options:
+  -d            Produce a detailed listing.
+EOF
+	;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/ARMV5.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,612 @@
+# 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:
+# This file provides the definition of variables that are used by the component
+# specific makefile. This is for the BPABI (Base Platform ABI) platform using the
+# RVCT compiler.
+# Path Settings
+# 
+#
+
+# Compiler Installation Location
+CC_INSTALL_PATH=
+
+#----------------------------------
+# Programs used from the ToolChain
+#----------------------------------
+
+# C++ Compiler
+CC=armcc
+
+# Linker
+LD=armlink
+
+# Assembler
+ASM=armasm
+
+# Archiver
+AR=armar
+
+# Translator to translate the GCC inline assembler code
+TRANASM=tranasm.bat
+
+#--------------------
+# Option Prefix
+#--------------------
+
+# This value will be used by the backend to segregate one option from the other.
+# If option prefix is one among '+','*','.'or '?' (these metacharacters have specific predefined meaning
+# for pattern matching in Perl) then it should be preceded with '\'.
+OPTION_PREFIX=
+
+#------------------
+# Compiler Options
+#------------------
+
+# Flag whether the compiler requires Unix slashes for absolute paths
+UNIX_SLASH_FOR_CC_ABS_PATHS=0
+
+#-------------------
+# Debug Mode Options
+#-------------------
+
+# Optimization Level in DEBUG mode
+DEBUG_OPTIMISATION=-O0
+
+# Option to produce debug information
+DEBUG_OPTION=-g
+
+DEBUG_FORMAT_DWARF2=--dwarf2
+DEBUG_FORMAT_DWARF3=--dwarf3
+
+# DWARF 2 is default on the ARMV5 build platform.
+DEBUG_FORMAT=$(DEBUG_FORMAT_DWARF2)
+
+# Specific compiler options for a UDEB build
+SYMBIAN_UDEB_CCFLAGS=$(DEBUG_OPTION)
+
+#-------------------------
+# Target Processor Options
+#-------------------------
+
+# Option to select the appropriate target processor
+ifeq "$(RVCT_VER_MAJOR)" "2"
+TARGET_ARCH_OPTION=--cpu 5T
+else
+TARGET_ARCH_OPTION=--cpu 5TE
+endif
+
+# Option to generate the approproate ARM instruction set.
+ARM_INSTRUCTION_SET=--arm
+
+# Option to generate the approproate thumb instruction set.
+THUMB_INSTRUCTION_SET=--thumb
+
+# Compiler define for thumb instruction set
+COMPILER_THUMB_DEFINES=-D__MARM_THUMB__
+
+# Compiler define for interwork
+COMPILER_INTERWORK_DEFINES=-D__MARM_INTERWORK__
+
+# Option to specify the floating point conformance.
+FPMODE_OPTION=--fpmode ieee_no_fenv
+
+# Compiler option to select softvfp mode
+SOFTVFPMODE_OPTION=--fpu softvfp
+
+# Compiler option to select hardware floating point unit
+VFP2MODE_OPTION=--fpu vfpv2
+
+# Option to force all enumerations to be stored in as integers.
+ENUM_OPTION=--enum_is_int
+
+# Option to disable the generation of unaligned word and halfword accesses on ARMV6
+# and ARMV7 processors.
+ifeq "$(RVCT_VER_MAJOR)" "2"
+NO_UNALIGNED_ACCESS=--memaccess -UL41
+else
+NO_UNALIGNED_ACCESS=--no_unaligned_access
+endif
+
+#---------------------------------
+# Options controlling C++ Features
+#---------------------------------
+
+# Option for handling Virtual functions and Virtual Tables
+EXPORT_VTBL_OPTION=--export_all_vtbl
+
+# Disables unused virtual function elimination (VFE) in C++ mode. --vfe is the default
+VFE_OPTION=--no_vfe
+
+# Option to turn on exception handling
+EXCEPTIONS=--exceptions --exceptions_unwind
+NO_EXCEPTIONS=--no_exceptions --no_exceptions_unwind
+
+#-------------------------------------------------------------------------
+# Options controlling the ARM Architecture Procedure Call Standard (AAPCS)
+#-------------------------------------------------------------------------
+
+# This Option is for ARM Architecture Procedure Call Standard with the
+# qualifier to support calls between the ARM and Thumb instruction sets.
+AAPCS_OPTION=--apcs /inter
+
+#-----------------------------------------------------------
+# Options controlling generation of Compiler Warnings/Errors
+#-----------------------------------------------------------
+
+# Option to control the Compiler warnings
+CC_WARNINGS_CONTROL_OPTION=--diag_suppress 161,611,654,997,1152,1300,1464,1488,6318,6331,2523
+
+# Option to control the Compiler warnings for building Standard C++ application
+CC_STDCPP_WARNINGS_CONTROL_OPTION=--diag_suppress 161,611,654,997,1152,1300,1464,1488,6318,6331
+
+# Option to suppress the Compiler errors
+CC_ERRORS_CONTROL_OPTION=--diag_error 1267
+
+# Option to suppress the Compiler errors for building Standard C++
+CC_STDCPP_ERRORS_CONTROL_OPTION=--diag_error 1267
+
+# Option to modify the Compiler warnings and errors for Symbian OS
+SYMBIAN_CC_MESSAGE_OPTION=$(CC_WARNINGS_CONTROL_OPTION) $(CC_ERRORS_CONTROL_OPTION)
+
+#-----------------
+# Optional Options
+#-----------------
+
+# Compiler option to avoid the generation of the intermediate files. (Optional)
+TEMP_FILES_OPTION=
+
+# Library Option
+OWN_LIBRARY_OPTION=--library_interface=aeabi_clib
+
+# Option to generate the Object File
+COMPILE_ONLY_OPTION=-c
+
+# Option to generate the Preprocessed File
+PREPROCESSOR_OPTION=-E
+
+# Other additional Options to be passed to the compiler
+EXTRA_CC_OPTION=
+
+#---------------------
+# Preprocessor Options
+#---------------------
+
+# Prefix Header File passed to the preprocessor
+PREFIXFILE=$(EPOCROOT)epoc32\include\rvct\rvct.h
+
+# For .cpp Source files
+CPP_LANG_OPTION=--cpp
+
+# For .c Source files
+C_LANG_OPTION=--c90
+
+# For .cia Source files
+CIA_LANG_OPTION=--cpp -D__CIA__
+
+#-------------------
+# Assembler Options
+#-------------------
+
+# Option to generate the Assembler instructions
+ASSEMBLER_LISTING_OPTION=-S --interleave
+
+# Output option used to pass the output file name
+ASM_OUTPUT_OPTION=-o
+
+#------------------
+# Translator Options
+#------------------
+
+# Flags to be passed to the translator
+TRANASM_FLAGS=-n -s
+
+# Output option used to pass the output file name
+TRANASM_OUTPUT_OPTION=-o=
+
+# Input option used to pass the input file name
+TRANASM_INPUT_OPTION=
+
+#---------------------------
+# Include Options and Files
+#---------------------------
+
+# Option to specify the location of the header files
+INCLUDE_OPTION=-J
+
+# Preinclude file for that compiler that contains all the compiler specific definitions
+# required by the Symbian OS source code.
+PREINCLUDE_OPTION=--preinclude $(EPOCROOT)epoc32\include\rvct\rvct.h
+
+# Include options required by Function Call Logger
+FC_LOGGER_INCLUDE_OPTION=-I
+FC_LOGGER_DICTIONARY_FILE_NAME=--dictionary_file_name
+FC_LOGGER_GENERATED_C_FILE_NAME=--gen_c_file_name
+
+# Preinclude file to be passed to the Function Call Logger which uses EDG compiler
+#PREINCLUDE_OPTION_FCLOGGER=$(FC_LOGGER_INCLUDE_OPTION) $(EPOCROOT)EPOC32\INCLUDE\RVCT --preinclude edg_rvct2_2.h
+
+# Option to control the search for the header files. For example, if we do not want to do a search in the
+# standard include directory of C++, then can restrict it by providing the appropriate option.
+HEADER_FILES_CONTROL_OPTION=
+
+# Path to pick the header files from the Compiler installation directory
+COMPILER_INCLUDE_PATH=
+
+# Fetches the version of the tools from the installation directory
+VERSION_OPTION=
+VERSION_INFO=
+
+#---------------------
+# Release Mode Options
+#---------------------
+
+# Optimization Level in RELEASE mode
+REL_OPTIMISATION=-O2
+
+# Specific compiler options for a UREL build
+SYMBIAN_UREL_CCFLAGS=
+
+#---------------------------------
+# Symbol Attribute Setting Options
+#---------------------------------
+
+# Option to set the visibility of runtime symbols as DEFAULT (instead of HIDDEN)
+RUNTIME_SYMBOL_VISIBILITY_OPTION=--dllimport_runtime
+
+# Option to specify the output of the toolchain
+OUTPUT_OPTION=-o
+
+# Options to be passed when building System Target(kernel)
+KERNEL_OPTIONS=$(ARM_INSTRUCTION_SET) $(NO_EXCEPTIONS)
+
+# Options to be passed when building in Arm mode
+ARM_OPTIONS=$(ARM_INSTRUCTION_SET)
+
+# Options to be passed when building in Thumb mode
+THUMB_OPTIONS=$(THUMB_INSTRUCTION_SET)
+
+# Common compiler options for Arm and Thumb mode
+COMMON_OPTIONS=$(DEBUG_FORMAT) $(SYMBIAN_CC_MESSAGE_OPTION)
+
+# Invariant Options which cannot be modified by the user from MMP file
+INVARIANT_OPTIONS= $(TARGET_ARCH_OPTION) $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) $(EXPORT_VTBL_OPTION) $(VFE_OPTION) $(AAPCS_OPTION)
+
+# Common compiler options for compiling programs targeted at Symbian OS
+#CCFLAGS=$(SYMBIAN_CC_MESSAGE_OPTION) $(EXCEPTIONS) $(TARGET_ARCH_OPTION) $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) $(EXPORT_VTBL_OPTION) $(VFE_OPTION) $(AAPCS_OPTION) $(TEMP_FILES_OPTION) $(HEADER_FILES_CONTROL_OPTION) $(COMPILE_ONLY_OPTION) $(EXTRA_CC_OPTION)
+CCFLAGS=$(COMMON_OPTIONS) $(INVARIANT_OPTIONS) $(TEMP_FILES_OPTION) $(HEADER_FILES_CONTROL_OPTION) $(COMPILE_ONLY_OPTION) $(EXTRA_CC_OPTION)
+
+#------------------
+# Linker Options
+#------------------
+
+# Output option used to pass the output file name
+LINKER_OUTPUT_OPTION=-o
+
+# Option to generate debug information
+LINKER_DEBUG_OPTION=--debug
+
+# Option to *not* generate debug information.
+LINKER_NODEBUG_OPTION=
+
+#--------------------------------------------------------------
+# Options to generate executables conforming to BPABI standards
+#--------------------------------------------------------------
+
+# Option to generate an executable conforming to the Base Platform ABI for the ARM Architecture
+BPABI_OPTION=--bpabi
+
+# The `R_ARM_TARGET1' relocation is typically used for entries in the `.init_array' section. It is
+# interpreted as either `R_ARM_REL32' or `R_ARM_ABS32', depending on the target. The following option
+# override the default export relocations.
+TARGET_RELOCATION_OPTION=
+
+#-------------------------------------
+# Options to specify the output format
+#-------------------------------------
+
+# Option to create a relocatable ELF image. A relocatable image has a dynamic segment that contains
+# relocations that can be used to relocate the image post link-time.
+RELOCATABLE_IMAGE_OPTION=
+
+# Option to create an ELF shared object.
+SHARED_OBJECT_OPTION=--dll
+
+#-------------------------------------------
+# Options to set the Start of RO/RW sections
+#-------------------------------------------
+
+# Option to set the start of the code section (RO Region)
+CODE_SEGMENT_START=
+
+# Option to split object into RO and RW sections
+SPLIT_OPTION=
+
+# Option to set the start of the Data section (RW region)
+RW_BASE_OPTION=--rw-base
+
+# Option to be passed to the linker to set the start of the data section (RW region)
+DATA_SEGMENT_START=$(SPLIT_OPTION) $(RW_BASE_OPTION)
+
+#---------------------------------------------------------
+# Options controlling generation of Linker Warnings/Errors
+#---------------------------------------------------------
+
+# Option to control the Linker warnings
+LD_WARNINGS_CONTROL_OPTION=--diag_suppress 6331,6780
+
+# Option to suppress the Linker errors
+LD_ERRORS_CONTROL_OPTION=
+
+# Option to modify the Linker warnings and errors for Symbian OS
+SYMBIAN_LD_MESSAGE_OPTION=$(LD_WARNINGS_CONTROL_OPTION) $(LD_ERRORS_CONTROL_OPTION)
+
+# Option to specify whether unresolved symbol references from regular object files can be allowed or not.
+UNRESOLVED_SYMBOL_REF_OPTION=
+
+# Option to specify the undefined reference
+UNDEFINED_SYMBOL_REF_OPTION=
+
+# Other additional Options to be passed to the Linker
+EXTRA_LD_OPTION=--datacompressor=off
+
+ifeq "$(RVCT_VER_MAJOR)" "3"
+# Without this linker option, objects with ".directive" sections (i.e. objects
+# created by RVCT 2.2) will cause problems.
+EXTRA_LD_OPTION += --export_all
+endif
+
+#-------------------
+#Entry Point Options
+#-------------------
+
+# Option to pass the explicit symbol for beginning execution of the program
+LINKER_ENTRY_OPTION=--entry
+
+# Symbol used to denote the Start of the grouped archives.
+START_GROUP_SYMBOL=(
+
+# Symbol used to denote the End of the grouped archives.
+END_GROUP_SYMBOL=)
+
+#-------------------------
+# Library Specific Options
+#-------------------------
+
+# Option to control the search in the standard libraries
+STDLIB_OPTION=--no_scanlib
+
+# Additional static libraries that should automatically be supplied to the linker.
+ifeq "$(RVCT_VER_MAJOR)" "2"
+STATIC_LIBS_LIST=armlib\h_t__uf.l(switch8.o)
+else
+STATIC_LIBS_LIST=armlib\h_5.l(switch8.o)
+endif
+
+# Option to pass the path from where the runtime libraries should be picked up
+STATIC_LIBS_PATH=--libpath
+
+# Fetches the library path from the installation directory
+STATIC_LIBRARY_PATH=
+STATIC_LIBS=
+
+# Additional runtime libraries that should be supplied to the linker.
+RTVER:=$(RVCT_VER_MAJOR)_$(RVCT_VER_MINOR)
+RUNTIME_LIBS_LIST=drtaeabi.dso dfpaeabi.dso dfprvct$(RTVER).dso drtrvct$(RTVER).dso
+
+
+# The library that contains operator new and operator delete.
+SYM_NEW_LIB=scppnwdl.dso
+
+# Option to pass the path from where the runtime libraries should be picked up
+RUNTIME_LIBS_PATH=
+
+# Option to turn on implicit symbol versioning
+SYMVER_OPTION=--symver_soname
+
+# Option to specify the shared object name that is stored in the executable
+SO_NAME_OPTION=--soname
+
+# Option to generate the map file that provides information about the linking
+LINKER_SYMBOLS_OPTION=--symbols
+
+# Option to specify the Symbols file
+LINKER_SYMBOLS_FILE_OPTION=--list
+
+# Option to produce the Map file that provides information about linking
+LINKER_SYMBOLS_MAP_OPTION=$(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION)
+
+# Option to specify the linker script file
+LINKER_SCRIPT_FILE_OPTION=
+
+#Via file prefixes
+VIA_FILE_PREFIX=
+VIA_FILE_SUFFIX=
+
+# option to take object file names from other(via) file, here in case of ARMV5 it is necessary to specify space after the "--via " option.
+COMMANDFILE_OPTION:=--via 
+
+# Linker options which can be customized from BSF
+LD_OPTIONS=$(SYMBIAN_LD_MESSAGE_OPTION)$(UNRESOLVED_SYMBOL_REF_OPTION) $(STDLIB_OPTION) $(EXTRA_LD_OPTION)
+
+# Linker option common to all link commands for UREL build
+SYMBIAN_UREL_LINK_FLAGS=$(BPABI_OPTION) $(RELOCATABLE_IMAGE_OPTION) $(TARGET_RELOCATION_OPTION) $(LD_OPTIONS)
+
+# Linker option common to all link commands for UDEB build
+SYMBIAN_UDEB_LINK_FLAGS=$(BPABI_OPTION) $(RELOCATABLE_IMAGE_OPTION) $(TARGET_RELOCATION_OPTION) $(LD_OPTIONS)
+
+
+#-----------------
+# Archiver Options
+#-----------------
+
+# ARCHIVER variable should be set since there is a dependency for this variable in e32test.
+ARCHIVER= $(AR)
+
+ARCHIVER_CREATE_OPTION=--create
+
+# Archiver options which can be set from BSF files
+AR_OPTIONS=
+
+#--------------------------------------
+# Compiler and Platform specific macros
+#--------------------------------------
+
+# Macro definitions required to identify the compiler. Allows for conditional compilation based on compiler
+PLATFORM_DEFINES=
+
+COMPILER_DEFINES=
+
+# Compiler target option
+COMPILER_PLAT=ARMCC
+
+#--------------------------------------
+# Function Call Logger Options
+#--------------------------------------
+FC_LOGGER_OPTION=--wchar_t_keyword --microsoft_version=1300 --diag_suppress 66,161,611,654,815,830,997,1152,1300,1390
+
+# Defines for Function Call Logger
+FC_LOGGER_DEFINES=-D__ARMCC_VERSION=220435
+
+#------------
+# OE Options
+#------------
+
+# Options to export all the globol symbols and import undefined references, required by OE
+OE_OPTIONS=--no_hide_all
+
+# OE Glue code libs
+OE_EXE_LIBS=libcrt0.lib
+OE_EXE_LIBS_WCHAR=libwcrt0.lib
+
+# OE Import Libs
+OE_IMPORT_LIBS=euser.lib
+
+# The library that contains operator new and operator delete.
+OE_NEW_LIB=stdnew.dso
+
+#-----------------------------------------------------------------------------------------------------
+#This section defines the interface with Symbian tools
+#This SHOULD NOT be changed as any changes in this section will not be picked up by the tools back end
+#-----------------------------------------------------------------------------------------------------
+
+# Programs used from the ToolChain
+export  CC
+export  LD
+export  ASM
+export  AR
+export  TRANASM
+
+# Preprocessor Options
+export  PREFIXFILE
+export  CPP_LANG_OPTION
+export  C_LANG_OPTION
+export  CIA_LANG_OPTION
+
+# Option Prefix
+export OPTION_PREFIX
+
+# Compiler Options
+export	PREPROCESSOR_OPTION
+export  ASSEMBLER_LISTING_OPTION
+export  ASM_OUTPUT_OPTION
+export  INCLUDE_OPTION
+export  PREINCLUDE_OPTION
+export  HEADER_FILES_CONTROL_OPTION
+export  COMPILER_INCLUDE_PATH
+export  SYMBIAN_UREL_CCFLAGS
+export  SYMBIAN_UDEB_CCFLAGS
+export  REL_OPTIMISATION
+export  DEBUG_OPTIMISATION
+export  ARM_OPTIONS
+export  THUMB_OPTIONS
+export  COMMON_OPTIONS
+export  INVARIANT_OPTIONS
+export  KERNEL_OPTIONS
+export  COMPILER_THUMB_DEFINES
+export  COMPILER_INTERWORK_DEFINES
+export  SOFTVFPMODE_OPTION
+export  VFP2MODE_OPTION
+export  RUNTIME_SYMBOL_VISIBILITY_OPTION
+export  OUTPUT_OPTION
+export  CCFLAGS
+export  UNIX_SLASH_FOR_CC_ABS_PATH
+export  EXCEPTIONS
+export  NO_EXCEPTIONS
+export 	VERSION_INFO
+export  NO_UNALIGNED_ACCESS
+export  DEBUG_FORMAT
+
+# Linker Options
+export  LINKER_OUTPUT_OPTION
+export  LINKER_DEBUG_OPTION
+export  LINKER_NODEBUG_OPTION
+export  CODE_SEGMENT_START
+export  DATA_SEGMENT_START
+export  UNDEFINED_SYMBOL_REF_OPTION
+export  LINKER_ENTRY_OPTION
+export  START_GROUP_SYMBOL
+export  END_GROUP_SYMBOL
+export  SHARED_OBJECT_OPTION
+export  STDLIB_OPTION
+export  STATIC_LIBS_LIST
+export  STATIC_LIBS_PATH
+export 	STATIC_LIBRARY_PATH
+export  STATIC_LIBS
+export  RUNTIME_LIBS_LIST
+export  SYM_NEW_LIB
+export  RUNTIME_LIBS_PATH
+export  SYMVER_OPTION
+export  SO_NAME_OPTION
+export  LINKER_SYMBOLS_MAP_OPTION
+export  COMMANDFILE_OPTION
+export	VIA_FILE_PREFIX
+export	VIA_FILE_SUFFIX
+export  SYMBIAN_UREL_LINK_FLAGS
+export  SYMBIAN_UDEB_LINK_FLAGS
+export  LD_OPTIONS
+
+# Archiver Options
+export  ARCHIVER
+export  ARCHIVER_CREATE_OPTION
+export  AR_OPTIONS
+
+# Compiler Specific Defines
+export  COMPILER_DEFINES
+export  COMPILER_PLAT
+
+# Platform Specific Defines
+export  PLATFORM_DEFINES
+
+# Translator Options
+export  TRANASM_FLAGS
+export  TRANASM_OUTPUT_OPTION
+export  TRANASM_INPUT_OPTION
+
+# Function Call Logger options
+export PREINCLUDE_OPTION_FCLOGGER
+export FC_LOGGER_OPTION
+export FC_LOGGER_DEFINES
+export FC_LOGGER_INCLUDE_OPTION
+export FC_LOGGER_DICTIONARY_FILE_NAME
+export FC_LOGGER_GENERATED_C_FILE_NAME
+
+#OE Options
+export OE_OPTIONS
+export OE_EXE_LIBS
+export OE_EXE_LIBS_WCHAR
+export OE_IMPORT_LIBS
+export OE_NEW_LIB
+
+#-----------------------------------------------------------------------------------------------------
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/ARMV5SMP.bsf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for ARMV5SMP architecture. 
+
+CUSTOMIZES ARMV5
+
+SMP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/ARMV6.BSF	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,22 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for ARMV6 architecture. The options specified here are same as for ARMV5 except 
+# the --cpu 6 option in INVARIANT_OPTIONS. This specifies to compiler to compile for generic ARMV6. If any other 
+# specific options are required such as --cpu ARM1136J-S, etc, then it can be done via a different BSF file
+# NOTE: The options specified here for the compiler disable the unaligned memory access.
+
+CUSTOMIZES ARMV5
+
+INVARIANT_OPTIONS --cpu 6 $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) $(EXPORT_VTBL_OPTION) $(VFE_OPTION) $(AAPCS_OPTION) $(NO_UNALIGNED_ACCESS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/ARMV6SMP.bsf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,24 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for ARMV6 architecture. The options specified here are same as for ARMV5 except 
+# the --cpu 6 option in INVARIANT_OPTIONS. This specifies to compiler to compile for generic ARMV6. If any other 
+# specific options are required such as --cpu ARM1136J-S, etc, then it can be done via a different BSF file
+# NOTE: The options specified here for the compiler disable the unaligned memory access.
+
+CUSTOMIZES ARMV5
+
+INVARIANT_OPTIONS --cpu MPCore --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter --memaccess -UL41
+
+SMP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/ARMV6T2.bsf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for ARM 6T2 architecture. The options specified
+# here are same as for ARMV6 except --cpu 6T2 (instead of --cpu 5T).
+
+CUSTOMIZES ARMV5
+
+INVARIANT_OPTIONS --cpu 6T2 $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) $(EXPORT_VTBL_OPTION) $(VFE_OPTION) $(AAPCS_OPTION) $(NO_UNALIGNED_ACCESS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/ARMV6_abiv1.BSF	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,22 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for ARMV6 architecture. The options specified here are same as for ARMV5 except 
+# the --cpu 6 option in INVARIANT_OPTIONS. This specifies to compiler to compile for generic ARMV6. If any other 
+# specific options are required such as --cpu ARM1136J-S, etc, then it can be done via a different BSF file
+# NOTE: The options specified here for the compiler disable the unaligned memory access.
+
+CUSTOMIZES ARMV5_ABIV1
+
+INVARIANT_OPTIONS --cpu 6 --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter --memaccess -UL41
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/ARMV7.bsf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,23 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for ARMV 7-A architecture.
+
+CUSTOMIZES ARMV5
+
+INVARIANT_OPTIONS --cpu=7-A $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) $(EXPORT_VTBL_OPTION) $(VFE_OPTION) $(AAPCS_OPTION) $(NO_UNALIGNED_ACCESS)
+
+# On ARMV7 we use DWARF 3 instead of DWARF 2.
+DEBUG_FORMAT $(DEBUG_FORMAT_DWARF3)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/GCCE.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,636 @@
+# 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:
+# This file provides the definition of variables that are used by the component specific makefile
+# This is for the BPABI (Base Platform ABI) platform using the GCCE compiler.
+# Functions added as the part of Plugin Architecture
+# 
+#
+
+#function to find the include path
+define find-inc-path
+	$(subst /bin/../,/,$(subst libgcc.a,%,$(shell $(CC) -print-libgcc-file-name)))
+endef
+
+#function to find the installation path
+define find_install_path
+	$(subst /bin/../lib/gcc/arm-none-symbianelf/3.4.3,,$(subst libgcc.a,,$(shell $(CC) -print-libgcc-file-name)))
+endef
+
+#function to include the version info
+define find-version-info
+$(strip $(shell $(CC) $(VERSION_OPTION)))
+endef
+
+#function to find the library path
+#function to determine the libgcc path
+define find-gcclib-path
+	"$(patsubst %libgcc.a,%,$(shell $(CC) -print-libgcc-file-name))"
+endef
+
+#function to determine the libsupc++ path
+define find-libsupc-path
+	"$(patsubst %/libsupc++.a,%,$(shell $(CC) -print-file-name=libsupc++.a))"
+endef
+
+#---------------
+# Path Settings
+#---------------
+
+# Compiler Installation Location
+CC_INSTALL_PATH=$(strip $(call find_install_path))
+
+#----------------------------------
+# Programs used from the ToolChain
+#----------------------------------
+
+# C++ Compiler
+CC=arm-none-symbianelf-g++
+
+# Linker
+LD=arm-none-symbianelf-ld
+
+# Assembler
+ASM=arm-none-symbianelf-as
+
+# Archiver
+AR=arm-none-symbianelf-ar
+
+# Translator to translate the GCC inline assembler code
+TRANASM=
+
+#--------------------
+# Option Prefix
+#--------------------
+
+# This value will be used by the backend to segregate one option from the other.
+# If option prefix is one among '+','*','.'or '?' (these metacharacters have specific predefined meaning 
+# for pattern matching in Perl) then it should be preceded with '\'.
+OPTION_PREFIX=
+
+#------------------
+# Compiler Options
+#------------------
+
+# Flag whether the compiler requires Unix slashes for absolute paths
+UNIX_SLASH_FOR_CC_ABS_PATHS=1
+
+#-------------------
+# Debug Mode Options
+#-------------------
+
+# Optimization Level in DEBUG mode
+DEBUG_OPTIMISATION=
+
+# Option to produce debug information:
+#   -g1: little information.
+#   -g2: more information.
+#   -g : same as -g2.
+#   -g3: maximum amount of information. For example, at this level information
+#        about macros is created.
+DEBUG_OPTION=-g3
+
+# Option to set the debug format.
+#
+# GCC doesn't support the full DWARF3 format.
+DEBUG_FORMAT:=-gdwarf-2
+
+# Specific compiler options for a UDEB build
+SYMBIAN_UDEB_CCFLAGS= $(DEBUG_OPTION) $(DEBUG_FORMAT)
+
+#-------------------------
+# Target Processor Options 
+#-------------------------
+
+# Option to select the appropriate target processor
+TARGET_ARCH_OPTION=-march=armv5t
+
+# Option to generate the approproate ARM instruction set.
+ARM_INSTRUCTION_SET=-marm
+
+# Option to generate the approproate thumb instruction set.
+THUMB_INSTRUCTION_SET=-mthumb
+
+# Compiler define for thumb instruction set
+COMPILER_THUMB_DEFINES=-D__MARM_THUMB__
+
+# Compiler define for interwork
+COMPILER_INTERWORK_DEFINES=-D__MARM_INTERWORK__
+
+# Option to specify the floating point conformance. 
+FPMODE_OPTION=
+
+# Compiler option to select softvfp mode
+SOFTVFPMODE_OPTION=-msoft-float
+
+# Compiler option to select hardware floating point unit
+VFP2MODE_OPTION=
+
+# Option to force all enumerations to be stored in as integers. 
+ENUM_OPTION=
+
+#---------------------------------
+# Options controlling C++ Features
+#---------------------------------
+
+# Option for handling Virtual functions and Virtual Tables
+EXPORT_VTBL_OPTION=
+
+# Disables unused virtual function elimination (VFE) in C++ mode. --vfe is the default
+VFE_OPTION= 
+
+# Option to turn on exception handling
+EXCEPTIONS=-fexceptions
+NO_EXCEPTIONS=-fno-exceptions
+
+#-------------------------------------------------------------------------
+# Options controlling the ARM Architecture Procedure Call Standard (AAPCS)
+#-------------------------------------------------------------------------
+
+# This Option is for ARM Architecture Procedure Call Standard with the 
+# qualifier to support calls between the ARM and Thumb instruction sets.
+AAPCS_OPTION=-mapcs -mthumb-interwork
+
+#-----------------------------------------------------------
+# Options controlling generation of Compiler Warnings/Errors 
+#-----------------------------------------------------------
+
+# Option to control the Compiler warnings
+CC_WARNINGS_CONTROL_OPTION=-Wall -Wno-unknown-pragmas
+
+# Option to control the Compiler warnings for building Standard C++ application
+CC_STDCPP_WARNINGS_CONTROL_OPTION=-Wall -Wno-unknown-pragmas
+
+# Option to suppress the Compiler errors
+CC_ERRORS_CONTROL_OPTION=
+
+# Option to suppress the Compiler errors for building Standard C++
+CC_STDCPP_ERRORS_CONTROL_OPTION=
+
+# Option to modify the Compiler warnings and errors for Symbian OS
+SYMBIAN_CC_MESSAGE_OPTION=$(CC_WARNINGS_CONTROL_OPTION) $(CC_ERRORS_CONTROL_OPTION)
+
+#-----------------
+# Optional Options
+#-----------------
+
+# Compiler option to avoid the generation of the intermediate files. (Optional)
+TEMP_FILES_OPTION=-pipe
+
+# Library Option
+OWN_LIBRARY_OPTION=
+
+# Option to generate the Object File
+COMPILE_ONLY_OPTION=-c
+
+# Option to generate the Preprocessed File
+PREPROCESSOR_OPTION=-E
+
+# Other additional Options to be passed to the compiler
+EXTRA_CC_OPTION=
+
+#---------------------
+# Preprocessor Options
+#---------------------
+
+# Prefix Header File passed to the preprocessor
+PREFIXFILE=$(EPOCROOT)EPOC32\INCLUDE\GCCE\GCCE.h
+
+# For .cpp Source files
+CPP_LANG_OPTION=-x c++ -Wno-ctor-dtor-privacy
+
+# For .c Source files
+C_LANG_OPTION=-x c
+
+# For .cia Source files
+CIA_LANG_OPTION=-x c++ -S -Wa,-adln
+
+#-------------------
+# Assembler Options
+#-------------------
+
+# Option to generate the Assembler instructions
+ASSEMBLER_LISTING_OPTION=-S
+
+# Output option used to pass the output file name
+ASM_OUTPUT_OPTION=-o
+
+#------------------
+# Translator Options
+#------------------
+
+# Flags to be passed to the translator
+TRANASM_FLAGS=-n -s 
+
+# Output option used to pass the output file name
+TRANASM_OUTPUT_OPTION=-o=
+
+# Input option used to pass the input file name
+TRANASM_INPUT_OPTION=
+
+#---------------------------
+# Include Options and Files
+#---------------------------
+
+# Option to specify the location of the header files
+INCLUDE_OPTION=-I
+
+# Preinclude file for that compiler that contains all the compiler specific definitions
+# required by the Symbian OS source code.
+PREINCLUDE_OPTION=-include $(EPOCROOT)EPOC32/INCLUDE/GCCE/GCCE.h
+
+# Include options required by Function Call Logger  
+FC_LOGGER_INCLUDE_OPTION=-I
+FC_LOGGER_DICTIONARY_FILE_NAME=--dictionary_file_name
+FC_LOGGER_GENERATED_C_FILE_NAME=--gen_c_file_name
+
+# Preinclude file to be passed to the Function Call Logger which uses EDG compiler 
+PREINCLUDE_OPTION_FCLOGGER=$(FC_LOGGER_INCLUDE_OPTION) $(EPOCROOT)EPOC32/INCLUDE/GCCE --preinclude edg_gcce.h
+
+# Option to control the search for the header files. For example, if we do not want to do a search in the
+# standard include directory of C++, then can restrict it by providing the appropriate option.
+HEADER_FILES_CONTROL_OPTION=-nostdinc
+
+# Path to pick the header files from the Compiler installation directory
+COMPILER_INCLUDE_PATH=$(call find-inc-path)include
+
+# Fetches the version of the tools from the installation directory
+VERSION_OPTION=-dumpversion
+VERSION_INFO:=$(call find-version-info)
+
+GCC_MAJOR:=$(word 1,$(subst ., , $(VERSION_INFO)))
+GCC_MINOR:=$(word 2,$(subst ., , $(VERSION_INFO)))
+
+#---------------------
+# Release Mode Options
+#---------------------
+
+# Optimization Level in RELEASE mode
+REL_OPTIMISATION=-O2 -fno-unit-at-a-time
+
+# Specific compiler options for a UREL build
+SYMBIAN_UREL_CCFLAGS=
+
+#---------------------------------
+# Symbol Attribute Setting Options
+#---------------------------------
+
+# Option to set the visibility of runtime symbols as DEFAULT (instead of HIDDEN)
+RUNTIME_SYMBOL_VISIBILITY_OPTION=
+
+# Option to specify the output of the toolchain
+OUTPUT_OPTION=-o
+
+# Options to be passed when building System Target(kernel)
+KERNEL_OPTIONS=$(ARM_INSTRUCTION_SET) $(NO_EXCEPTIONS)
+
+# Options to be passed when building in Arm mode
+ARM_OPTIONS=$(ARM_INSTRUCTION_SET)
+
+# Options to be passed when building in Thumb mode
+THUMB_OPTIONS=$(THUMB_INSTRUCTION_SET)
+
+# Common compiler options for Arm and Thumb mode
+COMMON_OPTIONS=$(SYMBIAN_CC_MESSAGE_OPTION)
+
+# Invariant Options which cannot be modified by the user from MMP file
+INVARIANT_OPTIONS= $(TARGET_ARCH_OPTION) $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) $(EXPORT_VTBL_OPTION) $(VFE_OPTION) $(AAPCS_OPTION)
+
+# Common compiler options for compiling programs targeted at Symbian OS
+CCFLAGS=$(COMMON_OPTIONS)  $(INVARIANT_OPTIONS) $(TEMP_FILES_OPTION) $(HEADER_FILES_CONTROL_OPTION) $(COMPILE_ONLY_OPTION) $(EXTRA_CC_OPTION)
+
+#------------------
+# Linker Options
+#------------------
+
+# Output option used to pass the output file name
+LINKER_OUTPUT_OPTION=-o
+
+# Option to generate debug information
+LINKER_DEBUG_OPTION=
+
+# Option to *not* generate debug information.
+LINKER_NODEBUG_OPTION=--strip-debug
+
+#--------------------------------------------------------------
+# Options to generate executables conforming to BPABI standards
+#--------------------------------------------------------------
+
+# Option to generate an executable conforming to the Base Platform ABI for the ARM Architecture
+BPABI_OPTION=
+
+# The `R_ARM_TARGET1' relocation is typically used for entries in the `.init_array' section. It is
+# interpreted as either `R_ARM_REL32' or `R_ARM_ABS32', depending on the target. The following option
+# override the default export relocations.
+ifeq "$(GCC_MAJOR)" "3"
+	TARGET_RELOCATION_OPTION:=--target1-abs
+else
+	TARGET_RELOCATION_OPTION:=--target1-rel
+endif
+
+#-------------------------------------
+# Options to specify the output format
+#-------------------------------------
+
+# Option to create a relocatable ELF image. A relocatable image has a dynamic segment that contains 
+# relocations that can be used to relocate the image post link-time.
+RELOCATABLE_IMAGE_OPTION=
+
+# Option to create an ELF shared object.
+SHARED_OBJECT_OPTION=-shared
+
+#-------------------------------------------
+# Options to set the Start of RO/RW sections
+#-------------------------------------------
+
+# Option to set the start of the code section (RO Region)
+CODE_SEGMENT_START=-Ttext
+
+# Option to split object into RO and RW sections
+SPLIT_OPTION=
+
+# Option to set the start of the Data section (RW region)
+RW_BASE_OPTION=-Tdata
+
+# Option to be passed to the linker to set the start of the data section (RW region)
+DATA_SEGMENT_START=$(SPLIT_OPTION) $(RW_BASE_OPTION)
+
+#---------------------------------------------------------
+# Options controlling generation of Linker Warnings/Errors 
+#---------------------------------------------------------
+
+# Option to control the Linker warnings
+LD_WARNINGS_CONTROL_OPTION=
+
+# Option to suppress the Linker errors
+LD_ERRORS_CONTROL_OPTION=
+
+# Option to modify the Linker warnings and errors for Symbian OS
+SYMBIAN_LD_MESSAGE_OPTION=$(LD_WARNINGS_CONTROL_OPTION) $(LD_ERRORS_CONTROL_OPTION)
+
+# Option to specify whether unresolved symbol references from regular object files can be allowed or not.
+UNRESOLVED_SYMBOL_REF_OPTION=--no-undefined
+
+# Option to specify the undefined reference
+UNDEFINED_SYMBOL_REF_OPTION=-u
+
+# Other additional Options to be passed to the Linker
+EXTRA_LD_OPTION=
+
+#-------------------
+#Entry Point Options
+#-------------------
+
+# Option to pass the explicit symbol for beginning execution of the program
+LINKER_ENTRY_OPTION=--entry
+
+# Symbol used to denote the Start of the gouped archives.
+START_GROUP_SYMBOL=
+
+# Symbol used to denote the End of the gouped archives.
+END_GROUP_SYMBOL=
+
+#-------------------------	
+# Library Specific Options
+#-------------------------
+
+# Option to control the search in the standard libraries
+STDLIB_OPTION=-nostdlib
+
+# Additional static libraries that should be supplied to the linker to be linked with
+STATIC_LIBS_LIST=-lsupc++ -lgcc
+
+# Option to pass the path from where the runtime libraries should be picked up
+STATIC_LIBS_PATH=-L
+
+# Fetches the library path from the installation directory, here the functions will return null if the 
+# proper installation path is not set in the Environment Variable
+STATIC_LIBRARY_PATH=$(STATIC_LIBS_PATH)$(call find-gcclib-path) $(STATIC_LIBS_PATH)$(call find-libsupc-path)
+STATIC_LIBS=$(STATIC_LIBRARY_PATH)
+
+# Additional runtime libraries that should be supplied to the linker to be linked with
+# Provide the libraries separated by space, scppnwdl.dso should come before drtrvct2_2.dso
+RUNTIME_LIBS_LIST=dfpaeabi.dso dfprvct2_2.dso drtaeabi.dso scppnwdl.dso drtrvct2_2.dso
+ifeq "$(GCC_MAJOR)" "3" 
+	RUNTIME_LIBS_LIST=dfpaeabi.dso dfprvct2_2.dso drtaeabi.dso drtrvct2_2.dso
+else
+	RUNTIME_LIBS_LIST=drtaeabi.dso dfpaeabi.dso drtrvct3_1.dso dfprvct3_1.dso 
+endif
+
+# The library that contains operator new and operator delete.
+SYM_NEW_LIB=scppnwdl.dso
+
+# Option to pass the path from where the runtime libraries should be picked up
+RUNTIME_LIBS_PATH=
+
+# Option to turn on implicit symbol versioning
+SYMVER_OPTION=--default-symver
+
+# Option to specify the shared object name that is stored in the executable
+SO_NAME_OPTION=-soname
+
+# Option to generate the map file that provides information about the linking
+LINKER_SYMBOLS_OPTION=-Map
+
+# Option to specify the Symbols file
+LINKER_SYMBOLS_FILE_OPTION=
+
+# Option to produce the Map file that provides information about linking
+LINKER_SYMBOLS_MAP_OPTION=$(LINKER_SYMBOLS_OPTION) $(LINKER_SYMBOLS_FILE_OPTION)
+
+# Option to specify the linker script file
+LINKER_SCRIPT_FILE_OPTION=-T
+
+#Via file prefix and suffix 
+VIA_FILE_PREFIX=-(
+VIA_FILE_SUFFIX=-)	
+
+# option to take object file names from other(via) file, here the condition check for 
+# GCCE compiler version is done as the via option differs for different versions in GCCE
+ifeq ($(shell $(CC) -dumpversion),3.4.3)
+	COMMANDFILE_OPTION=
+else 
+	COMMANDFILE_OPTION=@
+endif
+
+# Linker options which can be customized from BSF 
+LD_OPTIONS=$(SYMBIAN_LD_MESSAGE_OPTION)$(UNRESOLVED_SYMBOL_REF_OPTION) $(STDLIB_OPTION) $(EXTRA_LD_OPTION)
+
+# Linker option common to all link commands for UREL build
+SYMBIAN_UREL_LINK_FLAGS=$(BPABI_OPTION) $(RELOCATABLE_IMAGE_OPTION) $(TARGET_RELOCATION_OPTION) $(LD_OPTIONS)
+
+# Linker option common to all link commands for UDEB build
+SYMBIAN_UDEB_LINK_FLAGS=$(BPABI_OPTION) $(RELOCATABLE_IMAGE_OPTION) $(TARGET_RELOCATION_OPTION) $(LD_OPTIONS)
+
+#-----------------
+# Archiver Options
+#-----------------
+
+# ARCHIVER variable should be set since there is a dependency for this variable in e32test.
+ARCHIVER= $(AR)
+
+ARCHIVER_CREATE_OPTION=cr
+
+# Archiver options which can be set from BSF files
+AR_OPTIONS=
+
+#--------------------------------------
+# Compiler and Platform specific macros
+#--------------------------------------
+
+# Macro definitions required to identify the compiler. Allows for conditional compilation based on compiler
+PLATFORM_DEFINES=-D__MARM_ARMV5__
+
+COMPILER_DEFINES=-D__GCCE__
+
+# Compiler target option
+COMPILER_PLAT=GCCE
+
+#--------------------------------------
+# Function Call Logger Options
+#--------------------------------------
+FC_LOGGER_OPTION=--wchar_t_keyword --microsoft_version=1300 --diag_suppress 66,161,611,654,815,830,997,1152,1300,1390 
+
+# Defines for Function Call Logger 
+FC_LOGGER_DEFINES=
+
+#------------
+# OE Options
+#------------
+
+# Options to export all the globol symbols and import undefined references, required by OE
+OE_OPTIONS=-fvisibility=default
+
+# OE Glue code libs
+OE_EXE_LIBS=libcrt0.lib
+OE_EXE_LIBS_WCHAR=libwcrt0.lib
+
+# OE Import Libs
+OE_IMPORT_LIBS=euser.lib
+
+# The library that contains operator new and operator delete.
+OE_NEW_LIB=stdnew.dso
+
+#-----------------------------------------------------------------------------------------------------
+#This section defines the interface with Symbian tools 
+#This SHOULD NOT be changed as any changes in this section will not be picked up by the tools back end
+#-----------------------------------------------------------------------------------------------------
+
+# Programs used from the ToolChain
+export  CC
+export  LD
+export  ASM
+export  AR
+export  TRANASM
+
+# Preprocessor Options
+export  PREFIXFILE
+export  CPP_LANG_OPTION
+export  C_LANG_OPTION
+export  CIA_LANG_OPTION
+
+# Option Prefix
+export OPTION_PREFIX
+
+# Compiler Options
+export	PREPROCESSOR_OPTION
+export  ASSEMBLER_LISTING_OPTION
+export  ASM_OUTPUT_OPTION
+export  INCLUDE_OPTION
+export  PREINCLUDE_OPTION
+export  HEADER_FILES_CONTROL_OPTION
+export  COMPILER_INCLUDE_PATH
+export  SYMBIAN_UREL_CCFLAGS
+export  SYMBIAN_UDEB_CCFLAGS
+export  REL_OPTIMISATION
+export  DEBUG_OPTIMISATION
+export  ARM_OPTIONS
+export  THUMB_OPTIONS
+export  COMMON_OPTIONS
+export  INVARIANT_OPTIONS
+export  KERNEL_OPTIONS
+export  COMPILER_THUMB_DEFINES
+export  COMPILER_INTERWORK_DEFINES
+export  SOFTVFPMODE_OPTION
+export  VFP2MODE_OPTION
+export  RUNTIME_SYMBOL_VISIBILITY_OPTION
+export  OUTPUT_OPTION
+export  CCFLAGS
+export  UNIX_SLASH_FOR_CC_ABS_PATHS
+export  EXCEPTIONS
+export  NO_EXCEPTIONS
+export 	VERSION_INFO
+
+# Linker Options
+export  LINKER_OUTPUT_OPTION
+export  LINKER_DEBUG_OPTION
+export  LINKER_NODEBUG_OPTION
+export  CODE_SEGMENT_START
+export  DATA_SEGMENT_START
+export  UNDEFINED_SYMBOL_REF_OPTION
+export  LINKER_ENTRY_OPTION
+export  START_GROUP_SYMBOL
+export  END_GROUP_SYMBOL
+export  SHARED_OBJECT_OPTION
+export  STDLIB_OPTION
+export  STATIC_LIBS_LIST
+export  STATIC_LIBS_PATH
+export 	STATIC_LIBRARY_PATH
+export  STATIC_LIBS
+export  RUNTIME_LIBS_LIST
+export  RUNTIME_LIBS_PATH
+export  SYM_NEW_LIB
+export  SYMVER_OPTION
+export  SO_NAME_OPTION
+export  LINKER_SYMBOLS_MAP_OPTION
+export  COMMANDFILE_OPTION
+export	VIA_FILE_PREFIX
+export	VIA_FILE_SUFFIX
+export  SYMBIAN_UREL_LINK_FLAGS
+export  SYMBIAN_UDEB_LINK_FLAGS
+export  LD_OPTIONS
+
+# Archiver Options
+export  ARCHIVER
+export  ARCHIVER_CREATE_OPTION
+export  AR_OPTIONS
+
+# Compiler Specific Defines
+export  COMPILER_DEFINES
+export  COMPILER_PLAT
+
+# Platform Specific Defines
+export  PLATFORM_DEFINES
+
+# Translator Options
+export  TRANASM_FLAGS
+export  TRANASM_OUTPUT_OPTION
+export  TRANASM_INPUT_OPTION
+
+# Function Call Logger options
+export PREINCLUDE_OPTION_FCLOGGER
+export FC_LOGGER_OPTION
+export FC_LOGGER_DEFINES
+export FC_LOGGER_INCLUDE_OPTION
+export FC_LOGGER_DICTIONARY_FILE_NAME
+export FC_LOGGER_GENERATED_C_FILE_NAME
+
+#OE Options
+export OE_OPTIONS
+export OE_EXE_LIBS
+export OE_EXE_LIBS_WCHAR
+export OE_IMPORT_LIBS
+export OE_NEW_LIB
+
+#-----------------------------------------------------------------------------------------------------
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/GCCEV6.bsf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for the ARMV6 architecture.
+
+CUSTOMIZES GCCE
+
+INVARIANT_OPTIONS -march=armv6 -mapcs -mthumb-interwork
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/GCCEV6T2.bsf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for the ARMV6T2 architecture.
+
+CUSTOMIZES GCCE
+
+INVARIANT_OPTIONS -march=armv6t2 -mapcs -mthumb-interwork
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/GCCEV7.bsf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for the ARMV7-A architecture.
+
+CUSTOMIZES GCCE
+
+INVARIANT_OPTIONS -march=armv7-a -mapcs -mthumb-interwork
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/armutl.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,180 @@
+# Copyright (c) 2002-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:
+# this package does various ancillary things for armedg modules
+# 
+#
+
+package Armutl;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	Armutl_Help_Mmp
+
+	Armutl_DoMmp
+
+	Armutl_ArmIncDir
+	Armutl_ArmLibList
+	Armutl_ArmRT
+	Armutl_AsmFileList
+	Armutl_ArmVersion
+	Armutl_RVCTMajorVersion
+	Armutl_RVCTMinorVersion
+	Armutl_RVCTPatchLevel
+	Armutl_RVCTBuildNumber
+	Armutl_ArmLibDir
+);
+
+use RVCT_plat2set;
+
+my $ArmInc='';
+my @ArmLibList=();
+my $ArmRT=0;
+my @AsmFileList=();
+
+# make sure that some of the tool subroutines  still work in case of Plat() does not exists in namespace main
+my $Plat = main::Plat() if defined &main::Plat;
+
+my ($RVCTMajorVersion, $RVCTMinorVersion, $RVCTBuildNumber) = RVCT_plat2set::get_version_list($Plat);
+
+my $RVCTVersion = "$RVCTMajorVersion.$RVCTMinorVersion";
+my $RVCTPatchLevel = 0;
+
+
+sub Armutl_Help_Mmp {
+# provide the help text for START <armedg platforms> END blocks
+
+	print
+		"ARMINC  // include value of RVCT*INC environment variable to search paths\n",
+		"ARMLIBS // list the ARM supplied libraries to be linked against\n",
+		"ARMRT   // indicates this target froms part of the runtime and so\n",
+                "        // shouldn't be linked against itself or other runtime libs\n",
+	        "ARMNAKEDASM // list .cpp files subject to auto-translation from GCC inline asm to ARM embedded asm\n"
+	;
+}
+
+sub Armutl_DoMmp (@) { # takes platform text
+	my @PlatTxt=@_;
+
+	my $BaseTrg=&main::BaseTrg;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $MakeFilePath=&main::MakeFilePath;
+	my $MMPFILE=&main::MmpFile;
+	my @UidList=&main::UidList;
+
+	# set up START ARMV5|THUMB2 ... END block module variables
+	my @MmpWarn=();
+	my $Line;
+
+	LINE: foreach $Line (@PlatTxt) {
+		my $LineInfo=shift @$Line;
+		$_=shift @$Line;
+		if (/^ARMINC$/o) {
+			$ArmInc = RVCT_plat2set::get_inc_path($Plat);
+			next LINE;
+		}
+		if (/^ARMRT$/o) {
+		    $ArmRT = 1;
+		    next LINE;
+		}
+		if (/^ARMLIBS$/o) {
+			my $LibVar = "RVCT${RVCTMajorVersion}${RVCTMinorVersion}LIB";
+			my $ArmLibDir = RVCT_plat2set::get_lib_path($Plat);
+
+			push @MmpWarn, "$LineInfo : No libraries specified for keyword ARMLIBS\n" unless @$Line;
+
+			while (@$Line) {
+			  my $lib = shift @$Line;
+
+              my $lib_path = RVCT_plat2set::find_lib( $Plat, $lib );
+
+              if ($lib_path)
+              {
+				  push @ArmLibList, $lib_path;
+              }
+              else
+              {
+				  push @MmpWarn, "$LineInfo : arm library file $lib not found.\n" ;
+              }
+			}
+			next LINE;
+		      }
+		if (/^ARMNAKEDASM$/o) {
+		    push @MmpWarn, "$LineInfo : No files specified for keyword ARMNAKEDASM\n" unless @$Line;
+		    push @AsmFileList, @$Line;
+		    next LINE;
+		}
+		push @MmpWarn, "$LineInfo : Unrecognised Keyword \"$_\"\n";
+	}
+
+	undef $Line;
+	if (@MmpWarn) {
+		warn
+			"\nMMPFILE \"$MMPFILE\"\n",
+			"START .. END BLOCK WARNINGS(S)\n",
+			@MmpWarn,
+			"\n"
+		;
+	}
+	undef @MmpWarn;
+    }
+
+sub Armutl_ArmIncDir() {
+    $ArmInc;
+}
+
+sub Armutl_ArmLibList() {
+    @ArmLibList;
+}
+
+sub Armutl_ArmRT() {
+    $ArmRT;
+}
+
+sub Armutl_AsmFileList() {
+    @AsmFileList;
+}
+
+sub Armutl_ArmVersion() {
+  return $RVCTVersion;
+}
+
+sub Armutl_RVCTMajorVersion() {
+  return $RVCTMajorVersion;
+}
+
+sub Armutl_RVCTMinorVersion() {
+  return $RVCTMinorVersion;
+}
+
+sub Armutl_RVCTPatchLevel() {
+  return $RVCTPatchLevel;
+}
+
+sub Armutl_RVCTBuildNumber() {
+  return $RVCTBuildNumber;
+}
+
+sub Armutl_ArmLibDir() {
+  my $LibVar = "RVCT${RVCTMajorVersion}${RVCTMinorVersion}LIB";
+  my $ArmLibDir = $ENV{$LibVar};
+  return $ArmLibDir;
+}
+
+1;
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/bpabiutl.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,141 @@
+# 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:
+# This package  does various ancillary things for BPABI (Base Platform ABI) platforms
+# 
+#
+
+package BPABIutl;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	BPABIutl_Plat_List
+	BPABIutl_Config_Path
+	BPABIutl_Get_Config_Variables
+);
+
+use E32Variant;
+require E32Plat;
+
+my %ConfigPath;
+my $variantABIV2Keyword = &Variant_GetMacro();
+
+sub BPABIutl_Plat_List {
+
+# Identify the BPABI platforms to be supported based on the compiler configuration files
+# present in the location specified by the environment variable "SYMBIAN_COMPILATION_CONFIG_DIR"
+# and in the directory $EPOCROOT\epoc32\tools\compilation_config
+
+	my @CompilerConfigPath;
+
+	if (exists($ENV{'SYMBIAN_COMPILATION_CONFIG_DIR'})) 
+	{
+		my $Path = $ENV{SYMBIAN_COMPILATION_CONFIG_DIR};
+		@CompilerConfigPath = split(/;/, $Path);
+	}
+
+	push @CompilerConfigPath, "$ENV{EPOCROOT}epoc32\\tools\\compilation_config";
+
+	my $ConfigDir;
+	my @BPABIPlats = ();
+
+	foreach $ConfigDir (@CompilerConfigPath)
+	{
+		opendir DIR, "$ConfigDir";
+		my @Plats=grep /\.mk$/i, readdir DIR;
+		my $Plat;
+		foreach $Plat (@Plats) 
+		{
+# The platform name will be same as the name of the configuration file <config.mk>
+# with the suffix '.mk' removed
+			$Plat =~ s/\.mk//;
+			if ($variantABIV2Keyword) {
+				if ($Plat =~ /^armv5_abiv2$/i) {
+					$Plat = "ARMV5";
+				}
+			}
+			else {
+				if ($Plat =~ /^armv5$/i) {
+					$Plat = "ARMV5_ABIV2";
+				}
+			}
+			unless (grep /$Plat$/i, @BPABIPlats) {
+				$Plat = uc $Plat;
+				push @BPABIPlats, $Plat;
+				if (!$variantABIV2Keyword && $Plat =~ /^ARMV5_ABIV2$/i) {
+					$ConfigPath{$Plat} = "$ConfigDir\\ARMV5.mk";
+				}
+				else {
+					$ConfigPath{$Plat} = "$ConfigDir\\$Plat.mk";
+				}
+			}
+		}
+	}
+	closedir DIR;
+	return @BPABIPlats;
+}
+
+sub BPABIutl_Config_Path($) {
+	my ($plat) = @_;
+# Returns the Path of the compiler configuration file
+	if (!keys(%ConfigPath))
+	{
+	    # Running for first time so initialise ConfigPath
+	    BPABIutl_Plat_List();
+	}
+	if (!$ConfigPath{$plat})
+	{
+		# Get the root platform name to support hierarchy of customizations
+		my $CustomizedPlat =  &E32Plat::Plat_Root($plat);
+
+# In default ABIV1 mode, the platform name for v2 mode of ARMV5 is ARMV5_ABIV2
+		if ( !$variantABIV2Keyword && $CustomizedPlat =~ /^ARMV5$/i ){
+			$ConfigPath{$plat} = $ConfigPath{ARMV5_ABIV2};
+		}
+
+# In default ABIV2 mode, the platform name for v2 mode of ARMV5 is ARMV5
+		elsif ( $variantABIV2Keyword && $CustomizedPlat =~ /^ARMV5$/i) {
+			$ConfigPath{$plat} = $ConfigPath{ARMV5};
+		}
+		else{
+			$ConfigPath{$plat}=$ConfigPath{$CustomizedPlat};
+		}
+	}
+	return "$ConfigPath{$plat}";
+}
+
+# routine to extract a set of variables from the compilation configuration
+# file. The variables extracted are determined by the extractvars.make file.
+# The variables are returned in a hash.
+sub BPABIutl_Get_Config_Variables
+{
+    my ($plat) = @_;
+    my $configfile = BPABIutl_Config_Path($plat);
+    my $extractvars = "$ENV{EPOCROOT}epoc32\\tools\\compilation_config\\extractvars.make";
+    my $command = "make CONFIG_FILE=$configfile -s -f $extractvars" ;
+    my $result = `$command`;
+    my %vars;
+    my @lines = split('\n', $result);
+    foreach my $line (@lines)
+    {
+	chomp $line;
+	if ($line =~ /(\w+)=(.*)/)
+	{
+	    $vars{$1} = $2;
+	}
+    }
+    return %vars;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_arm.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,2046 @@
+# 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:
+#
+
+
+package Cl_arm;
+
+my $ToolPrefix='';
+my %PlatOpt=(
+	'Dlltool'=>'',
+	'Entry'=>'-e',
+	'Ld'=>'',
+	'Elftran'=>'',
+);
+
+# takes an 'expression'  to evaluate with $_ bound to each of the 
+# remaining args
+sub PrintList
+{
+    my $expr = shift @_;
+    foreach (@_) {
+	my $str = eval($expr);
+	&main::Output($str);
+    }
+}
+
+# specify floating point model here
+my $floatingpointmodel = "softvfp";
+
+if (&main::ARMFPU && (&main::ARMFPU =~ /^VFPV2$/i)) {
+	$floatingpointmodel = "vfpv2";
+}
+
+my $Archive;
+my $Link;
+my $Objcopy;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+
+	PMPlatProcessMmp
+	
+	PMStartBldList
+		PMBld
+	PMStartSrcList
+		PMBitMapBld
+		PMResrcBld
+		PMStartSrc
+		PMAifBld
+		PMSrcDepend
+			PMSrcBldDepend
+			PMEndSrcBld
+		PMEndSrc
+	PMEndSrcList
+	PMPrefixFile
+	PMSupportsFeatureVariants
+);
+
+use Cwd;
+use Armutl;
+use RVCT_plat2set;
+use cl_generic;
+use E32env;
+use Genutl;
+
+use constant NOCOMPRESSIONMETHOD => 0;
+use constant INFLATECOMPRESSIONMETHOD => 1;
+use constant BYTEPAIRCOMPRESSIONMETHOD => 2;
+
+use constant NON_DEBUGGABLE => 0;
+use constant DEBUGGABLE => 1;
+use constant DEBUGGABLE_UDEBONLY => 2;
+
+use constant NOTPAGED => 0;
+use constant UNPAGED => 1;
+use constant PAGED => 2;
+
+sub PMHelp_Mmp {
+    &Armutl_Help_Mmp;
+}
+
+my $Plat=main::Plat();
+
+my ($RVCTMajorVersion, $RVCTMinorVersion, $RVCTBuildNumber) = RVCT_plat2set::get_version_list($Plat); 
+
+my $RVCTVersion = "${RVCTMajorVersion}_${RVCTMinorVersion}";
+
+my $ARMCCVersion = "${RVCTMajorVersion}${RVCTMinorVersion}0${RVCTBuildNumber}";
+
+my $oP = '--';
+$oP = '-' if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2);
+
+#Check if Function call Logger is enabled
+my $Function_Call_Logger=&main::IsFunctionCallLogging();
+
+# Get the information regarding supporting Compiler Wrapper Option
+my $IsCompilerWrapperOption=&main::CompilerWrapperOption();
+
+#Check the existence of elf2e32.exe in the system path
+my $IsExistELF2E32EXE = 0;
+    open ELF2E32PIPE, "elf2e32 2>&1 |";
+    while (<ELF2E32PIPE>) {
+	if($_=~/^Symbian Post Linker\, Elf2E32/) {
+	    $IsExistELF2E32EXE = 1;
+	    last;
+	}
+	next;
+    }
+    close ELF2E32PIPE;
+
+my $ArmIncDir;
+my @ArmLibList;
+my $ArmRT = 0;
+my %AsmFiles = ();
+my %AsmDirs = ();
+my $oe_options = '';
+my $NamedSymLkup = 0;
+my $symNameLkupOpt = '';
+
+
+sub PMPlatProcessMmp (@) {
+        &Armutl_DoMmp(@_);
+	$ArmIncDir = RVCT_plat2set::get_inc_path($Plat);
+	&main::SetStdIncPaths($ArmIncDir);
+	@ArmLibList = &Armutl_ArmLibList;
+	$ArmRT = &Armutl_ArmRT;
+	my @AsmFileList = &Armutl_AsmFileList;
+	foreach (@AsmFileList) { $AsmFiles{ucfirst lc $_} = 1; }
+}
+
+sub SysTrg () {
+	return 1 if &main::SystemTrg;
+	my $ExportLibrary=&main::ExportLibrary;
+	return 1 if ($ExportLibrary =~ /EKERN/i);
+	my $Trg=&main::Trg;
+	return 1 if ($Trg =~ /KSRT/i);
+	return 0;
+}
+
+my $RVCT20 = 0; 
+
+# suppress these warnings & errors
+#Warning: #66-D: enumeration value is out of "int" range 
+# "EUSER\CBASE\Ub_act.cpp", line 20: Warning:  #161-D: unrecognized #pragma
+# 611: overloaded virtual function "entity" is only partially overridden in <entitykind> "entity"
+# "EUSER\CBASE\Ub_act.cpp", line 256: Warning:  #654-D: declaration modifiers are incompatible with previous declaration
+# 997: <entity-kind> "entity" is hidden by "entity" -- virtual function override intended?
+# "EPOC32\include\s32stor.h", line 354: Error:  #1152-D: polymorphic base classes need to be exported as well
+# "INCLUDE\e32base.h", line 31: Warning:  #1300-D: ~CBufBase inherits implicit virtual
+#"COMPSUPP\\RVCT2_1\\Dfpaeabi.cpp", line 87: Warning: A1488W: PROC/FUNC at line 9 without matching ENDP/ENDFUNC
+#"COMPSUPP\\RVCT2_1\\Dfpaeabi.cpp", line 85: Warning: A1464W: ENDP/ENDFUNC without corresponding PROC/FUNC
+#Warning: L6318W: _integrator_cm1136_ekern.in(.text) contains branch to a non-code symbol FindMostSignificantOne(unsigned long).
+
+my $diag_suppressions = '--diag_suppress 66,161,611,654,997,1152,1300,1464,1488,6318,6331';
+
+# downgrade from errors to warnings
+my $diag_warnings = '';
+
+# upgrade from warnings to errors
+# Warning:  #1267-D: Implicit physical register R0 should be defined as a variable
+my $diag_errors = '--diag_error 1267';
+  
+my $commonOptions = $RVCT20 ?
+  "$diag_suppressions $diag_warnings $diag_errors" :
+  "$diag_suppressions $diag_warnings $diag_errors";  
+
+my @mmpOption = &main::ReplaceOptions("ARMCC");
+my $CompilerOption = &main::CompilerOption("ARMCC");
+my $contingentOptions;
+my $thumbOptions = $RVCT20 ? '-thumb' : '--thumb ';
+my $armOptions = $RVCT20 ? '-arm' : '--arm ';
+my $kernelOptions = $RVCT20 ? '-arm' : '--arm --no_exceptions --no_exceptions_unwind';
+my $invariantOptions = $RVCT20 ? 
+  '-cpu 5T --enum_is_int -Ono_known_library --export_vtbl -apcs /inter' :
+  '--cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter';
+$invariantOptions .= ' --dllimport_runtime' unless ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2);  
+my $exceptions = $RVCT20 ? '' : ' --exceptions --exceptions_unwind';
+my $floatingpoint = $RVCT20 ? '' : ' --fpu '.$floatingpointmodel.'';
+my @FCLogger_Macros; # Macros required to be passed to the FCLogger
+
+my $useLinkerFeedBack = 0;
+
+sub LinkerFeedBackFile() {
+  return unless $useLinkerFeedBack;
+  my $Trg = &main::Trg;
+  return "$Trg.lfb";
+}
+
+sub LinkerFeedBackOption() {
+  return "" unless $useLinkerFeedBack;
+  my $BasicTrgType=&main::BasicTrgType;
+  return "" unless ($BasicTrgType=~/^(DLL|EXE)/o);
+  my $file = LinkerFeedBackFile();
+  return "--feedback $file ";
+}
+
+my %BSF_keywords = (
+		    COMMON_OPTIONS => 1,
+		    THUMB_OPTIONS => 1,
+		    ARM_OPTIONS => 1,
+		    KERNEL_OPTIONS => 1,
+		    INVARIANT_OPTIONS => 1
+		   );
+
+sub Read_BSF_Options() {
+        my %plat = (main::PlatRec());
+	my @Customization_Data = split(/\n/,$plat{'CUSTOMIZATION_DATA'});
+	foreach my $option (@Customization_Data) {
+			next if ($option =~ /^$/);
+	        warn "Unrecognized BSF syntax: $option.\n"
+		        unless ($option =~ /\s*(\S+)\s+(.+)$/);
+		my $key = uc $1;
+		my $val = $2;
+	        warn "Unrecognized BSF keyword: $key.\n"
+		        unless ($BSF_keywords{$key});
+		if ($key =~ /COMMON_OPTIONS/) {
+		        Set_BSF_Options(\$commonOptions,$val);
+			next;
+		}
+		if ($key =~ /THUMB_OPTIONS/) {
+		        Set_BSF_Options(\$thumbOptions,$val);
+			next;
+		}
+		if ($key =~ /ARM_OPTIONS/) {
+		        Set_BSF_Options(\$armOptions,$val);
+			next;
+		}
+		if ($key =~ /KERNEL_OPTIONS/) {
+		        Set_BSF_Options(\$kernelOptions,$val);
+			next;
+		}
+		if ($key =~ /INVARIANT_OPTIONS/) {
+		        Set_BSF_Options(\$invariantOptions,$val);
+			next;
+		}
+
+	}		
+}
+
+# Set the options passed from BSF file 
+# @param OptionName    - BSF Keyword using which the options would be overridden in the BSF file
+# @param Options       - List of options read from the BSF keyword
+sub Set_BSF_Options($$)
+{
+	my ($OptionName,$Options) = @_;
+	my @Fragments=();
+	
+	# Check if the value of BSF option is to be set or added/removed.
+	if($Options =~ /\+\[.*\]\+|\-\[.*\]\-/)
+	{
+		if (@Fragments = Split_BSF_Options($Options,'RemoveOptions'))
+		{
+			foreach my $Opt (@Fragments) 
+			{
+				# Remove trailing white spaces
+				$Opt =~ s/\s+$//;				
+				$$OptionName =~ s/$Opt//g;
+			}					
+			@Fragments=();
+		}
+		if (@Fragments = Split_BSF_Options($Options,'AddOptions')) 
+		{
+			$$OptionName .= " @Fragments";
+			@Fragments=();
+		}		
+		
+		# Warn if options are not present in the form '+[...]+' or '-[...]-'
+		$Options =~ s/\+\[.*?\]\+|\-\[.*?\]\-//g;
+		if($Options !~ /^\s*$/)
+		{
+			print "Warning: Ignoring option(s) \"$Options\" specified in BSF as option(s) should be in the form '+[...]+' or '-[...]-.\n";
+		}
+	}
+	else
+	{
+		$$OptionName = $Options;
+	}		
+	
+	&main::Output(					
+		"\n"
+	);
+}
+
+# Split BSF options to find options which are to be added/removed
+# @param String      - List of options present in form '+[...]+' or '-[....]-'
+# @param $Task       - Variable to decide whether to return options to be addded or options to be removed
+sub Split_BSF_Options($$)
+{
+	my ($String,$Task) = @_;
+    my @Result = ();
+	my @Fragments = ();
+	my $Pattern = '';
+		
+	if ($Task eq 'AddOptions')
+	{
+		# Get the options which are to be added (present in the form '+[...]+')
+		@Fragments = $String =~ /\+\[(.*?)\]\+/g;	
+	}
+	elsif ($Task eq 'RemoveOptions') 
+	{
+		# Get the options which are to be removed (present in the form '-[...]-')
+		@Fragments = $String =~ /\-\[(.*?)\]\-/g;
+	}	
+
+	# Set the value of '$Pattern' which is required to segregate one option from another based on the option prefix.
+	# Option prefix for RVCT can be '-' or '--'.
+	$Pattern = '-{1,2}\S+\s*(?!-)\S*';	
+
+	foreach my $Val (@Fragments) 
+	{
+		my @Opt = $Val =~ /$Pattern/g;
+		push @Result,@Opt;		 		
+	}
+	return @Result;	
+}
+
+sub ComputeCompilerOpts() {
+	my %plat = &main::PlatRec();
+	Read_BSF_Options() if ($plat{'CUSTOMIZES'});
+	my $ABI=&main::ABI;
+	my $TrgType=&main::TrgType;
+	if (SysTrg()) {
+	        $contingentOptions = $kernelOptions.$floatingpoint;
+        } elsif (main::BuildAsARM() or ($ABI eq 'ARMV4')) {
+	        $contingentOptions = $armOptions.$floatingpoint.$exceptions;
+	    } else {
+			$contingentOptions = $thumbOptions.$floatingpoint.$exceptions.' -D__MARM_THUMB__';	
+			push @FCLogger_Macros, '__MARM_THUMB__';
+	}
+	# support for ARMV4
+	my $invopts = "$invariantOptions";
+	if ($ABI eq 'ARMV4') {
+		$invopts =~ s/5T/4/;
+		$invopts =~ s/inter/nointer/;
+	} else {
+		$contingentOptions .= ' -D__MARM_INTERWORK__';
+		push @FCLogger_Macros, '__MARM_INTERWORK__';
+	}
+
+	#Options to export all the external symbols for OE DLL , OE Exe and OE Static Lib
+	if ($TrgType=~/^STDDLL$/o || $TrgType=~/^STDEXE$/o || $TrgType=~/^STDLIB$/o) {
+		$oe_options=' --no_hide_all';
+	}
+
+	return $commonOptions.' '.$contingentOptions.' '.$invopts.' '.$oe_options.' '.&main::CompilerOption("ARMCC");
+}
+
+my $Makecmd;
+
+sub PMStartBldList($) {
+	($Makecmd) = @_;
+	my $ABI=&main::ABI;
+	my $BaseTrg=&main::BaseTrg;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @BldList=&main::BldList;
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $DefFile=&main::DefFile;
+	my $EPOCPath=&main::EPOCPath;
+	my $LinkAs=&main::LinkAs;
+	my $LibPath=&main::LibPath.'LIB\\';
+	my @MacroList=&main::MacroList();
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__";
+
+	my $VariantFile=&main::VariantFile();
+
+	my $Plat=&main::Plat;
+	my $Trg=&main::Trg;
+	if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+		if ($BasicTrgType=~/^LIB$/o) {
+			# Temporary Workaround for RVCT2.1 static libs problem with RVCT2.2 builds
+			# Rename all the static libs produced with RVCT2.1 as {libname}2_1.lib
+		        if ($Trg=~/^\s*(\S+)(\.lib)$/io) {
+			        if ($1!~/$RVCTVersion/i) {
+				        $Trg=$1.$RVCTVersion.".lib";
+				}
+			}
+			if ($BaseTrg!~/$RVCTVersion/i) {
+			        $BaseTrg .= $RVCTVersion;
+			}
+		}
+	}
+
+	my $TrgType=&main::TrgType;
+	my @UidList=&main::UidList;	
+    my $SystemTrg = &main::SystemTrg;
+    my $ExportLibrary=&main::ExportLibrary;
+    my $NoExportLibrary=&main::NoExportLibrary;
+    # N.B. should get better way to detect kernel probably!!
+    $SystemTrg = 1 if ($ExportLibrary =~ /EKERN/i);
+	
+    # N.B. should get better way to detect this
+    $SystemTrg = 1 if ($Trg =~ /KSRT/i);
+
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	my $PrimaryExportLibrary = $ExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+		$PrimaryExportLibrary = $ExtraExportLibrary;
+	}
+
+#	set up LinkAs
+	$UidList[2]=~/^0x(.*)$/o;
+	if ($1 ne '00000000') { # have to make sure than series of noughts in brackets doesn't appear in name for null uids
+		$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+	}
+
+#	work out the flags for various platforms
+	unless ($ABI eq 'ARMV5' or $ABI eq 'ARMV4') {
+		&main::FatalError("Platform module - ABI \"$ABI\" unrecognised");
+	}
+	my $ComputeCompilerOpts=ComputeCompilerOpts();
+	if (@mmpOption) 
+	{
+		my $pattern = '-{1,2}\S+\s*(?!-)\S*';	
+		foreach my $options (@mmpOption) 
+		{
+			my @opts = $options =~ /$pattern/g;
+			my $count = 0;
+			while ($count <= $#opts) 
+			{
+				my $opt;
+				my $rep;
+				if ($opts[$count] =~ /^(\S+)\s+(\S+)$/) 
+				{
+					$opt = $1;
+					$rep = $2;
+					$ComputeCompilerOpts =~ s/$opt\s+\S+\s+/ $opt $rep /g;
+					$count++;
+				}
+				else
+				{
+					$opt = $opts[$count];
+					$rep = $opts[$count+1];
+					$ComputeCompilerOpts =~ s/$opt/$rep/g;					
+					$count+=2;
+				}
+			}		
+		}
+	}
+
+	$PlatOpt{Arm} = $ComputeCompilerOpts;
+
+	my $InterWorking = ($ABI eq 'ARMV4') ? "" : "--inter";
+
+	$Archive=$ToolPrefix.'armar';
+	$Link=$ToolPrefix."armlink ${oP}diag_suppress 6331,6780 ";
+	$Objcopy=$ToolPrefix.'objcopy';
+
+	&Generic_Header(0,$Makecmd);	# define standard things using absolute paths
+		 
+	if ($Makecmd eq "nmake") {
+		&main::Output(
+			"\n",
+  			"PATH=",&main::Path_Drive,$EPOCPath,"gcc\$(PBUILDPID)\\bin;\$(PATH)\n",
+			"\n"
+		);
+	}
+	else {
+		&main::Output(
+			"\n",
+			"# must set both PATH and Path to make it work correctly\n",
+  			"Path:=",&main::Path_Drive,$EPOCPath,"gcc\$(PBUILDPID)\\bin;\$(Path)\n",
+			"PATH:=\$(Path)\n",
+			"\n"
+		);
+	}
+
+	&main::Output(
+		"INCDIR  ="
+	);
+	PrintList("\" -J \$_\"", @ChopUserIncPaths);
+	PrintList("\" -J \$_\"", @ChopSysIncPaths);
+	if ($ArmIncDir) {
+		&main::Output(
+		    " -J \"$ArmIncDir\" ",
+		);	
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	#Function Call Logger
+	if ($Function_Call_Logger)	{
+		&main::Output(
+			"INCDIR_FCLOGGER  ="
+		);
+		PrintList("\" -I \$_\"", @ChopUserIncPaths);
+		PrintList("\" -I \$_\"", @ChopSysIncPaths);
+		if ($ArmIncDir) {
+			&main::Output(
+				" -I \"$ArmIncDir\" "
+			);	
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+	
+	&main::Output(
+		"ARMCCFLAGS=$PlatOpt{Arm} -c\\\n",
+		"\n"
+	);
+
+	&main::Output(
+		"ARMCCDEFS = "
+	);
+	PrintList("\" -D\$_\"", @MacroList);
+	
+	if($VariantFile) {
+		if ($Function_Call_Logger) {
+			#FC Logger accepts product include file without path
+			my $file=&main::Path_Split('File', ${VariantFile});
+			
+			&main::Output(
+				" -D\"__PRODUCT_INCLUDE__=\\\"${file}\\\"\""
+			);
+		}
+		else {
+			&main::Output(
+				" -D__PRODUCT_INCLUDE__=\\\"${VariantFile}\\\""
+			);
+		}
+	}
+
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+
+	if ($TrgType=~/^STDDLL$/o || $TrgType=~/^STDEXE$/o){
+#	For now, named symbol lookup is enabled only for the STD binaries. Later, it may be enabled based on an mmp 
+#	keyword.
+
+		$NamedSymLkup = 1;
+		$symNameLkupOpt = '--sym_name_lkup';
+	}
+
+
+
+	foreach (@BldList) {
+		&main::Output(
+			"ARMCC$_ = armcc"
+		);
+		if(&main::DebugSwitchUsed() ) {
+#			when the debug switch is specified and enabled, set the compiler's debug flag for both udeb or urel.
+#			when the debug switch is disabled, don't set the compiler's debug flag for either udeb or urel.
+#			The optimization option is set only based on the build i.e., Udeb or Urel and is independent of
+#			whether debug is enabled or not. This might give a poorer debug view for debug-enabled Urel build.
+			if(&main::SymbolicDebugEnabled() ) {
+				&main::Output(
+						  ' -g'
+				);
+			}
+		}
+		elsif (/DEB$/o) {
+			&main::Output(
+				      ' -g'
+			);
+		}
+
+		if (/DEB$/o) {
+			&main::Output(
+				      ' -O0'
+			);
+		}
+		else {
+			&main::Output(
+				      ' -O2'
+			);
+		}		
+		&main::Output(
+			' $(ARMCCFLAGS)'
+		);
+		my @ml = &main::MacroList($_);
+		PrintList("\" -D\$_\"", @ml);
+		&main::Output(
+			" \$(ARMCCDEFS)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	#Function call logger
+	if ($Function_Call_Logger)	{
+		#Send all the debug macros to logger
+		foreach (@BldList) {
+			&main::Output (
+				"FCLOGGER$_ = ",
+				$EPOCPath, 
+				"tools\\fc_logger\\edgcpfe"
+			);
+
+			my @ml = &main::MacroList($_);
+			push @ml, "__ARMCC_VERSION=$ARMCCVersion";
+			PrintList("\" -D\$_\"", @ml);
+			&main::Output(
+				" \$(ARMCCDEFS)"
+			);
+			PrintList("\" -D\$_\"", @FCLogger_Macros);
+			&main::Output(
+				"\n",
+				"\n"
+			);
+		}
+	}
+	
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+
+		if ($BasicTrgType !~ /IMPLIB/io) {
+			&main::Output (
+				" \\\n\t",
+				&Generic_Quote("\$(EPOCTRG$_)\\".&main::Trg($_))
+			);
+		}
+
+#		lib has to come after the main target so that a .DEF file will be generated if the project is not frozen
+		if ($DefFile and not &main::ExportUnfrozen) {
+			&main::Output(
+				" \\\n",
+				"\tLIBRARY\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	# Resource building is done entirely via cl_generic.pm
+	PrintList("\"\nRESOURCE\$_ : MAKEWORK\$_\"", @BldList);
+	&main::Output(
+		"\n",
+		"\n",
+	);
+
+	&main::Output(
+		"LIBRARY : MAKEWORKLIBRARY"
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+#		code to ensure that the static libraries for all builds are built at the library stage
+	        PrintList("\" \$_\"", @BldList);
+	}
+	elsif ($DefFile and !$NoExportLibrary) {
+		unless (&main::ExportUnfrozen) {
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				&main::Output(
+					" ", &Generic_Quote("\$(EPOCLIB)\\LIB\\$PrimaryExportLibrary.lib"),
+				);
+				# if elf2e32.exe(postlinker) exists, then generate .dso along with .lib
+				if ($IsExistELF2E32EXE) {
+					&main::Output(
+						" ", &Generic_Quote("\$(EPOCLIB)\\LIB\\$PrimaryExportLibrary.dso"), "\n"
+					);
+				}
+				else {
+					&main::Output("\n");
+				}
+			}
+			else {
+				&main::Output(
+					"\n",
+					"\t\@echo WARNING: Not attempting to create any import libraries.\n",
+					"\t\@echo When exports are frozen in \"$DefFile\", regenerate Makefile.\n"
+				);
+			}
+		} else {
+			&main::Output(
+				"\n",
+				"\t\@echo Not attempting to create \"\$(EPOCLIB)\\LIB\\$PrimaryExportLibrary.lib\"\n",
+				"\t\@echo from frozen .DEF file, since EXPORTUNFROZEN specified.\n"
+			);
+		}
+
+		my $theDefFile = $DefFile;
+		$theDefFile = "\$(EPOCBLD)\\$BaseTrg.def" unless (-e $DefFile);
+		&main::Output(
+			"\n",
+			"\n",
+			"# REAL TARGET - LIBRARY\n",
+			"\n",
+			&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.lib"), " : ",
+			&Generic_Quote($DefFile), "\n",
+				"\tperl -S prepdef.pl ", &Generic_Quote($DefFile), " \"\$(EPOCBLD)\\$ExportLibrary.prep.def\"\n",
+				"\tdef2dll.bat --path=\$(EPOCLIB)\\LIB \\\n\t\t--bldpath=\$(EPOCBLD) \\\n\t\t--import=$ExportLibrary \\\n",
+			"\t\t--deffile=\"\$(EPOCBLD)\\$ExportLibrary.prep.def\" \\\n\t\t--linkAs=$LinkAs \\\n\t\t$InterWorking\n",
+			"\n",
+		 );
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\n",
+				&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.lib"), " : ",
+				&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.lib"), "\n",
+				"\tcopy \"\$<\" \"\$@\"\n"
+			);
+		}
+		#if elf2e32.exe(postlinker) exists, then generate .dso(which will be used by ABIV2 platforms)
+		if ($IsExistELF2E32EXE) {
+			&main::Output(
+				"\n",
+				&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.dso"), " : ",
+				&Generic_Quote($DefFile), "\n",
+					"\telf2e32 --definput=\"\$(EPOCBLD)\\$ExportLibrary.prep.def\" --dso=",
+					&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.dso"),
+					" --linkas=$LinkAs\n"
+			);
+			if ($ExtraExportLibrary) {
+				&main::Output(
+					"\n",
+					&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.dso"), " : ",
+					&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.dso"), "\n",
+					"\tcopy \"\$<\" \"\$@\"\n"
+				);
+			}		
+		}		
+	}
+
+	my $freezeDir = &main::Path_Split('Path', $DefFile);
+	chop($freezeDir);
+
+	# dummy rule for def files to cope with filename case differences
+	unless (&main::ExportUnfrozen) {
+		if (-e $DefFile) { # effectively "if project frozen ..."
+			&main::Output(
+				"\n",
+				"\n",
+				&Generic_Quote($DefFile), " : ", "\n",
+				"\t\@rem Do nothing\n",
+			);
+		}
+	}
+
+	&main::Output(
+		"\n",
+		"\n",
+		&Generic_Quote($freezeDir), " : ", "\n",
+		"\tperl -S emkdir.pl \$\@\n",
+	);
+
+	&main::Output(
+		"\n",
+		"\n",
+		"FREEZE : ",
+		&Generic_Quote($freezeDir), "\n",
+	);
+	if ($DefFile and $BasicTrgType!~/^IMPLIB$/io) {
+# 	    call perl on the script here so make will die if there are errors 
+#           - this doesn't happen if calling perl in a batch file
+	    &main::Output( "\tperl -S efreeze.pl \$(EFREEZE_ALLOW_REMOVE) \"$DefFile\" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n" );
+	}
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+	if ($DefFile and !$NoExportLibrary) {
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCLIB)\\LIB\\$ExportLibrary.lib\"\n"
+		);
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\t-\$(ERASE) \"\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.lib\"\n"
+			);
+		}
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}");
+
+	&Generic_Releaseables;
+}
+
+
+sub PMBld {
+
+	my $ABI=&main::ABI;
+    my @ASSPLibList=&main::ASSPLibList;
+    my @SrcList=&main::SrcList;
+    my @StringTables=&main::StringTables;
+    my $BaseTrg=&main::BaseTrg;
+	my $FeatureVariantBaseTrg=&main::FeatureVariantBaseTrg;
+    my $Bld=&main::Bld;
+    my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+    my $DefFile=&main::DefFile;
+    my $EPOCIncPath=&main::EPOCIncPath;
+    my $FirstLib=&main::FirstLib;
+    if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+	    # Temporary Workaround for RVCT2.1 static libs problem with RVCT2.2 builds
+	    # Rename all the static libs used with RVCT2.1 as {libname}2_1.lib
+	    if ($FirstLib=~/^\s*(\S+)(\.lib)$/io) {
+		    if ($1!~/$RVCTVersion/i) {
+			    $FirstLib=$1."${RVCTVersion}.lib";
+		    }
+	    }
+    }
+    my $BasicTrgType=&main::BasicTrgType;
+    my @LibList;
+    my @RTLibList = $RVCT20 ?
+      ('udfp.lib', 'udrt.lib', 'udrt.lib(VtblExports.o)'):
+      ('dfpaeabi.lib', "dfprvct${RVCTVersion}.lib", 'drtaeabi.lib', 'drtaeabi.lib(VtblExports.o)');
+    if ( $RVCTVersion lt "2_2" ) {
+		push @RTLibList, "dfprvct${RVCTVersion}-thunk.lib";
+		push @RTLibList, "drtrvct${RVCTVersion}.lib";
+    }
+    else {
+		# The scppnwdl.lib should come before drtrvct2_2.lib
+		push @RTLibList, "scppnwdl.lib";
+		push @RTLibList, "drtrvct${RVCTVersion}.lib";
+    }
+    my $SystemTrg = &main::SystemTrg;
+    my $LibPath= &main::LibPath;
+    my $LinkAs=&main::LinkAs;
+    my $ExportLibrary=&main::ExportLibrary;
+    my $NoExportLibrary=&main::NoExportLibrary;
+    # N.B. should get better way to detect kernel probably!!
+    $SystemTrg = 1 if ($ExportLibrary =~ /EKERN/i);
+    my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+    my $RelPath=&main::RelPath;
+    my @StatLibList=&main::StatLibList;
+    if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+	    # Temporary Workaround for RVCT2.1 static libs problem with RVCT2.2 builds
+	    # Rename all the static libs used with RVCT2.1 as {libname}2_1.lib
+	    for (my $i =0; $i < scalar(@StatLibList); $i++) {
+		    if ($StatLibList[$i]=~/^\s*(\S+)(\.lib)$/io) {
+			    if ($1!~/$RVCTVersion/i) {
+				    $StatLibList[$i]=$1."${RVCTVersion}.lib";
+			    }
+		    }
+	    }
+    }	     
+    my $StatLinkPath=&main::StatLinkPath;
+    my $Trg=&main::Trg;
+    if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+	    if ($BasicTrgType=~/^LIB$/o) {
+		    # Temporary Workaround for RVCT2.1 static libs problem with RVCT2.2 builds
+		    # Rename all the static libs produced with RVCT2.1 as {libname}2_1.lib
+		    if ($Trg=~/^\s*(\S+)(\.lib)$/io) {
+			    if ($1!~/$RVCTVersion/i) {
+				    $Trg=$1.$RVCTVersion.".lib";
+			    }
+		    }
+		    if ($BaseTrg!~/$RVCTVersion/i) {
+			    $BaseTrg .= $RVCTVersion;
+		    }
+	    }
+    }
+
+	#OE Glue Code
+	my @oe_exe_libs=("libcrt0.lib");
+	my @oe_exe_libs_wchar=("libwcrt0.lib");
+
+	#OE Import Library List
+	my @oe_import_library_list=();
+
+    my $TrgType=&main::TrgType;
+    my @UidList=&main::UidList;
+	my $InterWorking = ($ABI eq 'ARMV4') ? "" : "--inter";
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+	}	
+
+
+    my $linkerDebugOpt = "";
+    if(&main::DebugSwitchUsed() ){
+		if(&main::SymbolicDebugEnabled ()){
+#		set the linker's debug flag if the debug switch is specified and enabled.
+		$linkerDebugOpt = "${oP}debug ";
+		}
+	}
+	elsif ($Bld =~ /DEB/) {
+	$linkerDebugOpt = "${oP}debug ";
+	}
+    
+	if ($Bld =~ /DEB/) {
+	@LibList = &main::DebugLibList;
+	} else {
+	@LibList = &main::LibList;
+    }
+
+	if(not(grep /^euser.lib$/, @LibList)){
+		push @oe_import_library_list, "euser.lib";
+	}
+	if(not (grep /^libc.lib$/i, @LibList)){
+		push @oe_import_library_list, "libc.lib";
+	}
+
+#	set up $LinkAs
+    $UidList[2]=~/^0x(.*)$/o;
+    if ($1 ne '00000000') {	# have to make sure than series of noughts in brackets doesn't appear in name for null uids
+	$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+    }
+
+
+    # REAL TARGETS
+    #-------------
+    &main::Output(
+		  "# REAL TARGET - BUILD VARIANT $Bld\n",
+		  "\n"
+		  );
+
+#	releasables
+	my @releaseables;
+	
+	push @releaseables, "$RelPath$Trg" if ($BasicTrgType!~/^IMPLIB$/io);
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		push @releaseables, "$RelPath$Trg.map";
+	}
+	if (-e $DefFile and !$NoExportLibrary) { # effectively "if project frozen ..."
+		push @releaseables, "$LibPath$ExportLibrary.lib";
+		push @releaseables, "$LibPath$ExtraExportLibrary.lib" if ($ExtraExportLibrary);
+		#if elf2e32.exe(postlinker) exists in the $PATH, then include .dsos also into releasables list
+		if ($IsExistELF2E32EXE) {
+			push @releaseables, "$LibPath$ExportLibrary.dso";
+			push @releaseables, "$LibPath$ExtraExportLibrary.dso" if ($ExtraExportLibrary);
+		}		
+	}
+
+	push @releaseables, &main::FeatureVariantVMapFile() if &main::FeatureVariantVMapFile();
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopBldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopRelPath);
+
+	return if ($BasicTrgType=~/^IMPLIB$/io);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+	    	my $BaseSrc = &main::Path_Split('Base', $_);
+	    	my $Ext = &main::Path_Split('Ext', $_);
+		if ($Ext =~ /cia/i) {
+		    $BaseSrc = "$BaseSrc\_";
+		}
+		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	# Compiler wrapper support starts
+	if($IsCompilerWrapperOption)
+	{
+	 	my $Platcmpwrap=&main::Plat;
+	 	
+		&main::Output(
+			"COMPWRAP$Bld : OUTPUT_NAME = ",
+			"$Platcmpwrap\_$Bld",
+			"\n"
+		);
+	 	
+		&main::Output(
+			"COMPWRAP$Bld : MAKEWORK$Bld"
+		);
+
+		foreach (@SrcList) {
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			&main::Output(
+				" \\\n\tCOMPWRAP$Bld$BaseSrc"
+			);
+		}
+
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+	# Compiler wrapper support
+
+	&main::Output(
+		"LIBS$Bld="
+	);
+	if ($BasicTrgType=~/^DLL$/o) { # Add the DLL stub library
+		if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+			# Temporary Workaround for RVCT2.1 static libs problem with RVCT2.2 builds
+			&main::Output(
+				" \\\n\t",
+				&Generic_Quote("\$(EPOCSTATLINK$Bld)\\EDLLSTUB$RVCTVersion.lib")
+			);
+		}
+		else {
+			&main::Output(
+				" \\\n\t",
+				&Generic_Quote("\$(EPOCSTATLINK$Bld)\\EDLLSTUB.lib")
+			);
+		}
+	}
+	    
+        PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCSTATLINK$Bld\)\\\\\$_\"\)", @StatLibList);
+        PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCLIB\)\\\\LIB\\\\\$_\"\)", @LibList);
+
+		#OE Import Libraries 
+		if ( $TrgType=~/^STDEXE$/o || $TrgType=~/^STDDLL$/o ) 
+		{
+			PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCLIB\)\\\\LIB\\\\\$_\"\)", @oe_import_library_list);
+		}
+
+		#OE Glue Code
+		if ($TrgType=~/^STDEXE$/o) {
+			if (&main::IsWideCharMain()) {
+				PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCLIB\)\\\\$Bld\\\\\$_\"\)", @oe_exe_libs_wchar);
+			}
+			else {
+				PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCLIB\)\\\\$Bld\\\\\$_\"\)", @oe_exe_libs);
+			}
+		}
+
+        my $StaticRTLib = $RVCT20 ? "usrt20" : "usrt${RVCTVersion}" ;
+        # use ksrt for system code and usrt for user ARM code
+        $StaticRTLib = "ksrt${RVCTVersion}" if ($SystemTrg);
+        &main::Output(
+	        " \\\n\t",
+		&Generic_Quote("\$(EPOCSTATLINK$Bld)\\$StaticRTLib\.lib")
+		) unless ($Trg =~ /(U|K)SRT/i || ($BasicTrgType=~/^LIB$/o));
+
+	unless ($ArmRT || ($BasicTrgType=~/^LIB$/o)) {
+	    my $TargLib = "$ExportLibrary.lib";
+		$TargLib =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+	    unless ($SystemTrg) {
+			foreach (@RTLibList) {
+				&main::Output(
+					" \\\n\t",
+					&Generic_Quote("\$(EPOCLIB)\\LIB\\$_")
+				) unless ($_ =~ /$TargLib/i);
+			}
+	    }
+	}
+        PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\$_\"\)", @ArmLibList);
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+   	&main::Output(
+ 		"\n# ADDITIONAL LINKER OPTIONS",
+ 		"\nUSERLDFLAGS = ",
+ 		&main::LinkerOption("ARMCC"),
+  		"\n\n"
+  	);
+	
+	&main::Output(
+		"VTBLEXPORTS$Bld="
+	);
+        my $vtobj = quotemeta("(VtblExports.o)");
+        PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCLIB\)\\\\LIB\\\\\$_$vtobj\"\)", @LibList);
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	my $objectFiles = "";
+
+	my $bldPath =	&main::BldPath;
+	my $replacement;
+# If LOCAL_BUILD_PATH is set replace the \epoc32\build with local setting
+	if ( defined( $ENV{LOCAL_BUILD_PATH} ) )  {
+		$replacement = 	$ENV{"LOCAL_BUILD_PATH"};
+		my $epocroot=$ENV{"EPOCROOT"};
+		my $match = "\Q${epocroot}\EEPOC32\\\\BUILD";
+		$bldPath =~ s/${match}/${replacement}/;
+	}
+#	Must add StringTable obj files first to preserve Evalid results consistency.
+	foreach my $item (@StringTables) {
+		$objectFiles .= $bldPath.$$item{BaseTrg}.".o\n" if !($$item{Hdronly});
+	}
+
+        &main::Output(
+	        "OBJECTS$Bld="
+	);
+        foreach (@SrcList) {
+	    	my $BaseSrc = &main::Path_Split('Base', $_);
+	    	my $Ext = &main::Path_Split('Ext', $_);
+		if ($Ext =~ /cia/i) {
+		    $BaseSrc = "$BaseSrc\_";
+		}
+
+	        &main::Output(
+		        " \\\n\t",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o")
+		      );
+
+#	Only add if not already added from @StringTables
+	my $objectFile = $bldPath.$BaseSrc.".o\n";
+	$objectFile=~ s/\\/\\\\/g;    # escape the '\'
+	if ($objectFiles !~ m/$objectFile/i){
+		$objectFiles .= &main::BldPath.$BaseSrc.".o\n";
+	}
+
+
+	}
+        &main::Output(
+	        "\n",
+		"\n"
+	);
+
+
+	# Create "via" file containing all object files in order to reduce
+	# command line lengths in pertinent calls
+	my $objectsViaFile = &main::CommandFile();	
+	&main::CreateExtraFile($objectsViaFile, $objectFiles);
+	
+
+        if ($BasicTrgType=~/^LIB$/o) {
+	        &main::Output(
+		      &Generic_Quote("\$(EPOCTRG$Bld)\\$Trg"),
+		      " : \$(OBJECTS$Bld)"
+		);
+        } else {
+	        &main::Output(
+		      &Generic_Quote("\$(EPOCTRG$Bld)\\$Trg"), " : ",
+		      &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg.in")
+	        );
+        }
+
+	if (-e $DefFile) { # effectively "if project frozen ..."
+		&main::Output(
+			" ", &Generic_Quote($DefFile)
+		);
+	}
+	if ($BasicTrgType=~/^(EXE|DLL)$/o) {
+		&main::Output(
+			" ", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$FirstLib")
+		);
+	}
+	&main::Output(
+		" \$(LIBS$Bld)"
+	);
+
+#	generate an export object from the ordered .DEF file
+        if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+#       	make the .exp file a dependency for targets that have exports		
+		&main::Output(" ", &Generic_Quote("\$(EPOCBLD$Bld)\\$ExportLibrary.exp"), "\n");
+		if (&main::ExportUnfrozen) {
+		    &main::Output(
+			"\tdef2dll.bat --path=\$(EPOCBLD$Bld) \\\n\t\t--bldpath=\$(EPOCBLD$Bld) \\\n\t\t--export=$ExportLibrary \\\n\t\t--import=$ExportLibrary\\\n",
+			"\t\t--deffile=\$(EPOCBLD$Bld)\\$ExportLibrary.def \\\n\t\t--linkAs=$LinkAs \\\n\t\t$InterWorking $symNameLkupOpt\n",
+		    );
+		    &main::Output(
+		        "\n",
+		        "\tcopy ", " \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\" ",
+		        "\"\$(EPOCLIB)\\LIB\\$ExportLibrary.lib\"",
+		        "\n"
+		    );
+		    if ($ExtraExportLibrary) {
+			&main::Output(
+			    "\n",
+			    "\tcopy \"\$(EPOCLIB)\\LIB\\$ExportLibrary.lib\" ",
+			    "\"\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.lib\"",
+			    "\n"
+			);
+		    }			    
+		    #if elf2e32.exe(postlinker) exists, then generate .dso(which will be used by ABIV2 platforms)
+		    if ($IsExistELF2E32EXE) {
+			    &main::Output(
+				    "\n",
+				    "\telf2e32 --definput=\"\$(EPOCBLD$Bld)\\$ExportLibrary.def\" --dso=",
+				    "\$(EPOCLIB)\\LIB\\$ExportLibrary.dso --linkas=$LinkAs\n"
+			    );
+			    if ($ExtraExportLibrary) {
+				    &main::Output(
+					    "\n",
+					    "\tcopy \"\$(EPOCLIB)\\LIB\\$ExportLibrary.dso\" ",
+					    "\"\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.dso\"",
+					    "\n"
+				    );
+			    }		
+		    }		
+	        }
+	} elsif($NamedSymLkup){
+#		For an EXE, generate the .exp to accomodate 0th ordinal
+		&main::Output(" ", &Generic_Quote("\$(EPOCBLD$Bld)\\$ExportLibrary.exp"), "\n");
+	}
+	else {
+	    &main::Output("\n");
+	}
+
+#       get rid of any -symbols produced .map file
+        if ($BasicTrgType=~/^(DLL|EXE)/o) {
+	        &main::Output(
+			"\t-\$(ERASE) \"\$(EPOCTRG$Bld)\\$Trg.map\" \n"
+		);	
+	}
+#		Generate the dependency info - This is required to put the libraries in the same order
+#		as mentioned in mmp.
+		if($NamedSymLkup) {
+			&main::Output(
+			"\tperl -S deputil.pl $InterWorking --path=\$(EPOCBLD$Bld) \\\n",
+			 "\t\t--out=$ExportLibrary \\\n",
+			 "\t\t--libpath=\$(EPOCLIB)\\LIB \\\n",
+			 "\t\t\$(LIBS$Bld)\n",
+			);
+		}
+		my $AbsentSubst = '';
+        if ($BasicTrgType=~/^(DLL|EXE)/o) {
+	        my $datalinkbase = "0x400000";
+	        $datalinkbase = &main::DataLinkAddress if (&main::DataLinkAddress);
+
+#               make sure the linker feedback file is writable if it exists.
+		my $lfbfile = LinkerFeedBackFile();
+		&main::Output(
+			"\t\@if exist $lfbfile attrib -r $lfbfile\n"
+			) if $useLinkerFeedBack;
+
+		my $lfboption = LinkerFeedBackOption();
+
+	        &main::Output(
+		        "\t$Link $linkerDebugOpt ${oP}shl ${oP}reloc ${oP}split ${oP}rw-base $datalinkbase  \\\n\t\t$lfboption${oP}noscanlib $PlatOpt{Ld}\\\n"
+			);
+			my $EntrySymbol;
+			if ($BasicTrgType=~/^DLL$/o) {
+				$EntrySymbol = '_E32Dll';
+			}
+			elsif ($BasicTrgType=~/^EXE$/o) {
+				$EntrySymbol = '_E32Startup';
+			}
+			if ($EntrySymbol) {
+				$AbsentSubst = " -absent $EntrySymbol";
+			}
+	        if ($BasicTrgType=~/^DLL$/o) {
+	            # get the right object file for the entry point
+	            my $ObjFile = "UC_DLL_.o";
+	            if ($FirstLib =~ /EDEV/i) {
+		            $ObjFile = "D_ENTRY_.o";
+	            }
+	            if ($FirstLib =~ /EKLL/i) {
+		            $ObjFile = "L_ENTRY_.o";
+	            }
+	            if ($FirstLib =~ /EEXT/i) {
+		            $ObjFile = "X_ENTRY_.o";
+	            }
+	            if ($FirstLib =~ /EVAR/i) {
+		            $ObjFile = "V_ENTRY_.o";
+	            }
+	            &main::Output(
+				    "\t\t${oP}entry _E32Dll \$(EPOCSTATLINK$Bld)\\$FirstLib($ObjFile) \$(EPOCSTATLINK$Bld)\\$FirstLib \\\n",
+				    "\t\t\$(EPOCBLD$Bld)\\$ExportLibrary.exp \\\n"
+				);
+	        } elsif ($BasicTrgType=~/^EXE$/o || $TrgType=~/^EXEXP$/o) {
+			    # get the right object file for the entry point
+			    my $ObjFile = "UC_EXE_.o" ;
+			    if ($FirstLib =~ /KC_EXE/i) {
+					$ObjFile = "K_ENTRY_.o";
+			    }
+				# If building user-side under RVCT2.0.x, use 2.0.1 static library	
+				if ($RVCT20) { 
+					if ($ObjFile =~/UC_EXE_.o/i) { 
+						$FirstLib = "EEXE20.LIB"; 
+					} 
+				} 
+			    
+			    &main::Output( "\t\t${oP}entry _E32Startup \$(EPOCSTATLINK$Bld)\\$FirstLib($ObjFile) \$(EPOCSTATLINK$Bld)\\$FirstLib \\\n" );
+			    if ($TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o || $NamedSymLkup) {
+					&main::Output( "\t\t\$(EPOCBLD$Bld)\\$ExportLibrary.exp \\\n" );
+			    }
+			}
+			if($NamedSymLkup) {
+				&main::Output(
+				"\t\t--edit \"\$(EPOCBLD$Bld)\\$ExportLibrary.dep\" \\\n"
+				);
+			}
+	        &main::Output(
+		        "\t\t-o \"\$(EPOCBLD$Bld)\\$Trg\" \\\n",
+		        "\t\t${oP}symbols ${oP}list \"\$(EPOCTRG$Bld)\\$Trg.map\" \\\n",
+				"\t\t\$(EPOCBLD$Bld)\\$BaseTrg.in \\\n"
+			);
+	        &main::Output(
+		        "\t\t\$(LIBS$Bld) \\\n",
+				"\t\t\$(VTBLEXPORTS$Bld) \$(USERLDFLAGS) \n"
+			);
+
+	        if(&main::DebugSwitchUsed() ){
+				if(&main::SymbolicDebugEnabled() ) {
+				&main::Output(
+					"\tcopy \"\$(EPOCBLD$Bld)\\$Trg\" \"\$(EPOCTRG$Bld)\\$FeatureVariantBaseTrg.sym\"\n"
+					);
+				}
+			}
+	        elsif ($Bld=~/^UDEB$/o) {
+	               &main::Output(
+			       "\tcopy \"\$(EPOCBLD$Bld)\\$Trg\" \"\$(EPOCTRG$Bld)\\$FeatureVariantBaseTrg.sym\"\n"
+		       );
+	        }
+		
+		if (&main::CompressTarget) {
+		    &main::Output(
+			    "\telftran $PlatOpt{Elftran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " ", " -nocompress "
+				 );
+		    
+		}
+		else {
+			if(&main::CompressTargetMode==NOCOMPRESSIONMETHOD){
+				&main::Output(
+					"\telftran $PlatOpt{Elftran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " "
+				);
+			}
+			elsif(&main::CompressTargetMode==INFLATECOMPRESSIONMETHOD){
+				&main::Output(
+				"\telftran $PlatOpt{Elftran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " ", "  -compressionmethod deflate"
+				);
+			}
+			elsif(&main::CompressTargetMode==BYTEPAIRCOMPRESSIONMETHOD){
+				&main::Output(
+					"\telftran $PlatOpt{Elftran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " ", "  -compressionmethod bytepair"
+				);
+			}
+		}
+
+		if (&main::IsDebuggable eq DEBUGGABLE) {
+ 			&main::Output(
+ 				' -debuggable '
+ 			);
+ 		}
+
+		if (&main::SmpSafe) {
+ 			&main::Output(
+ 				' -smpsafe'
+ 			);
+ 		}
+
+		if (&main::IsDebuggable eq DEBUGGABLE_UDEBONLY) {		
+			if ($Bld=~/^UDEB$/o) {
+				&main::Output(
+				' -debuggable '
+				);
+			}
+		}
+		
+		# change - exexps are allowed data, but they look like dlls to elftran....
+		if (&main::AllowDllData || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			&main::Output(
+				' -allow'
+			);
+		}
+		if (not &main::CallDllEntryPoints ) {
+			&main::Output(
+				' -nocall'
+			);
+		}
+		if (&main::DataLinkAddress) {
+			&main::Output(
+				' -datalinkaddress ',&main::DataLinkAddress
+			);
+		}
+		if (&main::FixedProcess) {
+			&main::Output(
+				' -fixed'
+			);
+		}
+		if (&main::HeapSize) {
+			my %HeapSize=&main::HeapSize;
+			&main::Output(
+				' -heap ',$HeapSize{Min},' ',$HeapSize{Max}
+			);
+		}
+		if (&main::ProcessPriority) {
+			&main::Output(
+				' -priority ',&main::ProcessPriority
+			);
+		}
+		if (&main::StackSize) {
+			&main::Output(
+				' -stack ',&main::StackSize
+			);
+		}
+
+		if (&main::CodePagingTargetMode == UNPAGED) {
+			&main::Output(
+				' -codepaging unpaged'
+			);
+		}
+		elsif (&main::CodePagingTargetMode == PAGED) {
+			&main::Output(
+				' -codepaging paged'
+			);
+		}
+
+		if (&main::DataPagingTargetMode == UNPAGED) {
+			&main::Output(
+				' -datapaging unpaged'
+			);
+		}
+		elsif (&main::DataPagingTargetMode == PAGED) {
+			&main::Output(
+				' -datapaging paged'
+			);
+		}
+
+		&main::Output(
+			"\\\n\t\t"
+		);
+
+		my $i=1;
+		foreach (@UidList) {
+			&main::Output(
+				" -uid$i $_"
+			);
+			$i++;
+		}
+		if(&main::VendorId) {
+			&main::Output(
+				' -vid ',&main::VendorId
+			);
+		}
+		&main::Output(
+			"\\\n\t\t"
+		);
+		&main::Output(
+			' -fpu ',$floatingpointmodel
+		);
+		&main::Output(
+			' -capability ',&main::Capability
+		);
+		if($NamedSymLkup) {
+			&main::Output(
+				' -sym_name_lkup'
+			);
+		}
+		&main::Output(
+			"\\\n\t\t"
+		);
+		&main::Output(
+			" \"\$(EPOCBLD$Bld)\\$Trg\""
+		);
+		&main::Output(
+			"\\\n\t\t"
+		);
+		&main::Output(
+			" \"\$\@\" \n"
+		);
+		&main::Output(
+			"\n"
+		);
+
+         }
+         elsif ($BasicTrgType=~/^LIB$/o) {
+	        &main::Output(
+		        "\tarmar ${oP}create \$(EPOCSTATLINK$Bld)\\$Trg ${oP}via $objectsViaFile\n"
+		);
+         }
+
+         &main::Output(
+		 "\n"
+	 );
+	 
+#	add static lib into the object via file
+	my $libViaFiles=$objectFiles;
+	if (@StatLibList) {
+		foreach (@StatLibList) {
+			$libViaFiles.= &main::RelPath."$_ \n";
+		}
+		&main::CreateExtraFile($objectsViaFile, $libViaFiles);
+	}
+	
+    # TARGET *.IN
+    #------------
+	 
+    &main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg.in"), ": \$(OBJECTS$Bld)\n",
+ 	    "\t$Link $linkerDebugOpt ${oP}partial \\\n",
+	    "\t\t-o \$\@ \\\n",
+	    "\t\t${oP}via $objectsViaFile\n\n",
+    );
+    
+
+#   reorder the .DEF file taking frozen exports into account if there are any
+    if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o || $NamedSymLkup) {
+
+	    # TARGET *.EXP
+	    #------------
+	    &main::Output(
+		    &Generic_Quote("\$(EPOCBLD$Bld)\\$ExportLibrary.exp"), ": \$(EPOCBLD$Bld)\\$BaseTrg.in"
+	    );
+
+# if project is frozen, makedef (and hence the .exp file) are dependent upon it
+		unless (&main::ExportUnfrozen) {
+			if (-e $DefFile) { # effectively "if project frozen ..."
+			    &main::Output(" $DefFile");
+			}
+		}
+
+	    &main::Output(
+		"\n\tperl -S elf2inf.pl -o \$(EPOCBLD$Bld)\\$ExportLibrary.inf \\\n", 
+		"\t\t\$\<",
+		"\n\tperl -S makedef.pl $AbsentSubst -Inf \$(EPOCBLD$Bld)\\$ExportLibrary.inf \\\n"
+	    );
+    	if (!$DefFile || $NoExportLibrary) {    			
+    		&main::Output( "\t\t-ignore_unfrozen_noncallable \\\n" );
+    	}
+	if (SysTrg()) {
+    		&main::Output( "\t\t-SystemTargetType \\\n" );
+    	}
+    		
+	    if (-e $DefFile) {	# effectively "if project frozen ..."
+	            &main::Output(
+			"\t\t-Frzfile \"$DefFile\" \\\n"
+		    );
+	    }
+
+		if($NamedSymLkup && !$DefFile){
+#		For an EXE with named lookup, suppress the 'unfrozen exports' makedef warnings.
+			&main::Output(
+			"\t\t-ignore_unfrozen_exports \\\n",
+			);
+		}
+
+	    # freeze ordinals, a maximum of 2, for polymorphic dlls
+	    my $Ordinal;
+	    my $Num=1;
+	    foreach $Ordinal (&main::Exports) {
+	            &main::Output( "\t\t-$Num $Ordinal \\\n" );
+		    $Num++;
+	    }
+	    
+	    my $theDefFile = "\$(EPOCBLD$Bld)\\$ExportLibrary.def";
+	    $theDefFile = $DefFile if (-e $DefFile && !&main::ExportUnfrozen);
+	    &main::Output(
+		"\t\t\"\$(EPOCBLD$Bld)\\$ExportLibrary.def\"\n",
+		"\tcopy \"\$(EPOCBLD$Bld)\\$ExportLibrary.def\" \"\$(EPOCBLD)\\$ExportLibrary.def\"\n",
+		"\tdef2dll.bat $AbsentSubst \\\n\t\t--path=\$(EPOCBLD$Bld) \\\n\t\t--bldpath=\$(EPOCBLD$Bld) \\\n\t\t--export=$ExportLibrary \\\n",
+		"\t\t--deffile=$theDefFile \\\n\t\t--linkAs=$LinkAs \\\n\t\t$InterWorking $symNameLkupOpt\n"
+	    );
+    }
+
+    &main::Output( "\n" );
+}
+
+# Set to 1 if multifile compilation wanted
+my $domultifile = 0;
+
+sub DoMultiFile () {
+        return $ENV{RVCTMultiFile} if (defined $ENV{RVCTMultiFile});
+	return $domultifile;
+}
+
+my %CompilationGroups = ();
+
+sub InitMultiFileCompilation() {
+#	Do preparatory work for multifile compilation
+	my $SourceStructRef=&main::SourceStructRef;
+
+#	We sort the source files by path and extension. These form natural groups to compile together.
+	my %PathToSourceMap = ();
+	foreach my $SourceRef (@$SourceStructRef) {
+		my $SrcFile = $$SourceRef{CurFile};
+		my $Ext = &main::Path_Split('Ext', $SrcFile);
+	        push @{$PathToSourceMap{$$SourceRef{SrcPath}}{$Ext}}, $SrcFile;
+	}
+
+#	Now we split each group into sets of 10. 
+	foreach my $SrcPath (keys %PathToSourceMap) {
+		foreach my $Ext (keys %{$PathToSourceMap{$SrcPath}}) {
+			my @FileList;
+			my @ObjectList;
+			my @SourceList;
+			my $NumToGo = 10;
+			foreach my $File (@{$PathToSourceMap{$SrcPath}{$Ext}}) {
+				my $base = &main::Path_Split('Base', $File);
+				my $cia = ($Ext =~ /cia/i);
+				$base .= "_" if $cia;
+				push @FileList, $File;
+				push @ObjectList, "$base.o";
+#				this gives us our source files xxx				
+				push @SourceList, $cia ? "$base.cpp" : "$SrcPath$base$Ext";
+				$NumToGo--;
+				unless ($NumToGo) {
+#				       Use the last file as the key. This means e.g that all the dependency
+#				       info will have been generated for the earlier files in the list
+				       push @{$CompilationGroups{$FileList[$#FileList]}{Sources}}, @SourceList;
+       				       push @{$CompilationGroups{$FileList[$#FileList]}{Objects}}, @ObjectList;
+				       $NumToGo = 10;
+				       undef @FileList;
+				       undef @ObjectList;
+				       undef @SourceList;
+				}
+			}
+			push @{$CompilationGroups{$FileList[$#FileList]}{Sources}}, @SourceList;
+			push @{$CompilationGroups{$FileList[$#FileList]}{Objects}}, @ObjectList;
+		}
+	}
+
+#	debug print out	
+	if (0) {
+	foreach my $keyfile (keys %CompilationGroups) {
+		print "$keyfile :\n";
+		foreach my $class (keys %{$CompilationGroups{$keyfile}}) {
+			print "\t$class:\n\t\t";
+			print join " ", @{$CompilationGroups{$keyfile}{$class}}, "\n";
+		}
+	}
+	}
+			
+}
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+
+	InitMultiFileCompilation() if DoMultiFile();
+
+}
+
+sub PMBitMapBld {
+
+	&Generic_BitMapBld;
+
+}
+
+sub PMResrcBld {
+
+	&Generic_ResrcBld;
+
+}
+
+sub PMAifBld {
+	&Generic_AifBld;
+}
+
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @DepList=&main::DepList;
+	return if (@DepList == 0);
+
+	my @BldList=&main::BldList;	
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+	
+	my $BaseObj=$BaseSrc;
+	my $cia = 0;
+	if ($ExtSrc =~ /cia/i ) {
+		$cia = 1;
+		$BaseObj .= '_';
+	}
+
+	foreach (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc.pre"), " ",
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseObj.cpp"), " ",
+		) if $cia;
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc.lis"), " ",
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseObj.o"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+        PrintList("\' \\\n\t\'\.\&Generic_Quote\(\$_\)", @DepList);
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my @DepList=&main::DepList;
+	return if (@DepList == 0);
+	
+	my $Bld=&main::Bld;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+	
+	my $BaseObj=$BaseSrc;
+	my $cia = 0;
+	if ($ExtSrc =~ /cia/i ) {
+		$cia = 1;
+		$BaseObj .= '_';
+	}
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), " ",
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseObj.cpp"), " ",
+	) if $cia;
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " ",
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseObj.o"), " :",
+	);
+        PrintList("\' \\\n\t\'\.\&Generic_Quote\(\$_\)", @DepList);
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+my $curdrive = "x";
+
+sub quoted_path
+    {
+    my ($arg) = @_;
+    return "\"$arg\"" if ($arg !~ /^\\[^\\]/);	# not an absolute path
+    if ($curdrive eq "x")
+		{
+		$curdrive="";
+		$curdrive=$1 if (cwd =~ /^(.:)/);	
+		}
+    return "\"$curdrive$arg\"";
+    }
+
+sub PMPrefixFile 
+{ 
+    my $IncPath = &main::EPOCIncPath;
+    
+    return quoted_path(&Generic_Quote("$IncPath"."rvct\\rvct.h"));
+}
+
+
+my $preinclude =   "--preinclude \$(EPOCINC)\\rvct\\rvct.h";
+my $edg_preinclude = "-I \$(EPOCINC)\\RVCT${RVCTVersion} --preinclude edg_rvct${RVCTVersion}.h";
+
+sub SelectLangOptions {
+	my ($Ext) = @_;
+	if ($Ext=~/^.cpp$/) {
+		# In case of function call logger, the preinclude file is passed to the function call logger
+		# hence it is not required to pass the same file to the compiler.
+		return "--cpp "	if ($Function_Call_Logger);
+		return "--cpp $preinclude ";
+	}
+	if ($Ext=~/^.cia$/) {
+		return "--cpp ";
+	}
+	if ($Ext=~/^.c$/) {
+		if($CompilerOption =~/--cpp/) {
+			#Function Call Logger
+			return "--cpp " if ($Function_Call_Logger);
+			return "--cpp $preinclude ";
+		}
+		else {
+			#Function Call Logger
+			return "--c90 " if ($Function_Call_Logger);
+			return "--c90 $preinclude ";
+		}
+	}
+	# To support .cc, .cxx, .c++ file extensions for Open Environment
+	elsif ($Ext=~/^(.cc|.cxx|.c\+\+)$/) {
+		#Function Call Logger
+		return "--cpp " if ($Function_Call_Logger);
+		return "--cpp $preinclude ";
+	}
+	return '';
+}
+
+sub PMEndSrcBld {
+#       Generate multifile compilation stuff if needed.
+        if (DoMultiFile()) {
+	       MultiFileEndSrcBld();
+	       return;
+	}
+
+	my $ABI=&main::ABI;
+	my $Plat=&main::Plat;
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+	my $Src=lc &main::Src;	
+	my $SrcPath=&main::Path_Chop(&main::SrcPath);
+	my $Ext = &main::Path_Split('Ext', $Src);	
+	my $BaseTrg=&main::BaseTrg;
+	my $BldPath = &main::BldPath;
+	$Src = ucfirst $Src if ($Ext !~ /\.(cpp|c)$/);		
+	my $LangOptions = &SelectLangOptions($Ext);
+	# support for auto 'translated' ASM 
+	my $AsmFilep = $AsmFiles{$Src};
+
+	# Logger Ouput filename 
+	my $Logger_Output = lc ($BaseSrc) . ".int.cpp";
+	my $LstExt ;
+	if($Plat =~ /^(ARMV[6-9])/i){
+		$LstExt = $1 ;	
+	}
+	else{
+		$LstExt = $ABI;
+	}
+	
+	my $lfboption = LinkerFeedBackOption();
+
+	#Function Call Logger
+	my $FC_Logger_Option=" --wchar_t_keyword --microsoft_version=1300 --dictionary_file_name $BldPath$BaseTrg.txt --diag_suppress 66,161,611,654,815,830,997,1152,1300,1390";
+
+	if ($AsmFilep || $Ext =~ /cia/i) {
+		&main::Output(
+# compile the translated, preprocessed source
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.o"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), "\n",
+			"\t\@echo $Src\n",
+			"\t\$(ARMCC$Bld) $lfboption$LangOptions -J $SrcPath \$(INCDIR) -o \$\@ \$(EPOCBLD$Bld)\\$BaseSrc\_.cpp\n",
+			"\n",
+# rule to translate the preprocessed source
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), "\n",
+			"\ttranasm.bat -n -s -o=\$\@ \$(EPOCBLD$Bld)\\$BaseSrc.pre\n",
+			"\n",
+# rule to preprocess the source
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), " : ",
+			&Generic_Quote("$SrcPath\\$Src"), "\n",
+  			"\t\$(ARMCC$Bld) -D__CIA__ -E $preinclude $LangOptions -J $SrcPath \$(INCDIR) $SrcPath\\$Src -o \$\@ \n",
+# generate an assembly listing target too
+			"LISTING$Bld$BaseSrc\_ : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath\\$BaseSrc\_.$LstExt.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), "\n",
+			"\t\$(ARMCC$Bld) $LangOptions -S -J $SrcPath \$(INCDIR) -o \$\@ \$(EPOCBLD$Bld)\\$BaseSrc\_.cpp\n",
+			"\n"
+			);
+	} else {
+		#If Function Call logging is enabled, add call to function call logger
+		if ($Function_Call_Logger) {
+			&main::Output(
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"),
+				" : ",
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$Logger_Output"),
+				"\n",
+				"\t\@echo $Logger_Output\n",
+				"\t\$(ARMCC$Bld) $lfboption$LangOptions -J $SrcPath \$(INCDIR) -o \$\@ \$(EPOCBLD$Bld)\\$Logger_Output\n",
+				"\n",
+# generate an assembly listing target too
+				"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+				"\t", &Generic_CopyAction("$SrcPath\\$BaseSrc.$LstExt.lst"),
+				"\n",
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " : ",
+				&Generic_Quote("$SrcPath\\$Logger_Output"), "\n",
+				"\t\$(ARMCC$Bld) $LangOptions -S -J $SrcPath \$(INCDIR) -o \$\@ \$(EPOCBLD$Bld)\\$Logger_Output \n",
+				"\n"
+			);
+
+			#Call to Function Call Logger
+			&main::Output(
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$Logger_Output"), " : ",
+				&Generic_Quote("$SrcPath\\$Src"),
+				"\n",
+				"\t \@echo $Logger_Output\n",
+				"\t \$(FCLOGGER$Bld) $lfboption$edg_preinclude \\\n",
+			    "\t -I $SrcPath  \\\n",
+				"\t \$(INCDIR_FCLOGGER) $FC_Logger_Option \\\n",
+			    "\t --gen_c_file_name \$\@ $SrcPath\\$Src\n",
+				"\n\n",
+			);
+		}
+		else {			
+			&main::Output(
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " : ",
+				&Generic_Quote("$SrcPath\\$Src"), "\n",
+				"\t\@echo $Src\n",
+				"\t\$(ARMCC$Bld) $lfboption$LangOptions -J $SrcPath \$(INCDIR) -o \$\@ $SrcPath\\$Src\n",
+				"\n",
+# generate an assembly listing target too
+			"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath\\$BaseSrc.$LstExt.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " : ",
+			&Generic_Quote("$SrcPath\\$Src"), "\n",
+			"\t\$(ARMCC$Bld) $LangOptions -S -J $SrcPath \$(INCDIR) -o \$\@ $SrcPath\\$Src \n",
+			"\n"
+			);
+			#Compiler wrapper support starts
+			if($IsCompilerWrapperOption)
+			{
+				my $Platcmpwrap=&main::Plat;
+				&main::Output(
+					"COMPWRAP$Bld$BaseSrc : ",
+					&Generic_Quote("$SrcPath\\$Src"), "\n",
+					"\t\@echo Analysing $Src\n",
+					"\t\$(COMPWRAP) \$(ARMCC$Bld) $LangOptions -S -J $SrcPath \$(INCDIR) -o \$\@ $SrcPath\\$Src \n",
+					"\n"
+				);
+			}
+			#Compiler wrapper support ends
+			
+		}
+	}
+}
+
+my $MFVarN = 0;
+sub MultiFileEndSrcBld {
+	my $ABI=&main::ABI;
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+        my $KeyFile = &main::Src;
+	my $Src=ucfirst lc $KeyFile;
+	my $SrcPath=&main::Path_Chop(&main::SrcPath);
+	my $Ext = &main::Path_Split('Ext', $Src);
+	my $LangOptions = &SelectLangOptions($Ext);
+	# support for auto 'translated' ASM 
+	my $AsmFilep = $AsmFiles{$Src};
+
+	my $lfboption = LinkerFeedBackOption();
+
+	if ($AsmFilep || $Ext =~ /cia/i) {
+		if ($CompilationGroups{$KeyFile}) {
+# compile the translated, preprocessed source
+		       &main::Output( "OBJECTS$MFVarN = ");
+		       foreach my $obj (@{$CompilationGroups{$KeyFile}{Objects}}) {
+			       &main::Output( &Generic_Quote("\\\n\t\$(EPOCBLD$Bld)\\$obj"), " "); 
+		       }
+       		       &main::Output( "\n\n");
+		       &main::Output( "SOURCES$MFVarN = ");
+		       foreach my $src (@{$CompilationGroups{$KeyFile}{Sources}}) {
+			       &main::Output( &Generic_Quote("\\\n\t\$(EPOCBLD$Bld)\\$src", " "));
+		       }
+       		       &main::Output( "\n\n");
+		       &main::Output( "\$(OBJECTS$MFVarN) : \$(SOURCES$MFVarN) \n");
+
+		       &main::Output(
+				     "\t\@echo Compiling \$(SOURCES$MFVarN)\n", 
+				     "\t\$(ARMCC$Bld) -J $SrcPath \$(INCDIR) $lfboption\\\n",
+				     "\t\t$LangOptions -o \$\@ --multifile \$(SOURCES$MFVarN)"
+		      );
+       		       &main::Output( "\n\n");
+		       $MFVarN++;
+		}
+		&main::Output(
+# rule to translate the preprocessed source
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), "\n",
+			"\ttranasm.bat -n -s -o=\$\@ \$(EPOCBLD$Bld)\\$BaseSrc.pre\n",
+			"\n",
+# rule to preprocess the source
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), " : ",
+			&Generic_Quote("$SrcPath\\$Src"), "\n",
+  			"\t\$(ARMCC$Bld) -D__CIA__ -E $preinclude $LangOptions -J $SrcPath \$(INCDIR) $SrcPath\\$Src -o \$\@ \n",
+# generate an assembly listing target too
+			"LISTING$Bld$BaseSrc\_ : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath\\$BaseSrc\_.$LstExt.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), "\n",
+			"\t\$(ARMCC$Bld) $LangOptions -S -J $SrcPath \$(INCDIR) -o \$\@ \$(EPOCBLD$Bld)\\$BaseSrc\_.cpp\n",
+			"\n"
+			);
+	} else {
+
+		if ($CompilationGroups{$KeyFile}) {
+#                      compile the source
+		       &main::Output( "OBJECTS$MFVarN = ");
+		       foreach my $obj (@{$CompilationGroups{$KeyFile}{Objects}}) {
+			       &main::Output( &Generic_Quote("\\\n\t\$(EPOCBLD$Bld)\\$obj"), " "); 
+		       }
+       		       &main::Output( "\n\n");
+		       &main::Output( "SOURCES$MFVarN = ");
+		       foreach my $src (@{$CompilationGroups{$KeyFile}{Sources}}) {
+			       &main::Output( &Generic_Quote("\\\n\t$src"), " ");
+		       }
+       		       &main::Output( "\n\n");
+		       &main::Output( "\$(OBJECTS$MFVarN) : \$(SOURCES$MFVarN) \n");
+
+		       &main::Output(
+				     "\t\@echo Compiling \$(SOURCES$MFVarN)\n", 
+				     "\t\$(ARMCC$Bld) -J $SrcPath \$(INCDIR) $lfboption\\\n",
+				     "\t\t$LangOptions -o \$\@ --multifile \$(SOURCES$MFVarN)"
+		      );
+       		       &main::Output( "\n\n");
+		       $MFVarN++;
+		}
+#		generate an assembly listing target too
+		&main::Output(
+			"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath\\$BaseSrc.$LstExt.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " : ",
+			&Generic_Quote("$SrcPath\\$Src"), "\n",
+			"\t\$(ARMCC$Bld) $LangOptions -S -J $SrcPath \$(INCDIR) -o \$\@ $SrcPath\\$Src \n",
+			"\n"
+			);
+	}
+}
+
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+}
+
+sub PMSupportsFeatureVariants
+	{
+	return 1;
+	}
+
+1;
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_bpabi.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,2885 @@
+# 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:
+#
+
+# This package contains routines to handle Base Platform ABI (BPABI) Platforms.
+package Cl_bpabi;
+
+my @commonOptions;
+my @thumbOptions;
+my @armOptions;
+my @kernelOptions;
+my @invariantOptions;
+my @linkerOptions;
+my @archiverOptions;
+my @debugFormat;
+my $ArmIncDir;
+my @ArmLibList;
+
+my %configVariables;
+
+#Check if Function call Logger is enabled
+my $Function_Call_Logger=&main::IsFunctionCallLogging();
+
+# Get the information regarding supporting Compiler Wrapper Option
+my $IsCompilerWrapperOption=&main::CompilerWrapperOption();
+my $IsProxyWrapperOption=&main::ProxyWrapperOption();
+
+# takes an 'expression'  to evaluate with $_ bound to each of the
+# remaining args
+sub PrintList
+{
+    my $expr = shift @_;
+    foreach (@_) {
+	my $str = eval($expr);
+	&main::Output($str);
+    }
+}
+
+sub DepLinkList
+{
+    my $expr = shift @_;
+    my @arr;
+    foreach (@_) {
+	my $str = eval($expr);
+	push @arr, $str;
+    }
+    return @arr;
+}
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+	PMPlatProcessMmp
+	PMStartBldList
+		PMBld
+	PMStartSrcList
+		PMBitMapBld
+		PMResrcBld
+		PMStartSrc
+		PMAifBld
+		PMSrcDepend
+			PMSrcBldDepend
+			PMEndSrcBld
+		PMEndSrc
+	PMEndSrcList
+	PMPrefixFile
+	PMToolChainIncDir
+	PMSupportsFeatureVariants
+);
+
+use Cwd;
+
+# Armutl package does various ancillary things for armedg modules
+use Armutl;
+use BPABIutl;
+use E32Plat;
+use RVCT_plat2set;
+use gcce_plat2set;
+
+# This is the RVCT Version information required by Armutl package
+my $RVCTMajorVersion;
+my $RVCTMinorVersion;
+my $RVCTVersion;
+
+my $GCCEMajorVersion;
+my $GCCEMinorVersion;
+my $GCCEVersion;
+
+# The name of the build platform, e.g. ARMV6.
+my $PlatName = main::Plat();
+
+# The name of the root platform. This is useful if the plaform is derived using a
+# BSF file. If the current platform is not derived, $RootName will be the same as
+# $PlatName.
+my $RootName = E32Plat::Plat_Root($PlatName);
+
+
+# cl_generic package contains generic routines to handle bits of makefiles which are
+# common to all of the platforms. Currently it deals with AIF, MBM amd RSC files.
+use cl_generic;
+
+# E32env package contains information for makmake and associated e32tools perl programs
+# within the Epoc32 Environment
+use E32env;
+
+# Genutl package contains utility subroutines for MAKMAKE and associated scripts
+use Genutl;
+
+# Modload package is the runtime module-loading routine for loading e32tools modules into
+# 'main' module
+use Modload;
+
+use constant NOCOMPRESSIONMETHOD => 0;
+use constant INFLATECOMPRESSIONMETHOD => 1;
+use constant BYTEPAIRCOMPRESSIONMETHOD => 2;
+
+use constant NOTPAGED => 0;
+use constant UNPAGED => 1;
+use constant PAGED => 2;
+
+use constant NON_DEBUGGABLE => 0;
+use constant DEBUGGABLE => 1;
+use constant DEBUGGABLE_UDEBONLY => 2;
+
+my %plat = &main::PlatRec();
+my $CustomizedARMV5Plat = 0;
+
+if (($plat{'CUSTOMIZES'}) && (($plat{'ROOTPLATNAME'} eq "ARMV5") || ($plat{'ROOTPLATNAME'} eq "ARMV5_ABIV2"))) {
+# The following flag is set to handle the exceptions related to ARMV5 toolchain.
+	$CustomizedARMV5Plat = 1;		
+}
+
+#this fucntion will be used for cw_ide platform to update the PlatName and reinitialize the hashtable
+sub getVariableForNewPlat
+{
+	$PlatName = main::Plat();	
+	undef(%configVariables);
+}
+sub PMHelp_Mmp {
+
+# Help Text for ARM Platform, lists out the MMP keywords used incase of ARM Compiler
+	if($PlatName eq "ARMV5" || $PlatName eq "ARMV5_ABIV2" || $CustomizedARMV5Plat)
+	{
+		return &Armutl_Help_Mmp;
+	}
+	else
+	{
+		return "";
+	}
+}
+
+my $ToolChainIncDir;
+my @ToolChainLibList;
+my $ArmRT = 0;
+my %AsmFiles = ();
+my %AsmDirs = ();
+my $NamedSymLkup = 0;
+my $InterWorking = '';
+
+sub PMPlatProcessMmp (@) {
+	&InitToolChain(@_);
+	$ToolChainIncDir = &GetToolChainIncDir;
+	&main::SetStdIncPaths($ToolChainIncDir);
+	@ToolChainLibList = &GetLibList;
+# Variable to check if the target forms part of the run time libraries, if it is so
+# shouldn't be linked against itself or other runtime libs
+	$ArmRT = &IsTargetRT;
+	my @AsmFileList = &GetToolChainAsmFileList;
+	foreach (@AsmFileList) { $AsmFiles{ucfirst lc $_} = 1; }
+}
+
+my $preinclude;
+
+my $Makecmd;
+
+sub PMStartBldList($) {
+	($Makecmd) = @_;
+	my $ABI=&main::ABI;
+	my $BaseTrg=&main::BaseTrg;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @BldList=&main::BldList;
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $DefFile=&main::DefFile;
+	my $EPOCPath=&main::EPOCPath;
+	my $LinkAs=&main::LinkAs;
+	my $LibPath=&main::LibPath.'LIB\\';
+	my @MacroList=&main::MacroList();
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__";
+	push @MacroList, "__SYMBIAN_STDCPP_SUPPORT__" if ( StdCppTarget() );
+
+  	my $Plat=&main::Plat;
+  	my $Trg=&main::Trg;
+  	my $TrgType=&main::TrgType;
+  
+  # This horrible change (presumably to allow GCCE to work with edll.lib etc.
+  # produced by RVCT breaks SMP (and also breaks any optimized platform
+  # builds such as ARMV6, and also Thumb2 builds).
+  # Work round for now by conditioning the horrible change on the absence of
+  # SMP in the platform definition.
+  	my %PlatHash = &main::PlatRec();
+  	unless ($PlatHash{SMP}) {
+		my $myStatLinkPath;
+		$myStatLinkPath = "$E32env::Data{LinkPath}";
+		$myStatLinkPath .= "ARMV5";
+		&main::SetStatLinkPath($myStatLinkPath);
+	}
+
+	my $VariantFile=&ChangeSlash(&main::VariantFile);
+
+	my @UidList=&main::UidList;
+    my $SystemTrg = &main::SystemTrg;
+    my $ExportLibrary=&main::ExportLibrary;
+    my $NoExportLibrary=&main::NoExportLibrary;
+    # N.B. should get better way to detect kernel probably!!
+    $SystemTrg = 1 if ($ExportLibrary =~ /EKERN/i);
+
+    # N.B. should get better way to detect this
+    $SystemTrg = 1 if ($Trg =~ /KSRT/i);
+
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	my $PrimaryExportLibrary = $ExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+		$PrimaryExportLibrary = $ExtraExportLibrary;
+	}
+
+#	set up LinkAs
+	$UidList[2]=~/^0x(.*)$/o;
+	if ($1 ne '00000000') { # have to make sure than series of noughts in brackets doesn't appear in name for null uids
+		$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+	}
+
+	# Required for .lib generation
+	$InterWorking = ($ABI eq 'ARMV4') ? "" : "--inter";
+
+	# need to add config file for makmake invocation
+	my $config_file = BPABIutl_Config_Path($PlatName);
+
+	&main::Output("\n", "include $config_file\n", "\n");
+	&Generic_Header(0,$Makecmd, 1);	# define standard things using absolute paths and request that a make function
+									# is provided to provide optional conversion of absolute paths to Unix slashes
+
+# modified start: makefile improvement 
+	&main::Output(
+		"CHECKVMAP : CHECKVMAPUDEB CHECKVMAPUREL",
+		"\n"
+	);
+# modified end: makefile improvement 
+	if ($Makecmd eq "nmake") {
+		&main::Output(
+			"\n",
+  			"PATH=",&main::Path_Drive,$EPOCPath,"gcc\$(PBUILDPID)\\bin;\$(PATH)\n",
+			"\n"
+		);
+	}
+	else {
+		&main::Output(
+			"\n",
+			"# must set both PATH and Path to make it work correctly\n",
+  			"Path:=",&main::Path_Drive,$EPOCPath,"gcc\$(PBUILDPID)\\bin;\$(Path)\n",
+			"PATH:=\$(Path)\n",
+			"\n"
+		);
+	}
+
+	if ($BasicTrgType=~/^(DLL|EXE)/o)
+	{
+
+		my $OtherLinkerOpts;
+		my $toolchain = getConfigVariable('COMPILER_PLAT');
+		
+		# In case of GCCE releases, '--map' option was supported only from build 3.4.3 Q1C release
+		# Hence this is a special case, where GCCE platform is checked to ensure that the --map option
+		# is accepted in the correct relase. Even if the option is provided in the config file, it will be
+		# ignored for versions before 3.4.3 Q1C 2005 release.
+
+		# Check to be included in the Makefile, so that the map filename is provided as input only
+		# when the MAP option is supplied
+
+		&main::Output("ifdef LINKER_SYMBOLS_MAP_OPTION\n");
+		foreach (@BldList)
+			{
+			&main::Output("\t$_"."_MAP_FILE=\"\$(EPOCTRG$_)\\".&main::Trg($_).".map\"\n");
+			}
+		&main::Output("else\n");
+		foreach (@BldList)
+			{
+			&main::Output("\t$_"."_MAP_FILE=\n");
+			}
+		&main::Output("endif\n");
+
+		#	In some compiler toolchains, the start address may be required to be provided using the appropriate option.
+		#	Incase if the option is provided by the toolchain, then pass we need to pass in the start address.
+		&main::Output(
+			"\nifdef CODE_SEGMENT_START\n",
+			"\tCODE_SEGMENT_START += 0x8000 \n",
+			"endif\n",
+		);
+
+
+		# In some compiler toolchain, the symboled archives may have to be listed
+		&main::Output(
+			"ifdef START_GROUP_SYMBOL\n",
+			"\tEEXE_OBJECT=\$(START_GROUP_SYMBOL)UC_EXE_.o\$(END_GROUP_SYMBOL)\n",
+			"\tEDLL_OBJECT=\$(START_GROUP_SYMBOL)UC_DLL_.o\$(END_GROUP_SYMBOL)\n",
+			"\tDENTRY_OBJECT=\$(START_GROUP_SYMBOL)D_ENTRY_.o\$(END_GROUP_SYMBOL)\n",
+			"\tLENTRY_OBJECT=\$(START_GROUP_SYMBOL)L_ENTRY_.o\$(END_GROUP_SYMBOL)\n",
+			"\tXENTRY_OBJECT=\$(START_GROUP_SYMBOL)X_ENTRY_.o\$(END_GROUP_SYMBOL)\n",
+			"\tVENTRY_OBJECT=\$(START_GROUP_SYMBOL)V_ENTRY_.o\$(END_GROUP_SYMBOL)\n",
+			"\tKENTRY_OBJECT=\$(START_GROUP_SYMBOL)K_ENTRY_.o\$(END_GROUP_SYMBOL)\n",
+			"endif\n\n"
+		);
+		
+		# put the extra linker options from MMP file into the linker flags
+		$OtherLinkerOpts=&main::LinkerOption($toolchain);
+		
+		if($OtherLinkerOpts) {
+			&main::Output(
+				"\n# ADDITIONAL LINKER OPTIONS\n",
+				"ifdef SYMBIAN_UREL_LINK_FLAGS\n",
+				"\tSYMBIAN_UREL_LINK_FLAGS += $OtherLinkerOpts \n",
+				"else\n",
+				"\tSYMBIAN_UREL_LINK_FLAGS = $OtherLinkerOpts \n",
+				"endif\n",
+				"ifdef SYMBIAN_UDEB_LINK_FLAGS\n",
+				"\tSYMBIAN_UDEB_LINK_FLAGS += $OtherLinkerOpts \n",
+				"else\n",
+				"\tSYMBIAN_UDEB_LINK_FLAGS = $OtherLinkerOpts \n",
+				"endif\n\n"
+			);
+		}
+	}
+
+	&main::Output(
+		"INCDIR ="
+	);
+
+	PrintList("\"  \\\$(INCLUDE_OPTION) \$_\"", @ChopUserIncPaths);
+	PrintList("\" \\\$(INCLUDE_OPTION) \$_\"", @ChopSysIncPaths);
+
+	$ToolchainIncDir = &GetToolChainIncDir;
+
+	if($ToolchainIncDir ne '')
+	{
+		&main::Output(
+			" \$(INCLUDE_OPTION) ","\"$ToolchainIncDir\"");
+	}
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	#Function call logger takes -I as include option
+	my $FCLogger_inc_option = getConfigVariable('FC_LOGGER_INCLUDE_OPTION'); 
+	if ($Function_Call_Logger)	{
+		&main::Output(
+			"INCDIR_FCLOGGER  ="
+		);
+		PrintList("\" $FCLogger_inc_option \$_\"", @ChopUserIncPaths);
+		PrintList("\" $FCLogger_inc_option \$_\"", @ChopSysIncPaths);
+		$ToolchainIncDir = &GetToolChainIncDir;
+		if($ToolchainIncDir ne '')	{
+			&main::Output(
+				" $FCLogger_inc_option \"$ToolchainIncDir\""
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+  	# Set control warnings and errors options for building Standard C++ application
+  	if( StdCppTarget() ) {
+  		&main::Output("CC_WARNINGS_CONTROL_OPTION=\$(CC_STDCPP_WARNINGS_CONTROL_OPTION)","\n");
+  		&main::Output("CC_ERRORS_CONTROL_OPTION=\$(CC_STDCPP_ERRORS_CONTROL_OPTION)","\n");
+  		&main::Output("\n",	"\n");
+  	}
+  	
+	Read_BSF_Options() if ($plat{'CUSTOMIZES'});
+
+	my $kernelOption=0;
+	my $buildAsArmOption=0;
+	my $thumbOption=0;
+
+	if (SysTrg())
+	{
+		$kernelOption=1;
+	}
+	elsif (main::BuildAsARM() or ($ABI eq 'ARMV4'))
+	{
+		$buildAsArmOption=1;
+	}
+	else
+	{
+		$thumbOption=1;
+	}
+
+	my $OtherOpts = undef;	
+
+	my $toolchain = getConfigVariable('COMPILER_PLAT');
+
+	$OtherOpts = &main::CompilerOption($toolchain);
+
+	
+	if($kernelOption==1)
+	{
+		if(@kernelOptions) {
+# Kernel options as read from BSF file (KERNEL_OPTIONS keyword)
+			Set_BSF_Options('KERNEL_OPTIONS',\@kernelOptions);
+		}
+		$OtherOpts .= " \$(KERNEL_OPTIONS) ";
+	}
+	elsif($buildAsArmOption==1)
+	{	
+		if(@armOptions) {
+# Arm options as read from BSF file (ARM_OPTIONS keyword)
+			Set_BSF_Options('ARM_OPTIONS',\@armOptions);
+		}
+		$OtherOpts .= " \$(ARM_OPTIONS) ";
+	}
+	elsif($thumbOption==1)
+	{
+		if(@thumbOptions) {
+# Thumb options as read from BSF file (THUMB_OPTIONS keyword)
+			Set_BSF_Options('THUMB_OPTIONS',\@thumbOptions);
+		}
+		$OtherOpts .= " \$(THUMB_OPTIONS) ";
+	}
+
+	if($thumbOption==1 || $buildAsArmOption==1 || $kernelOption ==1 )
+	{
+		if (&main::ARMFPU && (&main::ARMFPU =~ /^VFPV2$/i))
+		{
+			$OtherOpts .=	" \$(VFP2MODE_OPTION) ";
+		}
+		else
+		{
+			$OtherOpts .=	" \$(SOFTVFPMODE_OPTION) ";
+		}
+	}
+
+	if ($thumbOption==1)
+	{
+		$OtherOpts .= " \$(COMPILER_THUMB_DEFINES) ";
+	}
+
+	$OtherOpts .= " \$(COMPILER_INTERWORK_DEFINES) ";
+
+	# Options to export symbols by default, for OE
+	if($TrgType=~/^STDDLL$/o || $TrgType=~/^STDEXE$/o || $TrgType=~/^STDLIB$/o) {
+		$OtherOpts .= " \$(OE_OPTIONS) ";
+	}
+
+	if($OtherOpts)
+	{
+		&main::Output(
+			"OTHEROPTIONS=$OtherOpts",
+			"\n",
+			"CCFLAGS += \$(OTHEROPTIONS)",
+			"\n"
+		);
+	}
+
+	if(@invariantOptions) {
+# Invariant options as read from BSF file (INVARIANT_OPTIONS keyword)
+		Set_BSF_Options('INVARIANT_OPTIONS',\@invariantOptions);
+	}
+
+	if(@commonOptions) {
+# Common options as read from BSF file (COMMON_OPTIONS keyword)
+		Set_BSF_Options('COMMON_OPTIONS',\@commonOptions);
+	}
+	
+	if(@linkerOptions) {
+# Linker options as read from BSF file (LD_OPTIONS keyword)
+		Set_BSF_Options('LD_OPTIONS',\@linkerOptions);
+	}	
+
+	if ($BasicTrgType=~/^LIB$/o) {
+		if(@archiverOptions) {
+# Archiver options as read from BSF file (AR_OPTIONS keyword)
+		Set_BSF_Options('AR_OPTIONS',\@archiverOptions);
+		}
+	}		
+
+	if(@debugFormat) {
+		Set_BSF_Options('DEBUG_FORMAT',\@debugFormat);
+	}	
+
+	&main::Output(
+		"CCDEFS = \$(COMPILER_DEFINES) "
+	);
+
+	PrintList("\" -D\$_\"", @MacroList);
+
+	&main::Output(
+		" \$(PLATFORM_DEFINES) "
+	);
+
+	&main::Output(
+
+	);
+
+	if($kernelOption==1)
+	{
+		&main::Output(
+			"-D__KERNEL_MODE__ "
+		);
+	}
+
+	if($VariantFile){
+		#Function Call Logger
+		if ($Function_Call_Logger) {
+			#FC Logger accepts product include file without path
+			my $file=&main::Path_Split('File', &main::VariantFile);
+			&main::Output(
+				" -D\"__PRODUCT_INCLUDE__=\\\"${file}\\\"\""
+			);
+		}
+		else {
+			&main::Output(
+				" -D__PRODUCT_INCLUDE__=\\\"${VariantFile}\\\""
+			);
+		}
+	}
+
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	if ( $RootName =~ /^ARMV5$/ ) {
+		# Now we know that the platform is either ARMV5 or a platform derived from
+		# ARMV5 (BSF).
+	
+		# See if an environment variable overrides the default DWARF version for
+		# this platform.
+		
+		my $env_dwarf_key = "ABLD_${PlatName}_DWARF";
+		my $env_dwarf_val = $ENV{$env_dwarf_key};
+
+		if ($env_dwarf_val) {
+			main::FatalError("The value of $env_dwarf_key is invalid.") unless ($env_dwarf_val =~ /^[23]$/);
+			main::FatalError("We don't support DWARF-2 on ARMV7.") if ($PlatName =~ /^ARMV7/ && $env_dwarf_val == 2);
+
+			&main::Output( "DEBUG_FORMAT=\$(DEBUG_FORMAT_DWARF$env_dwarf_val)\n\n");
+		}
+	}
+
+
+	foreach (@BldList) {
+		&main::Output(
+			"CC$_ = ", $IsProxyWrapperOption ? "$ENV{ABLD_COMPWRAP} ":"", "\$(CC) "
+		);
+
+		# SYMBIAN_UDEB/UREL_CCFLAGS don't have the optimisation levels.
+		if(&main::DebugSwitchUsed() ){
+			if(&main::SymbolicDebugEnabled() ) {
+				&main::Output(
+					" \$(SYMBIAN_UDEB_CCFLAGS) "
+				);
+			}
+			else {
+				&main::Output(
+					" \$(SYMBIAN_UREL_CCFLAGS) "
+				);
+			}
+		}
+		elsif (/DEB$/o) {
+			&main::Output(
+				" \$(SYMBIAN_UDEB_CCFLAGS) "
+			);
+		}
+		else {
+			&main::Output(
+				" \$(SYMBIAN_UREL_CCFLAGS) "
+			);
+
+		}
+		#Set the optimisation levels depending on whether it is a UREL or a UDEB build
+		if (/DEB$/o) {
+			&main::Output(
+				" \$(DEBUG_OPTIMISATION) "
+			);
+		}
+		else {
+		&main::Output(
+				" \$(REL_OPTIMISATION) "
+			);
+		}
+
+		&main::Output(
+			"\$(RUNTIME_SYMBOL_VISIBILITY_OPTION) "
+		);
+
+		if($kernelOption == 0)
+		{
+			&main::Output(
+				"\$(EXCEPTIONS) "
+			);
+		}
+		&main::Output(
+			'$(CCFLAGS) '
+		);
+
+		my @ml = &main::MacroList($_);
+		PrintList("\" -D\$_\"", @ml);
+
+		&main::Output(
+			" \$(CCDEFS)\n"
+		);
+		my @mmpReplaceOptions = &main::ReplaceOptions($toolchain);
+		
+		if (@mmpReplaceOptions)
+		{
+			my $OptionPrefix = getConfigVariable('OPTION_PREFIX');
+			my $Pattern;
+
+			# Set the value of '$Pattern' which is required to segregate one option from another based on the option prefix.
+			if($OptionPrefix) 
+			{
+				$Pattern = $OptionPrefix.'\S+\s*(?!'.$OptionPrefix.')\S*';
+			}
+			else 
+			{
+				# If option prefix is not set in the configuration make file, then set default
+				# option prefix as '-' or '--'.
+				$Pattern = '-{1,2}\S+\s*(?!-)\S*';
+			}
+
+			foreach my $options (@mmpReplaceOptions) 
+			{
+				my @opts = $options =~ /$Pattern/g;
+				my $count = 0;
+
+				while ($count <= $#opts) 
+				{
+					my $opt;
+					my $rep;
+					if ($opts[$count] =~ /^(\S+)\s+(\S+)$/) 
+					{
+						$opt = $1;
+						$rep = $2;
+						&main::Output(
+							"CC$_ := \$(subst $opt ,@@,\$(CC$_))\n",
+							"CC$_ := \$(CC$_:@@%=$opt $rep)",							
+							"\n"
+						);			
+						$count++;
+					}
+					else
+					{
+						$opt = $opts[$count];
+						$rep = $opts[$count+1];
+						
+						# Substitute '=' with '%' which is a wild card character in makefile.					
+						$opt =~ s/=/%/;
+					
+						&main::Output(
+							"CC$_ := \$(CC$_:$opt=$rep)",
+							"\n"
+						);							
+						$count+=2;
+					}
+				}
+			}
+		}
+		&main::Output(
+			"\n"
+		);
+	}
+
+	&main::Output(		
+		"\n"
+	);
+
+	#Function call logger
+	if ($Function_Call_Logger)	{
+		#Send all the debug macros to logger
+		foreach (@BldList) {
+			&main::Output
+			(
+				"FCLOGGER$_ = ", 
+				$EPOCPath, 
+				"tools\\fc_logger\\edgcpfe"
+			);
+
+			my @ml = &main::MacroList($_);
+			PrintList("\" -D\$_\"", @ml);
+			if ($thumbOption==1) {
+				&main::Output(
+					" \$(COMPILER_THUMB_DEFINES)"
+				);
+			}
+			&main::Output(" \$(COMPILER_INTERWORK_DEFINES)",
+						  " \$(CCDEFS)",
+						  " \$(FC_LOGGER_DEFINES)",
+						  " \$(FC_LOGGER_OPTION)");
+			&main::Output(
+				"\n",
+				"\n"
+			);
+		}
+	}
+	
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+
+		if ($BasicTrgType !~ /IMPLIB/io) {
+			&main::Output (
+				" \\\n\t",
+				&Generic_Quote("\$(EPOCTRG$_)\\".&main::Trg($_))
+			);
+		}
+
+#		lib has to come after the main target so that a .DEF file will be generated if the project is not frozen
+		if ($DefFile and not &main::ExportUnfrozen) {
+			&main::Output(
+				" \\\n",
+				"\tLIBRARY\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	# Resource building is done entirely via cl_generic.pm
+	PrintList("\"\nRESOURCE\$_ : MAKEWORK\$_\"", @BldList);
+	&main::Output(
+		"\n",
+		"\n",
+	);
+
+	&main::Output(
+		"LIBRARY : MAKEWORKLIBRARY"
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+#		code to ensure that the static libraries for all builds are built at the library stage
+			PrintList("\" \$_\"", @BldList);
+	}
+	elsif ($DefFile and !$NoExportLibrary) {
+		unless (&main::ExportUnfrozen) {
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				if ($PlatName =~ /^ARMV5$/) {
+					&main::Output(
+						" ", &Generic_Quote("\$(EPOCLIB)\\LIB\\$PrimaryExportLibrary.dso"),
+						" ", &Generic_Quote("\$(EPOCLIB)\\LIB\\$PrimaryExportLibrary.lib"), "\n"
+					);
+				}
+				else {
+					&main::Output(
+						" ", &Generic_Quote("\$(EPOCLIB)\\LIB\\$PrimaryExportLibrary.dso"), "\n"
+					);
+				}
+			}
+			else {
+				&main::Output(
+					"\n",
+					"\t\@echo WARNING: Not attempting to create any import libraries.\n",
+					"\t\@echo When exports are frozen in \"$DefFile\", regenerate Makefile.\n"
+				);
+			}
+		} else {
+			&main::Output(
+				"\n",
+				"\t\@echo Not attempting to create \"\$(EPOCLIB)\\LIB\\$PrimaryExportLibrary.dso\"\n",
+				"\t\@echo from frozen .DEF file, since EXPORTUNFROZEN specified.\n"
+			);
+		}
+
+		my $theDefFile = $DefFile;
+		$theDefFile = "\$(EPOCBLD)\\$BaseTrg.def" unless (-e $DefFile);
+		&main::Output(
+			"\n",
+			"\n",
+			"# REAL TARGET - LIBRARY (.dso) \n",
+			"\n",
+			&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.dso"), " : ",
+			&Generic_Quote($DefFile), "\n",
+				"\tperl -S prepdef.pl ", &Generic_Quote($DefFile), " \"\$(EPOCBLD)\\$ExportLibrary.prep.def\"\n",
+				"\telf2e32 --definput=\"\$(EPOCBLD)\\$ExportLibrary.prep.def\" --dso=",
+				&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.dso"),
+				" --linkas=$LinkAs\n",
+			"\n"
+		 );
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\n",
+				&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.dso"), " : ",
+				&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.dso"), "\n",
+				"\tcopy \"\$<\" \"\$@\"\n"
+			);
+		}
+
+		# Generate .lib files which will be used for ARMV5_ABIV1 platform (ABIV1 mode toolchain)
+		# Only for ARMV5 platform
+		if ($PlatName =~ /^ARMV5$/)
+		{
+			&main::Output(
+				"\n",
+				"\n",
+				"# REAL TARGET - LIBRARY (.lib) \n",
+				"\n",
+				&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.lib"), " : ",
+				&Generic_Quote($DefFile), "\n",
+					"\tperl -S prepdef.pl ", &Generic_Quote($DefFile), " \"\$(EPOCBLD)\\$ExportLibrary.prep.def\"\n",
+					"\tdef2dll.bat --path=\$(EPOCLIB)\\LIB \\\n\t\t--bldpath=\$(EPOCBLD) \\\n\t\t--import=$ExportLibrary \\\n",
+					"\t\t--deffile=\"\$(EPOCBLD)\\$ExportLibrary.prep.def\" \\\n\t\t--linkAs=$LinkAs \\\n\t\t$InterWorking\n",
+					"\n",
+			);
+			if ($ExtraExportLibrary) {
+				&main::Output(
+					"\n",
+					&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.lib"), " : ",
+					&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.lib"), "\n",
+					"\tcopy \"\$<\" \"\$@\"\n"
+				);
+			}
+		}
+	}
+
+	my $freezeDir = &main::Path_Split('Path', $DefFile);
+	chop($freezeDir);
+
+	# dummy rule for def files to cope with filename case differences
+	unless (&main::ExportUnfrozen) {
+		if (-e $DefFile) { # effectively "if project frozen ..."
+			&main::Output(
+				"\n",
+				"\n",
+				&Generic_Quote($DefFile), " : ", "\n",
+				"\t\@rem Do nothing\n",
+			);
+		}
+	}
+
+	&main::Output(
+		"\n",
+		"\n",
+		&Generic_Quote($freezeDir), " : ", "\n",
+		"\tperl -S emkdir.pl \$\@\n",
+	);
+
+	&main::Output(
+		"\n",
+		"\n",
+		"FREEZE : ",
+		&Generic_Quote($freezeDir), "\n",
+	);
+	if ($DefFile and $BasicTrgType!~/^IMPLIB$/io) {
+#		call perl on the script here so make will die if there are errors
+#           - this doesn't happen if calling perl in a batch file
+		&main::Output( "\tperl -S efreeze.pl \$(EFREEZE_ALLOW_REMOVE) \"$DefFile\" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n" );
+	}
+	else {
+		&main::Output( "\tperl -e \"print \\\"warning: freeze could not be supported or \\
+		         you need to declare an explicitly specified def file using the keyword \\
+			 DEFFILE in the MMP file!\\n\\\"\""); 
+	}
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+	if ($DefFile and !$NoExportLibrary) {
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCLIB)\\LIB\\$ExportLibrary.dso\"\n"
+		);
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\t-\$(ERASE) \"\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.dso\"\n"
+			);
+		}
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}");
+
+	&Generic_Releaseables;
+}
+
+
+sub PMBld {
+
+    my $ABI=&main::ABI;
+    my @ASSPLibList=&main::ASSPLibList;
+    my @SrcList=&main::SrcList;
+    my $FeatureVariantBaseTrg=&main::FeatureVariantBaseTrg;
+    my $Bld=&main::Bld;
+    my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+    my $DefFile=&main::DefFile;
+    my $EPOCIncPath=&main::EPOCIncPath;
+    my $FirstLib=&main::FirstLib;
+    my $BasicTrgType=&main::BasicTrgType;
+    my @LibList;
+    my @RTLibList = &GetRTLibList();
+    my $SystemTrg = &main::SystemTrg;
+    my $LibPath= &main::LibPath;
+    my $LinkAs=&main::LinkAs;
+    my $ExportLibrary=&main::ExportLibrary;
+    my $NoExportLibrary=&main::NoExportLibrary;
+    # N.B. should get better way to detect kernel probably!!
+    $SystemTrg = 1 if ($ExportLibrary =~ /EKERN/i);
+    my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+    my $RelPath=&main::RelPath;
+    my @StatLibList=&main::StatLibList;
+    my $StatLinkPath=&main::StatLinkPath;
+    my $Trg=&main::Trg;
+    my $TrgType=&main::TrgType;
+    my @UidList=&main::UidList;
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+	}
+	my $objectFiles;
+
+    if ($Bld =~ /DEB/) {
+	@LibList = &main::DebugLibList;
+    } else {
+	@LibList = &main::LibList;
+    }
+
+#	set up $LinkAs
+    $UidList[2]=~/^0x(.*)$/o;
+    if ($1 ne '00000000') {	# have to make sure than series of noughts in brackets doesn't appear in name for null uids
+	$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+    }
+
+
+    # REAL TARGETS
+    #-------------
+    &main::Output(
+		  "# REAL TARGET - BUILD VARIANT $Bld\n",
+		  "\n"
+		  );
+
+#	releasables
+	my @releaseables;
+
+	push @releaseables, "$RelPath$Trg" if ($BasicTrgType!~/^IMPLIB$/io);
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		push @releaseables, "$RelPath$Trg.map";
+	}
+	if (-e $DefFile and !$NoExportLibrary) { # effectively "if project frozen ..."
+		push @releaseables, "$LibPath$ExportLibrary.dso";
+		push @releaseables, "$LibPath$ExtraExportLibrary.dso" if ($ExtraExportLibrary);
+		if ($PlatName =~ /^ARMV5$/)	{
+			push @releaseables, "$LibPath$ExportLibrary.lib";
+			push @releaseables, "$LibPath$ExtraExportLibrary.lib" if ($ExtraExportLibrary);
+		}
+	}
+
+	push @releaseables, &main::FeatureVariantVMapFile() if &main::FeatureVariantVMapFile();
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+	
+	&Generic_WhatTargets($Bld, "WHAT$Bld", @releaseables);
+	my @cleantargets = (@releaseables, "$RelPath$ExtraExportLibrary.sym");
+	
+	if (-e $DefFile and !$NoExportLibrary) { # effectively "if project frozen ..."
+		&Generic_CleanTargets($Bld, "CLEANRELEASE$Bld", @cleantargets);
+	}
+	else {
+		push @cleantargets, "$LibPath$ExportLibrary.dso";
+			push @cleantargets, "$LibPath$ExtraExportLibrary.dso" if ($ExtraExportLibrary);
+		if ($PlatName =~ /^ARMV5$/) {
+            push @cleantargets, "$LibPath$ExportLibrary.lib";
+            push @cleantargets, "$LibPath$ExtraExportLibrary.lib" if ($ExtraExportLibrary);
+		}
+			&Generic_CleanTargets($Bld, "CLEANRELEASE$Bld", @cleantargets);
+	}
+	
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopBldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopRelPath);
+
+	return if ($BasicTrgType=~/^IMPLIB$/io);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+		if ($Ext =~ /cia/i && ($PlatName ne "GCCE")) {
+			$BaseSrc = "$BaseSrc\_";
+		}
+		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	#Compiler wrapper support starts
+	if($IsCompilerWrapperOption)
+	{
+		my $Platcmpwrap=&main::Plat;
+		
+		&main::Output(
+			"COMPWRAP$Bld : OUTPUT_NAME = ",
+			"$Platcmpwrap\_$Bld",
+			"\n"
+		);
+		
+		&main::Output(
+			"COMPWRAP$Bld : MAKEWORK$Bld"
+		);
+
+		foreach (@SrcList) {
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			&main::Output(
+				" \\\n\tCOMPWRAP$Bld$BaseSrc"
+			);
+		}
+
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+	#--Compiler wrapper support ends
+
+	# Flag that tells us wheter to run checklib.exe on user-added static libraries.
+	my $run_checklib = 0;
+
+  	if (@StatLibList && $BasicTrgType =~ /^(EXE|DLL)$/o && !$SystemTrg && main::StdCppSupport()) {
+		# There are user-added static libraries. They should be checked for
+		# consistent use of operator new.
+		$run_checklib = 1;
+
+		#Create a make variable for the libraries.
+		main::Output("\nUSER_ADDED_ARCHIVES_$Bld=");
+		PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCSTATLINK$Bld\)\\\\\$_\"\)", @StatLibList);
+		main::Output("\n\n");
+	}
+
+	&main::Output(
+		"LIBS$Bld="
+	);
+        
+	my @depLibs;
+	if ($BasicTrgType=~/^DLL$/o) { # Add the DLL stub library
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\EDLLSTUB.lib")
+		);
+		push @depLibs, &Generic_Quote("\$(EPOCSTATLINK$Bld)\\EDLLSTUB.lib");
+	}
+        
+	my $StaticRTLib = "";
+
+
+	if ($SystemTrg) {
+		$StaticRTLib = "ksrt";
+	}
+	else {
+		$StaticRTLib = "usrt";
+	}
+
+	if ($RVCTVersion) {
+		$StaticRTLib .= $RVCTVersion;
+	}
+	elsif ($GCCEVersion) {
+		if ($GCCEMajorVersion < 4) {
+			$StaticRTLib .= "2_2";
+		}
+		else {
+			$StaticRTLib .= "3_1";
+		}
+	}
+	else {
+		$StaticRTLib .= "2_2";
+	}
+
+	&main::Output(" \\\n\$(EPOCSTATLINK$Bld)\\$StaticRTLib\.lib");
+
+	&main::Output(" \\\n\t",getConfigVariable('VIA_FILE_PREFIX'));
+	PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCBSFSTATLINK$Bld\)\\\\\$_\"\)", @StatLibList);
+	&main::Output(" \\\n\t",getConfigVariable('VIA_FILE_SUFFIX'));
+	
+	@depLibs = (@depLibs, DepLinkList("\&Generic_Quote\(\"\\\$\(EPOCBSFSTATLINK$Bld\)\\\\\$_\"\)", @StatLibList));
+	
+	
+	my @ImportLibList = ImportLibraryList(@LibList);
+	PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCLIB\)\\\\LIB\\\\\$_\"\)", @ImportLibList);
+	@depLibs = (@depLibs, DepLinkList("\&Generic_Quote\(\"\\\$\(EPOCLIB\)\\\\LIB\\\\\$_\"\)", @ImportLibList));
+        
+	if ($TrgType=~/^STDEXE$/o || $TrgType=~/^STDDLL$/o) {
+		$NamedSymLkup = 1;
+		my @OEImportLibraryList = &GetOEImportLibList();
+		@OEImportLibraryList = ImportLibraryList(@OEImportLibraryList);
+		if(not (grep /^libc.dso$/i, @LibList)) {
+				push @OEImportLibraryList, "libc.dso";
+		}
+		PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCLIB\)\\\\LIB\\\\\$_\"\)", @OEImportLibraryList);
+		@depLibs = (@depLibs, DepLinkList("\&Generic_Quote\(\"\\\$\(EPOCLIB\)\\\\LIB\\\\\$_\"\)", @OEImportLibraryList));
+	}
+
+	unless ($ArmRT || ($BasicTrgType=~/^LIB$/o)) {
+		my $TargLib = "$ExportLibrary.dso";
+		$TargLib =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+		unless ($SystemTrg) {
+			foreach (@RTLibList) {
+  				# Ignore the empty file name      Modified by Kun Xu for DEF126030 on 06/08/2008
+  				if(!$_) 
+  				{
+  					next;		
+  				}
+				&main::Output(
+					" \\\n\t",
+					&Generic_Quote("\$(EPOCLIB)\\LIB\\$_")
+				) unless ($_ =~ /$TargLib/i);
+				push @depLibs, &Generic_Quote("\$(EPOCLIB)\\LIB\\$_") unless ($_ =~ /$TargLib/i);
+			}
+		}
+	}
+    #OE Glue Code 
+	if ($TrgType=~/^STDEXE$/o) {
+		my @OELibList = &GetOELibList();
+		foreach (@OELibList) {
+			&main::Output(
+				" \\\n\t",
+				&Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_"),
+			);
+			push @depLibs, &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_");
+		}
+	}
+	PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\$_\"\)", @ToolChainLibList);
+                
+	&main::Output(
+		"\n",
+		"\n"
+	);
+        
+	main::Output(
+                "LIBS$Bld" . "DEPS="
+	);
+        
+	my @tmp;
+	for my $lib (@depLibs)
+	{
+            $lib =~ s/\(.*\.o\)//;
+            $lib =~ s/\\$//;
+            push @tmp, $lib unless ($lib =~ /-\(/ || $lib =~ /-\)/);
+	}
+                
+	PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\$_\"\)", @tmp);
+        
+	&main::Output(
+			"\n",
+			"\n"
+	);
+
+	&main::Output(
+		"VTBLEXPORTS$Bld="
+	);
+        my $vtobj = quotemeta("(VtblExports.o)");
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+        &main::Output(
+			"OBJECTS$Bld="
+		);
+        foreach (@SrcList) {
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+		if ($Ext =~ /cia/i && ($PlatName ne "GCCE")) {
+			$BaseSrc = "$BaseSrc\_";
+		}
+
+			&main::Output(
+				" \\\n\t",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o")
+			  );
+
+			$objectFiles .= &main::BldPath.$BaseSrc.".o ";
+	}
+        &main::Output(
+			"\n",
+		"\n"
+	);
+
+	# IsCustomDllUseCase() subroutine is called to check if the given executable 
+	# is a custom dll or not.
+	my $IsCustomDll = IsCustomDllUseCase();
+
+	if ($IsCustomDll) 
+	{
+		# Generate ".bin" file(assembly listing file) only if frozen deffile is present and EXPORTUNFROZEN is not specified
+		# in the Mmp file.
+		if((-e $DefFile) && (!&main::ExportUnfrozen))
+		{
+			&main::Output(
+				"EXPFILE$Bld = \$(EPOCBLD$Bld)\\$ExportLibrary.bin \n",			
+				"\n"
+			);
+		}
+		else 
+		{
+			&main::Output(
+				"EXPFILE$Bld = \n",
+				"\n"
+			);
+		}		
+	}
+	
+	# Create "via" file containing all object files in order to reduce
+	# command line lengths in pertinent calls
+	my $objectsViaFile = &main::CommandFile();
+	my $viaoption = getConfigVariable('COMMANDFILE_OPTION');
+	
+    if ($BasicTrgType=~/^LIB$/o && StdCppTarget() ) {
+
+        # Add the magic object that identifies the library as a STDLIB.
+        $objectFiles .= "$ENV{EPOCROOT}epoc32/tools/tag/tag_elf";
+	}
+
+	$objectFiles =~ s/\\/\//g ;
+
+	&main::CreateExtraFile($objectsViaFile, $objectFiles);
+		 
+		   &main::Output(
+			 &Generic_Quote("\$(EPOCTRG$Bld)\\$Trg"),
+			 " : \$(OBJECTS$Bld) \$(LIBS". $Bld . "DEPS)"
+            );
+
+	if (-e $DefFile) { # effectively "if project frozen ..."
+		&main::Output(
+			" ", &Generic_Quote($DefFile)
+		);
+	}
+
+	if($IsCustomDll eq 1)
+	{
+		&main::Output( " \$(EXPFILE$Bld) " );	
+	}
+
+    &main::Output("\n");
+
+
+#       get rid of any -symbols produced .map file
+        if ($BasicTrgType=~/^(DLL|EXE)/o) {
+			&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCTRG$Bld)\\$Trg.map\" \n"
+		);
+		}
+
+		my $AbsentSubst = '';
+		if ($BasicTrgType=~/^(DLL|EXE)/o) {
+
+			if ($run_checklib) {
+				my $checklib = "checklib";
+
+				if ( StdCppTarget() ) {
+					$checklib .= " stdc++ --elf";
+				}
+				else {
+					$checklib .= " symc++ --elf";
+				}
+
+				&main::Output( "\t$checklib ","\$(USER_ADDED_ARCHIVES_$Bld)\n" );
+			}
+
+			my $WrapLD = $IsProxyWrapperOption ? "$ENV{ABLD_COMPWRAP} " : "";
+			if ($Bld =~ /DEB/)
+			{
+				if($PlatName ne "GCCE"){
+					# if the compiler is RVCT then append SYMBIAN_UDEB_LINK_FLAGS to option string 
+					# in order to override the default ones. 
+					&main::Output(
+						"\t", $WrapLD, "\$(LD) ","\$(STATIC_LIBS) ", "\$(SHARED_OBJECT_OPTION) ",
+						"\$(CODE_SEGMENT_START) ", "\$(DATA_SEGMENT_START) 0x400000 ", "\$(SYMVER_OPTION) ", "\$(SYMBIAN_UDEB_LINK_FLAGS) ", "\$(SO_NAME_OPTION) ","$LinkAs"
+					); 
+				} else {
+					&main::Output(
+						"\t", $WrapLD, "\$(LD) ","\$(STATIC_LIBS) ","\$(SYMBIAN_UDEB_LINK_FLAGS) ", "\$(SHARED_OBJECT_OPTION) ",
+						"\$(CODE_SEGMENT_START) ", "\$(DATA_SEGMENT_START) 0x400000 ", "\$(SYMVER_OPTION) ","\$(SO_NAME_OPTION) ","$LinkAs"
+					);
+				}
+			}
+			else
+			{
+				if($PlatName ne "GCCE"){
+					# if the compiler is RVCT then append SYMBIAN_UREL_LINK_FLAGS to option string 
+					# in order to override the default ones. 
+					&main::Output(
+						"\t", $WrapLD, "\$(LD) ","\$(STATIC_LIBS) ","\$(SHARED_OBJECT_OPTION) ",
+						"\$(CODE_SEGMENT_START) ", "\$(DATA_SEGMENT_START) 0x400000 ", "\$(SYMVER_OPTION) ", "\$(SYMBIAN_UREL_LINK_FLAGS) ", "\$(SO_NAME_OPTION) ", "$LinkAs"
+					);
+				} else {
+					&main::Output(
+						"\t", $WrapLD, "\$(LD) ","\$(STATIC_LIBS) ","\$(SYMBIAN_UREL_LINK_FLAGS) ","\$(SHARED_OBJECT_OPTION) ",
+						"\$(CODE_SEGMENT_START) ", "\$(DATA_SEGMENT_START) 0x400000 ", "\$(SYMVER_OPTION) ","\$(SO_NAME_OPTION) ","$LinkAs"
+					);
+				}
+			}
+
+			if(&main::DebugSwitchUsed()){
+				if(&main::SymbolicDebugEnabled() ) {
+					&main::Output(
+						" \$(LINKER_DEBUG_OPTION) "
+					);
+				}
+				else {
+					&main::Output(
+						" \$(LINKER_NODEBUG_OPTION) "
+					);
+				}
+			}
+			elsif($Bld =~/DEB/){
+				&main::Output(
+					" \$(LINKER_DEBUG_OPTION) "
+				);
+			}
+			else {
+				&main::Output(
+					" \$(LINKER_NODEBUG_OPTION) "
+				);
+			}
+
+			my $EntrySymbol;
+			if ($BasicTrgType=~/^DLL$/o) {
+				$EntrySymbol = '_E32Dll';
+			}
+			elsif ($BasicTrgType=~/^EXE$/o) {
+				$EntrySymbol = '_E32Startup';
+			}
+			if ($EntrySymbol) {
+				$AbsentSubst = " --absent $EntrySymbol";
+			}
+
+			if (($BasicTrgType=~/^DLL$/o) || ($BasicTrgType=~/^EXE$/o)) {
+				&main::Output(
+					" \$(LINKER_ENTRY_OPTION)",
+					" $EntrySymbol "
+					);
+				my $undefined_option = getConfigVariable('UNDEFINED_SYMBOL_REF_OPTION');
+				if ($undefined_option)
+				{
+					&main::Output(
+						" \$(UNDEFINED_SYMBOL_REF_OPTION)",
+						" $EntrySymbol "
+					);
+				}
+			}
+
+			if ($BasicTrgType=~/^DLL$/o) {
+				# get the right object file for the entry point
+				my $ObjFile="\$(EDLL_OBJECT)";
+				if ($FirstLib =~ /EDEV/i) {
+					$ObjFile="\$(DENTRY_OBJECT)";
+				}
+				if ($FirstLib =~ /EKLL/i) {
+					$ObjFile="\$(LENTRY_OBJECT)";
+				}
+				if ($FirstLib =~ /EEXT/i) {
+					$ObjFile="\$(XENTRY_OBJECT)";
+				}
+				if ($FirstLib =~ /EVAR/i) {
+					$ObjFile="\$(VENTRY_OBJECT)";
+				}
+
+				&main::Output(
+					" \$(EPOCSTATLINK$Bld)\\$FirstLib", "$ObjFile",
+					" \$(EPOCSTATLINK$Bld)\\$FirstLib", " \\", "\n"
+				);
+			} elsif ($BasicTrgType=~/^EXE$/o || $TrgType=~/^EXEXP$/o) {
+				# get the right object file for the entry point
+				my $ObjFile="\$(EEXE_OBJECT)";
+				if ($FirstLib =~ /KC_EXE/i) {
+					$ObjFile="\$(KENTRY_OBJECT)";
+				}
+
+				&main::Output(
+					" \$(EPOCSTATLINK$Bld)\\$FirstLib", "$ObjFile",
+					" \$(EPOCSTATLINK$Bld)\\$FirstLib", " \\", "\n"
+				);
+			}
+
+			&main::Output(
+				"\t\t\$(LINKER_OUTPUT_OPTION) \"\$(EPOCBLD$Bld)\\$Trg\" \\\n",
+#				"\t\t\$(OBJECTS$Bld) \\\n"
+			);
+
+		&main::Output(
+			"\t\t\$(LINKER_SYMBOLS_MAP_OPTION) ",
+			"\$(","$Bld","_MAP_FILE) \\\n"
+		);
+
+		# Pass in the command file if the command file option is passed in
+		if($viaoption) {
+                        #'@' is for GCCE whos version is not 3.4.3
+			if($viaoption eq '@'){
+				main::Output(
+					"\t\t$viaoption$objectsViaFile \\\n"
+				);
+			}
+                        #'-via' is for RVCT 
+			else{
+				main::Output(
+					"\t\t$viaoption $objectsViaFile \\\n"
+				);
+			}
+		}
+		else {
+			&main::Output(
+				"\t\t\$(OBJECTS$Bld) \\\n"
+			);
+		}
+
+		if($IsCustomDll eq 1) {
+			&main::Output( "\t\t\$(EXPFILE$Bld) \\\n" );
+		}
+
+			&main::Output(
+				"\t\t\$(LIBS$Bld) \\\n",
+				"\t\t\$(VTBLEXPORTS$Bld) \$(USERLDFLAGS) \n"
+			);
+
+			if(&main::DebugSwitchUsed() ){
+				if(&main::SymbolicDebugEnabled() ) {
+				&main::Output(
+					"\tcopy \"\$(EPOCBLD$Bld)\\$Trg\" \"\$(EPOCTRG$Bld)\\$FeatureVariantBaseTrg.sym\"\n"
+					);
+				}
+			}
+			elsif ($Bld=~/^U?DEB$/o) {
+				   &main::Output(
+				   "\tcopy \"\$(EPOCBLD$Bld)\\$Trg\" \"\$(EPOCTRG$Bld)\\$FeatureVariantBaseTrg.sym\"\n"
+			   );
+			}
+		if (-e $DefFile) {
+			&main::Output(
+				"\tcopy ", &Generic_Quote(("\"$DefFile\"")), " \"\$(EPOCBLD)\\$ExportLibrary.prep.def\"\n",
+			);
+		}
+
+		&main::Output(
+			"\telf2e32 --sid=", &main::SecureId(), " "
+		);
+
+		if (&main::IsDebuggable eq DEBUGGABLE) {
+			&main::Output(
+				' --debuggable '
+			);
+		}
+
+		if (&main::IsDebuggable eq DEBUGGABLE_UDEBONLY) {
+			if ($Bld=~/^UDEB$/o) {
+				&main::Output(
+				' --debuggable '
+				);
+			}
+		}
+		
+		# Do not export Arm Static Library Symbols
+		if (&Armutl_ArmLibList) {
+			&main::Output(
+				' --excludeunwantedexports'
+			);
+		}
+
+		if ($IsCustomDll eq 1) {
+			&main::Output(
+				' --customdlltarget'
+			);
+		}
+		if (keys(%Version)) {
+			&main::Output(
+				' --version=', &Genutl_VersionToUserString(%Version)
+			);
+		}
+		# exexps are allowed data, but they look like dlls to elftran....
+		if (&main::AllowDllData || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			&main::Output(
+				' --dlldata'
+			);
+		}
+		if (&main::DataLinkAddress) {
+			&main::Output(
+				' --datalinkaddress=',&main::DataLinkAddress
+			);
+		}
+		if (&main::FixedProcess) {
+			&main::Output(
+				' --fixedaddress'
+			);
+		}
+		if (&main::HeapSize) {
+			my %HeapSize=&main::HeapSize;
+			&main::Output(
+				' --heap=',$HeapSize{Min},',',$HeapSize{Max}
+			);
+		}
+		if (&main::ProcessPriority) {
+			&main::Output(
+				' --priority=',&main::ProcessPriority
+			);
+		}
+		if (&main::StackSize) {
+			&main::Output(
+				' --stack=',&main::StackSize
+			);
+		}
+		&main::Output(
+			"\\\n\t\t"
+		);
+
+		my $i=1;
+		foreach (@UidList) {
+			&main::Output(
+				" --uid$i=$_"
+			);
+			$i++;
+		}
+		if(&main::VendorId) {
+			&main::Output(
+				' --vid=',&main::VendorId
+			);
+		}
+		&main::Output(
+			"\\\n\t\t"
+		);
+
+		&main::Output(
+			' --capability=',&main::Capability
+		);
+
+		my $vfpv2_support = getConfigVariable('VFP2MODE_OPTION');
+		if ($vfpv2_support && &main::ARMFPU && (&main::ARMFPU =~ /^VFPV2$/i))
+		{
+			&main::Output(
+				' --fpu=vfpv2'
+			);
+		}
+		else
+		{
+			&main::Output(
+				' --fpu=softvfp'
+			);
+		}
+
+		if (&main::SmpSafe)
+		{
+			&main::Output(
+				' --smpsafe'
+			);
+		}
+
+
+		if(($BasicTrgType=~/^DLL/ && $TrgType!~/^DLL/ ) || $TrgType=~/^EXEXP/ || $TrgType=~/^STDEXE/){
+			&main::Output(
+				' --targettype=',$TrgType
+				);
+		}
+		else{
+			&main::Output(
+				' --targettype=',$BasicTrgType
+				);
+		}
+
+		&main::Output(
+			' --output=',"\"\$\@\""
+			);
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			if (-e $DefFile) {
+				&main::Output(
+					' --definput=',"\"\$(EPOCBLD)\\$ExportLibrary.prep.def\""
+					);
+			}
+			# Non-callable exports will be ignored if the MMP file does not contain the DEFFILE keyword or contains the NOEXPORTLIBRARY keyword			 
+			if (!($DefFile) || $NoExportLibrary) {				
+				&main::Output( " --ignorenoncallable" );
+			}
+			&main::Output(
+				' --dso=',
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$ExportLibrary.dso")
+				);
+			&main::Output(
+				' --defoutput=',
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$ExportLibrary.def")
+				);
+				if(&main::ExportUnfrozen) {
+					&main::Output( ' --unfrozen ');
+				}
+			}
+		#the input elf file - as the last arg
+		&main::Output(
+			" --elfinput=","\"\$(EPOCBLD$Bld)\\$Trg\"",
+			" --linkas=$LinkAs"
+			);
+		if (&main::CompressTarget)
+			{
+			&main::Output(
+			" --uncompressed"
+			);
+			}
+		else
+			{
+			if(&main::CompressTargetMode == NOCOMPRESSIONMETHOD)
+			{
+				# Do nothing
+			}
+			elsif(&main::CompressTargetMode == INFLATECOMPRESSIONMETHOD)
+			{
+			&main::Output(
+				" --compressionmethod inflate"
+			);
+			}
+			elsif(&main::CompressTargetMode == BYTEPAIRCOMPRESSIONMETHOD)
+			{
+			&main::Output(
+				" --compressionmethod bytepair"
+			);
+			}
+
+			}
+		
+		if($NamedSymLkup){
+			&main::Output(" --namedlookup"
+		);
+		}
+
+		&main::Output(
+		" --libpath=", "\"\$(EPOCLIB)\\LIB\""
+		);
+
+		if($BasicTrgType=~/^DLL/ && $TrgType!~/^DLL/){
+			my $Export;
+			my $Ordinal=1;
+			foreach $Export (&main::Exports) {
+				if($Ordinal == 1) {
+				&main::Output(" --sysdef=");
+				}
+				&main::Output(
+					"$Export,$Ordinal; "
+				);
+				$Ordinal++;
+			}
+		}
+
+		if (&main::CodePagingTargetMode == UNPAGED) {
+			&main::Output(
+				' --codepaging=unpaged'
+			);
+		}
+		elsif (&main::CodePagingTargetMode == PAGED) {
+			&main::Output(
+				' --codepaging=paged'
+			);
+		}
+
+		if (&main::DataPagingTargetMode == UNPAGED) {
+			&main::Output(
+				' --datapaging=unpaged'
+			);
+		}
+		elsif (&main::DataPagingTargetMode == PAGED) {
+			&main::Output(
+				' --datapaging=paged'
+			);
+		}
+
+		&main::Output(
+			"\n"
+		);
+
+		}
+         elsif ($BasicTrgType=~/^LIB$/o) {
+			&main::Output(
+			"\t\$(AR) ",
+				" \$(ARCHIVER_CREATE_OPTION) ",
+				" \$(EPOCBSFSTATLINK$Bld)\\$Trg \\\n"
+			);
+		# Pass in the command file if the command file option is passed in
+		if($viaoption) {
+                        #'@' is for GCCE whos version is not 3.4.3
+			if($viaoption eq '@'){
+				&main::Output(
+					"\t\t$viaoption$objectsViaFile\n"
+				);
+			}
+                        #'-via' is for RVCT  
+			else{
+				&main::Output(
+					"\t\t$viaoption $objectsViaFile\n"
+				);
+			}
+		}
+		else {
+			&main::Output(
+				"\t\t\$(OBJECTS$Bld) \n"
+			);
+		}
+		# Pass the archiver options which can be customized form BSF file
+		&main::Output(
+			"\t\t\$(AR_OPTIONS) \n"
+		);
+         }
+
+         &main::Output(
+		 "\n"
+	 );
+
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+		&main::Output(
+			"\tcopy ", " \"\$(EPOCBLD$Bld)\\$ExportLibrary.def\" ", "\"\$(EPOCBLD)\\$ExportLibrary.def\"\n"
+			);
+		if  (&main::ExportUnfrozen) {
+			if ($PlatName =~ /^ARMV5$/)
+			{
+				&main::Output(
+				"\tdef2dll.bat --path=\$(EPOCBLD$Bld) \\\n\t\t--bldpath=\$(EPOCBLD$Bld) \\\n\t\t--export=$ExportLibrary \\\n\t\t--import=$ExportLibrary \\\n",
+				"\t\t--deffile=\$(EPOCBLD)\\$ExportLibrary.def \\\n\t\t--linkAs=$LinkAs \\\n\t\t$InterWorking \\\n\t\t--absent=undef \n"
+				);
+				&main::Output(
+					"\n",
+					"\tcopy ", " \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\" ",
+					"\"\$(EPOCLIB)\\LIB\\$ExportLibrary.lib\"",
+					"\n"
+				);
+				if ($ExtraExportLibrary) {
+				&main::Output(
+					"\n",
+					"\tcopy ", " \"\$(EPOCLIB)\\LIB\\$ExportLibrary.lib\" ",
+					"\"\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.lib\"",
+					"\n"
+				);
+				}
+			}
+
+			&main::Output(
+					  "\n",
+				  "\tcopy ", " \"\$(EPOCBLD$Bld)\\$ExportLibrary.dso\" ",
+				  "\"\$(EPOCLIB)\\LIB\\$ExportLibrary.dso\"",
+				  "\n"
+				 );
+
+			&main::Output(
+					  "\n",
+				  "\tcopy ", " \"\$(EPOCBLD$Bld)\\$ExportLibrary.dso\" ",
+				  "\"\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.dso\"",
+				  "\n"
+				 ) if ($ExtraExportLibrary);
+
+		}
+	}
+
+	if($IsCustomDll eq 1)
+	{
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$ExportLibrary.bin"), ": $DefFile\n");
+
+	    my $theDefFile = "\$(EPOCBLD)\\$ExportLibrary.def";
+	    $theDefFile = $DefFile if (-e $DefFile && !&main::ExportUnfrozen);
+	    my $theAssembler = " \$(ASM) ";
+	    &main::Output(
+		"\telf2e32  \\\n\t\t--definput=$theDefFile \\\n\t\t--dump=a \\\n\t\t--output=\$(EPOCBLD$Bld)\\$ExportLibrary.s \n",
+  		"\t$theAssembler \$(AAPCS_OPTION) \\\n\t\t \$(ASM_OUTPUT_OPTION) \$(EPOCBLD$Bld)\\$ExportLibrary.bin  \$(EPOCBLD$Bld)\\$ExportLibrary.s\n\n"
+	    );
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCBLD$Bld)\\$ExportLibrary.s\"\n\n"
+		);
+	}
+
+    &main::Output( "\n" );
+}
+
+# Set to 1 if multifile compilation wanted
+my $domultifile = 0;
+
+sub DoMultiFile () {
+        return $ENV{RVCTMultiFile} if (defined $ENV{RVCTMultiFile});
+	return $domultifile;
+}
+
+my %CompilationGroups = ();
+
+sub InitMultiFileCompilation() {
+#	Do preparatory work for multifile compilation
+	my $SourceStructRef=&main::SourceStructRef;
+
+#	We sort the source files by path and extension. These form natural groups to compile together.
+	my %PathToSourceMap = ();
+	foreach my $SourceRef (@$SourceStructRef) {
+		my $SrcFile = $$SourceRef{CurFile};
+		my $Ext = &main::Path_Split('Ext', $SrcFile);
+			push @{$PathToSourceMap{$$SourceRef{SrcPath}}{$Ext}}, $SrcFile;
+	}
+
+#	Now we split each group into sets of 10.
+	foreach my $SrcPath (keys %PathToSourceMap) {
+		foreach my $Ext (keys %{$PathToSourceMap{$SrcPath}}) {
+			my @FileList;
+			my @ObjectList;
+			my @SourceList;
+			my $NumToGo = 10;
+			foreach my $File (@{$PathToSourceMap{$SrcPath}{$Ext}}) {
+				my $base = &main::Path_Split('Base', $File);
+				my $cia = ($Ext =~ /cia/i);
+				$base .= "_" if $cia && ($PlatName ne "GCCE");
+				push @FileList, $File;
+				push @ObjectList, "$base.o";
+#				this gives us our source files xxx
+				push @SourceList, ($cia && ($PlatName ne "GCCE")) ? "$base.cpp" : "$SrcPath$base$Ext";
+				$NumToGo--;
+				unless ($NumToGo) {
+#					   Use the last file as the key. This means e.g that all the dependency
+#					   info will have been generated for the earlier files in the list
+					   push @{$CompilationGroups{$FileList[$#FileList]}{Sources}}, @SourceList;
+						   push @{$CompilationGroups{$FileList[$#FileList]}{Objects}}, @ObjectList;
+					   $NumToGo = 10;
+					   undef @FileList;
+					   undef @ObjectList;
+					   undef @SourceList;
+				}
+			}
+			push @{$CompilationGroups{$FileList[$#FileList]}{Sources}}, @SourceList;
+			push @{$CompilationGroups{$FileList[$#FileList]}{Objects}}, @ObjectList;
+		}
+	}
+
+#	debug print out
+	if (0) {
+	foreach my $keyfile (keys %CompilationGroups) {
+		print "$keyfile :\n";
+		foreach my $class (keys %{$CompilationGroups{$keyfile}}) {
+			print "\t$class:\n\t\t";
+			print join " ", @{$CompilationGroups{$keyfile}{$class}}, "\n";
+		}
+	}
+	}
+
+}
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+
+	InitMultiFileCompilation() if DoMultiFile();
+
+}
+
+sub PMBitMapBld {
+
+	&Generic_BitMapBld;
+
+}
+
+sub PMResrcBld {
+
+	&Generic_ResrcBld;
+
+}
+
+sub PMAifBld {
+	&Generic_AifBld;
+}
+
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @DepList=&main::DepList;
+	return if (@DepList == 0);
+
+	my @BldList=&main::BldList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+
+	my $BaseObj=$BaseSrc;
+	my $cia = 0;
+	if ($ExtSrc =~ /cia/i ) {
+		$cia = 1;
+		$BaseObj .= '_' if ($PlatName ne "GCCE");
+	}
+
+  	foreach my $Bld (@BldList) {
+		my $tranasm = getConfigVariable('TRANASM');
+		if ($tranasm)
+		{
+			&main::Output(
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), " ",
+			) if $cia && ($PlatName ne "GCCE");
+		}
+
+		&main::Output(
+  			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseObj.cpp"), " ",
+		) if $cia && ($PlatName ne "GCCE");
+		&main::Output(
+  			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " ",
+  			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseObj.o"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+
+	my $prefix_file=getConfigVariable('PREFIXFILE');
+
+	my @tempdeplist = &main::DepList;
+
+	my $totalcount = $#tempdeplist;
+	my $count = 0;
+	while( $totalcount >= $count )
+	{
+		my $dependencyfile = shift(@tempdeplist);
+		if($dependencyfile eq $prefix_file )
+		{
+			$DepList[$count]="\$(PREFIXFILE)";
+		}
+		$count += 1;
+	}
+
+        PrintList("\' \\\n\t\'\.\&Generic_Quote\(\$_\)", @DepList);
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my @DepList=&main::DepList;
+	return if (@DepList == 0);
+
+	my $Bld=&main::Bld;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+
+	my $BaseObj=$BaseSrc;
+	my $cia = 0;
+	if ($ExtSrc =~ /cia/i ) {
+		$cia = 1;
+		$BaseObj .= '_' if ($PlatName ne "GCCE");
+	}
+
+	my $tranasm = getConfigVariable('TRANASM');
+	if ($tranasm)
+	{
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), " ",
+		) if $cia && ($PlatName ne "GCCE");
+	}
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseObj.cpp"), " ",
+	) if $cia && ($PlatName ne "GCCE");
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " ",
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseObj.o"), " :",
+	);
+
+	my $prefix_file=getConfigVariable('PREFIXFILE');
+
+	my @tempdeplist = &main::DepList;
+
+	my $totalcount = $#tempdeplist;
+	my $count = 0;
+	while( $totalcount >= $count )
+	{
+		my $dependencyfile = shift(@tempdeplist);
+		if($dependencyfile eq $prefix_file )
+		{
+			$DepList[$count]="\$(PREFIXFILE)";
+		}
+		$count += 1;
+	}
+
+        PrintList("\' \\\n\t\'\.\&Generic_Quote\(\$_\)", @DepList);
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub quoted_path
+{
+    my $curdrive="";
+    my ($arg) = @_;
+    return "\"$arg\"" if ($arg !~ /^\\[^\\]/);	# not an absolute path
+
+		$curdrive=$1 if (cwd =~ /^(.:)/);
+    return "\"$curdrive$arg\"";
+}
+
+sub PMPrefixFile
+{
+# Prefix Header File passed to the preprocessor
+
+	my $prefix_file=getConfigVariable('PREFIXFILE');
+	return quoted_path($prefix_file) if defined $prefix_file;
+}
+
+sub PMToolChainIncDir
+	{
+	# Extra system include directories dictated by the toolchain
+	return $ToolChainIncDir;
+	}
+
+sub PMEndSrcBld {
+#       Generate multifile compilation stuff if needed.
+        if (DoMultiFile()) {
+		   MultiFileEndSrcBld();
+		   return;
+	}
+
+	my $ABI=&main::ABI;
+	my $Plat=&main::Plat;
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+	my $Src=lc &main::Src;
+	my $SrcPath=&main::SrcPath;
+	my $BaseTrg=&main::BaseTrg;
+	my $BldPath = &main::BldPath;
+	my $Ext = &main::Path_Split('Ext', $Src);
+	$Src = ucfirst $Src if ($Ext !~ /\.(cpp|c)$/);
+	my $LangOptions = &SelectLangOptions($Ext);
+	# support for auto 'translated' ASM
+	my $AsmFilep = $AsmFiles{$Src};
+
+	$preinclude = &GetToolChainPreInclude();
+	
+	#Function call logger takes -I as include option
+	my $FCLogger_inc_option = getConfigVariable('FC_LOGGER_INCLUDE_OPTION'); 
+	my $logger_preinclude = getConfigVariable('PREINCLUDE_OPTION_FCLOGGER'); 
+	my $Dictionary_File_Name = getConfigVariable('FC_LOGGER_DICTIONARY_FILE_NAME');
+	my $Generated_C_File_Name = getConfigVariable('FC_LOGGER_GENERATED_C_FILE_NAME');
+	
+	my $ChopSrcPath=&main::Path_Chop($SrcPath);
+	my $lfboption = LinkerFeedBackOption();
+	my $LstExt ;
+	if($Plat =~ /^(ARMV[6-9])/i){
+		$LstExt = $1 ;	
+	}
+	else{
+		$LstExt = $ABI;
+	}
+	if ($AsmFilep || ($Ext =~ /cia/i && ($PlatName ne "GCCE"))) {
+		&main::Output(
+# compile the translated, preprocessed source
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.o"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), "\n",
+			"\t\@echo $Src\n",
+			"\t\$(CC$Bld) $lfboption $LangOptions ", "\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR) \$(OUTPUT_OPTION) \$\@ \$(EPOCBLD$Bld)\\$BaseSrc\_.cpp)\n",
+			"\n"
+			);
+# rule to translate the preprocessed source
+			my $tranasm = getConfigVariable('TRANASM');
+			if ($tranasm)
+			{
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), "\n",
+
+				"\t\$(TRANASM) \$(TRANASM_FLAGS) \$(TRANASM_OUTPUT_OPTION)\$\@ \$(TRANASM_INPUT_OPTION)\$(EPOCBLD$Bld)\\$BaseSrc.pre\n",
+			"\n"
+			);
+# rule to preprocess the source
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(CC$Bld) \$(PREPROCESSOR_OPTION) $preinclude $LangOptions ","\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR) $ChopSrcPath\\$Src \$(OUTPUT_OPTION) \$\@) \n",
+# generate an assembly listing target too
+			"LISTING$Bld$BaseSrc\_ : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc\_.$LstExt.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), "\n",
+			"\t\$(CC$Bld) $LangOptions ", "\$(ASSEMBLER_LISTING_OPTION) ","\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR) \$(OUTPUT_OPTION) \$\@ \$(EPOCBLD$Bld)\\$BaseSrc\_.cpp)\n",
+			"\n"
+			);
+			}
+			else
+			{
+			&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(CC$Bld) \$(PREPROCESSOR_OPTION) $preinclude $LangOptions ","\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR) $ChopSrcPath\\$Src \$(OUTPUT_OPTION) \$\@) \n",
+# generate an assembly listing target too
+			"LISTING$Bld$BaseSrc\_ : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc\_.$LstExt.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), "\n",
+			"\t\$(CC$Bld) $LangOptions ", "\$(ASSEMBLER_LISTING_OPTION) ","\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR) \$(OUTPUT_OPTION) \$\@ \$(EPOCBLD$Bld)\\$BaseSrc\_.cpp)\n",
+			"\n"
+			);
+			}
+	} 
+	else {
+		#If Function call logging is enabled, add call to function call logger
+		if ($Function_Call_Logger)	{
+			&main::Output(
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), 
+				" : ",
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.int.cpp"), 
+				"\n",
+				"\t\@echo $BaseSrc.int.cpp\n",
+				"\t\$(CC$Bld) $lfboption$LangOptions ", 
+				" \$(INCLUDE_OPTION) ",
+				"\$(call absolutePaths, $ChopSrcPath \$(INCDIR) \$(OUTPUT_OPTION) \$\@ \$(EPOCBLD$Bld)\\$BaseSrc.int.cpp)\n",
+				"\n",
+# generate an assembly listing target too
+				"LISTING$Bld$BaseSrc : ", 
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), 
+				"\n",
+				"\t",
+				&Generic_CopyAction("$SrcPath$BaseSrc.$LstExt.lst"),
+				"\n",
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), 
+				" : ",
+				&Generic_Quote("$SrcPath$Src"), 
+				"\n",
+				"\t\$(CC$Bld) $LangOptions ",
+				"\$(ASSEMBLER_LISTING_OPTION) ",
+				"\$(INCLUDE_OPTION)",
+				" \$(call absolutePaths,$ChopSrcPath \$(INCDIR) \$(OUTPUT_OPTION) \$\@ $ChopSrcPath\\$Src) \n",
+				"\n"
+			);
+			
+			#Call to Function Call Logger
+			&main::Output(
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.int.cpp"),
+				" : ",
+				&Generic_Quote("$SrcPath\\$Src"),
+				"\n",
+				"\t\@echo $BaseSrc.int.cpp\n",
+				"\t\$(FCLOGGER$Bld) $lfboption \\\n" ,
+				"\t$FCLogger_inc_option $ChopSrcPath \\\n",
+				"\t$logger_preinclude \\\n ",
+				"\t\$(INCDIR_FCLOGGER) \\\n" ,
+				"\t$Dictionary_File_Name $BldPath$BaseTrg.txt \\\n" ,
+				"\t$Generated_C_File_Name \$\@ $ChopSrcPath\\$Src \n",
+				"\n\n"
+			);
+		}
+		else {
+			&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\@echo $Src\n",
+			"\t\$(CC$Bld) $lfboption $LangOptions ", "\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR) \$(OUTPUT_OPTION) \$\@ $ChopSrcPath\\$Src)\n",
+			"\n",
+# generate an assembly listing target too
+			"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc.$LstExt.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(CC$Bld) $LangOptions ","\$(ASSEMBLER_LISTING_OPTION) ","\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR) \$(OUTPUT_OPTION) \$\@ $ChopSrcPath\\$Src) \n",
+			"\n"
+			);
+			# Compiler wrapper support starts...
+			if($IsCompilerWrapperOption)
+			{
+				&main::Output(
+					"COMPWRAP$Bld$BaseSrc : ",
+					&Generic_Quote("$SrcPath$Src"), "\n",
+					"\t\@echo Analysing $Src\n",
+					"\t\$(COMPWRAP) \$(CC$Bld) $lfboption $LangOptions ", "\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR) \$(OUTPUT_OPTION) \$\@ $ChopSrcPath\\$Src)\n",
+					"\n"
+				);
+			}
+			# Compiler wrapper support ends...
+		}
+	}
+}
+
+my $MFVarN = 0;
+sub MultiFileEndSrcBld {
+	my $ABI=&main::ABI;
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+        my $KeyFile = &main::Src;
+	my $Src=ucfirst lc $KeyFile;
+	my $SrcPath=&main::SrcPath;
+	my $Ext = &main::Path_Split('Ext', $Src);
+	my $LangOptions = &SelectLangOptions($Ext);
+	# support for auto 'translated' ASM
+	my $AsmFilep = $AsmFiles{$Src};
+
+	my $ChopSrcPath=&main::Path_Chop($SrcPath);
+	my $lfboption = LinkerFeedBackOption();
+
+	if ($AsmFilep || ($Ext =~ /cia/i && ($PlatName ne "GCCE"))) {
+		if ($CompilationGroups{$KeyFile}) {
+# compile the translated, preprocessed source
+			   &main::Output( "OBJECTS$MFVarN = ");
+			   foreach my $obj (@{$CompilationGroups{$KeyFile}{Objects}}) {
+				   &main::Output( &Generic_Quote("\\\n\t\$(EPOCBLD$Bld)\\$obj"), " ");
+			   }
+				   &main::Output( "\n\n");
+			   &main::Output( "SOURCES$MFVarN = ");
+			   foreach my $src (@{$CompilationGroups{$KeyFile}{Sources}}) {
+				   &main::Output( &Generic_Quote("\\\n\t\$(EPOCBLD$Bld)\\$src", " "));
+			   }
+				   &main::Output( "\n\n");
+			   &main::Output( "\$(OBJECTS$MFVarN) : \$(SOURCES$MFVarN) \n");
+
+			   &main::Output(
+					 "\t\@echo Compiling \$(SOURCES$MFVarN)\n",
+					 "\t\$(CC$Bld) ","\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR)) $lfboption\\\n",
+					 "\t\t$LangOptions \$(OUTPUT_OPTION) \$\@ --multifile \$(SOURCES$MFVarN)"
+			  );
+				   &main::Output( "\n\n");
+			   $MFVarN++;
+		}
+		&main::Output(
+# rule to translate the preprocessed source
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), "\n",
+			"\ttranasm -n -s -o=\$\@ \$(EPOCBLD$Bld)\\$BaseSrc.pre\n",
+			"\n",
+# rule to preprocess the source
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.pre"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(CC$Bld) \$(PREPROCESSOR_OPTION) $preinclude $LangOptions ","\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR)) $ChopSrcPath\\$Src \$(OUTPUT_OPTION) \$\@ \n",
+# generate an assembly listing target too
+			"LISTING$Bld$BaseSrc\_ : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc\_.$LstExt.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), " : ",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.cpp"), "\n",
+			"\t\$(CC$Bld) $LangOptions ", "\$(ASSEMBLER_LISTING_OPTION) ","\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR)) \$(OUTPUT_OPTION) \$\@ \$(EPOCBLD$Bld)\\$BaseSrc\_.cpp\n",
+			"\n"
+			);
+	} else {
+
+		if ($CompilationGroups{$KeyFile}) {
+#                      compile the source
+			   &main::Output( "OBJECTS$MFVarN = ");
+			   foreach my $obj (@{$CompilationGroups{$KeyFile}{Objects}}) {
+				   &main::Output( &Generic_Quote("\\\n\t\$(EPOCBLD$Bld)\\$obj"), " ");
+			   }
+				   &main::Output( "\n\n");
+			   &main::Output( "SOURCES$MFVarN = ");
+			   foreach my $src (@{$CompilationGroups{$KeyFile}{Sources}}) {
+				   &main::Output( &Generic_Quote("\\\n\t$src"), " ");
+			   }
+				   &main::Output( "\n\n");
+			   &main::Output( "\$(OBJECTS$MFVarN) : \$(SOURCES$MFVarN) \n");
+
+			   &main::Output(
+					 "\t\@echo Compiling \$(SOURCES$MFVarN)\n",
+					 "\t\$(CC$Bld) ", "\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR)) $lfboption\\\n",
+					 "\t\t$LangOptions \$(OUTPUT_OPTION) \$\@ --multifile \$(SOURCES$MFVarN)"
+			  );
+				   &main::Output( "\n\n");
+			   $MFVarN++;
+		}
+#		generate an assembly listing target too
+		&main::Output(
+			"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc.$LstExt.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(CC$Bld) $LangOptions ","\$(ASSEMBLER_LISTING_OPTION) ","\$(INCLUDE_OPTION)"," \$(call absolutePaths,$ChopSrcPath \$(INCDIR)) \$(OUTPUT_OPTION) \$\@ $ChopSrcPath\\$Src \n",
+			"\n"
+			);
+	}
+}
+
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+# modified start: makefile improvement 
+	&checkVMAPFiles;
+# modified end: makefile improvement 
+}
+
+sub ImportLibraryList {
+	my $dso;
+	my $base;
+	my @ImportLibList;
+	foreach $dso (@_) {
+		$base = &main::Path_Split('Base', $dso);
+		$dso = $base.".dso";
+		push @ImportLibList, $dso;
+	}
+	return @ImportLibList;
+}
+
+sub ChangeSlash($) {
+	my $abspath = $_[0];
+	$abspath =~ s/\\/\//g ;
+	return $abspath;
+}
+
+# System libraries such as the standard C++ libraries or floating point libraries or any other
+# static libraries are made into DLLs by linking its export table against them. Such DLLs that are
+# created from a static library is known as a Custom DLL. The ARM libraries can be supplied using
+# the ARMLIBS mmp keyword  A DLL is considered to be a customdll based on the presence of ARMLIBS
+# keyword and also the presence of DEFFILE keyword.
+
+sub IsCustomDllUseCase()
+{
+	# To check if ARMLIBS keyword is passed in the MMP file.
+	# Armutl_ArmLibList() gets the list of static arm libraries, if used by an executable.
+	my $armliblist = &Armutl_ArmLibList;
+
+	# To check if DEFFILE keyword is used in the MMP file to supply the def file.
+	my $deffile = &main::DefFile;
+
+	if ($armliblist && $deffile)
+	{
+		return 1;
+	}
+	return 0;
+	
+}
+
+sub GetToolChainPreInclude {
+	my $preinclude_file = getConfigVariable('PREINCLUDE_OPTION');
+
+	$preinclude_file =~ s/\\/\//g;
+	return "$preinclude_file";
+}
+
+sub SelectLangOptions {
+	my ($Ext) = @_;
+	$preinclude = &GetToolChainPreInclude;
+	if ($Ext=~/^.cpp$/ || ($Ext=~/^.cia$/ && ($PlatName eq "GCCE"))) {
+		#Function Call Logger
+		return " \$(CPP_LANG_OPTION) " if ($Function_Call_Logger);
+		return " \$(CPP_LANG_OPTION) $preinclude ";
+	}
+	if ($Ext=~/^.cia$/) {
+		return " \$(CIA_LANG_OPTION) ";
+	}
+	if ($Ext=~/^.c$/) {
+		my $CompilerOption = &main::CompilerOption("ARMCC");
+		if($CompilerOption =~ /--cpp/){
+			#Function Call Logger
+			return " \$(CPP_LANG_OPTION) " if ($Function_Call_Logger);
+			return " \$(CPP_LANG_OPTION) $preinclude ";
+		}
+		else {
+			#Function Call Logger
+			return " \$(C_LANG_OPTION) " if ($Function_Call_Logger);
+			return " \$(C_LANG_OPTION) $preinclude ";
+		}
+	}
+	# To support .cc, .cxx, .c++ file extensions for Open Environment
+	elsif ($Ext=~/^(.cc|.cxx|.c\+\+)$/) {
+		#Function Call Logger
+		return " \$(CPP_LANG_OPTION) " if ($Function_Call_Logger);
+		return " \$(CPP_LANG_OPTION) $preinclude ";
+	}
+	return '';
+}
+
+sub IsMapOptAvail() {
+	open PIPE, "arm-none-symbianelf-g++ -v 2>&1 | ";
+	while(<PIPE>){
+
+		if($_ =~ /gcc version (.*) \(release\).*/i)
+		{
+			if($1 lt "3.4.3")
+			{
+				return 0;
+			}
+			elsif($_ =~ /gcc version (.*) \(release\) \(CodeSourcery ARM (.*) (\d*)\)/i)
+			{
+				if($1 eq "3.4.3" && uc $2 ne "Q1B" && $3 ge 2005)
+				{
+					return 1;
+				}
+				elsif($1 gt "3.4.3")
+				{
+					return 1;
+				}
+				else
+				{
+					return 0;
+				}
+			}
+
+		}
+
+	}
+	close PIPE;
+}
+
+sub StdCppTarget() {
+    
+    # STDCPP is supported
+    return 0 if (! main::StdCppSupport());
+    
+  	if ( main::NoStdCpp() ) { #MMP keyword NOSTDCPP set
+  	       return 0;
+  	}	       
+	
+	if ( main::StdCpp() ) { # MMP keyword STDCPP set.
+		return 1;
+	}
+	else {
+		return ( main::TrgType() =~ /^(STDEXE|STDDLL|STDLIB)$/io );
+	}
+}
+
+sub GetRTLibList() {
+
+	my $newlib = main::NewLib(); # Could have been set in the MMP file.
+
+	unless ($newlib) {
+		if ( StdCppTarget() ) {
+			$newlib = getConfigVariable('OE_NEW_LIB');
+		}
+		else {
+			$newlib = getConfigVariable('SYM_NEW_LIB');
+		}
+	}
+
+	my @RtLib;
+	my $list = "$newlib " . getConfigVariable('RUNTIME_LIBS_LIST') ;
+	if (length($list) >0)
+	{
+		@RtLib = split(/\s+/, $list);
+	}
+	return @RtLib;
+}
+
+sub GetOELibList() {
+	my @OELib;
+	my $list;
+	if (&main::IsWideCharMain()) {
+		$list = getConfigVariable('OE_EXE_LIBS_WCHAR');
+	}
+	else {
+		$list = getConfigVariable('OE_EXE_LIBS');
+	}
+
+	if (length($list) >0)
+	{
+		@OELib = split(/\s+/, $list);
+	}
+	return @OELib;
+}
+
+sub GetOEImportLibList() {
+	my @OEImportLib;
+	my $list;
+	$list = getConfigVariable('OE_IMPORT_LIBS');
+	
+	if (length($list) >0)
+	{
+		@OEImportLib = split(/\s+/, $list);
+	}
+	return @OEImportLib;
+}
+
+sub InitToolChain(@) {
+
+	if($PlatName eq "ARMV5" || $PlatName eq "ARMV5_ABIV2" || $CustomizedARMV5Plat)
+	{
+		my $RVCTBuildNumber;
+
+		($RVCTMajorVersion, $RVCTMinorVersion, $RVCTBuildNumber) = RVCT_plat2set::get_version_list($PlatName);
+
+		$RVCTVersion = "${RVCTMajorVersion}_${RVCTMinorVersion}";
+
+		my $aRVCTVersion = "${RVCTMajorVersion}.${RVCTMinorVersion}";
+		if (($aRVCTVersion == 2.2) && ($RVCTBuildNumber < 559))
+		{
+			warn "WARNING: When building using ABIV2 mode toolchain Compiler RVCT2.2 Build 559 or later is required.\n";
+		}
+		&Armutl_DoMmp(@_);
+	}
+	elsif ($RootName eq "GCCE")
+	{
+		($GCCEMajorVersion, $GCCEMinorVersion) = gcce_plat2set::get_version_list($Platname);
+
+		$GCCEVersion = "${GCCEMajorVersion}_${GCCEMinorVersion}";
+	}
+
+}
+
+my %BSF_keywords = (
+			COMMON_OPTIONS => 1,
+			THUMB_OPTIONS => 1,
+			ARM_OPTIONS => 1,
+			KERNEL_OPTIONS => 1,
+			INVARIANT_OPTIONS => 1,
+			LD_OPTIONS => 1,
+			AR_OPTIONS => 1,
+			DEBUG_FORMAT => 1
+		   );
+
+
+sub Read_BSF_Options() {
+        my %plat = (main::PlatRec());
+		my @Customization_Data = split(/\n/,$plat{'CUSTOMIZATION_DATA'});
+	foreach my $option (@Customization_Data) {
+			next if ($option =~ /^$/);
+			warn "Unrecognized BSF syntax: $option.\n"
+				unless ($option =~ /\s*(\S+)\s+(.+)$/);
+		my $key = uc $1;
+		my $val = $2;
+			warn "Unrecognized BSF keyword: $key.\n"
+				unless ($BSF_keywords{$key});
+		if ($key =~ /COMMON_OPTIONS/) {
+				push @commonOptions, $val;
+			next;
+		}
+		if ($key =~ /THUMB_OPTIONS/) {
+				push @thumbOptions, $val;
+			next;
+		}
+		if ($key =~ /ARM_OPTIONS/) {
+				push @armOptions, $val;
+			next;
+		}
+		if ($key =~ /KERNEL_OPTIONS/) {
+				push @kernelOptions, $val;
+			next;
+		}
+		if ($key =~ /INVARIANT_OPTIONS/) {
+				push @invariantOptions, $val;
+			next;
+		}
+		if ($key =~ /LD_OPTIONS/) {
+				push @linkerOptions, $val;
+			next;
+		}
+		if ($key =~ /AR_OPTIONS/) {
+				push @archiverOptions, $val;
+			next;
+		}
+		if ($key =~ /DEBUG_FORMAT/) {
+				push @debugFormat, $val;
+			next;
+		}
+
+	}
+}
+
+# Set the options passed from BSF file 
+# @param OptionName    - BSF Keyword using which the options would be overridden in the BSF file
+# @param Options       - List of options read from the BSF keyword
+sub Set_BSF_Options($$)
+{
+	my ($OptionName,$Options) = @_;
+	my @Fragments=();
+	foreach my $val (@{$Options})
+	{		
+		# Check if the value of BSF option is to be set or added/removed.
+		if($val =~ /\+\[.*\]\+|\-\[.*\]\-/)
+		{
+			if (@Fragments = Split_BSF_Options($val,'RemoveOptions'))
+			{
+				foreach my $Opt (@Fragments) 
+				{
+					# Remove trailing white spaces
+					$Opt =~ s/\s+$//;
+					# Substitute '=' with '%' which is a wild card character in makefile.
+					# This is required for cases where option to be removed contains '=' (e.g.'-march=armv5t').
+					# When such options are to be removed, "$(INVARIANT_OPTIONS:-march=armv5t=)" is written in the makefile.
+					# However, because of the occurence of '=', pattern match fails in the makefile and such options are not removed. 
+					# To resolve this, '=' is replaced with '%'  in the makefile so that the substitution pattern looks like 
+					# "$(INVARIANT_OPTIONS:-march%armv5t=)" in makefile (e.g."$(INVARIANT_OPTIONS:-march%armv5t=)").
+					$Opt =~ s/=/%/;
+					&main::Output(
+						"$OptionName := \$($OptionName:$Opt=)",					
+						"\n"
+					);
+				}					
+				@Fragments=();
+			}
+			if (@Fragments = Split_BSF_Options($val,'AddOptions')) 
+			{
+				&main::Output(
+					"$OptionName += @Fragments ",
+					"\n"
+				);
+				@Fragments=();
+			}
+			
+			# Warn if options are not present in the form '+[...]+' or '-[...]-'
+			$val =~ s/\+\[.*?\]\+|\-\[.*?\]\-//g;
+			if($val !~ /^\s*$/)
+			{
+				print "Warning: Ignoring option(s) \"$val\" for $OptionName as option(s) should be in the form '+[...]+' or '-[...]-.\n";
+			}
+		}
+		else
+		{
+			&main::Output(
+				"$OptionName = $val ",
+				"\n"
+			);
+		}		
+	}
+	&main::Output(					
+		"\n"
+	);
+}
+
+# Split BSF options to find options which are to be added/removed
+# @param String      - List of options present in form '+[...]+' or '-[....]-'
+# @param $Task       - Variable to decide whether to return options to be addded or options to be removed
+sub Split_BSF_Options($$)
+{
+	my ($String,$Task) = @_;
+    my @Result = ();
+	my @Fragments = ();
+	my $Pattern = '';
+	# Get the toolchain specific option prefix to segregate the options.
+	my $OptionPrefix = getConfigVariable('OPTION_PREFIX');
+	
+	if ($Task eq 'AddOptions')
+	{
+		# Get the options which are to be added (present in the form '+[...]+')
+		@Fragments = $String =~ /\+\[(.*?)\]\+/g;	
+	}
+	elsif ($Task eq 'RemoveOptions') 
+	{
+		# Get the options which are to be removed (present in the form '-[...]-')
+		@Fragments = $String =~ /\-\[(.*?)\]\-/g;
+	}	
+
+	# Set the value of '$Pattern' which is required to segregate one option from another based on the option prefix.
+	if($OptionPrefix) 
+	{
+		$Pattern = $OptionPrefix.'\S+\s*(?!'.$OptionPrefix.')\S*';
+	}
+	else 
+	{
+		# If option prefix is not set in the configuration make file, then set default
+		# option prefix as '-' or '--'.
+		$Pattern = '-{1,2}\S+\s*(?!-)\S*';
+	}
+
+	foreach my $Val (@Fragments) 
+	{
+		my @Opt = $Val =~ /$Pattern/g;
+		push @Result,@Opt;				
+	}
+	return @Result;	
+}
+
+sub SysTrg () {
+	return 1 if &main::SystemTrg;
+	my $ExportLibrary=&main::ExportLibrary;
+	return 1 if ($ExportLibrary =~ /EKERN/i);
+	my $Trg=&main::Trg;
+	return 1 if ($Trg =~ /KSRT/i);
+	return 0;
+}
+
+sub GetLibList() {
+	my @LibList;
+	my @StaticLibList;
+	my $list = getConfigVariable('STATIC_LIBS_LIST') ;
+
+	if (length($list) >0)
+	{
+		@StaticLibList = split(/\s+/, $list);
+	}
+	if($PlatName eq "ARMV5" || $PlatName eq "ARMV5_ABIV2" || $CustomizedARMV5Plat) {
+		@LibList=&Armutl_ArmLibList;
+		if(@LibList==0) {
+			my $LibDir = Armutl_ArmLibDir();
+			# convert '/' to  '\'  if there are some '/'
+			$LibDir =~ s#/#\\#g;
+			if (@StaticLibList) {
+				foreach my $lib (@StaticLibList) {
+					push @LibList, ("$LibDir\\$lib");
+				}
+			}
+		}
+	}
+	else
+	{
+		@LibList = ('$(STATIC_LIBS_LIST)');
+	}
+	return @LibList;
+}
+
+sub GetToolChainAsmFileList() {
+	my @FileList;
+	@FileList=&Armutl_AsmFileList;
+	if(@FileList)
+	{
+		return @FileList;
+	}
+	return;
+}
+
+sub IsTargetRT() {
+	my $RTtarget=&Armutl_ArmRT;
+	if($RTtarget)
+	{
+		return $RTtarget;
+	}
+	return;
+}
+
+sub GetToolChainIncDir {
+	if($PlatName eq "ARMV5" || $PlatName eq "ARMV5_ABIV2" || $CustomizedARMV5Plat)
+	{
+  		#the ToolChainIncDir's value depends on the key word ARMINC in mmp file
+  		return &Armutl_ArmIncDir;
+	}
+	else
+	{
+		my $compiler_inc_path = getConfigVariable('COMPILER_INCLUDE_PATH');
+		$compiler_inc_path =~ s/^\s+//g;
+		return ($compiler_inc_path);
+	}
+}
+
+my $useLinkerFeedBack = 0;
+
+sub LinkerFeedBackFile() {
+  return unless $useLinkerFeedBack;
+  my $Trg = &main::Trg;
+  return "$Trg.lfb";
+}
+
+sub LinkerFeedBackOption() {
+	return "" unless $useLinkerFeedBack;
+	my $BasicTrgType=&main::BasicTrgType;
+	return "" unless ($BasicTrgType=~/^(DLL|EXE)/o);
+	my $file = LinkerFeedBackFile();
+	return "/$(FEEDBACK_FILE_OPTION) $file ";
+
+}
+
+sub getConfigVariable
+{
+    my ($variable) = @_;
+    initialiseConfigVariables();
+    return $configVariables{$variable};
+}
+
+sub initialiseConfigVariables()
+{
+    if (!keys(%configVariables))
+    {
+		%configVariables = BPABIutl_Get_Config_Variables($PlatName);
+
+		if (!keys(%configVariables))
+		{
+			# no variables were extracted from configuration file.
+			&main::FatalError("Cannot extract configuration variables for $PlatName");
+		}
+    }
+}
+
+sub PMSupportsFeatureVariants
+{
+	return 1;
+}
+# modified start: makefile improvement 
+sub checkVMAPFiles
+{
+	my %srcSet = %{&main::getSrcSet};
+	my %featureVariantInfo = &main::FeatureVariantInfo();
+	my $vmapfile = &main::Trg.".".$featureVariantInfo{NAME}.".vmap";
+	my $mmpFile = &main::MmpFile;
+	if ( $vmapfile ){
+		&main::Output(
+			"\n",
+			"\n",
+			"# Rules to check out the VMAP files",
+			"\n",
+			"\n",
+		);
+		&main::Output(
+			"CHECKVMAPUREL : ",
+			"\$(EPOCTRG)\\urel\\",
+			$vmapfile,
+			" \n",
+			"\$(EPOCTRG)\\urel\\",
+			$vmapfile,
+			" : \\\n",
+			"\t",
+			$mmpFile,
+		);
+		foreach my $srcfile (sort keys(%srcSet))
+		{
+			&main::Output(
+				" \\\n \t",
+				$srcfile,
+			);
+		}
+		&main::Output(
+			"\n",
+			"\t-\$(ERASE) \$(EPOCTRG)\\urel\\",
+			$vmapfile,
+			"\n",
+			"\n",
+		);
+		&main::Output(
+			"CHECKVMAPUDEB : ",
+			"\$(EPOCTRG)\\udeb\\",
+			$vmapfile,
+			" \n",
+			"\$(EPOCTRG)\\udeb\\",
+			$vmapfile,
+			" : \\\n",
+			"\t",
+			$mmpFile,
+		);
+		foreach my $srcfile (sort keys(%srcSet))
+		{
+			&main::Output(
+				" \\\n \t",
+				$srcfile,
+			);
+		}
+		&main::Output(
+			"\n",
+			"\t-\$(ERASE) \$(EPOCTRG)\\udeb\\",
+			$vmapfile,
+			"\n",
+			"\n",
+		);
+	}
+}
+# modified by SV end: makefile improvement 
+# modified end: makefile improvement 
+
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_codewarrior.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1497 @@
+# Copyright (c) 2001-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:
+#
+
+
+package Cl_codewarrior;
+
+# declare variables global for module
+my @Win32LibList=();
+my $Win32StdHeaders;
+my $BaseAddressFlag;
+my $Win32Resrc;
+
+my $MWCC;
+my $MWLD;
+my $MWIncludePath;
+my $MWIncludeVar;
+my $CWVersion;
+my $CWVersionReadable;
+my $CWBuildNum;
+my $CWRuntimeLibs="";
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+
+	PMCheckPlatformL
+
+	PMPlatProcessMmp
+
+	PMPlatCheckSource
+	
+	PMStartBldList
+		PMBld
+	PMStartSrcList
+		PMBitMapBld
+		PMResrcBld
+		PMAifBld
+		PMStartSrc
+		PMSrcDepend
+			PMSrcBldDepend
+			PMEndSrcBld
+		PMEndSrc
+	PMEndSrcList
+);
+
+use Winutl;
+use cl_generic;
+use E32Variant;
+
+my $NamedSymLkup = 0;
+
+my $stdcpp_tag_file = 'tag_coff';
+my $stdcpp_tag_path = '$(EPOCROOT)epoc32\tools\tag';
+
+sub RoundUp1k($) {
+	# Accept C hexadecimal number (0xNNN).  Convert argument to Kb
+	# rounded up to the next 1kb boundary.
+	use integer;
+	return (hex($_[0]) + 1023) / 1024;
+}
+
+
+sub PMHelp_Mmp {
+	&Winutl_Help_Mmp;
+}
+
+sub SysTrg () {
+	return 1 if &main::SystemTrg;
+	my $ExportLibrary=&main::ExportLibrary;
+	return 1 if ($ExportLibrary =~ /EKERN/i);
+	my $Trg=&main::Trg;
+	return 1 if ($Trg =~ /KSRT/i);
+	return 0;
+}
+
+sub PMCheckPlatformL {
+
+	my $IsProxyWrapperOption=&main::ProxyWrapperOption();
+
+	# check version of CodeWarrior for Symbian OS
+	
+	if (defined($ENV{MWCSym2Includes})) {
+		$MWCC = "mwccsym2.exe";
+		$MWLD = "mwldsym2.exe";
+	}
+	if (!defined($MWCC) && defined($ENV{MWSym2Libraries})) {
+		$MWCC = "mwccsym2.exe";
+		$MWLD = "mwldsym2.exe";
+	}
+	if (!defined($MWCC) && defined($ENV{CWFolder})) {
+		$MWCC = "mwcc.exe";
+		$MWLD = "mwld.exe";
+	}
+	if (!defined($MWCC)) {
+		die "ERROR: Unable to identify a valid CodeWarrior for Symbian OS installation\n";
+	}
+
+	# determine default include path
+	
+	$MWIncludeVar = 'MWCIncludes';	# default, even if it doesn't exist
+	$MWIncludePath = '';			# default is empty
+	
+	foreach my $var ('MWCSym2Includes','MWCWinx86Includes','MWCIncludes') {
+		if (defined($ENV{$var})) {
+			$MWIncludePath = $ENV{$var};
+			$MWIncludeVar = $var;
+			last;
+		}
+	}
+
+	open PIPE, "$MWCC |", or &main::FatalError( "Failed to find version information for $MWCC \n");
+	while (<PIPE>) {
+		if($_ =~ /Version\s+(\d+)\.(\d+)\.(\d+)\s+build\s+(\d+)/) {
+			my $MajorVer = $1;
+			my $MinorVer = $2;
+			my $PatchNum = $3;
+			
+			$CWBuildNum = $4;
+
+            $CWVersionReadable = "$1.$2.$3 build $4";
+
+#			The CW compiler documentation says that the compiler version is a 2-byte value as
+#			0xMnpp (the corresponding CW's pre-defined macro is __MWERKS__), where,
+#				M is the major version number (which means it is accomodated in the first 4 bits, 
+#				n is the minor version number (which means it is accomodated in the next 4 bits, 
+#				pp is the patch number (which means it is accomodated in the next 8 bits.
+#			Here, an integer is formed from these 3 values to uniquely identify the compiler version.
+			$CWVersion = ($MajorVer << 12) + ($MinorVer << 8) + $PatchNum;
+			last;
+		}
+	}
+	close PIPE;
+	
+	if ($IsProxyWrapperOption){
+		$MWCC = "$ENV{ABLD_COMPWRAP} " . $MWCC;
+		$MWLD = "$ENV{ABLD_COMPWRAP} " . $MWLD;
+	}
+}
+
+sub PMPlatProcessMmp (@) {
+	&Winutl_DoMmp(\@_, $MWIncludePath);
+	$BaseAddressFlag=&Winutl_BaseAddress;
+	if ($BaseAddressFlag ne "") {
+		$BaseAddressFlag=" -imagebase \"$BaseAddressFlag\"";
+	}
+	@Win32LibList=&Winutl_Win32LibList;
+	$Win32Resrc=&Winutl_Win32Resrc;
+	$Win32StdHeaders=&Winutl_Win32StdHeaders;
+}
+
+sub PMPlatCheckSource () {
+	&Winutl_CheckSourceMMPMetaData ();
+}
+
+sub PMStartBldList($) {
+	my ($makecmd) = @_;
+	my $AifStructRef=&main::AifStructRef;
+	my $BaseTrg=&main::BaseTrg;
+	my $BitMapStructRef=&main::BitMapStructRef;
+	my @BldList=&main::BldList;
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $DefFile=&main::DefFile;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $LibPath=&main::LibPath;
+	my @MacroList=&main::MacroList();
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__";
+
+	push @MacroList, "__SYMBIAN_STDCPP_SUPPORT__" if StdCppTarget();
+	
+    my $VariantFile=&main::VariantFile();
+	my $ResourceStructRef=&main::ResourceStructRef;
+	my $Plat=&main::Plat;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my $WarningLevel=&main::CompilerOption("CW");
+	my $LinkAs=&main::LinkAs;
+
+	Generic_Header(0,$makecmd);	# define standard things using absolute paths
+
+	my $TrgDir="";
+	my $AifTrgDir="";
+	if (&Generic_Definition("TRGDIR") ne "") {
+		$TrgDir="\$(TRGDIR)\\";
+		$AifTrgDir=$TrgDir;
+	}
+
+# Handle migration of binaries to secure location
+
+	&Winutl_AdjustTargetPath(\$TrgDir);
+	
+# Change - mwwinrc.exe uses MWWinx86Includes or MWCIncludes, but some installations
+# fail to install either. Set MWCIncludes from the chosen variable as part
+# of the Makefile.
+	if (!defined($ENV{MWCIncludes}) && $MWIncludeVar ne 'MWCIncludes') {
+		&main::Output(
+			"\n",
+			"MWCIncludes:=\$($MWIncludeVar)\n",
+			"export MWCIncludes\n",
+			"\n"
+		);
+	}
+	if( ($CWVersion == 0x3205 && $CWBuildNum == 465)){
+		if($TrgType =~ /^(STDDLL|STDEXE|STDLIB)$/o) {
+		&main::Output(
+				"\n",
+				"MWSym2LibraryFiles:=msl_all_mse_symbian_d.lib;gdi32.lib;user32.lib;kernel32.lib;\n",
+				"export MWSym2LibraryFiles\n",
+				"\n"
+			);
+		}
+		else {
+			&main::Output(
+				"\n",
+				"MWSym2LibraryFiles:=msl_all_static_mse_symbian_d.lib;gdi32.lib;user32.lib;kernel32.lib;\n",
+				"export MWSym2LibraryFiles\n",
+				"\n"
+			);
+		}
+	}
+		
+	if($WarningLevel =~ /\-cwd\s\s*include/){	
+		&main::Output(
+			"# EPOC DEFINITIONS\n",
+			"\n",
+			"INCDIR  = -cwd include -i-"
+		);
+	}
+	else {
+		&main::Output(
+			"# EPOC DEFINITIONS\n",
+			"\n",
+			"INCDIR  = -cwd source -i-"
+		);
+	}
+	foreach (@ChopUserIncPaths,@ChopSysIncPaths) {
+		&main::Output(
+			" \\\n -i \"$_\""
+		);
+	}
+	use Pathutl;
+	if($VariantFile){
+	    my $variantFilePath = Path_Split('Path',$VariantFile);
+	    $VariantFile  = Path_Split('FILE',$VariantFile);
+	    # workaround for codewarrior defect:
+	    # codewarrior at the moment doesn't accept an absolute path with the
+	    # the -include option unless it contains a drive letter, this is solved
+	    # by including the directory and the file separately
+	    &main::Output("\\\n -i \"$variantFilePath \" -include \"$VariantFile\"");
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CWFLAGS ="		
+	);
+
+	# 'wchar_t' should be treated as default datatype for OE targets because when wchar_t option is turned off, 
+	# using 'wchar_t' defaults to the unsigned short int and wrong functionality. 
+	if ( $TrgType =~ /^(STDEXE|STDDLL|STDLIB)$/io || StdCppTarget() ) 
+	{
+		&main::Output(
+			" -wchar_t on"
+		);	
+	}
+	else 
+	{
+		&main::Output(
+			" -wchar_t off"
+		);
+	}
+
+	&main::Output(		
+		" -align 4",		# long alignment
+		" -warnings on",	# selection of warnings
+		" -w nohidevirtual",	# turn off "hides inherited virtual function" warning
+		   ",nounusedexpr",	# turn off "expression has no side effect" warning
+		" -msgstyle gcc",	# use GCC-style message format
+		# " -strict on",		# strict ANSI/ISO C++ checking
+		" -enum int",		# use int for enumeration types
+		" -str pool",		# pool strings into a single data object
+		" -exc ms",			# SEH C++ exception implementation
+		" -trigraphs on",		# Enable recognition of C-style trigraphs, e.g. '??/' -> '\'
+		" $WarningLevel"		
+	
+	);
+
+	if ($Win32StdHeaders or &main::Plat eq 'TOOLS') {
+		&main::Output(
+			" -stdinc"		# insist because mwccsym2 has -nostdinc as the default(?)
+		);
+	}
+	else {
+		&main::Output(
+			" -nostdinc"	# insist because mwcc has -stdinc as the default.
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CWDEFS  = "
+	);
+	foreach(@MacroList) {
+		&main::Output(
+			" -d \"$_\""
+		);
+	}
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"CW$_ = $MWCC"
+		);
+		if (/DEB$/o) {
+			&main::Output(
+				' -g -O0'   # debug information, no optimisation
+			);
+#			euser change to apply inlining on the _NAKED functions
+
+#			stdexe/stddll change so that the inline functions dont 
+#			get exported (in debug build) causing a different export list for debug and release builds
+			if ($BaseTrg!~/^EUSER$/oi && $TrgType !~ /^(STDEXE|STDDLL)$/io) {
+				&main::Output(
+					' -inline off'
+				);
+			}	
+		}
+		elsif (/REL$/o) {
+			&main::Output(
+				' -O4,s'	# highest level of optimisation, optimise for space
+			);
+		}
+
+		if( ($CWVersion == 0x3205 && $CWBuildNum >= 465) || $CWVersion > 0x3205){
+			if ($TrgType =~ /^(STDEXE|STDDLL|STDLIB)$/io) {
+				&main::Output(
+					' -runtime dllmulti'
+				);
+			}
+			else {
+				&main::Output(
+					' -runtime staticmulti'
+				);
+			}
+		}
+
+		&main::Output(
+			' $(CWFLAGS)'
+		);
+		foreach (&main::MacroList($_)) {
+			&main::Output(
+				" -d $_"
+			);
+		}
+		&main::Output(
+			" \$(CWDEFS) \$(INCDIR)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+
+		if ($BasicTrgType !~ /IMPLIB/io) {
+			&main::Output (
+				" \\\n",
+				"\t", &Generic_Quote("\$(EPOCTRG$_)\\$TrgDir$Trg")
+			);
+			if (&Winutl_CopyForStaticLinkage) {
+				&main::Output(
+					" \\\n",
+					"\t", &Generic_Quote("\$(EPOCTRG$_)\\$Trg")
+				);
+			}
+		}
+
+#		lib has to come after the main target so that a .DEF file will be generated if the project is not frozen
+		if ($DefFile and not &main::ExportUnfrozen) {
+			&main::Output(
+				" \\\n",
+				"\tLIBRARY\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	foreach (@BldList) {
+		my $makework="MAKEWORK$_";
+		&main::Output(
+			"\n",
+			"RESOURCE$_ : $makework"
+		);
+
+		my $BitMapRef;
+		foreach $BitMapRef (@$BitMapStructRef) {
+			my $file="\$(EPOCTRG$_)\\$$BitMapRef{TrgPath}$$BitMapRef{Trg}";
+			&Generic_MakeWorkFile($makework,$file);
+			&main::Output(
+				" \\\n",
+				"\t", &Generic_Quote($file)
+			);
+		}
+		undef $BitMapRef;
+
+		my $ResourceRef;
+		foreach $ResourceRef (@$ResourceStructRef) {
+			if(! defined $$ResourceRef{Hdronly}) {
+				my $file="\$(EPOCTRG$_)\\$$ResourceRef{Trg}";
+				&Generic_MakeWorkFile($makework,$file);
+				&main::Output(	# must come before main target because source for target will depend on the
+				" \\\n",		# *.rsg file in $EPOCIncPath
+				"\t", &Generic_Quote("$file")
+				);
+			}
+		}
+		undef $ResourceRef;
+
+		my $AifRef;
+		foreach $AifRef (@$AifStructRef) {
+			my $file="\$(EPOCTRG$_)\\$AifTrgDir$$AifRef{Trg}";
+			&Generic_MakeWorkFile($makework,$file);
+			&main::Output(
+				" \\\n",
+				"\t", &Generic_Quote($file)
+			);
+		}
+		undef $AifRef;
+
+		&main::Output(
+			"\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n",
+	);
+
+	&main::Output(
+		"\n",
+		"# REAL TARGET - LIBRARY\n",
+		"\n",
+		"LIBRARY : MAKEWORKLIBRARY"
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+#		code to ensure that the static libraries for all builds are built at the library stage
+		foreach (@BldList) {
+			&main::Output(
+				" $_"
+			);
+		}
+	}
+	elsif ($DefFile and !$NoExportLibrary) {
+		unless (&main::ExportUnfrozen) {
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				my $LibLinkAs = ($BasicTrgType=~/^IMPLIB$/io) ? $LinkAs : $Trg;
+				&main::Output(
+					" ", &Generic_Quote("\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib"), "\n",
+					"\n",
+					&Generic_Quote("\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib"), " : ",
+					&Generic_Quote($DefFile), "\n",
+					"\tperl -S prepdef.pl ",&Generic_Quote($DefFile)," \"\$(EPOCBLD)\\$ExportLibrary.prep.def\"\n",
+					"\t$MWLD \"\$(EPOCBLD)\\$ExportLibrary.prep.def\" -importlib -o \$\@",
+					" -addcommand \"out:$LibLinkAs\" -warnings off",
+					"\n"
+				);
+			} else {
+				&main::Output(
+					"\n",
+					"\t\@echo WARNING: Not attempting to create \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\".\n",
+					"\t\@echo When exports are frozen in \"$DefFile\", regenerate Makefile.\n"
+				);
+			}
+		} else {
+			&main::Output(
+				"\n",
+				"\t\@echo Not attempting to create \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"\n",
+				"\t\@echo from frozen .DEF file, since EXPORTUNFROZEN specified.\n"
+			);
+		}
+	}
+	&main::Output(
+		"\n",
+		"\n",
+		"FREEZE :\n"
+	);
+	if ($DefFile and $BasicTrgType!~/^IMPLIB$/io) {
+		&main::Output(
+#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			"\tperl -S efreeze.pl \$(EFREEZE_ALLOW_REMOVE) \"$DefFile\" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n"
+		);
+	}
+	else {
+		&main::Output( "\tperl -e \"print \\\"warning: freeze could not be supported or \\
+		         you need to declare an explicitly specified def file using the keyword \\
+			 DEFFILE in the MMP file!\\n\\\"\""); 
+	}
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+	if ($DefFile and !$NoExportLibrary) {
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"\n"
+		);
+	}
+	&main::Output(
+		"\n"
+	);
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}UDEB");
+
+	&Generic_Releaseables;
+}
+
+my $uidfile;
+sub PMBld {
+
+	my $AifStructRef=&main::AifStructRef;
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $BitMapStructRef=&main::BitMapStructRef;
+	my $Bld=&main::Bld;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $DefFile=&main::DefFile;
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @LibList;
+	my $RelPath=&main::RelPath;
+	my $ResourceStructRef=&main::ResourceStructRef;
+	my @StatLibList=&main::StatLibList;
+	my $Trg=&main::Trg;
+	my $TrgPath=&main::TrgPath;
+	my $TrgType=&main::TrgType;
+	# Get the information regarding supporting Compiler Wrapper Option
+	my $IsCompilerWrapperOption=&main::CompilerWrapperOption();
+
+	$NamedSymLkup = 1 if($TrgType =~ /^(STDDLL|STDEXE)$/o);
+
+	$uidfile = "$BaseTrg.UID";
+
+	if ($Bld =~ /DEB/) {
+		@LibList=&main::DebugLibList;
+	} else {
+		@LibList=&main::LibList;
+	}
+
+	# OE Glue Code
+	my @oe_exe_libs=("libcrt0.lib");
+	my @oe_exe_libs_wchar=("libwcrt0.lib");
+
+	# OE Import Libraries
+	my @oe_import_libs=("euser.lib"); 
+ 	if(not (grep /^libc.lib$/i, @LibList)){
+ 			push @oe_import_libs, "libc.lib";
+ 	}	   	
+	   	
+   # Handle migration of binaries to secure location
+
+	my $BLDTRGPATH = "";
+	my $AIFBLDTRGPATH = "";
+	if ($TrgPath) {
+		$BLDTRGPATH = "\$(TRGDIR)\\";	    # handles TARGETPATH
+		$AIFBLDTRGPATH = $BLDTRGPATH;
+		&Winutl_AdjustTargetPath(\$BLDTRGPATH);
+	}
+	$BLDTRGPATH = "\$(EPOCTRG$Bld)\\".$BLDTRGPATH;
+	$AIFBLDTRGPATH = "\$(EPOCTRG$Bld)\\".$AIFBLDTRGPATH;
+
+	# REAL TARGETS
+	#-------------
+	&main::Output(
+		"# REAL TARGET - BUILD VARIANT $Bld\n",
+		"\n"
+	);
+
+#	releasables
+	my @releaseables;
+	
+	unless (&main::Plat() eq 'TOOLS') {
+		if ($TrgType !~ /^IMPLIB$/io) {
+			if ($TrgType !~ /^NONE/io) {
+				push @releaseables, "$BLDTRGPATH$Trg";
+				if ($Bld=~/REL$/o && $BasicTrgType!~/^LIB$/o) {
+					push @releaseables,"$BLDTRGPATH$Trg.map";
+				}
+				if (&Winutl_CopyForStaticLinkage) {
+					push @releaseables, "\$(EPOCTRG$Bld)\\$Trg";
+				}
+			}
+			my $BitMapRef;
+			foreach $BitMapRef (@$BitMapStructRef) {
+				push @releaseables, "\$(EPOCTRG$Bld)\\$$BitMapRef{TrgPath}$$BitMapRef{Trg}";
+			}
+			my $ResourceRef;
+			foreach $ResourceRef (@$ResourceStructRef) {
+				if(! defined $$ResourceRef{Hdronly}) {
+					push @releaseables,"\$(EPOCTRG$Bld)\\$$ResourceRef{Trg}";
+				}
+			}
+			my $AifRef;
+			foreach $AifRef (@$AifStructRef) {
+				push @releaseables, "$AIFBLDTRGPATH$$AifRef{Trg}";
+			}
+		}
+		if (-e $DefFile and !$NoExportLibrary) { # effectively "if project frozen ..."
+			push @releaseables, "\$(EPOCLIB$Bld)\\$ExportLibrary.lib";
+		}
+		if ($Bld=~/DEB$/o) {
+			# debugging support files?
+		}
+	}
+	else {
+		if ($BasicTrgType !~ /^IMPLIB$/io) {
+			my $toolspath=&main::EPOCToolsPath();
+			push @releaseables, "$toolspath$Trg";
+		}
+	}
+
+
+	my $firstlib = "";
+	my $newlib = "";
+
+	if ( $BasicTrgType =~ /^(EXE|DLL)$/o && main::Plat() ne 'TOOLS' ) {
+
+		$firstlib = main::FirstLib();
+
+		unless ( StdCppTarget() || ! main::StdCppSupport()) {
+
+			$newlib = main::NewLib(); # Check if has been set in the MMP file.
+
+			unless ($newlib) {
+				if ( main::SystemTrg() ) {
+
+					$newlib = 'scppnwdl_kern.lib';
+				}
+				else {
+					$newlib = 'scppnwdl.lib';
+				}
+			}
+		}
+	}
+
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+
+	my $adjustedTargetPath=$TrgPath;
+	&Winutl_AdjustTargetPath(\$adjustedTargetPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld", &main::BldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld", "$RelPath$adjustedTargetPath");
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	return if ($BasicTrgType=~/^IMPLIB$/io);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+		$BaseSrc =~ s/\.UID/_UID_/i if ($BaseSrc eq $uidfile);
+		
+   		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+   		);
+   	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	#Compiler wrapper support starts
+	if($IsCompilerWrapperOption)
+	{
+	 	my $Platcmpwrap=&main::Plat;
+	 	
+		&main::Output(
+			"COMPWRAP$Bld : OUTPUT_NAME = ",
+			"$Platcmpwrap\_$Bld",
+			"\n"
+		);
+	 	
+		&main::Output(
+			"COMPWRAP$Bld : MAKEWORK$Bld"
+		);
+
+		foreach (@SrcList) {
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+			$BaseSrc.='_' if (lc($Ext) eq '.cia');
+			$BaseSrc =~ s/\.UID/_UID_/i if ($BaseSrc eq $uidfile);
+			
+			&main::Output(
+				" \\\n\tCOMPWRAP$Bld$BaseSrc"
+			);
+		}
+
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+	#--Compiler wrapper support ends
+
+	# Flag that tells whether to run checklib.exe on static libraries.
+	my $run_checklib = 0;
+
+	if (@StatLibList && $BasicTrgType =~ /^(EXE|DLL)$/o && !main::SystemTrg() && main::StdCppSupport()) {
+		# There are user-added static libraries. They should be checked for
+		# consistent use of operator new.
+		$run_checklib = 1;
+
+		#Create a make variable for the libraries.
+		main::Output("\nUSER_ADDED_ARCHIVES_$Bld=");
+		for (@StatLibList) {
+			&main::Output(
+				" \\\n\t", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_")
+			);
+		}
+
+		main::Output("\n\n");
+	}
+
+	&main::Output(
+		"LIBS$Bld="
+	);
+	foreach (@StatLibList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_")
+		);
+	}
+	
+	#OE Glue Code
+	if ($TrgType=~/^STDEXE$/o) {
+		if (&main::IsWideCharMain()) {
+			foreach (@oe_exe_libs_wchar) {
+				&main::Output(
+					" \\\n\t", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_")
+				);
+			}
+		}
+		else {
+			foreach (@oe_exe_libs) {
+				&main::Output(
+					" \\\n\t", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_")
+				);
+			}
+		}
+	}
+
+	foreach (@LibList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote("\$(EPOCLINK$Bld)\\$_")
+		);
+	}
+
+	#OE Import Libraries
+	if ($TrgType =~ /^STDEXE$/o || $TrgType =~ /^STDDLL$/o) {
+		foreach (@oe_import_libs) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote("\$(EPOCLINK$Bld)\\$_")
+		);
+		}
+	}
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LINK_OBJS$Bld="
+	);
+	my $have_uidfile = 0;
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		if ($BaseSrc eq $uidfile) {
+			$have_uidfile = 1;
+			next;
+		}
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+   		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o")
+   		);
+   	}
+
+	my $add_stdcpp_tag = 0;
+
+	if ($BasicTrgType=~/^LIB$/o && StdCppTarget() ) {
+		$add_stdcpp_tag = 1;
+	}
+
+	if ($add_stdcpp_tag) {
+		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote("$stdcpp_tag_path\\$stdcpp_tag_file")
+		);
+	}
+	if ($Win32Resrc) {
+		my $resbase=&main::Path_Split('Base',$Win32Resrc);
+		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$resbase.res")
+		);
+	}
+	if ($have_uidfile) {
+		# ensure that the uid file is at the end of the list, as it's implicit in
+		# CodeWarrior IDE projects.
+		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg"."_UID_.o")
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::OutFormat(
+		"COMMON_LINK_FLAGS$Bld=",
+		' -msgstyle gcc',
+		' -stdlib'		# use default runtime library for compiler help functions
+	);
+	if ($MWLD =~ /mwcc.exe/) {
+		&main::OutFormat(
+			' -warnings on'	# on by default in mwccsym2.exe
+		);
+	}
+
+	main::OutFormat(" \"\$(EPOCSTATLINK$Bld)\\$firstlib\" ") if $firstlib;
+	main::OutFormat(" \"\$(EPOCSTATLINK$Bld)\\$newlib\" ")   if $newlib;
+
+	foreach my $lib (@Win32LibList) {
+		 my $win32lib = $lib;    # take a copy, to avoid updating contents of Win32LibList!
+		$win32lib = "-l$win32lib" unless ($win32lib =~ /\\/);
+		&main::OutFormat(
+			" ",lc $win32lib
+		);
+	}
+	if ($BasicTrgType=~/^DLL$/o) {
+		&main::OutFormat(
+			"$BaseAddressFlag",
+			' -main __Win32DllMain@12',
+			' -shared'
+		);
+	}
+	elsif ($TrgType=~/^EXEXP$/o) {
+		&main::OutFormat(
+			"$BaseAddressFlag",
+			' -noentry',
+			' -shared'
+		);
+	}
+	elsif ($BasicTrgType=~/^EXE$/o) {
+		unless (&main::Plat eq 'TOOLS') {
+			&main::OutFormat(
+				' -m "?_E32Bootstrap@@YGXXZ"'
+			);
+		}
+	}
+	if (&main::Plat=~/^(WINC|TOOLS)$/o && $BasicTrgType=~/^EXE$/o) {
+		&main::OutFormat(
+			' -subsystem console'
+		);
+	}
+	else {
+		&main::OutFormat(
+			' -subsystem windows'
+		);
+	}
+	if (&main::HeapSize) {
+		my %HeapSize=&main::HeapSize;
+		&main::OutFormat(
+			' -heapreserve=',RoundUp1k($HeapSize{Max}),' -heapcommit=',RoundUp1k($HeapSize{Min})
+		);
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		if ($Bld=~/DEB$/o) {
+			&main::OutFormat(
+				' -g'
+			);
+		}
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	if($TrgType =~/^(STDEXE|STDDLL|STDLIB)$/o) {
+		if(! (( $CWVersion == 0x3205 && $CWBuildNum >= 465 ) || $CWVersion > 0x3205 ) ) {
+			&main::FatalError("TargetType $TrgType requires CodeWarrior version `3.2.5 build 465' or later but you have $CWVersionReadable.");
+		}
+	}
+
+	my $EntrySymbol='';
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $NamedSymLkup) {
+		my $Include="";
+		if ($BasicTrgType=~/^DLL$/o) {
+			$Include="-m __E32Dll";
+			$EntrySymbol='__E32Dll';
+		}
+		else {
+			$Include="-m __E32Startup";
+			$EntrySymbol='__E32Startup';
+		}
+		&main::Output(
+			"STAGE1_LINK_FLAGS$Bld= \$(COMMON_LINK_FLAGS$Bld) \$(LIBS$Bld) \\\n\t",
+			" -o \"\$(EPOCBLD$Bld)\\$Trg\"");
+		
+		if ($NamedSymLkup) {
+			&main::Output(
+			" -export all",
+			" -map \"\$(EPOCBLD$Bld)\\$Trg.map\""
+			);
+		}
+		else {
+			&main::Output(' -export dllexport');
+		}
+
+		if($CWRuntimeLibs ne "") {
+			&main::Output(
+				" -l$CWRuntimeLibs "
+			);
+		}
+		if($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+			&main::Output(
+				" $Include",
+				' -nocompactimportlib', 
+				" -implib \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"",
+				" -addcommand \"out:$Trg\" -warnings off",
+				"\n",
+			);
+		}
+		else{
+#		Dont generate import libs for an Exe
+			&main::Output(
+				" $Include",
+				" -addcommand \"out:$Trg\" -warnings off",
+				"\n",
+			);
+		}
+	}
+	my $AbsentSubst = '';
+	if ($EntrySymbol) {
+		$AbsentSubst = " -absent $EntrySymbol";
+	}
+
+	&main::Output(
+		"LINK_FLAGS$Bld= \$(COMMON_LINK_FLAGS$Bld) \$(LIBS$Bld) \\\n\t",
+		" -o \"$BLDTRGPATH$Trg\" ", &main::LinkerOption("CW") 
+	);
+	if($CWRuntimeLibs ne "") {
+			&main::Output(
+				" -l$CWRuntimeLibs "
+			);
+	}
+	if ($Bld=~/REL$/o && $BasicTrgType!~/^LIB$/o) {
+		# Generate map file for release build executables
+		&main::Output(
+			" -map \"$BLDTRGPATH$Trg.map\"", 
+		);
+	}
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			" -f \"\$(EPOCBLD)\\$ExportLibrary.def\"",	# use generated .DEF file
+		);
+		if (&main::ExportUnfrozen) {
+			&main::Output(
+				" -implib \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"",
+				" -addcommand \"out:$Trg\" -warnings off"
+			);
+		}
+		else {
+			&main::Output(
+				' -noimplib'
+			);
+		}
+	}
+	else {
+		&main::Output(
+			' -noimplib'
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		&Generic_Quote("$BLDTRGPATH$Trg"), " : \$(LINK_OBJS$Bld) "
+	);
+	if (-e $DefFile) { # effectively "if project frozen ..."
+		&main::Output(
+			&Generic_Quote($DefFile)
+		);
+	}
+
+	main::Output(" ", Generic_Quote("\$(EPOCSTATLINK$Bld)\\$firstlib") ) if $firstlib;
+	main::Output(" ", Generic_Quote("\$(EPOCSTATLINK$Bld)\\$newlib") )   if $newlib;
+
+	&main::Output(
+		" \$(LIBS$Bld)\n"
+	);
+
+	my $checklib = "checklib";
+
+	if ( StdCppTarget() ) {
+		$checklib .= " stdc++ --coff";
+	}
+	else {
+		$checklib .= " symc++ --coff";
+	}
+
+	&main::Output( "\t$checklib ","\$(USER_ADDED_ARCHIVES_$Bld)\n" ) if ($run_checklib);
+#	Link by name first time round for dlls
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			"\t$MWLD \$(STAGE1_LINK_FLAGS$Bld) -l \$(EPOCBLD$Bld) -search \$(notdir \$(LINK_OBJS$Bld))\n",
+		);
+		if(!$NamedSymLkup){
+#		Dont delete the binary as we need to extract symbol/dependency info
+			&main::Output(
+			"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$Trg\"\n",
+			);
+		}
+
+#		Generate an export info file
+		my $show_options = "names,verbose";
+		$show_options = "names,unmangled,verbose" if ($MWLD =~ /mwldsym2.exe/);
+		&main::Output(
+			"\t$MWLD -S -show only,$show_options -o \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\" \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+		);
+
+#		call makedef to reorder the export information
+		&main::Output(
+#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			"\tperl -S makedef.pl $AbsentSubst -Inffile \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\""
+		);
+		if (SysTrg()) {
+    			&main::Output( "\t\t-SystemTargetType \\\n" );
+	    	}		
+		if (-e $DefFile) { # effectively "if project frozen ..."
+			&main::Output(
+				" -Frzfile \"$DefFile\""
+			);
+		}
+		my $Export;
+		my $Ordinal=1;
+		foreach $Export (&main::Exports) {
+#				replace "$" with "$$" so that NMAKE doesn't think there's a macro in the function name
+			$Export=~s-\$-\$\$-go;
+			&main::Output(
+				" -$Ordinal $Export"
+			);
+			$Ordinal++;
+		}
+		&main::Output(" -sym_name_lkup") if($NamedSymLkup);
+
+		&main::Output(" -export_entrypoint_E32Dll") if ($TrgType =~ /^STDDLL$/i);  # Workaround: To export entry point _E32DLL for target type STDDLL
+
+		&main::Output(
+			" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n",
+			"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\"\n",
+			"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+		);
+	}
+	elsif($NamedSymLkup) {
+#	2-stage linking required for all those targets that enable symbol lookup
+		&main::Output( "\t$checklib ","\$(USER_ADDED_ARCHIVES_$Bld)\n" ) if ($run_checklib);
+		&main::Output(
+			"\t$MWLD \$(STAGE1_LINK_FLAGS$Bld) -l \$(EPOCBLD$Bld) -search \$(notdir \$(LINK_OBJS$Bld))\n",
+		);
+	}
+	my $gen_src_file = "";
+	if($NamedSymLkup){
+#		pick the symbols and the dependencies.
+		&main::Output(
+			"\t$MWLD -S -show only,names,verbose -o \"\$(EPOCBLD$Bld)\\$ExportLibrary.sym\" \"\$(EPOCBLD$Bld)\\$Trg\"\n",
+		);
+
+#		Generate the source file with symbol and dependency information in the named data segment.
+		$gen_src_file = "${BaseTrg}_SYM_";
+		
+		if($BasicTrgType=~/^EXE$/o){
+#		For an EXE, generate the symbols as well as the dependencies
+			&main::Output(
+				"\tperl -S sym_lkup_util.pl -o \"\$(EPOCBLD$Bld)\\$gen_src_file.cpp\" -sym \"\$(EPOCBLD$Bld)\\$ExportLibrary.sym\" -map \"\$(EPOCBLD$Bld)\\$Trg.map\"\n"
+			);
+		}
+		else {
+#		For DLLs, generate only the dependencies.
+			&main::Output(
+				"\tperl -S sym_lkup_util.pl -o \"\$(EPOCBLD$Bld)\\$gen_src_file.cpp\" -sym \"\$(EPOCBLD$Bld)\\$ExportLibrary.sym\" --ignore_export_dir\n"
+			);
+		}
+		main::Output(
+			"\t\$(CW$Bld) -c \"\$(EPOCBLD$Bld)\\$gen_src_file.cpp\" -o \"\$(EPOCBLD$Bld)\\$gen_src_file.o\"\n",
+		);
+	}
+
+#	Perform the final link step
+	&main::Output(
+		"\t$MWLD "
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+		&main::Output(
+			"-library "
+		);
+
+		&main::Output( "-l $stdcpp_tag_path ") if ($add_stdcpp_tag);
+	}
+	
+	if($NamedSymLkup){
+#	Final linking and cleanup
+		main::Output(
+		"\$(LINK_FLAGS$Bld) -l \$(EPOCBLD$Bld) -search \$(notdir \$(LINK_OBJS$Bld))",
+		" \"\$(EPOCBLD$Bld)\\$gen_src_file.o\"\n",
+		"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$gen_src_file.cpp\"\n",
+		"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$gen_src_file.o\"\n",
+		"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$ExportLibrary.sym\"\n",
+		"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$Trg.map\"\n",
+		"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$Trg\"\n",
+		);
+	}
+	else {
+		&main::Output(
+			"\$(LINK_FLAGS$Bld) -l \$(EPOCBLD$Bld) -search \$(notdir \$(LINK_OBJS$Bld))\n",
+		);
+	}
+	
+	
+	if (&main::Plat eq 'TOOLS') {
+		&main::Output(
+			"\tcopy \"BLDTRGPATH$Trg\" \"",&main::EPOCToolsPath,"$Trg\"\n"
+		);
+	}
+	if (&Winutl_CopyForStaticLinkage) {
+		&Generic_MakeWorkDir("MAKEWORK$Bld", "\$(EPOCTRG$Bld)");
+		&main::Output(
+			"\n",
+			&Generic_Quote("\$(EPOCTRG$Bld)\\$Trg"), " : ", 
+			&Generic_Quote("$BLDTRGPATH$Trg"), "\n",
+			"\t", &Generic_CopyAction(),
+		);
+	}
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+}
+
+sub PMBitMapBld {
+
+	&Generic_BitMapBld;
+
+	# Need to copy generic resource into emulated Z drive
+
+	my $BitMapRef=&main::BitMapRef;
+
+	my $ChopTrgPath="";
+	if ($$BitMapRef{TrgPath}) {
+		$ChopTrgPath.="\\$$BitMapRef{TrgPath}";
+		chop $ChopTrgPath;
+	}
+
+	my @BldList=&main::BldList;
+	my $Bld;
+	foreach $Bld (@BldList) {
+		my $path="\$(EPOCTRG$Bld)$ChopTrgPath";
+		&main::Output(
+			&Generic_Quote("$path\\$$BitMapRef{Trg}"), " : ", 
+			&Generic_Quote("$$BitMapRef{GenericTrg}"), "\n",
+			"\t", &Generic_CopyAction(),
+			"\n"
+		);
+	}
+}
+
+sub PMResrcBld {
+
+	&Generic_ResrcBld;
+
+	# Need to copy generic resource into emulated Z drive
+
+	my $ResourceRef=&main::ResourceRef;
+	my @BldList=&main::BldList;
+
+	foreach my $Bld (@BldList) 
+	{
+		if(! defined $$ResourceRef{Hdronly})
+		{
+			&main::Output(
+				&Generic_Quote("\$(EPOCTRG$Bld)\\$$ResourceRef{Trg}"), " : ", 
+				&Generic_Quote("$$ResourceRef{GenericTrg}"), "\n",
+				"\t", &Generic_CopyAction(),
+				"\n"
+			);
+		}
+	}
+}
+
+sub PMAifBld {
+
+	&Generic_AifBld;
+
+	# Need to copy generic resource into emulated Z drive
+
+	my $AifRef=&main::AifRef;
+	my $TrgDir="";
+	if (&Generic_Definition("TRGDIR") ne "") {
+		$TrgDir="\\\$(TRGDIR)";
+	}
+
+	my @BldList=&main::BldList;
+	my $Bld;
+	foreach $Bld (@BldList) {
+		my $path="\$(EPOCTRG$Bld)$TrgDir";
+		&main::Output(
+			&Generic_Quote("$path\\$$AifRef{Trg}"), " : ",
+			&Generic_Quote("$$AifRef{GenericTrg}"), "\n",
+			"\t", &Generic_CopyAction(),
+			"\n"
+		);
+	}
+}
+
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;	
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	$BaseSrc =~ s/\.UID/_UID_/i if ($BaseSrc eq $uidfile);
+
+	return if (@DepList == 0);
+
+	foreach (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc.o"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	$BaseSrc =~ s/\.UID/_UID_/i if ($BaseSrc eq $uidfile);
+
+	return if (@DepList == 0);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " :",
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcBld {
+	my $BaseSrc=&main::BaseSrc;
+	$BaseSrc =~ s/\.UID/_UID_/i if ($BaseSrc eq $uidfile);
+	my $Bld=&main::Bld;
+	my $Plat=&main::Plat;
+	my $Src=&main::Src;
+	my $SrcPath=&main::SrcPath;
+	my $Ext=&main::ExtSrc;
+	my $Cia = (lc($Ext) eq '.cia') ? 1 : 0;
+	my $TrgType=&main::TrgType;
+	# Get the information regarding supporting Compiler Wrapper Option
+	my $IsCompilerWrapperOption=&main::CompilerWrapperOption();
+
+	if ($Cia) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.o"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\techo $Src\n",
+			"\t\$(CW$Bld) -lang c++ -o \"\$\@\" -c \"$SrcPath$Src\"\n",
+			"\n",
+#			assembler listing target - uses implicit rule to do disassembly
+			"LISTING$Bld$BaseSrc\_ : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc\_.$Plat.lst"),
+			"\n"
+		);
+	} else {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\techo $Src\n",
+			"\t\$(CW$Bld) -o \"\$\@\" -c \"$SrcPath$Src\" "
+		);
+		# When building for OE target type and source file is of C++ type, 
+ 		# then pass macro "__wchar_t_defined" to indicate that datatype "wchar_t" is enabled.
+ 		if ( StdCppTarget() || $TrgType =~ /^(STDEXE|STDDLL|STDLIB)$/io ) 
+ 		{			
+ 			if (lc($Ext) =~ /^(.cpp|.cc|.cxx|.c\+\+)$/)
+ 			{
+ 				&main::Output(
+ 					" -d \"__wchar_t_defined\" "					
+ 				);			
+ 			}
+ 		}
+ 		&main::Output(
+   			"\n",
+ 			"\n"
+ 		);
+		&main::Output(
+#			assembler listing target - uses implicit rule to do disassembly
+			"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc.$Plat.lst"),
+			"\n"
+		);
+
+		# Output files if Compiler Wrapper Option is specified
+		if($IsCompilerWrapperOption)
+		{
+			my $Platcmpwrap=&main::Plat;
+			&main::Output(
+				"COMPWRAP$Bld$BaseSrc : ",
+				&Generic_Quote("$SrcPath$Src"), "\n",
+				"\techo Analysing $Src\n",
+				"\t\$(COMPWRAP) \$(CW$Bld) -o \"\$\@\" -c \"$SrcPath$Src\" ",
+				"\n\n"
+			);
+
+		}
+	}
+}
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+
+	my $show_options = "source";
+	$show_options = "source,unmangled,comments" if ($MWLD =~ /mwldsym2.exe/);
+	
+	&main::Output(
+		"\n",
+		"# Implicit rule for generating .lis files\n",
+		"\n",
+		".SUFFIXES : .lis .o\n",
+		"\n",
+		".o.lis:\n",
+		"\t$MWLD -S -show $show_options \$< -o \$\@\n",
+		"\n",
+		"\n"
+	);
+
+	if ($Win32Resrc) {
+		my @BldList=&main::BldList;
+		my @DepList=&main::Deps_GenDependsL($Win32Resrc);
+
+		&main::Output(
+			"# Win32 Resource $Win32Resrc\n",
+			"\n",
+			"DEPEND="
+		);
+		foreach (@DepList) {
+			&main::Output(
+				" \\\n\t", &Generic_Quote($_)
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	
+		my $Bld;
+		my $resbase=&main::Path_Split('Base',$Win32Resrc);
+		my $respath=&main::Path_Chop(&main::Path_Split('Path',$Win32Resrc));
+		foreach $Bld (@BldList) {
+			&main::Output(
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$resbase.res"), " : ",
+				&Generic_Quote($Win32Resrc), " \$(DEPEND)\n",
+				"\tmwwinrc -o \$\@ \"$Win32Resrc\"\n",
+				"\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+}
+
+sub StdCppTarget() {
+    
+    # STDCPP is supported
+    return 0 if (! main::StdCppSupport());
+    
+	if ( main::NoStdCpp()) { # MMP keyword NOSTDCPP set
+		return 0;
+	}
+	
+	if ( main::StdCpp() ) { # MMP keyword STDCPP set.
+		return 1;
+	}
+	else {
+		return ( main::TrgType() =~ /^(STDEXE|STDDLL|STDLIB)$/io );
+	}
+}
+
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_edg.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,496 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Cl_edg;
+# 
+#
+
+package Cl_edg;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+	PMStartBldList
+	PMBld
+	PMStartSrcList
+	PMStartSrc
+	PMSrcDepend
+	PMSrcBldDepend
+	PMEndSrcBld
+	PMEndSrc
+	PMEndSrcList
+);
+use cl_generic;
+use Genutl;
+use File::Path;
+use Cwd;
+
+sub PMHelp_Mmp {
+	print "// No additional keywords for this platform\n";
+}
+
+my $epocroot = $ENV{EPOCROOT};
+$epocroot=~ s-\\$--;            # chop trailing \\
+my $Makecmd;
+sub PMStartBldList($) {
+	($Makecmd) = @_;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @BldList=&main::BldList;
+	my @ChopRTWSysIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::SysIncPaths)); # old style
+	my @ChopRTWUserIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::UserIncPaths)); # old style
+	my $RelPath="$epocroot\\EPOC32\\RELEASE";
+	my $RPath = &main::Path_RltToWork($RelPath);
+	my @MacroList=&main::MacroList();
+	my $VariantFile=&main::VariantFile();
+	my $Trg=&main::Trg;
+	my $DPath = &main::Path_RltToWork($epocroot);
+	my $DefFile = &main::DefFile;
+	my $EABIDefFile = &main::EABIDef;
+    
+    my $EdgSysIncludeList = "Edg_sysinc_list.txt";
+    my $EdgUserIncludeList = "Edg_userinc_list.txt";
+    my $EdgUdebReportList = "Edg_udeb_rep_list.txt";
+    my $EdgUrelReportList = "Edg_urel_rep_list.txt";
+
+	&Generic_Header(0,$Makecmd);	# define standard things using relative paths
+
+	# EDG report file generation
+	
+	&main::Output(
+		"GXPTRGUDEB = $RPath\\EDG\\UDEB\n",
+		"GXPTRGUREL = $RPath\\EDG\\UREL\n\n",
+		"DEFFILE = $DefFile\n\n",
+        "EABIDEFFILE = $EABIDefFile\n\n",
+		"EDG_SYSINC_LIST=\${EPOCBLD}\\..\\..\\", $EdgSysIncludeList,
+		"\n",
+		"EDG_USERINC_LIST=\${EPOCBLD}\\..\\..\\", $EdgUserIncludeList,
+		"\n",
+		"EDG_UREL_REP_LIST=\${EPOCBLD}\\..\\..\\",$EdgUrelReportList,
+		"\n",
+		"EDG_UDEB_REP_LIST=\${EPOCBLD}\\..\\..\\", $EdgUdebReportList,
+		"\n\n"
+	);
+
+	&main::Output(
+		"INCDIR ="
+	);
+	
+
+	foreach (@ChopRTWUserIncPaths) {
+		&main::Output(
+			" --include_directory \"$_\""
+		);
+	}
+
+	&main::Output(
+		"\n"
+	);
+
+
+	&main::Output(
+		"SYSINCDIR ="
+	);
+
+	foreach (@ChopRTWSysIncPaths) {
+	     &main::Output(
+			" --sys_include \"$_\"",
+	     );
+	}
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+
+	my $preinclude =   "--preinclude \$(EPOCINC)\\edg\\edg3_7_rvct2_2.h";#this is the variant line you must change to "simulate" another compiler.
+	&main::Output( 
+		"GCCFLAGS = --wchar_t_keyword --no_code_gen --exceptions --no_warnings",
+		" ${preinclude}",
+		"\n"
+	);
+
+	&main::Output(
+		"GCCDEFS = -D __MARM_THUMB__ -D __MARM_INTERWORK__ -D __ARMCC__ -D __EPOC32__ -D __MARM__ -D __EABI__ -D __ARMCC_2__ -D __ARMCC_2_2__ -D __SUPPORT_CPP_EXCEPTIONS__  -D IMPORT_C= -D EXPORT_C= -D __softfp="
+	);
+	foreach(@MacroList) {
+		&main::Output(
+			" -D $_"
+		);
+	}
+	if($VariantFile){
+	    &main::Output(" -D __PRODUCT_INCLUDE__=\\\"${VariantFile}\\\"");
+	}
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"GCC$_ = cpfe"
+		);
+		
+		&main::Output(
+			' $(GCCFLAGS)'
+		);
+		foreach (&main::MacroList($_)) {
+			&main::Output(
+				" -D $_"
+			);
+		}
+                
+		&main::Output(
+			" \$(GCCDEFS)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+	&main::Output(
+			"LIBRARY:\n",
+			"\t\@echo Nothing to do\n"
+	);
+
+	&main::Output(
+		"RESOURCEUREL:\n",
+		"\t\@echo Nothing to do\n"
+	);
+
+	&main::Output(
+		"RESOURCEUDEB:\n",
+		"\t\@echo Nothing to do\n\n\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+
+		if ($BasicTrgType !~ /IMPLIB/io) {
+			my $TrgBase = &main::Path_Split('base',$Trg);           
+			&main::Output (
+			" \\\n\t",
+			&Generic_Quote("\$(GXPTRG$_)\\$TrgBase.gxp")
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+}
+	
+sub PMBld {
+	my @ASSPLibList=&main::ASSPLibList;
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+	my $RelPath=&main::RelPath;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my @UidList=&main::UidList;
+	# DefFile
+	my $DefFile = &main::DefFile;
+	# EABIDefFile
+	my $EABIDefFile = &main::EABIDef;
+
+	# REAL TARGETS
+	#-------------
+	&main::Output(
+		"# REAL TARGET - BUILD VARIANT $Bld\n",
+		"\n"
+	);
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC CLEANEDGTEMPFILES$Bld\n",
+		"\n"
+	);
+
+	&main::Output("CLEANEDGTEMPFILES$Bld :\n",
+			"\t\-\$(ERASE) \$(EDG_SYSINC_LIST) ",
+			"\$(EDG_USERINC_LIST) ",
+			"\$(EDG_${Bld}_REP_LIST) "
+			);
+
+	my @releaseables;
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopBldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopRelPath);
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	# XML Stuff
+	&main::Output(
+				&Generic_Quote("\$(GXPTRG$Bld)\\$BaseTrg.gxp"), " : ",
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg.gxp"),
+	);
+	my @ChopRTWSysIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::SysIncPaths)); # old style
+	foreach my $incPath (@ChopRTWSysIncPaths) {
+	&main::Output(
+		"\n\t\@echo $incPath >> \$(EDG_SYSINC_LIST)",
+		);
+	}
+	
+	my @ChopRTWUserIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::UserIncPaths)); # old style
+	foreach my $incPath (@ChopRTWUserIncPaths) {
+	&main::Output(
+		"\n\t\@echo $incPath >> \$(EDG_USERINC_LIST)",
+		);
+	}
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+        
+	# TARGET *.GXP
+	#------------
+	if (scalar @SrcList >150) {
+		# deal with very long lists by splitting them into 150 file pieces, which allows
+		# about 200 bytes per filename if the underlying max size is 32K
+		#
+        
+		my $counter1=150;	# i.e. trigger new variable immediately
+		my $counter2=0;
+		my @objvarlist=();
+		foreach (@SrcList) {
+			if ($counter1==150) {
+				$counter1=0;
+				$counter2++;
+				my $objvar = "OBJECTS$Bld$counter2";
+				push @objvarlist, " \$($objvar)";
+				&main::Output(
+					"\n",
+					"$objvar="
+				);
+			}
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+                        next if (lc($Ext) eq '.cia');
+			&main::Output(
+				" \\\n\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc$Ext.aut")
+			);
+			$counter1++;
+		}
+		
+        &main::Output(
+			"\n\n"
+		);
+	} else {
+		# shorter lists remain unchanged
+		#
+		&main::Output(
+			"OBJECTS$Bld="
+		);
+                foreach (@SrcList) {
+			my $BaseSource = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+                        next if (lc($Ext) eq '.cia');
+			&main::Output(
+			" \\\n\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSource$Ext.aut")
+			);  
+		}       
+		
+		&main::Output(
+			"\n",
+			"\n"
+		);
+
+		&main::Output("RESOURCEINFO$Bld=");
+		&main::Output("\n\n");
+		
+		&main::Output(
+            
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg.gxp"), " : \$(OBJECTS$Bld) \$(EABIDEFFILE) \$(RESOURCEINFO$Bld)\n",
+			"\n\n"
+		);
+	}
+}
+
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+}
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;	
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+	my $cia = (lc($ExtSrc) eq '.cia') ? "_" : "";
+
+	return if (@DepList == 0);
+
+	foreach (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc$cia.lis"), " ",
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc$cia.aut"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+    my $cia = (lc($ExtSrc) eq '.cia') ? "" : "";
+
+	return if (@DepList == 0);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc$cia.lis"), " ",
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc$cia.aut"), " :",
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output( 
+		"\n",
+		"\n"
+	);
+}
+
+my %sources;
+
+sub PMEndSrcBld {
+	my $ABI=&main::ABI;
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+	my $Src=ucfirst lc &main::Src;
+	my $SrcPath=&main::SrcPath;
+	my $Ext = &main::Path_Split('Ext', $Src);
+	my $Cia = (lc($Ext) eq '.cia') ? 1 : 0;
+
+	my $RTWSrcPath=&main::Path_Chop(&main::Path_RltToWork($SrcPath));
+
+	# add source path, source file and build type to hashmap. 
+    $sources{$SrcPath}{$Src}{$Bld}=1;
+   
+	# Use GCC trick to get assembler source files preprocessed with CPP
+	$Src =~ s/\.s$/.S/i;
+
+	@browser = ();
+	my $EdgReportFile = "\$(EDG_UREL_REP_LIST)";
+	if($Bld =~ /udeb/i){
+		$EdgReportFile = "\$(EDG_UDEB_REP_LIST)";
+	}
+
+	if ($Cia) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.aut"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(GCC$Bld) -D __CIA__ --include_directory \"$RTWSrcPath\" \$(INCDIR) --xref \"\$\@\" \"$RTWSrcPath\\$Src\"\n",
+		"\t\@echo \"\$\<\" >> $EdgReportFile\n",
+		"\n");
+	} else {
+		
+                my $BldPath=&main::BldPath;
+                my $EdgReportFilePath=UpDir(UpDir(UpDir($BldPath)));
+		
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc$Ext.aut"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(GCC$Bld) --include_directory \"$RTWSrcPath\" \$(INCDIR) \$(SYSINCDIR) --xref \"\$\@\" \"$RTWSrcPath\\$Src\"\n",
+			"\t\@echo \$(EPOCBLD$Bld)\\$BaseSrc$Ext.aut >> $EdgReportFile\n",
+			"\n"
+		);
+
+		foreach $browser (@browser)
+		{
+		 print "$browser\n";
+		}
+	}
+}
+
+sub PMEndSrc {
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+		&Generic_End;
+}
+
+
+
+sub UpDir($)
+	{
+	my ($aPath) = @_;
+
+	my $lastChar = substr($aPath,-1);
+	my $end = length($aPath)-1;
+
+	if ( ($lastChar eq '\\') || ($lastChar eq '/') )
+		{
+		$end -= 1;
+		}
+
+	my $last = rindex($aPath,'\\',$end);
+	if ( (rindex($aPath,'/',$end)>$last) | ($last == -1) )
+		{ $last = rindex($aPath,'/',$end); }
+
+	if ($last == -1)
+		{ return ""; }
+	else
+		{ return substr($aPath,0,$last).'/'; }
+	}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_gcc.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1213 @@
+# 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:
+#
+
+
+package Cl_gcc;
+
+my $GccPrefix='';
+my $ToolPrefix='';
+my $HelperLib='';
+my %PlatOpt=(
+	'Dlltool'=>'',
+	'Entry'=>'-e',
+	'Gcc'=>'',
+	'Ld'=>'',
+	'Petran'=>'',
+	'Optimize'=>'-O'
+);
+my $Dlltool;
+my $Archive;
+my $Link;
+my $Objcopy;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+
+	PMPlatProcessMmp
+
+	PMUnderlyingABI
+
+	PMStartBldList
+		PMBld
+	PMStartSrcList
+		PMBitMapBld
+		PMResrcBld
+		PMAifBld
+		PMStartSrc
+		PMSrcDepend
+			PMSrcBldDepend
+			PMEndSrcBld
+		PMEndSrc
+	PMEndSrcList
+);
+
+use cl_generic;
+use Genutl;
+
+use constant NOCOMPRESSIONMETHOD => 0;
+use constant INFLATECOMPRESSIONMETHOD => 1;
+use constant BYTEPAIRCOMPRESSIONMETHOD => 2;
+
+use constant NOTPAGED => 0;
+use constant UNPAGED => 1;
+use constant PAGED => 2;
+sub PMHelp_Mmp {
+	print "// No additional keywords for this platform\n";
+}
+
+sub PMPlatProcessMmp (@) {
+	my $MMPFILE=&main::MmpFile;
+
+	# set up START MARM ... END block module variables
+	my @MmpWarn=();
+	my $Line;
+	LINE: foreach $Line (@_) {
+		my $LineInfo=shift @$Line;
+		$_=shift @$Line;
+		push @MmpWarn, "$LineInfo : Unrecognised Keyword \"$_\"\n";
+	}
+
+	undef $Line;
+	if (@MmpWarn) {
+		warn
+			"\nMMPFILE \"$MMPFILE\"\n",
+			"START .. END BLOCK WARNINGS(S)\n",
+			@MmpWarn,
+			"\n"
+		;
+	}
+	undef @MmpWarn;
+}
+
+sub SystemTarget() {
+	return 1 if &main::SystemTrg;
+	my $ExportLibrary=&main::ExportLibrary;
+	# N.B. should get better way to detect kernel probably!!
+	return 1 if ($ExportLibrary =~ /EKERN/i);
+	
+	return 0;
+}
+
+my %CompatibleABIs=(
+	ARMI=>['ARM4', 'THUMB'],
+	ARM4=>['ARMI'],
+	THUMB=>['ARMI']
+);
+my @CompatibleABIs;
+sub PMUnderlyingABI($) {
+	my ($ABI) = @_;
+	if ($ABI eq 'ARM4T') {
+		if (&main::BuildAsARM) {
+			return 'ARMI';
+		}
+		elsif (SystemTarget()) {
+			return 'ARM4';
+		}
+		else {
+			return 'THUMB';
+		}
+	}
+	return $ABI;
+}
+
+my $Makecmd;
+my %ABILibPath=();
+sub PMStartBldList($) {
+	($Makecmd) = @_;
+	my $ABI=&main::ABI;
+	my $UnderlyingABI=PMUnderlyingABI($ABI);
+	my $BaseTrg=&main::BaseTrg;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @BldList=&main::BldList;
+	my @ChopRTWSysIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::SysIncPaths));
+	my @ChopRTWUserIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::UserIncPaths));
+	my $DefFile=&main::DefFile;
+	my $EPOCPath=&main::EPOCPath;
+	my $LinkAs=&main::LinkAs;
+	my $LibPath=&main::LibPath;
+	my @MacroList=&main::MacroList();
+	my $VariantFile=&main::VariantFile();
+	my $Plat=&main::Plat;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my @UidList=&main::UidList;	
+	my $WarningLevel=&main::CompilerOption("GCC");
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $SystemTrg = SystemTarget();
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	my $PrimaryExportLibrary = $ExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+		$PrimaryExportLibrary = $ExtraExportLibrary;
+	}
+
+#	set up LinkAs
+	$UidList[2]=~/^0x(.*)$/o;
+	if ($1 ne '00000000') { # have to make sure than series of noughts in brackets doesn't appear in name for null uids
+		$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+	}
+
+#	set up dlltool flag hash
+	my %ABIDlltool=(
+		ARMI=>'-m arm_interwork',
+		ARM4=>'-m arm',
+		THUMB=>'-m thumb'
+	);
+
+#	work out the flags for various platforms
+	if ($ABI eq 'ARMI') {
+		$PlatOpt{Gcc}='-march=armv4t -mthumb-interwork';
+		$PlatOpt{Dlltool}=$ABIDlltool{ARMI};
+	}
+	elsif ($ABI eq 'ARM4T') {
+		if (&main::BuildAsARM) {
+			$PlatOpt{Gcc}='-march=armv4t -mthumb-interwork';
+			$PlatOpt{Dlltool}=$ABIDlltool{ARMI};
+		}
+		elsif ($SystemTrg) {
+			$PlatOpt{Gcc}='-march=armv4';
+#			allow thumb for ARM4 ABI where necessary
+			unless (&main::PlatABI eq 'ARM4') {
+				$PlatOpt{Gcc}.='t';
+			}
+			$PlatOpt{Dlltool}=$ABIDlltool{ARM4};
+		}
+		else {
+			$GccPrefix='thumb-epoc-pe-';
+			$PlatOpt{Gcc}='-mthumb-interwork -D__MARM_THUMB__';
+			$PlatOpt{Dlltool}=$ABIDlltool{THUMB};
+		}
+	}
+	elsif ($ABI eq 'ARM4') {
+		$PlatOpt{Gcc}='-march=armv4';
+#		allow thumb for ARM4 ABI where necessary
+		unless (&main::PlatABI eq 'ARM4') {
+			$PlatOpt{Gcc}.='t';
+		}
+		$PlatOpt{Dlltool}=$ABIDlltool{ARM4};
+	}
+	elsif ($ABI eq 'THUMB') {
+		$GccPrefix='thumb-epoc-pe-';
+		$PlatOpt{Gcc}='-mthumb-interwork';
+		$PlatOpt{Dlltool}=$ABIDlltool{THUMB};
+	}
+	else {
+		&main::FatalError("Platform module - ABI \"$ABI\" unrecognised");
+	}
+	
+	@CompatibleABIs=@{$CompatibleABIs{$UnderlyingABI}};
+
+#	set up CompatibleABI lib path hash
+	foreach (@CompatibleABIs) {
+		$ABILibPath{$_}=&main::Path_Strip("$LibPath..\\$_\\");
+	}
+	my %ABIRTWLibPath=();
+	foreach (@CompatibleABIs) {
+		$ABIRTWLibPath{$_}=&main::Path_RltToWork($ABILibPath{$_});
+	}
+
+	$Dlltool=$ToolPrefix.'dlltool';
+	$Archive=$ToolPrefix.'ar';
+	$Link=$ToolPrefix.'ld';
+	$Objcopy=$ToolPrefix.'objcopy';
+
+	&Generic_Header(1,$Makecmd);	# define standard things using relative paths
+
+#	GCC needs a fully-qualified path
+	if ($ENV{'PATH'} !~ m/[a-zA-z]{1}:{1}.[^;]*epoc32\\gcc\\bin/i) {
+		if ($Makecmd eq "nmake") {
+			&main::Output(
+				"\n",
+				"PATH=",&main::Path_Drive,$EPOCPath,"gcc\\bin;\$(PATH)\n",
+				"\n"
+			);
+		}
+		else {
+			&main::Output(
+				"\n",
+				"# must set both PATH and Path to make it work correctly\n",
+				"Path:=",&main::Path_Drive,$EPOCPath,"gcc\\bin;\$(Path)\n",
+				"PATH:=\$(Path)\n",
+				"\n"
+			);
+		}
+	}
+
+	&main::Output(
+		"INCDIR  ="
+	);
+
+	foreach (@ChopRTWUserIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+	foreach (@ChopRTWSysIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+	if($VariantFile){
+	    # gcc needs a relativ path
+	    $VariantFile = &main::Path_RltToWork($VariantFile);
+	    &main::Output("\\\n  -include \"$VariantFile\"");
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"GCCFLAGS=$PlatOpt{Gcc} \\\n",
+		"\t\t-pipe -c -nostdinc -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas $WarningLevel\n",
+		"\n"
+	);
+
+	&main::Output(
+		"GCCDEFS ="
+	);
+	foreach(@MacroList) {
+		&main::Output(
+			" -D$_"
+		);
+	}
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"GCC$_ = ${GccPrefix}gcc"
+		);
+		if (/REL$/o) {
+			&main::Output(
+				      ' -s -fomit-frame-pointer ',
+				      $PlatOpt{Optimize}
+			);
+		}
+		elsif (/DEB$/o) {
+			&main::Output(
+				' -g'
+			);
+			unless (&main::SrcDbg) {
+			    &main::Output(
+			    	' ', $PlatOpt{Optimize}
+			    );
+			}
+		}
+		&main::Output(
+			' $(GCCFLAGS)'
+		);
+		foreach (&main::MacroList($_)) {
+			&main::Output(
+				" -D$_"
+			);
+		}
+		&main::Output(
+			" \$(GCCDEFS)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+
+		if ($BasicTrgType !~ /IMPLIB/io) {
+			&main::Output (
+				" \\\n\t",
+				&Generic_Quote("\$(EPOCTRG$_)\\$Trg")
+			);
+		}
+
+#		lib has to come after the main target so that a .DEF file will be generated if the project is not frozen
+		if ($DefFile and not &main::ExportUnfrozen) {
+			&main::Output(
+				" \\\n",
+				"\tLIBRARY\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	# Resource building is done entirely via cl_generic.pm
+	
+	foreach (@BldList) {
+		&main::Output(
+			"\n",
+			"RESOURCE$_ : MAKEWORK$_"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n",
+	);
+
+	&main::Output(
+		"LIBRARY : MAKEWORK"
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+#		code to ensure that the static libraries for all builds are built at the library stage
+		foreach (@BldList) {
+			&main::Output(
+				" $_"
+			);
+		}
+	}
+	elsif ($DefFile and !$NoExportLibrary) {
+		unless (&main::ExportUnfrozen) {
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				&main::Output(
+					" ", &Generic_Quote("\$(EPOCLIB)\\UREL\\$PrimaryExportLibrary.lib")
+				);
+				foreach (@CompatibleABIs) {
+					&main::Output(
+						" ", &Generic_Quote("$ABILibPath{$_}UREL\\$PrimaryExportLibrary.lib")
+					);
+					&Generic_MakeWorkDir('MAKEWORKLIBRARY',"$ABILibPath{$_}UREL");
+				}
+				&main::Output(
+					"\n"
+				);
+			} else {
+				&main::Output(
+					"\n",
+					"\t\@echo WARNING: Not attempting to create any import libraries.\n",
+					"\t\@echo When exports are frozen in \"$DefFile\", regenerate Makefile.\n"
+				);
+			}
+		}
+		else {
+			&main::Output(
+				"\n",
+				"\t\@echo Not attempting to create \"\$(EPOCLIB)\\UREL\\$PrimaryExportLibrary.lib\"\n",
+				"\t\@echo from frozen .DEF file, since EXPORTUNFROZEN specified.\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n",
+			"# REAL TARGET - LIBRARY\n",
+			"# EPOCBLDP = ", &Generic_Definition('EPOCBLDP'), "\n",
+			"# EPOCLIB = ", &Generic_Definition('EPOCLIB'), "\n",
+		);
+		&main::Output(
+			"\n",
+			&Generic_Quote("\$(EPOCBLDP)\\$ExportLibrary.prep.def"), " : ",
+			&Generic_Quote($DefFile), "\n",
+			"\tperl -S prepdef.pl \$< \$@\n",
+			"\n",
+			&Generic_Quote("\$(EPOCLIB)\\UREL\\$ExportLibrary.lib"), " : ",
+			&Generic_Quote("\$(EPOCBLDP)\\$ExportLibrary.prep.def"), "\n",
+			"\tpushd ".&Generic_Quote("\$(EPOCBLDP)")." && \\\n",
+			"\t$Dlltool $PlatOpt{Dlltool} --output-lib \"$ExportLibrary.tmp.lib\" --def \"$ExportLibrary.prep.def\" --dllname \"$LinkAs\" && popd && move ", &Generic_Quote("\$(EPOCBLDP)\\$ExportLibrary.tmp.lib"), " \$@\n"
+		);
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\n",
+				&Generic_Quote("\$(EPOCLIB)\\UREL\\$ExtraExportLibrary.lib"), " : ",
+				&Generic_Quote("\$(EPOCLIB)\\UREL\\$ExportLibrary.lib"), "\n",
+				"\tcopy \$< \$@\n"
+			);
+		}
+		foreach (@CompatibleABIs) {
+			&main::Output(
+				"\n",
+				&Generic_Quote("$ABILibPath{$_}UREL\\$ExportLibrary.lib"), " : ",
+				&Generic_Quote("\$(EPOCBLDP)\\$ExportLibrary.prep.def"), "\n",
+				"\tpushd ".&Generic_Quote("\$(EPOCBLDP)")." && \\\n",
+				"\t$Dlltool $ABIDlltool{$_} --output-lib \"$ExportLibrary.tmp.lib\" \\\n",
+				"\t\t--def \"$ExportLibrary.prep.def\" \\\n",
+				"\t\t--dllname \"$LinkAs\" && popd && move ", &Generic_Quote("\$(EPOCBLDP)\\$ExportLibrary.tmp.lib"), " \$@\n"
+			);
+			if ($ExtraExportLibrary) {
+				&main::Output(
+					"\n",
+					&Generic_Quote("$ABILibPath{$_}UREL\\$ExtraExportLibrary.lib"), " : ",
+					&Generic_Quote("$ABILibPath{$_}UREL\\$ExportLibrary.lib"), "\n",
+					"\tcopy \$< \$@\n"
+				);
+			}
+		}
+	}
+	&main::Output(
+		"\n",
+		"\n",
+		"FREEZE :\n"
+	);
+	if ($DefFile and $BasicTrgType!~/^IMPLIB$/io) {
+		&main::Output(
+#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			"\tperl -S efreeze.pl \$(EFREEZE_ALLOW_REMOVE) \"$DefFile\" \"\$(EPOCBLDP)\\$ExportLibrary.def\" \n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+	if ($DefFile and !$NoExportLibrary) {
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCLIB)\\UREL\\$ExportLibrary.lib\"\n",
+			"\t-\$(ERASE) \"\$(EPOCBLDP)\\$ExportLibrary.prep.def\"\n"
+		);
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\t-\$(ERASE) \"\$(EPOCLIB)\\UREL\\$ExtraExportLibrary.lib\"\n"
+			);
+		}
+		foreach (@CompatibleABIs) {
+			&main::Output(
+				"\t-\$(ERASE) \"$ABILibPath{$_}UREL\\$ExportLibrary.lib\"\n"
+			);
+			if ($ExtraExportLibrary) {
+				&main::Output(
+					"\t-\$(ERASE) \"$ABILibPath{$_}UREL\\$ExtraExportLibrary.lib\"\n"
+				);
+			}
+		}
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}UREL");
+
+	&Generic_Releaseables;
+}
+
+
+sub PMBld {
+
+	my @ASSPLibList=&main::ASSPLibList;
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $DefFile=&main::DefFile;
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $FirstLib=&main::FirstLib;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @LibList;
+	my $LibPath=&main::LibPath;
+	my $LinkAs=&main::LinkAs;
+	my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+	my $RelPath=&main::RelPath;
+	my @StatLibList=&main::StatLibList;
+	my $StatLinkPath=&main::StatLinkPath;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my @UidList=&main::UidList;
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $SystemTrg = SystemTarget();
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+	}
+
+	if ($Bld =~ /DEB/) {
+		@LibList = &main::DebugLibList;
+	} else {
+		@LibList = &main::LibList;
+	}
+
+#	set up $LinkAs
+	$UidList[2]=~/^0x(.*)$/o;
+	if ($1 ne '00000000') {	# have to make sure than series of noughts in brackets doesn't appear in name for null uids
+		$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+	}
+
+
+	# REAL TARGETS
+	#-------------
+	&main::Output(
+		"# REAL TARGET - BUILD VARIANT $Bld\n",
+		"\n"
+	);
+
+#	releasables
+	my @releaseables;
+	
+
+	push @releaseables, "$RelPath$Trg" if ($BasicTrgType!~/^IMPLIB$/io);
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		push @releaseables, "$RelPath$Trg.MAP";
+	}
+	if (-e $DefFile and !$NoExportLibrary) { # effectively "if project frozen ..."
+		push @releaseables, "$LibPath$ExportLibrary.lib";
+		push @releaseables, "$LibPath$ExtraExportLibrary.lib" if ($ExtraExportLibrary);
+		foreach (@CompatibleABIs) {
+			push @releaseables, "$ABILibPath{$_}UREL\\$ExportLibrary.lib";
+			push @releaseables, "$ABILibPath{$_}UREL\\$ExtraExportLibrary.lib" if ($ExtraExportLibrary);
+		}
+	}
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLDP$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopBldPath);
+	if (defined $ENV{PBUILDPID}) {
+		my $ChopBldPPath = $ChopBldPath;
+		$ChopBldPPath =~ s/(.*)\\(\w+)\\$Bld$/$1\\$2\$\(PBUILDPID\)\\$Bld/i;
+		&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopBldPPath);
+	}
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopRelPath);
+
+	return if ($BasicTrgType=~/^IMPLIB$/io);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+   		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+   		);
+   	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LIBS$Bld="
+	);
+	if ($BasicTrgType=~/^DLL$/o) { # Add the DLL stub library
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\EDLLSTUB.LIB")
+		);
+	}
+	if ($HelperLib) {
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\$HelperLib")
+		);
+	}
+	foreach (@StatLibList) {
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_")
+		);
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)/o) { # Add the GCC helper fns
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\EGCC.LIB")
+		);
+	}
+	foreach (@ASSPLibList) {
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCASSPLINK$Bld)\\$_")
+		);
+	}
+	foreach (@LibList) {
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCLINK$Bld)\\$_")
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"# EPOCBLDP$Bld = ", &main::Path_AbsToWork(&Generic_Definition("EPOCBLDP$Bld")), "\n",
+		"# EPOCSTATLINK$Bld = ", &main::Path_AbsToWork(&Generic_Definition("EPOCSTATLINK$Bld")), "\n",
+		"# EPOCLIB = ", &main::Path_AbsToWork(&Generic_Definition("EPOCLIB")), "\n",
+	);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCTRG$Bld)\\$Trg"), " : ",
+		&Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseTrg.in")
+	);
+	if (-e $DefFile) { # effectively "if project frozen ..."
+		&main::Output(
+			" ", &Generic_Quote($DefFile)
+		);
+	}
+	if ($BasicTrgType=~/^(EXE|DLL)$/o) {
+		&main::Output(
+			" ", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$FirstLib")
+		);
+	}
+	&main::Output(
+		" \$(LIBS$Bld)\n"
+	);
+
+
+#	Establish the entry point symbol
+	my $EntrySymbol;
+	if ($BasicTrgType=~/^DLL$/o) {
+		$EntrySymbol = '_E32Dll';
+	}
+	elsif ($BasicTrgType=~/^EXE$/o) {
+		$EntrySymbol = '_E32Startup';
+	}
+	my $AbsentSubst = '';
+	if ($EntrySymbol) {
+		$AbsentSubst = " -absent $EntrySymbol";
+	}
+
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+
+#		generate a .DEF file from the objects and static libraries
+		&main::Output(
+			"\tpushd ".&Generic_Quote("\$(EPOCBLDP$Bld)")." && \\\n",
+			"\t$Dlltool $PlatOpt{Dlltool} --output-def \"$ExportLibrary.inf\" \"$BaseTrg.in\""
+		);
+		foreach (@StatLibList) {
+			&main::Output(
+				" \"", &main::Path_MakeRltToBase(&main::Path_AbsToWork(&Generic_Definition("EPOCBLDP$Bld")."\\"), &main::Path_AbsToWork(&Generic_Definition("EPOCSTATLINK$Bld")."\\"))."$_\""
+			);
+		}
+		&main::Output(
+			" && popd\n"
+		);
+
+#		reorder the .DEF file taking frozen exports into account if there are any
+		&main::Output(
+#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			"\tperl -S makedef.pl -Deffile \"\$(EPOCBLDP$Bld)\\$ExportLibrary.inf\"$AbsentSubst"
+		);
+		if (SystemTarget()) {
+    			&main::Output( "\t\t-SystemTargetType \\\n" );
+	    	}		
+		if (-e $DefFile) { # effectively "if project frozen ..."
+			&main::Output(
+				" -Frzfile \"$DefFile\""
+			);
+		}
+		# freeze ordinals, a maximum of 2, for polymorphic dlls
+		my $Ordinal;
+		my $Num=1;
+		foreach $Ordinal (&main::Exports) {
+			&main::Output(
+				" -$Num $Ordinal"
+			);
+			$Num++;
+		}
+		&main::Output(
+			"  \"\$(EPOCBLDP)\\$ExportLibrary.def\"\n"
+		);
+
+#		delete the unordered definition file
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCBLDP$Bld)\\$ExportLibrary.inf\"\n"
+		);
+
+#		generate an export object from the ordered .DEF file
+		&main::Output(
+			"\tpushd ".&Generic_Quote("\$(EPOCBLDP$Bld)")." && \\\n",
+			"\t$Dlltool $PlatOpt{Dlltool} --def \"..\\$ExportLibrary.def\" \\\n",
+			"\t\t--output-exp \"$ExportLibrary.exp\" \\\n",
+			"\t\t--dllname \"$LinkAs\""
+		);
+		if (&main::ExportUnfrozen) {
+			&main::Output(
+				"\\\n",
+				"\t\t--output-lib \"", &main::Path_MakeRltToBase(&main::Path_AbsToWork(&Generic_Definition("EPOCBLDP$Bld")."\\"), &main::Path_AbsToWork(&Generic_Definition("EPOCLIB")."\\"))."UREL\\$ExportLibrary.lib\"",
+				" && popd\n"
+			);
+			if ($ExtraExportLibrary) {
+				&main::Output(
+					"\n",
+					"\tcopy \$(EPOCLIB)\\UREL\\$ExportLibrary.lib ",
+				       	"\$(EPOCLIB)\\UREL\\$ExtraExportLibrary.lib",
+					"\n"
+				);
+			}
+		}
+		else {
+			&main::Output(
+				" && popd\n"
+			);
+		}				
+	}
+
+#	call ld to do base relocations (and dll exports)
+	if ($BasicTrgType=~/^(DLL|EXE)/o) {
+		&main::Output(
+			"\t$Link $PlatOpt{Ld} -s"
+			);	
+		if ($BasicTrgType=~/^DLL$/o) {
+			&main::Output(
+				" $PlatOpt{Entry} $EntrySymbol -u $EntrySymbol \"\$(EPOCBLDP$Bld)\\$ExportLibrary.exp\" --dll \\\n"
+			);
+		}
+		elsif ($BasicTrgType=~/^EXE$/o) {
+			&main::Output(
+				" $PlatOpt{Entry} $EntrySymbol -u $EntrySymbol \\\n"
+			);
+		}
+#		--whole-archive is required here apparently because of a defect  in the gcc toolchain
+#		the flag can probably be removed with a later version of gcc
+		&main::Output(
+			"\t\t--base-file \"\$(EPOCBLDP$Bld)\\$BaseTrg.bas\" -o \"\$(EPOCBLDP$Bld)\\$Trg\" \\\n",
+			"\t\t\"\$(EPOCSTATLINK$Bld)\\$FirstLib\" --whole-archive \"\$(EPOCBLDP$Bld)\\$BaseTrg.in\" \\\n",
+			"\t\t--no-whole-archive"
+		);
+		&main::Output(
+			" \$(LIBS$Bld) \$(USERLDFLAGS)\n"
+		);
+
+#		delete temporary files
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			&main::Output(
+				"\t-\$(ERASE) \"\$(EPOCBLDP$Bld)\\$ExportLibrary.exp\"\n"
+			);
+		}
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCBLDP$Bld)\\$Trg\"\n"
+		);
+
+#		call dlltool to do base relocations (and dll exports)
+		&main::Output(
+			"\tpushd ".&Generic_Quote("\$(EPOCBLDP$Bld)")." && \\\n",
+			"\t$Dlltool $PlatOpt{Dlltool} \\\n"
+		);
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			&main::Output(
+				"\t\t--def \"..\\$ExportLibrary.def\" \\\n",
+				"\t\t--dllname \"$LinkAs\" \\\n"
+			);
+		}
+		&main::Output(
+			"\t\t--base-file \"$BaseTrg.bas\" \\\n",
+			"\t\t--output-exp \"$ExportLibrary.exp\" && popd\n"
+		);
+
+#		delete temporary files
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCBLDP$Bld)\\$BaseTrg.bas\"\n"
+		);
+
+#		call ld to link the target
+		&main::Output(
+			"\t$Link $PlatOpt{Ld}"
+		);
+		if ($Bld=~/^U?REL$/o) {
+			&main::Output(
+				" -s"
+			);
+		}
+		if ($BasicTrgType=~/^DLL$/o) {
+			&main::Output(
+				" $PlatOpt{Entry} $EntrySymbol -u $EntrySymbol --dll \\\n"
+			);
+		}
+		elsif ($BasicTrgType=~/^EXE$/o) {
+			&main::Output(
+				" $PlatOpt{Entry} $EntrySymbol -u $EntrySymbol \\\n"
+			);
+		}
+#		--whole-archive is required here apparently because of a defect in the gcc toolchain
+#		the flag can probably be removed with a later version of gcc
+		&main::Output(
+			"\t\t\"\$(EPOCBLDP$Bld)\\$ExportLibrary.exp\" \\\n",
+			"\t\t-Map \"\$(EPOCTRG$Bld)\\$Trg.map\" -o \"\$(EPOCBLDP$Bld)\\$Trg\" \\\n",
+			"\t\t\"\$(EPOCSTATLINK$Bld)\\$FirstLib\" --whole-archive \"\$(EPOCBLDP$Bld)\\$BaseTrg.in\" \\\n",
+			"\t\t--no-whole-archive"
+		);
+		&main::Output(
+			" \$(LIBS$Bld) \$(USERLDFLAGS)\n"
+		);
+
+#		delete temporary files
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCBLDP$Bld)\\$ExportLibrary.exp\"\n"
+		);
+
+		if ($Bld=~/DEB$/o) {
+			&main::Output(
+				"\t$Objcopy -X \"\$(EPOCBLDP$Bld)\\$Trg\" \"\$(EPOCTRG$Bld)\\$BaseTrg.sym\"\n"
+			);
+		}
+
+		if (&main::CompressTarget) {
+			&main::Output(
+			"\tpetran $PlatOpt{Petran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " -nocompress " ,  " \"\$(EPOCBLDP$Bld)\\$Trg\" \"\$\@\" \\\n",
+			"\t\t"
+			);
+		}
+		else {
+			if(&main::CompressTargetMode==NOCOMPRESSIONMETHOD){
+				&main::Output(
+					"\tpetran $PlatOpt{Petran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " \"\$(EPOCBLDP$Bld)\\$Trg\" \"\$\@\" \\\n",
+					"\t\t"
+				);
+			}
+			elsif(&main::CompressTargetMode==INFLATECOMPRESSIONMETHOD){
+				&main::Output(
+					"\tpetran $PlatOpt{Petran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " ", "  -compressionmethod deflate", " \"\$(EPOCBLDP$Bld)\\$Trg\" \"\$\@\" \\\n",
+					"\t\t"
+				);
+			}
+			elsif(&main::CompressTargetMode==BYTEPAIRCOMPRESSIONMETHOD){
+				&main::Output(
+					"\tpetran $PlatOpt{Petran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " ", "  -compressionmethod bytepair", " \"\$(EPOCBLDP$Bld)\\$Trg\" \"\$\@\" \\\n",
+					"\t\t"
+				);
+			}
+		}
+
+		if (&main::AllowDllData) {
+			&main::Output(
+				' -allow'
+			);
+		}
+		if (not &main::CallDllEntryPoints) {
+			&main::Output(
+				' -nocall'
+			);
+		}
+		if (&main::DataLinkAddress) {
+			&main::Output(
+				' -datalinkaddress ',&main::DataLinkAddress
+			);
+		}
+		if (&main::FixedProcess) {
+			&main::Output(
+				' -fixed'
+			);
+		}
+		if (&main::HeapSize) {
+			my %HeapSize=&main::HeapSize;
+			&main::Output(
+				' -heap ',$HeapSize{Min},' ',$HeapSize{Max}
+			);
+		}
+		if (&main::ProcessPriority) {
+			&main::Output(
+				' -priority ',&main::ProcessPriority
+			);
+		}
+		if (&main::SmpSafe) {
+			&main::Output(
+				' -smpsafe'
+			);
+		}
+		if (&main::StackSize) {
+			&main::Output(
+				' -stack ',&main::StackSize
+			);
+		}
+
+ 		if (&main::CodePagingTargetMode == UNPAGED) {
+ 			&main::Output(
+ 				' -codepaging unpaged'
+ 			);
+ 		}
+ 		elsif (&main::CodePagingTargetMode == PAGED) {
+ 			&main::Output(
+ 				' -codepaging paged'
+ 			);
+ 		}
+ 
+ 		if (&main::DataPagingTargetMode == UNPAGED) {
+   			&main::Output(
+ 				' -datapaging unpaged'
+  			);
+   		}
+ 		elsif (&main::DataPagingTargetMode == PAGED) {
+   			&main::Output(
+ 				' -datapaging paged'
+   			);
+   		}
+		
+		my $i=1;
+		foreach (@UidList) {
+			&main::Output(
+				" -uid$i $_"
+			);
+			$i++;
+		}
+		if(&main::VendorId) {
+			&main::Output(
+				' -vid ',&main::VendorId
+			);
+		}
+		&main::Output(
+			' -capability ',&main::Capability,
+		);
+		&main::Output("\n");
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCBLDP$Bld)\\$Trg\"\n"
+		);
+	}
+	elsif ($BasicTrgType=~/^LIB$/o) {
+		&main::Output(
+			"\tcopy \"\$(EPOCBLDP$Bld)\\$BaseTrg.in\" \"\$(EPOCSTATLINK$Bld)\\$Trg\"\n"
+		);
+	}
+
+	&main::Output(
+		"\n"
+	);
+
+
+	# TARGET *.IN
+	#------------
+	if (scalar @SrcList >150) {
+		# deal with very long lists by splitting them into 150 file pieces, which allows
+		# about 200 bytes per filename if the underlying max size is 32K
+		#
+		my $counter1=150;	# i.e. trigger new variable immediately
+		my $counter2=0;
+		my @objvarlist=();
+		foreach (@SrcList) {
+			if ($counter1==150) {
+				$counter1=0;
+				$counter2++;
+				my $objvar = "OBJECTS$Bld$counter2";
+				push @objvarlist, " \$($objvar)";
+				&main::Output(
+					"\n",
+					"$objvar="
+				);
+			}
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+			$BaseSrc.='_' if (lc($Ext) eq '.cia');
+			&main::Output(
+				" \\\n\t", &Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc.o")
+			);
+			$counter1++;
+		}
+		&main::Output(
+			"\n",
+			"\n",
+			&Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseTrg.in"), " : ", @objvarlist,"\n",
+			"\tif exist \"\$\@\" del \"\$\@\"\n"
+		);
+		foreach (@objvarlist) {
+			# Add the files to the list in groups
+			&main::Output(
+				"\t$Archive cr \$\@$_\n"
+			);
+		}
+		&main::Output(
+			"\n\n"
+		);
+	} else {
+		# shorter lists remain unchanged
+		#
+		&main::Output(
+			"OBJECTS$Bld="
+		);
+		foreach (@SrcList) {
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+			$BaseSrc.='_' if (lc($Ext) eq '.cia');
+			&main::Output(
+				" \\\n\t", &Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc.o")
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseTrg.in"), " : \$(OBJECTS$Bld)\n",
+			"\tif exist \"\$\@\" del \"\$\@\"\n",
+			"\t$Archive cr \$\@ \$^\n",
+			"\n\n"
+		);
+	}
+}
+
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+}
+
+sub PMBitMapBld {
+
+	&Generic_BitMapBld;
+	
+}
+
+sub PMResrcBld {
+
+	&Generic_ResrcBld;
+
+}
+
+sub PMAifBld {
+
+	&Generic_AifBld;
+
+}
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;	
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+	my $cia = (lc($ExtSrc) eq '.cia') ? "_" : "";
+
+	return if (@DepList == 0);
+
+	foreach (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLDP$_)\\$BaseSrc$cia.lis"), " ",
+			&Generic_Quote("\$(EPOCBLDP$_)\\$BaseSrc$cia.o"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+	my $cia = (lc($ExtSrc) eq '.cia') ? "_" : "";
+
+	return if (@DepList == 0);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc$cia.lis"), " ",
+		&Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc$cia.o"), " :",
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcBld {
+	my $ABI=&main::ABI;
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+	my $Src=ucfirst lc &main::Src;
+	my $SrcPath=&main::SrcPath;
+	my $Ext = &main::Path_Split('Ext', $Src);
+	my $Cia = (lc($Ext) eq '.cia') ? 1 : 0;
+
+	my $RTWSrcPath=&main::Path_Chop(&main::Path_RltToWork($SrcPath));
+
+	# Use GCC trick to get assembler source files preprocessed with CPP
+	$Src =~ s/\.s$/.S/i;
+
+	if ($Cia) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc\_.o"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\techo $Src\n",
+			"\t\$(GCC$Bld) -x c++ -D__CIA__ -I \"$RTWSrcPath\" \$(INCDIR) -o \$\@ \"$RTWSrcPath\\$Src\"\n",
+			"\n",
+	#		generate an assembly listing target too
+			"LISTING$Bld$BaseSrc\_ : ", &Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc\_.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc\_.$ABI.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc\_.lis"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(GCC$Bld) -x c++ -D__CIA__ -Wa,-adln -I \"$RTWSrcPath\" \$(INCDIR) -o nul: \"$RTWSrcPath\\$Src\" > \$\@\n",
+			"\n"
+		);
+	} else {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc.o"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\techo $Src\n",
+			"\t\$(GCC$Bld) -I \"$RTWSrcPath\" \$(INCDIR) -o \$\@ \"$RTWSrcPath\\$Src\"\n",
+			"\n",
+	#		generate an assembly listing target too
+			"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc.$ABI.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLDP$Bld)\\$BaseSrc.lis"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(GCC$Bld) -Wa,-adln -I \"$RTWSrcPath\" \$(INCDIR) -o nul: \"$RTWSrcPath\\$Src\" > \$\@\n",
+			"\n"
+		);
+	}
+}
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_gccxml.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,964 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Cl_gccxml;
+# 
+#
+
+package Cl_gccxml;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+	PMStartBldList
+	PMBld
+	PMStartSrcList
+	PMStartSrc
+	PMSrcDepend
+	PMSrcBldDepend
+	PMEndSrcBld
+	PMEndSrc
+	PMEndSrcList
+	PMBitMapBld
+	PMResrcBld
+
+);
+use cl_generic;
+use Genutl;
+use File::Path;
+use Cwd;
+use Pathutl;
+
+sub PMHelp_Mmp {
+	print "// No additional keywords for this platform\n";
+}
+
+	# takes an 'expression'  to evaluate with $_ bound to each of the
+	# remaining args
+	sub PrintList
+	{
+		my $expr = shift @_;
+		foreach (@_) {
+		my $str = eval($expr);
+		&main::Output($str);
+		}
+	}
+
+my $epocroot = $ENV{EPOCROOT};
+$epocroot=~ s-\\$--;            # chop trailing \\
+my $Makecmd;
+sub PMStartBldList($) {
+	($Makecmd) = @_;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @BldList=&main::BldList;
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $RelPath="$epocroot\\EPOC32\\RELEASE";
+	my @MacroList=&main::MacroList();
+	my $VariantFile=&main::VariantFile();
+	my $Trg=&main::Trg;
+	my $DPath = &main::Path_RltToWork($epocroot);
+	my $DefFile = &main::DefFile;
+	my $EABIDefFile = &main::EABIDef;
+	my $ExtCompileOption = &main::CompilerOption("GCCXML");
+	
+	&Generic_Header(0,$Makecmd);	# define standard things using absolute paths
+
+	$DefFile="" if(!(-e $DefFile));
+	&main::Output(
+		"GXPTRGUDEB = $RelPath\\GCCXML\\UDEB\n",
+		"GXPTRGUREL = $RelPath\\GCCXML\\UREL\n\n",
+		"DEFFILE = $DefFile\n\n",
+        "EABIDEFFILE = $EABIDefFile\n\n"
+	);
+
+	&main::Output(
+		"INCDIR  ="
+	);
+
+	foreach (@ChopUserIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+
+	&main::Output(
+		" -I- "
+	);
+
+	foreach (@ChopSysIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+	if($VariantFile){
+	    &main::Output("\\\n  -include \"$VariantFile\"");
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output( 		
+		"GCCFLAGS= -nostdinc -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas -UWIN32 -fshort-wchar -quiet -w $ExtCompileOption\n",  # -fsyntax-only
+		"\n"
+	);
+
+	&main::Output(
+		"GCCDEFS = -D __EABI__ -D __SUPPORT_CPP_EXCEPTIONS__"
+	);
+	foreach(@MacroList) {
+		&main::Output(
+			" -D$_"
+		);
+	}
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"GCC$_ = gccxml_cc1plus -bi"
+		);
+		if (/REL$/o) {
+			&main::Output(
+				      ' -fomit-frame-pointer '
+			);
+		}
+		elsif (/DEB$/o) {
+			&main::Output(
+				' -g'
+			);
+		}
+		&main::Output(
+			' $(GCCFLAGS)'
+		);
+		foreach (&main::MacroList($_)) {
+			&main::Output(
+				" -D$_"
+			);
+		}
+                
+		&main::Output(
+			" \$(GCCDEFS)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+	&main::Output(
+			"LIBRARY:\n",
+			"\t\@echo Nothing to do\n"
+	);
+
+	# Resource building is done entirely via cl_generic.pm
+	PrintList("\"\nRESOURCE\$_ : MAKEWORK\$_\"", @BldList)
+	&main::Output(
+		"\n",
+		"\n",
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+
+		if ($BasicTrgType !~ /IMPLIB/io) {
+			my $TrgBase = &main::Path_Split('base',$Trg);           
+			&main::Output (
+			" \\\n\t",
+			&Generic_Quote("\$(GXPTRG$_)\\$TrgBase$BasicTrgType.gxp")
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+}
+
+# DumpToFile
+sub DumpMMPToFile
+{
+	my $rfiFileList;
+	my @rfiFiles;
+	if(scalar @_) # if an argument has been passed then it is a reference to the list of .RFI files.
+	{
+		($rfiFileList) = @_;
+		@rfiFiles = @$rfiFileList;
+	}
+
+	my $BldPath=&main::BldPath;
+	my $Target = &main::Trg; 
+	my $TargetBase = &main::Path_Split('Base', $Target); 
+	my $Gxpurel="$epocroot\\epoc32\\release\\gccxml\\urel";
+	my $Gxpudeb="$epocroot\\epoc32\\release\\gccxml\\udeb";
+	unless (-d $BldPath) {
+		mkpath([$BldPath]);
+	}
+	unless (-d $Gxpurel) {
+		mkpath([$Gxpurel]);
+	}
+	unless (-d $Gxpudeb) {
+		mkpath([$Gxpudeb]);
+	}
+    $BldPath = (&main::Path_StepDirs($BldPath))[-2];
+	use File::Basename;
+    my $FileName = basename(&main::MmpFile());
+    $FileName = $BldPath.$FileName.".xml";
+    open FILE,"> $FileName" or die "Cannot open mmp info dump file $FileName: $!";
+    print FILE "<?xml version=\"1.0\"?>\n<mmpInfo>\n"; 
+   
+    my $Path = &main::RelPath();
+    my $MmpFile = &main::MmpFile();  
+    my $TrgType = &main::TrgType(); 
+    my $TrgPath = &main::TrgPath(); 
+    print FILE "\t<mmp path=\"$MmpFile\"/>\n"; 
+	print FILE "\t<target name=\"$Target\" type=\"$TrgType\" ";
+    
+	if(not $TrgPath eq '') 
+	{
+		print FILE "path=\"$TrgPath\""; 
+	}
+	print FILE "/>\n";
+	# insert current working directory
+	my $WorkPath = &main::Path_WorkPath();
+	print FILE "\t<cwd path=\"$WorkPath\"/>\n";
+    
+    my $ABI = &main::ABI; 
+    print FILE "\t<abi type=\"$ABI\"/>\n"; 
+    my $LinkAs = &main::LinkAs;
+    print FILE "\t<linkAs name=\"$LinkAs\"/>\n"; 
+    my $LinkAsBase = &main::LinkAsBase;
+    print FILE "\t<linkAsBase name=\"$LinkAsBase\"/>\n"; 
+    
+    # Uids
+    my @UidList=&main::UidList;
+    my $count = 0;
+    print FILE "\t<uids";
+    foreach my $uid(@UidList)
+    {
+		print FILE " u$count=\"$uid\"" ;
+		$count++; 
+    }
+    print FILE "/>\n";
+    
+    # Versioning 
+    my %Version = &main::Version; 
+    print FILE "\t<version";
+    foreach my $var (sort keys %Version)
+    {
+        print FILE " $var=\"$Version{$var}\"";
+    }
+    print FILE "/>\n";
+    
+    # Capabilities
+    my $Capability = &main::Capability;
+    print FILE "\t<capability id=\"$Capability\"/>\n"; 
+    
+	# DefFile
+	my $DefFile = &main::DefFile;
+	$DefFile="" if(!(-e $DefFile));
+	print FILE "\t<defFile path=\"$DefFile\" type=\"GCC\"/>\n";
+
+	# EABIDefFile
+	my $EABIDefFile = &main::EABIDef;
+	print FILE "\t<defFile path=\"$EABIDefFile\" type=\"EABI\"/>\n";
+        
+    # Handle All types of libraries
+    my $FirstLib = &main::FirstLib; 
+    my @LibList = &main::LibList;
+    my @ASSPLibList = &main::ASSPLibList;
+    my @StatLibList = &main::StatLibList;;    
+    print FILE "\t<libs>\n"; 
+    
+	#first
+    print FILE "\t\t<lib name=\"$FirstLib\" type=\"First\"/>\n"; 
+    
+    #  normal
+    foreach my $lib (@LibList)
+    {
+        print FILE "\t\t<lib name=\"$lib\"/>\n"; 
+    }
+    # ASSP Specific
+    foreach my $lib (@ASSPLibList)
+    {
+        print FILE "\t\t<lib name=\"$lib\" type=\"ASSP\"/>\n";
+    }
+    
+    # Static Libraries
+    foreach my $lib (@StatLibList)
+    {
+        print FILE "\t\t<lib name=\"$lib\" type=\"Static\"/>\n";
+    }
+    print FILE "\t</libs>\n";
+
+    # Resources
+    print FILE "\t<resources>\n";
+    my $rfiFile;
+    foreach $rfiFile (@rfiFiles)
+    {
+	    print FILE "\t\t<resource name=\"$rfiFile\"/>\n";
+    }
+    print FILE "\t</resources>\n";
+
+    close FILE;
+}
+	
+sub PMBld {
+	my @ASSPLibList=&main::ASSPLibList;
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+	my $RelPath=&main::RelPath;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my @UidList=&main::UidList;
+	# DefFile
+	my $DefFile = &main::DefFile;
+	# EABIDefFile
+	my $EABIDefFile = &main::EABIDef;
+
+	my $rfiList = GatherResourceInformation();
+	my @RfiFiles = @$rfiList;
+
+
+
+	DumpMMPToFile(\@RfiFiles);
+
+	# REAL TARGETS
+	#-------------
+	&main::Output(
+		"# REAL TARGET - BUILD VARIANT $Bld\n",
+		"\n"
+	);
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+	my @releaseables;
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopBldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopRelPath);
+	&Generic_Releaseables;
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	# XML Stuff
+	&main::Output(
+				&Generic_Quote("\$(GXPTRG$Bld)\\$BaseTrg$BasicTrgType.gxp"), " : ",
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg$BasicTrgType.gxp"),
+				"\n\tcopy \"\$(EPOCBLD$Bld)\\$BaseTrg$BasicTrgType.gxp\" \"\$@\""
+	); 
+	
+	&main::Output(
+		"\n",
+		"\n"
+	);
+        
+	# TARGET *.GXP
+	#------------
+	if (scalar @SrcList >150) {
+		# deal with very long lists by splitting them into 150 file pieces, which allows
+		# about 200 bytes per filename if the underlying max size is 32K
+		#
+
+		my $counter1=150;	# i.e. trigger new variable immediately
+		my $counter2=0;
+		my @objvarlist=();
+		foreach (@SrcList) {
+			if ($counter1==150) {
+				$counter1=0;
+				$counter2++;
+				my $objvar = "OBJECTS$Bld$counter2";
+				push @objvarlist, " \$($objvar)";
+				&main::Output(
+					"\n",
+					"$objvar="
+				);
+			}
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+			$BaseSrc.='_' if (lc($Ext) eq '.cia');
+			&main::Output(
+				" \\\n\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.xml")
+			);
+			$counter1++;
+		}
+		use File::Basename;
+	    my $FileName = basename(&main::MmpFile()).".xml";
+		&main::Output(
+			" \\\n\t\$(EPOCBLD)\\$FileName",
+			"\n",
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg$BasicTrgType.gxp"), " : ", @objvarlist,"\n",
+			"\tif exist \"\$\@\" del \"\$\@\"\n"
+		);
+		foreach (@objvarlist) {
+			&main::Output(
+				"\tzip -j \$\@$_\n"
+			);
+		}
+		&main::Output(
+			"\tif exist \$(EABIDEFFILE) zip -j \$\@ \$(EABIDEFFILE)\n",
+			"\n\n"
+		);
+	} else {
+		# shorter lists remain unchanged
+		#
+		&main::Output(
+			"OBJECTS$Bld="
+		);
+		use File::Basename;
+	    my $FileName = basename(&main::MmpFile()).".xml";
+
+		&main::Output("\$(EPOCBLD)\\$FileName");
+        foreach (@SrcList) {
+			my $BaseSource = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+			$BaseSource.='_' if (lc($Ext) eq '.cia');
+			&main::Output(
+			" \\\n\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSource.xml")
+			);
+		}       
+		
+		&main::Output(
+			"\n",
+			"\n"
+		);
+
+		&main::Output("RESOURCEINFO$Bld=");
+		foreach (@RfiFiles)
+		{
+			&main::Output(" \\\n\t\$(EPOCBLD)\\$_");
+		}
+		&main::Output("\n\n");
+
+		&main::Output(
+
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg$BasicTrgType.gxp"), " : \$(OBJECTS$Bld) \$(EABIDEFFILE) \$(RESOURCEINFO$Bld)\n",
+
+			"\tif exist \"\$\@\" del \"\$\@\"\n",
+			"\tzip -j \$\@ \$^ \$(EABIDEFFILE) \$(RESOURCEINFO$Bld)\n",
+			"\n\n"
+		);
+	}
+}
+
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+}
+
+sub PMBitMapBld {
+	&Generic_BitMapBld;
+}
+
+sub PMResrcBld {
+	&Generic_ResrcBld;
+}
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;	
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+	my $cia = (lc($ExtSrc) eq '.cia') ? "_" : "";
+
+	return if (@DepList == 0);
+
+	foreach (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc$cia.lis"), " ",
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc$cia.xml"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+	my $cia = (lc($ExtSrc) eq '.cia') ? "_" : "";
+
+	return if (@DepList == 0);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc$cia.lis"), " ",
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc$cia.xml"), " :",
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output( 
+		"\n",
+		"\n"
+	);
+}
+
+my %sources;
+
+sub PMEndSrcBld {
+	my $ABI=&main::ABI;
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+	my $Src=ucfirst lc &main::Src;
+	my $SrcPath=&main::SrcPath;
+	my $Ext = &main::Path_Split('Ext', $Src);
+	my $Cia = (lc($Ext) eq '.cia') ? 1 : 0;
+
+	my $ChopSrcPath=&main::Path_Chop($SrcPath);
+
+	# add source path, source file and build type to hashmap. 
+    $sources{$SrcPath}{$Src}{$Bld}=1;
+   
+	# Use GCC trick to get assembler source files preprocessed with CPP
+	$Src =~ s/\.s$/.S/i;
+
+	if ($Cia) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.xml"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(GCC$Bld) -D__CIA__ -I \"$ChopSrcPath\" \$(INCDIR) -fxml=\$\@ -o nul \"$ChopSrcPath\\$Src\"\n",
+			"\n",
+		);
+	} else {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.xml"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(GCC$Bld) -I \"$ChopSrcPath\" \$(INCDIR) -fxml=\$\@ -o nul \"$ChopSrcPath\\$Src\"\n",
+			"\n",
+		);
+	}
+
+	#Keep the staus of the dependency-generation-flag was enabled or disabled.
+	my $Deps_Stat = &main::Deps_GetNoDependencies();
+	if($Deps_Stat){
+		#If the no-dependency-generation-flag turned on, turn it off temporarily, so that we can get 
+		#the dependencies.
+		&main::Deps_SetNoDependenciesStatus(0);
+	}
+	# Code to print the log file includeheaders.txt
+	my $IncFileName = "$epocroot\\epoc32\\release\\gccxml\\includeheaders.txt";
+	open INC_FILE,">> $IncFileName" or die "Cannot open file $IncFileName";
+
+	#Get the dependencies for the current source file.
+	my @DepList=&main::Deps_GenDependsL("$SrcPath$Src");
+	foreach(@DepList) {
+		print INC_FILE "$_\n";
+	}
+	close INC_FILE;
+	
+	#Set the dependency-generation-flag to its original state so that, it doesn't affect the other target 
+	#builds.
+	&main::Deps_SetNoDependenciesStatus($Deps_Stat);
+
+	# Code to print the existance of the file in logs
+	my $neededfile="$epocroot\\epoc32\\release\\gccxml\\includeheaders.txt";
+	if (!-e $neededfile)
+	{ 
+		print "!!! File $epocroot\\epoc32\\release\\gccxml\\includeheaders.txt does not exist\n";
+	}
+}
+
+sub PMEndSrc {
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+        my $BldPath=&main::BldPath;
+        my $Target = &main::Trg; 
+        my $TargetBase = &main::Path_Split('Base', $Target);
+		use File::Basename;
+	    my $FileName = basename(&main::MmpFile());
+	    $FileName = $BldPath.$FileName.".xml";
+        open FILE,">> $FileName" or die "Cannot open mmp info dump file $FileName: $!";
+		my $path;
+        foreach $path (keys %sources)
+        {
+            my %thing =  %{$sources{$path}}; # {"UREL"}; 
+            my $file;
+            foreach $file (keys %thing)
+            {
+                if( defined $thing{$file}{"UREL"})
+                {
+                    if( defined  $thing{$file}{"UDEB"} )
+                    {
+                        print FILE "\t<sourceFile name=\"$file\" path=\"$path\"/>\n";
+                    }
+                    else
+                    {
+                        print FILE "\t<sourceFile name=\"$file\" path=\"$path\" type=\"UREL\"/>\n";
+                    }
+                }
+                else
+                {
+                    if(defined $thing{$file}{"UDEB"})
+                    {
+                        print FILE "\t<sourceFile name=\"$file\" path=\"$path\" type=\"UDEB\"/>\n";
+                    }
+                    else
+                    {
+                        die "Should Never Get HERE!";
+                    }
+                }
+                
+            }
+        }
+        
+
+
+        my $BldInfDir=&Path_WorkPath;
+        my $PrjBldDir=$E32env::Data{BldPath};
+        $PrjBldDir=~s-^(.*)\\-$1-o;
+        $PrjBldDir.=$BldInfDir;
+        $PrjBldDir=~m-(.*)\\-o; # remove backslash because some old versions of perl can't cope
+
+
+        ### the export call is like this
+        my $lCmd = "make -r -f \"${PrjBldDir}EXPORT.make\" WHAT";
+        my @lExportDump = split(/\n/,`$lCmd`);
+        foreach my $lLine (@lExportDump) {
+            $lLine =~ s/"//g;
+            chomp($lLine);
+            if($lLine =~ /.*\.h/i) {
+                print FILE "\t<export name=\"$lLine\"/>\n";
+            }
+        }
+
+		print FILE "</mmpInfo>\n\n";
+        close FILE;
+
+
+
+		&Generic_End;
+}
+
+
+sub GetRelDir
+{
+	my ($fileName) = @_;
+	$fileName = CleanPath($fileName); # make sure that /'s are use rather than \ or \\
+	if($fileName!~m-\/-) # no directory, just a file name, so return ./
+	{
+		return "./";
+	}
+	elsif($fileName=~m-^(.*\/)[^\/]+$-) # return directory
+	{
+		return $1;
+	}
+	else # don't know how could get here
+	{
+		return "./";
+	}
+}
+
+
+sub SearchMmpFile
+{
+	my @rfiFiles;
+	my @SystemIncludes = &main::SysIncPaths;
+	my @UserIncludes = &main::UserIncPaths;
+	my $ResourceStruct = &main::ResourceStructRef;
+	
+	foreach my $ResourceStructure (@$ResourceStruct)
+	{
+		push @rfiFiles, AnalyseResourceFile($$ResourceStructure{Source}, \@SystemIncludes, \@UserIncludes);
+	}
+	return \@rfiFiles;
+}
+
+sub AnalyseResourceFile
+{ # when get to here $rssFile should be fully qualified relative to mmp file location (i.e. base: .../name.rss)
+	my ($rssFile, $systemIncludeList, $userIncludeList) = @_;
+	my @resourceRelatedFiles = ($rssFile);
+	my $baseFile = 0; #flag to indicate whether this is the base file which the rfi file is named after
+	my $rssItem;
+	my $containerFile;
+	foreach $rssItem (@resourceRelatedFiles) #@resourceRelatedFiles is added to during this foreach loop as included files are found
+	{
+		$rssItem = CleanPath($rssItem);
+		if( ! ($baseFile) )
+		{
+			$baseFile = 1; # set to non-zero so that setting up the rfi file is only done once
+			if($rssItem =~m-\/-)
+			{
+				if($rssItem =~m-^\S*\/([^\/]+)$-) # just extracts file name
+				{
+					$containerFile = $1 . ".rfi";
+				}
+			}
+			else
+			{
+				$containerFile = $rssItem . ".rfi";
+			}
+			open CONTAINER, ">$containerFile";
+		}
+		OutputHeader($rssItem);
+		my $resourceFiles = ReadFile($rssItem, \@resourceRelatedFiles, $systemIncludeList, $userIncludeList);
+		@resourceRelatedFiles = @$resourceFiles;
+	}
+	close CONTAINER;
+	return $containerFile;
+}
+
+sub CheckForInclude
+{ # check whether the passed line from the resource type file is a #include line, if it is then store it to be added to the rfi file
+	my ($line, $dir, $resourceFiles, $systemIncludeList, $userIncludeList) = @_;
+	my @resourceFiles = @$resourceFiles;
+	if($line =~ /^\s*\#include\s+([\<\"])(\S+)([\>\"])(\s+\/\/.*)?/)
+	{
+		if( ($1 eq "\"") and ($3 eq "\"") )
+		{
+			my $possibleAddition = SearchDirectories($2, "quoted", $dir, $systemIncludeList, $userIncludeList);
+			if($possibleAddition ne "")
+			{
+				push @resourceFiles, $possibleAddition;
+			}
+		}
+		elsif( ($1 eq "\<") and ($3 eq "\>") )
+		{
+			my $possibleAddition = SearchDirectories($2, "angle", $dir, $systemIncludeList, $userIncludeList);
+			if($possibleAddition ne "")
+			{
+				push @resourceFiles, $possibleAddition;
+			}
+		}
+	}
+	return \@resourceFiles;
+}
+
+sub ReadFile
+{ # copy the passed file into the rfi file and check it for included files
+	my ($fileName, $resourceFiles, $systemIncludeList, $userIncludeList) = @_;
+	my $dir = GetRelDir($fileName);
+
+	open RESOURCE, $fileName or die "Can't open file $fileName from " . cwd() . "\n";
+	my $line;
+	foreach $line (<RESOURCE>)
+	{
+		print CONTAINER $line;
+		$resourceFiles = CheckForInclude($line, $dir, $resourceFiles, $systemIncludeList, $userIncludeList);
+	}
+	close RESOURCE;
+	return $resourceFiles;
+}
+
+sub OutputHeader
+{
+	my ($fileName) = @_;
+	print CONTAINER "\n\n/* GXP ***********************\n";
+	if($fileName =~m-\/-)
+	{ # remove path as only want to store file name
+		if($fileName =~m-^\S*\/([^\/]+)$-)
+		{
+			print CONTAINER " * $1\n";
+		}
+	}
+	else
+	{
+		print CONTAINER " * $fileName\n";
+	}
+	print CONTAINER " ****************************/\n\n";
+}
+
+
+sub RecordSystemIncludes
+{
+	my ($line) = @_;
+	my @terms = split(/ /, $line);
+	my $term;
+	my @systemIncludes = ();
+	foreach $term (@terms)
+	{
+		if($term!~m/\/\//) # if term is not the start of a c++ style comment
+		{
+			push @systemIncludes, $term;
+		}
+		else
+		{
+			last;
+		}
+	}
+	return \@systemIncludes;
+}
+
+sub RecordUserIncludes
+{
+	my ($line) = @_;
+	my @terms = split(/ /, $line);
+	my $term;
+	my @userIncludes = ();
+	foreach $term (@terms)
+	{
+		if($term!~m/\/\//) # if term is not the start of a c++ style comment
+		{
+			push @userIncludes, $term;
+		}
+		else
+		{
+			last;
+		}
+	}
+	return \@userIncludes;
+}
+
+sub CleanPath # change \ and \\ in path to /
+{
+	my ($fileName) = @_;
+	$fileName =~ s-\\\\-\/-og;
+	$fileName =~ s-\\-\/-og;
+	return $fileName;
+}
+
+sub RecordSourcePath
+{
+	my ($line) = @_;
+	my $sourcePath;
+	if($line=~/^(\S+)/) # in case of comments at end of line
+	{
+		$sourcePath = $1;
+		$sourcePath = CleanPath($sourcePath);
+		if($sourcePath !~ m/\/$/)
+		{
+			$sourcePath .= "\/";
+		}
+	}
+	return $sourcePath;
+}
+
+sub SearchDirectories
+{
+	my ($fileName, $includeType, $base, $systemIncludeList, $userIncludeList) = @_;
+	my @systemIncludes = @$systemIncludeList;
+	my @userIncludes = @$userIncludeList;
+
+	$fileName = CleanPath($fileName);
+
+	if(-e $base.$fileName)
+	{
+		return $base.$fileName;
+	}
+	if($includeType eq "quoted")
+	{
+		# search through the user includes and return dir + file name if found
+		my $directory;
+		foreach $directory (@userIncludes)
+		{
+			my $qualifiedFileName = $directory . "/" . $fileName;
+			if(-e $qualifiedFileName)
+			{
+				return $qualifiedFileName;
+			}
+		}
+	}
+
+	# search through the system includes
+	my $directory;
+	foreach $directory (@systemIncludes)
+	{
+		my $qualifiedFileName = $directory . "/" . $fileName;
+		if(-e $qualifiedFileName)
+		{
+			return $qualifiedFileName;
+		}
+	}
+	return "";
+}
+
+
+sub GatherResourceInformation
+{
+	my $BldPath=&main::BldPath;
+	unless (-d $BldPath) {
+		mkpath([$BldPath]);
+	}
+	$BldPath = (&main::Path_StepDirs($BldPath))[-2];
+	my $bldInfDirectory = cwd(); # store current directory so can return to it later
+	my $MmpFile = &main::MmpFile();
+	$MmpFile = CleanPath($MmpFile);
+	my $MmpFileDir = "./";
+	my $MmpFileName = $MmpFile;
+	if($MmpFile=~m-\/-)
+	{
+		if($MmpFile=~m-^(.*)\/([^\/]*)$-)
+		{
+			$MmpFileDir = $1;
+			$MmpFileName = $2;
+		}
+	}
+	chdir($MmpFileDir) or die "Error: Could not change to MMP file directory: $MmpFileDir\n";
+	
+	my $rfiFileList = &SearchMmpFile; # analyse the mmp file for resource files
+
+	my @RfiFiles = @$rfiFileList;
+	foreach (@RfiFiles) # copy the rfi files to the BldPath and delete them from temporary locations
+	{
+		system("copy \"$_\" \"$BldPath$_\"");
+		unlink $_;
+	}
+	chdir($bldInfDirectory); # return to the orignial directory
+
+	return \@RfiFiles; # return list of rfi files to be added to .mmp.xml file
+}
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_generic.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1137 @@
+# Copyright (c) 2001-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:
+# this package contains generic routines to handle bits of makefiles which are
+# common to all of the platforms. Currently it deals with AIF, MBM amd RSC files.
+# 
+#
+
+package cl_generic;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	Generic_Define
+	Generic_Definition
+	Generic_MakeWorkDir
+	Generic_MakeWorkFile
+	Generic_Quote
+	Generic_Header
+	Generic_Releaseables
+	Generic_BitMapBld
+	Generic_ResrcBld
+	Generic_AifBld
+	Generic_End
+	Generic_CopyAction
+	Generic_WhatCleanTargets
+	Generic_WhatTargets
+	Generic_CleanTargets
+);
+
+use File::Basename;
+use lockit_info;
+use CheckSource;
+use E32Variant;
+
+my $SavedBldPath;
+my $MakefileType=0;	# 0=NMAKE, 1=MAKE
+my %CheckSourceResourceIncludes;
+
+sub Generic_Header ($$;$) {
+	my ($UseRltPaths, $makefileType, $supportAbsPathConversion) = @_;
+	
+	$MakefileType=($makefileType eq "nmake")? 0:1;
+
+	my $LibSubDir="UDEB";
+	if (&main::PlatOS eq 'EPOC32') {
+		$LibSubDir="UREL";
+	}
+	elsif (&main::PlatOS eq 'TOOLS2') {
+		$LibSubDir="LIB";
+	}
+
+	my $BldPath=&main::BldPath;
+
+	if ( LocalBuildPathExists() ) {
+		$BldPath = ConvertToLocalBuild($BldPath);
+	}
+
+	# Get the information regarding supporting Compiler Wrapper option
+	my $IsCompilerWrapperOption=&main::CompilerWrapperOption();
+	my $RelPath=&main::RelPath;
+	my $LibPath=&main::LibPath;
+	my $LinkPath=&main::LinkPath;
+	my $StatLinkPath=&main::StatLinkPath;
+	my $ASSPLinkPath=&main::ASSPLinkPath;
+
+	$SavedBldPath=&main::Path_Chop($BldPath);
+
+	if ($UseRltPaths) {
+
+		if ( ! LocalBuildPathExists() ) {
+			# Local build does not exists so keep relative path.
+			$BldPath     =&main::Path_RltToWork($BldPath);
+		}
+
+		$RelPath     =&main::Path_RltToWork($RelPath);
+		$LibPath     =&main::Path_RltToWork($LibPath);
+		$LinkPath    =&main::Path_RltToWork($LinkPath);
+		$StatLinkPath=&main::Path_RltToWork($StatLinkPath);
+		$ASSPLinkPath=&main::Path_RltToWork($ASSPLinkPath);
+	}
+
+	$BldPath=&main::Path_Chop($BldPath);
+	$RelPath=&main::Path_Chop($RelPath);
+	$LibPath=&main::Path_Chop($LibPath);
+	$LinkPath=&main::Path_Chop($LinkPath);
+	$StatLinkPath=&main::Path_Chop($StatLinkPath);
+	$ASSPLinkPath=&main::Path_Chop($ASSPLinkPath);
+
+	my $EPOCDataPath=&main::Path_Chop(&main::EPOCDataPath);
+	my $EPOCIncPath=&main::Path_Chop(&main::EPOCIncPath);
+	my $DataPath=&main::Path_Chop(&main::DataPath);
+	my $TrgPath=&main::Path_Chop(&main::TrgPath);
+
+	my $erasedefn = "\@erase";
+	$erasedefn = "\@erase 2>>nul" if ($ENV{OS} eq "Windows_NT");
+
+	&main::Output(
+		"\n",
+		'# CWD ',             &main::Path_WorkPath, "\n",
+		'# MMPFile ',         &main::MmpFile,       "\n",
+		'# Target ',          &main::Trg,           "\n",
+		'# TargetType ',      &main::TrgType,       "\n",
+		'# BasicTargetType ', &main::BasicTrgType,  "\n",
+		'# MakefileType ', ($MakefileType==1)? "GNU":"NMAKE", "\n"
+	);
+
+	my @BldList=&main::BldList;
+	my %featureVariantInfo = &main::FeatureVariantInfo;
+	
+	if (%featureVariantInfo)
+		{
+		&main::Output("# FeatureVariantName ", $featureVariantInfo{NAME}, "\n");
+
+		foreach (@BldList)
+			{
+			&main::Output("# FeatureVariant".$_."Label ", $featureVariantInfo{$_."_LABEL"}, "\n");
+			}
+		}
+		
+	&main::Output(
+		"\n",
+		"ERASE = $erasedefn\n",
+		"\n"
+	);
+
+	# Include function to perform optional DOS to Unix slash conversion
+	# on absolute paths if requested from backend.
+	if ($supportAbsPathConversion) {
+		&main::Output(
+			"ifeq \"\$(UNIX_SLASH_FOR_CC_ABS_PATHS)\" \"1\"\n",
+			"define absolutePaths\n",
+			"\$(subst \\,\/,\$1)\n",
+			"endef\n",
+			"else\n",
+			"define absolutePaths\n",
+			"\$1\n",
+			"endef\n",
+			"endif\n",
+			"\n"
+		);
+	}
+
+	&main::Output(
+		"# EPOC DEFINITIONS\n",
+		"\n"
+	);
+	
+	Generic_Define("EPOCBLD",  $BldPath);
+	if (defined $ENV{PBUILDPID}) {
+		my $BldPathP = $BldPath . '$(PBUILDPID)';
+		Generic_Define("EPOCBLDP", $BldPathP);
+	} else {
+		Generic_Define("EPOCBLDP", $BldPath);
+	}
+	Generic_Define("EPOCTRG",  $RelPath);
+	Generic_Define("EPOCLIB",  $LibPath);
+	Generic_Define("EPOCLINK", $LinkPath);
+	Generic_Define("EPOCSTATLINK", $StatLinkPath);
+	Generic_Define("EPOCBSFSTATLINK", $RelPath);
+	Generic_Define("EPOCASSPLINK", $ASSPLinkPath);
+
+	Generic_Define("EPOCDATA", $EPOCDataPath);
+	Generic_Define("EPOCINC",  $EPOCIncPath);
+	Generic_Define("TRGDIR",   $TrgPath);
+	Generic_Define("DATADIR",  $DataPath);
+	
+
+	foreach (@BldList) {
+		&main::Output("\n");
+
+		my $bldOffset = "";
+		$bldOffset .= $featureVariantInfo{$_."_LABEL"}."\\" if (%featureVariantInfo && !$featureVariantInfo{INVARIANT});
+			
+		Generic_Define("EPOCBLD$_", "\$(EPOCBLD)\\".$bldOffset.lc($_));
+		if (defined $ENV{PBUILDPID}) {
+			Generic_Define("EPOCBLDP$_", "\$(EPOCBLDP)\\".$bldOffset.lc($_));
+		} else {
+			Generic_Define("EPOCBLDP$_", "\$(EPOCBLD)\\".$bldOffset.lc($_));
+		}
+		Generic_Define("EPOCTRG$_", "\$(EPOCTRG)\\".lc($_));
+		Generic_Define("EPOCLIB$_", "\$(EPOCLIB)\\".lc($LibSubDir));
+		Generic_Define("EPOCLINK$_", "\$(EPOCLINK)\\".lc($LibSubDir));
+		Generic_Define("EPOCSTATLINK$_", "\$(EPOCSTATLINK)\\".lc($_));
+		Generic_Define("EPOCBSFSTATLINK$_","\$(EPOCBSFSTATLINK)\\".lc($_));
+		Generic_Define("EPOCASSPLINK$_", "\$(EPOCASSPLINK)\\".lc($LibSubDir));
+	}
+	
+	# Compiler Wrapper option support 
+	# Generate the information Compiler Wrapper options in second level make file.
+	if($IsCompilerWrapperOption)
+	{
+		&main::Output(
+			"\n\n",
+			"#COMPILER WRAPPER OPTION DEFINITIONS\n",
+			"COMPWRAP = ",
+			"$ENV{ABLD_COMPWRAP}", # Extract the tool name from environment variable
+			"\n\n"
+		);
+	}
+	# Compiler Wrapper option
+	
+	my $gccxml;
+	if (&main::Plat =~ /gccxml/i){
+		$gccxml = &main::Plat;
+	}
+	
+	my $edg;
+	if (&main::Plat =~ /edg/i){
+		$edg = &main::Plat;
+	}
+	
+	&main::Output(
+		"\n",
+		"# EPOC PSEUDOTARGETS\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		if(!$edg){
+			&main::Output(
+				"$_ : MAKEWORK$_ RESOURCE$_\n\n"
+			);
+		}
+		else {
+			&main::Output(
+				"$_ : MAKEWORK$_ \n\n"
+			);
+		}
+	}
+
+	&main::Output(	# ALL comes after DEB: because first target in makefile is the default
+		"ALL :"
+	);
+	foreach (@BldList) {
+		&main::Output(
+			" $_"
+		);
+	}
+	# # Compiler Wrapper option support 
+	if($IsCompilerWrapperOption)
+	{
+		&main::Output(	# ALL comes after DEB: because first target in makefile is the default
+			"\n\nCOMPWRAPALL : COMPWRAPUREL COMPWRAPUDEB"
+		);
+
+	}
+
+	&main::Output(
+		"\n",
+		"\n",
+		"CLEAN CLEANALL : CLEANBUILD CLEANRELEASE CLEANLIBRARY\n",
+		"\n"
+	);
+	my $pseudoTarget;
+	foreach $pseudoTarget ("WHAT", "RESOURCE", "CLEANBUILD", "CLEANRELEASE", 
+				"MAKEWORK", "LISTING")
+		{
+		if(($gccxml && $pseudoTarget eq "RESOURCE") ||
+		!($gccxml || $edg)){
+
+			&main::Output(
+				"\n",
+				"\n",
+				"$pseudoTarget $pseudoTarget","ALL :"
+			);
+			foreach (@BldList) {
+				&main::Output(
+					" $pseudoTarget$_"
+				);
+			}
+		}	
+	}
+	if($gccxml){
+		&main::Output(
+		"\n",
+		"\n",
+		);
+	}
+
+	if(!($gccxml || $edg)){
+		&main::Output(
+			"\n",
+			"\n",
+			"MAKEWORK : MAKEWORKLIBRARY\n",
+			"\n"
+		);
+	}
+	if(!$edg){
+		foreach (@BldList) {
+			&main::Output(
+				"RESOURCE$_ "
+			);
+		}
+		&main::Output(
+			": GENERIC_RESOURCE\n",
+			"\n"
+		);
+	}
+}
+
+# Quote name if necessary, according to the type of Makefile
+
+sub Generic_Quote ($) {
+	my ($name)=@_;
+	if ($MakefileType==1) {
+		# GNU make wants backslash before each space
+		$name =~ s/ /\\ /go;
+	} else {
+		# NMAKE prefers quotes around all filenames
+		$name = "\"$name\"";
+	}
+	return $name;
+}
+
+# Generic file copying action, which uses built-in variables quoted appropriately
+#
+# GNU make variables may contain spaces, but perl.exe will be executed directly
+# and so doesn't need any quotes.
+
+sub Generic_CopyAction($) {
+	my ($target) = @_;
+	my $source = '$?';
+	$target = '$@' if (!defined $target);
+	return "perl -S ecopyfile.pl $source $target\n";
+}
+
+# Record necessary directories, for eventual emkdir.pl rules
+# Also need to record related defines, to eliminate duplicates
+
+my %DirDefines;
+sub expandDefines ($) {
+	my ($value)=@_;
+	while ($value =~ /^(.*?)\$\((\w+)\)(.*)$/) {
+		last if ($2 eq 'PBUILDPID');
+		$value="$1$DirDefines{$2}$3";
+	}
+	return $value;
+}
+sub Generic_Define ($$;$) {
+	my ($name, $value, $trailer)=@_;
+	$trailer="" if (! defined $trailer);
+	&main::Output(
+		"$name = $value$trailer\n"
+	);
+	$DirDefines{$name}=expandDefines($value);
+}
+sub Generic_Definition ($) {
+	return $DirDefines{$_[0]};
+}
+
+my %MkDirs;
+sub Generic_MkDir ($) {
+	my $dir=&main::Path_Chop(&expandDefines($_[0]));
+	$dir = lc $dir;
+	$dir =~ s/\$\(pbuildpid\)/\$\(PBUILDPID\)/g;
+	$MkDirs{$dir}=1;
+	return $dir;
+}
+
+# Accumulate MAKEWORK targets and lists of directories,
+# automatically filling in the rest of the details.
+#
+my %MakeWork;
+sub Generic_MakeWorkDir($$) {
+	my ($work, $dir) = @_;
+
+	if ( LocalBuildPathExists() ) {
+		$dir = ConvertToLocalBuild($dir);
+	}
+
+	my $workhash;
+	if (defined $MakeWork{$work}) {
+		$workhash=$MakeWork{$work};
+	} else {
+		my %newhash;
+		$workhash=\%newhash;
+		$MakeWork{$work}=$workhash;
+	}
+	my $normdir=lc &main::Path_Chop(&expandDefines($dir));
+	$normdir =~ s/\$\(pbuildpid\)/\$\(PBUILDPID\)/g;
+	$$workhash{$normdir} ||= &Generic_MkDir($dir);
+}
+
+sub Generic_MakeWorkFile($$) {
+	my ($work, $file) = @_;
+	my $dir=&main::Path_Split('Path',&expandDefines($file));
+	&Generic_MakeWorkDir($work,$dir);
+}
+
+
+sub Generic_WhatTargets($$@)
+{
+	my ($prefix, $whattarget, @files)=@_;
+	
+	if ((scalar @files) == 0) {
+		&main::Output(
+			"\n",
+			"\n$whattarget :\n",
+			"\t\@rem none\n"
+		);
+	} else {
+# emit list of releasables in batches to avoid overflowing the 2048 character 
+# batch file line limit doing echo or erase...
+
+		my $count=1;
+		my $length=0;
+		&main::Output(
+			"\n",
+			"${prefix}_RELEASEABLES$count="
+		);
+
+		my $File;
+
+		foreach $File (sort @files) {
+			my $name = &Generic_Quote($File);
+			my $namelen = length($name)+3;	# for space, newline and tab
+			if ($length+$namelen > 1700) {	# very conservative limit
+				$count++;
+				$length=0;
+				&main::Output(
+					"\n",
+					"${prefix}_RELEASEABLES$count="
+				);
+			}
+			&main::Output(
+				" \\\n\t", $name
+			);
+			$length += $namelen;
+		}
+		&main::Output(
+			"\n",
+			"\n",
+			"$whattarget:\n"
+		);
+		my $filecount=1;
+		while ($filecount<=$count) {
+			&main::Output(
+				"\t\@echo \$(${prefix}_RELEASEABLES$filecount)\n"
+			);
+			$filecount++;
+		}
+	}
+
+	&main::Output(
+		"\n",
+	);
+}
+	
+sub Generic_CleanTargets($$@) {
+	my ($prefix, $cleantarget, @files)=@_;
+	
+	if ((scalar @files) == 0) {
+		&main::Output(
+			"\n",
+			"\n$cleantarget :\n",
+			"\t\@rem none\n"
+		);
+	} else {
+# emit list of releasables in batches to avoid overflowing the 2048 character 
+# batch file line limit doing echo or erase...
+
+		my $count=1;
+		my $length=0;
+		&main::Output(
+			"\n",
+			"${prefix}_CLEANTARGETS$count="
+		);
+
+		my $File;
+
+		foreach $File (sort @files) {
+			my $name = &Generic_Quote($File);
+			my $namelen = length($name)+3;	# for space, newline and tab
+			if ($length+$namelen > 1700) {	# very conservative limit
+				$count++;
+				$length=0;
+				&main::Output(
+					"\n",
+					"${prefix}_CLEANTARGETS$count="
+				);
+			}
+			if (!main::NoExportLibrary || ($name !~ /.dso$/i && $name !~ /.lib$/i))
+			{
+				&main::Output(
+					" \\\n\t", $name
+				);
+				$length += $namelen;
+			}
+		}
+		&main::Output(
+			"\n",
+			"\n",
+			"$cleantarget:\n",
+		);
+		my $filecount=1;
+		while ($filecount<=$count) {
+			&main::Output(
+				"\t-\$(ERASE) \$(${prefix}_CLEANTARGETS$filecount)\n"
+			);
+			$filecount++;
+		}
+	}
+
+	&main::Output(
+		"\n",
+	);
+}
+
+sub Generic_WhatCleanTargets($$$@) {
+	my ($prefix, $whattarget, $cleantarget, @files)=@_;
+	
+	if ((scalar @files) == 0) {
+		&main::Output(
+			"\n",
+			"\n$whattarget $cleantarget :\n",
+			"\t\@rem none\n"
+		);
+	} else {
+# emit list of releasables in batches to avoid overflowing the 2048 character 
+# batch file line limit doing echo or erase...
+
+		my $count=1;
+		my $length=0;
+		&main::Output(
+			"\n",
+			"${prefix}_RELEASEABLES$count="
+		);
+
+		my $File;
+
+		foreach $File (sort @files) {
+			my $name = &Generic_Quote($File);
+			my $namelen = length($name)+3;	# for space, newline and tab
+			if ($length+$namelen > 1700) {	# very conservative limit
+				$count++;
+				$length=0;
+				&main::Output(
+					"\n",
+					"${prefix}_RELEASEABLES$count="
+				);
+			}
+			&main::Output(
+				" \\\n\t", $name
+			);
+			$length += $namelen;
+		}
+		&main::Output(
+			"\n",
+			"\n",
+			"$whattarget:\n"
+		);
+		my $filecount=1;
+		while ($filecount<=$count) {
+			&main::Output(
+				"\t\@echo \$(${prefix}_RELEASEABLES$filecount)\n"
+			);
+			$filecount++;
+		}
+		&main::Output(
+			"\n",
+			"$cleantarget:\n",
+		);
+		$filecount=1;
+		while ($filecount<=$count) {
+			&main::Output(
+				"\t-\$(ERASE) \$(${prefix}_RELEASEABLES$filecount)\n"
+			);
+			$filecount++;
+		}
+	}
+
+	&main::Output(
+		"\n",
+	);
+}
+
+# accumulated list of generic releasables
+my %Files;	
+sub Generic_End {
+	&Generic_WhatCleanTargets("GENERIC","WHATGENERIC","CLEANGENERIC", keys %Files);
+	
+	&main::Output(
+		"# Rules to create all necessary directories\n",
+	);
+
+	foreach (sort keys %MakeWork) {
+		my $workhash = $MakeWork{$_};
+		&main::Output(
+			"\n$_ :",
+		);
+		foreach (sort keys %$workhash) {
+			my $withcase=$$workhash{$_};
+			if ($withcase =~ /\$\(PBUILDPID\)\\/) {
+				&main::Output(
+					" \\\n",
+					"\t\$(if \$(PBUILDPID),", &Generic_Quote($withcase), ")"
+				);
+			} else {
+				&main::Output(
+					" \\\n",
+					"\t", &Generic_Quote($withcase)
+				);
+			}
+		}
+		&main::Output(
+			"\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	my $dir;
+	foreach $dir (sort keys %MkDirs) {
+		if ($dir =~ /\$\(PBUILDPID\)\\/) {
+			&main::Output(
+				"\$(if \$(PBUILDPID),", &Generic_Quote($dir),") \\\n",
+			);
+		} else {
+			&main::Output(
+				&Generic_Quote($dir)," \\\n",
+			);
+		}
+	}
+	&main::Output(
+		":\n",
+		"\tperl -S emkdir.pl \$\@\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CHECKSOURCE :\n",
+	);
+
+	&main::Output (CheckSource_MakefileOutput(&main::CheckSourceMMPIncludes));
+	&main::Output (CheckSource_MakefileOutput(%CheckSourceResourceIncludes));
+	&main::Output (CheckSource_MakefileOutput(&main::CheckSourceMMPMetaData));
+
+	my $cs_targetprefix = "";
+	$cs_targetprefix = "U" unless (&main::Plat =~ /tools/i);
+
+	&main::Output(
+		"\nCHECKSOURCE".$cs_targetprefix."REL :\n",
+	);
+
+	&main::Output (CheckSource_MakefileOutput(&main::CheckSourceURELIncludes));
+
+	&main::Output(
+		"\nCHECKSOURCE".$cs_targetprefix."DEB :\n",
+	);
+
+	&main::Output (CheckSource_MakefileOutput(&main::CheckSourceUDEBIncludes));
+
+}
+
+sub Generic_Releaseables {
+
+	my $ResrcPath=&main::TrgPath;
+	my $dir;
+	my $EPOCIncPath=&main::EPOCIncPath;
+
+	&Generic_MakeWorkDir('GENERIC_MAKEWORK',$SavedBldPath);	    # used for temp directory in epocrc.pl
+			
+	my $AifStructRef=&main::AifStructRef;
+	my $AifRef;
+	foreach $AifRef (@$AifStructRef) {
+# regression change - workaround lack of AIF directory
+		$$AifRef{TrgFile}=&main::Path_Split('File',$$AifRef{Trg});  # record for later
+		my $path=&main::Path_Split('Path',"$ResrcPath$$AifRef{Trg}");  
+		my $file="\$(EPOCDATA)\\$ResrcPath$$AifRef{Trg}";
+		my $xip="_xip";
+		my $base=&main::Path_Split('Base',"$file");
+		my $root=&main::Path_Split('Path',"$file");
+		my $ext=&main::Path_Split('Ext',"$file");
+		my $file_xip="$root"."$base$xip$ext";	# since XIP AIF format is generated
+		if ($path eq "") {
+			# no target path for the AIF file, so not a releasable
+			$file="$SavedBldPath\\$$AifRef{Trg}";
+		} else {
+			$Files{$file}=1;
+			$Files{$file_xip}=1;
+		}
+		$$AifRef{GenericTrg}=$file;	    # record for later
+		&Generic_MakeWorkFile('GENERIC_MAKEWORK',$file);
+	}
+
+	my $BitMapStructRef=&main::BitMapStructRef;
+	my $BitMapRef;
+	foreach $BitMapRef (@$BitMapStructRef) {
+		my $path=$$BitMapRef{TrgPath};
+		my $file="\$(EPOCDATA)\\$path$$BitMapRef{Trg}";
+		$$BitMapRef{GenericTrg}=$file;	    # record for later
+		$Files{$file}=1;
+		&Generic_MakeWorkFile('GENERIC_MAKEWORK',$file);
+		if ($$BitMapRef{Hdr}) {
+			my $mbg=&main::Path_Split('Base', $$BitMapRef{Trg});
+			$mbg="\$(EPOCINC)\\$mbg.mbg";
+			&Generic_MakeWorkDir('GENERIC_MAKEWORK',$EPOCIncPath);
+			$Files{$mbg}=1;
+		}
+	}
+
+	my $ResourceStructRef=&main::ResourceStructRef;
+	my $ResourceRef;
+	foreach $ResourceRef (@$ResourceStructRef) {
+		if(defined $$ResourceRef{Hdronly})
+			{
+				my $rsg="\$(EPOCINC)\\$$ResourceRef{BaseTrg}.rsg";
+				$$ResourceRef{GenericTrg}=$rsg;	# record for later
+
+				&Generic_MakeWorkDir('GENERIC_MAKEWORK',$EPOCIncPath);
+				$Files{$rsg}=1;			
+			}
+		else
+			{
+				my $file="\$(EPOCDATA)\\$$ResourceRef{Trg}";
+				$$ResourceRef{GenericTrg}=$file;	# record for later
+				$Files{$file}=1;
+				&Generic_MakeWorkFile('GENERIC_MAKEWORK',$file);
+				if ($$ResourceRef{Hdr}) {
+					my $rsg="\$(EPOCINC)\\$$ResourceRef{BaseTrg}.rsg";
+					&Generic_MakeWorkDir('GENERIC_MAKEWORK',$EPOCIncPath);
+					$Files{$rsg}=1;
+				}
+			}
+	}
+
+# Do StringTable 'export'
+	my @stringTables = &main::StringTables();
+	foreach my $stringtable (@stringTables)
+	{
+		if(defined $stringtable->{ExportPath})
+		{
+			$Files{$stringtable->{ExportPath}."\\".$stringtable->{BaseTrg}.".h"} = 1;
+		}
+	}
+
+
+	&main::Output(
+		"GENERIC_RESOURCE : GENERIC_MAKEWORK\n",
+		"\n"
+	);
+
+}
+
+sub Generic_BitMapBld {
+
+	my $BitMapRef=&main::BitMapRef;
+	my $quotedTrg=&Generic_Quote($$BitMapRef{GenericTrg});
+	my $WorkPath = &main::Path_Chop(&main::Path_WorkPath); ## required for Lockit
+
+	&main::Output(
+		"# BitMap $$BitMapRef{Trg}\n",
+		"\n",
+		"GENERIC_RESOURCE : $quotedTrg\n",
+		"\n",
+		"$quotedTrg :"
+	);
+
+#	must lower-case header here since bmconv generates a header with case-sensitive enums accordingly
+	my $BitMapHdr=join('', &main::EPOCIncPath, &main::Path_Split('Base', $$BitMapRef{Trg}), '.mbg');
+	my $TmpBitMapHdr=join('', &main::BldPath, &main::Path_Split('Base', $$BitMapRef{Trg}), '.mbg');
+
+	my $SrcRef;
+	foreach $SrcRef (@{$$BitMapRef{Source}}) {
+	
+		if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+			%Files = &Lockit_Releasables($WorkPath, $$BitMapRef{Trg}, \%Files, basename($$SrcRef{Src}),"","");		
+		}
+		else {
+			%Files = &Lockit_Releasables($WorkPath, $$BitMapRef{Trg}, \%Files, basename($$SrcRef{Src}));
+		}
+		&main::Output(
+			" \\\n  ", &Generic_Quote($$SrcRef{Src})
+		);
+	}
+	&main::Output(
+		"\n",
+		"\tperl -S epocmbm.pl -h\"$TmpBitMapHdr\"",
+		"\t-o\"$$BitMapRef{GenericTrg}\"",
+		"\t-l\"\\$$BitMapRef{TrgPath}:$WorkPath\"",
+		"\\\n\t\t"
+	);
+	&main::Output(
+		" -b\""
+	);
+	foreach $SrcRef (@{$$BitMapRef{Source}}) {
+		&main::Output(
+			"\\\n\t\t/$$SrcRef{ClDepth}$$SrcRef{Src}"
+		);
+	}
+
+
+	&main::Output(
+		"\" \\\n\t\t"
+	);
+
+	&main::Output(
+		" -l\"\\$$BitMapRef{TrgPath}:$WorkPath\"\n"
+	);
+
+	if ($$BitMapRef{Hdr}) {
+		&main::Output(
+			"\tperl -S ecopyfile.pl \"$TmpBitMapHdr\" \"$BitMapHdr\"\n",
+		);
+	}
+	&main::Output(
+		"\n"
+	);
+}
+
+sub Generic_ResrcBld {
+	my $ResourceRef=&main::ResourceRef;
+	my $WorkPath = &main::Path_Chop(&main::Path_WorkPath); # required for Lockit
+	my @RcompMacro=&main::MmpMacros;
+
+	&main::Output(
+		"# Resource $$ResourceRef{Trg}\n",
+		"\n"
+	);
+	my @DepList=&main::DepList;
+
+	&main::Output(
+		"DEPEND="
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	my $BaseResrc= $$ResourceRef{BaseTrg};
+	my $SrcPath=&main::Path_Split('Path', $$ResourceRef{Source});
+
+	my $AbsSrc;
+	my $AbsSrcPath;
+	
+	my $ResrcHdr=join '', &main::EPOCIncPath(), $BaseResrc, '.rsg';
+	my $AbsResrcHdr;
+	my $PlatName=&main::PlatName;
+
+	my @ChopAbsSysIncPaths;
+	my @ChopAbsUserIncPaths;
+
+	@ChopAbsSysIncPaths=&main::Path_Chop(&main::Path_AbsToWork(&main::ResourceSysIncPaths));
+	@ChopAbsUserIncPaths=&main::Path_Chop(&main::Path_AbsToWork(&main::UserIncPaths));
+
+	$AbsSrc=&main::Path_AbsToWork($$ResourceRef{Source});
+	$AbsSrcPath=&main::Path_AbsToWork($SrcPath);
+	$AbsResrcHdr=&main::Path_AbsToWork($ResrcHdr);
+
+	my $ChopAbsSrcPath=&main::Path_Chop($AbsSrcPath);
+
+	my $EPOCDataDir = &main::Path_Chop($$ResourceRef{TrgPath});
+	
+	my $RscOption= "";
+	my $HeaderOption = "";
+	my $HeaderCopyCmd = "";
+    if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha'))  {
+	if ($$ResourceRef{Hdr} || $$ResourceRef{Hdronly}) {
+		$HeaderOption = " -h\"$SavedBldPath\\$BaseResrc$$ResourceRef{Lang}.rsg\"";
+		$HeaderCopyCmd = "\tperl -S ecopyfile.pl \"$SavedBldPath\\$BaseResrc$$ResourceRef{Lang}.rsg\" \"$ResrcHdr\"\n";
+	}
+	
+	}
+	else {
+	if ($$ResourceRef{Hdr} || $$ResourceRef{Hdronly}) {
+		$HeaderOption = " -h\"$SavedBldPath\\$BaseResrc.rsg\"";
+		$HeaderCopyCmd = "\tperl -S ecopyfile.pl \"$SavedBldPath\\$BaseResrc.rsg\" \"$ResrcHdr\"\n";
+	}
+	}
+	if (! $$ResourceRef{Hdronly}) {
+		$RscOption = " -o\$\@ ";
+	}
+	
+	my $Uidsref=$$ResourceRef{Uids};
+	my @Uids=();
+	@Uids = @{$Uidsref} if (defined($Uidsref));
+	my $Uidsarg="";
+	if ($#Uids>0) {
+		$Uidsarg="-uid2 $Uids[0] -uid3 $Uids[1]";
+	}
+	elsif ($#Uids==0) {
+		$Uidsarg="-uid2 $Uids[0] ";
+	}
+	if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha'))  {
+		%Files = &Lockit_Releasables($WorkPath, $$ResourceRef{Source}, \%Files, "", $$ResourceRef{Lang}) unless $$ResourceRef{Hdronly};
+	}
+	else {			
+		%Files = &Lockit_Releasables($WorkPath,$$ResourceRef{Source}, \%Files, "") unless $$ResourceRef{Hdronly};
+	}
+	my $quotedTrg=&Generic_Quote($$ResourceRef{GenericTrg});
+	&main::Output(
+		"GENERIC_RESOURCE : $quotedTrg\n",
+		"\n",
+		"$quotedTrg : ", &Generic_Quote($AbsSrc), " \$(DEPEND)\n",
+		"\tperl -S epocrc.pl -m045,046,047 -I \"$ChopAbsSrcPath\""
+	);
+	foreach (@ChopAbsUserIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+	&main::Output(
+		" -I-"
+	);
+	foreach (@ChopAbsSysIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+	foreach(@RcompMacro) {
+		&main::Output(
+			" -D$_ "
+		);
+	}
+	&main::Output(
+		" -DLANGUAGE_$$ResourceRef{Lang} -u \"$AbsSrc\" ",
+		" $Uidsarg ",
+		"$RscOption $HeaderOption -t\"$SavedBldPath\""
+	);
+
+	if (!$$ResourceRef{Hdronly}) {
+		&main::Output(
+			" -l\"$EPOCDataDir:$WorkPath\""
+		);				
+	}
+
+	if (&main::ResourceVariantFile()) {
+		&main::Output(
+			" -preinclude\"".&main::ResourceVariantFile()."\""
+		);
+	}
+	if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+		if ((lc $$ResourceRef{Lang}) eq "sc") {
+	
+			&main::Output(
+				"\n",
+				$HeaderCopyCmd,
+			);
+		}
+		&main::Output(		
+		"\n"
+		);
+	
+	}
+	else {
+		&main::Output(
+			"\n",
+			$HeaderCopyCmd,
+			"\n"
+		);
+	}
+
+	my @macros;
+	push @macros, "LANGUAGE_$$ResourceRef{Lang}", "_UNICODE";
+	my @userIncludes = &main::Path_Chop(&main::Path_AbsToWork(&main::UserIncPaths));
+	unshift (@userIncludes, $AbsSrcPath);	
+	my @systemIncludes = &main::Path_Chop(&main::Path_AbsToWork(&main::ResourceSysIncPaths));
+
+	CheckSource_Includes($AbsSrc, %CheckSourceResourceIncludes, &Variant_GetMacroHRHFile(), @macros, @userIncludes, @systemIncludes);
+}
+
+sub Generic_AifBld {
+
+	my $AifRef=&main::AifRef;
+	my $ResrcPath=&main::TrgPath;
+
+	&main::Output(
+		"# Aif $$AifRef{Trg}\n",
+		"\n"
+	);
+	my @DepList=&main::DepList;
+
+	&main::Output(
+		"DEPEND="
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	my @ChopRTWSysIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::ResourceSysIncPaths));
+	my @ChopRTWUserIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::UserIncPaths));
+	my $BaseResrc=&main::Path_Split('Base',$$AifRef{Source});
+
+	my $WorkPath = &main::Path_Chop(&main::Path_WorkPath); # required for Lockit
+	my $quotedTrg=&Generic_Quote($$AifRef{GenericTrg});
+	&main::Output(
+		"GENERIC_RESOURCE : $quotedTrg\n",
+		"\n",
+		"$quotedTrg : ", &Generic_Quote("$$AifRef{Source}"), " \$(DEPEND)"
+	);
+	if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+	%Files = &Lockit_Releasables($WorkPath, $$AifRef{TrgFile}, \%Files, "", "");
+	}
+	else 
+	{
+	%Files = &Lockit_Releasables($WorkPath, $$AifRef{TrgFile}, \%Files, "");
+	}
+	my $bitmapArg = "";
+	if ($$AifRef{BitMaps}) { # bitmaps aren't essential
+		$bitmapArg = "\\\n\t\t-b\"";
+		foreach my $BitMapRef (@{$$AifRef{BitMaps}}) {
+			my $BitMap = &main::Path_Split('File', $$BitMapRef{Src});
+			if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+			%Files = &Lockit_Releasables($WorkPath, $$AifRef{TrgFile}, \%Files, $BitMap, "");
+			}
+			else
+			{
+			%Files = &Lockit_Releasables($WorkPath, $$AifRef{TrgFile}, \%Files, $BitMap);
+			}
+			&main::Output(
+				" ", &Generic_Quote("$$BitMapRef{Src}")
+			);
+			$bitmapArg .= "\\\n\t\t/$$BitMapRef{ClDepth}$$BitMapRef{Src}";
+		}
+		$bitmapArg .= "\" ";
+	}
+	&main::Output(
+		"\n",
+		"\tperl -S epocaif.pl -o\$\@ ",
+		"\"$$AifRef{Source}\" ",
+		"\\\n\t\t",
+		"-t\"$SavedBldPath\" ",
+		" -l\"\$(TRGDIR):$WorkPath\"",
+		$bitmapArg,
+		"\\\n\t\t"
+	);
+	foreach (@ChopRTWUserIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+	&main::Output(
+		" -I-"
+	);
+	foreach (@ChopRTWSysIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+
+
+#
+# Check to see that LOCAL_BUILD_PATH exists.
+#
+
+sub LocalBuildPathExists() 
+{
+	if ( defined( $ENV{LOCAL_BUILD_PATH} ) ) {
+		return 1;
+	}
+	else {
+		return 0;
+	}
+}
+
+
+#
+# Take the build path and ensure that it is now local. 
+#
+
+
+sub ConvertToLocalBuild($)
+{
+	my ($BldPath)=@_;
+
+	my $sub_replacement = $ENV{"LOCAL_BUILD_PATH"};
+	if ( !ValidBuildPath($sub_replacement) ) {
+		&FatalError(" Invalid Local Build Path : LOCAL_BUILD_PATH = \"$BldPath\"  must be in format drive:dir_name1 " );
+	}
+	else
+	{
+		# Replace the \epoc32\build with local setting
+		my $epocroot=$ENV{"EPOCROOT"};
+		
+		my $sub_match = "\Q${epocroot}\EEPOC32\\\\BUILD";
+		$BldPath =~ s/${sub_match}/${sub_replacement}/;
+	}
+
+	return $BldPath
+}
+
+
+
+#
+# Checks that the path is at least of the form drive:path_name
+# If no drive: then the makefiles will be produced but not work. 
+#
+
+
+sub ValidBuildPath($)
+{
+	my ($BldPath)=@_;
+
+	if ( $BldPath =~/^[a-zA-z]{1}:{1}.*$/) {
+		# Must have at least d:
+		return 1;
+	}
+	else {
+		return 0;
+	}
+
+}
+
+1;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_mingw.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,591 @@
+# Copyright (c) 2008-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:
+#
+
+
+package Cl_mingw;
+
+my $MinGWInstall='$(EPOCROOT)epoc32\\gcc_mingw\\bin';
+my $MinGWPreInclude='$(EPOCINC)\\gcc_mingw\\gcc_mingw.h';
+
+my $GccPrefix='';
+my $ToolPrefix='';
+my $HelperLib='';
+my %PlatOpt=(
+	'Dlltool'=>'',
+    'Gcc'=>'',
+	'Ld'=>'',
+	# MinGW > 3.2.3 has been found to generate programs that crash (rombuild in particular) 
+	# and a workaround this appears to be to use specific optimisations rather than
+	# specifying -O options
+	'Optimize'=>'-fdefer-pop -fmerge-constants '.
+	  '-fthread-jumps -floop-optimize '.
+	  '-fif-conversion -fif-conversion2 '.
+	  '-fguess-branch-probability -fcprop-registers '.
+          '-fforce-mem -foptimize-sibling-calls -fstrength-reduce '.
+	  '-fcse-follow-jumps  -fcse-skip-blocks '.
+          '-frerun-cse-after-loop  -frerun-loop-opt '.
+          '-fgcse  -fgcse-lm  -fgcse-sm  -fgcse-las '.
+          '-fdelete-null-pointer-checks '.
+          '-fexpensive-optimizations '.
+          '-fregmove '.
+          '-fschedule-insns  -fschedule-insns2 '.
+          '-fsched-interblock  -fsched-spec '.
+          '-fcaller-saves '.
+          '-fpeephole2 '.
+          '-freorder-blocks  -freorder-functions '.
+          '-fstrict-aliasing '.
+          '-funit-at-a-time '.
+          '-falign-functions  -falign-jumps '.
+          '-falign-loops  -falign-labels '.
+          '-fcrossjumping'
+
+);
+my $Dlltool;
+my $Archive;
+my $Link;
+my $Objcopy;
+
+my @Win32LibList=();
+my $Win32StdHeaders;
+
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	PMHelp_Mmp
+	PMCheckPlatformL
+	PMPlatProcessMmp
+	PMStartBldList
+	PMBld
+	PMStartSrcList
+	PMStartSrc
+	PMSrcDepend
+	PMSrcBldDepend
+	PMEndSrcBld
+	PMEndSrc
+	PMEndSrcList
+);
+
+use cl_generic;
+use Genutl;
+use Winutl;
+
+sub PMHelp_Mmp {
+}
+
+sub PMCheckPlatformL {
+	if ((&main::Plat eq 'TOOLS2') and (&main::BasicTrgType ne 'EXE') and (&main::BasicTrgType ne 'LIB'))
+		{
+		die "Can't specify anything but EXE or LIB TARGETTYPEs for this platform\n";
+		}
+}
+
+sub PMPlatProcessMmp (@) {
+	&Winutl_DoMmp(\@_, "$ENV{EPOCROOT}epoc32\\gcc_mingw\\include");
+	@Win32LibList=&Winutl_Win32LibList;
+	$Win32StdHeaders=&Winutl_Win32StdHeaders;
+}
+
+my $Makecmd;
+
+sub PMStartBldList($) {
+	($Makecmd) = @_;
+	my $BaseTrg=&main::BaseTrg;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @BldList=&main::BldList;
+	my @SysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @UserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+
+	my $EPOCPath=&main::EPOCPath;
+	my $LibPath=&main::LibPath;
+
+	my @MacroList=&main::MacroList();
+
+	my $VariantFile=&main::VariantFile();
+	my $Plat=&main::Plat;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $CompilerOption=&main::CompilerOption("GCC");
+	my $LinkerOption=&main::LinkerOption("GCC");
+
+	$Dlltool=$ToolPrefix.'$(DLLTOOL)';
+	$Archive=$ToolPrefix.'$(AR)';
+	$Link=$ToolPrefix.'$(GCC)';
+	$Objcopy=$ToolPrefix.'$(OBJCOPY)';
+
+	&Generic_Header(0, $Makecmd);	# define standard things using absolute paths
+	
+	push @MacroList, "__TOOLS__";
+	push @MacroList, "__TOOLS2_WINDOWS__";
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__";
+	push @MacroList, "__PRODUCT_INCLUDE__=\\\"${VariantFile}\\\"" if ($VariantFile);
+
+	# Remove __GCC32__ for TOOLS2 builds from the macro list.
+	my $count = 0;
+	foreach my $item (@MacroList) {
+		if ($item =~ m/GCC32/i) {
+			splice (@MacroList,$count,1)
+		}
+		$count++;
+	}
+
+
+#	GCC needs a fully-qualified path
+	&main::Output(
+		"\n",
+		"# must set both PATH and Path to make it work correctly\n",
+		"Path:=\$(Path)\n",
+		"PATH:=\$(Path)\n",
+		"\n"
+	);
+
+	&main::Output(
+		"INCDIR= -isystem \"$ENV{EPOCROOT}epoc32\\include\\tools\\stlport\" "
+	);
+
+	foreach (@SysIncPaths) {
+		&main::Output(
+			" -isystem \"$_\""
+		);
+	}
+
+	foreach (@UserIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+
+	if($VariantFile){
+	    &main::Output("\\\n  -include $MinGWPreInclude");
+	}
+
+
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"GCCFLAGS=$PlatOpt{Gcc} \\\n",
+		"\t\t-pipe -c -Wall -W -Wno-ctor-dtor-privacy -Wno-unknown-pragmas",
+	);
+	
+	&main::Output(
+		" $CompilerOption",		# user-supplied compiler options
+		"\n",
+		"\n"
+	);
+	
+	&main::Output(
+ 		"\n# ADDITIONAL LINKER OPTIONS",
+ 		"\nUSERLDFLAGS = ",
+ 		$LinkerOption,
+  		"\n\n"
+  	);
+
+	&main::Output(
+		"GCCDEFS="
+	);
+
+	foreach(@MacroList) {
+		&main::Output(
+			" -D$_"
+		);
+	}
+
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	&main::Output(
+		"MINGWPATH?=$MinGWInstall", "\n",
+		"DLLTOOL:=\$(MINGWPATH)\\dlltool", "\n",
+		"AR:=\$(MINGWPATH)\\ar", "\n",
+		"OBJCOPY:=\$(MINGWPATH)\\objcopy", "\n",
+		"GCC:=\$(MINGWPATH)\\g++", "\n" 
+	);
+	foreach (@BldList) {
+		&main::Output(
+			"GCC$_=\$(GCC)"
+		);
+		if (/^REL$/o) {
+			&main::Output(' -s ', $PlatOpt{Optimize});
+		}
+		elsif (/^DEB$/o) {
+			&main::Output(' -g');
+			unless (&main::SrcDbg) {
+				&main::Output(' ', $PlatOpt{Optimize});
+			}
+		}
+		&main::Output(' $(GCCFLAGS)');
+		foreach (&main::MacroList($_)) {
+			&main::Output(" -D$_");
+		}
+		&main::Output(" \$(GCCDEFS)\n");
+	}
+
+	&main::Output("\n","\n");
+
+	foreach (@BldList) {
+		&main::Output("$_ :");
+
+		if ($BasicTrgType !~ /IMPLIB/io) {
+			&main::Output (" \\\n\t",&Generic_Quote("\$(EPOCTRG$_)\\$Trg"));
+		}
+		&main::Output("\n","\n");
+	}
+
+	# Resource building is done entirely via cl_generic.pm
+
+	foreach (@BldList) {
+		&main::Output("\n",	"RESOURCE$_ : MAKEWORK$_");
+	}
+	&main::Output("\n", "\n",);
+
+	&main::Output("LIBRARY : MAKEWORKLIBRARY");
+	if ($BasicTrgType=~/^LIB$/o) {
+#		code to ensure that the static libraries for all builds are built at the library stage
+		foreach (@BldList) {
+			&main::Output(" $_");
+		}
+	}
+
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}LIB");
+
+	&Generic_Releaseables;
+}
+
+
+sub PMBld {
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @LibList;
+	my $LibPath=&main::LibPath;
+	my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+	my $RelPath=&main::RelPath;
+	my @StatLibList=&main::StatLibList;
+	my $StatLinkPath=&main::StatLinkPath;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+
+	if ($Bld =~ /DEB/) {
+		@LibList = &main::DebugLibList;
+	} else {
+		@LibList = &main::LibList;
+	}
+
+	# REAL TARGETS
+	#-------------
+	&main::Output(
+		"# REAL TARGET - BUILD VARIANT $Bld\n",
+		"\n"
+	);
+
+#	releasables
+	my @releaseables;
+	my $toolspath=&main::EPOCToolsPath();
+
+	if ($BasicTrgType!~/^LIB$/io)
+		{
+		push @releaseables, "$toolspath$Trg";
+		}
+	else
+		{
+		push @releaseables, "$RelPath$Trg";
+		}
+
+	if (!$NoExportLibrary && ($BasicTrgType!~/^(LIB|EXE)$/io)) {	
+		push @releaseables, "\$(EPOCLINK$Bld)\\lib$ExportLibrary.a";
+	}
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopBldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopRelPath);
+
+	return if ($BasicTrgType=~/^IMPLIB$/io);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+   		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+   		);
+   	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	
+	&main::Output(
+		"OBJECTS$Bld="
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		&main::Output(
+			" \\\n\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o")
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCTRG$Bld)\\$Trg"), " : ",
+		&Generic_Quote("\$(OBJECTS$Bld)")
+	);
+	&main::Output(
+		" \$(LIBS$Bld)\n"
+	);
+#	Link target
+	if ($BasicTrgType=~/^EXE/o) {
+#		call g++ to link the target
+		&main::Output(
+			"\t$Link $PlatOpt{Ld}"
+		);
+		if ($Bld=~/^REL$/o) {
+			&main::Output(
+				" -s"
+			);
+		}
+		
+		&main::Output(
+			" -o \"\$(EPOCTRG$Bld)\\$Trg\" \\\n",
+			"\t\t\$(OBJECTS$Bld) \\\n"
+		);
+		&main::Output(
+			"\t\t-L\$(EPOCTRG$Bld) \\\n"
+		);
+			
+		# Add dynamic libraries (dlls on Windows, .so on *nix systems) to linker options
+		if (scalar @LibList)
+		{
+			&main::Output("\t\t-Wl,-Bdynamic ");
+		}
+		my $libs="";
+		foreach my $lib (@LibList)
+		{
+			$libs.="-l$lib ";
+		}
+		if ($libs ne "")
+		{
+			&main::Output(
+				"$libs \\\n"
+			);
+		}
+		
+		# Add static libraries (.a on both Windows and *nix) to linker options
+		if (scalar @StatLibList)
+		{
+			&main::Output("\t\t-Wl,-Bstatic ");
+		}
+		my $statLibs="-lstlport.5.1 ";
+		foreach my $lib (@StatLibList)
+		{
+			$statLibs.="-l$lib ";
+		}
+		if ($statLibs ne "")
+		{
+			$statLibs.="\\\n";
+		}
+		&main::Output(
+			"$statLibs"
+		);
+		
+		&main::Output(
+			"\t\t \$(USERLDFLAGS)\n"
+		);
+		&main::Output(
+			"\tcopy \"\$(EPOCTRG$Bld)\\$Trg\" \"",&main::EPOCToolsPath,"$Trg\"\n"
+		);
+	}
+	elsif ($BasicTrgType=~/^LIB$/o) {
+		&main::Output(
+			"\tif exist \"\$\@\" del \"\$\@\"\n",
+			"\t$Archive cr \$\@ \$^\n"
+		);
+	}
+	elsif ($BasicTrgType =~ /^DLL$/o)
+	{
+		&main::Output(
+			"\t$Link -shared -o \$@ -Wl,--out-implib,\$(EPOCLINK$Bld)\\" . "lib" . "$ExportLibrary.a \$(OBJECTS$Bld)",
+			"\n"
+		);
+		&main::Output(
+			"\tcopy \"\$@\" \"",&main::EPOCToolsPath,"$Trg\"\n"
+		);
+
+	}
+
+
+	&main::Output(
+		"\n"
+	);
+
+
+}
+
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+}
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+
+	return if (@DepList == 0);
+
+	foreach (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc.lis"), " ",
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc.o"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+
+	return if (@DepList == 0);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " ",
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " :",
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcBld {
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+	my $Src=&main::Src;
+	my $SrcPath=&main::Path_Chop(&main::SrcPath);
+	my $Ext=&main::Path_Split('Ext', $Src);
+	my $Plat=$main::Plat;
+
+	# Use GCC trick to get assembler source files preprocessed with CPP
+	$Src =~ s/\.s$/.S/i;	
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " : ",
+		&Generic_Quote("$SrcPath\\$Src"), "\n",
+		"\techo $Src\n",
+		"\t\$(GCC$Bld) -I \"$SrcPath\" \$(INCDIR) -o \$\@ \"$SrcPath\\$Src\"\n",
+		"\n",
+#		generate an assembly listing target too
+		"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+		"\t", &Generic_CopyAction("$SrcPath\\$BaseSrc.tools2.lst"),
+		"\n",
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " : ",
+		&Generic_Quote("$SrcPath\\$Src"), "\n",
+		"\t\$(GCC$Bld) -Wa,-adln -I \"$SrcPath\" \$(INCDIR) -o nul: \"$SrcPath\\$Src\" > \$\@\n",
+		"\n"
+	);
+	
+}
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_tools.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,569 @@
+# Copyright (c) 2003-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:
+#
+
+package Cl_tools;
+
+# declare variables global for module
+my @Win32LibList=();
+my $BaseAddressFlag;
+my $Win32Resrc;
+
+my $MWCC;
+my $MWLD;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+	PMCheckPlatformL
+	PMPlatProcessMmp
+	PMStartBldList
+	PMBld
+	PMStartSrcList
+	PMStartSrc
+	PMSrcDepend
+	PMSrcBldDepend
+	PMEndSrcBld
+	PMEndSrc
+	PMEndSrcList
+);
+
+use Winutl;
+use cl_generic;
+
+sub PMHelp_Mmp {
+	&Winutl_Help_Mmp;
+}
+
+sub PMCheckPlatformL {
+	if ((&main::Plat eq 'TOOLS') and (&main::BasicTrgType ne 'EXE') and (&main::BasicTrgType ne 'LIB')) {
+		die "Can't specify anything but EXE or LIB targettypes for this platform\n";
+	}
+}
+
+sub PMPlatProcessMmp (@) {
+	&Winutl_DoMmp(\@_, $ENV{MWCSym2Includes});
+	$BaseAddressFlag=&Winutl_BaseAddress;
+	if ($BaseAddressFlag ne "") {
+		$BaseAddressFlag=" -imagebase \"$BaseAddressFlag\"";
+	}
+	@Win32LibList=&Winutl_Win32LibList;
+	$Win32Resrc=&Winutl_Win32Resrc;
+}
+
+sub PMStartBldList($) {
+	my ($makecmd) = @_;
+	my $BaseTrg=&main::BaseTrg;
+	my @BldList=&main::BldList;
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $DefFile=&main::DefFile;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $LibPath=&main::LibPath;
+	my @MacroList=&main::MacroList();
+	my $VariantFile=&main::VariantFile();
+	my $Plat=&main::Plat;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my $WarningLevel=&main::CompilerOption("CW");
+
+	# check version of CodeWarrior for Symbian OS
+	if (defined($ENV{MWSym2Libraries})) {
+		my $allthere=1;
+		foreach (split/;/,$ENV{MWSym2Libraries}) {
+			s/^\+//;	# remove leading "+", if any
+			if (!-d $_) {
+				$allthere=0;
+				last;
+			}
+		}
+		if ($allthere) {
+			$MWCC = "mwccsym2.exe";
+			$MWLD = "mwldsym2.exe";
+			print "Detected CodeWarrior for Symbian OS, version 2.0\n";
+		}
+	}
+	if (!defined($MWCC)) {
+		if (defined($ENV{CWFolder}) && -d $ENV{CWFolder}) {
+			$MWCC = "mwcc.exe";
+			$MWLD = "mwld.exe";
+			print "Detected CodeWarrior for Symbian OS, version 1.0\n";
+			die "ERROR: This version of CodeWarrior is not suitable for Symbian OS version 8\n";
+		}
+		else {
+			die "ERROR: Unable to identify a valid CodeWarrior for Symbian OS installation\n";
+		}
+	}
+	
+	Generic_Header(0,$makecmd);	# define standard things using absolute paths
+
+	my $TrgDir="";
+	if (&Generic_Definition("TRGDIR") ne "") {
+		$TrgDir="\$(TRGDIR)\\";
+	}
+
+# Change - winutl.pm checks MWCWinx86Includes, but mwccsym2.exe seems to use MWCIncludes
+	if ($MWCC eq "mwccsym2.exe" && !defined($ENV{MWCIncludes})) {
+		&main::Output(
+			"\n",
+			"MWCIncludes:=\$(MWCSym2Includes)\n",
+			"export MWCIncludes\n",
+			"\n"
+		);
+	}
+		
+	&main::Output(
+		"# EPOC DEFINITIONS\n",
+		"\n",
+		"INCDIR  = -cwd source -i-"
+	);
+	foreach (@ChopUserIncPaths,@ChopSysIncPaths) {
+		&main::Output(
+			" \\\n -i \"$_\""
+		);
+	}
+	use Pathutl;
+	if($VariantFile){
+	    my $variantFilePath = Path_Split('Path',$VariantFile);
+	    $VariantFile  = Path_Split('FILE',$VariantFile);
+	    # workaround for codewarrior defect:
+	    # codewarrior at the moment doesn't accept an absolute path with the
+	    # the -include option unless it contains a drive letter, this is solved
+	    # by including the directory and the file separately
+	    &main::Output("\\\n -i \"$variantFilePath\" -include \"$VariantFile\"");
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CWFLAGS =",
+		" -wchar_t off",	# do not treat wchar_t as a predefined type
+		" -align 4",		# long alignment
+		" -warnings on",	# selection of warnings
+		" -w nohidevirtual",	# turn off "hides inherited virtual function" warning
+		   ",nounusedexpr",	# turn off "expression has no side effect" warning
+		" -msgstyle gcc",	# use GCC-style message format
+		# " -strict on",		# strict ANSI/ISO C++ checking
+		" -enum int",		# use int for enumeration types
+		" -str pool",		# pool strings into a single data object
+		" $WarningLevel"		
+	
+	);
+
+	&main::Output(
+		" -stdinc"		# insist because mwccsym2 has -nostdinc as the default(?)
+	);
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CWDEFS  = "
+	);
+	foreach(@MacroList) {
+		&main::Output(
+			" -d \"$_\""
+		);
+	}
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"CW$_ = $MWCC"
+		);
+		if (/DEB$/o) {
+			&main::Output(
+				' -g -O0'   # debug information, no optimisation
+			);
+		}
+		elsif (/REL$/o) {
+			&main::Output(
+				' -O4,s'    # highest level of optimisation, optimise for space
+			);
+		}
+		&main::Output(
+			' $(CWFLAGS)'
+		);
+		foreach (&main::MacroList($_)) {
+			&main::Output(
+				" -d $_"
+			);
+		}
+		&main::Output(
+			" \$(CWDEFS) \$(INCDIR)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+
+		&main::Output (
+			" \\\n",
+			"\t", &Generic_Quote("\$(EPOCTRG$_)\\$TrgDir$Trg")
+		);
+		
+
+#		lib has to come after the main target so that a .DEF file will be generated if the project is not frozen
+		if ($DefFile and not &main::ExportUnfrozen) {
+			&main::Output(
+				" \\\n",
+				"\tLIBRARY\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	&main::Output(
+		"LIBRARY : MAKEWORKLIBRARY",
+		"\n"
+	);
+	&main::Output(
+		"\n",
+		"FREEZE :\n"
+	);
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}UDEB");
+
+	&Generic_Releaseables;
+}
+
+my $uidfile;
+sub PMBld {
+
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $DefFile=&main::DefFile;
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $FirstLib=&main::FirstLib;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @LibList;
+	my $RelPath=&main::RelPath;
+	my $Trg=&main::Trg;
+	my $TrgPath=&main::TrgPath;
+	my $TrgType=&main::TrgType;
+
+	$uidfile = "$BaseTrg.UID";
+
+	if ($Bld =~ /DEB/) {
+		@LibList=&main::DebugLibList;
+	} else {
+		@LibList=&main::LibList;
+	}
+
+	my $BLDTRGPATH = "\$(EPOCTRG$Bld)\\";
+	if ($TrgPath) {
+		$BLDTRGPATH .= "\$(TRGDIR)\\";	    # handles TARGETPATH
+	}
+
+
+#	releasables
+	my @releaseables;
+	
+	my $toolspath=&main::EPOCToolsPath();
+	push @releaseables, "$toolspath$Trg";
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+	
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+	&Generic_MakeWorkDir("MAKEWORK$Bld", &main::BldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld", "$RelPath$TrgPath");
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		$BaseSrc = "uid" if ($BaseSrc eq $uidfile);
+		
+   		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+   		);
+   	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LIBS$Bld="
+	);
+	
+	foreach (@LibList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote("\$(EPOCLINK$Bld)\\$_")
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LINK_OBJS$Bld="
+	);
+	my $have_uidfile = 0;
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		if ($BaseSrc eq $uidfile) {
+			$have_uidfile = 1;
+			next;
+		}
+   		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o")
+   		);
+   	}
+	
+	if ($have_uidfile) {
+		# ensure that the uid file is at the end of the list, as it's implicit in
+		# CodeWarrior IDE projects.
+		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote("\$(EPOCBLD$Bld)\\uid.o")
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::OutFormat(
+		"COMMON_LINK_FLAGS$Bld=",
+		' -msgstyle gcc',
+		' -stdlib'		# use default runtime library for compiler help functions
+	);
+	if ($MWLD eq "mwcc.exe") {
+		&main::OutFormat(
+			' -warnings on'	# on by default in mwccsym2.exe
+		);
+	}
+
+	&main::OutFormat(
+		' -subsystem console'
+	);
+		
+	if ($Bld=~/DEB$/o) {
+		&main::OutFormat(
+				' -g'
+			);
+		}
+	
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LINK_FLAGS$Bld= \$(COMMON_LINK_FLAGS$Bld) \$(LIBS$Bld) \\\n\t",
+		" -o \"$BLDTRGPATH$Trg\"" 
+	);
+	
+	&main::Output(
+		' -noimplib'
+	);
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		&Generic_Quote("$BLDTRGPATH$Trg"), " : \$(LINK_OBJS$Bld) "
+	);
+	if (-e $DefFile) { # effectively "if project frozen ..."
+		&main::Output(
+			&Generic_Quote($DefFile)
+		);
+	}
+
+	&main::Output(
+		" \$(LIBS$Bld)\n"
+	);
+
+#	Perform the final link step
+	&main::Output(
+		"\t$MWLD "
+	);
+	
+	&main::Output(
+		"\$(LINK_FLAGS$Bld) \$(LINK_OBJS$Bld)\n",
+	);
+
+	&main::Output(
+		"\tcopy \"$BLDTRGPATH$Trg\" \"",&main::EPOCToolsPath,"$Trg\"\n"
+	);
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+}
+
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;	
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	$BaseSrc = "uid" if ($BaseSrc eq $uidfile);
+
+	return if (@DepList == 0);
+
+	foreach (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc.o"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	$BaseSrc = "uid" if ($BaseSrc eq $uidfile);
+
+	return if (@DepList == 0);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " :",
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcBld {
+	my $BaseSrc=&main::BaseSrc;
+	$BaseSrc = "uid" if ($BaseSrc eq $uidfile);
+	my $Bld=&main::Bld;
+	my $Plat=&main::Plat;
+	my $Src=&main::Src;
+	my $SrcPath=&main::SrcPath;
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " : ",
+		&Generic_Quote("$SrcPath$Src"), "\n",
+		"\t\$(CW$Bld) -o \"\$\@\" -c \"$SrcPath$Src\"\n",
+		"\n",
+#		assembler listing target - uses implicit rule to do disassembly
+		"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+		"\t", &Generic_CopyAction("$SrcPath$BaseSrc.$Plat.lst"),
+		"\n"
+	);
+}
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+
+	my $show_options = "source";
+	$show_options = "source,unmangled,comments" if ($MWLD eq "mwldsym2.exe");
+	
+	&main::Output(
+		"\n",
+		"# Implicit rule for generating .lis files\n",
+		"\n",
+		".SUFFIXES : .lis .o\n",
+		"\n",
+		".o.lis:\n",
+		"\t$MWLD -S -show $show_options \$< -o \$\@\n",
+		"\n",
+		"\n"
+	);
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_vscw.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1860 @@
+# Copyright (c) 2001-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:
+#
+
+
+package Cl_vscw;
+
+# declare variables global for module
+
+my @Win32LibList=();
+my $Win32StdHeaders;
+my $BaseAddressFlag;
+my $Win32Resrc;
+
+my $MWCC;
+my $MWLD;
+my $MWIncludePath;
+my $MWIncludeVar;
+
+# declare variables global for VS6
+my %IdeBlds=();
+my %PrjHdrs=();
+my $DspText='';
+my $VcprojText='';
+my $PlatName=&main::PlatName;
+my $guid='';
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+
+	PMCheckPlatformL
+
+	PMPlatProcessMmp
+	
+	PMStartBldList
+		PMBld
+	PMStartSrcList
+		PMBitMapBld
+		PMResrcBld
+		PMAifBld
+		PMDoc
+		PMStartSrc
+		PMSrcDepend
+			PMSrcBldDepend
+			PMEndSrcBld
+		PMEndSrc
+	PMEndSrcList
+);
+
+use Winutl;
+use cl_generic;
+use E32Variant;
+use lockit_info;
+
+sub RoundUp1k($) {
+	# Accept C hexadecimal number (0xNNN).  Convert argument to Kb
+	# rounded up to the next 1kb boundary.
+	use integer;
+	return (hex($_[0]) + 1023) / 1024;
+}
+
+
+sub PMHelp_Mmp {
+	&Winutl_Help_Mmp;
+}
+
+sub SysTrg () {
+	return 1 if &main::SystemTrg;
+	my $ExportLibrary=&main::ExportLibrary;
+	return 1 if ($ExportLibrary =~ /EKERN/i);
+	my $Trg=&main::Trg;
+	return 1 if ($Trg =~ /KSRT/i);
+	return 0;
+}
+
+sub PMCheckPlatformL {
+
+	# check version of CodeWarrior for Symbian OS
+	
+	if (defined($ENV{MWCSym2Includes})) {
+		$MWCC = "mwccsym2.exe";
+		$MWLD = "mwldsym2.exe";
+	}
+	if (!defined($MWCC) && defined($ENV{MWSym2Libraries})) {
+		$MWCC = "mwccsym2.exe";
+		$MWLD = "mwldsym2.exe";
+	}
+	if (!defined($MWCC) && defined($ENV{CWFolder})) {
+		$MWCC = "mwcc.exe";
+		$MWLD = "mwld.exe";
+	}
+	if (!defined($MWCC)) {
+		die "ERROR: Unable to identify a valid CodeWarrior for Symbian OS installation\n";
+	}
+	
+	# determine default include path
+	
+	$MWIncludeVar = 'MWCIncludes';	# default, even if it doesn't exist
+	$MWIncludePath = '';			# default is empty
+	
+	foreach my $var ('MWCSym2Includes','MWCWinx86Includes','MWCIncludes') {
+		if (defined($ENV{$var})) {
+			$MWIncludePath = $ENV{$var};
+			$MWIncludeVar = $var;
+			last;
+		}
+	}
+}
+
+sub PMPlatProcessMmp (@) {
+	&Winutl_DoMmp(\@_, $MWIncludePath);
+	$BaseAddressFlag=&Winutl_BaseAddress;
+	if ($BaseAddressFlag ne "") {
+		$BaseAddressFlag=" -imagebase \"$BaseAddressFlag\"";
+	}
+	@Win32LibList=&Winutl_Win32LibList;
+	$Win32Resrc=&Winutl_Win32Resrc;
+	$Win32StdHeaders=&Winutl_Win32StdHeaders;
+}
+
+sub PMStartBldList($) {
+	my ($makecmd) = @_;
+	my $AifStructRef=&main::AifStructRef;
+	my $BaseTrg=&main::BaseTrg;
+	my $BitMapStructRef=&main::BitMapStructRef;
+	my @BldList=&main::BldList;
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $DefFile=&main::DefFile;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $LibPath=&main::LibPath;
+	my @MacroList=&main::MacroList();
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__";
+	my $VariantFile=&main::VariantFile();
+	my $ResourceStructRef=&main::ResourceStructRef;
+	my $Plat=&main::Plat;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my $WarningLevel=&main::CompilerOption("CW");
+	my $LinkAs=&main::LinkAs;
+
+	&main::Output(
+			"PATH=$ENV{EPOCROOT}epoc32\\tools\\;$ENV{PATH}",
+			"\n",
+			"Path=\$(PATH)",
+			"\n"
+			);
+
+# Get the drive letter to call the Lada compiler to call it with absolute path
+	&main::Output(
+			"COMPILER_PATH=\"$ENV{EPOCROOT}epoc32\\tools\\nokia_compiler\\Symbian_Tools\\Command_Line_Tools\\\"",
+			"\n"
+	);
+
+	Generic_Header(0,$makecmd);	# define standard things using absolute paths
+
+	my $TrgDir="";
+	my $AifTrgDir="";
+	if (&Generic_Definition("TRGDIR") ne "") {
+		$TrgDir="\$(TRGDIR)\\";
+		$AifTrgDir=$TrgDir;
+	}
+
+# Handle migration of binaries to secure location
+
+	&Winutl_AdjustTargetPath(\$TrgDir);
+	
+# Change - mwwinrc.exe uses MWWinx86Includes or MWCIncludes, but some installations
+# fail to install either. Set MWCIncludes from the chosen variable as part
+# of the Makefile.
+	if (!defined($ENV{MWCIncludes}) && $MWIncludeVar ne 'MWCIncludes') {
+		&main::Output(
+			"\n",
+			"MWCIncludes:=\$($MWIncludeVar)\n",
+			"export MWCIncludes\n",
+			"\n"
+		);
+	}
+
+	my $CompilerLibPath="$ENV{EPOCROOT}epoc32\\tools\\nokia_compiler\\Symbian_Support\\Runtime\\Runtime_x86\\Runtime_Win32\\Libs;$ENV{EPOCROOT}epoc32\\tools\\nokia_compiler\\Symbian_Support\\Win32-x86 Support\\Libraries\\Win32 SDK";
+	&main::Output(
+			"\n",
+		"MWLibraries:=\+$CompilerLibPath\n",
+		"export MWLibraries\n",
+		"\n"
+		);
+	&main::Output(
+			"\n",
+		"MWLibraryFiles:=gdi32.lib;user32.lib;kernel32.lib;\n",
+		"export MWLibraryFiles\n",
+		"\n"
+		);
+	
+	&main::Output(
+		"# EPOC DEFINITIONS\n",
+		"\n",
+		"INCDIR  = -cwd source -i-"
+	);
+	foreach (@ChopUserIncPaths,@ChopSysIncPaths) {
+		&main::Output(
+			" \\\n -i \"$_\""
+		);
+	}
+	use Pathutl;
+	if($VariantFile){
+	    my $variantFilePath = Path_Split('Path',$VariantFile);
+	    $VariantFile  = Path_Split('FILE',$VariantFile);
+	    # workaround for codewarrior defect:
+	    # codewarrior at the moment doesn't accept an absolute path with the
+	    # the -include option unless it contains a drive letter, this is solved
+	    # by including the directory and the file separately
+	    &main::Output("\\\n -i \"$variantFilePath \" -include \"$VariantFile\"");
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CWFLAGS =",
+		" -wchar_t off",	# do not treat wchar_t as a predefined type
+		" -align 4",		# long alignment
+		" -warnings on",	# selection of warnings
+		" -w nohidevirtual",	# turn off "hides inherited virtual function" warning
+		   ",nounusedexpr",	# turn off "expression has no side effect" warning
+		" -enum int",		# use int for enumeration types
+		" -str pool",		# pool strings into a single data object
+		" -exc ms",			# SEH C++ exception implementation
+		" $WarningLevel"		
+	
+	);
+	if ($Win32StdHeaders or &main::Plat eq 'TOOLS') {
+		&main::Output(
+			" -stdinc"		# insist because mwccsym2 has -nostdinc as the default(?)
+		);
+	}
+	else {
+		&main::Output(
+			" -nostdinc"	# insist because mwcc has -stdinc as the default.
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CWDEFS  = "
+	);
+	foreach(@MacroList) {
+		&main::Output(
+			" -d \"$_\""
+		);
+	}
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"CW$_ = perl -S err_formatter.pl \$(COMPILER_PATH)$MWCC -msgstyle parseable "
+		);
+		if (/DEB$/o) {
+
+			if($PlatName eq "VS6") {
+				&main::Output(
+					' -sym codeview'
+				);
+			}
+			else
+			{
+				&main::Output(
+					' -sym codeview_new'
+				);
+			}
+
+
+#			euser change to apply inlining on the _NAKED functions
+			if ($BaseTrg!~/^EUSER$/oi) {
+				&main::Output(
+					' -inline off'
+				);
+			}	
+		}
+		elsif (/REL$/o) {
+			&main::Output(
+				' -O4,s'	# highest level of optimisation, optimise for space
+			);
+		}
+		&main::Output(
+			' $(CWFLAGS)'
+		);
+		foreach (&main::MacroList($_)) {
+			&main::Output(
+				" -d $_"
+			);
+		}
+		&main::Output(
+			" \$(CWDEFS) \$(INCDIR)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+
+		if ($BasicTrgType !~ /IMPLIB/io) {
+			&main::Output (
+				" \\\n",
+				"\t", &Generic_Quote("\$(EPOCTRG$_)\\$TrgDir$Trg")
+			);
+			if (&Winutl_CopyForStaticLinkage) {
+				&main::Output(
+					" \\\n",
+					"\t", &Generic_Quote("\$(EPOCTRG$_)\\$Trg")
+				);
+			}
+		}
+
+#		lib has to come after the main target so that a .DEF file will be generated if the project is not frozen
+		if ($DefFile and not &main::ExportUnfrozen) {
+			&main::Output(
+				" \\\n",
+				"\tLIBRARY\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	foreach (@BldList) {
+		my $makework="MAKEWORK$_";
+		&main::Output(
+			"\n",
+			"RESOURCE$_ : $makework"
+		);
+
+		my $BitMapRef;
+		foreach $BitMapRef (@$BitMapStructRef) {
+			my $file="\$(EPOCTRG$_)\\$$BitMapRef{TrgPath}$$BitMapRef{Trg}";
+			&Generic_MakeWorkFile($makework,$file);
+			&main::Output(
+				" \\\n",
+				"\t", &Generic_Quote($file)
+			);
+		}
+		undef $BitMapRef;
+
+		my $ResourceRef;
+		foreach $ResourceRef (@$ResourceStructRef) {
+			my $file="\$(EPOCTRG$_)\\$$ResourceRef{Trg}";
+			&Generic_MakeWorkFile($makework,$file);
+			&main::Output(	# must come before main target because source for target will depend on the
+			" \\\n",		# *.rsg file in $EPOCIncPath
+			"\t", &Generic_Quote("$file")
+			);
+		}
+		undef $ResourceRef;
+
+		my $AifRef;
+		foreach $AifRef (@$AifStructRef) {
+			my $file="\$(EPOCTRG$_)\\$AifTrgDir$$AifRef{Trg}";
+			&Generic_MakeWorkFile($makework,$file);
+			&main::Output(
+				" \\\n",
+				"\t", &Generic_Quote($file)
+			);
+		}
+		undef $AifRef;
+
+		&main::Output(
+			"\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n",
+	);
+
+	&main::Output(
+		"\n",
+		"# REAL TARGET - LIBRARY\n",
+		"\n",
+		"LIBRARY : MAKEWORKLIBRARY"
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+#		code to ensure that the static libraries for all builds are built at the library stage
+		foreach (@BldList) {
+			&main::Output(
+				" $_"
+			);
+		}
+	}
+	elsif ($DefFile and !$NoExportLibrary) {
+		unless (&main::ExportUnfrozen) {
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				my $LibLinkAs = ($BasicTrgType=~/^IMPLIB$/io) ? $LinkAs : $Trg;
+				&main::Output(
+					" ", &Generic_Quote("\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib"), "\n",
+					"\n",
+					&Generic_Quote("\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib"), " : ",
+					&Generic_Quote($DefFile), "\n",
+					"\tperl -S prepdef.pl ",&Generic_Quote($DefFile)," \"\$(EPOCBLD)\\$ExportLibrary.prep.def\"\n",
+					"\t\$(COMPILER_PATH)$MWLD -msgstyle gcc \"\$(EPOCBLD)\\$ExportLibrary.prep.def\" -importlib -o \$\@",
+					" -addcommand \"out:$LibLinkAs\" -warnings off",
+					"\n"
+				);
+			} else {
+				&main::Output(
+					"\n",
+					"\t\@echo WARNING: Not attempting to create \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\".\n",
+					"\t\@echo When exports are frozen in \"$DefFile\", regenerate Makefile.\n"
+				);
+			}
+		} else {
+			&main::Output(
+				"\n",
+				"\t\@echo Not attempting to create \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"\n",
+				"\t\@echo from frozen .DEF file, since EXPORTUNFROZEN specified.\n"
+			);
+		}
+	}
+	&main::Output(
+		"\n",
+		"\n",
+		"FREEZE :\n"
+	);
+	if ($DefFile and $BasicTrgType!~/^IMPLIB$/io) {
+		&main::Output(
+#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			"\tperl -S efreeze.pl \$(EFREEZE_ALLOW_REMOVE) \"$DefFile\" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+	if ($DefFile and !$NoExportLibrary) {
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"\n"
+		);
+	}
+	&main::Output(
+		"\n"
+	);
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}UDEB");
+
+	&Generic_Releaseables;
+
+	if($PlatName eq "VS6") {
+		VS6StartBldList();
+	}
+	elsif($PlatName eq "VS2003") 
+	{
+		VS2003StartBldList();
+	}
+
+}
+
+sub VS6StartBldList(){
+	my $BaseTrg=&main::BaseTrg;
+	my @BldList=&main::BldList;
+	my $Plat=&main::Plat;
+
+	# set up global IDE builds variable
+	%IdeBlds= (
+		UREL=> "$BaseTrg - Win32 Release",
+		UDEB=> "$BaseTrg - Win32 Debug",
+	);
+	if (&main::Plat eq 'TOOLS') {
+		%IdeBlds= (
+			REL=> "$BaseTrg - Win32 Release",
+			DEB=> "$BaseTrg - Win32 Debug",
+		);
+	}
+	
+
+	$DspText=join('',
+		"# Microsoft Developer Studio Project File - Name=\"$BaseTrg\" - Package Owner=<4>\n",
+		"# Microsoft Developer Studio Generated Build File, Format Version 6.00\n",
+		"# ** DO NOT EDIT **\n",
+		"\n"
+	);
+
+	$DspText.=join('',
+		"# TARGTYPE \"Win32 (x86) External Target\" 0x0106\n",
+		"\n",
+		"CFG=",$IdeBlds{$BldList[0]},"\n",
+		"!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n",
+		"!MESSAGE use the Export Makefile command and run\n",
+		"!MESSAGE \n",
+		"!MESSAGE NMAKE /f \"",$BaseTrg,".mak\".\n",
+		"!MESSAGE \n",
+		"!MESSAGE You can specify a configuration when running NMAKE\n",
+		"!MESSAGE by defining the macro CFG on the command line. For example:\n",
+		"!MESSAGE \n",
+		"!MESSAGE NMAKE /f \"",$BaseTrg,".mak\" CFG=\"".$IdeBlds{$BldList[0]}."\"\n",
+		"!MESSAGE \n",
+		"!MESSAGE Possible choices for configuration are:\n",
+		"!MESSAGE \n"
+	);
+	
+	foreach (reverse @BldList) {
+		$DspText.=join('',
+			"!MESSAGE \"",$IdeBlds{$_},"\" (based on \"Win32 (x86) External Target\")"
+		);
+		$DspText.="\n";
+	}
+
+	$DspText.=join('',
+		"!MESSAGE \n",
+		"\n"
+	);
+
+	# BEGIN THE PROJECT
+	#------------------
+	$DspText.=join('',
+		"# Begin Project\n",
+		"# PROP AllowPerConfigDependencies 0\n",
+		"# PROP Scc_ProjName \"\"\n",
+		"# PROP Scc_LocalPath \"\"\n",
+		"\n"
+	);
+
+}
+
+sub VS2003StartBldList(){
+	my $BaseTrg=&main::BaseTrg;
+	my @BldList=&main::BldList;
+	my $Plat=&main::Plat;
+
+	$guid = `uuidgen.exe`;
+	$guid =~ s/\n//g;
+	$guid = uc $guid;
+# set up global IDE builds variable
+	%IdeBlds= (
+		UREL=> "Release|Win32",
+		UDEB=> "Debug|Win32",
+	);
+	if ($Plat eq 'TOOLS') {
+		%IdeBlds= (
+			REL=> "Release|Win32",
+			DEB=> "Debug|Win32",
+		);
+	}
+	
+
+	$VcprojText=join('',
+		"<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\n",
+		"<VisualStudioProject\n",
+		"\tProjectType=\"Visual C++\"\n",
+		"\tVersion=\"7.10\"\n",
+		"\tName=\"$BaseTrg\"\n",
+		"\tProjectGUID=\"{$guid}\"\n",
+		"\tSccProjectName=\"\"\n",
+		"\tSccLocalPath=\"\"\n",
+		"\tKeyword=\"MakeFileProj\">\n",
+		"\t<Platforms>\n",
+		"\t\t<Platform\n",
+		"\t\t\tName=\"Win32\"/>\n",
+		"\t</Platforms>\n",
+		"\t<Configurations>\n",
+		"\n"
+	);
+
+}
+
+my $uidfile;
+sub PMBld {
+
+	my $AifStructRef=&main::AifStructRef;
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $BitMapStructRef=&main::BitMapStructRef;
+	my $Bld=&main::Bld;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $DefFile=&main::DefFile;
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $FirstLib=&main::FirstLib;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @LibList;
+	my $RelPath=&main::RelPath;
+	my $ResourceStructRef=&main::ResourceStructRef;
+	my @StatLibList=&main::StatLibList;
+	my $Trg=&main::Trg;
+	my $TrgPath=&main::TrgPath;
+	my $TrgType=&main::TrgType;
+
+	$uidfile = "$BaseTrg.UID";
+
+	if ($Bld =~ /DEB/) {
+		@LibList=&main::DebugLibList;
+	} else {
+		@LibList=&main::LibList;
+	}
+ 	
+# Handle migration of binaries to secure location
+
+	my $BLDTRGPATH = "";
+	my $AIFBLDTRGPATH = "";
+	if ($TrgPath) {
+		$BLDTRGPATH = "\$(TRGDIR)\\";	    # handles TARGETPATH
+		$AIFBLDTRGPATH = $BLDTRGPATH;
+		&Winutl_AdjustTargetPath(\$BLDTRGPATH);
+	}
+	$BLDTRGPATH = "\$(EPOCTRG$Bld)\\".$BLDTRGPATH;
+	$AIFBLDTRGPATH = "\$(EPOCTRG$Bld)\\".$AIFBLDTRGPATH;
+
+	# REAL TARGETS
+	#-------------
+	&main::Output(
+		"# REAL TARGET - BUILD VARIANT $Bld\n",
+		"\n"
+	);
+
+#	releasables
+	my @releaseables;
+	
+	unless (&main::Plat() eq 'TOOLS') {
+		if ($BasicTrgType !~ /^IMPLIB$/io) {
+			push @releaseables, "$BLDTRGPATH$Trg";
+			if ($Bld=~/REL$/o && $BasicTrgType!~/^LIB$/o) {
+				push @releaseables,"$BLDTRGPATH$Trg.map";
+			}
+			if (&Winutl_CopyForStaticLinkage) {
+				push @releaseables, "\$(EPOCTRG$Bld)\\$Trg";
+			}
+			my $BitMapRef;
+			foreach $BitMapRef (@$BitMapStructRef) {
+				push @releaseables, "\$(EPOCTRG$Bld)\\$$BitMapRef{TrgPath}$$BitMapRef{Trg}";
+			}
+			my $ResourceRef;
+			foreach $ResourceRef (@$ResourceStructRef) {
+				push @releaseables,"\$(EPOCTRG$Bld)\\$$ResourceRef{Trg}";
+			}
+			my $AifRef;
+			foreach $AifRef (@$AifStructRef) {
+				push @releaseables, "$AIFBLDTRGPATH$$AifRef{Trg}";
+			}
+		}
+		if (-e $DefFile and !$NoExportLibrary) { # effectively "if project frozen ..."
+			push @releaseables, "\$(EPOCLIB$Bld)\\$ExportLibrary.lib";
+		}
+		if ($Bld=~/DEB$/o) {
+			# debugging support files?
+		}
+	}
+	else {
+		if ($BasicTrgType !~ /^IMPLIB$/io) {
+			my $toolspath=&main::EPOCToolsPath();
+			push @releaseables, "$toolspath$Trg";
+		}
+	}
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+
+  my $adjustedTargetPath=$TrgPath;
+  &Winutl_AdjustTargetPath(\$adjustedTargetPath);
+  &Generic_MakeWorkDir("MAKEWORK$Bld", &main::BldPath);
+  &Generic_MakeWorkDir("MAKEWORK$Bld", "$RelPath$adjustedTargetPath");
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	return if ($BasicTrgType=~/^IMPLIB$/io);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+		$BaseSrc =~ s/\.UID/_UID_/i if ($BaseSrc eq $uidfile);
+		
+   		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+   		);
+   	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LIBS$Bld="
+	);
+	foreach (@StatLibList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_")
+		);
+	}
+	foreach (@LibList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote("\$(EPOCLINK$Bld)\\$_")
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LINK_OBJS$Bld="
+	);
+	my $have_uidfile = 0;
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		if ($BaseSrc eq $uidfile) {
+			$have_uidfile = 1;
+			next;
+		}
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+   		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o")
+   		);
+   	}
+	if ($Win32Resrc) {
+		my $resbase=&main::Path_Split('Base',$Win32Resrc);
+		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$resbase.res")
+		);
+	}
+	if ($have_uidfile) {
+		# ensure that the uid file is at the end of the list, as it's implicit in
+		# CodeWarrior IDE projects.
+		&main::Output(
+			" \\\n",
+			"\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg"."_UID_.o")
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::OutFormat(
+		"COMMON_LINK_FLAGS$Bld=",
+		' -stdlib'		# use default runtime library for compiler help functions
+	);
+	if ($MWLD eq "mwcc.exe") {
+		&main::OutFormat(
+			' -warnings on'	# on by default in mwccsym2.exe
+		);
+	}
+	if ($BasicTrgType=~/^(EXE|DLL)$/o) {
+		unless (&main::Plat eq 'TOOLS') {
+			&main::OutFormat(
+				" \"\$(EPOCSTATLINK$Bld)\\$FirstLib\""
+			);
+		}
+	}
+	foreach my $lib (@Win32LibList) {
+		 my $win32lib = $lib;    # take a copy, to avoid updating contents of Win32LibList!
+		$win32lib = "-l$win32lib" unless ($win32lib =~ /\\/);
+		&main::OutFormat(
+			" ",lc $win32lib
+		);
+	}
+	if ($BasicTrgType=~/^DLL$/o) {
+		&main::OutFormat(
+			"$BaseAddressFlag",
+			' -noentry',
+			' -shared'
+		);
+	}
+	elsif ($TrgType=~/^EXEXP$/o) {
+		&main::OutFormat(
+			"$BaseAddressFlag",
+			' -noentry',
+			' -shared'
+		);
+	}
+	elsif ($BasicTrgType=~/^EXE$/o) {
+		unless (&main::Plat eq 'TOOLS') {
+			&main::OutFormat(
+				' -m "?_E32Bootstrap@@YGXXZ"'
+			);
+		}
+	}
+	if (&main::Plat=~/^(WINC|TOOLS)$/o && $BasicTrgType=~/^EXE$/o) {
+		&main::OutFormat(
+			' -subsystem console'
+		);
+	}
+	else {
+		&main::OutFormat(
+			' -subsystem windows'
+		);
+	}
+	if (&main::HeapSize) {
+		my %HeapSize=&main::HeapSize;
+		&main::OutFormat(
+			' -heapreserve=',RoundUp1k($HeapSize{Max}),' -heapcommit=',RoundUp1k($HeapSize{Min})
+		);
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		if ($Bld=~/DEB$/o) {
+			if($PlatName eq "VS6")
+			{
+				&main::OutFormat(
+					' -sym codeview'
+				);
+			}
+			else
+			{
+				&main::OutFormat(
+					' -sym codeview_new'
+				);
+			}
+			#mention the debug version of the runtime library
+			&main::OutFormat(
+				' -lMSL_All_MSE_Symbian_D.lib'
+				);
+		}
+		else
+		{
+			#mention the release version of the runtime library
+			&main::OutFormat(
+				' -lMSL_All_MSE_Symbian.lib'
+				);
+		}
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	my $EntrySymbol='';
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		my $Include="";
+		if ($BasicTrgType=~/^DLL$/o) {
+			$Include="-m __E32Dll";
+			$EntrySymbol='__E32Dll';
+		}
+		else {
+			$Include="-m __E32Startup";
+			$EntrySymbol='__E32Startup';
+		}
+		&main::Output(
+			"STAGE1_LINK_FLAGS$Bld= \$(COMMON_LINK_FLAGS$Bld) \$(LIBS$Bld) \\\n\t",
+			" -o \"\$(EPOCBLD$Bld)\\$Trg\"", 
+			' -export dllexport',
+			" $Include",
+			' -nocompactimportlib', 
+			" -implib \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"",
+			" -addcommand \"out:$Trg\" -warnings off",
+			"\n",
+		);
+	}
+	my $AbsentSubst = '';
+	if ($EntrySymbol) {
+		$AbsentSubst = " -absent $EntrySymbol";
+	}
+
+	&main::Output(
+		"LINK_FLAGS$Bld= \$(COMMON_LINK_FLAGS$Bld) \$(LIBS$Bld) \\\n\t",
+		" -o \"$BLDTRGPATH$Trg\"" 
+	);
+	if ($Bld=~/REL$/o && $BasicTrgType!~/^LIB$/o) {
+		# Generate map file for release build executables
+		&main::Output(
+			" -map \"$BLDTRGPATH$Trg.map\"", 
+		);
+	}
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			" -f \"\$(EPOCBLD)\\$ExportLibrary.def\"",	# use generated .DEF file
+		);
+		if (&main::ExportUnfrozen) {
+			&main::Output(
+				" -implib \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"",
+				" -addcommand \"out:$Trg\" -warnings off"
+			);
+		}
+		else {
+			&main::Output(
+				' -noimplib'
+			);
+		}
+	}
+	else {
+		&main::Output(
+			' -noimplib'
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		&Generic_Quote("$BLDTRGPATH$Trg"), " : \$(LINK_OBJS$Bld) "
+	);
+	if (-e $DefFile) { # effectively "if project frozen ..."
+		&main::Output(
+			&Generic_Quote($DefFile)
+		);
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		unless (&main::Plat eq 'TOOLS') {
+			&main::Output(
+				" ", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$FirstLib")
+			);
+		}
+	}
+	&main::Output(
+		" \$(LIBS$Bld)\n"
+	);
+
+
+#	Link by name first time round for dlls
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			"\t\$(COMPILER_PATH)$MWLD -msgstyle gcc \$(STAGE1_LINK_FLAGS$Bld) -l \$(EPOCBLD$Bld) -search \$(notdir \$(LINK_OBJS$Bld))\n",
+			"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$Trg\"\n",
+		);
+
+#		Generate an export info file
+		my $show_options = "names,verbose";
+		$show_options = "names,unmangled,verbose" if ($MWLD eq "mwldsym2.exe");
+		&main::Output(
+			"\t\$(COMPILER_PATH)$MWLD -msgstyle gcc -S -show only,$show_options -o \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\" \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+		);
+
+#		call makedef to reorder the export information
+		&main::Output(
+#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			"\tperl -S makedef.pl $AbsentSubst -Inffile \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\""
+		);
+		if (SysTrg()) {
+    			&main::Output( "\t\t-SystemTargetType \\\n" );
+	    	}		
+		if (-e $DefFile) { # effectively "if project frozen ..."
+			&main::Output(
+				" -Frzfile \"$DefFile\""
+			);
+		}
+		my $Export;
+		my $Ordinal=1;
+		foreach $Export (&main::Exports) {
+#				replace "$" with "$$" so that NMAKE doesn't think there's a macro in the function name
+			$Export=~s-\$-\$\$-go;
+			&main::Output(
+				" -$Ordinal $Export"
+			);
+			$Ordinal++;
+		}
+		&main::Output(
+			" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n",
+			"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\"\n",
+			"\t\$(ERASE) \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+		);
+	}
+
+#	Perform the final link step
+	&main::Output(
+		"\t\$(COMPILER_PATH)$MWLD -msgstyle gcc "
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+		&main::Output(
+			"-library "
+		);
+	}
+	&main::Output(
+		"\$(LINK_FLAGS$Bld) -l \$(EPOCBLD$Bld) -search \$(notdir \$(LINK_OBJS$Bld))\n",
+	);
+
+	if (&main::Plat eq 'TOOLS') {
+		&main::Output(
+			"\tcopy \"BLDTRGPATH$Trg\" \"",&main::EPOCToolsPath,"$Trg\"\n"
+		);
+	}
+	if (&Winutl_CopyForStaticLinkage) {
+		&Generic_MakeWorkDir("MAKEWORK$Bld", "\$(EPOCTRG$Bld)");
+		&main::Output(
+			"\n",
+			&Generic_Quote("\$(EPOCTRG$Bld)\\$Trg"), " : ", 
+			&Generic_Quote("$BLDTRGPATH$Trg"), "\n",
+			"\t", &Generic_CopyAction(),
+		);
+	}
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	if($PlatName eq "VS6") {
+		VS6Bld();
+	}
+	else
+	{
+		VS2003Bld();
+	}
+}
+
+sub VS6Bld(){
+
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my @BldList=&main::BldList;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+	my $Trg=&main::Trg;
+
+
+	if ($Bld eq $BldList[0]) {
+		$DspText.=join('',
+			"!IF  \"\$(CFG)\" == \"$IdeBlds{$Bld}\"\n",
+			"\n"
+		);
+	}
+	else {
+		$DspText.=join('',
+			"!ELSEIF  \"\$(CFG)\" == \"$IdeBlds{$Bld}\"\n",
+			"\n"
+		);
+	}
+	$DspText.=join('',
+		"# PROP BASE Use_MFC 0\n"
+	);
+	if ($Bld=~/REL$/o) {
+		$DspText.=join('',
+			"# PROP BASE Use_Debug_Libraries 0\n",
+			"# PROP BASE Output_Dir \".\\Release\"\n",
+			"# PROP BASE Intermediate_Dir \".\\Release\"\n"
+		);
+	}
+	elsif ($Bld=~/DEB$/o) {
+		$DspText.=join('',
+			"# PROP BASE Use_Debug_Libraries 1\n",
+			"# PROP BASE Output_Dir \".\\Debug\"\n",
+			"# PROP BASE Intermediate_Dir \".\\Debug\"\n"
+		);
+	}
+
+	$DspText.=join('',
+		"# PROP BASE Cmd_Line \"NMAKE /f ",$BaseTrg,".mak \"\n",
+		"# PROP BASE Rebuild_Opt \"/a\"\n",
+		"# PROP BASE Target_File \"",$Trg,"\"\n",
+		"# PROP BASE Bsc_Name \"",$BaseTrg,".bsc\"\n",
+		"# PROP BASE Target_Dir \"\"\n"
+	);
+
+	$DspText.=join('',
+			"# PROP Use_MFC\n"
+	);
+	if ($Bld=~/REL$/o) {
+		$DspText.=join('',
+			"# PROP Use_Debug_Libraries 0\n"
+		);
+	}
+	elsif ($Bld=~/DEB$/o) {
+		$DspText.=join('',
+			"# PROP Use_Debug_Libraries 1\n"
+		);
+	}
+
+	$DspText.=join('',
+		"# PROP Output_Dir \"$ChopRelPath\"\n",
+		"# PROP Intermediate_Dir \"$ChopBldPath\"\n",
+		"# PROP Cmd_Line \"\"$ENV{EPOCROOT}epoc32\\tools\\MAKE.exe\" -r -f ",&main::BaseMak,"_$Bld.mak \"\n",
+		"# PROP Rebuild_Opt \"REBUILD\"\n",
+		"# PROP Target_File \"",$Trg,"\"\n"
+	);
+
+	if ($Bld=~/REL$/o) {
+		$DspText.=join('',
+			"# PROP Bsc_Name \"",$BaseTrg,".bsc\"\n"
+		);
+	}
+	elsif ($Bld=~/DEB$/o) {
+		$DspText.=join('',
+			"# PROP Bsc_Name \"\"\n"
+		);
+	}
+
+	$DspText.=join('',
+		"# PROP Target_Dir \"\"\n"
+	);
+
+	$DspText.=join('',
+		"\n"
+	);
+
+}
+
+sub VS2003Bld(){
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my @BldList=&main::BldList;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $ChopRelPath=&main::Path_Chop(&main::Path_MakeRltToBase(&main::MakeFilePath, &main::RelPath));
+	my $Trg=&main::Trg;
+
+	$VcprojText.=join('',
+		"\t\t<Configuration\n",
+		"\t\t\tName=\"",$IdeBlds{$Bld},"\"\n",
+		"\t\t\tOutputDirectory=\"$ChopRelPath\"\n",
+		"\t\t\tIntermediateDirectory=\"$ChopBldPath\"\n",
+		"\t\t\tConfigurationType=\"0\"\n",
+		"\t\t\tUseOfMFC=\"0\"\n",
+		"\t\t\tATLMinimizesCRunTimeLibraryUsage=\"FALSE\">\n",
+		"\t\t\t<Tool\n",
+		"\t\t\t\tName=\"VCNMakeTool\"\n",
+		"\t\t\t\tBuildCommandLine=\"\&quot;$ENV{EPOCROOT}epoc32\\tools\\make.exe\&quot; -r -f ",&main::BaseMak,".mak $Bld\"\n",
+		"\t\t\t\tReBuildCommandLine=\"\&quot;$ENV{EPOCROOT}epoc32\\tools\\make.exe\&quot; -r -f ",&main::BaseMak,".mak CLEAN $Bld \"\n",
+		"\t\t\t\tCleanCommandLine=\"\&quot;$ENV{EPOCROOT}epoc32\\tools\\make.exe\&quot; -r -f ",&main::BaseMak,".mak CLEAN$Bld\"\n",
+		"\t\t\t\tOutput=\"$ChopRelPath\\$Trg\"/>\n",
+		"\t\t</Configuration>\n"
+		);
+
+}
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+
+	if($PlatName eq "VS6") {
+		VS6StartSrcList();
+	}
+	else
+	{
+		VS2003StartSrcList();
+	}
+}
+
+sub VS6StartSrcList(){
+	my @BldList=&main::BldList;
+
+
+	$DspText.=join('',
+		"\n!ENDIF\n\n",
+		"# Begin Target\n",
+		"\n"
+	);
+	foreach (@BldList) {
+		$DspText.=join('',
+			"# Name \"".$IdeBlds{$_}."\"\n"
+		);
+	}
+	$DspText.=join('',
+		"# Begin Group \"Source Files\"\n",
+		"\n",
+		"# PROP Default_Filter \"cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90\"\n"
+	);
+
+}
+
+sub VS2003StartSrcList(){
+
+	$VcprojText.=join('',
+		"\t</Configurations>\n",
+		"\t<References>\n",
+		"\t</References>\n"
+	);
+
+	$VcprojText.=join('',
+		"\t<Files>\n",
+		"\t\t<Filter\n",
+		"\t\t\tName=\"Source Files\"\n",
+		"\t\t\tFilter=\"cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90\"\n",
+		"\t\t\tUniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\">\n"
+	);
+
+}
+
+
+sub PMBitMapBld {
+
+	&Generic_BitMapBld;
+
+	# Need to copy generic resource into emulated Z drive
+
+	my $BitMapRef=&main::BitMapRef;
+
+	my $ChopTrgPath="";
+	if ($$BitMapRef{TrgPath}) {
+		$ChopTrgPath.="\\$$BitMapRef{TrgPath}";
+		chop $ChopTrgPath;
+	}
+
+	my @BldList=&main::BldList;
+	my $Bld;
+	foreach $Bld (@BldList) {
+		my $path="\$(EPOCTRG$Bld)$ChopTrgPath";
+		&main::Output(
+			&Generic_Quote("$path\\$$BitMapRef{Trg}"), " : ", 
+			&Generic_Quote("$$BitMapRef{GenericTrg}"), "\n",
+			"\t", &Generic_CopyAction(),
+			"\n"
+		);
+	}
+}
+
+sub PMResrcBld {
+
+	&Generic_ResrcBld; 
+
+	# Need to copy generic resource into emulated Z drive
+
+	my $ResourceRef=&main::ResourceRef;
+	my @BldList=&main::BldList;
+
+	foreach my $Bld (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCTRG$Bld)\\$$ResourceRef{Trg}"), " : ", 
+			&Generic_Quote("$$ResourceRef{GenericTrg}"), "\n",
+			"\t", &Generic_CopyAction(),
+			"\n"
+		);
+	}
+
+	if($PlatName eq "VS6") {
+		VS6ResrcBld();
+	}
+	else
+	{
+		VS2003ResrcBld();
+	}
+
+}
+
+sub VS6ResrcBld() {
+
+	my $ResourceRef=&main::ResourceRef;
+	my @BldList=&main::BldList;
+
+	my $Resrc=ucfirst lc &main::Path_Split('File', $$ResourceRef{Source});
+	my $BaseResrc=&main::Path_Split('Base', $$ResourceRef{Source});
+	my $SrcPath=&main::Path_Split('Path', $$ResourceRef{Source});
+	my $TrgPath=&main::Path_Split('Path', $$ResourceRef{Trg});
+	my @LangList=($$ResourceRef{Lang});
+	
+	my $inputpath="$SrcPath$Resrc";
+	
+	$DspText.=join('',
+		"# Begin Source File\n",
+		"\n",
+		"SOURCE=$inputpath\n"
+	);
+
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my @DepList=&main::DepList;
+	my $PathBaseDsp=&main::MakeFilePath.&main::BaseMak;
+	my $RelPath=&main::RelPath;
+
+	$DspText.=join('',
+		"USERDEP__$BaseResrc="
+	);
+	my $Dep;
+	foreach $Dep (@DepList) {
+		$DspText.=join('',
+			"\"$Dep\"\t"
+		);
+	}
+	$DspText.=join('',
+		"\n"
+	);
+
+	my $Bld;
+	foreach $Bld (@BldList) {
+		my $ResrcTrgFullName="$RelPath$Bld\\$TrgPath$BaseResrc.r";
+		if ($Bld eq $BldList[0]) {
+			$DspText.=join('',
+				'!IF'
+			);
+		}
+		else {
+			$DspText.=join('',
+				'!ELSEIF'
+			);
+		}
+		$DspText.=join('',
+			"  \"\$(CFG)\" == \"$IdeBlds{$Bld}\"\n",
+			"\n"
+		);
+		$DspText.=join('',
+			"# PROP Intermediate_Dir \"$ChopBldPath\"\n",
+			"# Begin Custom Build - Building resources from $Resrc\n",
+			"InputPath=$inputpath\n",
+			"\n",
+			"BuildCmds= \\\n",
+			"\tnmake -nologo -f \"${PathBaseDsp}.SUP.MAKE\"\\\n",
+			"  \"$ResrcTrgFullName\"\n"
+		);
+		my $Lang;
+		foreach $Lang (@LangList) {
+#			change again to avoid VC5 linking the resource
+			my $TmpLang=$Lang;
+			if ($TmpLang eq 'SC') {
+				$TmpLang.='.dummy';
+			}
+			$DspText.=join('',
+				"\n",
+				"\"$ResrcTrgFullName$TmpLang\" : \$(SOURCE) \"\$(INTDIR)\"\\\n",
+				" \"\$(OUTDIR)\"\n",
+				"   \$(BuildCmds)\n",
+			);
+		}
+		$DspText.=join('',
+			"# End Custom Build\n",
+			"\n"
+		);
+	}
+	$DspText.=join('',
+		"!ENDIF \n",
+		"\n",
+		"# End Source File\n"
+	);
+
+}
+
+sub VS2003ResrcBld() {
+
+}
+
+sub PMDoc {
+
+###### from PMDoc of VC6 
+	
+	if($PlatName eq "VS6") {
+		VS6Doc();
+	}
+	else
+	{
+		VS2003Doc();
+	}
+
+}
+
+sub VS6Doc() {
+
+	my $SrcPath=&main::SrcPath;
+
+	$DspText.=join('',
+		"# Begin Source File\n",
+		"\n",
+		"SOURCE=",$SrcPath,ucfirst lc &main::Doc,"\n",
+		"# PROP Exclude_From_Build 1\n",
+		"# End Source File\n"
+	);
+
+}
+sub VS2003Doc() {
+
+
+}
+
+sub PMAifBld {
+
+	&Generic_AifBld;
+
+	# Need to copy generic resource into emulated Z drive
+
+	my $AifRef=&main::AifRef;
+	my $TrgDir="";
+	if (&Generic_Definition("TRGDIR") ne "") {
+		$TrgDir="\\\$(TRGDIR)";
+	}
+
+	my @BldList=&main::BldList;
+	my $Bld;
+	foreach $Bld (@BldList) {
+		my $path="\$(EPOCTRG$Bld)$TrgDir";
+		&main::Output(
+			&Generic_Quote("$path\\$$AifRef{Trg}"), " : ",
+			&Generic_Quote("$$AifRef{GenericTrg}"), "\n",
+			"\t", &Generic_CopyAction(),
+			"\n"
+		);
+	}
+}
+
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+
+	if($PlatName eq "VS6") {
+		VS6StartSrc();
+	}
+	else
+	{
+		VS2003StartSrc();
+	}
+
+}
+
+sub VS6StartSrc() {
+
+	$DspText.=join('',
+		"# Begin Source File\n",
+		"\n",
+		"SOURCE=",&main::SrcPath,ucfirst lc &main::Src,"\n",
+		"# End Source File\n"
+	);
+
+}
+
+sub VS2003StartSrc(){
+	$VcprojText.=join('',
+		"\t\t\t<File\n",
+		"\t\t\t\tRelativePath=\"",&main::Path_MakeRltToBase(&main::MakeFilePath, &main::SrcPath),ucfirst lc &main::Src,"\">\n",
+		"\t\t\t</File>\n"
+	);
+
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;	
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	$BaseSrc =~ s/\.UID/_UID_/i if ($BaseSrc eq $uidfile);
+
+	return if (@DepList == 0);
+
+	foreach (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc.o"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	# Generate user header list for this src, merge with list for all sources
+	foreach (&main::DepList) {
+		$PrjHdrs{$_}='unusedval';
+	}
+
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	$BaseSrc =~ s/\.UID/_UID_/i if ($BaseSrc eq $uidfile);
+
+	return if (@DepList == 0);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " :",
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcBld {
+	my $BaseSrc=&main::BaseSrc;
+	$BaseSrc =~ s/\.UID/_UID_/i if ($BaseSrc eq $uidfile);
+	my $Bld=&main::Bld;
+	my $Plat=&main::Plat;
+	my $Src=&main::Src;
+	my $SrcPath=&main::SrcPath;
+	my $Ext=&main::ExtSrc;
+	my $Cia = (lc($Ext) eq '.cia') ? 1 : 0;
+
+	if ($Cia) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.o"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\techo $Src\n",
+			"\t\$(CW$Bld) -lang c++ -o \"\$\@\" -c \"$SrcPath$Src\"\n",
+			"\n",
+#			assembler listing target - uses implicit rule to do disassembly
+			"LISTING$Bld$BaseSrc\_ : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc\_.$Plat.lst"),
+			"\n"
+		);
+	} else {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\techo $Src\n",
+			"\t\$(CW$Bld) -o \"\$\@\" -c \"$SrcPath$Src\"\n",
+			"\n",
+#			assembler listing target - uses implicit rule to do disassembly
+			"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc.$Plat.lst"),
+			"\n"
+		);
+	}
+
+
+
+}
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+
+	my $show_options = "source";
+	$show_options = "source,unmangled,comments" if ($MWLD eq "mwldsym2.exe");
+	
+	&main::Output(
+		"\n",
+		"# Implicit rule for generating .lis files\n",
+		"\n",
+		".SUFFIXES : .lis .o\n",
+		"\n",
+		".o.lis:\n",
+		"\t\$(COMPILER_PATH)$MWLD -msgstyle gcc -S -show $show_options \$< -o \$\@\n",
+		"\n",
+		"\n"
+	);
+
+	if ($Win32Resrc) {
+		my @BldList=&main::BldList;
+		my @DepList=&main::Deps_GenDependsL($Win32Resrc);
+
+		&main::Output(
+			"# Win32 Resource $Win32Resrc\n",
+			"\n",
+			"DEPEND="
+		);
+		foreach (@DepList) {
+			&main::Output(
+				" \\\n\t", &Generic_Quote($_)
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	
+		my $Bld;
+		my $resbase=&main::Path_Split('Base',$Win32Resrc);
+		my $respath=&main::Path_Chop(&main::Path_Split('Path',$Win32Resrc));
+		foreach $Bld (@BldList) {
+			&main::Output(
+				&Generic_Quote("\$(EPOCBLD$Bld)\\$resbase.res"), " : ",
+				&Generic_Quote($Win32Resrc), " \$(DEPEND)\n",
+				"\tmwwinrc -o \$\@ \"$Win32Resrc\"\n",
+				"\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+
+	my $BaseDsp=&main::BaseMak;
+	my $PathBaseDsp=&main::MakeFilePath.$BaseDsp;
+
+	&main::Path_DelFiles("$PathBaseDsp.MAK","$PathBaseDsp.MDP","$PathBaseDsp.NCB","$PathBaseDsp.OPT","$PathBaseDsp.PLG","$PathBaseDsp.SLN","$PathBaseDsp.VCPROJ","$PathBaseDsp.DSW","$PathBaseDsp.DSP","${PathBaseDsp}_UREL.MAK","${PathBaseDsp}_UDEB.MAK");
+
+	if($PlatName eq "VS6")
+	{
+		VS6EndSrcList();
+	}
+	elsif($PlatName eq "VS2003")
+	{
+		VS2003EndSrcList();
+	}
+}
+
+sub VS6EndSrcList() {
+
+	my $BaseDsp=&main::BaseMak;    
+	my $PathBaseDsp=&main::MakeFilePath.$BaseDsp;  
+	my $BaseTrg=&main::BaseTrg;
+
+	$DspText.=join('',
+		"# End Group\n",
+		"# Begin Group \"Resource Files\"\n",
+		"\n",
+		"# PROP Default_Filter \"ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe\"\n"
+	);
+	if ($Win32Resrc) {
+		$DspText.=join('',
+			"# Begin Source File\n",
+			"\n",
+			"SOURCE=",ucfirst lc $Win32Resrc,"\n",
+			"# End Source File\n"
+		);
+		# Generate user header list for this src, merge with list for all sources
+		foreach (&main::Deps_GenDependsL($Win32Resrc)) {
+			$PrjHdrs{$_}='unusedval';
+		}
+	}
+	$DspText.=join('',
+		"# End Group\n"
+	);
+
+	# Use the global %PrjHdrs Hash to produce user header listing
+	$DspText.=join('',
+		"# Begin Group \"Header Files\"\n",
+		"\n",
+		"# PROP Default_Filter \"h;hpp;hxx;hm;inl;fi;fd\"\n"
+	);
+	foreach (keys %PrjHdrs) {
+		$DspText.=join('',
+			"# Begin Source File\n",
+			"\n",
+			"SOURCE=",&main::Path_Split('Path',$_),ucfirst lc &main::Path_Split('File',$_),"\n",
+			"# End Source File\n"
+		);
+	}
+
+
+	$DspText.=join('',
+		"# End Group\n",
+		"# Begin Group \"Make Files\"\n",
+		"\n",
+		"# PROP Default_Filter \"mak;mk\"\n"
+	);
+	$DspText.=join('',
+		"# Begin Source File\n",
+		"\n",
+		"SOURCE=",ucfirst lc $PathBaseDsp,".mak\n",
+		"# End Source File\n"
+	);
+
+	$DspText.=join('',
+		"# End Group\n",
+		"# End Target\n",
+		"# End Project\n",
+	);
+
+
+	&main::CreateExtraFile("$PathBaseDsp.dsp",$DspText);
+
+	my $RelMakText=join('',
+		"\n",
+		"BLD: UREL\n",
+		"REBUILD : CLEANUREL UREL\n",
+		"\n",
+		"include ",&main::BaseMak,".mak\n",
+		"\n"
+	);
+
+	&main::CreateExtraFile("${PathBaseDsp}_UREL.mak",$RelMakText);
+
+
+	my $DebMakText=join('',
+		"\n",
+		"BLD: UDEB\n",
+		"REBUILD : CLEANUDEB UDEB\n",
+		"\n",
+		"include ",&main::BaseMak,".mak\n",
+		"\n"
+	);
+
+	&main::CreateExtraFile("${PathBaseDsp}_UDEB.mak",$DebMakText);
+
+	my $DswText=join(
+		"\n",
+		"Microsoft Developer Studio Workspace File, Format Version 6.00",
+		'# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!',
+		'',
+		'#'x79,
+		'',
+		"Project: \"$BaseDsp\"=.\\$BaseDsp.dsp - Package Owner=<4>",
+		'',
+		'Package=<5>',
+		'{{{',
+		'}}}',
+		'',
+		'Package=<4>',
+		'{{{',
+		'}}}',
+		'',
+		'#'x79,
+		'',
+		'Global:',
+		'',
+		'Package=<5>',
+		'{{{',
+		'}}}',
+		'',
+		'Package=<3>',
+		'{{{',
+		'}}}',
+		'',
+		'#'x79,
+		''
+	);
+
+	&main::CreateExtraFile("$PathBaseDsp.DSW",$DswText);
+
+
+}
+
+sub VS2003EndSrcList() {
+
+	my $BaseDsp=&main::BaseMak;    
+	my $PathBaseDsp=&main::MakeFilePath.$BaseDsp;  
+
+# Use the global %PrjHdrs Hash to produce user header listing
+	$VcprojText.=join('',
+		"\t\t</Filter>\n",
+		"\t\t<Filter\n",
+		"\t\t\tName=\"Header Files\"\n",
+		"\t\t\tFilter=\"h;hpp;hxx;hm;inl;fi;fd\"\n",
+		"\t\t\tUniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\">\n"
+	);
+
+	foreach (keys %PrjHdrs) {
+		$VcprojText.=join('',
+			"\t\t\t<File\n",
+			"\t\t\t\tRelativePath=\"",&main::Path_MakeRltToBase(&main::MakeFilePath, &main::Path_Split('Path',$_)) 
+							, &main::Path_Split('File',$_),"\">","\n",
+			"\t\t\t</File>\n"
+		);
+	}	
+	$VcprojText.=join('',
+		"\t\t</Filter>\n"
+	);
+
+	$VcprojText.=join('',
+		"\t\t<Filter\n",
+		"\t\t\tName=\"Resource Files\"\n",
+		"\t\t\tFilter=\"ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe\"\n",
+		"\t\t\tUniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\">\n"
+	);
+
+	if ($Win32Resrc) {
+		$VcprojText.=join('',
+			"\t\t\t<File\n",
+			"\t\t\t\tRelativePath=\"", &main::Path_MakeRltToBase(&main::MakeFilePath, $Win32Resrc),"\">\n",
+			"\t\t\t</File>\n"
+		);
+		# Generate user header list for this src, merge with list for all sources
+		foreach (&main::Deps_GenDependsL($Win32Resrc)) {
+			$PrjHdrs{$_}='unusedval';
+		}
+	}
+
+	$VcprojText.=join('',
+		"\t\t</Filter>\n",
+		"\t\t<Filter\n",
+		"\t\t\tName=\"Make Files\"\n",
+		"\t\t\tFilter=\"Mak;mk\">\n"
+	);
+
+	$VcprojText.=join('',
+		"\t\t\t<File\n",
+		"\t\t\t\tRelativePath=\"",&main::Path_MakeRltToBase(&main::MakeFilePath, $PathBaseDsp),".mak\">\n",
+		"\t\t\t</File>\n"
+	);
+
+	$VcprojText.=join('',
+		"\t\t</Filter>\n",
+		"\t</Files>\n",
+		"\t<Globals>\n",
+		"\t</Globals>\n",
+		"</VisualStudioProject>\n"
+	);
+
+	&main::CreateExtraFile("$PathBaseDsp.vcproj",$VcprojText);
+
+
+	my $SlnText=join(
+		"\n",
+		"Microsoft Visual Studio Solution File, Format Version 8.00",
+		"Project\(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\"\) = \"$BaseDsp\", \"$BaseDsp.vcproj\", \"{$guid}\"",
+		"\tProjectSection(ProjectDependencies) = postProject",
+		"\tEndProjectSection",
+		'EndProject',
+		'Global',
+		"\tGlobalSection(SolutionConfiguration) = preSolution",
+		"\t\tDebug = Debug",
+		"\t\tRelease = Release",
+		"\tEndGlobalSection",
+		"\tGlobalSection(ProjectConfiguration) = postSolution",
+		"\t\t{$guid}.Debug.ActiveCfg = Debug|Win32",
+		"\t\t{$guid}.Debug.Build.0 = Debug|Win32",
+		"\t\t{$guid}.Release.ActiveCfg = Release|Win32",
+		"\t\t{$guid}.Release.Build.0 = Release|Win32",
+		"\tEndGlobalSection",
+		"\tGlobalSection(ExtensibilityGlobals) = postSolution",
+		"\tEndGlobalSection",
+		"\tGlobalSection(ExtensibilityAddIns) = postSolution",
+		"\tEndGlobalSection",
+		'EndGlobal',
+		''
+	);
+
+	&main::CreateExtraFile("$PathBaseDsp.Sln",$SlnText);
+
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_win.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1265 @@
+# 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:
+#
+
+
+package Cl_win;
+
+# declare variables global for module
+my @Win32LibList=();
+my $Win32StdHeaders;
+my $BaseAddressFlag;
+my $Win32Resrc;
+
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+
+	PMCheckPlatformL
+
+	PMPlatProcessMmp
+	
+	PMStartBldList
+		PMBld
+	PMStartSrcList
+		PMBitMapBld
+		PMResrcBld
+		PMAifBld
+		PMStartSrc
+		PMSrcDepend
+			PMSrcBldDepend
+			PMEndSrcBld
+		PMEndSrc
+	PMEndSrcList
+);
+
+use Winutl;
+use cl_generic;
+use Pathutl;
+
+sub PMHelp_Mmp {
+	&Winutl_Help_Mmp;
+}
+
+sub SysTrg () {
+	return 1 if &main::SystemTrg;
+	my $ExportLibrary=&main::ExportLibrary;
+	return 1 if ($ExportLibrary =~ /EKERN/i);
+	my $Trg=&main::Trg;
+	return 1 if ($Trg =~ /KSRT/i);
+	return 0;
+}
+
+sub PMCheckPlatformL {
+	if ((&main::Plat eq 'TOOLS') and (&main::BasicTrgType ne 'EXE') and (&main::BasicTrgType ne 'LIB')) {
+		die "Can't specify anything but EXE or LIB targettypes for this platform\n";
+	}
+}
+
+sub PMPlatProcessMmp (@) {
+	&Winutl_DoMmp(\@_, $ENV{INCLUDE});
+	$BaseAddressFlag=&Winutl_BaseAddress;
+	$BaseAddressFlag=~s/^(.+$)$/ \/base:\"$1\"/o;
+	@Win32LibList=&Winutl_Win32LibList;
+	my $MSVCVer = &Winutl_MSVCVer;
+	push @Win32LibList, "kernel32.lib";
+	$Win32Resrc=&Winutl_Win32Resrc;
+	$Win32StdHeaders=&Winutl_Win32StdHeaders;
+}
+
+sub PMStartBldList($) {
+	my ($makecmd) = @_;
+	die "Cannot generate $makecmd makefiles\n" if ($makecmd ne "nmake");
+	my $AifStructRef=&main::AifStructRef;
+	my $BaseTrg=&main::BaseTrg;
+	my $BitMapStructRef=&main::BitMapStructRef;
+	my @BldList=&main::BldList;
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $DefFile=&main::DefFile;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $LibPath=&main::LibPath;
+
+	my $MSVCVer = &Winutl_MSVCVer;
+
+	my @MacroList=&main::MacroList();
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__";
+
+	my $VariantFile=&main::VariantFile();
+	my $Plat=&main::Plat;
+	my $ResourceStructRef=&main::ResourceStructRef;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my $defaultWarningLevel="/W4";
+	my $CompilerOption=&main::CompilerOption("MSVC");
+	my $LinkAs=&main::LinkAs;
+
+	&Generic_Header(0,$makecmd);	# define standard things using absolute paths
+
+	my $TrgDir="";
+	if (&Generic_Definition("TRGDIR") ne "") {
+		$TrgDir="\$(TRGDIR)\\";
+	}
+	if (&main::Plat eq "WINC") {	# target path ignored under WINC
+		$TrgDir="";
+	}
+	&main::Output(
+		"INCDIR  ="
+	);
+	if($VariantFile){
+        my $VariantFileFileName  = Path_Split('FILE',$VariantFile);
+        &main::Output(
+              " /FI \"$VariantFileFileName\"",
+              );
+
+	}
+
+	foreach (@ChopUserIncPaths,@ChopSysIncPaths) {
+		&main::Output(
+			" /I \"$_\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	my $MSVCVer = &Winutl_MSVCVer;
+
+	&main::Output(
+		"CLFLAGS =",
+			" /nologo",			# suppress "sign-on" banner message
+			" /Zp4",			# packs structures on 4 byte boundaries
+			" /GF"				# Pools strings and places them in read-only memory 
+		);	
+
+	if ($MSVCVer >= 7) {
+		&main::Output(
+			" /wd4996",			# C4996: 'xxxx' was declared deprecated
+			" /wd4571"			# C4571: catch(...) blocks compiled with /EHs do not catch or re-throw Structured Exceptions
+		);	
+
+		if (&main::Plat ne 'TOOLS') {
+			&main::Output(
+				" /EHsc",			# Exceptions on
+				" /GR"				# RTTI on
+			);
+			if ($MSVCVer >= 8) {
+				&main::Output(
+					" /GS-"			# Buffer checking off
+				);
+			}
+		} else {
+			&main::Output(
+				" /EHsc",			# Exceptions on
+				" /GR",				# RTTI on
+				" /GS"				# Buffer checking on
+			);
+		}
+	} else {
+		if (&main::Plat ne 'TOOLS') {
+			&main::Output(
+				" /GX",				# Exceptions on
+				" /GR"				# RTTI on
+			);
+		}
+	}
+
+	if ($MSVCVer >= 8) {
+		&main::Output(
+			" /Zc:wchar_t-"				# Don't make wchar_t a built-in; breaks mangled names
+		);		
+	}
+
+	if (&main::Plat ne 'TOOLS') {
+		unless ($Win32StdHeaders) {
+			&main::Output(
+				" /X"			# ignore standard include directories
+			);
+		}
+	}
+	if ($CompilerOption !~ /\/W\d/) {
+		# Supply default warning level unless /Wn already specified via OPTION MSVC
+		&main::Output(
+			" $defaultWarningLevel"
+		);
+	}
+	&main::Output(
+		" $CompilerOption",		# user-supplied compiler options
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CLDEFS  ="
+	);
+	foreach(@MacroList) {
+		&main::Output(
+			" /D \"$_\""
+		);
+	}
+	if (($BasicTrgType=~/^LIB$/o) and (&main::Plat eq 'TOOLS')) {
+		&main::Output(
+			" /D _MT"
+		); 
+	}
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"CL$_ = cl.exe"
+		);
+		if ($BasicTrgType=~/^EXE$/o) {
+			&main::Output(
+				' /MT'			# Creates a multi-threaded executable file, using libcmt.lib
+			);
+			if (/DEB$/o) {
+				&main::Output(
+					'd'				# i.e. /MTd or /MLd, debug executable using debug version of LIB
+				);
+			}
+		}
+		elsif (($BasicTrgType=~/^(DLL|LIB)$/o) and (&main::Plat ne 'TOOLS')){
+			&main::Output(
+				' /MD'			# Creates a multithreaded DLL, using MSVCRT.LIB
+			);
+			if (/DEB$/o) {
+				&main::Output(
+					'd'				# i.e. /MDd, debug executable using debug version of LIB
+				);
+			}
+		}
+		if (/DEB$/o) {
+			&main::Output(
+				' /Zi',			# Generates complete debugging information
+				' /Od'			# Disables optimization
+			);
+#			euser change to apply inlining on the _NAKED functions
+			if ($BaseTrg=~/^EUSER$/oi) {
+				&main::Output(
+					' /Ob1'		# Specific control of expension of inline functions
+				);
+			}
+		}
+		elsif (/REL$/o) {
+			&main::Output(
+				' /O1'				# Creates small code
+			);
+			if ($MSVCVer >= 8) {
+				&main::Output(
+					' /fp:strict'		# Improves floating-point consistency
+				);
+			} else {
+				&main::Output(
+					' /Op'				# Improves floating-point consistency
+				);
+			}
+		}
+		&main::Output(
+			' $(CLFLAGS)'
+		);
+		if (/DEB$/o) {
+			&main::Output(
+				" /Fd\"\$(EPOCTRG$_)\\$TrgDir$BaseTrg.pdb\""
+			);
+		}
+		foreach (&main::MacroList($_)) {
+			&main::Output(
+				" /D $_"
+			);
+		}
+		&main::Output(
+			" \$(CLDEFS) \$(INCDIR)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+		if ($BasicTrgType !~ /^IMPLIB$/io) {
+			&main::Output (
+				" \\\n",
+				"\t\"\$(EPOCTRG$_)\\$TrgDir$Trg\""
+			);
+			unless (/REL$/o) {
+				&main::Output(
+					" \\\n",
+					"\t\"\$(EPOCTRG$_)\\$BaseTrg.bsc\""
+				);
+			}
+			if (&Winutl_CopyForStaticLinkage) {
+				&main::Output(
+					" \\\n",
+					"\t\"\$(EPOCTRG$_)\\$Trg\""
+				);
+			}
+		}
+
+#		lib has to come after the main target so that a .DEF file will be generated if the project is not frozen
+		if ($DefFile and not &main::ExportUnfrozen) {
+			&main::Output(
+				" \\\n",
+				"\tLIBRARY\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+
+	foreach (@BldList) {
+		my $makework="MAKEWORK$_";
+		&main::Output(
+			"\n",
+			"RESOURCE$_ : $makework"
+		);
+
+		my $BitMapRef;
+		foreach $BitMapRef (@$BitMapStructRef) {
+			my $file="\$(EPOCTRG$_)\\$$BitMapRef{TrgPath}$$BitMapRef{Trg}";
+			&Generic_MakeWorkFile($makework,$file);
+			&main::Output(
+				" \\\n",
+				"\t\"$file\""
+			);
+		}
+		undef $BitMapRef;
+
+		my $ResourceRef;
+		foreach $ResourceRef (@$ResourceStructRef) {
+			my $file="\$(EPOCTRG$_)\\$$ResourceRef{Trg}";
+			&Generic_MakeWorkFile($makework,$file);
+			&main::Output(	# must come before main target because source for target will depend on the
+			" \\\n",		# *.rsg file in $EPOCIncPath
+			"\t", &Generic_Quote("$file")
+			);
+		}
+		undef $ResourceRef;
+
+		my $AifRef;
+		foreach $AifRef (@$AifStructRef) {
+			my $file="\$(EPOCTRG$_)\\$TrgDir$$AifRef{Trg}";
+			&Generic_MakeWorkFile($makework,$file);
+			&main::Output(
+				" \\\n",
+				"\t\"$file\""
+			);
+		}
+		undef $AifRef;
+
+		&main::Output(
+			"\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n",
+	);
+
+	&main::Output(
+		"LIBRARY : MAKEWORKLIBRARY"
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+#		code to ensure that the static libraries for all builds are built at the library stage
+		foreach (@BldList) {
+			&main::Output(
+				" $_"
+			);
+		}
+	}
+	elsif ($DefFile and !$NoExportLibrary) {
+		unless (&main::ExportUnfrozen) {
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				&main::Output(
+					" \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"\n"
+				);
+			} else {
+				&main::Output(
+					"\n",
+					"\t\@echo WARNING: Not attempting to create \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\".\n",
+					"\t\@echo When exports are frozen in \"$DefFile\", regenerate Makefile.\n"
+				);
+			}
+		} else {
+			&main::Output(
+				"\n",
+				"\t\@echo Not attempting to create \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"\n",
+				"\t\@echo from frozen .DEF file, since EXPORTUNFROZEN specified.\n"
+			);
+		}
+		my $LibLinkAs = ($BasicTrgType=~/^IMPLIB$/io) ? $LinkAs : $Trg;
+		&main::Output(
+			"\n",
+			"\n",
+			"# REAL TARGET - LIBRARY\n",
+			"\n",
+			"\"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\" : \"$DefFile\"\n",
+			"\tperl -S prepdef.pl \"$DefFile\" \"\$(EPOCBLD)\\$ExportLibrary.prep.def\"\n",
+			"\tlib.exe /nologo /machine:i386 /nodefaultlib /name:\"$LibLinkAs\"    /def:\"\$(EPOCBLD)\\$ExportLibrary.prep.def\" /out:\"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"\n",
+			"\tdel \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.exp\"\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n",
+		"FREEZE :\n"
+	);
+	if ($DefFile and $BasicTrgType !~ /^IMPLIB$/io) {
+		&main::Output(
+#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			"\tperl -S efreeze.pl \$(EFREEZE_ALLOW_REMOVE) \"$DefFile\" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+	if ($DefFile and !$NoExportLibrary) {
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"\n"
+		);
+	}
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}UDEB");
+
+	&Generic_Releaseables;
+}
+
+sub PMBld {
+
+	my $AifStructRef=&main::AifStructRef;
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $BitMapStructRef=&main::BitMapStructRef;
+	my $Bld=&main::Bld;
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $DefFile=&main::DefFile;
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $FirstLib=&main::FirstLib;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @LibList;
+	my $RelPath=&main::RelPath;
+	my $ResourceStructRef=&main::ResourceStructRef;
+	my @StatLibList=&main::StatLibList;
+	my $Trg=&main::Trg;
+	my $TrgPath=&main::TrgPath;
+	my $TrgType=&main::TrgType;
+	my $MSVCVer = &Winutl_MSVCVer;
+	my $newlib = main::NewLib(); # Check if newlib has been set in the MMP file.
+
+
+    my $NewLib = 'scppnwdl.lib'; # This is where operator new and operator delete
+                                 # are defined for user side targets.
+
+    my $NewKernLib = 'scppnwdl_kern.lib'; # This is where operator new and operator delete
+                                 	  # are defined for kernel side targets.
+
+
+
+	my $WarningLevel='/WARN:3';
+	if (&main::Plat() eq 'TOOLS') {
+		$WarningLevel='/WARN:1';    # avoid LNK4005 warnings about unused libraries
+	}
+
+	if ($Bld =~ /DEB/) {
+		@LibList=&main::DebugLibList;
+	} else {
+		@LibList=&main::LibList;
+	}
+
+	my $BLDTRGPATH = "\$(EPOCTRG$Bld)\\";
+	my $BLDDATAPATH = "\$(EPOCTRG$Bld)\\";
+	if (&main::Plat ne "WINC") {	# target paths ignored under WINC
+		if (&Generic_Definition("TRGDIR") ne "") {
+			$BLDTRGPATH .= "\$(TRGDIR)\\";	    # handles TARGETPATH
+		}
+		$BLDDATAPATH .= "\$(DATADIR)\\";
+	}
+
+	my $Entry="";
+	my $EntrySymbol='';
+	my $Include="";
+	if ($BasicTrgType=~/^DLL$/o) {
+		$Entry="/noentry";
+		$Include="/include:\"__E32Dll\"";
+		$EntrySymbol='_E32Dll';
+	}
+	elsif ($TrgType=~/^EXEXP$/o) {
+		$Entry="/noentry";
+		$Include="/include:\"__E32Startup\"";
+		$EntrySymbol='_E32Startup';
+	}
+	elsif ($BasicTrgType=~/^EXE$/o) {
+		unless (&main::Plat eq 'TOOLS') {
+			$Entry="/entry:\"_E32Bootstrap\"";
+			$Include="/include:\"__E32Startup\"";
+		}
+	}
+	my $AbsentSubst = '';
+	if ($EntrySymbol) {
+		$AbsentSubst = " -absent $EntrySymbol";
+	}
+
+	# REAL TARGETS
+	#-------------
+	&main::Output(
+		"# REAL TARGET - BUILD VARIANT $Bld\n",
+		"\n"
+	);
+
+#	releasables
+	my @releaseables;
+
+	unless (&main::Plat() eq 'TOOLS') {
+		if ($BasicTrgType !~ /^IMPLIB$/io) {
+			push @releaseables, "$BLDTRGPATH$Trg";
+			if (&Winutl_CopyForStaticLinkage) {
+				push @releaseables, "\$(EPOCTRG$Bld)\\$Trg";
+			}
+			my $BitMapRef;
+			foreach $BitMapRef (@$BitMapStructRef) {
+				push @releaseables, "\$(EPOCTRG$Bld)\\$$BitMapRef{TrgPath}$$BitMapRef{Trg}";
+			}
+			my $ResourceRef;
+			foreach $ResourceRef (@$ResourceStructRef) {
+				push @releaseables, "\$(EPOCTRG$Bld)\\$$ResourceRef{Trg}";
+			}
+			my $AifRef;
+			foreach $AifRef (@$AifStructRef) {
+				push @releaseables, "$BLDTRGPATH$$AifRef{Trg}";
+			}
+			if ($Bld=~/DEB$/o) {
+				push @releaseables,"$BLDTRGPATH$BaseTrg.PDB";
+			}
+		}
+		if (-e $DefFile and !$NoExportLibrary) { # effectively "if project frozen ..."
+			push @releaseables, "\$(EPOCLIB$Bld)\\$ExportLibrary.lib";
+		}
+	}
+	else {
+		my $toolspath=&main::EPOCToolsPath();
+		push @releaseables, "$toolspath$Trg";
+	}
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : CLEANILK$Bld\n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC CLEANILK$Bld\n",
+		"\n",
+		"CLEANILK$Bld :\n",
+		"\t-\$(ERASE) \"$BLDTRGPATH$BaseTrg.ILK\"\n",
+		"\n"
+	);
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+
+	&Generic_MakeWorkDir("MAKEWORK$Bld", &main::BldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld", $BLDTRGPATH);
+
+	return if ($BasicTrgType =~ /^IMPLIB$/io);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+   		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+   		);
+   	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	if ($Bld=~/DEB$/o) {
+		&main::Output(
+			"BSC32_SBRS="
+		);
+		foreach (@SrcList) {
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+			$BaseSrc.='_' if (lc($Ext) eq '.cia');
+			&main::Output(
+				" \\\n",
+				"\t\"\$(EPOCBLD$Bld)\\$BaseSrc.sbr\""
+			);
+   		}
+		&main::Output(
+			"\n",
+			"\n",
+		"\"\$(EPOCTRG$Bld)\\$BaseTrg.bsc\" : \$(BSC32_SBRS)\n",
+		"\tbscmake.exe \@<<\n",
+		"\t/nologo /o\$\@ \$(BSC32_SBRS)\n",
+		"<<\n",
+		"\n",
+		"\n"
+		);
+	}
+
+	&main::Output(
+		"LIBS="
+	);
+	foreach (@StatLibList) {
+		&main::Output(
+			" \\\n\t\"\$(EPOCSTATLINK$Bld)\\$_\""
+		);
+	}
+	foreach (@LibList) {
+		&main::Output(
+			" \\\n\t\"\$(EPOCLINK$Bld)\\$_\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LINK_OBJS="
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+   		&main::Output(
+			" \\\n",
+			"\t\"\$(EPOCBLD$Bld)\\$BaseSrc.obj\""
+   		);
+   	}
+	if ($Win32Resrc) {
+		&main::Output(
+			" \\\n",
+			"\t\"\$(EPOCBLD$Bld)\\",&main::Path_Split('Base',$Win32Resrc),".res\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::OutFormat(
+			"STAGE1_LINK_FLAGS="
+		);
+		&main::OutFormat(
+			"\"\$(EPOCSTATLINK$Bld)\\$FirstLib\""
+		);
+        
+        if (main::StdCppSupport())
+        {
+            unless ($newlib) {
+		    	if ( main::SystemTrg() ) {
+		    		# System targets are PDD, LDD, VAR, KEXT and KDLL.
+		    		&main::OutFormat(
+		    			"\"\$(EPOCSTATLINK$Bld)\\$NewKernLib\""
+		    		);
+		    	}
+		    	else {
+		    		&main::OutFormat(
+		    			"\"\$(EPOCSTATLINK$Bld)\\$NewLib\""
+		    		);
+		    	}
+		    }
+	    	else {
+	    		&main::OutFormat(
+				    "\"\$(EPOCSTATLINK$Bld)\\$newlib\""
+			    );
+		    }    
+        }
+		
+		foreach (@Win32LibList) {
+			&main::OutFormat(
+				' ',lc $_
+			);
+		}
+		&main::OutFormat(
+			" \$(LIBS) /nologo$BaseAddressFlag $Entry /subsystem:windows /dll"
+		);
+		if ($Bld=~/DEB$/o) {
+			&main::OutFormat(
+				' /debug'
+			);
+		}
+		&main::OutFormat(
+			" /incremental:no /machine:IX86"
+		);
+
+		if ($BasicTrgType=~/^EXE$/o) {
+			my $debug = '';
+			if ($Bld =~ /DEB$/o) {
+				$debug .= 'd';
+			}
+			&main::OutFormat(
+				" /nodefaultlib:libcmt$debug.lib"
+			);
+		}
+		&main::OutFormat(
+			" $Include /out:\"\$(EPOCBLD$Bld)\\$Trg\""
+		);
+
+		if ($MSVCVer < 7) {
+			&main::OutFormat(
+				" $WarningLevel"
+			);
+		}
+		&main::OutFormat(
+			" /implib:\"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"",
+			' /ignore:4089',		# LNK4089: all references to "dynamic-link library" discarded by /OPT:REF
+			' /ignore:4005'			# LNK4005: no objects used from XXX
+		);
+		if ($MSVCVer >= 7) {
+			&main::OutFormat(
+				' /ignore:4210'		# LNK4210: .CRT section exists; there may be unhandled static initializers or terminators
+			);
+		}
+
+
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	&main::OutFormat(
+		'LINK_FLAGS='
+	);
+	if ($BasicTrgType=~/^(EXE|DLL)$/o) {
+		unless (&main::Plat eq 'TOOLS') {
+			&main::OutFormat(
+				" \"\$(EPOCSTATLINK$Bld)\\$FirstLib\""
+			);
+
+            if (main::StdCppSupport())
+            {
+                unless ($newlib) {
+			    	if ( main::SystemTrg() ) {
+				    	# System targets are PDD, LDD, VAR, KEXT and KDLL.
+
+					    &main::OutFormat(
+						    "\"\$(EPOCSTATLINK$Bld)\\$NewKernLib\""
+					    );
+	    			}
+		    		else {
+			    		&main::OutFormat(
+				    		"\"\$(EPOCSTATLINK$Bld)\\$NewLib\""
+					    );
+    				}
+	    		}
+		    	else {
+			    	&main::OutFormat(
+				    	"\"\$(EPOCSTATLINK$Bld)\\$newlib\""
+    				);
+	    		}
+            }
+		}
+	}
+	foreach (@Win32LibList) {
+		&main::OutFormat(
+			' ',lc $_
+		);
+	}
+	&main::OutFormat(
+		' $(LIBS) /nologo'
+	);
+	if ($BasicTrgType=~/^(EXE|DLL)$/o) {
+		unless (&main::Plat eq 'TOOLS') {
+			&main::OutFormat(
+				" /fixed:no $BaseAddressFlag"
+			);
+		}
+	}
+	&main::OutFormat(
+		" $Entry"
+	);
+	if (&main::Plat=~/^(WINC|TOOLS)$/o && $BasicTrgType=~/^EXE$/o) {
+		&main::OutFormat(
+			' /subsystem:console'
+		);
+	}
+	else {
+		&main::OutFormat(
+			' /subsystem:windows'
+		);
+	}
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::OutFormat(
+			" /dll \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\""
+		);
+	}
+	if (&main::HeapSize) {
+		my %HeapSize=&main::HeapSize;
+		&main::OutFormat(
+			' /heap:',$HeapSize{Max},',',$HeapSize{Min}
+		);
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		if ($Bld=~/DEB$/o) {
+			&main::OutFormat(
+				' /debug'
+			);
+		}
+		elsif ($Bld=~/REL$/o) {
+			&main::OutFormat(
+				' /incremental:no'
+			);
+		}
+	}
+	&main::OutFormat(
+		' /machine:IX86',
+		' /ignore:4089',	# LNK4089: all references to "dynamic-link library" discarded by /OPT:REF
+		' /ignore:4005'		# LNK4005: no objects used from XXX
+	);
+	if ($MSVCVer >= 7) {
+		&main::OutFormat(
+			' /ignore:4210'		# LNK4210: .CRT section exists; there may be unhandled static initializers or terminators
+		);
+	}
+	if (&main::Plat eq 'TOOLS') {
+	    if (length(&main::LinkerOption("MSVC")) > 0)
+	    {
+		&main::OutFormat( " " . &main::LinkerOption("MSVC"));
+	    } else {
+		&main::OutFormat(
+			' /ignore:4098'	# LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
+		);
+	    }
+	}
+	else
+	{
+		if ($BasicTrgType=~/^EXE$/o) {
+			my $debug = '';
+			if ($Bld =~ /DEB$/o) {
+				$debug .= 'd';
+			}
+			&main::OutFormat(
+				" /nodefaultlib:libcmt$debug.lib"
+			);
+		}
+		&main::OutFormat(
+			" $Include"
+		);
+	} 
+	&main::OutFormat(
+		" /out:\"$BLDTRGPATH$Trg\""
+	);
+	if ($BasicTrgType=~/^(DLL)$/o) {
+		if ($MSVCVer < 7) {
+			&main::OutFormat(
+				" $WarningLevel"
+			);
+		}
+		&main::OutFormat(
+			" /implib:\"$BLDTRGPATH$ExportLibrary.lib\""
+		);
+	} elsif ($BasicTrgType=~/^(EXE)$/o) {
+		if ($MSVCVer < 7) {
+			&main::OutFormat(
+				" $WarningLevel"
+			);
+		}
+		&main::OutFormat(
+			" /implib:\"$BLDTRGPATH$ExportLibrary.exe.lib\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"\"$BLDTRGPATH$Trg\" : \$(LINK_OBJS)"
+	);
+	if (-e $DefFile) { # effectively "if project frozen ..."
+		&main::Output(
+			" \"$DefFile\""
+		);
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		unless (&main::Plat eq 'TOOLS') {
+			&main::Output(
+				" \"\$(EPOCSTATLINK$Bld)\\$FirstLib\""
+			);
+			
+			if (main::StdCppSupport())
+			{
+			    unless ($newlib) {
+    				if ( main::SystemTrg() ) {
+	    				# System targets are PDD, LDD, VAR, KEXT and KDLL.
+    
+	    				&main::Output(
+		    				"\"\$(EPOCSTATLINK$Bld)\\$NewKernLib\""
+			    		);
+				    }
+    				else {
+	    				&main::Output(
+		    				"\"\$(EPOCSTATLINK$Bld)\\$NewLib\""
+			    		);
+				    }
+    			}
+	    		else {
+		    		&main::Output(
+			    		"\"\$(EPOCSTATLINK$Bld)\\$newlib\""
+				    );
+    			}		    
+			}
+		}
+	}
+	&main::Output(
+		" \$(LIBS)\n"
+	);
+
+
+#	Link by name first time round for dlls
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			"\tlink.exe \@<<\n",
+			"\t\t\$(STAGE1_LINK_FLAGS) \$(LINK_OBJS)\n",
+			"<<\n",
+			"\tdel \"\$(EPOCBLD$Bld)\\$Trg\"\n",
+			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\"\n"
+		);
+
+#		Generate an export info file
+		&main::Output(
+			"\tdumpbin /exports /out:\"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\" \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n",
+			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+		);
+
+#		call makedef to reorder the export information
+		&main::Output(
+#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			"\tperl -S makedef.pl $AbsentSubst -Inffile \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\""
+		);
+		if (SysTrg()) {
+    			&main::Output( "\t\t-SystemTargetType \\\n" );
+    		}
+		if (-e $DefFile) { # effectively "if project frozen ..."
+			&main::Output(
+				" -Frzfile \"$DefFile\""
+			);
+		}
+		# freeze ordinals, a maximum of 2, for polymorphic dlls
+		my $Ordinal;
+		my $Num=1;
+		foreach $Ordinal (&main::Exports) {
+#			replace "$" with "$$" so that NMAKE doesn't think there's a macro in the function name
+			$Ordinal=~s-\$-\$\$-go;
+			&main::Output(
+				" -$Num $Ordinal"
+			);
+			$Num++;
+		}
+		&main::Output(
+			" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n",
+			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\"\n"
+		);
+
+		# create the export object from the .DEF file
+		&main::Output(
+			"\tlib.exe  /nologo /machine:i386 /nodefaultlib /name:\"$Trg\" /def:\"\$(EPOCBLD)\\$ExportLibrary.def\" /out:\"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+		);
+		if (&main::ExportUnfrozen) {
+			&main::Output(
+			"\tcopy \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\" \"\$(EPOCLIB)\\UDEB\\$ExportLibrary.lib\"\n"
+			);
+		}
+		&main::Output(
+			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+		);
+	}
+
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		&main::Output(
+			"\tlink.exe \@<<\n"
+		);
+	}
+	elsif ($BasicTrgType=~/^LIB$/o) {
+		&main::Output(
+			"\tlib.exe \@<<\n"
+		);
+	}
+	&main::Output(
+		"\t\t\$(LINK_FLAGS) \$(LINK_OBJS)\n",
+		"<<\n"
+	);
+
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\"\n"
+		);
+	}
+
+	if (&main::Plat eq 'TOOLS') {
+		&main::Output(
+			"\tcopy \"$BLDTRGPATH$Trg\" \"",&main::EPOCToolsPath,"$Trg\"\n"
+		);
+	}
+	if (&Winutl_CopyForStaticLinkage) {
+		&Generic_MakeWorkDir("MAKEWORK$Bld", "\$(EPOCTRG$Bld)");
+		&main::Output(
+			"\n",
+			"\"\$(EPOCTRG$Bld)\\$Trg\" : \"$BLDTRGPATH$Trg\"\n",
+			"\tcopy \$\? \$\@\n"
+		);
+	}
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+}
+
+sub PMBitMapBld {
+
+	&Generic_BitMapBld;
+
+	# Need to copy generic resource into emulated Z drive
+
+	my $BitMapRef=&main::BitMapRef;
+
+	my $ChopTrgPath="";
+	if ($$BitMapRef{TrgPath}) {
+		$ChopTrgPath.="\\$$BitMapRef{TrgPath}";
+		chop $ChopTrgPath;
+	}
+
+	my @BldList=&main::BldList;
+	my $Bld;
+	foreach $Bld (@BldList) {
+		my $path="\$(EPOCTRG$Bld)$ChopTrgPath";
+		&main::Output(
+			&Generic_Quote("$path\\$$BitMapRef{Trg}"), " : ", 
+			&Generic_Quote("$$BitMapRef{GenericTrg}"), "\n",
+			"\t", &Generic_CopyAction(),
+			"\n"
+		);
+	}
+}
+
+
+sub PMResrcBld {
+
+	&Generic_ResrcBld;
+
+	# Need to copy generic resource into emulated Z drive
+
+	my $ResourceRef=&main::ResourceRef;
+	my @BldList=&main::BldList;
+
+	foreach my $Bld (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCTRG$Bld)\\$$ResourceRef{Trg}"), " : ", 
+			&Generic_Quote("$$ResourceRef{GenericTrg}"), "\n",
+			"\t", &Generic_CopyAction(),
+			"\n"
+		);
+	}
+}
+
+sub PMAifBld {
+
+	&Generic_AifBld;
+
+	# Need to copy generic resource into emulated Z drive
+
+	my $AifRef=&main::AifRef;
+	my $TrgDir="";
+	if (&Generic_Definition("TRGDIR") ne "") {
+		$TrgDir="\\\$(TRGDIR)";
+	}
+	if (&main::Plat eq "WINC") {	# target path ignored under WINC
+		$TrgDir="";
+	}
+
+	my @BldList=&main::BldList;
+	my $Bld;
+	foreach $Bld (@BldList) {
+		my $file="\$(EPOCTRG$Bld)$TrgDir\\$$AifRef{Trg}";
+		&main::Output(
+			"\"$file\" : \"$$AifRef{GenericTrg}\"\n",
+			"\tperl -S ecopyfile.pl \$? \$\@\n",
+			"\n"
+		);
+	}
+}
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;	
+	my @DepList=&main::DepList;
+
+	&main::Output(
+		"DEPEND="
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t\"$_\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	foreach (@BldList) {
+		&main::Output(
+			"DEPEND$_=\$(DEPEND)\n",
+			"\n"
+		);
+	}
+	&main::Output(
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+
+	&main::Output(
+		"DEPEND$Bld="
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t\"$_\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcBld {
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+	my $Plat=&main::Plat;
+	my $Src=ucfirst lc &main::Src;
+	my $SrcPath=&main::SrcPath;
+	my $Ext=&main::ExtSrc;
+	my $Cia = (lc($Ext) eq '.cia') ? 1 : 0;
+
+	if ($Cia) {
+		&main::Output(
+			"\"\$(EPOCBLD$Bld)\\$BaseSrc\_.obj\" \"\$(EPOCBLD$Bld)\\$BaseSrc\_.sbr\" : \"$SrcPath$Src\" \$(DEPEND$Bld)\n",
+			"\t\$(CL$Bld) /TP /Fo\"\$(EPOCBLD$Bld)\\$BaseSrc\_.obj\" /FR\"\$(EPOCBLD$Bld)\\$BaseSrc\_.sbr\" /c \"$SrcPath$Src\"\n",
+			"\n",
+#		assembler listing target 
+			"LISTING$Bld$BaseSrc\_ : \"\$(EPOCBLD$Bld)\\$BaseSrc\_.lis\"\n",
+			"\tcopy \$? \"$SrcPath$BaseSrc\_.$Plat.lst\"\n",
+			"\n",
+			"\"\$(EPOCBLD$Bld)\\$BaseSrc\_.lis\": \"$SrcPath$Src\" \$(DEPEND$Bld)\n",
+			"\t\$(CL$Bld) /TP /Fa\"\$\@\" /Fo\"\$(EPOCBLD$Bld)\\$BaseSrc\_.obj\" /FR\"\$(EPOCBLD$Bld)\\$BaseSrc\_.sbr\" /c \"$SrcPath$Src\"\n",
+			"\n"
+		);
+	} else {
+		&main::Output(
+			"\"\$(EPOCBLD$Bld)\\$BaseSrc.obj\" \"\$(EPOCBLD$Bld)\\$BaseSrc.sbr\" : \"$SrcPath$Src\" \$(DEPEND$Bld)\n",
+			"\t\$(CL$Bld) /Fo\"\$(EPOCBLD$Bld)/\" /FR\"\$(EPOCBLD$Bld)\\$BaseSrc.sbr\" /c \"$SrcPath$Src\"\n",
+			"\n",
+#		assembler listing target 
+			"LISTING$Bld$BaseSrc : \"\$(EPOCBLD$Bld)\\$BaseSrc.lis\"\n",
+			"\tcopy \$? \"$SrcPath$BaseSrc.$Plat.lst\"\n",
+			"\n",
+			"\"\$(EPOCBLD$Bld)\\$BaseSrc.lis\": \"$SrcPath$Src\" \$(DEPEND$Bld)\n",
+			"\t\$(CL$Bld) /Fa\"\$\@\" /Fo\"\$(EPOCBLD$Bld)/\" /FR\"\$(EPOCBLD$Bld)\\$BaseSrc\_.sbr\" /c \"$SrcPath$Src\"\n",
+			"\n"
+		);
+	}
+}
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+	if ($Win32Resrc) {
+		my @BldList=&main::BldList;
+		my @DepList=&main::Deps_GenDependsL($Win32Resrc);
+
+		&main::Output(
+			"# Win32 Resource $Win32Resrc\n",
+			"\n",
+			"DEPEND="
+		);
+		foreach (@DepList) {
+			&main::Output(
+				" \\\n\t\"$_\""
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	
+		my $Bld;
+		foreach $Bld (@BldList) {
+			&main::Output(
+				"\"\$(EPOCBLD$Bld)\\",&main::Path_Split('Base',$Win32Resrc),".res\" : \"$Win32Resrc\" \$(DEPEND)\n",
+				"\trc /l 0x809 /fo\$\@ /i \"",&main::Path_Chop(&main::Path_Split('Path',$Win32Resrc)),"\" \"$Win32Resrc\"\n",
+				"\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_x86.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,963 @@
+# 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:
+#
+
+
+package Cl_x86;
+
+# declare variables global for module
+
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+
+	PMCheckPlatformL
+
+	PMPlatProcessMmp
+	
+	PMStartBldList
+		PMBld
+	PMStartSrcList
+		PMBitMapBld
+		PMResrcBld
+		PMAifBld
+		PMStartSrc
+		PMSrcDepend
+			PMSrcBldDepend
+			PMEndSrcBld
+		PMEndSrc
+	PMEndSrcList
+);
+
+use Winutl;
+use cl_generic;
+use Genutl;
+use Pathutl;
+
+use constant NOCOMPRESSIONMETHOD => 0;
+use constant INFLATECOMPRESSIONMETHOD => 1;
+use constant BYTEPAIRCOMPRESSIONMETHOD => 2;
+
+use constant NOTPAGED => 0;
+use constant UNPAGED => 1;
+use constant PAGED => 2;
+sub PMHelp_Mmp {
+	&Winutl_Help_Mmp;
+}
+
+sub PMCheckPlatformL {
+}
+
+sub PMPlatProcessMmp (@) {
+
+}
+
+sub PMStartBldList($) {
+	my ($makecmd) = @_;
+	die "Cannot generate $makecmd makefiles\n" if ($makecmd ne "nmake");
+	my $BaseTrg=&main::BaseTrg;
+	my @BldList=&main::BldList;
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $DefFile=&main::DefFile;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $LinkAs=&main::LinkAs;
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $LibPath=&main::LibPath;
+	my @MacroList=&main::MacroList();
+	my $VariantFile=&main::VariantFile();
+	my $Plat=&main::Plat;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my @UidList=&main::UidList;	
+	my $WarningLevel=&main::CompilerOption("MSVC");
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	my $PrimaryExportLibrary = $ExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+		$PrimaryExportLibrary = $ExtraExportLibrary;
+	}
+
+	&Generic_Header(0,$makecmd);	# define standard things using absolute paths
+
+#	set up LinkAs
+	$UidList[2]=~/^0x(.*)$/o;
+	if ($1 ne '00000000') { # have to make sure than series of noughts in brackets doesn't appear in name for null uids
+		$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+	}
+
+	my $TrgDir="";
+
+	&main::Output(
+		"INCDIR  ="
+	);
+	if($VariantFile){
+        my $VariantFileFileName  = Path_Split('FILE',$VariantFile);
+        &main::Output(
+              " /FI \"$VariantFileFileName\"",
+              );
+
+	}
+
+	foreach (@ChopUserIncPaths,@ChopSysIncPaths) {
+		&main::Output(
+			" /I \"$_\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CLFLAGS = /nologo /Zp4 $WarningLevel /Zm256"
+		);	
+	&main::Output(
+		" /X"
+		);
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"CLDEFS  ="
+	);
+	foreach(@MacroList) {
+		&main::Output(
+			" /D \"$_\""
+		);
+	}
+	&main::Output(
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"CL$_ = cl.exe"
+		);
+		if (/DEB$/o) {
+			&main::Output(
+				' /Od /Gs0x10000 /Gy /GR- /GX-'
+			);
+#			euser change to apply inlining on the _NAKED functions
+			if ($BaseTrg=~/^EUSER$/oi) {
+				&main::Output(
+					' /Ob1'
+				);
+			}
+		}
+		elsif (/REL$/o) {
+#			euser change to prevent minimum size optimisation from disrupting the maths functions
+				&main::Output(
+					' /O1 /Op /Gs0x10000 /Gy /GF /GR- /GX-'
+				);
+		}
+		&main::Output(
+			' $(CLFLAGS)'
+		);
+		foreach (&main::MacroList($_)) {
+			&main::Output(
+				" /D $_"
+			);
+		}
+		&main::Output(
+			" \$(CLDEFS) \$(INCDIR)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+		if ($BasicTrgType !~ /^IMPLIB$/io) {
+			&main::Output (
+				" \\\n",
+				"\t\"\$(EPOCTRG$_)\\$TrgDir$Trg\""
+			);
+		}
+
+#		lib has to come after the main target so that a .DEF file will be generated if the project is not frozen
+		if ($DefFile and not &main::ExportUnfrozen) {
+			&main::Output(
+				" \\\n",
+				"\tLIBRARY\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+
+	# Resource building is done entirely via cl_generic.pm
+	
+	foreach (@BldList) {
+		my $makework="MAKEWORK$_";
+		&main::Output(
+			"\n",
+			"RESOURCE$_ : $makework"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n",
+	);
+
+	&main::Output(
+		"LIBRARY : MAKEWORKLIBRARY"
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+#		code to ensure that the static libraries for all builds are built at the library stage
+		foreach (@BldList) {
+			&main::Output(
+				" $_"
+			);
+		}
+	}
+	elsif ($DefFile and !$NoExportLibrary) {
+		unless (&main::ExportUnfrozen) {
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				&main::Output(
+					" \"\$(EPOCLIB)\\UREL\\$PrimaryExportLibrary.LIB\"\n"
+				);
+			}
+			else {
+				&main::Output(
+					"\n",
+					"\t\@echo WARNING: Not attempting to create \"\$(EPOCLIB)\\UREL\\$PrimaryExportLibrary.LIB\".\n",
+					"\t\@echo When exports are frozen in \"$DefFile\", regenerate Makefile.\n"
+				);
+			}
+		}
+		else {
+			&main::Output(
+				"\n",
+				"\t\@echo Not attempting to create \"\$(EPOCLIB)UREL\\$PrimaryExportLibrary.LIB\"\n",
+				"\t\@echo from frozen .DEF file, since EXPORTUNFROZEN specified.\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n",
+			"# REAL TARGET - LIBRARY\n",
+			"\n",
+			"\"\$(EPOCLIB)\\UREL\\$ExportLibrary.LIB\" : \"$DefFile\"\n",
+			"\tperl -S prepdef.pl \"$DefFile\" \"\$(EPOCBLD)\\$ExportLibrary.prep.def\"\n",
+			"\tlib.exe /nologo /machine:i386 /nodefaultlib /subsystem:native /name:\"$LinkAs\" /def:\"\$(EPOCBLD)\\$ExportLibrary.prep.def\" /out:\"\$(EPOCLIB)\\UREL\\$ExportLibrary.LIB\"\n",
+			"\tdel \"\$(EPOCLIB)\\UREL\\$ExportLibrary.exp\"\n"
+		);
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\n",
+				&Generic_Quote("\$(EPOCLIB)\\UREL\\$ExtraExportLibrary.lib"), " : ",
+				&Generic_Quote("\$(EPOCLIB)\\UREL\\$ExportLibrary.lib"), "\n",
+				"\tcopy ", &Generic_Quote("\$(EPOCLIB)\\UREL\\$ExportLibrary.lib"), " \$@\n"
+			);
+		}
+	}
+	&main::Output(
+		"\n",
+		"\n",
+		"FREEZE :\n"
+	);
+	if ($DefFile and $BasicTrgType !~ /^IMPLIB$/io) {
+		&main::Output(
+#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			"\tperl -S efreeze.pl \$(EFREEZE_ALLOW_REMOVE) \"$DefFile\" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+	if ($DefFile and !$NoExportLibrary) {
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCLIB)\\UREL\\$ExportLibrary.LIB\"\n"
+		);
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\t-\$(ERASE) \"\$(EPOCLIB)\\UREL\\$ExtraExportLibrary.LIB\"\n"
+			);
+		}
+	}
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}UREL");
+
+	&Generic_Releaseables;
+}
+
+sub PMBld {
+
+	my @ASSPLibList=&main::ASSPLibList;
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my $DefFile=&main::DefFile;
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $FirstLib=&main::FirstLib;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @LibList;
+	my $LinkAs=&main::LinkAs;
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $LibPath=&main::LibPath;
+	my $RelPath=&main::RelPath;
+	my @StatLibList=&main::StatLibList;
+	my $Trg=&main::Trg;
+	my $TrgPath=&main::TrgPath;
+	my $TrgType=&main::TrgType;
+	my @UidList=&main::UidList;	
+	my $HasExports=0;
+	if (-e $DefFile or scalar(&main::Exports)!=0) {
+		$HasExports=1;
+	}
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+	}
+
+	my $WarningLevel='/WARN:3';
+	$WarningLevel='/WARN:1';    # avoid LNK4005 warnings about unused libraries
+
+	if ($Bld =~ /DEB/) {
+		@LibList=&main::DebugLibList;
+	} else {
+		@LibList=&main::LibList;
+	}
+
+#	set up $LinkAs
+	$UidList[2]=~/^0x(.*)$/o;
+	if ($1 ne '00000000') {	# have to make sure than series of noughts in brackets doesn't appear in name for null uids
+		$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+	}
+
+	my $BLDTRGPATH = "\$(EPOCTRG$Bld)\\";
+	my $BLDDATAPATH = "\$(EPOCTRG$Bld)\\";
+	my $Entry="";
+	my $Include="";
+	my $EntrySymbol='';
+	if ($BasicTrgType=~/^DLL$/o) {
+		$Entry="_E32Dll";
+		$Include="/include:\"__E32Dll\"";
+		$EntrySymbol='_E32Dll';
+	}
+	elsif ($BasicTrgType=~/^EXE$/o) {
+		$Entry="_E32Startup";
+		$Include="/include:\"__E32Startup\"";
+		$EntrySymbol='_E32Startup';
+	}
+	my $AbsentSubst = '';
+	if ($EntrySymbol) {
+		$AbsentSubst = " -absent $EntrySymbol";
+	}
+
+	# REAL TARGETS
+	#-------------
+	&main::Output(
+		"# REAL TARGET - BUILD VARIANT $Bld\n",
+		"\n"
+	);
+
+#	releasables
+	my @releasables;
+ 	push @releasables, "$RelPath$Trg" if ($BasicTrgType !~ /^IMPLIB$/io);
+   	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+ 		push @releasables, "$RelPath$Trg.MAP";
+	}
+	if (-e $DefFile and !$NoExportLibrary) { # effectively "if project frozen ..."
+ 		push @releasables, "$LibPath$ExportLibrary.LIB";
+ 		push @releasables, "$LibPath$ExtraExportLibrary.LIB" if ($ExtraExportLibrary);
+	}
+
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld\n",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\t-\$(ERASE) \"$BLDTRGPATH$BaseTrg.ILK\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+ 	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releasables);
+
+	&Generic_MakeWorkDir("MAKEWORK$Bld", &main::BldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld", $BLDTRGPATH);
+
+ 	return if ($BasicTrgType =~ /^IMPLIB$/io);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+   		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+   		);
+   	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LIBS="
+	);
+	foreach (@StatLibList) {
+		&main::Output(
+			" \\\n\t\"\$(EPOCSTATLINK$Bld)\\$_\""
+		);
+	}
+	foreach (@ASSPLibList) {
+		&main::Output(
+			" \\\n\t\"\$(EPOCASSPLINK$Bld)\\$_\""
+		);
+	}
+	foreach (@LibList) {
+		&main::Output(
+			" \\\n\t\"\$(EPOCLINK$Bld)\\$_\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LINK_OBJS="
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+   		&main::Output(
+			" \\\n",
+			"\t\"\$(EPOCBLD$Bld)\\$BaseSrc.obj\""
+   		);
+   	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+		&main::OutFormat(
+			"STAGE1_LINK_FLAGS="
+		);
+		&main::OutFormat(
+			"\"\$(EPOCSTATLINK$Bld)\\$FirstLib\" /PDB:NONE"
+		);
+		if ($BasicTrgType=~/^(DLL)$/o) {	# Add the DLL stub
+			&main::OutFormat(
+				" \"\$(EPOCSTATLINK$Bld)\\EDLLSTUB.LIB\""
+			);
+		}
+		&main::OutFormat(
+			" \$(LIBS) /nologo /entry:$Entry /subsystem:native"
+		);
+		if ($BasicTrgType=~/^DLL$/o) {
+			&main::OutFormat(
+				" /dll"
+			);
+		}
+		if ($Bld=~/DEB$/o) {
+			&main::OutFormat(
+				' /debug'
+			);
+		}
+		&main::OutFormat(
+			" /incremental:no /machine:IX86 /nodefaultlib $Include /out:\"\$(EPOCBLD$Bld)\\$Trg\" $WarningLevel",
+			" /implib:\"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"",
+			' /ignore:4089',		# LNK4089: all references to "dynamic-link library" discarded by /OPT:REF
+			' /ignore:4005'			# LNK4005: no objects used from XXX
+		);
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	&main::OutFormat(
+		'LINK_FLAGS='
+	);
+	if ($BasicTrgType=~/^(EXE|DLL)$/o) {
+		&main::OutFormat(
+			" \"\$(EPOCSTATLINK$Bld)\\$FirstLib\" /PDB:NONE "
+		);
+		if ($BasicTrgType=~/^(DLL)$/o) {	# Add the DLL stub
+			&main::OutFormat(
+				" \"\$(EPOCSTATLINK$Bld)\\EDLLSTUB.LIB\""
+			);
+		}
+	}
+	&main::OutFormat(
+		' $(LIBS) /nologo'
+	);
+	if ($BasicTrgType=~/^(EXE|DLL)$/o) {
+		&main::OutFormat(
+			" /fixed:no "
+		);
+		&main::OutFormat(
+			" /entry:$Entry"
+		);
+	}
+	&main::OutFormat(
+		' /subsystem:native'
+	);
+	if ($BasicTrgType=~/^DLL$/o) {
+		if ($HasExports) {
+			&main::OutFormat(
+				" /dll \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\""
+			);
+		} else {
+			&main::OutFormat(
+				" /dll"
+			);
+		}
+	} elsif ($TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+		&main::OutFormat(
+			" \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\""
+		);
+	}
+	if (&main::HeapSize) {
+		my %HeapSize=&main::HeapSize;
+		&main::OutFormat(
+			' /heap:',$HeapSize{Max},',',$HeapSize{Min}
+		);
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		if ($Bld=~/DEB$/o) {
+			&main::OutFormat(
+				' /debug'
+			);
+		}
+		elsif ($Bld=~/REL$/o) {
+			&main::OutFormat(
+				' /incremental:no'
+			);
+		}
+	}
+	&main::OutFormat(
+		' /machine:IX86',
+		' /ignore:4089',	# LNK4089: all references to "dynamic-link library" discarded by /OPT:REF
+		' /ignore:4005'		# LNK4005: no objects used from XXX
+	);
+	&main::OutFormat(
+		" /nodefaultlib $Include"
+	);
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		&main::OutFormat(
+			" /out:\"\$(EPOCBLD$Bld)\\$Trg\"",
+			" /implib:\"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\""
+		);
+		&main::OutFormat(
+			" $WarningLevel"
+		);
+	} else {
+		&main::OutFormat(
+			" /out:\"$BLDTRGPATH$Trg\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"\"$BLDTRGPATH$Trg\" : \$(LINK_OBJS)"
+	);
+	if (-e $DefFile) { # effectively "if project frozen ..."
+		&main::Output(
+			" \"$DefFile\""
+		);
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		&main::Output(
+			" \"\$(EPOCSTATLINK$Bld)\\$FirstLib\""
+		);
+	}
+	&main::Output(
+		" \$(LIBS)\n"
+	);
+
+
+#	Link by name first time round for dlls
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+		&main::Output(
+			"\techo $Entry>\"\$(EPOCBLD$Bld)\\$ExportLibrary.ord\"\n",
+			"\tlink.exe \@<<\n",
+			"\t\t\$(STAGE1_LINK_FLAGS) /order:@\"\$(EPOCBLD$Bld)\\$ExportLibrary.ord\" \$(LINK_OBJS)\n",
+			"<<\n",
+			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.ord\"\n",
+			"\tdel \"\$(EPOCBLD$Bld)\\$Trg\"\n",
+#			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\"\n"
+		);
+
+	if ($HasExports) {
+	#		Generate an export info file
+			&main::Output(
+				"\tdumpbin /exports /out:\"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\" \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n",
+				"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+			);
+
+	#		call makedef to reorder the export information
+			&main::Output(
+	#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+				"\tperl -S makedef.pl $AbsentSubst -Inffile \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\""
+			);
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				&main::Output(
+					" -Frzfile \"$DefFile\""
+				);
+			}
+			# freeze ordinals, a maximum of 2, for polymorphic dlls
+			my $Ordinal;
+			my $Num=1;
+			foreach $Ordinal (&main::Exports) {
+#				replace "$" with "$$" so that NMAKE doesn't think there's a macro in the function name
+				$Ordinal=~s-\$-\$\$-go;
+				&main::Output(
+					" -$Num $Ordinal"
+				);
+				$Num++;
+			}
+			&main::Output(
+				" \"\$(EPOCBLD)\\$ExportLibrary.def\" \n",
+				"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\"\n"
+			);
+
+			# create the export object from the .DEF file
+			&main::Output(
+				"\tlib.exe  /nologo /machine:i386 /nodefaultlib /subsystem:native /name:\"$LinkAs\" /def:\"\$(EPOCBLD)\\$ExportLibrary.def\" /out:\"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+			);
+			if (&main::ExportUnfrozen) {
+				&main::Output(
+				"\tcopy \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\" \"\$(EPOCLIB)\\UREL\\$ExportLibrary.lib\"\n"
+				);
+				if ($ExtraExportLibrary) {
+					&main::Output(
+						"\n",
+						"\tcopy \"\$(EPOCLIB)\\UREL\\$ExportLibrary.lib\" ",
+						"\"\$(EPOCLIB)\\UREL\\$ExtraExportLibrary.lib\"",
+						"\n"
+					);						
+				}				
+			}
+			&main::Output(
+				"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+			);
+		}
+	}
+
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		&main::Output(
+			"\techo $Entry>\"\$(EPOCBLD$Bld)\\$ExportLibrary.ord\"\n",
+			"\tlink.exe /order:@\"\$(EPOCBLD$Bld)\\$ExportLibrary.ord\" /MAPINFO:EXPORTS /MAP:\"$RelPath$Trg.MAP\" \@<<\n"
+		);
+	}
+	elsif ($BasicTrgType=~/^LIB$/o) {
+		&main::Output(
+			"\tlib.exe \@<<\n"
+		);
+	}
+	&main::Output(
+		"\t\t\$(LINK_FLAGS) \$(LINK_OBJS)\n",
+		"<<\n"
+	);
+
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		&main::Output(
+			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.ord\"\n"
+		);
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			if ($HasExports) {
+				&main::Output(
+					"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\"\n"
+				);
+			}
+		}
+		&main::Output(
+			"\tperl -S findimp.pl \"$RelPath$Trg.MAP\" \"\$(EPOCBLD$Bld)\\$ExportLibrary.imp\"\n"
+		);
+		&main::Output(
+			"\tpetran -x86imp=\"\$(EPOCBLD$Bld)\\$ExportLibrary.imp\" -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " \"\$(EPOCBLD$Bld)\\$Trg\" \$\@ \\\n",
+			"\t\t"
+		);
+		if (&main::AllowDllData) {
+			&main::Output(
+				' -allow'
+			);
+		}
+		if (not &main::CallDllEntryPoints) {
+			&main::Output(
+				' -nocall'
+			);
+		}
+		if (&main::DataLinkAddress) {
+			&main::Output(
+				' -datalinkaddress ',&main::DataLinkAddress
+			);
+		}
+		if (&main::FixedProcess) {
+			&main::Output(
+				' -fixed'
+			);
+		}
+		if (&main::HeapSize) {
+			my %HeapSize=&main::HeapSize;
+			&main::Output(
+				' -heap ',$HeapSize{Min},' ',$HeapSize{Max}
+			);
+		}
+		if (&main::ProcessPriority) {
+			&main::Output(
+				' -priority ',&main::ProcessPriority
+			);
+		}
+		if (&main::SmpSafe) {
+			&main::Output(
+				' -smpsafe'
+			);
+		}
+		if (&main::StackSize) {
+			&main::Output(
+				' -stack ',&main::StackSize
+			);
+		}
+		my $i=1;
+		foreach (@UidList) {
+			&main::Output(
+				" -uid$i $_"
+			);
+			$i++;
+		}
+		if(&main::VendorId) {
+			&main::Output(
+				' -vid ',&main::VendorId
+			);
+		}
+		&main::Output(
+			' -capability ',&main::Capability,
+		);
+		if (&main::CompressTarget)
+		    {
+		    &main::Output(
+		    " -nocompress"
+		    );
+		    }
+		else
+		    {
+		    if(&main::CompressTargetMode == NOCOMPRESSIONMETHOD)
+			{
+				# Do nothing
+			}
+		    elsif(&main::CompressTargetMode == INFLATECOMPRESSIONMETHOD)
+			{
+			&main::Output(
+				" -compressionmethod deflate"
+			);
+			}
+		    elsif(&main::CompressTargetMode == BYTEPAIRCOMPRESSIONMETHOD)
+			{
+			&main::Output(
+				" -compressionmethod bytepair"
+			);
+			}
+
+		    }
+		if (&main::CodePagingTargetMode == UNPAGED) {
+			&main::Output(
+				' -codepaging unpaged'
+			);
+		}
+		elsif (&main::CodePagingTargetMode == PAGED) {
+			&main::Output(
+				' -codepaging paged'
+			);
+		}
+
+		if (&main::DataPagingTargetMode == UNPAGED) {
+			&main::Output(
+				' -datapaging unpaged'
+			);
+		}
+		elsif (&main::DataPagingTargetMode == PAGED) {
+			&main::Output(
+				' -datapaging paged'
+			);
+		}
+		&main::Output("\n");
+		&main::Output(
+			"\tdel \"\$(EPOCBLD$Bld)\\$Trg\"\n"
+		);
+	}
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+}
+
+sub PMBitMapBld {
+
+	&Generic_BitMapBld;
+
+}
+
+sub PMResrcBld {
+
+	&Generic_ResrcBld;
+
+}
+
+sub PMAifBld {
+
+	&Generic_AifBld;
+
+}
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;	
+	my @DepList=&main::DepList;
+
+	&main::Output(
+		"DEPEND="
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t\"$_\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	foreach (@BldList) {
+		&main::Output(
+			"DEPEND$_=\$(DEPEND)\n",
+			"\n"
+		);
+	}
+	&main::Output(
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+
+	&main::Output(
+		"DEPEND$Bld="
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t\"$_\""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcBld {
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+	my $Plat=&main::Plat;
+	my $Src=ucfirst lc &main::Src;
+	my $SrcPath=&main::SrcPath;
+	my $Ext=&main::ExtSrc;
+	my $Cia = (lc($Ext) eq '.cia') ? 1 : 0;
+
+	if ($Cia) {
+		&main::Output(
+			"\"\$(EPOCBLD$Bld)\\$BaseSrc\_.obj\" \"\$(EPOCBLD$Bld)\\$BaseSrc\_.sbr\" : \"$SrcPath$Src\" \$(DEPEND$Bld)\n",
+			"\tperl -S tranasm_x86.pl \"$SrcPath$Src\" \"\$(EPOCBLD$Bld)\\$BaseSrc\_.transd.cia\"\n",
+			"\t\$(CL$Bld) /I \"$SrcPath\.\" /TP /Fo\"\$(EPOCBLD$Bld)\\$BaseSrc\_.obj\" /GF /c \"\$(EPOCBLD$Bld)\\$BaseSrc\_.transd.cia\"\n",
+			"\n",
+#			assembler listing target
+			"LISTING$Bld$BaseSrc\_ : \"\$(EPOCBLD$Bld)\\$BaseSrc\_.lis\"\n",
+			"\tcopy \$? \"$SrcPath$BaseSrc\_.$Plat.lst\"\n",
+			"\n",
+			"\"\$(EPOCBLD$Bld)\\$BaseSrc\_.lis\": \"$SrcPath$Src\" \$(DEPEND$Bld)\n",
+			"\t\$(CL$Bld) /TP /FAsc /Fa\"\$\@\" /Fo\"\$(EPOCBLD$Bld)\\$BaseSrc\_.obj\" /GF /c \"$SrcPath$Src\"\n",
+			"\n"
+		);
+	} else {
+		&main::Output(
+			"\"\$(EPOCBLD$Bld)\\$BaseSrc.obj\" \"\$(EPOCBLD$Bld)\\$BaseSrc.sbr\" : \"$SrcPath$Src\" \$(DEPEND$Bld)\n",
+			"\t\$(CL$Bld) /Fo\"\$(EPOCBLD$Bld)/\" /GF /c \"$SrcPath$Src\"\n",
+			"\n",
+#			assembler listing target
+			"LISTING$Bld$BaseSrc : \"\$(EPOCBLD$Bld)\\$BaseSrc.lis\"\n",
+			"\tcopy \$? \"$SrcPath$BaseSrc.$Plat.lst\"\n",
+			"\n",
+			"\"\$(EPOCBLD$Bld)\\$BaseSrc.lis\": \"$SrcPath$Src\" \$(DEPEND$Bld)\n",
+			"\t\$(CL$Bld) /FAsc /Fa\"\$\@\" /Fo\"\$(EPOCBLD$Bld)/\" /GF /c \"$SrcPath$Src\"\n",
+			"\n"
+		);
+	}
+}
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cl_x86gcc.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1107 @@
+# 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:
+#
+
+
+package Cl_x86gcc;
+
+
+my $GccPrefix='';
+my $ToolPrefix='';
+
+my $HelperLib='';
+my %PlatOpt=(
+	'Dlltool'=>'',
+	'Entry'=>'--entry',
+	'Gcc'=>'',
+	'Ld'=>'',
+	'Petran'=>'',
+	'Optimize'=>'-O'
+);
+my $Dlltool;
+my $Archive;
+my $Link;
+my $Objcopy;
+
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMHelp_Mmp
+
+	PMPlatProcessMmp
+
+	PMUnderlyingABI
+
+	PMStartBldList
+		PMBld
+	PMStartSrcList
+		PMBitMapBld
+		PMResrcBld
+		PMAifBld
+		PMStartSrc
+		PMSrcDepend
+			PMSrcBldDepend
+			PMEndSrcBld
+		PMEndSrc
+	PMEndSrcList
+	PMPrefixFile
+);
+
+use cl_generic;
+use Genutl;
+
+use constant NOCOMPRESSIONMETHOD => 0;
+use constant INFLATECOMPRESSIONMETHOD => 1;
+use constant BYTEPAIRCOMPRESSIONMETHOD => 2;
+
+use constant NOTPAGED => 0;
+use constant UNPAGED => 1;
+use constant PAGED => 2;
+
+
+sub PMHelp_Mmp {
+	&Winutl_Help_Mmp;
+}
+
+sub PMCheckPlatformL {
+}
+sub PMPlatProcessMmp (@) {
+	my $MMPFILE=&main::MmpFile;
+
+	# set up START MARM ... END block module variables
+	my @MmpWarn=();
+	my $Line;
+	LINE: foreach $Line (@_) {
+		my $LineInfo=shift @$Line;
+		$_=shift @$Line;
+		push @MmpWarn, "$LineInfo : Unrecognised Keyword \"$_\"\n";
+	}
+
+	undef $Line;
+	if (@MmpWarn) {
+		warn
+			"\nMMPFILE \"$MMPFILE\"\n",
+			"START .. END BLOCK WARNINGS(S)\n",
+			@MmpWarn,
+			"\n"
+		;
+	}
+	undef @MmpWarn;
+}
+
+
+sub SystemTarget() {
+	return 1 if &main::SystemTrg;
+	my $ExportLibrary=&main::ExportLibrary;
+	# N.B. should get better way to detect kernel probably!!
+	return 1 if ($ExportLibrary =~ /EKERN/i);
+	
+	return 0;
+}
+
+
+
+
+
+sub PMUnderlyingABI($) {
+	my ($ABI) = @_;
+	if ($ABI eq 'X86gcc') {
+			return 'X86gcc';
+	}
+	return $ABI;
+}
+
+my $Makecmd;
+my %ABILibPath=();
+my $genDefFile;
+sub PMStartBldList($) {
+	($Makecmd) = @_;
+	my $ABI=&main::ABI;
+	my $UnderlyingABI=PMUnderlyingABI($ABI);
+	my $BaseTrg=&main::BaseTrg;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @BldList=&main::BldList;
+	my @ChopRTWSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopRTWUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $DefFile=&main::DefFile;
+	my $EPOCPath=&main::EPOCPath;
+	my $LinkAs=&main::LinkAs;
+	my $LibPath=&main::LibPath;
+	my @MacroList=&main::MacroList();
+	my $VariantFile=&main::VariantFile();
+	my $Plat=&main::Plat;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my @UidList=&main::UidList;	
+	my $WarningLevel=&main::CompilerOption("GCC");
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $SystemTrg = SystemTarget();
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	my $PrimaryExportLibrary = $ExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+		$PrimaryExportLibrary = $ExtraExportLibrary;
+	}
+
+#	set up LinkAs
+	$UidList[2]=~/^0x(.*)$/o;
+	if ($1 ne '00000000') { # have to make sure than series of noughts in brackets doesn't appear in name for null uids
+		$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+	}
+
+#	set up dlltool flag hash
+	my %ABIDlltool=(
+		X86gcc=>' -m i386' 
+	);
+
+#	work out the flags for various platforms
+	if ($ABI eq 'X86gcc') {
+		$PlatOpt{Gcc}='-c  -masm=intel -B\\epoc32\\gcc_mingw\\_p';
+		$PlatOpt{Dlltool}=$ABIDlltool{X86gcc};
+	}
+
+
+	else {
+		&main::FatalError("Platform module - ABI \"$ABI\" unrecognised");
+	}
+	
+
+#	set up CompatibleABI lib path hash
+	my %ABIRTWLibPath=();
+	
+
+
+	$Dlltool=$ToolPrefix.'dlltool';
+	$Archive=$ToolPrefix.'ar';
+	$Link=$ToolPrefix.'ld';
+	$Objcopy=$ToolPrefix.'objcopy';
+
+	&Generic_Header(0,$Makecmd);	# define standard things using absolute paths
+
+	&main::Output(
+		"\n",
+		"# must set both PATH to make it work correctly\n",
+		"Path:=",&main::Path_Drive,$EPOCPath,"gcc_mingw\\bin;\$(Path)\n",
+		"PATH:=\$(Path)\n",
+		"\n"
+	);
+
+
+	&main::Output(
+		"INCDIR  ="
+	);
+
+	foreach (@ChopRTWUserIncPaths) {
+		&main::Output(
+			" -I \"$_\""
+		);
+	}
+	foreach (@ChopRTWSysIncPaths) {
+		&main::Output(
+			" -isystem \"$_\""
+		);
+	}
+
+	&main::Output(
+		"\\\n -include \"", $EPOCPath, "include\\gcc.h\"",
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"GCCFLAGS=$PlatOpt{Gcc} \\\n",
+		"\n"
+	);
+
+	&main::Output(
+		"GCCDEFS ="
+	);
+	foreach(@MacroList) {
+		&main::Output(
+			" -D$_"
+		);
+	}
+	&main::Output(
+		" -D PRODUCT_INCLUDE=\"\\\"$VariantFile\\\"\"",
+		" \$(USERDEFS)\n",
+		"\n"
+	);
+
+	foreach (@BldList) {
+		&main::Output(
+			"GCC$_ = ${GccPrefix}g++"
+		);
+		if (/REL$/o) {
+			&main::Output(
+				      ' ',
+				      $PlatOpt{Optimize}
+			);
+		}
+		elsif (/DEB$/o) {
+			&main::Output(
+				' -g'
+			);
+			#unless (&main::SrcDbg) {
+			#   &main::Output(
+			#   	' ', $PlatOpt{Optimize}
+			#  );
+			#}
+		}
+		&main::Output(
+			' $(GCCFLAGS)'
+		);
+		foreach (&main::MacroList($_)) {
+			&main::Output(
+				" -D$_"
+			);
+		}
+		&main::Output(
+			" \$(GCCDEFS)\n"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	
+	foreach (@BldList) {
+		&main::Output(
+			"$_ :"
+		);
+
+		if ($BasicTrgType !~ /IMPLIB/io) {
+			&main::Output (
+				#" \\\n\t \"",
+				" \\\n\t ",
+				&Generic_Quote("\$(EPOCTRG$_)\\$Trg")
+				#"\""
+			);
+		}
+
+#		lib has to come after the main target so that a .DEF file will be generated if the project is not frozen
+		if ($DefFile and not &main::ExportUnfrozen) {
+			&main::Output(
+				" \\\n",
+				"\tLIBRARY\n"
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+	}
+
+	# Resource building is done entirely via cl_generic.pm
+	
+	foreach (@BldList) {
+		&main::Output(
+			"\n",
+			"RESOURCE$_ : MAKEWORK$_"
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n",
+	);
+
+	if (!-e $DefFile && scalar(&main::Exports)!=0)
+	{
+		# There are mandatory exports - generate a def file using the mandatory exports.
+		$genDefFile = "\$(EPOCBLD)\\$ExportLibrary.gen.def";
+	}
+	
+	if (-e $DefFile || defined($genDefFile)) { # effectively "if project frozen ..."
+		
+		#	Establish the entry point symbol
+		my $EntrySymbol;
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEDLL$/o ) {
+			$EntrySymbol = '_E32Dll';
+		}
+		elsif ($BasicTrgType=~/^EXE$/o || $TrgType=~/^EXEXP$/o ) {
+			$EntrySymbol = '_E32Startup';
+		}
+				
+		&main::Output("\n", &Generic_Quote("\$(EPOCBLD)\\$ExportLibrary.prep.def"), " : ");
+		my $defFileToUse;
+		if (defined($genDefFile))
+		{
+			# The generated def file is not a dependency of the prep.def - don't add anyting after the ':' char
+			&main::Output("\n\tperl -S gendef.pl $genDefFile ", join(' ', &main::Exports), "\n");
+			$defFileToUse = $genDefFile;
+		}
+		else
+		{
+			&main::Output(&Generic_Quote($DefFile), "\n");
+			$defFileToUse = "\$<";
+		}
+		&main::Output("\tperl -S prepdef.pl $defFileToUse \$@ nodatasizes $EntrySymbol\n\n");
+		
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD)\\$ExportLibrary.lib.exp"), " : ", &Generic_Quote("\$(EPOCBLD)\\$ExportLibrary.prep.def"), "\n",
+			"\t$Dlltool $PlatOpt{Dlltool} --input-def \"\$<\"  --dllname \"$LinkAs\"  -e \"\$@\"  \n",			
+			"\t-\$(ERASE) \"\$(EPOCBLD)\\tmp.txt \"\n\n"
+		);
+	}
+	
+	&main::Output(
+		"LIBRARY : MAKEWORKLIBRARY"
+	);
+	if ($BasicTrgType=~/^LIB$/o) {
+#		code to ensure that the static libraries for all builds are built at the library stage
+		foreach (@BldList) {
+			&main::Output(
+				" $_"
+			);
+		}
+	}
+	elsif ($DefFile and !$NoExportLibrary) {
+		unless (&main::ExportUnfrozen) {
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				&main::Output(
+					" ", &Generic_Quote("\$(EPOCLIB)\\LIB\\$PrimaryExportLibrary.lib")
+				);
+				&main::Output(
+					"\n"
+				);
+			} else {
+				&main::Output(
+					"\n",
+					"\t\@echo WARNING: Not attempting to create any import libraries.\n",
+					"\t\@echo When exports are frozen in \"$DefFile\", regenerate Makefile.\n"
+				);
+			}
+		}
+		else {
+			&main::Output(
+				"\n",
+				"\t\@echo Not attempting to create \"\$(EPOCLIB)\\LIB\\$PrimaryExportLibrary.lib\"\n",
+				"\t\@echo from frozen .DEF file, since EXPORTUNFROZEN specified.\n"
+			);
+		}
+
+
+
+		&main::Output(
+			"\n",
+			"\n",
+			"# REAL TARGET - LIBRARY\n",
+		);
+		
+		&main::Output(
+			"\n",
+			&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.lib"), " : ",
+			&Generic_Quote("\$(EPOCBLD)\\$ExportLibrary.prep.def"), "\n",
+			"\t$Dlltool $PlatOpt{Dlltool} --input-def \"\$<\"  --dllname \"$LinkAs\"  --output-lib \"\$@\" \n",
+			"\t-\$(ERASE) \"\$(EPOCBLD)\\tmp.txt \"\n"
+		);
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\n",
+				&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.lib"), " : ",
+				&Generic_Quote("\$(EPOCLIB)\\LIB\\$ExportLibrary.lib"), "\n",
+				"\tcopy \$< \$@\n"
+			);
+		}
+	}
+
+
+	&main::Output(
+		"\n",
+		"CLEANLIBRARY :\n"
+	);
+	if ($DefFile and !$NoExportLibrary) {
+		&main::Output(
+			"\t-\$(ERASE) \"\$(EPOCLIB)\\LIB\\$ExportLibrary.lib \"\n"
+		);
+		if ($ExtraExportLibrary) {
+			&main::Output(
+				"\t-\$(ERASE) \"\$(EPOCLIB)\\LIB\\$ExtraExportLibrary.lib \"\n"
+			);
+		}
+
+	}
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+	&Generic_MakeWorkDir('MAKEWORKLIBRARY',"${LibPath}LIB");
+
+	&Generic_Releaseables;
+}
+
+
+sub PMBld {
+
+	my @ASSPLibList=&main::ASSPLibList;
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $DefFile=&main::DefFile;
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $FirstLib=&main::FirstLib;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @LibList;
+	my $LibPath=&main::LibPath;
+	my $LinkAs=&main::LinkAs;
+	my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+	my $RelPath=&main::RelPath;
+	my @StatLibList=&main::StatLibList;
+	my $StatLinkPath=&main::StatLinkPath;
+	my $Trg=&main::Trg;
+	my $TrgType=&main::TrgType;
+	my @UidList=&main::UidList;
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $SystemTrg = SystemTarget();
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+	}
+
+	if ($Bld =~ /DEB/) {
+		@LibList = &main::DebugLibList;
+	} else {
+		@LibList = &main::LibList;
+	}
+
+#	set up $LinkAs
+	$UidList[2]=~/^0x(.*)$/o;
+	if ($1 ne '00000000') {	# have to make sure than series of noughts in brackets doesn't appear in name for null uids
+		$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+	}
+	
+
+
+
+
+	# REAL TARGETS
+	#-------------
+	&main::Output(
+		"# REAL TARGET - BUILD VARIANT $Bld\n",
+		"\n"
+	);
+
+
+#	releasables
+	my @releaseables;
+	
+
+	push @releaseables, "$RelPath$Trg" if ($BasicTrgType!~/^IMPLIB$/io);
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		push @releaseables, "$RelPath$Trg.MAP";
+	}
+	if (-e $DefFile and !$NoExportLibrary) { # effectively "if project frozen ..."
+		push @releaseables, "$LibPath$ExportLibrary.lib";
+		push @releaseables, "$LibPath$ExtraExportLibrary.lib" if ($ExtraExportLibrary);
+	}
+	
+	&main::Output(
+		"WHAT$Bld : WHATGENERIC\n",
+		"\n",
+		"CLEAN$Bld : CLEANBUILD$Bld CLEANRELEASE$Bld CLEANLIBRARY\n ",
+		"\n",
+		"CLEANBUILD$Bld : \n",
+		"\t\@perl -S ermdir.pl \"\$(EPOCBLD$Bld)\"\n",
+		"\n",
+		"CLEANRELEASE$Bld : CLEANGENERIC\n",
+		"\n"
+	);
+	&Generic_WhatCleanTargets($Bld, "WHAT$Bld", "CLEANRELEASE$Bld", @releaseables);
+
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopBldPath);
+	&Generic_MakeWorkDir("MAKEWORK$Bld",$ChopRelPath);
+
+	return if ($BasicTrgType=~/^IMPLIB$/io);
+
+	&main::Output(
+		"LISTING$Bld : MAKEWORK$Bld"
+	);
+	foreach (@SrcList) {
+		my $BaseSrc = &main::Path_Split('Base', $_);
+		my $Ext = &main::Path_Split('Ext', $_);
+		$BaseSrc.='_' if (lc($Ext) eq '.cia');
+   		&main::Output(
+			" \\\n\tLISTING$Bld$BaseSrc"
+   		);
+   	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+	&main::Output(
+		"LIBS$Bld="
+	);
+
+	
+	if ($BasicTrgType=~/^DLL$/o) { # Add the DLL stub library
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\EDLLSTUB.LIB")
+		);
+	}
+
+	
+	if ($HelperLib) {
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\$HelperLib")
+		);
+	}
+	foreach (@StatLibList) {
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_")
+		);
+	}
+
+
+	foreach (@ASSPLibList) {
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCASSPLINK$Bld)\\$_")
+		);
+	}
+	foreach (@LibList) {
+		&main::Output(
+			" \\\n\t",
+			&Generic_Quote("\$(EPOCLINK)\\LIB\\$_")
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+
+	&main::Output(
+		"LINKLIBS$Bld="
+	);
+	
+	
+	if ($BasicTrgType=~/^DLL$/o) { # Add the DLL stub library
+		&main::Output(
+			" \\\n\t \"",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\EDLLSTUB.LIB"),
+			" \""
+		);
+	}
+
+	
+	if ($HelperLib) {
+		&main::Output(
+			" \\\n\t \"",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\$HelperLib"),
+			" \""
+		);
+	}
+	foreach (@StatLibList) {
+		&main::Output(
+			" \\\n\t \"",
+			&Generic_Quote("\$(EPOCSTATLINK$Bld)\\$_"),
+			" \""
+		);
+	}
+
+
+	foreach (@ASSPLibList) {
+		&main::Output(
+			" \\\n\t \"",
+			&Generic_Quote("\$(EPOCASSPLINK$Bld)\\$_"),
+			" \""
+		);
+	}
+	foreach (@LibList) {
+		&main::Output(
+			" \\\n\t \"",
+			&Generic_Quote("\$(EPOCLINK)\\LIB\\$_"),
+			" \""
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+
+#	Establish the entry point symbol
+	my $EntrySymbol;
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEDLL$/o ) {
+		$EntrySymbol = '_E32Dll';
+	}
+	elsif ($BasicTrgType=~/^EXE$/o || $TrgType=~/^EXEXP$/o ) {
+		$EntrySymbol = '_E32Startup';
+	}
+	
+	&main::Output(
+		&Generic_Quote("\$(EPOCTRG$Bld)\\$Trg"), " : ",
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg.in")
+	);
+	
+	if (-e $DefFile || defined($genDefFile)) { # effectively "if project frozen ..."
+		&main::Output(
+			" ", &Generic_Quote("\$(EPOCBLD)\\$ExportLibrary.lib.exp")
+		);
+	}
+	if ($BasicTrgType=~/^(EXE|DLL)$/o) {
+		&main::Output(
+			" ", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$FirstLib")
+		);
+	}
+	
+	if ($TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			" ", &Generic_Quote("\$(EPOCSTATLINK$Bld)\\$FirstLib")
+		);
+	}
+	&main::Output(
+		" \$(LIBS$Bld)\n"
+	);
+
+
+
+
+	if ($BasicTrgType=~/^(DLL|EXE)/o) {
+
+
+#		call ld to link the target
+		&main::Output(
+			"\t$Link $PlatOpt{Ld}  -nostdlib   "
+		);
+
+
+
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			if (-e $DefFile || defined($genDefFile)) {
+				&main::Output(
+				"\"\$(EPOCBLD)\\$ExportLibrary.lib.exp \" \\\n"
+				
+				);		
+			}		
+			if ($BasicTrgType=~/^DLL$/o) {
+				&main::Output(
+					"--dll $PlatOpt{Entry} _$EntrySymbol  \\\n"
+				);
+			}
+			else{
+				&main::Output(
+					" $PlatOpt{Entry} _$EntrySymbol  \\\n"
+				);
+						
+			}
+		}
+		elsif ($BasicTrgType=~/^EXE$/o) {
+			&main::Output(
+				" $PlatOpt{Entry} _$EntrySymbol  \\\n"
+			);
+		}
+		
+#		--whole-archive is required here apparently because of a defect in the gcc toolchain
+#		the flag can probably be removed with a later version of gcc
+		&main::Output(
+			"\t\t-Map \"\$(EPOCTRG$Bld)\\$Trg.map \" -o \"\$(EPOCBLD$Bld)\\$Trg \" \\\n",
+			"\t\t\"\$(EPOCSTATLINK$Bld)\\$FirstLib \" --whole-archive \"\$(EPOCBLD$Bld)\\$BaseTrg.in \" \\\n",
+			"\t\t--no-whole-archive"
+		);
+		
+
+		&main::Output(
+			" \$(LINKLIBS$Bld) \$(USERLDFLAGS)\n"
+		);
+		
+
+		if (&main::CompressTarget) {
+			&main::Output(
+			"\tpetran $PlatOpt{Petran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " -nocompress " ,  " \"\$(EPOCBLD$Bld)\\$Trg\" \"\$\@\" \\\n",
+			"\t\t"
+			);
+		}
+		else {
+			if(&main::CompressTargetMode==NOCOMPRESSIONMETHOD){
+				&main::Output(
+					"\tpetran $PlatOpt{Petran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " \"\$(EPOCBLD$Bld)\\$Trg\" \"\$\@\" \\\n",
+					"\t\t"
+				);
+			}
+			elsif(&main::CompressTargetMode==INFLATECOMPRESSIONMETHOD){
+				&main::Output(
+					"\tpetran $PlatOpt{Petran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " ", "  -compressionmethod deflate", " \"\$(EPOCBLD$Bld)\\$Trg\" \"\$\@\" \\\n",
+					"\t\t"
+				);
+			}
+			elsif(&main::CompressTargetMode==BYTEPAIRCOMPRESSIONMETHOD){
+				&main::Output(
+					"\tpetran $PlatOpt{Petran} -version ", &Genutl_VersionToUserString(%Version), " -sid ", &main::SecureId(), " ", "  -compressionmethod bytepair", " \"\$(EPOCBLD$Bld)\\$Trg\" \"\$\@\" \\\n",
+					"\t\t"
+				);
+			}
+		}
+
+# ALWAYS ALLOW WRITEABLE DATA... PART OF THE VTABLE IMPORT WORKAROUND
+#		if (&main::AllowDllData) {
+			&main::Output(
+				' -allow'
+			);
+#		}
+		if (not &main::CallDllEntryPoints) {
+			&main::Output(
+				' -nocall'
+			);
+		}
+		if (&main::DataLinkAddress) {
+			&main::Output(
+				' -datalinkaddress ',&main::DataLinkAddress
+			);
+		}
+		if (&main::FixedProcess) {
+			&main::Output(
+				' -fixed'
+			);
+		}
+		if (&main::HeapSize) {
+			my %HeapSize=&main::HeapSize;
+			&main::Output(
+				' -heap ',$HeapSize{Min},' ',$HeapSize{Max}
+			);
+		}
+		if (&main::ProcessPriority) {
+			&main::Output(
+				' -priority ',&main::ProcessPriority
+			);
+		}
+		if (&main::SmpSafe) {
+			&main::Output(
+				' -smpsafe'
+			);
+		}
+		if (&main::StackSize) {
+			&main::Output(
+				' -stack ',&main::StackSize
+			);
+		}
+
+		if (&main::CodePagingTargetMode == UNPAGED) {
+			&main::Output(
+				' -codepaging unpaged'
+			);
+		}
+		elsif (&main::CodePagingTargetMode == PAGED) {
+			&main::Output(
+				' -codepaging paged'
+			);
+		}
+
+		if (&main::DataPagingTargetMode == UNPAGED) {
+			&main::Output(
+				' -datapaging unpaged'
+			);
+		}
+		elsif (&main::DataPagingTargetMode == PAGED) {
+			&main::Output(
+				' -datapaging paged'
+			);
+		}
+
+		my $i=1;
+		foreach (@UidList) {
+			&main::Output(
+				" -uid$i $_"
+			);
+			$i++;
+		}
+		if(&main::VendorId) {
+			&main::Output(
+				' -vid ',&main::VendorId
+			);
+		}
+		&main::Output(
+			' -capability ',&main::Capability,
+		);
+	}
+	elsif ($BasicTrgType=~/^LIB$/o) {
+		&main::Output(
+			"\tcopy \"\$(EPOCBLD$Bld)\\$BaseTrg.in\" \"\$(EPOCSTATLINK$Bld)\\$Trg\"\n"
+		);
+	}
+
+	&main::Output(
+		"\n"
+	);
+
+
+	# TARGET *.IN
+	#------------
+	if (scalar @SrcList >100) {
+		# deal with very long lists by splitting them into 150 file pieces, which allows
+		# about 200 bytes per filename if the underlying max size is 32K
+		#
+		my $counter1=100;	# i.e. trigger new variable immediately
+		my $counter2=0;
+		my @objvarlist=();
+		foreach (@SrcList) {
+			if ($counter1==100) {
+				$counter1=0;
+				$counter2++;
+				my $objvar = "OBJECTS$Bld$counter2";
+				push @objvarlist, " \$($objvar)";
+				&main::Output(
+					"\n",
+					"$objvar="
+				);
+			}
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+			$BaseSrc.='_' if (lc($Ext) eq '.cia');
+			&main::Output(
+				" \\\n\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o")
+			);
+			$counter1++;
+		}
+		&main::Output(
+			"\n",
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg.in"), " : ", @objvarlist,"\n",
+			"\tif exist \"\$\@\" del \"\$\@\"\n"
+		);
+		foreach (@objvarlist) {
+			# Add the files to the list in groups
+			&main::Output(
+				"\t$Archive cr \"\$\@ \" $_  \n"
+			);
+		}
+		&main::Output(
+			"\n\n"
+		);
+	} else {
+		# shorter lists remain unchanged
+		# 
+		&main::Output(
+			"OBJECTS$Bld="
+		);
+		foreach (@SrcList) {
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+			$BaseSrc.='_' if (lc($Ext) eq '.cia');
+			&main::Output(
+				" \\\n\t", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o")
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+		
+		##Version of object list with quotes
+		&main::Output(
+			"ARCHIVEOBJECTS$Bld="
+		);
+		foreach (@SrcList) {
+			my $BaseSrc = &main::Path_Split('Base', $_);
+			my $Ext = &main::Path_Split('Ext', $_);
+			$BaseSrc.='_' if (lc($Ext) eq '.cia');
+			&main::Output(
+				" \\\n\t \"", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"),
+				" \""
+			);
+		}
+		&main::Output(
+			"\n",
+			"\n"
+		);
+						
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseTrg.in"), " : \$(OBJECTS$Bld)\n",
+			"\tif exist \"\$\@\" del \"\$\@\"\n",
+			"\t$Archive cr \"\$\@ \" \$(ARCHIVEOBJECTS$Bld)  \n",
+			"\n\n"
+		);
+	}
+}
+
+
+sub PMStartSrcList {
+
+	&main::Output(
+		"# SOURCES\n",
+		"\n"
+	);
+}
+
+sub PMBitMapBld {
+
+	&Generic_BitMapBld;
+	
+}
+
+sub PMResrcBld {
+
+	&Generic_ResrcBld;
+
+}
+
+sub PMAifBld {
+
+	&Generic_AifBld;
+
+}
+
+sub PMStartSrc {
+	my $Src=&main::Src;
+
+	&main::Output(
+		"# Source $Src\n",
+		"\n"
+	);
+}
+
+sub PMSrcDepend {
+	my @BldList=&main::BldList;	
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+	my $cia = (lc($ExtSrc) eq '.cia') ? "_" : "";
+
+	return if (@DepList == 0);
+
+	foreach (@BldList) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc$cia.lis"), " ",
+			&Generic_Quote("\$(EPOCBLD$_)\\$BaseSrc$cia.o"), " \\\n",
+		);
+	}
+	&main::Output(
+		":"
+	);
+	foreach (@DepList) {
+		&main::Output(
+		" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMSrcBldDepend {
+	my $Bld=&main::Bld;
+	my @DepList=&main::DepList;
+	my $BaseSrc=&main::BaseSrc;
+	my $ExtSrc=&main::ExtSrc;
+	my $cia = (lc($ExtSrc) eq '.cia') ? "_" : "";
+
+	return if (@DepList == 0);
+
+	&main::Output(
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc$cia.lis"), " ",
+		&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc$cia.o"), " :",
+	);
+	foreach (@DepList) {
+		&main::Output(
+			" \\\n\t", &Generic_Quote($_)
+		);
+	}
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub SelectLangOptions {
+	my ($Ext) = @_;
+	if ($Ext=~/^.c$/) {
+		return '-x c';
+	}
+	return '-fno-rtti -fno-exceptions -fcheck-new';
+}
+
+sub PMEndSrcBld {
+	my $ABI=&main::ABI;
+	my $BaseSrc=&main::BaseSrc;
+	my $Bld=&main::Bld;
+	my $Src=ucfirst lc &main::Src;
+	my $SrcPath=&main::SrcPath;
+	my $Ext = &main::Path_Split('Ext', $Src);
+	my $Cia = (lc($Ext) eq '.cia') ? 1 : 0;
+	my $LangOptions = &SelectLangOptions($Ext);
+
+	my $RTWSrcPath=&main::Path_Chop(&main::Path_RltToWork($SrcPath));
+
+	# Use GCC trick to get assembler source files preprocessed with CPP
+	$Src =~ s/\.s$/.S/i;
+
+	if ($Cia) {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.o"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\techo $Src\n",
+			"\t\$(GCC$Bld) -fomit-frame-pointer -O1 -x c++  -D__CIA__ -I \"$RTWSrcPath\" \$(INCDIR)  -o \$\@ \"$RTWSrcPath\\$Src\"\n",
+			"\n",
+	#		generate an assembly listing target too
+			"LISTING$Bld$BaseSrc\_ : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc\_.$ABI.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc\_.lis"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(GCC$Bld) -fomit-frame-pointer -O1 -x c++  -D__CIA__ -Wa,-adln -I \"$RTWSrcPath\" \$(INCDIR)  -o nul: \"$RTWSrcPath\\$Src\" > \$\@\n",
+			"\n"
+		);
+	} else {
+		&main::Output(
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.o"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\techo $Src\n",
+			"\t\$(GCC$Bld) $LangOptions -I \"$RTWSrcPath\" \$(INCDIR) -o \$\@ \"$RTWSrcPath\\$Src\"\n",
+			"\n",
+	#		generate an assembly listing target too
+			"LISTING$Bld$BaseSrc : ", &Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), "\n",
+			"\t", &Generic_CopyAction("$SrcPath$BaseSrc.$ABI.lst"),
+			"\n",
+			&Generic_Quote("\$(EPOCBLD$Bld)\\$BaseSrc.lis"), " : ",
+			&Generic_Quote("$SrcPath$Src"), "\n",
+			"\t\$(GCC$Bld) $LangOptions -Wa,-adln -I \"$RTWSrcPath\" \$(INCDIR)  -o nul: \"$RTWSrcPath\\$Src\" > \$\@\n",
+			"\n"
+		);
+	}
+}
+
+sub PMEndSrc {
+
+	&main::Output(
+		"\n",
+		"\n"
+	);
+}
+
+sub PMEndSrcList {
+
+	# Deal with accumulated MAKEDIRS etc.
+
+	&Generic_End;
+}
+
+sub PMPrefixFile 
+{ 
+    return &Generic_Quote(&main::Path_Drive.&main::EPOCIncPath."gcc.h");
+}
+
+1;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cw_link_descriptor_template.cwlink	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2003-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:
+
+ -->
+<!--Sample XML file generated by XMLSPY v5 rel. 3 U (http://www.xmlspy.com)-->
+<template-file xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.metrowerks.com/schemas/2003/IDE/SymbianLinkDescriptor.xsd">
+	<template uuid="{AF9FEC09-7314-4940-9443-1644BD3648B5}">
+		<version>1</version>
+		<name>Symbian Link Descriptor</name>
+		<aliases>
+			<alias uuid="{AF9FEC10-7314-4940-9443-1644BD3648B5}">.</alias>
+		</aliases>
+		<setting uuid-alias="." entry="linkCommandSet">
+			<array inheritance="none"></array>
+		</setting>
+	</template>
+</template-file>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cw_link_descriptor_template_v2.cwlink	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2003-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:
+
+ -->
+<!--Sample XML file generated by XMLSPY v5 rel. 3 U (http://www.xmlspy.com)-->
+<template-file xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.metrowerks.com/schemas/2003/IDE/SymbianLinkDescriptor.xsd">
+	<template uuid="{AF9FEC09-7314-4940-9443-1644BD3648B5}">
+		<version>1</version>
+		<name>Symbian Link Descriptor</name>
+		<aliases>
+			<alias uuid="{AF9FEC10-7314-4940-9443-1644BD3648B5}">.</alias>
+		</aliases>
+		<setting uuid-alias="." entry="linkCommandSet">
+			<array inheritance="none"></array>
+		</setting>
+		<setting uuid-alias="." entry="symbolDefinitions">
+			<array inheritance="none"></array>
+		</setting>
+		<setting uuid-alias="."  entry="textFileDumpDefinitions">
+			<array inheritance="none"></array>
+		</setting>
+	</template>
+</template-file>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cw_project_template_v3.xml	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,2653 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<!--
+ Copyright (c) 2003-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:
+
+ -->
+<?codewarrior exportversion="1.0.1" ideversion="5.0" ?>
+
+<!DOCTYPE PROJECT [
+<!ELEMENT PROJECT (TARGETLIST, TARGETORDER, GROUPLIST, DESIGNLIST?)>
+<!ELEMENT TARGETLIST (TARGET+)>
+<!ELEMENT TARGET (NAME, SETTINGLIST, FILELIST?, LINKORDER?, SEGMENTLIST?, OVERLAYGROUPLIST?, SUBTARGETLIST?, SUBPROJECTLIST?, FRAMEWORKLIST?)>
+<!ELEMENT NAME (#PCDATA)>
+<!ELEMENT USERSOURCETREETYPE (#PCDATA)>
+<!ELEMENT PATH (#PCDATA)>
+<!ELEMENT FILELIST (FILE*)>
+<!ELEMENT FILE (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?, ROOTFILEREF?, FILEKIND?, FILEFLAGS?)>
+<!ELEMENT PATHTYPE (#PCDATA)>
+<!ELEMENT PATHROOT (#PCDATA)>
+<!ELEMENT ACCESSPATH (#PCDATA)>
+<!ELEMENT PATHFORMAT (#PCDATA)>
+<!ELEMENT ROOTFILEREF (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>
+<!ELEMENT FILEKIND (#PCDATA)>
+<!ELEMENT FILEFLAGS (#PCDATA)>
+<!ELEMENT FILEREF (TARGETNAME?, PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>
+<!ELEMENT TARGETNAME (#PCDATA)>
+<!ELEMENT SETTINGLIST ((SETTING|PANELDATA)+)>
+<!ELEMENT SETTING (NAME?, (VALUE|(SETTING+)))>
+<!ELEMENT PANELDATA (NAME, VALUE)>
+<!ELEMENT VALUE (#PCDATA)>
+<!ELEMENT LINKORDER (FILEREF*)>
+<!ELEMENT SEGMENTLIST (SEGMENT+)>
+<!ELEMENT SEGMENT (NAME, ATTRIBUTES?, FILEREF*)>
+<!ELEMENT ATTRIBUTES (#PCDATA)>
+<!ELEMENT OVERLAYGROUPLIST (OVERLAYGROUP+)>
+<!ELEMENT OVERLAYGROUP (NAME, BASEADDRESS, OVERLAY*)>
+<!ELEMENT BASEADDRESS (#PCDATA)>
+<!ELEMENT OVERLAY (NAME, FILEREF*)>
+<!ELEMENT SUBTARGETLIST (SUBTARGET+)>
+<!ELEMENT SUBTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>
+<!ELEMENT SUBPROJECTLIST (SUBPROJECT+)>
+<!ELEMENT SUBPROJECT (FILEREF, SUBPROJECTTARGETLIST)>
+<!ELEMENT SUBPROJECTTARGETLIST (SUBPROJECTTARGET*)>
+<!ELEMENT SUBPROJECTTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>
+<!ELEMENT FRAMEWORKLIST (FRAMEWORK+)>
+<!ELEMENT FRAMEWORK (FILEREF, LIBRARYFILE?, VERSION?)>
+<!ELEMENT LIBRARYFILE (FILEREF)>
+<!ELEMENT VERSION (#PCDATA)>
+<!ELEMENT TARGETORDER (ORDEREDTARGET|ORDEREDDESIGN)*>
+<!ELEMENT ORDEREDTARGET (NAME)>
+<!ELEMENT ORDEREDDESIGN (NAME, ORDEREDTARGET+)>
+<!ELEMENT GROUPLIST (GROUP|FILEREF)*>
+<!ELEMENT GROUP (NAME, (GROUP|FILEREF)*)>
+<!ELEMENT DESIGNLIST (DESIGN+)>
+<!ELEMENT DESIGN (NAME, DESIGNDATA)>
+<!ELEMENT DESIGNDATA (#PCDATA)>
+]>
+
+<PROJECT>
+    <TARGETLIST>
+        <TARGET>
+            <NAME>WINSCW UDEB</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+		        <SETTING><NAME>SystemSearchPaths</NAME>
+		            <SETTING>
+		                <SETTING><NAME>SearchPath</NAME>
+		                    <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+		                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		                    <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+		                </SETTING>
+		                <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+		            </SETTING>
+		        </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>WINSCW UDEB</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+        <SETTING><NAME>FileMappings</NAME>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		        </SETTING>
+		        
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLs</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>E32Main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>1</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installation" panel -->
+		        <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE>epoc32\release\winscw\udeb</VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>ROOT</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>EPOCROOT</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>Compiler</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+		        <SETTING><NAME>canRun</NAME><VALUE>true</VALUE></SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+        <TARGET>
+            <NAME>WINSCW UREL</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+		        <SETTING><NAME>SystemSearchPaths</NAME>
+		            <SETTING>
+		                <SETTING><NAME>SearchPath</NAME>
+		                    <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+		                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		                    <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+		                </SETTING>
+		                <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+		            </SETTING>
+		        </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>WINSCW UREL</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+        <SETTING><NAME>FileMappings</NAME>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		        </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLs</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>E32Main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>1</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installation" panel -->
+		        <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE>epoc32\release\winscw\udeb</VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>ROOT</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>EPOCROOT</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>Compiler</NAME><VALUE>ARM</VALUE></SETTING>
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+		        <SETTING><NAME>canRun</NAME><VALUE>true</VALUE></SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+
+        <TARGET>
+            <NAME>ARM4T UDEB</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+		        <SETTING><NAME>SystemSearchPaths</NAME>
+		            <SETTING>
+		                <SETTING><NAME>SearchPath</NAME>
+		                    <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+		                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		                    <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+		                </SETTING>
+		                <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+		            </SETTING>
+		        </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>ARM4 UDEB</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+        <SETTING><NAME>FileMappings</NAME>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		        </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLs</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installation" panel -->
+		        <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE>epoc32\release\winscw\udeb</VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>ROOT</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>EPOCROOT</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>Compiler</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+		        <SETTING><NAME>canRun</NAME><VALUE>true</VALUE></SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+        <TARGET>
+            <NAME>ARM4T UREL</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+		        <SETTING><NAME>SystemSearchPaths</NAME>
+		            <SETTING>
+		                <SETTING><NAME>SearchPath</NAME>
+		                    <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+		                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		                    <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+		                </SETTING>
+		                <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+		            </SETTING>
+		        </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>ARM4 UREL</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+        <SETTING><NAME>FileMappings</NAME>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+		            </SETTING>
+		        </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLs</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installation" panel -->
+		        <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE>epoc32\release\winscw\udeb</VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>ROOT</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>EPOCROOT</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>Compiler</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+		        <SETTING><NAME>canRun</NAME><VALUE>true</VALUE></SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+        <TARGET>
+            <NAME>Build All</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>None</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>Build All</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>MMPr</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+		            <SETTING>
+		                <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+		                <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+		                <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+		                <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+		                <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+		                <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+		            </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLs</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installation" panel -->
+		        <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+		            <SETTING><NAME>Path</NAME><VALUE>epoc32\release\winscw\udeb</VALUE></SETTING>
+		            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+		            <SETTING><NAME>PathRoot</NAME><VALUE>ROOT</VALUE></SETTING>
+		        </SETTING>
+		        <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>EPOCROOT</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>Compiler</NAME><VALUE>ARM</VALUE></SETTING>
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+		        <SETTING><NAME>canDebug</NAME><VALUE>false</VALUE></SETTING>
+		        <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+            <SUBTARGETLIST>
+                <SUBTARGET>
+                    <TARGETNAME>WINSCW UDEB</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>WINSCW UREL</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>ARM4 UDEB</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>ARM4 UREL</TARGETNAME>
+                </SUBTARGET>
+            </SUBTARGETLIST>
+        </TARGET>
+    </TARGETLIST>
+
+    <TARGETORDER>
+        <ORDEREDTARGET><NAME>WINSCW UDEB</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>WINSCW UREL</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>ARM4 UDEB</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>ARM4 UREL</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>Build All</NAME></ORDEREDTARGET>
+    </TARGETORDER>
+
+    <GROUPLIST>
+        <GROUP><NAME>Source</NAME>
+        </GROUP>
+        <GROUP><NAME>Link</NAME>
+        </GROUP>
+        <GROUP><NAME>Libraries</NAME>
+            <GROUP><NAME>WINSCW</NAME>
+            </GROUP>
+            <GROUP><NAME>ARM4</NAME>
+            </GROUP>
+        </GROUP>
+    </GROUPLIST>
+
+</PROJECT>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/cw_project_template_v4.xml	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,8394 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<!--
+ Copyright (c) 2003-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:
+
+ -->
+<?codewarrior exportversion="1.0.1" ideversion="5.0" ?>
+
+<!DOCTYPE PROJECT [
+<!ELEMENT PROJECT (TARGETLIST, TARGETORDER, GROUPLIST, DESIGNLIST?)>
+<!ELEMENT TARGETLIST (TARGET+)>
+<!ELEMENT TARGET (NAME, SETTINGLIST, FILELIST?, LINKORDER?, SEGMENTLIST?, OVERLAYGROUPLIST?, SUBTARGETLIST?, SUBPROJECTLIST?, FRAMEWORKLIST?, PACKAGEACTIONSLIST?)>
+<!ELEMENT NAME (#PCDATA)>
+<!ELEMENT USERSOURCETREETYPE (#PCDATA)>
+<!ELEMENT PATH (#PCDATA)>
+<!ELEMENT FILELIST (FILE*)>
+<!ELEMENT FILE (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?, ROOTFILEREF?, FILEKIND?, FILEFLAGS?)>
+<!ELEMENT PATHTYPE (#PCDATA)>
+<!ELEMENT PATHROOT (#PCDATA)>
+<!ELEMENT ACCESSPATH (#PCDATA)>
+<!ELEMENT PATHFORMAT (#PCDATA)>
+<!ELEMENT ROOTFILEREF (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>
+<!ELEMENT FILEKIND (#PCDATA)>
+<!ELEMENT FILEFLAGS (#PCDATA)>
+<!ELEMENT FILEREF (TARGETNAME?, PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>
+<!ELEMENT TARGETNAME (#PCDATA)>
+<!ELEMENT SETTINGLIST ((SETTING|PANELDATA)+)>
+<!ELEMENT SETTING (NAME?, (VALUE|(SETTING+)))>
+<!ELEMENT PANELDATA (NAME, VALUE)>
+<!ELEMENT VALUE (#PCDATA)>
+<!ELEMENT LINKORDER (FILEREF*)>
+<!ELEMENT SEGMENTLIST (SEGMENT+)>
+<!ELEMENT SEGMENT (NAME, ATTRIBUTES?, FILEREF*)>
+<!ELEMENT ATTRIBUTES (#PCDATA)>
+<!ELEMENT OVERLAYGROUPLIST (OVERLAYGROUP+)>
+<!ELEMENT OVERLAYGROUP (NAME, BASEADDRESS, OVERLAY*)>
+<!ELEMENT BASEADDRESS (#PCDATA)>
+<!ELEMENT OVERLAY (NAME, FILEREF*)>
+<!ELEMENT SUBTARGETLIST (SUBTARGET+)>
+<!ELEMENT SUBTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>
+<!ELEMENT SUBPROJECTLIST (SUBPROJECT+)>
+<!ELEMENT SUBPROJECT (FILEREF, SUBPROJECTTARGETLIST)>
+<!ELEMENT SUBPROJECTTARGETLIST (SUBPROJECTTARGET*)>
+<!ELEMENT SUBPROJECTTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>
+<!ELEMENT FRAMEWORKLIST (FRAMEWORK+)>
+<!ELEMENT FRAMEWORK (FILEREF, DYNAMICLIBRARY?, VERSION?)>
+<!ELEMENT PACKAGEACTIONSLIST (PACKAGEACTION+)>
+<!ELEMENT PACKAGEACTION (#PCDATA)>
+<!ELEMENT LIBRARYFILE (FILEREF)>
+<!ELEMENT VERSION (#PCDATA)>
+<!ELEMENT TARGETORDER (ORDEREDTARGET|ORDEREDDESIGN)*>
+<!ELEMENT ORDEREDTARGET (NAME)>
+<!ELEMENT ORDEREDDESIGN (NAME, ORDEREDTARGET+)>
+<!ELEMENT GROUPLIST (GROUP|FILEREF)*>
+<!ELEMENT GROUP (NAME, (GROUP|FILEREF)*)>
+<!ELEMENT DESIGNLIST (DESIGN+)>
+<!ELEMENT DESIGN (NAME, DESIGNDATA)>
+<!ELEMENT DESIGNDATA (#PCDATA)>
+]>
+
+<PROJECT>
+    <TARGETLIST>
+        <TARGET>
+            <NAME>WINSCW UDEB</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>WINSCW UDEB</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pch++</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>E32Main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>1</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "x86 Exceptions" panel -->
+                <SETTING><NAME>MWDebugger_X86_Exceptions</NAME>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>Metrowerks x86 Compiler</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+        <TARGET>
+            <NAME>WINSCW UREL</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>WINSCW UREL</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pch++</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>E32Main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>1</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "x86 Exceptions" panel -->
+                <SETTING><NAME>MWDebugger_X86_Exceptions</NAME>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                    <SETTING><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>Metrowerks x86 Compiler</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+        <TARGET>
+            <NAME>ARMV5_ABIV1 UDEB</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>ARMV5_ABIV1 UDEB</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>ARM RVCT</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+        <TARGET>
+            <NAME>ARMV5_ABIV1 UREL</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>ARMV5_ABIV1 UREL</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>ARM RVCT</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+          <TARGET>
+            <NAME>GCCE UDEB</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>GCCE UDEB</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>ARM RVCT</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+            <TARGET>
+            <NAME>GCCE UREL</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>GCCE UREL</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>ARM RVCT</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+              <TARGET>
+            <NAME>ARMV5 UDEB</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>ARMV5 UDEB</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>ARM RVCT</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+           <TARGET>
+            <NAME>ARMV5 UREL</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>ARMV5 UDEB</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>ARM RVCT</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+		<TARGET>
+		    <NAME>ARMV5_ABIV2 UDEB</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>ARMV5_ABIV2 UDEB</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>ARM RVCT</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+        <TARGET>
+            <NAME>ARMV5_ABIV2 UREL</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>Symbian Linker v2</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE>Symbian Installer v2</VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>ARMV5_ABIV2 UDEB</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>._ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cfg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cia</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cwlink</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.cxx</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.def</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.hrh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.i</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.iby</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ii</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inf</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ini</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.inl</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.loc</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ciacpp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmp</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.mmpi</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.pkg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.policy</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.ra</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.resources</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Resource v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>XML</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rh</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rls</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rss</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.rsg</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Compiler v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.script</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.txt</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.a</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.lib</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.dso</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE>Symbian Object Importer v2</VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>2</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE>Symbian MetroTrk</VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE>ARM RVCT</VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE>-x c++ -D__CIA__</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+        </TARGET>
+        <TARGET>
+            <NAME>Build All</NAME>
+            <SETTINGLIST>
+
+                <!-- Settings for "Source Trees" panel -->
+                <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Access Paths" panel -->
+                <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UserSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+                <SETTING><NAME>SystemSearchPaths</NAME>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Debugger Runtime" panel -->
+                <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Target Settings" panel -->
+                <SETTING><NAME>Linker</NAME><VALUE>None</VALUE></SETTING>
+                <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>PostLinker</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Targetname</NAME><VALUE>Build All</VALUE></SETTING>
+                <SETTING><NAME>OutputDirectory</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "File Mappings" panel -->
+                <SETTING><NAME>FileMappings</NAME>
+                    <SETTING>
+                        <SETTING><NAME>FileType</NAME><VALUE>MMPr</VALUE></SETTING>
+                        <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING>
+                        <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING>
+                    </SETTING>
+                </SETTING>
+
+                <!-- Settings for "Build Extras" panel -->
+                <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>BrowserGenerator</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>DebuggerAppPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DebuggerWorkingDir</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Debugger Target" panel -->
+                <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING>
+                <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>AltExePath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING>
+                <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING>
+
+                <!-- Settings for "Remote Debug" panel -->
+                <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>ConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING>
+                <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Auto-target" panel -->
+                <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Analyzer Connections" panel -->
+                <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Custom Keywords" panel -->
+                <SETTING><NAME>CustomColor1</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor2</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor3</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>CustomColor4</NAME>
+                    <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Green</NAME><VALUE>0</VALUE></SETTING>
+                    <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>BraekPoinType_II</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>IDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>IDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDexecutable</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDinitialized</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>SDuninitialized</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>SDconstant</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>VerifyMemWrites</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ShowMPC107regs</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>BreakpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>WatchpointType</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>ByteOrderType</NAME><VALUE>0</VALUE></SETTING>
+                <PANELDATA><NAME>CodeTest SYMBIAN Instrumenter</NAME><VALUE>
+                    0200020000000100000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000433A5C0000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000637466696C657300000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000636F6465746573742E6964620000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    0000000000000000000000000000000000000000000000000000000000000000
+                    000000000000000000000000
+                </VALUE></PANELDATA>
+
+                <!-- Settings for "Symbian Installation" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Installer Panel v2" panel -->
+                <SETTING><NAME>SymbianInstallationOutputFilename</NAME><VALUE>Application.sis</VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationContentSearchLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianInstallationPassword</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianInstallationCreateStubFile</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Resource Panel" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Resources Panel v2" panel -->
+                <SETTING><NAME>SymbianResourcesMMPFileLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesBinaryOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>SymbianResourcesHeaderFileOutputLocation</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Remote Download" panel -->
+                <SETTING><NAME>FileList</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian ARM Debugger" panel -->
+                <SETTING><NAME>Processor</NAME><VALUE>Generic</VALUE></SETTING>
+                <SETTING><NAME>UseInitFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>UseConfigFile</NAME><VALUE>0</VALUE></SETTING>
+                <SETTING><NAME>ResetTarget</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>InitializationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>ConfigurationFile</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>TargetOS</NAME><VALUE>1</VALUE></SETTING>
+                <SETTING><NAME>RTOSPluginName</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Common Panel" panel -->
+                <SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SymbianEpocToolsPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Compiler Panel" panel -->
+                <SETTING><NAME>PrefixFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerXMLDescriptor</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>Macros</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CodeTEST</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>EnableSWIC</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Arguments</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CIAArgs</NAME><VALUE></VALUE></SETTING>
+
+                <!-- Settings for "Symbian Debugging" panel -->
+                <SETTING><NAME>Parse Log File</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log File Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Symbian SDK Folder</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Log Unresolved Modules</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Log Unresolved Sym Files</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Non-XIP Executables</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Kernel Debugging" panel -->
+                <SETTING><NAME>Start Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Run From Start Address</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Download Image</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>OS Image Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Download Address</NAME><VALUE>0x00000000</VALUE></SETTING>
+                <SETTING><NAME>Ask First</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Debug Bootrom</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>Bootrom Sym File</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Linker Panel" panel -->
+                <SETTING><NAME>LinkOutputFile</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>LinkCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibrary</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>canDebug</NAME><VALUE>true</VALUE></SETTING>
+                <SETTING><NAME>canRun</NAME><VALUE>false</VALUE></SETTING>
+
+                <!-- Settings for "Symbian RomBuild Panel" panel -->
+                <SETTING><NAME>CommandLine</NAME><VALUE>buildrom -D_DEBUG devkit lubbock techview -olubbock_gui.img</VALUE></SETTING>
+                <SETTING><NAME>OutputPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>DisplayMessages</NAME><VALUE>true</VALUE></SETTING>
+
+                <!-- Settings for "Symbian Target" panel -->
+                <SETTING><NAME>TargetArchitecture</NAME><VALUE>WINSCW</VALUE></SETTING>
+                <SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>SuppressWarnings</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>GenerateSymbolics</NAME><VALUE>false</VALUE></SETTING>
+                <SETTING><NAME>CompilerPrefix</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>CompilerCmdLine</NAME><VALUE></VALUE></SETTING>
+                <SETTING><NAME>SymbianImportLibraryPath</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+
+                <!-- Settings for "Symbian Tools" panel -->
+                <SETTING><NAME>Gnu Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+                <SETTING><NAME>Epoc32 Tools Path</NAME>
+                    <SETTING><NAME>Path</NAME><VALUE>C:\</VALUE></SETTING>
+                    <SETTING><NAME>PathFormat</NAME><VALUE>Windows</VALUE></SETTING>
+                    <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                </SETTING>
+            </SETTINGLIST>
+            <FILELIST>
+            </FILELIST>
+            <LINKORDER>
+            </LINKORDER>
+            <SUBTARGETLIST>
+                <SUBTARGET>
+                    <TARGETNAME>WINSCW UDEB</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>WINSCW UREL</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>ARM4 UDEB</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>ARM4 UREL</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>ARMV5_ABIV1 UDEB</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>ARMV5_ABIV1 UREL</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>GCCE UDEB</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>GCCE UREL</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>ARMV5 UDEB</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>ARMV5 UREL</TARGETNAME>
+                </SUBTARGET>
+				<SUBTARGET>
+                    <TARGETNAME>ARMV5_ABIV2 UDEB</TARGETNAME>
+                </SUBTARGET>
+                <SUBTARGET>
+                    <TARGETNAME>ARMV5_ABIV2 UREL</TARGETNAME>
+                </SUBTARGET>
+            </SUBTARGETLIST>
+        </TARGET>
+    </TARGETLIST>
+
+    <TARGETORDER>
+        <ORDEREDTARGET><NAME>WINSCW UDEB</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>WINSCW UREL</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>ARM4 UDEB</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>ARM4 UREL</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>ARMV5 UDEB</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>ARMV5 UREL</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>GCCE UDEB</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>GCCE UREL</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>ARMV5_ABIV1 UDEB</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>ARMV5_ABIV1 UREL</NAME></ORDEREDTARGET>
+        <ORDEREDTARGET><NAME>Build All</NAME></ORDEREDTARGET>
+    </TARGETORDER>
+
+    <GROUPLIST>
+    </GROUPLIST>
+
+</PROJECT>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/default_plats.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,2 @@
+WINSCW
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/default_plats_v2.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,2 @@
+WINSCW
+ARMV5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/e32plat.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,880 @@
+# 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:
+# Module providing platform details for platforms supported
+# by Symbian OS
+# all data is uppercase
+# 
+#
+
+package E32Plat;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	Plat_SetVerbose
+	Plat_Init
+	Plat_GetL
+	Plat_List
+	Plat_AssocIDE
+	Plat_Customizations
+	Plat_Customizes
+	Plat_Root
+	Plat_SupportsFeatureVariants
+);
+
+use Winutl;
+use RVCT_plat2set;
+use BPABIutl;
+use E32Variant;
+
+my $variantABIV2Keyword = &Variant_GetMacro();
+
+my %Mode=(
+	Verbose=>0
+);
+my $ModulePath;
+
+sub Plat_SetVerbose () {
+	$Mode{Verbose}=1;
+}
+
+my %BldLists=(
+	EPOC32=>['UREL','UDEB'],
+	WINS=>['UDEB','UREL'],
+	TOOLS=>['DEB','REL'],
+	TOOLS2=>['DEB','REL'],
+);
+
+my %BldMacros=(
+	DEB=>['_DEBUG'],
+	REL=>['NDEBUG'],
+	UDEB=>['_DEBUG','_UNICODE'],
+	UREL=>['NDEBUG','_UNICODE']
+);
+
+
+my @EpocMacros=('__SYMBIAN32__');
+
+my @BPABIPlats = &BPABIutl_Plat_List;
+
+my %Plat=(
+	ARM4=>{
+		ABI=>'ARM4',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+	},
+	ARM4SMP=>{
+		ABI=>'ARM4',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		SMP=>1,
+		StatLink=>'ARM4SMP',
+	},
+	ARM4T=>{
+		ABI=>'ARM4T',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+	},
+	ARMI=>{
+		ASSP=>'MARM',
+		Generic=>1,
+		ASSPABI=>'',
+	},
+	SARM4=>{
+		ABI=>'ARM4',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		Single=>1,
+	},
+	SARMI=>{
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		Single=>1,
+	},
+	STHUMB=>{
+		ABI=>'THUMB',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		Single=>1,
+	},
+	THUMB=>{
+		ABI=>'THUMB',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+	},
+	TOOLS=>{
+		ABI=>'TOOLS',
+		ASSPABI=>'',
+		Compiler=>'VC32',
+		CPU=>'TOOLS',
+		OS=>'TOOLS',
+		MakeMod=>'Cl_win',
+		MakeCmd=>'nmake',
+	},
+	TOOLS2=>{
+		ABI=>'TOOLS2',
+		ASSPABI=>'',
+		Compiler=>'GCC32',
+		CPU=>'TOOLS2',
+		OS=>'TOOLS2',
+		MakeMod=>'Cl_mingw',
+		MakeCmd=>'make',
+	},
+	CWTOOLS=>{
+		ABI=>'TOOLS',
+		ASSPABI=>'',
+		Compiler=>'CW32',
+		CPU=>'TOOLS',
+		OS=>'TOOLS',
+		MakeMod=>'Cl_tools',
+		MakeCmd=>'make',
+	},
+	VC6TOOLS=>{
+		ABI=>'TOOLS',
+		ASSPABI=>'',
+		Compiler=>'VC32',
+		CPU=>'TOOLS',
+		Ext=>'.DSP',
+		MakeMod=>'Ide_vc6',
+		MakeCmd=>'nmake',
+		OS=>'TOOLS',
+		Real=>'TOOLS',
+		UsrHdrsOnly=>1,
+	},
+	WINS=>{
+		ABI=>'WINS',
+		ASSPABI=>'',
+		Compiler=>'VC32',
+		CPU=>'WINS',
+		MakeMod=>'Cl_win',
+		MakeCmd=>'nmake',
+		OS=>'WINS',
+	},
+	VC6=>{
+		ABI=>'WINS',
+		ASSPABI=>'',
+		Compiler=>'VC32',
+		CPU=>'WINS',
+		Ext=>'.DSP',
+		MakeMod=>'Ide_vc6',
+		MakeCmd=>'nmake',
+		OS=>'WINS',
+		Real=>'WINS',
+		UsrHdrsOnly=>1,
+	},
+	WINSCW=>{
+		ABI=>'WINSCW',
+		ASSPABI=>'',
+		Compiler=>'CW32',
+		CPU=>'WINS',
+		MakeMod=>'Cl_codewarrior',
+		OS=>'WINS',
+		DefFile=>'WINS',	# use the MSVC def files
+	},
+	CW_IDE=>{
+		ABI=>'WINSCW',
+		ASSPABI=>'',
+		Compiler=>'CW32',
+		CPU=>'WINS',
+		Ext=>'.xml',
+		MakeMod=>'Ide_cw',
+		MakeCmd=>'make',
+		OS=>'WINS',
+		Real=>'WINSCW',
+		DefFile=>'WINS',	# use the MSVC def files
+		UsrHdrsOnly=>1,
+		SupportsMultiplePlatforms=>1,	# supports more than one real platform
+	},
+	X86=>{
+		ABI=>'X86',
+		ASSPABI=>'',
+		Compiler=>'VC32',
+		CPU=>'X86',
+		MakeMod=>'Cl_x86',
+		MakeCmd=>'nmake',
+		OS=>'EPOC32',
+		DefFile=>'X86',
+		Generic=>1,
+	},
+	X86SMP=>{
+		ABI=>'X86',
+		ASSPABI=>'',
+		Compiler=>'VC32',
+		CPU=>'X86',
+		MakeMod=>'Cl_x86',
+		MakeCmd=>'nmake',
+		OS=>'EPOC32',
+		DefFile=>'X86',
+		Generic=>1,
+		SMP=>1,
+		StatLink=>'X86SMP',
+	},
+	X86GCC=>{
+		ABI=>'X86gcc',
+		ASSPABI=>'',
+		Compiler=>'X86GCC',
+		CPU=>'X86',
+		MakeMod=>'Cl_x86gcc',
+		OS=>'EPOC32',
+		DefFile=>'x86gcc',
+		Generic=>1,
+	},	
+	X86GMP=>{
+		ABI=>'X86gcc',
+		ASSPABI=>'',
+		Compiler=>'X86GCC',
+		CPU=>'X86',
+		MakeMod=>'Cl_x86gcc',
+		OS=>'EPOC32',
+		DefFile=>'x86gcc',
+		Generic=>1,
+		SMP=>1,
+		StatLink=>'X86GMP',
+	},	
+	ARMV4=>{
+		ABI=>'ARMV4',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		MakeMod=>'Cl_arm',
+		Compiler=>'ARMCC',
+		DefFile=>'EABI',
+		EABI=>1,
+	},
+	ARMV4SMP=>{
+		ABI=>'ARMV4',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		MakeMod=>'Cl_arm',
+		Compiler=>'ARMCC',
+		DefFile=>'EABI',
+		EABI=>1,
+		SMP=>1,
+		StatLink=>'ARMV4SMP',
+	},
+	ARMV5_ABIV1=>{
+		ABI=>'ARMV5',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		MakeMod=>'Cl_arm',
+		Compiler=>'ARMCC',
+		DefFile=>'EABI',
+		EABI=>1,
+		SupportsFeatureVariants=>1,
+	},
+	ABIV2=>{
+		ABI=>'ARMV5',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		MakeMod=>'Cl_bpabi',
+		DefFile=>'EABI',
+		EABI=>1,
+		SupportsFeatureVariants=>1,
+	},
+	GCCXML=>{
+		ABI=>'ARM4',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		MakeMod=>'cl_gccxml',
+	},
+	VS6=>{
+		ABI=>'WINSCW',
+		ASSPABI=>'',
+		Compiler=>'CW32',
+		CPU=>'WINS',
+		MakeMod=>'Cl_vscw',
+		OS=>'WINS',
+		Real=>'WINSCW',
+		DefFile=>'WINS',	# use the MSVC def files
+		Ext=>'.mak'		
+	},
+	VS2003=>{
+		ABI=>'WINSCW',
+		ASSPABI=>'',
+		Compiler=>'CW32',
+		CPU=>'WINS',
+		MakeMod=>'Cl_vscw',
+		OS=>'WINS',
+		Real=>'WINSCW',
+		DefFile=>'WINS',	# use the MSVC def files
+		Ext=>'.mak'
+	},
+	EDG=>{
+		ABI=>'ARMV5',
+		ASSP=>'MARM',
+		ASSPABI=>'',
+		Generic=>1,
+		MakeMod=>'cl_edg',
+	},
+
+	# ASSP platforms should be described using .ASSP files
+	# Do not add additional ASSP platforms to this file.
+);
+
+sub Set_Plat() 
+{
+	@BPABIPlats = &BPABIutl_Plat_List;
+	foreach my $Candidate (@BPABIPlats)
+	{
+# All BPABI platforms inherit from ABIV2 properties as listed in the platlist
+# and Platlist is updated to include the BPABI platforms.
+		my ( $key, $value);
+		while (($key, $value) = each %{$Plat{ABIV2}}) {
+			$Plat{$Candidate}{$key}=$value;
+		}
+	}
+}
+
+sub Plat_SupportsFeatureVariants($)
+	{
+	my ($plat) = @_;
+
+	# In a non-ABIV2 world, ARMV5 means ARMV5_ABIV1 within e32plat content
+	if (!$variantABIV2Keyword && $plat =~ /^ARMV5$/i)
+		{
+		$plat .= "_ABIV1";
+		}
+		
+	return ($plat && defined $Plat{$plat}{SupportsFeatureVariants}) ? $Plat{$plat}{SupportsFeatureVariants} : 0;
+	}
+
+sub Plat_Customizations($) {
+        my ($plat) = @_;
+	my @empty = ();
+	return @{$Plat{$plat}{'CUSTOMIZATIONS'}} if $Plat{$plat}{'CUSTOMIZATIONS'};
+	return @empty;
+      }
+
+sub Plat_Customizes($) {
+	my ($plat) = @_;
+	return $Plat{$plat}{'CUSTOMIZES'} ? $Plat{$plat}{'CUSTOMIZES'} : "";
+}
+
+sub Plat_Root($) {
+	my ($plat) = @_;
+
+	my $RootName = $Plat{$plat}{'ROOTPLATNAME'};
+
+	if ($RootName) {
+		return $RootName;
+	}
+	else {
+		# A non-BSF platform is its own root.
+		return $plat;
+	}
+}
+
+sub Init_BSFs($) {
+	my ($Path)=@_;  
+#	get a list of modules
+	opendir DIR, $Path;
+	my @BSFs=grep s/^([^\.].*)\.BSF$/$1/, map { uc $_ } sort readdir DIR;
+	closedir DIR;
+
+	my $BSF;
+	foreach $BSF (@BSFs) {
+		my $File=$Path.$BSF.'.bsf';
+#		check whether the assp is already defined
+		if (defined %{$Plat{$BSF}}) {
+			warn(
+				"$File : warning: Platform \"$BSF\" already defined\n",
+				" ... skipping this spec\n"
+			);
+			delete $Plat{$BSF};
+			next;
+		}
+#		open the module
+		unless (open FILE, $File) {
+			delete $Plat{$BSF};
+			warn "warning: Can't open BSF specification \"$File\"\n";
+			next;
+		}
+		my $line1 = <FILE>;
+		$line1 = uc($line1);
+		unless ($line1 =~ /^\#\<BSF\>\#/) {
+			warn "warning: \"$File\" Invalid BSF specification - missing #<bsf>#\n";
+			delete $Plat{$BSF};
+			close FILE;
+                  next;
+            }
+            my $custom;
+            while ($custom = <FILE>) {
+					#skip blank lines and comments
+			delete $Plat{$BSF};
+					last unless ($custom =~ /^$|^\#/);
+            }
+            $custom = uc $custom;
+            unless ($custom =~ /^\s*CUSTOMIZES\s+(\S+)/) {
+				warn "warning: \"$File\" Invalid BSF specification - 'customizes' missing\n";
+				delete $Plat{$BSF};
+				close FILE;
+			next;
+            }
+		my $root = $1;
+		my $platname = '';
+		my $CustomizedPlatName = '';		
+
+		# In v1 mode, ARMV5 platform implies ARMV5_ABIV1 platform listed in the platlist		
+		my $Armv5Flag = 0;
+		if (!$variantABIV2Keyword && $root =~ /^ARMV5$/i) {
+			$Armv5Flag = 1;
+		}
+
+		# Support for Hierarchy of Customizations (BSF file customization of another BSF file)
+		# 1. Check whether the BSF file customizes another BSF file.
+		# 2. If so, check whether the root BSF file has already been read.
+		# 3. If not read, then defer the current BSF file reading until the root file is read.
+		my $rootPlatFound = 0;
+		if (defined %{$Plat{$root}} || $Armv5Flag) 
+		{
+			# BSF platform customizes another valid BSF platform
+			if (defined $Plat{$root}{'CUSTOMIZES'}) 
+			{
+				$rootPlatFound = 1;
+				$platname = $root;
+				$CustomizedPlatName = $root;
+
+				# Set the root platform name which is same as of customizes platform
+				$Plat{$BSF}{'ROOTPLATNAME'} = $Plat{$root}{'ROOTPLATNAME'};
+			}
+			# BSF platform customizes to one of the existing ABI platforms
+			else
+			{
+				# All BPABI platforms inherits from ABIV2 platform listed in the platlist
+				if (grep /^$root$/i, @BPABIPlats) {
+					$platname = "ABIV2";
+				}
+				elsif ($Armv5Flag) {
+				# In v1 mode, ARMV5 platform implies ARMV5_ABIV1 platform listed in the platlist
+					$platname = "ARMV5_ABIV1";	
+				}
+				else {
+					$platname = $root;
+				}
+				
+				$CustomizedPlatName=$root;
+
+				# BSF File check Begins 
+				# The following check is included to handle the existing BSF files which has to behave in different manner
+				# in default v1 mode and v2 mode. The following code changes the BSF name and the custmoized platform name
+				# to the implied names. This is done to support switching between v1 and v2 modes by enabling the keyword in
+				# the variant configuration file.
+				# In v1 mode, the ARMV6_ABIV1 => ARMV6 platform and ARMV6 => ARMV6_ABIV2 platform.
+				if (!$variantABIV2Keyword) {
+					if ($BSF =~ /^ARMV6_ABIV1$/i) {
+						$BSF = "ARMV6";	
+						$CustomizedPlatName = "ARMV5";	
+					}
+					elsif ($BSF =~ /^ARMV6$/i) {
+						$BSF = "ARMV6_ABIV2";	
+						$CustomizedPlatName = "ARMV5_ABIV2";
+						$platname = "ABIV2";
+					}
+				}
+				# BSF File check Ends
+
+				# Set the root platform name
+				$Plat{$BSF}{'ROOTPLATNAME'} = $CustomizedPlatName;
+			}			
+		}
+		else
+		{
+			my $rootbsf = $Path.$root.".bsf";			
+			if ( -e $rootbsf ) {
+				# BSF file customizes another BSF file which has not been read yet.
+				# So defer current BSF file reading until the root BSF file is read.				
+				delete $Plat{$BSF};
+				push(@BSFs, $BSF);
+				next;		
+			}
+		}
+		# If the customizes platform is not a valid BSF platform or BPABI platorm or ARMV5 or ARMV5_ABIV1,
+		# then throw warning.
+		unless ($rootPlatFound || $root =~ /^ARMV5(_ABIV1)?$/ || (grep /^$root$/i, @BPABIPlats)) {
+			warn "warning: \"$File\" Invalid BSF specification - customization restricted to ARMV5, ABIv2 and valid BSF platforms\n";
+			close FILE;
+			delete $Plat{$BSF};
+			next;
+		}
+			
+		my ( $key, $value);
+		while (($key, $value) = each %{$Plat{$platname}}) {
+			$Plat{$BSF}{$key}=$value;
+		}
+		
+		push @{$Plat{$CustomizedPlatName}{'CUSTOMIZATIONS'}}, $BSF;
+		$Plat{$BSF}{'CUSTOMIZES'} = $CustomizedPlatName;
+		while (<FILE>) {
+			next if (/^$|^\#/);
+			if (/^\s*SMP\s*$/i) {
+				$Plat{$BSF}{'SMP'} = 1;
+				$Plat{$BSF}{'StatLink'} = lc $BSF;
+				next;
+			}
+			$Plat{$BSF}{'CUSTOMIZATION_DATA'} .= $_;
+		}
+		# BSF file statements will have newline character("\n") at the end, except for the last statement.
+		# So append "\n" for the last BSF file statement.
+		# "\n" will be used to split BSF statements to support hierarchy of customizations.
+		$Plat{$BSF}{'CUSTOMIZATION_DATA'} .= "\n";
+		close FILE;
+	}
+	1;
+}
+
+sub Plat_Init ($) { # takes path to ASSP modules
+	my ($Path)=@_;
+
+	my %PlatHashKeys=(
+		ABI=>1,
+		ASSPABI=>1,
+		SINGLE=>1,
+		Compiler=>1,
+		CPU=>1,
+		MakeMod=>1,
+		MakeCmd=>1,
+		OS=>1,
+		DefFile=>1,
+		ASSP=>1,
+	);
+
+#	Include the list of BPABI platforms
+	&Set_Plat;
+
+	Init_BSFs($Path);
+
+#	get a list of modules
+	opendir DIR, $Path;
+	my @_ASSPs=grep s/^([^\.].*)\.ASSP$/$1/, map { uc $_ } readdir DIR;
+	closedir DIR;
+
+	my @ASSPs;
+	foreach (@_ASSPs) {
+		if (!$ENV{USEARMCC} and /EDG$/i) {
+#			warn(
+#				"Note: ASSP \"$_\" disabled\n"
+#			);
+
+			next;
+		}
+		push @ASSPs, $_;
+	}
+
+#	open each module in turn, and add it to the array
+	my $ASSP;
+	foreach $ASSP (@ASSPs) {
+		my $File=$Path.$ASSP.'.assp';
+#		check whether the assp is already defined
+		if (defined %{$Plat{$ASSP}}) {
+			warn(
+				"$File : warning: ASSP \"$ASSP\" already defined\n",
+				" ... skipping this module\n"
+			);
+
+			next;
+		}
+#		open the module
+		unless (open FILE, $File) {
+			warn "warning: Can't open assp module \"$File\"\n";
+			next;
+		}
+		my %Data=();
+		my %SingleData=();
+		my $MatchingSingle="";
+		my @Errors=();
+		while (<FILE>) {
+#			strip comments
+			s/^([^#]*)#.*$/$1/o;
+#			skip blank lines
+			if (/^\s*$/o) {
+				next;
+			}
+#			get the key-value pair
+			unless (/^\s*(\w+)\s+(\w+)\s*$/o) {
+				push @Errors, "$File($.) : warning: syntax error - only key-value pairs allowed\n";
+				next;
+			}
+			my ($Key, $Val)=($1, $2);
+			if ($PlatHashKeys{$Key}!=1) {
+				push @Errors, "$File($.) : warning: unrecognized keyword - $Key\n";
+				next;
+			}
+			if ($Key eq "SINGLE") {
+				$SingleData{Single} = 1;
+				$SingleData{ASSP} = $ASSP;
+				$MatchingSingle = uc $2;
+			} else {
+				$Data{$Key}=$Val;
+				$SingleData{$Key}=$Val;
+			}
+		}
+		close FILE;
+		if (@Errors) {
+			warn(
+				@Errors,
+				" ... skipping this module\n"
+			);
+			next;
+		}
+# change -  Allow ASSPs to pick up all the options of the ABI they specify, 
+# in particular the compiler they need.
+			$Data{'ASSP'} = $ASSP unless $Data{'ASSP'};
+			if ($Plat{$Data{'ABI'}}) {
+			foreach (keys %{$Plat{$Data{'ABI'}}}) {
+			$Data{$_} = $Plat{$Data{'ABI'}}{$_} unless ($_ =~ /^GENERIC$/i) or $Data{$_};
+			}
+		}
+
+		%{$Plat{$ASSP}}=%Data;
+		if ($MatchingSingle ne "") {
+			foreach (keys %Data) {
+			$SingleData{$_} = $Data{$_} unless ($_ =~ /^GENERIC$/i) or $SingleData{$_};
+			}
+			%{$Plat{$MatchingSingle}}=%SingleData;
+		}			
+	}
+}
+
+sub Plat_GetL ($$$$) { # takes Platform name, ref to plat hash, ref to bldmacrohash, bldmake plat command notifier
+	my ($Candidate,$PlatHash_ref,$BldMacrosHash_ref,$platcommand)=@_;
+	$Candidate=uc $Candidate;
+
+# is platform in our list?
+	unless (defined $Plat{$Candidate}) {
+
+		# is platform BPABI compliant one?
+		if (!$variantABIV2Keyword && $Candidate eq 'ARMV5') {
+		}
+		elsif (not(grep /^$Candidate$/i, @BPABIPlats))
+		{
+			die "ERROR: Platform \"$Candidate\" not supported\n";
+		}
+	}
+
+	my $BPABIPlat;
+	my %PlatHash=();
+
+# check the data
+# All BPABI platforms inherit ABIV2 properties 
+	if (grep /^$Candidate$/i, @BPABIPlats) 
+	{
+		$BPABIPlat='ABIV2';
+		%PlatHash=%{$Plat{$BPABIPlat}};
+	}
+# In v1 mode, ARMV5 platform implies ARMV5_ABIV1 platform listed in the platlist
+	elsif (!$variantABIV2Keyword && $Candidate eq 'ARMV5') {
+		%PlatHash=%{$Plat{ARMV5_ABIV1}};
+	}
+	else {
+		%PlatHash=%{$Plat{$Candidate}};
+	}
+
+# set the defaults
+	$PlatHash{Name}=$Candidate;
+	$PlatHash{Real}=$PlatHash{Name} unless $PlatHash{Real};
+	$PlatHash{Ext}=".$PlatHash{Real}" unless $PlatHash{Ext};
+	$PlatHash{ASSP}=$PlatHash{Real} unless $PlatHash{ASSP};
+
+# Get the root platform name to support hierarchy of customizations
+	my $CustomizedPlat=$PlatHash{'ROOTPLATNAME'};
+
+	if ((defined($Candidate)  && ($Candidate =~ /^ARMV5/i)) || (defined($CustomizedPlat) && ($CustomizedPlat =~ /^ARMV5/i))) {
+# Compiler name should be set as ARMCC for all ARMV5 platforms
+		$PlatHash{Compiler}='ARMCC';
+		$PlatHash{Toolchain}='rvct22';
+	}
+	elsif ($BPABIPlat) {
+# Compiler name should be set as that of platform name for all BPABI platforms
+		$PlatHash{Compiler}=$Candidate;
+		$PlatHash{Toolchain}=$Candidate;
+	}
+	elsif ($CustomizedPlat) {
+# Compiler name should be set as that of the customized platform name incase of customization
+		$PlatHash{Compiler}=$CustomizedPlat;
+		$PlatHash{Toolchain}=$CustomizedPlat;
+	}
+
+	$PlatHash{Compiler}='GCC32' unless $PlatHash{Compiler};
+	$PlatHash{OS}='EPOC32' unless $PlatHash{OS};
+	$PlatHash{MakeMod}='Cl_gcc' unless $PlatHash{MakeMod};
+	$PlatHash{MakeCmd}='make' unless $PlatHash{MakeCmd};
+	$PlatHash{CPU}='MARM' unless $PlatHash{CPU};
+	$PlatHash{Single}=0 unless $PlatHash{Single};
+	$PlatHash{UsrHdrsOnly}=0 unless $PlatHash{UsrHdrsOnly};
+	$PlatHash{Generic}=0 unless $PlatHash{Generic}; # generic means "for a target device but no particular ASSP"
+	$PlatHash{SupportsMultiplePlatforms}=0 unless $PlatHash{SupportsMultiplePlatforms};
+
+	$PlatHash{ABI}='ARMI' unless $PlatHash{ABI};
+	$PlatHash{ASSPABI}='ARM4' unless defined $PlatHash{ASSPABI};
+
+	unless (defined $PlatHash{DefFile}) {
+		if ($PlatHash{Compiler} eq 'VC32') {
+			$PlatHash{DefFile}='WINS';
+		} else {
+			$PlatHash{DefFile}='MARM';
+		}
+	}
+	
+# .MMP macros - keeping the order is useful
+	@{$PlatHash{MmpMacros}}=$PlatHash{Compiler};
+	push @{$PlatHash{MmpMacros}}, $PlatHash{OS};
+	push @{$PlatHash{MmpMacros}}, $PlatHash{CPU} unless $PlatHash{CPU} eq $PlatHash{OS};
+	push @{$PlatHash{MmpMacros}}, $PlatHash{ASSP} unless $PlatHash{ASSP}=~/^($PlatHash{CPU}|$PlatHash{OS})$/;
+
+	if ($PlatHash{Single}) {
+		push @{$PlatHash{MmpMacros}}, 'SINGLE';
+	}
+	if ($PlatHash{SMP}) {
+		push @{$PlatHash{MmpMacros}}, 'SMP';
+	}
+	if ($PlatHash{EABI}) {
+		push @{$PlatHash{MmpMacros}}, 'EABI';
+	}
+	if ($PlatHash{Compiler} eq 'VC32') {
+		my $MSVCVer = &Winutl_MSVCVer($platcommand);
+		my $MSVCSubVer = &Winutl_MSVCSubVer($platcommand);
+		push @{$PlatHash{MmpMacros}}, 'MSVC'.$MSVCVer;
+		push @{$PlatHash{MmpMacros}}, 'MSVC'.$MSVCVer.$MSVCSubVer;
+		if ($MSVCVer > 6) {
+			push @{$PlatHash{MmpMacros}}, 'MSVCDOTNET';
+		}
+	}
+	if ($PlatHash{Compiler} eq 'ARMCC') {
+		my ($MajVer, $MinVer) = RVCT_plat2set::get_version_list($Candidate);
+		push @{$PlatHash{MmpMacros}}, 'ARMCC_'.$MajVer;
+		push @{$PlatHash{MmpMacros}}, 'ARMCC_'.$MajVer.'_'.$MinVer;
+	}
+	
+	if ($PlatHash{Compiler} eq 'X86GCC') {	
+			push @{$PlatHash{MmpMacros}}, 'GCC32';
+	}
+
+	## TOOLS2 Specific Macros ##
+	
+	if ($PlatHash{Compiler} eq 'GCC32') {
+		push @{$PlatHash{MmpMacros}}, 'MINGW32';
+		push @{$PlatHash{MmpMacros}}, '_STLP_LITTLE_ENDIAN';
+		
+	}
+
+    # add GCCXML to the mmp macro list, so we can filter out stuff in bld.inf files and mmps.
+    # note that this mean that __GCCXML__ is automacally routed to makefile, so we can take out explicit call. 
+    if( $PlatHash{Name} eq "GCCXML") {
+        push @{$PlatHash{MmpMacros}}, 'GCCXML';
+    }
+	
+# add specific platform macros for platforms customising others.
+	if (Plat_Customizes($PlatHash{Name})) {
+		push @{$PlatHash{MmpMacros}}, $PlatHash{Name} unless grep /$PlatHash{Name}/, @{$PlatHash{MmpMacros}};
+	}
+
+# compilation macros
+	@{$PlatHash{Macros}}=@EpocMacros;
+	foreach (@{$PlatHash{MmpMacros}}) {
+		## If STLP_LTTLE_ENDIAN is used, then dont append __ to the macro name ##
+		if ($_ =~ m/STLP_LITTLE_ENDIAN/) {
+			push @{$PlatHash{Macros}}, $_;
+		} else {
+		push @{$PlatHash{Macros}}, '__'.$_.'__';
+		}
+	}
+
+#	extra special .MMP macros which aren't applied for compilation
+	if ($PlatHash{Generic}) {
+		push @{$PlatHash{MmpMacros}}, "GENERIC_$PlatHash{CPU}";
+		if ($PlatHash{CPU} eq 'MARM') {
+#			we can't define this for ASSP platforms because we won't be sure what
+#			the ABI is until we've processed the .MMP file
+			push @{$PlatHash{MmpMacros}}, "MARM_$PlatHash{ABI}";
+		}
+	}
+
+# builds
+	@{$PlatHash{Blds}}=@{$BldLists{$PlatHash{OS}}};
+
+# output some information
+	if ($Mode{Verbose}) {
+		print
+			"Platform         $PlatHash{Name}\n",
+			"Real Name        $PlatHash{Real}\n",
+			"Compiler         $PlatHash{Compiler}\n",
+			"OS               $PlatHash{OS}\n",
+			"CPU              $PlatHash{CPU}\n",
+			"ASSP             $PlatHash{ASSP}\n",
+			"ABI              $PlatHash{ABI}\n",
+			"ASSPABI          $PlatHash{ASSPABI}\n",
+			"Makefile Module  $PlatHash{MakeMod}\n",
+			"Makefile Type    $PlatHash{MakeCmd}\n",
+			"MMP Macros       @{$PlatHash{MmpMacros}}\n",
+			"Macros           @{$PlatHash{Macros}}\n",
+			"Blds             @{$PlatHash{Blds}}\n"
+		;
+	}
+
+	%{$PlatHash_ref}=%PlatHash;
+	%{$BldMacrosHash_ref}=%BldMacros;
+}
+
+sub Plat_List () {
+
+#	Include the list of BPABI platforms
+	&Set_Plat;
+
+#	return list of supported platforms
+
+	#sort keys %Plat;
+	my @PlatList;
+	my $Key;
+	foreach $Key (keys %Plat) {
+		if (!$variantABIV2Keyword && $Key =~ /^armv5_abiv1$/i) {
+			$Key = 'ARMV5';
+		}
+		unless (grep /^$Key$/i, @PlatList) {
+			push @PlatList, $Key;
+		}
+	}
+	return @PlatList
+}
+
+sub Plat_AssocIDE ($$) {
+#	return the IDE associated with a "Real" platform if there is one
+	my ($Candidate, $AssocIDEs)=@_;
+
+	unless (defined $Plat{$Candidate}) {
+		die "ERROR: Platform \"$Candidate\" not supported\n";
+	}
+
+	my $Key;
+	foreach $Key (keys %Plat) {
+		if (${Plat{$Key}}{Real}) {
+			if (${Plat{$Key}}{Real} eq $Candidate) {
+				push @$AssocIDEs, $Key;
+			}
+		}
+	}
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/e32variant.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,156 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+package E32Variant;
+
+require Exporter;
+
+@ISA = qw(Exporter);
+
+@EXPORT = qw(Variant_GetMacroList Variant_GetMacroHRHFile Variant_GetMacro);
+
+use Pathutl;
+
+# using $FindBin::Bin to figure out the location of the epoc32\tools directory as 
+# IDE doesn't understand env{EPOCROOT}
+
+my $PerlBinPath;	# fully qualified pathname of the directory containing this script
+
+BEGIN {
+	require 5.005_03;		# check user has a version of perl that will cope
+	$PerlBinPath = $FindBin::Bin;	# X:/epoc32/tools
+	$PerlBinPath =~ s/\//\\/g;	# X:\epoc32\tools
+}
+
+# get epocroot if it is set
+my $epocroot = $ENV{EPOCROOT};
+my $toolspath;
+
+#if epocroot is not set figure it out
+if(!$epocroot){
+    $epocroot = $PerlBinPath . "\\..\\..\\" ; #infer epocroot
+    $toolspath = $PerlBinPath;
+}else{
+    $toolspath = $epocroot . "epoc32\\tools\\";
+}
+
+$epocroot=~s/^(.:)//io;    # remove drive letter
+$epocroot=&Path_Strip($epocroot); # collapse
+
+my $cfgFile =  $toolspath . "variant\\variant.cfg"; # default location
+$cfgFile =~ /^(.:)/i; # match the drive
+my $MacroHRHLocation_Drive = lc($1); # save the drive 
+
+sub Variant_GetMacroHRHFile{
+    my $file;
+    if(-e $cfgFile){
+	open(FILE, $cfgFile) || die "\nCould not open: " . $cfgFile ."\n";
+	while (<FILE>) {
+	    # strip comments
+	    s/^([^#]*)#.*$/$1/o;
+	    # skip blank lines
+	    if (/^\s*$/o) {
+		next;
+	    }
+	    # get the hrh file
+	    if($_ =~ /\.hrh/xi){
+		$file = $_; 
+		last;
+	    }
+	}
+	close FILE;
+	die "\nERROR: No variant file specified in $cfgFile!\n" unless $file;
+	$file =~ s/\s+//g;
+	$file=~s/^(.:)//io;    # remove drive letter
+	my $paths_drive = lc($1);
+
+	$file = Path_MakeEAbs($epocroot."EPOC32\\", $epocroot, $file); # assume relative to EPOCROOT
+
+	if($paths_drive){
+	    die "\nERROR: Variant file specified in $cfgFile is not on the same drive as \\epoc32\\\n" 
+		unless ($paths_drive eq $MacroHRHLocation_Drive);
+	}
+	if(!(-e $file)) {
+	    die "\nERROR: $cfgFile specifies $file which doesn't exist!\n";
+	}
+
+	# make sure it is in dos syntax
+	$file=~ s/\//\\/g;
+    }
+    return $file;
+}
+
+
+# returns the variant specific macro definitions as a list
+sub Variant_GetMacroList{
+
+    my @macros = ();
+    my $vfile = Variant_GetMacroHRHFile();
+    
+    if($vfile)
+    {
+	my $VariantFilePath = Path_Split('Path',$vfile);
+	chop( $VariantFilePath );
+	$VariantFilePath = &Path_PrefixWithDriveAndQuote($VariantFilePath);
+	$vfile = &Path_PrefixWithDriveAndQuote($vfile);
+	my $e32Path = &Path_PrefixWithDriveAndQuote($epocroot."epoc32\\include");
+	
+	open CPPPIPE,"cpp -I $e32Path -I $VariantFilePath -undef -dM $vfile |" or die "ERROR: Can't invoke CPP.EXE\n";
+	while(<CPPPIPE>){
+	    if($_ =~ /(\#define)(\s+)(.+)/){
+		push @macros, $3;
+	    }
+	}
+	close CPPPIPE;
+    }
+    return @macros;
+}
+
+sub Variant_GetMacro{
+
+    my $file;
+    if(-e $cfgFile){
+	open(FILE, $cfgFile) || die "\nCould not open: " . $cfgFile ."\n";
+	while (<FILE>) {
+	    # strip comments
+	    s/^([^#]*)#.*$/$1/o;
+	    # skip blank lines
+	    if (/^\s*$/o) {
+		next;
+	    }
+	    # get the hrh file
+	    if($_ =~ /^ENABLE_ABIV2_MODE$/xi){
+		close FILE;
+		return 1;
+	    }
+	}
+	close FILE;
+    }
+    return 0;
+}
+
+1;
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/extractvars.make	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,44 @@
+# Copyright (c) 2005-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:
+#
+
+include $(CONFIG_FILE)
+
+all:
+	echo PREFIXFILE=$(PREFIXFILE)
+	echo VFP2MODE_OPTION=$(VFP2MODE_OPTION)
+	echo UNDEFINED_SYMBOL_REF_OPTION=$(UNDEFINED_SYMBOL_REF_OPTION)
+	echo PREINCLUDE_OPTION=$(PREINCLUDE_OPTION)
+	echo PREINCLUDE_OPTION_FCLOGGER=$(PREINCLUDE_OPTION_FCLOGGER)
+	echo VFP2MODE_OPTION=$(VFP2MODE_OPTION)
+	echo TRANASM=$(TRANASM)
+	echo RUNTIME_LIBS_LIST=$(RUNTIME_LIBS_LIST)
+	echo COMPILER_INCLUDE_PATH=$(COMPILER_INCLUDE_PATH)
+	echo VERSION=$(VERSION)
+	echo VERSION_INFO=$(VERSION_INFO)
+	echo COMPILER_PLAT=$(COMPILER_PLAT)
+	echo FC_LOGGER_INCLUDE_OPTION=$(FC_LOGGER_INCLUDE_OPTION)
+	echo FC_LOGGER_DICTIONARY_FILE_NAME=$(FC_LOGGER_DICTIONARY_FILE_NAME)
+	echo FC_LOGGER_GENERATED_C_FILE_NAME=$(FC_LOGGER_GENERATED_C_FILE_NAME)
+	echo COMMANDFILE_OPTION=$(COMMANDFILE_OPTION)
+	echo VIA_FILE_PREFIX=$(VIA_FILE_PREFIX)
+	echo VIA_FILE_SUFFIX=$(VIA_FILE_SUFFIX)
+	echo STATIC_LIBS_LIST=$(STATIC_LIBS_LIST)
+	echo STATIC_LIBRARY_PATH=$(STATIC_LIBRARY_PATH)
+	echo STATIC_LIBS=$(STATIC_LIBS)
+	echo OE_EXE_LIBS=$(OE_EXE_LIBS)
+	echo OE_EXE_LIBS_WCHAR=$(OE_EXE_LIBS_WCHAR)
+	echo OE_IMPORT_LIBS=$(OE_IMPORT_LIBS)
+	echo OPTION_PREFIX=$(OPTION_PREFIX)
+	echo CCFLAGS=$(CCFLAGS)
+	echo SYM_NEW_LIB=$(SYM_NEW_LIB)
+	echo OE_NEW_LIB=$(OE_NEW_LIB)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/fcloggerutl.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,55 @@
+# 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:
+# FC_LOGGER.PM
+# 
+#
+
+package FCLoggerUTL;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	PMCheckFCLoggerVersion
+);
+
+#Function Call Logger
+sub PMCheckFCLoggerVersion() {
+	my $exe=$ENV{EPOCROOT}."epoc32\\tools\\fc_logger\\edgcpfe.exe";
+	#Check if file exists
+	if (not -e $exe) {
+		print "WARNING: File doesn't exist $exe \n";
+		return 0;
+	}
+
+	open FCLPIPE, "$exe -v 2>&1 |";
+	# Read all output from file into array
+	my @lines=<FCLPIPE>;
+	chomp @lines;
+	# combine into single string with each line starting with a :
+	my $line=join(":", "", @lines);
+	close FCLPIPE;
+
+	if ($line =~ m/version\s([0-9\.]+)/) {
+		my $Version      = $1;
+		$Version		 =~ m/(\d+)\.(\d+)\.?([\d+])?/;
+		my $MajorVersion = $1;
+		my $MinorVersion = $2;
+		my $PatchLevel   = $3;
+		if ($MajorVersion<3 or $MinorVersion<7) {
+			print "WARNING: $exe version is less than 3.7.1. The -logfc option will be ignored.\n";
+			return 0;
+		}
+	}
+	return 1;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/filenamepolicyexclusions.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,69 @@
+OMX_Audio.h
+OMX_Component.h
+OMX_ContentPipe.h
+OMX_Core.h
+OMX_Image.h
+OMX_Index.h
+OMX_IVCommon.h
+OMX_Loader.h
+OMX_Other.h
+OMX_Types.h
+OMX_Video.h
+EGL
+EGL/egl.h
+EGL/egltypes.h
+EGL/egluids.hrh
+EGL/eglext.h
+WF
+WF/wfc.h
+WF/wfcext.h
+WF/wfcplatform.h
+WF/openwfcuids.hrh
+KHR/khrplatform.h
+GLES
+GLES/egldisplayproperty.h
+GLES/egldisplaypropertydef.h
+GLES/egltypes.h
+GLES/legacy_egl_1_1/egl.h
+GLES/legacy_egl_1_1/egltypes.h
+GLES/gl.h
+GLES/glext.h
+GLES/glplatform.h
+GLES/glextplatform.h
+GLES/openglesuids.hrh
+GLES/egl.h
+GLES/egldisplayproperty.h
+GLES/egldisplaypropertydef.h
+GLES2
+GLES2/gl2.h
+GLES2/gl2ext.h
+GLES2/gl2platform.h
+GLES2/gl2extplatform.h
+GLES2/openglesuids.hrh
+VG
+VG/openvg.h
+VG/vgu.h
+VG/openvguids.hrh
+VG/1.0/openvg.h
+VG/1.0/vgu.h
+VG/1.1/openvg.h
+VG/1.1/vgu.h
+libEGL.dll
+libEGL.lib
+libGLESv1.dll
+libGLESv1.lib
+libGLESv2.dll
+libGLESv2.lib
+libGLES_CM.dll
+libGLES_CM.lib
+libGLES_CM10.dll
+libGLES_CM10.lib
+libGLESv1_CM.dll
+libGLESv1_CM.lib
+libOpenVG.dll
+libOpenVG.lib
+libOpenVGU.dll
+libOpenVGU.lib
+libWFC.lib
+libWFC.dll
+libWFCu.def
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/findimp.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,77 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+my $argc=scalar(@ARGV);
+$argc==2 or die "findimp <map file> <output file>\n";
+my $infile=@ARGV[0];
+my $outfile=@ARGV[1];
+
+my @imp_dll_names;
+my @imp_dll_ordinal_lists;
+my $i=0;
+open INFILE, $infile or die "Can't open input file $infile\n";
+while (<INFILE>) {
+	if (/^\s*(\d+)\:(([0-9|a-f|A-F])+)\s+__imp_(\S+)\s+(([0-9|a-f|A-F])+)\s+(\S+?)\:(.*?)\s*$/) {
+		my $section_num=$1;
+		my $section_offset=hex $2;
+		my $import_name="__imp_$4";
+		my $addr=$5;
+		my $dllname=$8;
+		my $implist;
+		for ($i=0; $i<scalar(@imp_dll_names); ++$i) {
+			if ($imp_dll_names[$i] eq $dllname) {
+				$implist=$imp_dll_ordinal_lists[$i];
+				push @$implist, $section_offset;				
+				last;
+			}
+		}
+		if ($i==scalar(@imp_dll_names)) {
+			my @new_list;
+			push @new_list, $section_offset;
+			push @imp_dll_names, $dllname;
+			push @imp_dll_ordinal_lists, \@new_list;
+		}
+	}
+}
+close INFILE;
+my $noffset=4;
+my $n_imp_dlls=scalar(@imp_dll_names);
+for ($i=0; $i<$n_imp_dlls; ++$i) {
+	$noffset+=8;
+	my $implist=$imp_dll_ordinal_lists[$i];
+	foreach (@$implist) {
+		$noffset+=4;
+	}
+}
+open OUTFILE, ">$outfile" or die "Can't open output file $outfile\n";
+binmode OUTFILE;
+printf OUTFILE "%c%c%c%c",$n_imp_dlls&0xff,($n_imp_dlls>>8)&0xff,($n_imp_dlls>>16)&0xff,$n_imp_dlls>>24;
+$i=0;
+for ($i=0; $i<$n_imp_dlls; ++$i) {
+	my $nlen=length $imp_dll_names[$i];
+	printf OUTFILE "%c%c%c%c",$noffset&0xff,($noffset>>8)&0xff,($noffset>>16)&0xff,$noffset>>24;
+	$noffset+=$nlen + 1;
+	my $implist=$imp_dll_ordinal_lists[$i];
+	my $nimp=scalar(@$implist);
+	printf OUTFILE "%c%c%c%c",$nimp&0xff,($nimp>>8)&0xff,($nimp>>16)&0xff,$nimp>>24;
+	foreach (@$implist) {
+		printf OUTFILE "%c%c%c%c",$_&0xff,($_>>8)&0xff,($_>>16)&0xff,$_>>24;
+	}
+}
+for ($i=0; $i<$n_imp_dlls; ++$i) {
+	print OUTFILE $imp_dll_names[$i];
+	printf OUTFILE "%c",0;
+}
+close OUTFILE;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/ide_cw.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,4517 @@
+# Copyright (c) 2001-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:
+# Makmake-module for creating XML files which can be imported as CodeWarrior IDE projects
+# 
+#
+
+package Ide_cw;
+
+my $CW_minimum_supported_version = 2.8;
+
+# declare variables global for module
+my $BaseAddress="";
+my %IdeBlds=();
+my %PrjHdrs=();
+my @Win32LibList=();
+my $Win32Resrc;
+my $Win32StdHeaders;
+
+my $ExtraFilesPath="";
+my @KnownRoots=();
+
+my @addedFiles=();
+my $addHeaders = 1;
+my $addDocuments = 1;
+
+my %processedPlatforms;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	PMHelp_Mmp
+
+	PMCheckPlatformL
+
+	PMPlatProcessMmp
+
+	PMStartBldList
+		PMBld
+			PMResrcBld
+
+	PMEndSrcList
+);
+
+require Cl_bpabi;
+use BPABIutl;
+use E32Variant;
+use E32Plat; 
+use Winutl;
+use Armutl;
+use Pathutl;
+use Win32API::Registry qw( :ALL );
+use Preprocessor;
+use RVCT_plat2set;
+
+sub PMHelp_Mmp {
+	&Winutl_Help_Mmp;
+}
+
+my $RVCTMajorVersion = Armutl_RVCTMajorVersion();
+my $RVCTMinorVersion = Armutl_RVCTMinorVersion();
+my $RVCTVersion = "${RVCTMajorVersion}_${RVCTMinorVersion}";
+
+my $oP = "--";
+$oP = "-" if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2);
+
+my $cfgMacro = &Variant_GetMacro();
+
+use FindBin;
+use lib $FindBin::Bin."\\perllib";
+
+#use the DOM xml module
+use XML::DOM;
+
+my $projectTemplate;
+my $linkDescriptorTemplate;
+
+my $xmlParser;
+my $xmlProjectDoc;
+my $xmlLinkDescriptorDoc;
+my $xmlLinkDescriptorCommandParent;
+my $xmlLinkDescriptorSymbolParent;
+my $xmlLinkDescriptorDumpFileParent;
+
+my $xmlLinkOrder;		# for accumulating the link order
+my $xmlFileList;		# for accumulating the file list
+my $xmlSourceGroup;		# for accumulating the source
+my $xmlHeadersGroup;	# for accumulating local header files
+my $xmlRootGroup;		# for accumulating files to be added outside of project groups
+my $xmlLinkGroup;		# for accumulating the link descriptor files
+my $xmlLibGroup;		# for accumulating the libraries
+my $xmlResourcesGroup;	# for accumulating resource related files
+my $xmlDocumentsGroup;	# for accumulating supported files specified with DOCUMENT in the .mmp file
+
+my $MmpFile;
+my $VariantFile;
+my $PrefixFile;
+
+my $CW_major_version;
+my $CW_minor_version;
+my $CW_libpath;
+my @CW_librarypath;
+my @ToolChainLibList;
+
+# Hash to store configuration makefile data for furthur processing
+my %configdata;
+
+sub RoundUp1k($) {
+	# Accept C hexadecimal number (0xNNN).  Convert argument to Kb
+	# rounded up to the next 1kb boundary.
+	use integer;
+	return (hex($_[0]) + 1023) / 1024;
+}
+
+use Genutl;
+use cl_generic;
+
+my $ToolPrefix='';
+my $HelperLib='';
+my %PlatOpt=(
+	'Dlltool'=>'',
+	'Entry'=>'-e',
+	'Gcc'=>'',
+	'Ld'=>'',
+	'Petran'=>'',
+	'Optimize'=>'-O'
+);
+my $Dlltool;
+my $Archive;
+my $Link;
+my $Objcopy;
+
+my %CompatibleABIs=(
+	ARMI=>['ARM4', 'THUMB'],
+	ARM4=>['ARMI'],
+	THUMB=>['ARMI'],
+	ARMV5=>['ARMV5_ABIV1'],
+	GCCE=>['GCCE'],
+	BPABI=>['ARMV5_ABIV2']
+);
+my @CompatibleABIs;
+
+my $Makecmd;
+my %ABILibPath=();
+
+sub SystemTarget() {
+	return 1 if &main::SystemTrg;
+	my $ExportLibrary=&main::ExportLibrary;
+	# N.B. should get better way to detect kernel probably!!
+	return 1 if ($ExportLibrary =~ /EKERN/i);
+	
+	return 0;
+}
+
+sub SysTrg () {
+	return 1 if &main::SystemTrg;
+	my $ExportLibrary=&main::ExportLibrary;
+	return 1 if ($ExportLibrary =~ /EKERN/i);
+	my $Trg=&main::Trg;
+	return 1 if ($Trg =~ /KSRT/i);
+	return 0;
+}
+
+sub PMUnderlyingABI($) {
+	my ($ABI) = @_;
+	if ($ABI eq 'ARM4T') {
+		if (&main::BuildAsARM) {
+			return 'ARMI';
+		}
+		elsif (SystemTarget()) {
+			return 'ARM4';
+		}
+		else {
+			return 'ARMV4';
+		}
+	}
+	return $ABI;
+}
+
+##### ARMV5 specific options #####
+my $diag_suppressions;
+my $diag_warnings;
+my $diag_errors;
+
+#The options here are handcoded for ABIV1 mode.
+my $contingentOptions;
+my $exceptions = ' --exceptions --exceptions_unwind';
+my $thumbOptions = '--thumb ';
+my $armOptions = '--arm ';
+my $kernelOptions = '--arm --no_exceptions --no_exceptions_unwind';
+my $invariantOptions = 
+  '--cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter';
+$invariantOptions .= ' --dllimport_runtime' unless ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2);  
+# specify floating point model here
+my $floatingpointmodel = "softvfp";
+if (&main::ARMFPU && (&main::ARMFPU =~ /^VFPV2$/i)) {
+	$floatingpointmodel = "vfpv2";
+}
+my $floatingpoint = ' --fpu '.$floatingpointmodel.'';
+
+# Set compiler settings
+$diag_suppressions = '--diag_suppress 66,161,611,654,997,1152,1300,1464,1488,6318,6331';
+$diag_warnings = '';
+$diag_errors = '--diag_error 1267';
+my $commonOptions = "$diag_suppressions $diag_warnings $diag_errors";  
+# variables added to fetch the options from the BSF files
+my @commonOptions;
+my @thumbOptions;
+my @armOptions;
+my @kernelOptions;
+my @invariantOptions;
+my @linkerOptions;
+my @archiverOptions;
+
+my $linkCommand = "";		
+# variables to process and store the default and BSF file options
+my $invopts = $invariantOptions;
+my $linkeropts;
+my $archiveropts;
+#varible to store the BSF add options
+my $bsfaddoptions = undef;
+#variable to store the compiler flags, defs and other options
+my $CCFLAGS = undef;
+my $CCDEFS = undef;
+my $CCUREL = undef;
+my $CCUDEB = undef;
+
+
+#GCCE specific OPIONS
+
+my $GCCE_CompilerOption = '-march=armv5t -mthumb-interwork -mapcs';
+$GCCE_CompilerOption .= " -msoft-float -fexceptions -pipe -nostdinc -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas";
+#Flag to check for the customized GCCE platform
+my $CustGCCE=0;
+#Variable to fetch the Customized platform
+my %CustPlat=&main::PlatRec;
+#Flags to read the options
+my $kernelOption=0;
+my $buildAsArmOption=0;
+my $thumbOption=0;
+
+
+my $ArmIncDir;
+my @ArmLibList;
+my $ArmRT;
+
+my %BSF_keywords = (
+		    COMMON_OPTIONS => 1,
+		    THUMB_OPTIONS => 1,
+		    ARM_OPTIONS => 1,
+		    KERNEL_OPTIONS => 1,
+		    INVARIANT_OPTIONS => 1,
+			LD_OPTIONS => 1,
+			AR_OPTIONS => 1
+		   );
+sub PMStartBldList($) 
+{
+	($Makecmd) = @_;
+	my @BldList=&main::BldList;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $ABI=&main::ABI;
+	my $kernelOption=0;
+	my $buildAsArmOption=0;
+	my $thumbOption=0;
+	my @MacroList=&main::MacroList();
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__ ";
+	my %plat = &main::PlatRec();
+
+	$CCFLAGS = "";
+	$CCDEFS = "";
+	$CCUREL = "";
+	$CCUDEB = "";
+	
+	$VariantFile=&main::VariantFile();	
+
+	#read the configuration make file into the hash for only the BPABI platforms
+	my $config_file = BPABIutl_Config_Path(&main::Plat);
+	if ($config_file) {
+		collect_config_data($config_file);
+	}
+		
+	Read_BSF_Options() if ($plat{'CUSTOMIZES'});
+
+	if (SysTrg()) {
+		$kernelOption=1;
+	} elsif (main::BuildAsARM() or ($ABI eq 'ARMV4')) {
+		$buildAsArmOption=1;
+	} else {
+		$thumbOption=1;
+	}
+
+	my $OtherOpts = undef;
+	my $toolchain = $configdata{COMPILER_PLAT};
+	
+	$OtherOpts = &main::CompilerOption($toolchain);
+	
+	if($kernelOption==1)
+	{
+		if(@kernelOptions) {
+# Kernel options as read from BSF file (KERNEL_OPTIONS keyword)
+			Set_BSF_Options('KERNEL_OPTIONS',\@kernelOptions);
+		}
+		$OtherOpts .= " ".fetch_config_data($configdata{KERNEL_OPTIONS});
+	}
+	elsif($buildAsArmOption==1)
+	{	
+		if(@armOptions) {
+# Arm options as read from BSF file (ARM_OPTIONS keyword)
+			Set_BSF_Options('ARM_OPTIONS',\@armOptions);
+		}
+		$OtherOpts .= " ".fetch_config_data($configdata{ARM_OPTIONS});	
+	}
+	elsif($thumbOption==1)
+	{
+		if(@thumbOptions) {
+# Thumb options as read from BSF file (THUMB_OPTIONS keyword)
+			Set_BSF_Options('THUMB_OPTIONS',\@thumbOptions);
+		}
+		$OtherOpts .= " ".fetch_config_data($configdata{THUMB_OPTIONS});
+	}
+	
+	if($thumbOption==1 || $buildAsArmOption==1)
+	{
+		if (&main::ARMFPU && (&main::ARMFPU =~ /^VFPV2$/i))
+		{
+			$OtherOpts .= "	".$configdata{VFP2MODE_OPTION};
+		}
+		else
+		{
+			$OtherOpts .= "	".$configdata{SOFTVFPMODE_OPTION};
+		}
+	}
+
+	if ($thumbOption==1)
+	{
+		$OtherOpts .= "	".$configdata{COMPILER_THUMB_DEFINES};
+	}
+	
+	$OtherOpts .= "	".$configdata{COMPILER_INTERWORK_DEFINES};
+	
+	if((&main::Plat eq "ARMV5_ABIV1") || (&main::Plat eq "ARMV5" && !$cfgMacro)
+	|| ($CustPlat{'CUSTOMIZES'} 
+	&& (($CustPlat{'ROOTPLATNAME'} eq "ARMV5_ABIV1" && $cfgMacro) 
+	|| ($CustPlat{'ROOTPLATNAME'} eq "ARMV5" && !$cfgMacro)))) {
+		ComputeCompilerOpts();
+	}
+	elsif($config_file) {
+		$CCFLAGS = &Cl_bpabi::getConfigVariable('CCFLAGS');
+	}
+	$CCFLAGS .= $OtherOpts;
+
+	if(@invariantOptions)
+	{
+	# Invariant options as read from BSF file (INVARIANT_OPTIONS keyword)
+		Set_BSF_Options('INVARIANT_OPTIONS',\@invariantOptions);
+	}
+	if(@commonOptions)
+	{
+	# Common options as read from BSF file (COMMON_OPTIONS keyword)
+		Set_BSF_Options('COMMON_OPTIONS',\@commonOptions);
+	}
+	if(@linkerOptions)
+	{
+	# Invariant options as read from BSF file (LD_OPTIONS keyword)
+		Set_BSF_Options('LD_OPTIONS',\@linkerOptions);
+	}
+	if ($BasicTrgType=~/^LIB$/o) {
+		if(@archiverOptions)
+		{
+		# Invariant options as read from BSF file (AR_OPTIONS keyword)
+			Set_BSF_Options('AR_OPTIONS',\@archiverOptions);
+		}	
+	}
+
+	if($bsfaddoptions)
+	{
+		fixbsfoptions($bsfaddoptions);
+	}
+	$CCFLAGS .= $bsfaddoptions;
+	$CCDEFS = $configdata{COMPILER_DEFINES};
+	$CCDEFS .= printlist("-D", @MacroList);
+	$CCDEFS .= $configdata{PLATFORM_DEFINES};
+
+	if($kernelOption==1)
+	{
+		$CCDEFS .= -D__KERNEL_MODE__;
+	}
+	
+	if($VariantFile) { 
+		$CCDEFS .= " -D__PRODUCT_INCLUDE__="."\\\"".&main::Path_Split('File',$VariantFile)."\\\"";
+	}
+	
+	foreach (@BldList) 
+	{
+		if($kernelOption == 0)
+		{
+			if (/DEB$/o) {
+				$CCUDEB .= " ".$configdata{EXCEPTIONS};
+			}
+			else {
+				$CCUREL .= " ".$configdata{EXCEPTIONS};
+			}
+		}
+		#collect the options and macro's depending on the whether it is a UREL or UDEB		
+		my @ml = &main::MacroList($_);
+		if (/DEB$/o) {
+			$CCUDEB .= " ".$CCFLAGS;
+			$CCUDEB .= printlist("-D", @ml);
+			$CCUDEB .= " ".$CCDEFS;
+		}
+		else {
+			$CCUREL .= " ".$CCFLAGS;
+			$CCUREL .= printlist("-D", @ml);
+			$CCUREL .= " ".$CCDEFS;
+		}
+	}
+}
+
+sub ComputeCompilerOpts() {
+	my %plat = &main::PlatRec();
+	my $ABI=&main::ABI;
+	my $TrgType=&main::TrgType;
+
+	if (SysTrg()) {
+	        $contingentOptions = $kernelOptions;
+        } elsif (main::BuildAsARM() or ($ABI eq 'ARMV4')) {
+	        $contingentOptions = $armOptions.$floatingpoint.$exceptions;
+	    } else {
+			$contingentOptions = $thumbOptions.$floatingpoint.$exceptions.' -D__MARM_THUMB__';	
+	}
+	# change support for ARMV4
+	if ($ABI eq 'ARMV4') {
+		$invopts =~ s/5T/4/;
+		$invopts =~ s/inter/nointer/;
+	} else {
+		$contingentOptions .= ' -D__MARM_INTERWORK__';
+	}
+	$CCFLAGS = $commonOptions.' '.$contingentOptions.' '.$invopts.' -c '.' '.&main::CompilerOption("ARMCC");
+}
+
+sub GetMajorVersion ($)
+	{
+	my ($versionString) = @_;
+
+	if ($versionString =~ /^\d\.\d\.\d$/)
+		{
+		$versionString =~ s/\.\d$//;
+		}
+
+	return $versionString;
+	}
+
+sub GetMinorVersion ($)
+	{
+	my ($versionString) = @_;
+
+	if ($versionString =~ /^\d\.\d\.\d$/)
+		{
+		$versionString =~ s/^\d\.\d\.//;
+		}
+	else
+		{
+		$versionString = 0;
+		}
+
+	return $versionString;
+	}
+
+sub PMCheckPlatformL {
+
+	# check version of CodeWarrior for Symbian OS
+
+	my @compatibleCWInstallations;
+
+	$CW_major_version = 0;
+	$CW_minor_version = 0;
+
+	my $minimumMajorVersion = GetMajorVersion ($CW_minimum_supported_version);
+	my $minimumMinorVersion = GetMinorVersion ($CW_minimum_supported_version);
+
+	if (defined $ENV{CW_SYMBIAN_VERSION})
+		{
+		# CW_SYMBIAN_VERSION is set - either MAKMAKE is being executed by an IDE's .mmp Importer,
+		# or the user is specifying a specific CW version to target from the command line.
+		# Either way, we've been given a single version to target, so we attempt to do just that.
+
+		$CW_major_version = GetMajorVersion ($ENV{CW_SYMBIAN_VERSION});
+		$CW_minor_version = GetMinorVersion ($ENV{CW_SYMBIAN_VERSION});
+		
+		push @compatibleCWInstallations, $ENV{CW_SYMBIAN_VERSION};
+		}
+	else
+		{
+		# CW_SYMBIAN_VERSION isn't set - either MAKMAKE is being executed by a pre-OEM3.0 IDE .mmp
+		# Importer or from the command line.  Either way, we delve into the registry and attempt to
+		# target the latest CW for Symbian OS installed, recording all CW for Symbian OS installations
+		# too.
+
+		my $regKeyHandle;
+		my $topLevelKey = HKEY_LOCAL_MACHINE;
+		my $productVersionKey = 'SOFTWARE\\Metrowerks\\CodeWarrior\\Product Versions';
+
+		if (!RegOpenKeyEx($topLevelKey, $productVersionKey, 0, KEY_READ, $regKeyHandle))
+			{		    		
+			die "Can't read \"HKEY_LOCAL_MACHINE\\$productVersionKey\" : ", regLastError(), "\n";
+		    }
+
+		my $subKeyIndex = 0;
+		my $subKeySize = 0;
+		my $subKeyName;
+
+		my @installedCWForSymbianKeys;
+
+		while (RegEnumKeyEx($regKeyHandle, $subKeyIndex, $subKeyName, $subKeySize, [], [], [], []))
+			{
+			push (@installedCWForSymbianKeys, $productVersionKey."\\".$subKeyName) unless ($subKeyName !~ /Symbian/);
+			$subKeyIndex++;
+			}
+
+		RegCloseKey($regKeyHandle) || print STDERR "WARNING: Could not close registry key.";
+
+		my $versionType;
+		my $versionValue;
+
+		foreach my $installedCWForSymbianKey (@installedCWForSymbianKeys)
+			{
+			if (!RegOpenKeyEx($topLevelKey, $installedCWForSymbianKey, 0, KEY_READ, $regKeyHandle))
+				{		    		
+				die "Can't read \"HKEY_LOCAL_MACHINE\\$installedCWForSymbianKey\" : ", regLastError(), "\n";
+			    }
+
+			if (!RegQueryValueEx($regKeyHandle, "VERSION", [], $versionType, $versionValue, []))
+				{
+				die "Can't read \"HKEY_LOCAL_MACHINE\\$installedCWForSymbianKey\\VERSION\" : ", regLastError(), "\n";
+				}
+
+			my $temp_major_version = GetMajorVersion ($versionValue);
+			my $temp_minor_version = GetMinorVersion ($versionValue);
+
+			if (($temp_major_version > $CW_major_version) ||
+				(($temp_minor_version > $CW_minor_version) &&
+				   ($temp_major_version >= $CW_major_version)))
+				{
+				$CW_major_version = $temp_major_version;
+				$CW_minor_version = $temp_minor_version;
+				}
+			
+			if (($temp_major_version > $minimumMajorVersion) ||
+				(($temp_minor_version > $minimumMinorVersion) &&
+				   ($temp_major_version >= $minimumMajorVersion)))
+				{
+				push @compatibleCWInstallations, $versionValue;
+				}
+
+			RegCloseKey($regKeyHandle);
+			}
+		}
+
+	# We've determined a CW version to target, now we validate if we actually support this
+
+	if (!$CW_major_version ||
+		($CW_major_version < $minimumMajorVersion) ||
+		(($CW_major_version >= $minimumMajorVersion) && ($CW_minor_version < $minimumMinorVersion)))
+		{
+		if (defined $ENV{CW_SYMBIAN_VERSION})
+			{
+			die "Error: CW_SYMBIAN_VERSION is set to $ENV{CW_SYMBIAN_VERSION}.\n       The minimum version supported by these tools is $CW_minimum_supported_version.\n";
+			}
+		else
+			{
+			die "ERROR: Unable to identify a compatible CodeWarrior for Symbian OS installation.\n";
+			}
+		}
+
+	if (@compatibleCWInstallations > 1)
+		{
+		my $targetVersion = $CW_major_version;
+		$targetVersion .= ".$CW_minor_version" if $CW_minor_version;
+			
+		print ("Info: More than one compatible CodeWarrior for Symbian OS installation has been detected.\n");
+		print ("      The generated project will target $targetVersion - to override this, set the CW_SYMBIAN_VERSION\n");
+		print ("      environment variable to the version number you wish to target and re-run this command.\n");
+		print ("      Supported version numbers detected : @compatibleCWInstallations.\n");
+		}
+	else
+		{
+		print ("Info: Detected CodeWarrior Version Major=$CW_major_version Minor=$CW_minor_version\n");
+		}
+
+	# CW version has been validated, tailor generated projects on this basis
+
+	$CW_libpath = 'Symbian_Support\Win32-x86 Support\Libraries\Win32 SDK';
+ 	push @CW_librarypath,$CW_libpath;
+ 	# Lib path to support the Carbide runtime libraries
+ 	$CW_libpath = 'Symbian_Support\Runtime\Runtime_x86\Runtime_Win32\Libs';
+ 	push @CW_librarypath,$CW_libpath;
+		
+	if ($CW_major_version == 2.8)
+		{
+		$projectTemplate = "CW_project_template_v3.xml";
+		$linkDescriptorTemplate = "cw_link_descriptor_template.cwlink";
+		}
+	else
+		{
+		$projectTemplate = "CW_project_template_v4.xml";
+		$linkDescriptorTemplate = "cw_link_descriptor_template_v2.cwlink";		
+		}
+		
+	$xmlParser = new XML::DOM::Parser; 
+	$xmlProjectDoc = $xmlParser->parsefile ($FindBin::Bin."\\$projectTemplate");
+}
+
+# Check if a platform is a customization
+sub IsCustomization($) {
+	my ($plat) = @_;
+	return 1 if (Plat_Customizes($plat));
+	return 0;
+}
+
+sub PMPlatProcessMmp (@) {
+	
+	my $currentPlat=&main::Plat;
+
+	return if ($processedPlatforms{$currentPlat});
+	$processedPlatforms{$currentPlat}=1;
+	@ToolChainLibList = &GetLibList;
+	my $TrgType=&main::TrgType;
+	if ($CustPlat{'CUSTOMIZES'} && ($CustPlat{'ROOTPLATNAME'} eq "GCCE"))
+	{
+		$CustGCCE=1;
+	}
+
+	if ($currentPlat =~ /^WINSCW$/)
+		{	
+		my $includes = $ENV{MWCWinx86Includes};
+		&Winutl_DoMmp_Parse(\@_, $includes);
+		@Win32LibList=&Winutl_Win32LibList;
+		$Win32Resrc=&Winutl_Win32Resrc;
+		$Win32StdHeaders=&Winutl_Win32StdHeaders;
+		$BaseAddress=&Winutl_BaseAddress unless ($TrgType eq 'EXE');
+		}
+	elsif ($currentPlat =~ /^ARMV5/ || IsCustomization($currentPlat))
+		{	
+		&Armutl_DoMmp(@_);
+		$ArmIncDir = &Armutl_ArmIncDir;
+		&main::SetStdIncPaths($ArmIncDir);
+		@ArmLibList = &Armutl_ArmLibList;
+		$ArmRT = &Armutl_ArmRT;
+		}
+
+	my $BaseTrg=&main::BaseTrg;
+	my $MakeFilePath=&main::MakeFilePath;
+	$MmpFile=&main::MmpFile;
+	$VariantFile=&main::VariantFile();		
+
+	# Set up the list of known roots
+
+	my $epocroot=&main::Path_Drive . &main::EPOCPath;
+	$epocroot =~ s/EPOC32\\$//i;
+
+	if ($currentPlat eq "GCCE" || $CustGCCE)
+	{
+		$PrefixFile=$epocroot.'epoc32\\include\\gcce\\gcce.h';
+	}
+	else
+	{
+		$PrefixFile=$epocroot.'epoc32\\include\\rvct'.$RVCTVersion.'\\rvct'.$RVCTVersion.'.h';
+	}
+	my $mmproot = &main::Path_Drive . &main::Path_Split('Path',$MmpFile);
+	my $mmprootname = "MMPDir";
+	my $mmpisglobal = 0;
+
+	if (defined $ENV{CW_ROOT_NAME})
+		{
+		# generate KnownRoots suitable for the IDE MMP importer
+		# This has a global source tree for EPOCROOT, and puts the
+		# project next to the MMP file
+
+		addKnownRoot($ENV{CW_ROOT_NAME}, 1, $epocroot, "");
+		$mmprootname = "Project";
+		$mmpisglobal = 1;
+		}
+	else
+		{
+		# generate KnownRoots suitable for command-line generated XML files
+		# We will add a user source tree for MMPDir and EPOCROOT, but can't use
+		# EPOCROOT for the OutputDirectory
+
+		addKnownRoot("EPOCROOT", 0, $epocroot, "");
+		}
+	addKnownRoot($mmprootname, $mmpisglobal, $mmproot, "");
+
+	# Allow for MMP files in component subdirectories by matching multiple levels
+	# up to get {MMPDir}..\whatever paths. Stop one level down from the root,
+	# since "everything on this drive" seems a bit extreme
+	#
+	my $tmppath = $mmproot;
+	my $dotdots = '';
+	while ($tmppath =~ /^(.:.+\\)[^\\]+\\$/i)
+		{
+		$tmppath = $1;
+		$dotdots .= "..\\";
+		addKnownRoot($mmprootname, $mmpisglobal, $tmppath, $dotdots);
+		}
+}
+
+sub findTarget($$$) {
+	my ($name,$platbld,$abibld) = @_;
+
+	my @targets = $xmlProjectDoc->getElementsByTagName("TARGET",1); 
+
+	foreach my $target (@targets)
+		{
+		
+		my $element = $target->getElementsByTagName("NAME",0)->item(0);
+		$element = $element->getFirstChild;
+		
+	#   here we want to get the plat build that is specified in the cw project tempalte
+	#   and not the abi build - there are more platbuilds than abibuilds so other targets
+	#   (e.g. GCCE) can get the wrong tempalte "NAME" (i.e. it will be ARMV5 rather than GCCE, which is not want we want)
+		if ($element->getData() =~ /$platbld$/)
+			{
+			
+			my $newtarget=$target->cloneNode(1);
+			$target->getParentNode()->appendChild($newtarget);
+			$element = $newtarget->getElementsByTagName("NAME",0)->item(0);
+			$element = $element->getFirstChild;
+			$element->setData("$platbld");
+			
+			# remember name as an attribute: this is removed before
+			# writing out the project.
+			$newtarget->setAttribute("NAME", "$platbld");
+			return $newtarget;
+			}
+			else
+			{
+				my $newtarget=$target->cloneNode(1);
+				my $newplat=&main::Plat." ".&main::Bld;
+				$target->getParentNode()->appendChild($newtarget);
+				$element = $newtarget->getElementsByTagName("NAME",0)->item(0);
+				$element = $element->getFirstChild;
+				$element->setData("$newplat");
+	 			
+				# remember name as an attribute: this is removed before
+				# writing out the project.
+				$newtarget->setAttribute("NAME", "$newplat");
+				return $newtarget;
+			}
+		}
+	return undef;
+}
+
+sub newList($$$) {
+	my ($target, $tag, $replace) = @_;
+
+	my $newlist = new XML::DOM::Element($xmlProjectDoc,$tag);
+	if ($replace==1)
+		{
+		my $elements = $target->getElementsByTagName($tag,0);
+		my $element = $elements->item(0);
+		$target->replaceChild($newlist, $element);
+		}
+	else
+		{
+		$target->appendChild($newlist);
+		}
+	return $newlist;
+}
+
+sub changeValue($$) {
+	my ($setting, $replacement) = @_;
+	my $value = $setting->getElementsByTagName("VALUE",0)->item(0);
+
+	if (defined $value)
+		{
+		if ($value->hasChildNodes)
+			{
+			$value->getFirstChild->setData($replacement);
+			}
+		else
+			{
+			$value->addText($replacement);
+			}
+		}
+}
+
+sub textSetting($$$$) {
+	my ($element,$name,$value,$insertionpoint)=@_;
+
+	my $setting = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+	&textElement($setting, "NAME", $name);
+	&textElement($setting, "VALUE", $value);
+	$element->insertBefore($setting, $insertionpoint);
+	$element->addText("\n");
+}
+
+sub addKnownRoot($$$$) {
+	my ($rootname, $global, $rootpath, $pathprefix) = @_;
+	$rootpath=&main::Path_Chop($rootpath);
+	push @KnownRoots, [$rootname, $global, quotemeta($rootpath), $pathprefix];
+}
+
+sub addRootedPath($$$) {
+	my ($setting,$needglobal,$path) = @_;
+	my $root = "Absolute";
+
+	if ($path =~ /^\\/)
+		{
+		$path = &main::Path_Drive . $path;	# ensure it has a drive letter
+		}
+
+	foreach (@KnownRoots)
+		{
+		my ($rootname, $global, $rootpath, $pathprefix) = @{$_};
+
+		next if ($needglobal && !$global);
+		if ($path =~ /^$rootpath\\/i)
+			{			
+			$path =~ s/^$rootpath\\/$pathprefix/i;
+			$root = $rootname;
+			last;
+			}
+		}
+	$path=&main::Path_Chop($path);
+	if ($root eq "Absolute" && $path =~ /^(.:)$/)
+		{
+		$path .= "\\";
+		}
+
+	&textSetting($setting, "Path", $path);
+	&textSetting($setting, "PathFormat", "Windows");
+	&textSetting($setting, "PathRoot", $root);
+}
+
+sub changePathSetting($$$) {	
+	my ($setting,$global,$value) = @_;
+
+	my @oldstuff = $setting->getElementsByTagName("SETTING",0);
+	foreach my $old (@oldstuff)
+		{
+		&removeNode($old);
+		}
+
+	&addRootedPath($setting,$global,$value);
+}
+
+sub addSourceTrees($) {
+	my ($node) = @_;
+
+	my $element = $node->getElementsByTagName("VALUE",0)->item(0);
+	&removeNode($element) if (defined $element);
+
+	if (defined $ENV{CW_ROOT_NAME})
+		{
+		return;	# paths were converted to be relative to global source trees
+		}
+
+	my $sourcepath = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+	$sourcepath->addText("\n");
+	&textSetting($sourcepath, "Name", "EPOCROOT");
+	&textSetting($sourcepath, "Kind", "AbsolutePath");
+
+	my $pathdata = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+	&textElement($pathdata, "NAME", "Path"); 
+	$pathdata->addText("\n");
+
+	my $epocroot=&main::EPOCPath;
+	$epocroot =~ s/\\EPOC32\\$/\\/i;
+
+	&addRootedPath($pathdata, 1, $epocroot);
+
+	$sourcepath->appendChild($pathdata);
+	$node->appendChild($sourcepath);
+
+	my $mmproot = &main::Path_Split('Path',$MmpFile);
+	my $sourcepath2 = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+	$sourcepath2->addText("\n");
+	&textSetting($sourcepath2, "Name", "MMPDir");
+	&textSetting($sourcepath2, "Kind", "AbsolutePath");
+
+	my $pathdata2 = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+	&textElement($pathdata2, "NAME", "Path"); 
+	$pathdata2->addText("\n");
+	&addRootedPath($pathdata2, 1, $mmproot);
+
+	$sourcepath2->appendChild($pathdata2);
+	$node->appendChild($sourcepath2);
+
+}
+
+sub addUserSearchPaths($) {
+	my ($node) = @_;
+
+	my @elements = $node->getElementsByTagName("SETTING",0);
+	foreach (@elements)
+		{
+		&removeNode($_);
+		}
+
+	my %ordereddirs;
+	my @ordereddirlist=();
+	foreach my $dir (&main::UserIncPaths)
+		{
+		next if (!defined $dir);
+		$dir = &main::Path_Chop($dir)."\\";
+		my $key = uc $dir;
+		if (! defined($ordereddirs{$key}))
+			{
+			$ordereddirs{$key}=1;
+			push @ordereddirlist, $dir;
+			}
+		}
+
+	# now add the directories used to find source files
+	
+	my %dirs;
+	my $SourceStructRef=&main::SourceStructRef;
+	foreach my $SourceRef (@$SourceStructRef)
+		{
+		 $dirs{$$SourceRef{SrcPath}}=1;
+		}
+	my $DefFile = &main::DefFile;
+	if ($DefFile)
+		{			
+		$DefFile = &main::Path_Split('Path',$DefFile);
+		$dirs{$DefFile}=1;
+		}
+
+	my $MmpFilePath = &main::Path_Split('Path',$MmpFile);
+	$dirs{$MmpFilePath}=1;
+		
+	$dirs{$ExtraFilesPath}=1;
+		
+
+	foreach my $srcdir (sort keys %dirs)
+		{
+		if (!defined($ordereddirs{uc $srcdir}))
+			{
+			push @ordereddirlist, $srcdir;
+			}
+		}
+		
+	foreach my $srcdir (@ordereddirlist)
+		{
+		my $accesspath = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+		$accesspath->addText("\n");
+		my $pathdata = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+		&textElement($pathdata, "NAME", "SearchPath"); 
+		$pathdata->addText("\n");
+		&addRootedPath($pathdata, 0, $srcdir);
+
+		$accesspath->appendChild($pathdata);
+		&textSetting($accesspath, "Recursive", "false");
+		&textSetting($accesspath, "FrameworkPath", "false");
+		&textSetting($accesspath, "HostFlags", "All");
+		$node->appendChild($accesspath);
+		}
+}
+
+sub addSystemSearchPaths($) {
+	my ($node) = @_;
+
+	my @elements = $node->getElementsByTagName("SETTING",0);
+	foreach (@elements)
+		{
+		&removeNode($_);
+		}
+
+	my $ASSPLinkPath;
+	$ASSPLinkPath = &main::ASSPLinkPath if (&main::ASSPLibList);
+
+	my @extraIncPaths=();
+	push @extraIncPaths, $ArmIncDir if $ArmIncDir;
+
+	my %ordereddirs;
+	my @ordereddirlist=();
+	
+	foreach my $dir (&main::SysIncPaths, @extraIncPaths, &main::StatLinkPath, $ASSPLinkPath, &main::LinkPath)
+		{
+		next if (!defined $dir);
+		$dir = &main::Path_Chop($dir)."\\";
+		my $key = uc $dir;
+		if (! defined($ordereddirs{$key}))
+			{
+			$ordereddirs{$key}=1;
+			push @ordereddirlist, $dir;
+			}
+		}
+
+	my %dirs;
+
+	if ($VariantFile)
+		{
+		my $VariantFilePath = &main::Path_Split('Path',$VariantFile);
+		$dirs{$VariantFilePath}=1;
+		}
+
+	if (((&main::Plat =~ /^ARMV5/) || (&main::Plat =~ /^GCCE$/) ||(IsCustomization(&main::Plat))) && $PrefixFile) 
+		{
+		my $PrefixFilePath = &main::Path_Split('Path',$PrefixFile);
+		$dirs{$PrefixFilePath}=1;
+		}
+
+	foreach my $srcdir (sort keys %dirs)
+		{
+		if (!defined($ordereddirs{uc $srcdir}))
+			{
+			push @ordereddirlist, $srcdir;
+			}
+		}
+		
+	foreach my $srcdir (@ordereddirlist)
+		{
+		my $accesspath = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+		$accesspath->addText("\n");
+		my $pathdata = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+		&textElement($pathdata, "NAME", "SearchPath"); 
+		$pathdata->addText("\n");
+		&addRootedPath($pathdata, 0, $srcdir);
+
+		$accesspath->appendChild($pathdata);
+		&textSetting($accesspath, "Recursive", "false");
+		&textSetting($accesspath, "FrameworkPath", "false");
+		&textSetting($accesspath, "HostFlags", "All");
+		$node->appendChild($accesspath);
+		}
+	
+	if (&main::Plat =~ /^WINSCW$/)
+	{
+ 		my $lpath;
+ 		foreach $lpath (@CW_librarypath)
+ 		{
+ 			# only add Win32 SDK for WINSCW system access paths	
+ 			my $accesspath = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+ 			$accesspath->addText("\n");
+ 			my $pathdata = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+ 			&textElement($pathdata, "NAME", "SearchPath"); 
+ 			$pathdata->addText("\n");
+ 			
+ 			&textSetting($pathdata, "Path", $lpath);
+ 			&textSetting($pathdata, "PathFormat", "Windows");
+ 			&textSetting($pathdata, "PathRoot", "CodeWarrior");
+ 			$accesspath->appendChild($pathdata);
+ 			&textSetting($accesspath, "Recursive", "false");
+ 			&textSetting($accesspath, "FrameworkPath", "false");
+ 			&textSetting($accesspath, "HostFlags", "All");
+ 			$node->appendChild($accesspath);
+ 		}
+	}
+	if ($CustPlat{'CUSTOMIZES'} && ($CustPlat{'ROOTPLATNAME'} eq "GCCE"))
+	{
+		$CustGCCE=1;
+	}
+	if (&main::Plat =~ /^GCCE$/ || $CustGCCE)
+	{
+		my $accesspath = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+		$accesspath->addText("\n");
+		my $pathdata = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+		&textElement($pathdata, "NAME", "SearchPath"); 
+		$pathdata->addText("\n");
+		
+		my $GCCE_IncludePath = GetGCCELibPath("-print-libgcc-file-name");
+		$GCCE_IncludePath .= '\\include';
+		&textSetting($pathdata, "Path", $GCCE_IncludePath);
+		
+		&textSetting($pathdata, "PathFormat", "Windows");
+		&textSetting($pathdata, "PathRoot", "Absolute");
+		$accesspath->appendChild($pathdata);
+		&textSetting($accesspath, "Recursive", "false");
+		&textSetting($accesspath, "FrameworkPath", "false");
+		&textSetting($accesspath, "HostFlags", "All");
+		$node->appendChild($accesspath);
+	}
+	
+}
+
+sub addDownloadFileList($) {
+	my ($node, @DownloadList) = @_;
+	
+	my @elements = $node->getElementsByTagName("SETTING",0);
+	foreach (@elements)
+		{
+		&removeNode($_);
+		}
+
+	my $epocdata = &main::EPOCPath . "data\\";
+	foreach my $srcfile (@DownloadList)
+		{
+		my $targetpath = $srcfile;
+		$targetpath =~ s/^Z\\/C:\\/i;
+		
+		my $download = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+		$download->addText("\n");
+		my $pathdata = new XML::DOM::Element($xmlProjectDoc,"SETTING");
+		&textElement($pathdata, "NAME", "HostFilePath"); 
+		$pathdata->addText("\n");
+		&addRootedPath($pathdata, 0, "$epocdata$srcfile");
+
+		$download->appendChild($pathdata);
+		&textSetting($download, "TargetFilePath", $targetpath);
+		$node->appendChild($download);
+		}
+	}
+
+sub kitRelativePath ($) {
+	my ($kitRootBasedPath) = @_;
+		
+	my $kitRoot = &main::EPOCPath;
+	$kitRoot =~ s/EPOC32\\$//i;
+	$kitRoot = quotemeta (&main::Path_Chop($kitRoot));
+
+	$kitRootBasedPath =~ s/^$kitRoot//i;
+
+	$kitRootBasedPath;
+}
+	
+sub PMBld() {
+
+	my %changedsettings;
+
+	my $ABI=&main::ABI;
+	my $Bld=&main::Bld;
+	my $Plat=&main::Plat;
+	my $BaseName=&main::BaseMak;
+	my @SrcList=&main::SrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my @BldList=&main::BldList;
+	my $DefFile=&main::DefFile;
+	my $FirstLib=&main::FirstLib;
+	# IsCustomDllUseCase() subroutine is called to check if the given executable 
+	# is a custom dll or not.
+	my $IsCustomDll = Cl_bpabi::IsCustomDllUseCase();
+	# ABI flags set depending on the ENABLE_ABIV2_MODE macro set in the variant file.
+	my $ABIV1 = 0;
+	my $ABIV2 = 0;
+	if (($Plat eq "ARMV5_ABIV1" && $cfgMacro) || ($Plat eq "ARMV5" && !$cfgMacro)
+	|| ($CustPlat{'CUSTOMIZES'} 
+	&& (($CustPlat{'ROOTPLATNAME'} eq "ARMV5_ABIV1" && $cfgMacro) || ($CustPlat{'ROOTPLATNAME'} eq "ARMV5" && !$cfgMacro))))
+	{
+		$ABIV1=1;
+	}
+	elsif (($Plat eq "ARMV5_ABIV2" && !$cfgMacro) || ($Plat eq "ARMV5" && $cfgMacro)
+	|| ($CustPlat{'CUSTOMIZES'} 
+	&& (($CustPlat{'ROOTPLATNAME'} eq "ARMV5_ABIV2" && !$cfgMacro) || ($CustPlat{'ROOTPLATNAME'} eq "ARMV5" && $cfgMacro))))
+	{
+		$ABIV2=1;
+	}
+	
+	if ($CustPlat{'CUSTOMIZES'} && ($CustPlat{'ROOTPLATNAME'} eq "GCCE"))
+	{
+		$CustGCCE=1;
+	}
+
+ 	if ($ABIV1 && ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2)) {
+	        # Temporary Workaround for RVCT2.1 static libs problem with RVCT2.2 builds
+		# Rename FirstLib.lib static lib used with RVCT2.1 as FirstLib2_1.lib
+		if ($FirstLib=~/^\s*(\S+)(\.lib)$/io) {
+		        if ($1!~/$RVCTVersion/i) {
+				$FirstLib=$1.$RVCTVersion.".lib";
+			}
+		}
+	}	
+
+	my $BasicTrgType=&main::BasicTrgType;
+	my @LibList;
+	my @StatLibList=&main::StatLibList;
+	if ($ABIV1 && ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2)) {
+	        # Temporary Workaround for RVCT2.1 static libs problem with RVCT2.2 builds
+		# Rename all the static libs used with RVCT2.1 as libname2_1.lib
+		for (my $i =0; $i < scalar(@StatLibList); $i++) {
+		        if ($StatLibList[$i]=~/^\s*(\S+)(\.lib)$/io) {
+			        if ($1!~/$RVCTVersion/i) {
+				        $StatLibList[$i]=$1.$RVCTVersion.".lib";
+				}
+			}
+		}
+	}
+	
+
+	my @ASSPLibList = &main::ASSPLibList;
+	my $Trg=&main::Trg;
+	if ($ABIV1 && ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2)) {
+		if ($BasicTrgType=~/^LIB$/o) {
+			# Temporary Workaround for RVCT2.1 static libs problem with RVCT2.2 builds
+			# Rename all the static libs produced with RVCT2.1 as {libname}2_1.lib
+		        if ($Trg=~/^\s*(\S+)(\.lib)$/io) {
+			        if ($1!~/$RVCTVersion/i) {
+				        $Trg=$1.$RVCTVersion.".lib";
+				}
+			}
+			if ($BaseTrg!~/$RVCTVersion/i) {
+			        $BaseTrg .= $RVCTVersion;
+			}
+		}
+	}
+
+	my $TrgPath=&main::TrgPath;
+	my $TrgType=&main::TrgType;
+	my $epocroot=&main::Path_Drive . &main::EPOCPath;
+	$epocroot =~ s/EPOC32\\$//i;
+	my $UIDFile;
+
+	$ExtraFilesPath = &main::MakeFilePath;
+
+	if ($Bld =~ /DEB/) {
+		@LibList=&main::DebugLibList;
+	} else {
+		@LibList=&main::LibList;
+	}
+	my $xmlTarget;
+	if ($ABI =~ /BPABI/)
+	{
+		$ABI = "GCCE";
+	}
+	
+	if ($Plat eq "GCCE" || $CustGCCE || $ABIV2) {
+	
+		if ($CW_major_version < 3.1) {
+			die "FATAL ERROR: Target $Plat requires CodeWarrior for Symbian release 3.1 at minimum.\n";
+		}
+	}
+	
+	if ($ABIV2 && ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2))
+	{
+		die "FATAL ERROR: Target ARMV5_ABIV2 requires RVCT version 2.2 and greater. Detected RVCT $RVCTMajorVersion.$RVCTMinorVersion.\n";
+	}
+	
+	if (($RVCTMajorVersion == 2 && $RVCTMinorVersion >= 2) && $CW_major_version < 3.1 && $ABIV2)
+	{
+		die "FATAL ERROR: Detected RVCT Version $RVCTMajorVersion.$RVCTMinorVersion and CodeWarrior version $CW_major_version. RVCT 2.2 and greater requies CodeWarrior version 3.1 at minimum.\n";
+	}
+	
+    $xmlTarget = findTarget($BaseName, "$Plat $Bld", "$ABI $Bld");
+		
+	return if (!defined($xmlTarget));
+	
+	my $targetname = $xmlTarget->getAttribute("NAME");
+
+	my $UnderlyingABI=PMUnderlyingABI($ABI);
+	my @ChopRTWSysIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::SysIncPaths));
+	my @ChopRTWUserIncPaths=&main::Path_Chop(&main::Path_RltToWork(&main::UserIncPaths));
+	my $EPOCPath=&main::EPOCPath;
+	my $LinkAs=&main::LinkAs;
+	my $LibPath=&main::LibPath;
+	my @UidList=&main::UidList;	
+	my $WarningLevelGCC=&main::CompilerOption("GCC");
+	my $ExportLibrary=&main::ExportLibrary;
+	my $NoExportLibrary=&main::NoExportLibrary;
+	my $SystemTrg = SystemTarget();
+	my %Version = &main::Version();
+	my $ExtraExportLibrary;
+	my $PrimaryExportLibrary = $ExportLibrary;
+	unless ($Version{explicit}) {
+		$ExtraExportLibrary = $ExportLibrary;
+		$ExtraExportLibrary =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+		$PrimaryExportLibrary = $ExtraExportLibrary;
+	}
+
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $EPOCIncPath=&main::EPOCIncPath;
+	my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+	my $RelPath=&main::RelPath;
+	my $StatLinkPath=&main::StatLinkPath;
+	my $ParentPlat;
+	
+# 	Check if a platform is customization, if yes find the parent platform.
+	my $IsPlatCustomization=IsCustomization($Plat);
+	if ($IsPlatCustomization) {
+		$ParentPlat = Plat_Customizes($Plat);
+	}
+	
+	my @RTLibList;
+	if ($ABIV1) {
+	    @RTLibList = ('dfpaeabi.lib', "dfprvct${RVCTVersion}.lib", 'drtaeabi.lib', 'drtaeabi.lib(VtblExports.o)');
+	    if ($RVCTMajorVersion == 2 && $RVCTMinorVersion >= 2) {
+		# The scppnwdl.lib should come before drtrvct2_2.lib
+		push @RTLibList, "scppnwdl.lib";
+		push @RTLibList, "drtrvct${RVCTVersion}.lib";
+	    }
+	    else
+	    {
+		push @RTLibList, "dfprvct${RVCTVersion}-thunk.lib";
+		push @RTLibList, "drtrvct${RVCTVersion}.lib";
+	    }    
+	}
+	elsif ($ABIV2)
+	{
+		@RTLibList = ('drtaeabi.dso', 'dfpaeabi.dso', "dfprvct${RVCTVersion}.dso");
+	    if ($RVCTMajorVersion == 2 && $RVCTMinorVersion >= 2) {
+		# The scppnwdl.lib should come before drtrvct2_2.lib
+		push @RTLibList, "scppnwdl.dso";
+		push @RTLibList, "drtrvct${RVCTVersion}.dso";
+	    }
+	}
+	
+	my @compatibleDOCUMENTExtensions = ("cfg", "h", "hrh", "iby", "inf", "ini", "loc", "mmpi", "policy", "ra", "rh", "rls", "rss", "script", "txt");
+	my @DocList = &main::DocList;
+	@addedFiles=();
+
+
+#	set up LinkAs
+	$UidList[2]=~/^0x(.*)$/o;
+	if ($1 ne '00000000') { # have to make sure than series of noughts in brackets doesn't appear in name for null uids
+		$LinkAs=join '', &main::Path_Split('Base',$LinkAs),"[$1]",&main::Path_Split('Ext',$LinkAs);
+	}
+
+#	set up dlltool flag hash
+	my %ABIDlltool=(
+		ARMI=>'-m arm_interwork',
+		ARM4=>'-m arm',
+		THUMB=>'-m thumb'
+	);
+
+#	work out the flags for various platforms
+	if ($ABI eq 'ARMI') {
+		$PlatOpt{Gcc}='-march=armv4t -mthumb-interwork';
+		$PlatOpt{Dlltool}=$ABIDlltool{ARMI};
+	}
+	elsif ($ABI eq 'ARM4T') {
+		if (&main::BuildAsARM) {
+			$PlatOpt{Gcc}='-march=armv4t -mthumb-interwork';
+			$PlatOpt{Dlltool}=$ABIDlltool{ARMI};
+		}
+		elsif ($SystemTrg) {
+			$PlatOpt{Gcc}='-march=armv4';
+#			allow thumb for ARM4 ABI where necessary
+			unless (&main::PlatABI eq 'ARM4') {
+				$PlatOpt{Gcc}.='t';
+			}
+			$PlatOpt{Dlltool}=$ABIDlltool{ARM4};
+		}
+		else {
+			$PlatOpt{Gcc}='-mthumb-interwork -D__MARM_THUMB__';
+			$PlatOpt{Dlltool}=$ABIDlltool{THUMB};
+		}
+	}
+	elsif ($ABI eq 'ARM4') {
+		$PlatOpt{Gcc}='-march=armv4';
+#		allow thumb for ARM4 ABI where necessary
+		unless (&main::PlatABI eq 'ARM4') {
+			$PlatOpt{Gcc}.='t';
+		}
+		$PlatOpt{Dlltool}=$ABIDlltool{ARM4};
+	}
+	elsif ($ABI eq 'THUMB') {
+		$PlatOpt{Gcc}='-mthumb-interwork';
+		$PlatOpt{Dlltool}=$ABIDlltool{THUMB};
+	}
+	
+	elsif ($Plat ne 'WINSCW' && $Plat ne 'ARMV5' && !$IsPlatCustomization && $Plat ne 'GCCE' && $Plat ne 'ARMV5_ABIV2' && $Plat ne 'ARMV5_ABIV1') { 
+		&main::FatalError("Platform module - ABI \"$ABI\" unrecognised");
+	}
+	
+	if ($Plat ne 'WINSCW') {
+		@CompatibleABIs=@{$CompatibleABIs{$UnderlyingABI}};
+	}
+
+#	set up CompatibleABI lib path hash
+	foreach (@CompatibleABIs) {
+		$ABILibPath{$_}=&main::Path_Strip("$LibPath..\\..\\$_\\");
+	}
+
+	$Dlltool=$ToolPrefix.'dlltool.exe';
+	$Archive=$ToolPrefix.'ar.exe';
+	$Link=$ToolPrefix.'ld.exe';
+	$Objcopy=$ToolPrefix.'objcopy.exe';
+
+	my $WarningLevelCW=&main::CompilerOption("CW");
+
+	$xmlFileList = newList($xmlTarget,"FILELIST",1);
+	$xmlFileList->addText("\n");
+
+	$xmlLinkOrder = newList($xmlTarget,"LINKORDER",1);
+	$xmlLinkOrder->addText("\n");
+
+	# Create temporary sublists, which will be
+	# removed during finaliseProject
+
+	$xmlSourceGroup = newList($xmlTarget,"SOURCEGROUP",0);
+	$xmlSourceGroup->setAttribute("TARGET", $targetname);
+	$xmlSourceGroup->addText("\n");
+
+	$xmlHeadersGroup = newList($xmlTarget,"HEADERSGROUP",0);
+	$xmlHeadersGroup->setAttribute("TARGET", $targetname);
+	$xmlHeadersGroup->addText("\n");
+
+	$xmlRootGroup = newList($xmlTarget,"ROOTGROUP",0);
+	$xmlRootGroup->setAttribute("TARGET", $targetname);
+	$xmlRootGroup->addText("\n");
+		
+	$xmlLinkGroup = newList($xmlTarget,"LINKGROUP",0);
+	$xmlLinkGroup->setAttribute("TARGET", $targetname);
+	$xmlLinkGroup->addText("\n");
+
+	$xmlLibGroup = newList($xmlTarget,"LIBGROUP",0);
+	$xmlLibGroup->setAttribute("TARGET", $targetname);
+	$xmlLibGroup->setAttribute("PLAT", $Plat);
+	$xmlLibGroup->addText("\n");
+
+	$xmlResourcesGroup = newList($xmlTarget,"RESOURCESGROUP",0);
+	$xmlResourcesGroup->setAttribute("TARGET", $targetname);
+	$xmlResourcesGroup->addText("\n");
+
+	$xmlDocumentsGroup = newList($xmlTarget,"DOCUMENTSGROUP",0);
+	$xmlDocumentsGroup->setAttribute("TARGET", $targetname);
+	$xmlDocumentsGroup->addText("\n");
+
+	my $debug="";
+	$debug="Debug" if ($Bld =~ /DEB$/);
+
+	my @RuntimeLibs = ();	# add platform-specific runtime libraries here
+	if (&main::PlatCompiler eq "GCC32")
+		{
+		if ($BasicTrgType=~/^DLL$/o) 
+			{ # Add the DLL stub library
+			push @RuntimeLibs, "EDLLSTUB.LIB";
+			}
+		if ($BasicTrgType=~/^(DLL|EXE)/o) 
+			{ # Add the GCC helper fns
+			push @RuntimeLibs, "EGCC.LIB";
+			}
+		}
+	
+	if ($Plat eq "GCCE" || $CustGCCE)
+		{
+			push @RuntimeLibs, "usrt2_2.lib";    # UDEB/UREL Specific
+			push @RuntimeLibs, "dfpaeabi.dso";
+			push @RuntimeLibs, "dfprvct2_2.dso";
+			push @RuntimeLibs, "drtaeabi.dso"; 
+			push @RuntimeLibs, "scppnwdl.dso"; 
+			push @RuntimeLibs, "drtrvct2_2.dso";
+			if ($BasicTrgType=~/^DLL$/o) { # Add the DLL stub library
+				push @RuntimeLibs, "EDLLSTUB.LIB";   # UDEB/UREL Specific
+				}
+		}
+
+	addFile(&main::Path_Split('File',$MmpFile), "Text", "", "", "Root");
+
+	# Create the uid.cpp file	
+	if ($Plat eq "WINSCW" && $BasicTrgType=~/^(EXE|DLL)$/oi)
+		{
+		my @UidList=&main::UidList;
+		
+		# create the UID source file
+		my $priority = "EPriorityForeground";
+		if (&main::ProcessPriority) {
+			$priority="EPriority".&main::ProcessPriority;
+		}
+
+		my $UidText=join(
+			"\n",
+			'// Makmake-generated uid source file',
+			'#include <e32cmn.h>',
+			'#pragma data_seg(".SYMBIAN")',
+			'__EMULATOR_IMAGE_HEADER2('
+		);
+		foreach (@UidList) {
+			$UidText.="$_,";
+		}
+		my $vstr = "0x".&Genutl_VersionToHexString(&main::Version);
+		my $vid = &main::VendorId;
+		if(!$vid) { $vid="0"; }
+		$UidText.="$priority,".(&main::CapabilityFlags)[0]."u,".(&main::CapabilityFlags)[1]."u,".&main::SecureId.",".$vid.",$vstr,";	# second capability word always 0 for now
+		if (&main::AllowDllData) {
+			$UidText.="1,";
+		} else {
+			$UidText.="0,";
+		}
+		chop $UidText;
+		$UidText.=")\n";
+		$UidText.="#pragma data_seg()\n";
+
+		$UIDFile = $BaseTrg.'_UID_.cpp';
+		&main::CreateExtraFile("${ExtraFilesPath}$UIDFile", $UidText);
+		}
+
+
+	if (-e $DefFile)
+		{
+		addFile(&main::Path_Split('File',$DefFile), "Text", "", &main::DefFileType."\\");
+		}
+
+	# Add resources: rsc files, mbm files and aif files
+
+	my $mmpdir = &main::Path_Split('Path',$MmpFile);
+	$changedsettings{"SymbianResourcesMMPFileLocation"} = "{0}$mmpdir";
+	my $ResourcesText="";
+	my @ResourceDownloadList=();
+	
+	# --- MBM files
+	
+	my $BitMapStructRef = &main::BitMapStructRef();
+	my $BitMapRef;
+	
+	foreach my $BitMapRef (@$BitMapStructRef) {
+		my $trgfile = $$BitMapRef{Trg};
+# change - only use colour resource files
+		next if ($trgfile =~ /\.MBW$/i);	# ignore greyscale MBM files
+		$trgfile =~ s/\.MCL$/.MBM/;			# convert MCL to MBM for immediate use
+		my $entry = "  <mbm targetfile = \"$trgfile\"";
+		$entry .= " targetpath = \"".&main::Path_Chop($$BitMapRef{TrgPath})."\"";
+		push @ResourceDownloadList, $$BitMapRef{TrgPath}.$trgfile;
+		if (defined $$BitMapRef{Hdr})
+			{
+			$entry .= " header = \"true\"";
+			}
+		else
+			{
+			$entry .= " header = \"false\"";
+			}
+		$entry .= ">\n";
+		foreach my $SrcRef (@{$$BitMapRef{Source}}) {
+			$entry .= "    <bmp bpp = \"$$SrcRef{ClDepth}\"";
+			my $bmpfile = &main::Path_Split('File',$$SrcRef{Src});
+			my $bmppath = &main::Path_Split('Path',$$SrcRef{Src});
+			my $sourcepath = &main::Path_Chop(&main::Path_MakeRltToBase($mmpdir,$bmppath));
+			$entry .= " sourcepath = \"$sourcepath\"";
+			$entry .= " sourcefile = \"$bmpfile\"/>\n";
+		}
+		$ResourcesText .= $entry . "  </mbm>\n";
+	}
+	
+	# --- AIF files
+
+	my $AifStructRef = &main::AifStructRef();
+	my $AifRef;
+
+	foreach $AifRef (@$AifStructRef) {
+# regression change - workaround lack of AIF directory
+		my $trgpath=&main::TrgPath;
+		my $trgfile=&main::Path_Split('File',$$AifRef{Trg});
+		my $path=&main::Path_Split('Path',"$trgpath$$AifRef{Trg}");
+		$path=&main::Path_Chop($path);  
+# change - only use colour resource files
+		next if ($trgfile =~ /\.ABW$/i);	# ignore greyscale AIF files
+		$trgfile =~ s/\.ACL$/.AIF/;			# convert ACL to AIF for immediate use
+ 		my $rssfile = &main::Path_Split('File',$$AifRef{Source});
+ 		my $rsspath = &main::Path_Split('Path',$$AifRef{Source});
+ 		my $sourcepath=&main::Path_Chop(&main::Path_MakeRltToBase($mmpdir,$rsspath));
+ 		my $entry = "  <aif sourcefile = \"$rssfile\"";
+   		$entry .= " sourcepath = \"$sourcepath\"";
+   		$entry .= " targetfile = \"$trgfile\" targetpath = \"$path\">\n";
+   		push @ResourceDownloadList, "$path\\$trgfile";
+ 		foreach my $BitmapRef (@{$$AifRef{BitMaps}}) {
+ 			$entry .= "    <bmp bpp = \"$$BitmapRef{ClDepth}\"";
+ 			my $bmpfile = &main::Path_Split('File',$$BitmapRef{Src});
+ 			my $bmppath = &main::Path_Split('Path',$$BitmapRef{Src});
+ 			$sourcepath = &main::Path_Chop(&main::Path_MakeRltToBase($mmpdir,$bmppath));
+ 			$entry .= " sourcepath = \"$sourcepath\"";
+ 			$entry .= " sourcefile = \"$bmpfile\"/>\n";
+		}
+   		$ResourcesText .= $entry . "  </aif>\n";
+
+   	}
+
+	
+	# --- RSC files, which must come after .MBM files since they may use the .MBG header files
+	
+	my $ResourceStructRef=&main::ResourceStructRef;
+	my @resourcefiles;
+	my %resourcetargets;
+
+	# NOTE: An <rsc/> block is now created for each START RESOURCE blocks LANG entries.  This
+	# shouldn't be necessary as <rsc/> blocks support multiple <language/> tags, and the generation
+	# of separate localised binaries should be dealt with by the Symbian Resources IDE plugin.
+	# However, a defect in the plugin's processing of <rsc/> "targetfile" attributes means that is
+	# doesn't correctly generate separate localised binaries with per-LANG extensions.
+
+	my %headerProcessed;
+
+	foreach my $ResourceRef (@$ResourceStructRef) {
+		my $fullsource=$$ResourceRef{Source};
+		my $rssfile=&main::Path_Split('File', $fullsource);
+		my $rsspath=&main::Path_Split('Path', $fullsource);
+		my $entry = "  <rsc sourcefile = \"$rssfile\"";
+		$entry .= " targetpath = \"".&main::Path_Chop($$ResourceRef{TrgPath})."\"";
+		
+		#############################################################
+		# if CW version is 3.1 or greater, add TARGET file if present
+		# tkelly 4-May-05
+		if ($CW_major_version >= 3.1)
+		{
+			my $trgfile=&main::Path_Split('File',$$ResourceRef{Trg}); 
+			$entry .= " targetfile = \"$trgfile\"\n"; #tk
+		}
+		##############################################################
+		if ((defined $$ResourceRef{Hdr}) && (!$headerProcessed{$fullsource}))
+			{
+			$entry .= " header = \"true\"";
+			$headerProcessed{$fullsource} = 1;
+			}
+		else
+			{
+			$entry .= " header = \"false\"";
+			}
+		my $sourcepath=&main::Path_Chop(&main::Path_MakeRltToBase($mmpdir,$rsspath));
+		$entry .= " sourcepath = \"$sourcepath\">\n";
+		# ignore the UidList for now..
+		$resourcetargets{$fullsource} = $$ResourceRef{TrgPath}.&main::Path_Split('Base', $rssfile);
+
+		$entry .= "    <language id = \"$$ResourceRef{Lang}\"/>\n";
+		push @resourcefiles, $entry;
+		push @ResourceDownloadList, $resourcetargets{$fullsource}.".R".$$ResourceRef{Lang};
+	}
+
+ 	foreach my $resourceEntry (@resourcefiles) {	
+ 			$ResourcesText .= $resourceEntry . "  </rsc>\n";
+ 			}
+
+	# --- If required, generate .resources file per platform
+	
+	if ($ResourcesText ne "")
+		{
+		my $resourcesfile = "$BaseTrg$Plat.resources";
+		&main::CreateExtraFile("${ExtraFilesPath}$resourcesfile", "<resources>\n$ResourcesText</resources>\n");
+		addFile($resourcesfile, "Text", "", "", "Resources");
+		}
+		
+	# Build the rest of the file list
+
+	if ($BasicTrgType!~/^LIB$/o)
+		{
+		addFile($FirstLib, "Library", $debug, "$Bld\\");	# static library, build-specific
+		}
+	
+	my $file;
+	foreach $file (@SrcList)
+		{
+		# ensure the case of the extension is what GCC expects
+		$file =~ s/\.CPP$/.cpp/i;
+		$file =~ s/\.C$/.c/i;
+		$file =~ s/\.s$/.S/i;
+		my $srcfile=&main::Path_Split('File',$file);
+		addFile($srcfile, "Text", $debug, "");
+		}
+
+	# If required, add the uid.cpp file so that it appears after all other source files in the link order
+	if (defined $UIDFile)
+		{
+		addFile($UIDFile, "Text", "", "");
+		}
+	
+	if ($Plat ne "GCCE" && !$CustGCCE)
+	{
+	# linking with GCCE, Runtime libs need to be at the end to match with make, otherwise evalid can fail.
+	foreach $file (@RuntimeLibs)
+		{
+		next if ( $file eq $FirstLib );		#skip if file equals FirstLib.
+		addFile($file, "Library", $debug, "$Bld\\"); # static library, build specific
+		}
+	}
+				
+	foreach $file (@StatLibList)
+		{
+		next if ( $file eq $FirstLib );		#skip if file equals FirstLib.
+		addFile($file, "Library", $debug, "$Bld\\"); # static library, build specific
+		}
+	foreach $file (@ASSPLibList, @LibList)
+		{
+		next if ( $file eq $FirstLib );		#skip if file equals FirstLib.
+		if ($Plat eq "GCCE" or $ABIV2 or $CustGCCE) {
+			$file =~ s/\.LIB$/.DSO/;
+			$file =~ s/\.lib$/.dso/;
+			}
+		addFile($file, "Library", $debug, "");
+		}
+		
+	if ($Plat eq "GCCE" || $CustGCCE)
+	{
+		foreach $file (@RuntimeLibs)
+		{
+			next if ( $file eq $FirstLib );		#skip if file equals FirstLib.
+			
+			#change to prevent multiple libs being listed when they are shared between targets.
+			if ($file eq "usrt2_2.lib" || $file eq "EDLLSTUB.LIB") {
+				addFile($file, "Library", $debug, "$Bld\\"); # static library, build specific
+			}
+			else {
+				addFile($file, "Library", $debug, ""); # static library, build non-specific
+			}
+		}
+	}
+		
+	if ($Plat eq "WINSCW")
+		{
+		my $defaults = $ENV{'MWSym2LibraryFiles'};
+		# look out for paths?
+		foreach $file (@Win32LibList)
+			{
+			# skip default libs and FirstLib
+			next if ( ($defaults =~ /;$file/) || ($file eq $FirstLib) );
+			addFile($file, "Library", $debug, "");
+			}
+		}
+
+	
+	# Update the project settings
+
+	$changedsettings{"UserSourceTrees"} = "{}";
+	$changedsettings{"UserSearchPaths"} = "{}";
+	$changedsettings{"SystemSearchPaths"} = "{}";
+	$changedsettings{"Targetname"} = $targetname;
+
+	my $outputdir = $RelPath;
+	if ($Plat eq "WINSCW")
+		{
+		my $trgpath = &main::TrgPath;
+		&Winutl_AdjustTargetPath(\$trgpath);
+		$outputdir .= $trgpath;
+		}
+	$changedsettings{"OutputDirectory"} = "{1}".&main::Path_Chop($outputdir);
+	$changedsettings{"SymbianInstallationContentSearchLocation"} = "{0}".&main::Path_Chop($RelPath);
+
+	$changedsettings{"SymbianResourcesHeaderFileOutputLocation"} = "{0}".&main::Path_Chop(&main::EPOCIncPath());
+	if ($Plat eq "WINSCW")
+		{
+		$changedsettings{"SymbianResourcesBinaryOutputLocation"} = "{0}".&main::Path_Chop($RelPath);
+		}
+	else
+		{
+		$changedsettings{"SymbianResourcesBinaryOutputLocation"} = "{0}".&main::Path_Chop(&main::EPOCDataPath());
+		}
+		
+	if ($Plat eq "WINSCW")
+		{
+		if ($TrgType eq "EXE")
+			{	
+			# IDE would do the right thing, but we might as well make sure...
+			$changedsettings{"MWRuntimeSettings_HostApplication"} = "{0}$outputdir$Trg";
+			}
+		else
+			{
+			$changedsettings{"MWRuntimeSettings_HostApplication"} = "{0}${RelPath}epoc.exe";
+			}
+		}
+
+
+	$changedsettings{"SymbianEpocToolsPath"} = "{0}${epocroot}";
+
+	if ($Plat ne "WINSCW")
+		{
+		my $downloadpath = &main::TrgPath;
+		if (&main::EPOCSecurePlatform && $downloadpath !~ /^Z\\sys\\bin\\/)
+			{
+			my @hrhMacros = &Variant_GetMacroList;
+			if (grep /^SYMBIAN_IGNORE_BIN_TARGETPATH\s*$/, @hrhMacros)
+				{
+				$downloadpath = "Z\\sys\\bin\\";
+				}
+			}
+		$downloadpath =~ s/^Z\\/C:\\/i;
+		$changedsettings{"DownloadPath"} = $downloadpath;
+		$changedsettings{"FileList"} = "{}";
+		}
+
+	my @MacroList;
+
+	@MacroList = &main::MacroList();			
+		
+	push @MacroList, "__${Plat}__" if ($Plat ne $ABI);
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__" if ($Plat eq "WINSCW");
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__" if (($Plat eq "ARMV5") || ($Plat eq "ARMV5_ABIV2") || ($Plat eq "ARMV5_ABIV1") || ($Plat eq "GCCE") || $IsPlatCustomization);
+
+	# Symbian Compiler Panel
+			
+	my $compiler="";
+	my $compilerargs="";
+	my $macros="";
+
+	if ((($Plat eq "ARMV5") || ($Plat eq "ARMV5_ABIV2") || ($Plat eq "ARMV5_ABIV1") || ($Plat eq "GCCE") || $IsPlatCustomization) && $VariantFile)
+		{
+		push @MacroList, '__PRODUCT_INCLUDE__=\\"'.&main::Path_Split('File',$VariantFile).'\\"' if $VariantFile;
+		}
+
+	foreach (@MacroList)
+		{
+		$_ =~ s/\s+$//;
+		$_ =~ s/^\s+//;
+		$macros .= "$_,";
+		}
+
+###############################
+# WINSCW compilation settings #
+###############################
+
+	if ($Plat eq "WINSCW")
+		{
+		$compiler = "WINSCW";
+		$compilerargs .= "-wchar_t off -align 4 -warnings on -w nohidevirtual, nounusedexpr -msgstyle gcc -enum int -str pool ";
+		$compilerargs .= "-exc ms ";
+		$compilerargs .= "-trigraphs on ";
+
+		if ($Bld =~ /DEB/)
+			{
+			$compilerargs .= "-O0 ";
+
+			# euser change to apply inlining on the _NAKED functions
+			if ($BaseTrg !~ /^EUSER$/oi)
+				{
+				$compilerargs .= "-inline off ";
+				}
+			}
+		else
+			{
+			$compilerargs .= "-O4,s ";
+			}
+			
+		if ($Win32StdHeaders || $Win32Resrc ) 
+			{
+			$macros .= "WIN32,_WINDOWS,";
+			# Callisto defect workaround
+			# NOTE: persisting with this for consistency
+			$compilerargs .= "-stdinc ";
+			}
+		else
+			{
+			$compilerargs .= "-nostdinc ";
+			}
+				
+		$compilerargs .= &main::CompilerOption("CW");
+		$changedsettings{"Macros"} = $macros;
+		if ($VariantFile)
+			{
+			$changedsettings{"PrefixFile"} = &main::Path_Split('File',$VariantFile);
+			}			
+		}
+
+#############################
+# RVCT compilation settings #
+#############################
+		
+	elsif ((($Plat eq "ARMV5") || ($Plat eq "ARMV5_ABIV2") || ($Plat eq "ARMV5_ABIV1") || $ABIV1 || $ABIV2) && ($CW_major_version >= 3)) #|| $IsPlatCustomization
+		{
+		
+		if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+			$changedsettings{"CompilerXMLDescriptor"} = "ARM RVCT";
+		}
+		else {
+			if(($CW_major_version == 3))
+			{ 
+				$changedsettings{"CompilerXMLDescriptor"} = "ARM RVCT";
+			}
+			else
+			{
+				# RVCT 2.2
+				$changedsettings{"CompilerXMLDescriptor"} = "ARM RVCT2_2";
+			}
+		}	
+		if ($Bld =~ /REL$/)
+			{
+				$compilerargs .= $configdata{"REL_OPTIMISATION"}." ".$configdata{"RUNTIME_SYMBOL_VISIBILITY_OPTION"}.$CCUREL;		
+			}
+		else
+			{
+			unless (&main::SrcDbg)
+				{
+					$compilerargs .= $configdata{"DEBUG_OPTIMISATION"}." ".$configdata{"RUNTIME_SYMBOL_VISIBILITY_OPTION"}.$CCUDEB;		
+				}
+			}
+		$changedsettings{"PrefixFile"} = &main::Path_Split('File',$PrefixFile);
+		}
+
+############################
+# GCC compilation settings #
+############################
+		
+	elsif ($Plat eq "ARM4")
+		{
+		$compiler = "ARM";
+			
+		if ($Bld =~ /REL$/)
+			{
+			$compilerargs .= "-s -fomit-frame-pointer -O "
+			}
+		else
+			{
+			unless (&main::SrcDbg)
+				{
+				$compilerargs .= "-O ";
+				}
+			}
+		
+		if ($ABI eq "ARMI")
+			{
+			$compilerargs .= "-march=armv4t -mthumb-interwork";
+			}
+		elsif ($ABI eq "ARM4T")
+			{
+			if (&main::BuildAsARM)
+				{
+				$compilerargs .= "-march=armv4t -mthumb-interwork";
+				}
+			elsif ($SystemTrg)
+				{
+				$compilerargs .= "-march=armv4";
+
+				unless (&main::PlatABI eq "ARM4")
+					{
+					$compilerargs .= "t";
+					}
+				}
+			else
+				{
+				$compiler = "THUMB";
+				$compilerargs .= "-mthumb-interwork";
+				$macros .= "__MARM_THUMB__,";
+				}
+			}
+		elsif ($ABI eq "ARM4")
+			{
+			$compilerargs .= "-march=armv4";
+
+			unless (&main::PlatABI eq "ARM4")
+				{
+				$compilerargs .= "t";
+				}
+			}
+		elsif ($ABI eq "THUMB")
+			{
+			$compiler = "THUMB";
+			$compilerargs .= "-mthumb-interwork";
+			}
+	
+		if ($VariantFile)
+			{
+			$changedsettings{"PrefixFile"} = &main::Path_Split('File',$VariantFile);
+			}
+		}
+
+############################
+# GCCE BPABI compilation settings #
+############################
+
+		
+	elsif ((($Plat eq "GCCE") || $CustGCCE)) # || $IsPlatCustomization) && ($CW_major_version >= 3)) 
+		{
+		$compiler = "ARM GCCE";
+		#Change setting CompilerXMLDescriptor is only good for CW 3.0 and greater.
+		$changedsettings{"CompilerXMLDescriptor"} = "ARM GCCE";	
+		
+		if ($Bld =~ /REL$/)
+		{
+			$compilerargs .= $configdata{"REL_OPTIMISATION"}." ".$configdata{"RUNTIME_SYMBOL_VISIBILITY_OPTION"}.$CCUREL;
+		}
+		else
+		{
+			unless (&main::SrcDbg)
+			{
+				$compilerargs .= $configdata{"DEBUG_OPTIMISATION"}." ".$configdata{"RUNTIME_SYMBOL_VISIBILITY_OPTION"}.$CCUDEB
+			}
+		}
+		$changedsettings{"PrefixFile"} = &main::Path_Split('File',$PrefixFile);
+		}
+####################
+# General settings #
+####################
+
+	$macros =~ s/,$//;
+	$compilerargs =~ s/ $//;
+
+	$changedsettings{"Compiler"} = $compiler; # in CW 3.0, "Compiler" no longer exists. This line has no effect on those versions
+	$changedsettings{"Arguments"} = $compilerargs;
+
+	# Symbian Linker Panel
+	$changedsettings{"LinkOutputFile"} = $Trg;
+	
+	if ($Plat eq "GCCE" || $CustGCCE || $ABIV2) {
+		$changedsettings{"SymbianImportLibrary"} = $ExportLibrary.'.dso';
+	}
+	else {
+		$changedsettings{"SymbianImportLibrary"} = $ExportLibrary.'.lib';
+	}
+	
+	# Template defaults for canDebug/canRun are both "true"
+	if ($Bld =~ /REL/)
+		{
+		$changedsettings{"canDebug"} = "false";
+		}
+
+	if ($Plat eq "WINSCW")
+		{
+		if ($TrgType ne "APP" && $TrgType ne "EXE" && $TrgType ne "EXEDLL" && $TrgType ne "EPOCEXE")
+			{
+			$changedsettings{"canDebug"} = "false";
+			$changedsettings{"canRun"} = "false";
+			}
+		}
+	else
+		{
+		$changedsettings{"canRun"} = "false";
+
+		if ($TrgType eq "LIB" || $TrgType eq "KLIB")
+			{
+			$changedsettings{"canDebug"} = "false";
+			}
+		}
+		
+		
+	$xmlLinkDescriptorDoc = $xmlParser->parsefile ($FindBin::Bin."\\$linkDescriptorTemplate");
+	$xmlLinkDescriptorCommandParent = $xmlLinkDescriptorDoc->getElementsByTagName("array",1)->item(0);
+
+	if ($CW_major_version >= 3)
+		{
+		$xmlLinkDescriptorSymbolParent = $xmlLinkDescriptorDoc->getElementsByTagName("array",1)->item(1);
+		$xmlLinkDescriptorDumpFileParent = $xmlLinkDescriptorDoc->getElementsByTagName("array",1)->item(2);
+		}
+	
+	my $linkDescriptorFile = "$BaseTrg$Plat$Bld.cwlink";
+
+	my $copyCommand = 'perl.exe -S ecopyfile.pl ';
+	my $deleteCommand = 'cmd.exe /C del ';
+
+	my $tempFilenameRoot = '${var:IMPORT_LIBRARY_NO_EXT}';
+
+	if ($CW_major_version < 3)
+		{
+		$tempFilenameRoot = $ExportLibrary;
+		}	
+
+	my $exportUnfrozenWarningMessage = 'Created "${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).'${var:IMPORT_LIBRARY}" '.
+										'from "${target.data}\\'.$tempFilenameRoot.'.def" as EXPORTUNFROZEN specified.';
+
+
+
+############################################
+# WINSCW library generation and link stage #
+############################################
+
+	if ($Plat eq "WINSCW")
+		{
+		# Generate library
+		if ($DefFile and !$NoExportLibrary)
+			{
+			unless (&main::ExportUnfrozen)
+				{
+					my $LibLinkAs = ($BasicTrgType=~/^IMPLIB$/io) ? $LinkAs : $Trg;
+
+					$linkCommand = 'perl.exe -S prepdef.pl "${var:DEF_FILE}" "${target.data}\\'.$tempFilenameRoot.'.prep.def"';
+					addLinkDescriptorCommand ($linkCommand);
+
+					$linkCommand = 'mwldsym2.exe "${target.data}\\'.$tempFilenameRoot.'.prep.def" -importlib -o "'.
+									'${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).'${var:IMPORT_LIBRARY}" -addcommand "out:'.$LibLinkAs.'" -warnings off';
+					addLinkDescriptorCommand ($linkCommand);
+				}
+			}
+
+		if ((2.8 == $CW_major_version) && (0 == $CW_minor_version))
+			{
+			# For OEM2.8, create a file containing all objects required in the link.  This is used in all
+			# calls to mwldsym2 in order to avoid exceeding the Windows command line
+			# length in projects containing a large amount of source files
+			$linkCommand ='cmd.exe /C echo ${var:LINK_OBJS}>"${target.data}\${output.file.root}.lst"';
+			addLinkDescriptorCommand ($linkCommand);
+			}
+			
+		my $stage1linkflags = "";
+		my $linkflags = "";
+		my $commonLinkFlags = '-msgstyle gcc -stdlib';
+		my $libPath = "epoc32\\release\\winscw\\".lc $Bld;
+		if ($SystemTrg){
+			$commonLinkFlags .=" ${libPath}\\scppnwdl_kern.lib";
+		}
+		else{
+			$commonLinkFlags .=" ${libPath}\\scppnwdl.lib";
+		}
+		if ($BasicTrgType=~/^(EXE|DLL)$/o) {
+					$commonLinkFlags .= ' ${var:FIRST_LIB} '
+			}
+
+		foreach my $lib (@Win32LibList)
+			{
+			my $win32lib = $lib;
+			$win32lib = "-l$win32lib" unless ($win32lib =~ /\\/);
+			$commonLinkFlags .= " ". lc $win32lib;
+			}
+
+		if ($BasicTrgType =~ /^DLL$/o || $TrgType =~ /^EXEXP$/o)
+			{
+			if ($BaseAddress ne "")
+				{
+				$commonLinkFlags .= " -imagebase $BaseAddress";
+				}
+			
+			$commonLinkFlags .= ' -noentry -shared';
+			}
+		elsif ($BasicTrgType =~ /^EXE$/o)
+			{
+			$commonLinkFlags .= ' -m "?_E32Bootstrap@@YGXXZ"';
+			}
+
+		$commonLinkFlags .= ' -subsystem windows';
+
+		if (&main::HeapSize)
+			{
+			my %HeapSize = &main::HeapSize;
+			$commonLinkFlags .= ' -heapreserve='.RoundUp1k($HeapSize{Max}).' -heapcommit='.RoundUp1k($HeapSize{Min}); 
+			}
+
+		if ($BasicTrgType =~ /^(DLL|EXE)$/o)
+			{
+			if ($Bld =~ /DEB$/o)
+				{
+				$commonLinkFlags .= ' -g';
+				}
+			}
+			
+		my $EntrySymbol='';
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o)
+			{
+			my $Include="";
+			if ($BasicTrgType=~/^DLL$/o)
+				{
+				$Include="-m __E32Dll";
+				$EntrySymbol='__E32Dll';
+				}
+			else
+				{
+				$Include="-m __E32Startup";
+				$EntrySymbol='__E32Startup';
+				}
+				
+			$stage1linkflags = $commonLinkFlags.' ${var:LIBS}'.
+				' -o "${target.data}\\${output.file.name}"'. 
+				' -export dllexport '.
+				$Include.
+				' -nocompactimportlib'. 
+				' -implib "${target.data}\\${var:IMPORT_LIBRARY}"'.
+				' -addcommand "out:${output.file.name}"'.
+				' -warnings off';
+			}
+				
+		my $AbsentSubst = "";
+		if ($EntrySymbol)
+			{
+			$AbsentSubst = " -absent $EntrySymbol";
+			}
+
+		$linkflags = $commonLinkFlags.' ${var:LIBS}'.
+			' -o "${output}\\${output.file.name}"';
+			
+		if ($Bld=~/REL$/o && $BasicTrgType!~/^LIB$/o)
+			{
+			# Generate map file for release build executables
+			$linkflags .= ' -map "${output}\\${output.file.name}.map"';
+			}
+		
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o)
+			{
+			$linkflags .= ' -f "${target.data}\\'.$tempFilenameRoot.'.def"';
+			
+			if (&main::ExportUnfrozen)
+				{
+				$linkflags .= ' -implib "${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).'${var:IMPORT_LIBRARY}"'.
+					' -addcommand "out:${output.file.name}" -warnings off';
+				}
+			else
+				{
+				$linkflags .= ' -noimplib ';
+				}
+			}
+			else
+			{
+			$linkflags .= ' -noimplib ';
+			}
+
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o)
+			{
+			if (($CW_major_version >= 3) ||
+				((2.8 == $CW_major_version) && ($CW_minor_version >= 1)))
+				{
+				# For OEM2.8.1 onwards, make use of ${var:LINK_OBJS_NO_PATH} in order to reduce link
+				# command line lengths
+				$linkCommand = 'mwldsym2.exe '.$stage1linkflags.' ${var:COMMON_LINK_FLAGS} -l "${target.data}\\ObjectCode" -search ${var:LINK_OBJS_NO_PATH}';				
+				}
+			else
+				{
+				$linkCommand = 'mwldsym2.exe '.$stage1linkflags.' ${var:COMMON_LINK_FLAGS} @"${target.data}\${output.file.root}.lst"';
+				}
+
+			addLinkDescriptorCommand ($linkCommand, undef, undef, undef, $FirstLib);
+				
+			$linkCommand = $deleteCommand.'"${target.data}\\${output.file.name}"';
+			addLinkDescriptorCommand ($linkCommand);
+
+			my $show_options = 'names,unmangled,verbose';
+			$linkCommand = 'mwldsym2.exe -S -show only,'.$show_options.' -o "${target.data}\\'.$tempFilenameRoot.'.inf" "${target.data}\\${var:IMPORT_LIBRARY}"';
+			addLinkDescriptorCommand ($linkCommand);
+
+			$linkCommand = 'perl.exe -S makedef.pl '.$AbsentSubst.' -Inffile "${target.data}\\'.$tempFilenameRoot.'.inf"';
+			if (-e $DefFile)
+				{
+				$linkCommand .= ' -Frzfile "'.$DefFile.'"';
+				}
+				
+			my $Export;
+			my $Ordinal=1;
+			foreach $Export (&main::Exports)
+				{
+				$linkCommand .= " -$Ordinal $Export";
+				$Ordinal++;
+				}					
+
+			$linkCommand .= ' "${target.data}\\'.$tempFilenameRoot.'.def"';					
+			addLinkDescriptorCommand ($linkCommand);
+			
+			$linkCommand = $deleteCommand.'"${target.data}\\'.$tempFilenameRoot.'.inf"';
+			addLinkDescriptorCommand ($linkCommand);
+			
+			$linkCommand = $deleteCommand.'"${target.data}\\${var:IMPORT_LIBRARY}"';
+			addLinkDescriptorCommand ($linkCommand);
+			}
+
+		$linkCommand = "mwldsym2.exe ";
+
+		if ($BasicTrgType =~/^LIB$/o)
+			{
+			$linkCommand .= '-library ';
+			}
+
+		if (($CW_major_version >= 3) ||
+			((2.8 == $CW_major_version) && ($CW_minor_version >= 1)))
+			{
+			# For OEM2.8.1 onwards, make use of ${var:LINK_OBJS_NO_PATH} in order to reduce link
+			# command line lengths
+			$linkCommand .= $linkflags.' ${var:COMMON_LINK_FLAGS} -l "${target.data}\\ObjectCode" -search ${var:LINK_OBJS_NO_PATH}';	
+			}
+		else
+			{
+			$linkCommand .= $linkflags.'${var:COMMON_LINK_FLAGS} @"${target.data}\${output.file.root}.lst"';				
+			}
+
+		my $warningMessage;
+		
+		if (&main::ExportUnfrozen)
+			{
+			$warningMessage = $exportUnfrozenWarningMessage;
+			}
+
+		if ($BasicTrgType =~/^LIB$/o)
+			{				
+			addLinkDescriptorCommand ($linkCommand, undef, undef, undef, undef, $warningMessage);
+			}
+		else
+			{
+			addLinkDescriptorCommand ($linkCommand, undef, undef, undef, $FirstLib, $warningMessage);
+			}
+
+		if (&Winutl_CopyForStaticLinkage)
+			{
+			$linkCommand = $copyCommand.
+							'"${output}\\${output.file.name}" '.
+							'"${var:KIT_EPOCROOT}'.kitRelativePath($RelPath).'${output.file.name}"';
+			addLinkDescriptorCommand ($linkCommand, "false", "false");
+			}
+		}
+
+##########################################
+# RVCT library generation and link stage #
+##########################################
+
+	elsif ($ABIV1 && ($CW_major_version >= 3)) 
+		{
+		my $InterWorking = ($ABI eq 'ARMV4') ? "" : "--inter";
+			
+		# Generate library
+
+		if ($DefFile and !$NoExportLibrary)
+			{
+			unless (&main::ExportUnfrozen)
+				{
+				$linkCommand = 'perl.exe -S prepdef.pl "${var:DEF_FILE}" "${target.data}\\'.$tempFilenameRoot.'.prep.def"';
+				addLinkDescriptorCommand ($linkCommand);
+
+				$linkCommand = 'def2dll.bat --path="${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).'\\" --bldpath="${target.data}" --import='.$tempFilenameRoot.' '.
+					'--deffile="${target.data}\\'.$tempFilenameRoot.'.prep.def" --linkAs='.$LinkAs.' '.$InterWorking;
+				addLinkDescriptorCommand ($linkCommand);
+
+				if ($ExtraExportLibrary)
+					{
+					$linkCommand = $copyCommand.'"${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).'${var:IMPORT_LIBRARY}" '.
+									'"${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).$ExtraExportLibrary.'.lib"';
+					addLinkDescriptorCommand ($linkCommand,"false", "false");
+					}
+				}
+			}
+
+		return if ($BasicTrgType=~/^IMPLIB$/io);
+		
+
+		# Create custom symbols only required in RVCT builds
+		my $implibs_no_path_vtblexport = "";
+
+		foreach my $lib (@LibList)
+			{
+			$implibs_no_path_vtblexport.="$lib(VtblExports.o) ";
+			}
+
+		addLinkDescriptorSymbol ('${var:IMPLIBS_NO_PATH_VTBLEXPORT}', $implibs_no_path_vtblexport);
+
+		my $AbsentSubst = '';
+		my $EntrySymbol;
+		my $Link = '';
+
+		if ($BasicTrgType=~/^DLL$/o) {
+			$EntrySymbol = '_E32Dll';
+		}
+		elsif ($BasicTrgType=~/^EXE$/o) {
+			$EntrySymbol = '_E32Startup';
+		}
+		if ($EntrySymbol) {
+			$AbsentSubst = " -absent $EntrySymbol";
+		}
+
+		$Link = 'armlink '.$oP.'diag_suppress 6331,6780'.$linkeropts.' ';
+
+		if ($Bld =~ /DEB$/o)
+			{
+			$Link .= ' '.$oP.'debug';
+			}
+
+
+	    # TARGET *.IN
+	    #------------
+
+		# Create "via" file containing all link objects in order to reduce link
+		# command line length
+		addLinkDescriptorDumpFile ('${var:LINK_OBJS}', '${target.data}\\${output.file.root}_'.$Bld.'_objects.via');
+		
+		if ($BasicTrgType!~/^LIB$/o) {
+			$linkCommand = $Link .' '.$oP.'partial -o ${var:COMMON_LINK_FLAGS} "${target.data}\\${output.file.root}.in" '.$oP.'via "${target.data}\\${output.file.root}_'.$Bld.'_objects.via"';
+			addLinkDescriptorCommand ($linkCommand);
+		}
+
+		# Perform link
+
+	    if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+	#		reorder the .DEF file taking frozen exports into account if there are any
+
+			$linkCommand = 'perl -S elf2inf.pl -o "${target.data}\\'.$tempFilenameRoot.'.inf" "${target.data}\\${output.file.root}.in"';
+			addLinkDescriptorCommand ($linkCommand);
+
+			$linkCommand = 'perl -S makedef.pl '.$AbsentSubst.' -Inf "${target.data}\\'.$tempFilenameRoot.'.inf"';
+
+	    	if (!$DefFile || $NoExportLibrary) {    			
+	    		$linkCommand .= ' -ignore_unfrozen_noncallable ';
+	    	}
+		if (SysTrg()) {
+	    		$linkCommand .= ' -SystemTargetType ';
+	    	}		
+		
+		    if (-e $DefFile) {	# effectively "if project frozen ..."
+		        $linkCommand .= " -Frzfile \"".'${var:DEF_FILE}'."\"";
+		    }
+		    # freeze ordinals, a maximum of 2, for polymorphic dlls
+		    my $Ordinal;
+		    my $Num=1;
+		    foreach $Ordinal (&main::Exports) {
+		    	$linkCommand .= " -$Num $Ordinal";
+			    $Num++;
+		    }
+
+		    $linkCommand.= ' "${target.data}\\'.$tempFilenameRoot.'.def"';
+		    addLinkDescriptorCommand ($linkCommand);
+    
+		    my $theDefFile = '"${target.data}\\'.$tempFilenameRoot.'.def"';
+		    $theDefFile = '"${var:DEF_FILE}"' if (-e $DefFile && !&main::ExportUnfrozen);
+
+			$linkCommand = 'def2dll.bat'.$AbsentSubst.' --path="${target.data}" --bldpath="${target.data}" --export='.$tempFilenameRoot.' --deffile='.$theDefFile.' --linkAs='.$LinkAs.' '.$InterWorking;
+			addLinkDescriptorCommand ($linkCommand);
+	    }
+
+        if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+#		generate an export object from the ordered .DEF file
+		if (&main::ExportUnfrozen) {
+			$linkCommand = 'def2dll.bat --path="${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).'\\" --bldpath="${target.data}" --import='.$tempFilenameRoot.
+				' --deffile="${target.data}\\'.$tempFilenameRoot.'.def" --linkAs='.$LinkAs.' '.$InterWorking;
+		    addLinkDescriptorCommand ($linkCommand, undef, undef, undef, undef, $exportUnfrozenWarningMessage);
+			}
+        }
+
+#       get rid of any -symbols produced .map file
+        if ($BasicTrgType=~/^(DLL|EXE)/o) {
+			$linkCommand = $deleteCommand.'"${output}\\${output.file.name}.map"';
+			addLinkDescriptorCommand ($linkCommand, "false", "false", undef, undef, undef, undef, (0,1));
+		}
+
+        if ($BasicTrgType=~/^(DLL|EXE)/o) {
+	        my $datalinkbase = "0x400000";
+	        $datalinkbase = &main::DataLinkAddress if (&main::DataLinkAddress);
+		
+	        $linkCommand = "$Link ".$oP.'shl '.$oP.'reloc '.$oP.'split '.$oP."rw-base $datalinkbase ".$oP.'noscanlib '."$PlatOpt{Ld}";
+	        
+	        if ($BasicTrgType=~/^DLL$/o) {
+	            # get the right object file for the entry point
+	            my $ObjFile = "UC_DLL_.o";
+	            if ($FirstLib =~ /EDEV/i) {
+		            $ObjFile = "D_ENTRY_.o";
+	            }
+	            if ($FirstLib =~ /EKLL/i) {
+		            $ObjFile = "L_ENTRY_.o";
+	            }
+	            if ($FirstLib =~ /EEXT/i) {
+		            $ObjFile = "X_ENTRY_.o";
+	            }
+	            if ($FirstLib =~ /EVAR/i) {
+		            $ObjFile = "V_ENTRY_.o";
+	            }
+
+#		    If platform is a customization, take libs from parent directory.		   
+			$linkCommand .= $oP.'entry _E32Dll "'.$FirstLib.'('.$ObjFile.')"';
+		    if($IsCustomDll)
+		    {
+				$linkCommand .=	' "${target.data}\\'.$tempFilenameRoot.'.exp"';
+			}
+		    
+	        } elsif ($BasicTrgType=~/^EXE$/o || $TrgType=~/^EXEXP$/o) {
+			    # get the right object file for the entry point
+			    my $ObjFile = "UC_EXE_.o" ;
+			    if ($FirstLib =~ /KC_EXE/i) {
+					$ObjFile = "K_ENTRY_.o";
+			    }
+
+			if($IsPlatCustomization) 
+			{
+				$linkCommand .= $oP.'entry _E32Startup "'.$FirstLib.'('.$ObjFile.')"';
+			} 
+			else
+			{
+			    	$linkCommand .= $oP.'entry _E32Startup "'.$FirstLib.'('.$ObjFile.')"';
+			}
+		    
+			    if ($TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+					$linkCommand .= ' "${target.data}\\'.$tempFilenameRoot.'.exp"';
+				}
+			}
+
+			$linkCommand .= ' -o "${target.data}\\${output.file.name}"';
+
+			$linkCommand .= ' '.$oP.'symbols '.$oP.'list "${output}\\${output.file.name}.map"';
+			$linkCommand .= ' "${target.data}\\${output.file.root}.in"';
+
+
+			if ($BasicTrgType=~/^DLL$/o) { # Add the DLL stub library
+				if($IsPlatCustomization) 
+				{
+				if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+				   $linkCommand .= ' "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\\'.$Bld.'\EDLLSTUB'.$RVCTVersion.'.LIB"';
+				}
+				else {
+				   $linkCommand .= ' "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\\'.$Bld.'\EDLLSTUB.LIB"';
+				}
+				}
+				else
+				{
+				if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+				   $linkCommand .= ' "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\\'.$Bld.'\EDLLSTUB'.$RVCTVersion.'.LIB"';
+				}
+				else {
+				   $linkCommand .= ' "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\\'.$Bld.'\EDLLSTUB.LIB"';
+				}
+				}
+			}
+
+			$linkCommand .= ' ${var:LIBS}';
+			
+			
+			my $runtimeLibs = "";
+			my $StaticRTLib = "usrt".$RVCTVersion;
+			
+			# use ksrt for system code and for user ARM code
+			$StaticRTLib = "ksrt".$RVCTVersion if ($SystemTrg);
+			$runtimeLibs .= $StaticRTLib.".lib" unless ($Trg =~ /(U|K)SRT/i || ($BasicTrgType=~/^LIB$/o));
+		
+			unless ($ArmRT || ($BasicTrgType=~/^LIB$/o)) {
+				my $TargLib = "$ExportLibrary.lib";
+				$TargLib =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+				unless ($SystemTrg) {
+					foreach (@RTLibList) {
+						$runtimeLibs .= " ".$_ unless ($_ =~ /$TargLib/i);
+					}
+			    }
+			}
+
+			foreach (@ArmLibList)
+				{
+				$runtimeLibs.= " ".$_;
+				}
+			
+			addLinkDescriptorSymbol ('${var:RUNTIME_LIBS}', $runtimeLibs);
+				
+			if($IsPlatCustomization) 
+			{
+			     $linkCommand .= ' --userlibpath "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\\'.$ParentPlat.'\\'.$Bld.'","${var:KIT_EPOCROOT}\\EPOC32\RELEASE\\'.$ParentPlat.'\LIB" ${var:RUNTIME_LIBS} ${var:IMPLIBS_NO_PATH_VTBLEXPORT}';
+			}
+			else
+				{
+				addLinkDescriptorSymbol ('${var:RUNTIME_LIBS}', 'usrt'.$RVCTVersion.'.lib dfpaeabi.lib dfprvct'.$RVCTVersion.'.lib dfprvct'.$RVCTVersion.'-thunk.lib drtaeabi.lib drtaeabi.lib(VtblExports.o) drtrvct'.$RVCTVersion.'.lib');
+				}
+				
+			$linkCommand .= ' --userlibpath "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\\'.$Bld.'","${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\LIB" ${var:RUNTIME_LIBS} ${var:IMPLIBS_NO_PATH_VTBLEXPORT}';
+			
+			addLinkDescriptorCommand ($linkCommand, undef, undef, undef, $FirstLib);
+
+	    	if ($Bld=~/^U?DEB$/o) {
+			$linkCommand = $copyCommand. ' "${target.data}\\${output.file.name}" "${output}\\${output.file.root}.sym"'; 
+			addLinkDescriptorCommand ($linkCommand, "false", "false");
+	    	}
+	
+			$linkCommand = 'elftran -version '. &Genutl_VersionToUserString(%Version).' -sid '. &main::SecureId(); 
+			if (&main::CompressTarget) {
+				$linkCommand .= ' -nocompress ';
+			}
+			# change - exexps are allowed data, but they look like dlls to elftran....
+			if (&main::AllowDllData || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+				$linkCommand.=' -allow';
+			}
+			if (not &main::CallDllEntryPoints ) {
+				$linkCommand.=' -nocall';
+			}
+			if (&main::DataLinkAddress) {
+				$linkCommand.=' -datalinkaddress '.&main::DataLinkAddress;
+			}
+			if (&main::FixedProcess) {
+				$linkCommand.=' -fixed';
+			}
+			if (&main::HeapSize) {
+				my %HeapSize=&main::HeapSize;
+				$linkCommand.=' -heap '.$HeapSize{Min}.' '.$HeapSize{Max};
+			}
+			if (&main::ProcessPriority) {
+				$linkCommand.=' -priority '.&main::ProcessPriority;
+			}
+			if (&main::StackSize) {
+				$linkCommand.=' -stack '.&main::StackSize;
+			}
+
+			my $i=1;
+			foreach (@UidList) {
+				$linkCommand.=" -uid$i $_";
+				$i++;
+			}
+			if(&main::VendorId) {
+				$linkCommand.=' -vid '.&main::VendorId;
+			}
+
+			$linkCommand.=' -fpu '.$floatingpointmodel;
+
+			$linkCommand.=' -capability '.&main::Capability. ' "${target.data}\\${output.file.name}" "${output}\\${output.file.name}"';
+		
+			addLinkDescriptorCommand ($linkCommand, "false");
+        	}
+        elsif ($BasicTrgType=~/^LIB$/o) {
+			$linkCommand = 'armar '.$oP.'create "${output}\\${output.file.name}" '.$oP.'via "${target.data}\\${output.file.root}_'.$Bld.'_objects.via"'.' '.$archiveropts;
+			addLinkDescriptorCommand ($linkCommand);
+			}
+		}
+
+##############################################
+# BPABI library generation and link stage    #
+# Assumes use of RVCT 2.2					 #
+##############################################
+
+	elsif ($ABIV2 && ($CW_major_version >= 3.1)) {
+		
+		# prolly don't need this...
+		my $InterWorking = ($ABI eq 'ARMV4') ? "" : "--inter";
+			
+		return if ($BasicTrgType=~/^IMPLIB$/io);
+		
+		if ($BasicTrgType=~/^LIB$/o) {
+			$linkCommand = 'armar --create ${output}\\${output.file.name} ${var:LINK_OBJS} ${var:LIBS}'.' '.$archiveropts;
+	        addLinkDescriptorCommand ($linkCommand);
+         }
+		else
+		{
+		my $AbsentSubst = '';
+		my $EntrySymbol;
+		my $Link = '';
+
+		if ($BasicTrgType=~/^DLL$/o) {
+			$EntrySymbol = '_E32Dll';
+		}
+		elsif ($BasicTrgType=~/^EXE$/o) {
+			$EntrySymbol = '_E32Startup';
+		}
+		if ($EntrySymbol) {
+			$AbsentSubst = " -absent $EntrySymbol";
+		}
+
+		$Link = 'armlink '.$oP.'diag_suppress 6331,6780'.$linkeropts.' ';
+
+		if ($Bld =~ /DEB$/o)
+			{
+			$Link .= ' '.$oP.'debug';
+			}
+
+
+	    # TARGET *.IN
+	    #------------
+
+		# Create "via" file containing all link objects in order to reduce link
+		# command line length
+		addLinkDescriptorDumpFile ('${var:LINK_OBJS}', '${target.data}\\${output.file.root}_'.$Bld.'_objects.via');
+		
+		if ($BasicTrgType!~/^LIB$/o) {
+			$linkCommand = $Link .' '.$oP.'partial -o ${var:COMMON_LINK_FLAGS} "${target.data}\\${output.file.root}.in" '.$oP.'via "${target.data}\\${output.file.root}_'.$Bld.'_objects.via"';
+
+		}
+
+
+#       get rid of any -symbols produced .map file
+        if ($BasicTrgType=~/^(DLL|EXE)/o) {
+			$linkCommand = $deleteCommand.'"${output}\\${output.file.name}.map"';
+			addLinkDescriptorCommand ($linkCommand, "false", "false", undef, undef, undef, undef, (0,1));
+		}
+
+        if ($BasicTrgType=~/^(DLL|EXE)/o) {
+	        my $datalinkbase = "0x400000";
+			my $librarylist;
+			my $expr;
+			@ToolChainLibList = &GetLibList;
+
+			foreach $expr (@ToolChainLibList) {
+				$librarylist .= $expr.' ';
+			}
+	        
+  	        $datalinkbase = &main::DataLinkAddress if (&main::DataLinkAddress);
+	        $linkCommand = "$Link ".$oP.'bpabi '.$oP.'reloc '.$oP.'split '.$oP.'no_scanlib '.$oP.'datacompressor=off '.$oP."rw-base $datalinkbase "."$PlatOpt{Ld}";
+			$linkCommand .= ' --dll --symver_soname --soname '.$LinkAs.' ';
+			
+			
+	        if ($BasicTrgType=~/^DLL$/o) {
+	            # get the right object file for the entry point
+	            my $ObjFile = "UC_DLL_.o";
+	            if ($FirstLib =~ /EDEV/i) {
+		            $ObjFile = "D_ENTRY_.o";
+	            }
+	            if ($FirstLib =~ /EKLL/i) {
+		            $ObjFile = "L_ENTRY_.o";
+	            }
+	            if ($FirstLib =~ /EEXT/i) {
+		            $ObjFile = "X_ENTRY_.o";
+	            }
+	            if ($FirstLib =~ /EVAR/i) {
+		            $ObjFile = "V_ENTRY_.o";
+	            }
+
+#		    If platform is a customization, take libs from parent directory.		   
+		    if($IsCustomDll)
+		    {
+		    
+			$linkCommand .= $oP.'entry _E32Dll "'.$FirstLib.'('.$ObjFile.')"'.
+					' "${target.data}\\'.$tempFilenameRoot.'.exp"';
+			    
+		    }
+		    else
+		    {
+		    # ARMV5 hardcoded here...
+		    $linkCommand .= $oP.'entry _E32Dll "'.$FirstLib.'('.$ObjFile.')"';
+		    }
+
+	        } elsif ($BasicTrgType=~/^EXE$/o || $TrgType=~/^EXEXP$/o) {
+			    # get the right object file for the entry point
+			    my $ObjFile = "UC_EXE_.o" ;
+			    if ($FirstLib =~ /KC_EXE/i) {
+					$ObjFile = "K_ENTRY_.o";
+			    }
+
+		    # Should this use $ParentPlat rather than hardcoded ARMV5 dir?
+		   $linkCommand .= $oP.'entry _E32Startup "'.$FirstLib.'('.$ObjFile.')"';
+		
+			}
+
+			$linkCommand .= ' -o "${target.data}\\${output.file.name}"';
+
+			if ($BasicTrgType=~/^DLL$/o) { # Add the DLL stub library
+				if($IsPlatCustomization) 
+				{
+				if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+				   $linkCommand .= ' "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\\'.$ParentPlat.'\\'.$Bld.'\EDLLSTUB'.$RVCTVersion.'.LIB"';
+				}
+				else {
+				   $linkCommand .= ' "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\\'.$ParentPlat.'\\'.$Bld.'\EDLLSTUB.LIB"';
+				}
+				}
+				else
+				{
+				if ($RVCTMajorVersion == 2 && $RVCTMinorVersion < 2) {
+				   $linkCommand .= ' "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\\'.$Bld.'\EDLLSTUB'.$RVCTVersion.'.LIB"';
+				}
+				else {
+				   $linkCommand .= ' "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\\'.$Bld.'\EDLLSTUB.LIB"';
+				}
+				}
+			}
+
+			$linkCommand .= ' ${var:LIBS}';
+			
+			
+			my $runtimeLibs = "";
+			my $StaticRTLib = "usrt".$RVCTVersion;
+			
+			# use ksrt for system code and for user ARM code
+			$StaticRTLib = "ksrt".$RVCTVersion if ($SystemTrg);
+			$runtimeLibs .= $StaticRTLib.".lib" unless ($Trg =~ /(U|K)SRT/i || ($BasicTrgType=~/^LIB$/o));
+		
+			unless ($ArmRT || ($BasicTrgType=~/^LIB$/o)) {
+				my $TargLib = "$ExportLibrary.lib";
+				$TargLib =~ s/\{(\d|a|b|c|d|e|f){8}\}//i;
+				unless ($SystemTrg) {
+					foreach (@RTLibList) {
+						$runtimeLibs .= " ".$_ unless ($_ =~ /$TargLib/i);
+					}
+			    }
+			}
+
+			foreach (@ArmLibList)
+				{
+				$runtimeLibs.= " ".$_;
+				}
+			
+			addLinkDescriptorSymbol ('${var:RUNTIME_LIBS}', $runtimeLibs);
+				
+			$linkCommand .= ' --userlibpath "${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\\'.$Bld.'","${var:KIT_EPOCROOT}\\EPOC32\RELEASE\ARMV5\LIB" '.$oP.'via "${target.data}\\${output.file.root}_'.$Bld.'_objects.via" ${var:RUNTIME_LIBS} '.$librarylist.' ';
+			
+			addLinkDescriptorCommand ($linkCommand, undef, undef, undef, $FirstLib);
+
+		}
+		
+		#### Create the .sym file
+		$linkCommand = 'cmd.exe /C copy "${target.data}\\${output.file.name}" "${output}\\${output.file.root}.sym"';
+		addLinkDescriptorCommand ($linkCommand);
+		
+		#### copy the project .def file for prep
+		if ($DefFile and !$NoExportLibrary)
+		{
+			unless (&main::ExportUnfrozen)
+			{
+        	$linkCommand = 'cmd.exe /C copy "${var:DEF_FILE}" "${target.data}\\${var:IMPORT_LIBRARY_NO_EXT}.prep.def"';
+			addLinkDescriptorCommand ($linkCommand);
+			}
+		}
+		
+		
+		#### ELF2E32 POST-LINK COMMAND ####
+		# Section needs to be generic for BPABI (e.g. GCCE & ARMV5_ABIV2)
+		$linkCommand  = '${var:KIT_EPOCROOT}\\epoc32\\tools\\elf2e32.exe ';		
+		
+		# Change - exexps are allowed data, but they look like dlls to elftran....
+		if (&main::AllowDllData || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			$linkCommand .= ' --dlldata';
+		}
+
+		if (&main::DataLinkAddress) {
+			$linkCommand .= ' --datalinkaddress=',&main::DataLinkAddress;
+		}
+		if (&main::FixedProcess) {
+			$linkCommand .=	' --fixedaddress';
+		}
+		
+		$linkCommand .= ' --sid='.&main::SecureId();
+		$linkCommand .= ' --version='. &Genutl_VersionToUserString(%Version);
+		
+		if (&main::HeapSize) {
+			my %HeapSize=&main::HeapSize;
+			$linkCommand.=' --heap '.$HeapSize{Min} .','.$HeapSize{Max};
+		}
+		
+		if (&main::ProcessPriority) {
+			$linkCommand .=	' --priority='.&main::ProcessPriority;
+		}
+		
+		if (&main::StackSize) {
+			$linkCommand .= ' --stack='.&main::StackSize;
+		}
+		
+		my $i=1;
+		foreach (@UidList) {
+			$linkCommand .= " --uid$i=$_";
+			$i++;
+		}
+		if (&main::VendorId) {
+			$linkCommand .= ' --vid='.&main::VendorId;
+		}
+		
+		$linkCommand .= ' --capability='.&main::Capability;
+
+		# ARMFPU only currently supported for RVCT BPABI builds
+		if (&main::ARMFPU && (&main::ARMFPU =~ /^VFPV2$/i)) {
+			$linkCommand .= ' --fpu=vfpv2'
+		}
+		else {
+			$linkCommand .= ' --fpu=softvfp'
+		}
+		
+	
+		if(($BasicTrgType=~/^DLL/ && $TrgType!~/^DLL/ ) || $TrgType=~/^EXEXP/) {
+	 		$linkCommand .= ' --targettype='.$TrgType;
+ 		}
+ 		else {
+ 			$linkCommand .= ' --targettype='.$BasicTrgType;
+ 		}
+		
+		$linkCommand .= ' --output="${output}\\${output.file.name}"';
+		
+		my $warningMessage;
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			if ($DefFile and !$NoExportLibrary) {
+				$linkCommand .= ' --definput="${target.data}\\${var:IMPORT_LIBRARY_NO_EXT}.prep.def"';
+			}
+			$linkCommand .= ' --dso=';
+			$linkCommand .= '"${var:KIT_EPOCROOT}\\EPOC32\\RELEASE\\ARMV5\\LIB\\${var:IMPORT_LIBRARY}"';
+				
+			$linkCommand .= ' --defoutput=';
+			$linkCommand .= '"${target.data}\\${var:IMPORT_LIBRARY_NO_EXT}.def"';
+				
+			if (&main::ExportUnfrozen) {
+				$warningMessage = $exportUnfrozenWarningMessage;
+				$linkCommand .= ' --unfrozen';
+			}
+		}
+		
+		$linkCommand .= ' --elfinput="${target.data}\\${output.file.name}"';
+		$linkCommand .= ' --linkas='.$LinkAs;
+		#Change - LIB path is hardcoded here...
+		$linkCommand .= ' --libpath="${var:KIT_EPOCROOT}\\EPOC32\\RELEASE\\ARMV5\\LIB"';
+		
+        if ($BasicTrgType=~/^DLL$/o && $TrgType!~/^DLL/){
+			my $Export;
+			my $Ordinal=1;
+			foreach $Export (&main::Exports)
+				{
+				if ($Ordinal eq 1) {
+					$linkCommand .= ' --sysdef=';
+				}
+				elsif ($Ordinal ne 1) {
+					$linkCommand .= ';';
+					}
+					
+				$linkCommand .= "$Export,".$Ordinal;
+				$Ordinal++;
+				}
+		}
+		
+		addLinkDescriptorCommand ($linkCommand, undef, undef, undef, undef, $warningMessage);
+		
+		}
+		
+		# copy def file output
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			$linkCommand = 'cmd.exe /C copy  "${target.data}\\${var:IMPORT_LIBRARY_NO_EXT}.def" "${Project}\${var:IMPORT_LIBRARY_NO_EXT}.def"';
+			addLinkDescriptorCommand($linkCommand);
+		}
+		
+		# copy the import lib (dso) created
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			if ($DefFile and !$NoExportLibrary) {
+				$linkCommand = 'cmd.exe /C copy ${var:KIT_EPOCROOT}\\EPOC32\\RELEASE\\ARMV5\\LIB\\${var:IMPORT_LIBRARY} ${var:KIT_EPOCROOT}\\EPOC32\\RELEASE\\ARMV5\\LIB\\${output.file.root}.dso';
+			}
+			addLinkDescriptorCommand($linkCommand);
+		}
+	
+	}
+			
+#########################################
+# GCC library generation and link stage #
+#########################################
+
+	elsif ($Plat eq "ARM4")
+		{
+		# Generate library
+
+		if ($DefFile and !$NoExportLibrary)
+			{
+			unless (&main::ExportUnfrozen)
+				{
+				$linkCommand = 'perl.exe -S prepdef.pl "${var:DEF_FILE}" "${target.data}\\'.$tempFilenameRoot.'.prep.def"';
+				addLinkDescriptorCommand ($linkCommand);
+
+				$linkCommand = "$Dlltool $PlatOpt{Dlltool}".' --output-lib "${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).'${var:IMPORT_LIBRARY}" --def "'.
+						'${target.data}\\'.$tempFilenameRoot.'.prep.def" --dllname "'.$LinkAs.'"';
+				addLinkDescriptorCommand ($linkCommand);
+
+				if ($ExtraExportLibrary)
+					{
+					$linkCommand = $copyCommand.'"${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).'${var:IMPORT_LIBRARY}" '.
+									'"${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).$ExtraExportLibrary.'.lib"';
+					addLinkDescriptorCommand ($linkCommand,"false", "false");
+					}
+
+				foreach (@CompatibleABIs)
+					{
+					$linkCommand = "$Dlltool $ABIDlltool{$_}".' --output-lib "${var:KIT_EPOCROOT}'.kitRelativePath($ABILibPath{$_}).'UREL\\${var:IMPORT_LIBRARY}" --def "'.
+							'${target.data}\\'.$tempFilenameRoot.'.prep.def" --dllname "'.$LinkAs.'"';
+					addLinkDescriptorCommand ($linkCommand);
+
+					if ($ExtraExportLibrary)
+						{
+						$linkCommand = $copyCommand.'"${var:KIT_EPOCROOT}'.kitRelativePath($ABILibPath{$_}).'UREL\\${var:IMPORT_LIBRARY}" '.
+										'"${var:KIT_EPOCROOT}'.kitRelativePath($ABILibPath{$_}).'UREL\\'.$ExtraExportLibrary.'.lib"';
+						addLinkDescriptorCommand ($linkCommand,"false", "false");
+						}
+					}
+				}
+			}
+
+
+		# TARGET *.IN
+		#------------
+		$linkCommand = $deleteCommand.'"${target.data}\\${output.file.root}.in"';
+		addLinkDescriptorCommand ($linkCommand, "false", "false", undef, undef, undef, undef, (0,1));
+				
+		$linkCommand = 'ar.exe cr "${target.data}\\${output.file.root}.in" ${var:LINK_OBJS}';
+		addLinkDescriptorCommand ($linkCommand);
+		
+
+		# Perform Link
+
+	#	Establish the entry point symbol
+		my $EntrySymbol;
+		if ($BasicTrgType=~/^DLL$/o) {
+			$EntrySymbol = '_E32Dll';
+		}
+		elsif ($BasicTrgType=~/^EXE$/o) {
+			$EntrySymbol = '_E32Startup';
+		}
+		my $AbsentSubst = '';
+		if ($EntrySymbol) {
+			$AbsentSubst = " -absent $EntrySymbol";
+		}
+
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+
+	#		generate a .DEF file from the objects and static libraries
+			$linkCommand = "$Dlltool $PlatOpt{Dlltool} --output-def ".'"${target.data}\\'.$tempFilenameRoot.'.inf" "${target.data}\\${output.file.root}.in"';
+
+			foreach (@StatLibList) {
+				$linkCommand .= ' "${var:KIT_EPOCROOT}'.kitRelativePath($StatLinkPath).$_.'"';
+			}
+
+			addLinkDescriptorCommand ($linkCommand);
+
+	#		reorder the .DEF file taking frozen exports into account if there are any
+	#			call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+			$linkCommand = 'perl.exe -S makedef.pl -Deffile "${target.data}\\'.$tempFilenameRoot.'.inf" '.$AbsentSubst;
+			if (-e $DefFile) { # effectively "if project frozen ..."
+				$linkCommand .= " -Frzfile \"".'${var:DEF_FILE}'."\"";
+			}
+			# freeze ordinals, a maximum of 2, for polymorphic dlls
+			my $Ordinal;
+			my $Num=1;
+			foreach $Ordinal (&main::Exports) {
+				$linkCommand .= " -$Num $Ordinal";
+				$Num++;
+			}
+			$linkCommand .= ' "${target.data}\\'.$tempFilenameRoot.'.def"';
+			addLinkDescriptorCommand ($linkCommand);
+
+	#		delete the unordered definition file
+			$linkCommand = $deleteCommand.'"${target.data}\\'.$tempFilenameRoot.'.inf"';
+			addLinkDescriptorCommand ($linkCommand, "false", "false");
+
+	#		generate an export object from the ordered .DEF file
+			$linkCommand = "$Dlltool $PlatOpt{Dlltool} --def".' "${target.data}\\'.$tempFilenameRoot.'.def"'.
+				' --output-exp "${target.data}\\'.$tempFilenameRoot.'.exp"'.
+				" --dllname \"$LinkAs\"";
+
+			my $warningMessage;
+				
+			if (&main::ExportUnfrozen) {
+				$warningMessage = $exportUnfrozenWarningMessage;
+				$linkCommand .= ' --output-lib "${var:KIT_EPOCROOT}'.kitRelativePath($LibPath).'${var:IMPORT_LIBRARY}"';
+			}
+			
+			addLinkDescriptorCommand ($linkCommand, undef, undef, undef, undef, $warningMessage);
+		}
+
+	#	call ld to do base relocations (and dll exports)
+		if ($BasicTrgType=~/^(DLL|EXE)/o) {
+			$linkCommand = "$Link $PlatOpt{Ld} -s";	
+			if ($BasicTrgType=~/^DLL$/o) {
+				$linkCommand .= " $PlatOpt{Entry} $EntrySymbol -u $EntrySymbol ".'"${target.data}\\'.$tempFilenameRoot.'.exp" --dll ';
+			}
+			elsif ($BasicTrgType=~/^EXE$/o) {
+				$linkCommand .= " $PlatOpt{Entry} $EntrySymbol -u $EntrySymbol ";
+			}
+	#		--whole-archive is required here apparently because of a defect in the gcc toolchain
+	#		the flag can probably be removed with a later version of gcc
+
+			$linkCommand .= '--base-file "${target.data}\\${output.file.root}.bas" -o "${target.data}\\${output.file.name}" '.
+				'${var:FIRST_LIB} --whole-archive "${target.data}\\${output.file.root}.in" '.
+				"--no-whole-archive";
+			$linkCommand .= ' ${var:COMMON_LINK_FLAGS} ${var:LIBS}';
+			addLinkDescriptorCommand ($linkCommand, undef, undef, undef, $FirstLib);
+
+	#		delete temporary files
+			if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+				$linkCommand = $deleteCommand.'"${target.data}\\'.$tempFilenameRoot.'.exp"';
+				addLinkDescriptorCommand ($linkCommand, "false", "false", undef, undef, undef, undef, (0,1));
+			}
+			$linkCommand = $deleteCommand.'"${target.data}\\${output.file.name}"';
+			addLinkDescriptorCommand ($linkCommand, "false", "false");
+
+	#		call dlltool to do base relocations (and dll exports)
+			$linkCommand = "$Dlltool $PlatOpt{Dlltool} ";
+			if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+				$linkCommand .= '--def "${target.data}\\'.$tempFilenameRoot.'.def" '.
+					"--dllname \"$LinkAs\" ";
+			}
+			$linkCommand .= '--base-file "${target.data}\\${output.file.root}.bas" '.
+				'--output-exp "${target.data}\\'.$tempFilenameRoot.'.exp" ';
+			addLinkDescriptorCommand ($linkCommand);
+
+	#		delete temporary files
+			$linkCommand = $deleteCommand.'"${target.data}\\${output.file.root}.bas"';
+			addLinkDescriptorCommand ($linkCommand, "false", "false");
+
+	#		call ld to link the target
+			$linkCommand = "$Link $PlatOpt{Ld}";
+			if ($Bld=~/^U?REL$/o) {
+				$linkCommand .= " -s";
+			}
+			if ($BasicTrgType=~/^DLL$/o) {
+				$linkCommand .= " $PlatOpt{Entry} $EntrySymbol -u $EntrySymbol --dll ";
+			}
+			elsif ($BasicTrgType=~/^EXE$/o) {
+				$linkCommand .= " $PlatOpt{Entry} $EntrySymbol -u $EntrySymbol ";
+			}
+	#		--whole-archive is required here apparently because of a defect in the gcc toolchain
+	#		the flag can probably be removed with a later version of gcc
+			$linkCommand .= '"${target.data}\\'.$tempFilenameRoot.'.exp" '.
+				'-Map "${output}\\${output.file.name}.map" -o "${target.data}\\${output.file.name}" '.
+				'${var:FIRST_LIB} --whole-archive "${target.data}\\${output.file.root}.in" '.
+				"--no-whole-archive";
+			$linkCommand .= ' ${var:LIBS}';
+
+			if ($BasicTrgType=~/^LIB$/o) {				
+			addLinkDescriptorCommand ($linkCommand, undef, undef, undef, undef);
+			}
+			else {
+			addLinkDescriptorCommand ($linkCommand, undef, undef, undef, $FirstLib);
+			}
+
+	#		delete temporary files
+			$linkCommand = $deleteCommand.'"${target.data}\\'.$tempFilenameRoot.'.exp"';
+			addLinkDescriptorCommand ($linkCommand, "false", "false");
+
+			if ($Bld=~/DEB$/o) {
+				$linkCommand = $Objcopy.' -X "${target.data}\\${output.file.name}" "${output}\\${output.file.root}.sym"';
+				addLinkDescriptorCommand ($linkCommand);
+			}
+
+			$linkCommand = "petran.exe $PlatOpt{Petran} -version ". &Genutl_VersionToUserString(%Version). " -sid ". &main::SecureId(). ' "${target.data}\\${output.file.name}" "${output}\\${output.file.name}" ';
+
+			if (&main::CompressTarget) {
+				$linkCommand .= ' -nocompress';
+			}
+			if (&main::AllowDllData) {
+				$linkCommand .= ' -allow';
+			}
+			if (not &main::CallDllEntryPoints) {
+				$linkCommand .= ' -nocall';
+			}
+			if (&main::DataLinkAddress) {
+				$linkCommand .= ' -datalinkaddress '.&main::DataLinkAddress;
+			}
+			if (&main::FixedProcess) {
+				$linkCommand .= ' -fixed';
+			}
+			if (&main::HeapSize) {
+				my %HeapSize=&main::HeapSize;
+				$linkCommand .= ' -heap '.$HeapSize{Min}.' '.$HeapSize{Max};
+			}
+			if (&main::ProcessPriority) {
+				$linkCommand .= ' -priority '.&main::ProcessPriority;
+			}
+			if (&main::StackSize) {
+				$linkCommand .= ' -stack '.&main::StackSize;
+			}
+			my $i=1;
+			foreach (@UidList) {
+				$linkCommand .= " -uid$i $_";
+				$i++;
+			}
+				
+			$linkCommand .= ' -capability '.&main::Capability;
+			
+			if (&main::VendorId) {
+			$linkCommand .= ' -vid '.&main::VendorId;
+			}
+		
+			addLinkDescriptorCommand ($linkCommand, "false");
+			
+			$linkCommand = $deleteCommand.'"${target.data}\\${output.file.name}"';
+			addLinkDescriptorCommand ($linkCommand, "false", "false");
+		}
+		elsif ($BasicTrgType=~/^LIB$/o) {
+			$linkCommand = $copyCommand.'"${target.data}\\${output.file.root}.in" "${var:KIT_EPOCROOT}'.kitRelativePath($StatLinkPath).'${output.file.name}"';
+			addLinkDescriptorCommand ($linkCommand,"false", "false");
+		}
+	}
+	
+###############################################
+# GCCE library generation and link stage      #
+# GCCE only supported for CW 3.1 and greater #
+###############################################
+
+	elsif ($Plat eq "GCCE" || $CustGCCE)
+	{	
+	
+        if ($BasicTrgType=~/^LIB$/o) {
+	        $linkCommand = 'ar cr ${output}\\${output.file.name} ${var:LINK_OBJS} ${var:LIBS}';
+	        addLinkDescriptorCommand ($linkCommand);
+         }
+         
+		elsif ($BasicTrgType=~/^(DLL|EXE)/o) {
+        
+        $linkCommand = 'arm-none-symbianelf-ld';
+        my $GCCE_LibGCCPath = ' -L';
+        $GCCE_LibGCCPath .= '"'.GetGCCELibPath("-print-file-name=libsupc++.a").'"';
+        $GCCE_LibGCCPath .= ' -L';
+        $GCCE_LibGCCPath .= '"'.GetGCCELibPath("-print-libgcc-file-name").'"';
+		$linkCommand .= $GCCE_LibGCCPath;
+		$linkCommand .=	' ${var:COMMON_LINK_FLAGS}';
+		$linkCommand .= ' --target1-abs --no-undefined -nostdlib -Ttext 0x8000 -Tdata 0x400000';
+		$linkCommand .= ' -shared --default-symver -soname '.$LinkAs." ";
+		
+		if ($Bld=~/REL$/o) {
+			$linkCommand .= ' -Map "${output}\\${output.file.name}.map"';
+		}
+		
+		if ($BasicTrgType=~/^DLL$/o)
+			{
+			$linkCommand .= ' --entry _E32Dll -u _E32Dll';
+			}
+		elsif ($BasicTrgType=~/^EXE$/o)
+			{
+			$linkCommand .= ' --entry _E32Startup -u _E32Startup';
+			}		
+
+		$linkCommand .= ' ${var:FIRST_LIB}';
+		$linkCommand .= ' -o "${target.data}\\${output.file.name}" ${var:LINK_OBJS} ${var:LIBS}';
+		$linkCommand .= ' -lsupc++ -lgcc'.' '.$linkeropts; 
+		addLinkDescriptorCommand ($linkCommand, undef, undef, undef, $FirstLib);
+		
+		
+		$linkCommand = 'cmd.exe /C copy "${target.data}\\${output.file.name}" "${output}\\${output.file.root}.sym"';
+		addLinkDescriptorCommand ($linkCommand);
+		
+		# copy the project .def file for prep
+		if ($DefFile and !$NoExportLibrary)
+		{
+			unless (&main::ExportUnfrozen)
+			{
+        	$linkCommand = 'cmd.exe /C copy "${var:DEF_FILE}" "${target.data}\\${var:IMPORT_LIBRARY_NO_EXT}.prep.def"';
+			addLinkDescriptorCommand ($linkCommand);
+			}
+		}
+		
+		$linkCommand  = '${var:KIT_EPOCROOT}\\epoc32\\tools\\elf2e32.exe ';		
+		
+		# Change - exexps are allowed data, but they look like dlls to elftran....
+		if (&main::AllowDllData || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			$linkCommand .= ' --dlldata';
+		}
+
+		if (&main::DataLinkAddress) {
+			$linkCommand .= ' --datalinkaddress=',&main::DataLinkAddress;
+		}
+		if (&main::FixedProcess) {
+			$linkCommand .=	' --fixedaddress';
+		}
+		
+		$linkCommand .= ' --sid='.&main::SecureId();
+		
+		if (&main::HeapSize) {
+			my %HeapSize=&main::HeapSize;
+			$linkCommand.=' --heap '.$HeapSize{Min} .','.$HeapSize{Max};
+		}
+		
+		if (&main::ProcessPriority) {
+			$linkCommand .=	' --priority='.&main::ProcessPriority;
+		}
+		
+		if (&main::StackSize) {
+			$linkCommand .= ' --stack='.&main::StackSize;
+		}
+		
+		my $i=1;
+		foreach (@UidList) {
+			$linkCommand .= " --uid$i=$_";
+			$i++;
+		}
+		if (&main::VendorId) {
+			$linkCommand .= ' --vid='.&main::VendorId;
+		}
+		
+		$linkCommand .= ' --capability='.&main::Capability;
+		
+	
+		if(($BasicTrgType=~/^DLL/ && $TrgType!~/^DLL/ ) || $TrgType=~/^EXEXP/) {
+	 		$linkCommand .= ' --targettype='.$TrgType;
+ 		}
+ 		else {
+ 			$linkCommand .= ' --targettype='.$BasicTrgType;
+ 		}
+		
+		$linkCommand .= ' --output="${output}\\${output.file.name}"';
+		
+		my $warningMessage;
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			if ($DefFile and !$NoExportLibrary) {
+				$linkCommand .= ' --definput="${target.data}\\${var:IMPORT_LIBRARY_NO_EXT}.prep.def"';
+			}
+			$linkCommand .= ' --dso=';
+			$linkCommand .= '"${var:KIT_EPOCROOT}\\EPOC32\\RELEASE\\ARMV5\\LIB\\${var:IMPORT_LIBRARY}"';
+				
+			$linkCommand .= ' --defoutput=';
+			$linkCommand .= '"${target.data}\\${var:IMPORT_LIBRARY_NO_EXT}.def"';
+				
+			if (&main::ExportUnfrozen) {
+				$warningMessage = $exportUnfrozenWarningMessage;
+				$linkCommand .= ' --unfrozen';
+			}
+		}
+		
+		$linkCommand .= ' --elfinput="${target.data}\\${output.file.name}"';
+		$linkCommand .= ' --linkas='.$LinkAs;
+		#Change - LIB path is hardcoded here...
+		$linkCommand .= ' --libpath="${var:KIT_EPOCROOT}\\EPOC32\\RELEASE\\ARMV5\\LIB"';
+		
+        if ($BasicTrgType=~/^DLL$/o && $TrgType!~/^DLL/){
+			my $Export;
+			my $Ordinal=1;
+			foreach $Export (&main::Exports)
+				{
+				if ($Ordinal eq 1) {
+					$linkCommand .= ' --sysdef=';
+				}
+				elsif ($Ordinal ne 1) {
+					$linkCommand .= ';';
+					}
+					
+				$linkCommand .= "$Export,".$Ordinal;
+				$Ordinal++;
+				}
+		}
+		
+		addLinkDescriptorCommand ($linkCommand, undef, undef, undef, undef, $warningMessage);
+				
+		} # end...elsif if ($BasicTrgType=~/^(DLL|EXE)/o)
+		
+		# copy def file output
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			$linkCommand = 'cmd.exe /C copy  "${target.data}\\${var:IMPORT_LIBRARY_NO_EXT}.def" "${Project}\${var:IMPORT_LIBRARY_NO_EXT}.def"';
+			addLinkDescriptorCommand($linkCommand);
+		}
+		
+		# copy the import lib (dso) created
+		if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o || $TrgType=~/^EXEDLL$/o) {
+			if ($DefFile and !$NoExportLibrary) {
+				$linkCommand = 'cmd.exe /C copy ${var:KIT_EPOCROOT}\\EPOC32\\RELEASE\\ARMV5\\LIB\\${var:IMPORT_LIBRARY} ${var:KIT_EPOCROOT}\\EPOC32\\RELEASE\\ARMV5\\LIB\\${output.file.root}.dso';
+			}
+			addLinkDescriptorCommand($linkCommand);
+		}
+		
+	
+	} # end  GCCE link stage... elsif ($Plat eq "GCCE")
+	
+	
+	if ($addHeaders)
+		{
+		# Ideally we would do this for all targets, both UREL and UDEB.  This would,
+		# however, be very slow - so we just do it for the first target we come to.
+		my $cpp = &PreprocessorToUseExe();
+		my $cppCommandLine = "$cpp.EXE -M -MG -nostdinc ";
+		my $preInclude = "";
+
+		if (($Plat eq "ARMV5" || $Plat eq "ARMV5_ABIV2" || $Plat eq "ARMV5_ABIV1" || $Plat eq "GCCE" || $IsPlatCustomization) && $PrefixFile)
+			{
+			$preInclude = $PrefixFile;
+			$preInclude =~ s/^.*://;
+			}
+		elsif($VariantFile)
+			{	    
+		    $preInclude = $VariantFile;
+			}
+
+		$cppCommandLine .= '-include '.Path_RltToWork($preInclude).' ' if $preInclude;
+
+		foreach (&main::UserIncPaths, &main::SysIncPaths)
+			{
+			$cppCommandLine .= '-I '.&Path_Chop(&Path_RltToWork($_)).' ';
+			}
+
+		foreach (@MacroList)
+			{
+			#ARMCC requires escaped '"', but CPP doesn't like them
+			s/\\\"/\"/g if /^__PRODUCT_INCLUDE__/; 
+			
+			$cppCommandLine .= '-D'.$_.' ';
+			}
+		
+		my $SourceStructRef=&main::SourceStructRef;
+		my %localIncludes;
+
+		foreach my $SourceRef (@$SourceStructRef)
+	   		{
+			$file = Path_RltToWork(($$SourceRef{SrcPath}.$$SourceRef{CurFile}));
+
+			# ensure the case of the extension is what GCC expects
+			$file =~ s/\.CPP$/.cpp/i;
+			$file =~ s/\.C$/.c/i;
+			$file =~ s/\.s$/.S/i;
+
+			open CPPPIPE,$cppCommandLine.$file." |" or die "ERROR: Can't invoke CPP.EXE\n";
+
+			while (<CPPPIPE>)
+				{
+				#convert any Unix slashes found in CPP output to DOS slashes
+				s/\//\\/g;	
+				while (/\.(\.\\|\\){1}\S+\.(hrh|h|inl){1}/gi)
+					{
+					my $file = $&;
+					my $filePath = &main::Path_Split('Path',$file);
+						
+					# Ignore files that are clearly not local to the project
+					next if ($filePath =~ /\\epoc32\\/i);
+
+					# Ignore files that are #included with intermediate directories -
+					# we can't guarantee these will be on an Access Path.
+					next if ($filePath =~ /\w+\\\.\./);
+
+					# Finally confirm that the file we have is definitely on an Access Path
+					my $presentOnAccessPath = 0;
+					foreach my $accessPath (&main::UserIncPaths, &main::SysIncPaths)
+						{
+						my $accessPathCompare = $accessPath;
+						$accessPathCompare =~ s/\\/_/g;
+
+						my $filePathCompare = $filePath;
+						$filePathCompare =~ s/(\.\\|\.\.\\)//g;
+						$filePathCompare =~ s/\\/_/g;
+
+						$presentOnAccessPath = 1 if ($accessPathCompare =~ /$filePathCompare$/i);
+						}
+					next if (!$presentOnAccessPath);
+
+					# Maintain availability of original case of filename using a lc keyed hash
+					my $localInclude = &main::Path_Split('Base',$file).&main::Path_Split('Ext',$file);					
+					$localIncludes{lc ($localInclude)} = $localInclude unless (!-e $file);
+					}
+				}
+			}
+
+		foreach my $localInclude (sort keys %localIncludes)
+			{
+			addFile($localIncludes{$localInclude}, "Text", 0, "", "Headers");
+			}
+
+		$addHeaders = 0;
+		}
+
+
+	# Add DOCUMENT specified files that we know we can add - we only add these for one target,
+	# as they should be identical through-out
+
+	if ($addDocuments)
+		{
+		foreach my $document (@DocList)
+			{
+			# Only add files as Documents if they haven't already been added to
+			# the target (it's not possible to have duplicate entries) and if they
+			# have an extension we know about.
+
+			next if (grep (/$document/i, @addedFiles));
+
+			my $extension = $document;
+			$extension =~ s/^.*\.//;
+
+			next if (!grep (/$extension/i, @compatibleDOCUMENTExtensions));
+			
+			addFile($document, "Text", "", "", "Documents");
+			}
+
+		$addDocuments = 0;
+		}
+
+
+	# Create the link descriptor file
+
+	$xmlLinkDescriptorCommandParent->addText("\n\t\t\t");
+
+	if ($CW_major_version >= 3)
+		{
+		$xmlLinkDescriptorDumpFileParent->addText("\n\t\t\t");
+		}
+
+	&main::CreateExtraFile("${ExtraFilesPath}$linkDescriptorFile", $xmlLinkDescriptorDoc->toString);
+	addFile($linkDescriptorFile, "Text", "", "", "Link");	
+	
+	# Apply the changed settings
+
+	my $settinglist = $xmlTarget->getElementsByTagName("SETTINGLIST",0)->item(0);
+	my @settingnodes = $settinglist->getElementsByTagName("SETTING",0);
+	foreach my $setting (@settingnodes)
+		{
+		my $element = $setting->getElementsByTagName("NAME",0)->item(0);
+		my $settingname = $element->getFirstChild->getData();
+		my $replacement = $changedsettings{$settingname};
+		if (defined $replacement) 
+			{
+			if ($replacement eq "{}")
+				{
+				if ($settingname eq "UserSearchPaths")
+					{
+					&addUserSearchPaths($setting);
+					}
+				elsif ($settingname eq "SystemSearchPaths")
+					{
+					&addSystemSearchPaths($setting);
+					}
+				elsif ($settingname eq "UserSourceTrees")
+					{
+					&addSourceTrees($setting);
+					}
+				elsif ($settingname eq "FileList")
+					{
+					&addDownloadFileList($setting, @ResourceDownloadList);
+					}
+				}
+			elsif ($replacement =~ /^{(.+)}(.+)$/)
+				{					
+				&changePathSetting($setting,$1,$2);
+				}
+			else
+				{
+				&changeValue($setting,$replacement);
+				}
+			}
+		}
+	}
+
+
+sub addLinkDescriptorCommand($$;$;$;$;$;$;$;) {		
+	my ($linkCommand, $parseStdOut, $parseStdErr, $outputParser, $firstLibProcessing,
+	    $linkWarning, $linkInformation, @successCodes) = @_;
+
+	my $structIndent = "\n\t\t\t\t";
+	my $settingIndent = "$structIndent\t";
+	my $simpleIndent = "$settingIndent\t";
+	my $successCodeArrayIndent = $simpleIndent;
+	my $successCodeSimpleIndent = "$successCodeArrayIndent\t";
+
+	my $structElement = new XML::DOM::Element($xmlLinkDescriptorDoc,"struct");
+	$xmlLinkDescriptorCommandParent->addText("$structIndent");
+	$xmlLinkDescriptorCommandParent->appendChild ($structElement);
+
+	my $settingElementTemplate = new XML::DOM::Element($xmlLinkDescriptorDoc,"setting");
+	$settingElementTemplate->setAttribute("uuid-alias", ".");
+	my $simpleElementTemplate = new XML::DOM::Element($xmlLinkDescriptorDoc,"simple");
+
+	my $settingElement;
+	my $simpleElement;
+
+	$settingElement = $settingElementTemplate->cloneNode(0);
+	$simpleElement = $simpleElementTemplate->cloneNode(0);
+	
+	$settingElement->setAttribute ("entry", "linkCommand");
+	$structElement->addText ($settingIndent);
+	$structElement->appendChild ($settingElement);
+
+	$simpleElement->addText ($linkCommand);
+
+	$settingElement->addText ($simpleIndent);
+	$settingElement->appendChild ($simpleElement);
+	$settingElement->addText($settingIndent);
+	
+	if (defined $parseStdOut)
+		{
+		$settingElement = $settingElementTemplate->cloneNode(0);
+		$simpleElement = $simpleElementTemplate->cloneNode(0);
+
+		$settingElement->setAttribute("entry", "parseStdOut");
+		$simpleElement->addText($parseStdOut);
+
+		$structElement->addText ($settingIndent);
+		$structElement->appendChild ($settingElement);
+
+		$settingElement->addText ($simpleIndent);
+		$settingElement->appendChild ($simpleElement);
+		$settingElement->addText($settingIndent);
+		}
+	
+	if (defined $parseStdErr)
+		{
+		$settingElement = $settingElementTemplate->cloneNode(0);
+		$simpleElement = $simpleElementTemplate->cloneNode(0);
+
+		$settingElement->setAttribute("entry", "parseStdErr");
+		$simpleElement->addText($parseStdErr);
+
+		$structElement->addText ($settingIndent);
+		$structElement->appendChild ($settingElement);
+
+		$settingElement->addText ($simpleIndent);
+		$settingElement->appendChild ($simpleElement);
+		$settingElement->addText($settingIndent);
+		}
+
+	if (defined $outputParser)
+		{
+		$settingElement = $settingElementTemplate->cloneNode(0);
+		$simpleElement = $simpleElementTemplate->cloneNode(0);
+
+		$settingElement->setAttribute("entry", "outputParser");
+		$simpleElement->addText($outputParser);
+
+		$structElement->addText ($settingIndent);
+		$structElement->appendChild ($settingElement);
+
+		$settingElement->addText ($simpleIndent);
+		$settingElement->appendChild ($simpleElement);
+		$settingElement->addText($settingIndent);
+		}
+
+	if (defined $firstLibProcessing)
+		{
+		$settingElement = $settingElementTemplate->cloneNode(0);
+		$simpleElement = $simpleElementTemplate->cloneNode(0);
+
+		$settingElement->setAttribute("entry", "firstLibProcessing");
+		$simpleElement->addText($firstLibProcessing);
+
+		$structElement->addText ($settingIndent);
+		$structElement->appendChild ($settingElement);
+
+		$settingElement->addText ($simpleIndent);
+		$settingElement->appendChild ($simpleElement);
+		$settingElement->addText($settingIndent);
+		}
+
+	if (defined $linkWarning)
+		{
+		$settingElement = $settingElementTemplate->cloneNode(0);
+		$simpleElement = $simpleElementTemplate->cloneNode(0);
+
+		$settingElement->setAttribute("entry", "linkWarning");
+		$simpleElement->addText($linkWarning);
+
+		$structElement->addText ($settingIndent);
+		$structElement->appendChild ($settingElement);
+
+		$settingElement->addText ($simpleIndent);
+		$settingElement->appendChild ($simpleElement);
+		$settingElement->addText($settingIndent);
+		}
+
+	if (defined $linkInformation)
+		{
+		$settingElement = $settingElementTemplate->cloneNode(0);
+		$simpleElement = $simpleElementTemplate->cloneNode(0);
+
+		$settingElement->setAttribute("entry", "linkInformation");
+		$simpleElement->addText($linkInformation);
+
+		$structElement->addText ($settingIndent);
+		$structElement->appendChild ($settingElement);
+
+		$settingElement->addText ($simpleIndent);
+		$settingElement->appendChild ($simpleElement);
+		$settingElement->addText($settingIndent);
+		}
+
+	if (@successCodes)
+		{
+		$settingElement = $settingElementTemplate->cloneNode(0);
+		$settingElement->setAttribute("entry", "successCodes");
+
+		my $arrayElement = new XML::DOM::Element($xmlLinkDescriptorDoc,"array");
+		$arrayElement->setAttribute("inheritance", "none");
+		
+		foreach my $successCode (@successCodes)
+			{
+			$simpleElement = $simpleElementTemplate->cloneNode(0);
+			$simpleElement->addText($successCode);
+			$arrayElement->addText ($successCodeSimpleIndent);
+			$arrayElement->appendChild ($simpleElement);
+			}
+
+		$arrayElement->addText ($successCodeArrayIndent);
+
+		$settingElement->addText ($successCodeArrayIndent);
+		$settingElement->appendChild ($arrayElement);
+		$settingElement->addText($settingIndent);
+
+		$structElement->addText ($settingIndent);
+		$structElement->appendChild ($settingElement);
+		}
+
+	$structElement->addText($structIndent);
+}
+
+
+sub addLinkDescriptorSymbol ($$) {
+	my ($symbolName, $symbolValue) = @_;
+	
+	my $structIndent = "\n\t\t\t\t";
+	my $settingIndent = "$structIndent\t";
+	my $simpleIndent = "$settingIndent\t";
+
+	my $structElement = new XML::DOM::Element($xmlLinkDescriptorDoc,"struct");
+	$xmlLinkDescriptorSymbolParent->addText("$structIndent");
+	$xmlLinkDescriptorSymbolParent->appendChild ($structElement);
+
+	my $settingElementTemplate = new XML::DOM::Element($xmlLinkDescriptorDoc,"setting");
+	$settingElementTemplate->setAttribute("uuid-alias", ".");
+	my $simpleElementTemplate = new XML::DOM::Element($xmlLinkDescriptorDoc,"simple");
+
+	my $symbolNameSettingElement;
+	my $symbolNameSimpleElement;
+	my $symbolValueSettingElement;
+	my $symbolValueSimpleElement;
+
+	$symbolNameSettingElement = $settingElementTemplate->cloneNode(0);
+	$symbolNameSimpleElement = $simpleElementTemplate->cloneNode(0);
+	$symbolValueSettingElement = $settingElementTemplate->cloneNode(0);
+	$symbolValueSimpleElement = $simpleElementTemplate->cloneNode(0);
+
+	$symbolNameSettingElement->setAttribute("entry", "symbolName");
+	$symbolNameSimpleElement->addText ($symbolName);
+	$symbolValueSettingElement->setAttribute("entry", "symbolValue");
+	$symbolValueSimpleElement->addText ($symbolValue);
+
+	$symbolNameSettingElement->addText ($simpleIndent);
+	$symbolNameSettingElement->appendChild ($symbolNameSimpleElement);
+	$symbolNameSettingElement->addText($settingIndent);
+	$symbolValueSettingElement->addText ($simpleIndent);
+	$symbolValueSettingElement->appendChild ($symbolValueSimpleElement);
+	$symbolValueSettingElement->addText ($settingIndent);
+
+	$structElement->addText ($settingIndent);
+	$structElement->appendChild ($symbolNameSettingElement);
+	$structElement->addText ($settingIndent);
+	$structElement->appendChild ($symbolValueSettingElement);
+	$structElement->addText ($structIndent);
+	}
+
+
+sub addLinkDescriptorDumpFile ($$) {
+	my ($dumpFileContent, $dumpFileName) = @_;
+	
+	my $structIndent = "\n\t\t\t\t";
+	my $settingIndent = "$structIndent\t";
+	my $simpleIndent = "$settingIndent\t";
+
+	my $structElement = new XML::DOM::Element($xmlLinkDescriptorDoc,"struct");
+	$xmlLinkDescriptorDumpFileParent->addText("$structIndent");
+	$xmlLinkDescriptorDumpFileParent->appendChild ($structElement);
+
+	my $settingElementTemplate = new XML::DOM::Element($xmlLinkDescriptorDoc,"setting");
+	$settingElementTemplate->setAttribute("uuid-alias", ".");
+	my $simpleElementTemplate = new XML::DOM::Element($xmlLinkDescriptorDoc,"simple");
+
+	my $dumpFileContentSettingElement;
+	my $dumpFileContentSimpleElement;
+	my $dumpFileNameSettingElement;
+	my $dumpFileNameSimpleElement;
+
+	$dumpFileContentSettingElement = $settingElementTemplate->cloneNode(0);
+	$dumpFileContentSimpleElement = $simpleElementTemplate->cloneNode(0);
+	$dumpFileNameSettingElement = $settingElementTemplate->cloneNode(0);
+	$dumpFileNameSimpleElement = $simpleElementTemplate->cloneNode(0);
+
+	$dumpFileContentSettingElement->setAttribute("entry", "dumpFileContent");
+	$dumpFileContentSimpleElement->addText ($dumpFileContent);
+	$dumpFileNameSettingElement->setAttribute("entry", "dumpFileName");
+	$dumpFileNameSimpleElement->addText ($dumpFileName);
+
+	$dumpFileContentSettingElement->addText ($simpleIndent);
+	$dumpFileContentSettingElement->appendChild ($dumpFileContentSimpleElement);
+	$dumpFileContentSettingElement->addText($settingIndent);
+	$dumpFileNameSettingElement->addText ($simpleIndent);
+	$dumpFileNameSettingElement->appendChild ($dumpFileNameSimpleElement);
+	$dumpFileNameSettingElement->addText ($settingIndent);
+
+	$structElement->addText ($settingIndent);
+	$structElement->appendChild ($dumpFileContentSettingElement);
+	$structElement->addText ($settingIndent);
+	$structElement->appendChild ($dumpFileNameSettingElement);
+	$structElement->addText ($structIndent);
+	}
+
+
+sub ExtraPlat($) {
+
+# Call PmBld again after reprocessing the MMP file and tweaking various main:: variables
+
+	my ($Plat) = @_;
+	
+	&main::SetVarsFromMmp($Plat);
+	&main::InitLinkPaths();
+
+	foreach (&main::BldList) {
+		&main::SetCurBld($_);
+		&PMPlatProcessMmp(&main::PlatTxt2D);
+		&PMStartBldList;
+		&PMBld;
+	}
+
+}
+
+sub disconnectNode($) {
+
+# Remove a node from its parent, also removing the following text node (if any)
+# The text node is assumed to contain whitespace for file formatting.
+ 
+	my ($node)=@_;
+
+	my $parent = $node->getParentNode;
+	my $sibling = $node->getNextSibling;
+	$parent->removeChild($node);
+	if (defined $sibling && $sibling->getNodeType == TEXT_NODE)
+		{
+		$parent->removeChild($sibling);
+		}
+	return $node;
+}
+
+sub removeNode($) {
+
+# disconnect the node and dispose of it
+
+	my ($node) = @_;
+	&disconnectNode($node);
+	$node->dispose;		# setAttribute("disposed",1);
+}
+
+sub textElement($$$$) {
+	my ($element,$name,$value,$insertionpoint)=@_;
+
+	my $subElement = new XML::DOM::Element($xmlProjectDoc,$name);
+	$subElement->appendChild($xmlProjectDoc->createTextNode($value));
+	$element->insertBefore($subElement, $insertionpoint);
+}
+
+sub addFile($$$$;$) {    
+
+	my ($src, $kind, $debug, $shared, $group) = @_;
+
+	my $linkElement = new XML::DOM::Element($xmlProjectDoc,"FILEREF");
+
+	&textElement($linkElement, "PATHTYPE",   "Name");
+	&textElement($linkElement, "PATH",       $src);
+	&textElement($linkElement, "PATHFORMAT", "Windows");
+
+	my $fileElement = $linkElement->cloneNode(1);
+	$fileElement->setTagName("FILE");
+	&textElement($fileElement, "FILEKIND",   $kind);
+	&textElement($fileElement, "FILEFLAGS",  "Debug") if ($debug);
+
+	$xmlLinkOrder->appendChild($linkElement);
+	$xmlFileList->appendChild($fileElement);
+
+	$xmlLinkOrder->addText("\n");
+	$xmlFileList->addText("\n");
+
+	# Accumulate source group information
+
+	my $groupfile = $linkElement->cloneNode(1);
+	$groupfile->setAttribute("NAME", "$shared$src");			# convenience - remove this later!
+
+	push (@addedFiles, $src) unless ($kind eq "Documents");
+
+	if ($kind eq "Library")
+		{
+		$xmlLibGroup->appendChild($groupfile);
+		$xmlLibGroup->addText("\n");
+		}
+	elsif (defined $group)
+		{
+		if ($group eq "Link")
+			{
+			$xmlLinkGroup->appendChild($groupfile);
+			$xmlLinkGroup->addText("\n");
+			}
+		elsif ($group eq "Resources")
+			{
+			$xmlResourcesGroup->appendChild($groupfile);
+			$xmlResourcesGroup->addText("\n");
+			}
+		elsif ($group eq "Root")
+			{
+			$xmlRootGroup->appendChild($groupfile);
+			$xmlRootGroup->addText("\n");
+			}
+		elsif ($group eq "Headers")
+			{
+			$xmlHeadersGroup->appendChild($groupfile);
+			$xmlHeadersGroup->addText("\n");
+			}
+		elsif ($group eq "Documents")
+			{
+			$xmlDocumentsGroup->appendChild($groupfile);
+			$xmlDocumentsGroup->addText("\n");
+			}
+		}
+	else
+		{
+		$xmlSourceGroup->appendChild($groupfile);
+		$xmlSourceGroup->addText("\n");
+		}
+}
+
+sub addGroup($$) {
+	my ($grouplist,$name)=@_;
+
+	my $group = new XML::DOM::Element($xmlProjectDoc,"GROUP");
+	$grouplist->appendChild($group);
+	$grouplist->addText("\n");
+
+	&textElement($group, "NAME", $name);
+	$group->addText("\n");
+	return $group;
+}
+
+sub addSubTarget($$) {
+	my ($subtargetlist,$name)=@_;
+
+	my $subtarget = new XML::DOM::Element($xmlProjectDoc,"SUBTARGET");
+	$subtargetlist->appendChild($subtarget);
+	$subtargetlist->addText("\n");
+
+	&textElement($subtarget, "TARGETNAME", $name);
+}
+
+sub addOrderedTarget($$) {
+	my ($targetorder,$name)=@_;
+
+	my $orderedtarget = new XML::DOM::Element($xmlProjectDoc,"ORDEREDTARGET");
+	$targetorder->appendChild($orderedtarget);
+	$targetorder->addText("\n");
+
+	&textElement($orderedtarget, "NAME", $name);
+}
+
+sub finaliseProject {
+
+	# Run through the project, removing all unused targets
+	# and build up the TARGETORDER list and the "Build All" target
+
+	my $target;
+	my $targetname;
+
+	my $xmlSubTargetList = new XML::DOM::Element($xmlProjectDoc,"SUBTARGETLIST");
+
+	my $xmlTargetOrder = new XML::DOM::Element($xmlProjectDoc,"TARGETORDER");
+	$xmlTargetOrder->addText("\n");
+
+	my @targets = $xmlProjectDoc->getElementsByTagName("TARGET",1);
+	my @emulatortargetnames;
+	my @othertargetnames;
+	
+	foreach $target (@targets)
+		{			
+		$targetname = $target->getAttribute("NAME");
+
+		if ($targetname eq "")
+			{
+			&removeNode($target);
+			}
+		else
+			{
+			$target->removeAttribute("NAME");
+
+			if ($targetname =~ /^WINSCW/)
+				{
+				push (@emulatortargetnames, $targetname);
+				}
+			else
+				{
+				push (@othertargetnames, $targetname);
+				}
+			}
+		}
+
+	foreach $targetname ((sort @emulatortargetnames), (sort @othertargetnames))
+		{
+		&addSubTarget($xmlSubTargetList, $targetname);
+		&addOrderedTarget($xmlTargetOrder, $targetname);
+		}
+
+	# Build the GROUPLIST
+	
+	my $xmlGroupList = new XML::DOM::Element($xmlProjectDoc,"GROUPLIST");
+
+	# Build the "Root" group
+
+	my %rootfiles;
+	my @rootgroups = $xmlProjectDoc->getElementsByTagName("ROOTGROUP",1);
+	foreach my $group (@rootgroups)
+		{
+		$targetname = $group->getAttribute("TARGET");
+
+		my @files = $group->getElementsByTagName("FILEREF",0);
+		foreach my $file (@files)
+			{
+			my $name = $file->getAttribute("NAME");
+			if (!defined $rootfiles{$name})
+				{
+				# first occurrence - add to list
+				$rootfiles{$name}=1;
+				&textElement($file, "TARGETNAME", $targetname, $file->getFirstChild);
+				$file->removeAttribute("NAME");
+				&disconnectNode($file);					
+				$xmlGroupList->appendChild($file);
+				$xmlGroupList->addText("\n");
+				}
+			}
+		&removeNode($group);
+		}
+
+	# Build the "Source" group
+
+	my $xmlSourceGroup = &addGroup($xmlGroupList,"Source");
+	my %sourcefiles;
+	my @sourcegroups = $xmlProjectDoc->getElementsByTagName("SOURCEGROUP",1);
+	foreach my $group (@sourcegroups)
+		{
+		$targetname = $group->getAttribute("TARGET");
+		my @files = $group->getElementsByTagName("FILEREF",0);
+		foreach my $file (@files)
+			{
+			my $name = $file->getAttribute("NAME");
+			if (!defined $sourcefiles{$name})
+				{
+				# first occurrence - add to list
+				$sourcefiles{$name}=1;
+				&textElement($file, "TARGETNAME", $targetname, $file->getFirstChild);
+				$file->removeAttribute("NAME");
+				&disconnectNode($file);
+				$xmlSourceGroup->appendChild($file);
+				$xmlSourceGroup->addText("\n");
+				}
+			}
+		&removeNode($group);
+		}
+
+
+	# Build the "Headers" group
+			
+	my $xmlHeadersGroup;
+	my %headerfiles;
+	my @headersgroups = $xmlProjectDoc->getElementsByTagName("HEADERSGROUP",1);
+	foreach my $group (@headersgroups)
+		{
+		$targetname = $group->getAttribute("TARGET");
+		my @files = $group->getElementsByTagName("FILEREF",0);
+		foreach my $file (@files)
+			{
+			# Only create the "Headers" group if there are some files to add to it
+			if (!defined $xmlHeadersGroup)
+				{
+				$xmlHeadersGroup = &addGroup($xmlGroupList,"Headers");
+				}
+				
+			my $name = $file->getAttribute("NAME");
+			if (!defined $headerfiles{$name})
+				{
+				# first occurrence - add to list
+				$headerfiles{$name}=1;
+				&textElement($file, "TARGETNAME", $targetname, $file->getFirstChild);
+				$file->removeAttribute("NAME");
+				&disconnectNode($file);
+				$xmlHeadersGroup->appendChild($file);
+				$xmlHeadersGroup->addText("\n");
+				}
+			}
+		&removeNode($group);
+		}
+
+
+	# Build the "Resources" group
+			
+	my $xmlResourcesGroup;
+	my %resourcesfiles;
+	my @resourcesgroups = $xmlProjectDoc->getElementsByTagName("RESOURCESGROUP",1);
+	foreach my $group (@resourcesgroups)
+		{
+		$targetname = $group->getAttribute("TARGET");
+		my @files = $group->getElementsByTagName("FILEREF",0);
+		foreach my $file (@files)
+			{
+			# Only create the main "Resources" groups if there are some files to add
+			# to them
+			if (!defined $xmlResourcesGroup)
+				{
+				$xmlResourcesGroup = &addGroup($xmlGroupList,"Resources");
+				}
+				
+			my $name = $file->getAttribute("NAME");
+			if (!defined $resourcesfiles{$name})
+				{
+				# first occurrence - add to list
+				$resourcesfiles{$name}=1;
+				&textElement($file, "TARGETNAME", $targetname, $file->getFirstChild);
+				$file->removeAttribute("NAME");
+				&disconnectNode($file);
+
+				$xmlResourcesGroup->appendChild($file);
+				$xmlResourcesGroup->addText("\n");
+				}
+			}
+		&removeNode($group);
+		}
+
+		
+	# Build the "Link" group
+			
+	my $xmlLinkGroup = &addGroup($xmlGroupList,"Link");
+	my %linkfiles;
+	my @linkgroups = $xmlProjectDoc->getElementsByTagName("LINKGROUP",1);
+	foreach my $group (@linkgroups)
+		{
+		$targetname = $group->getAttribute("TARGET");
+		my @files = $group->getElementsByTagName("FILEREF",0);
+		foreach my $file (@files)
+			{
+			my $name = $file->getAttribute("NAME");
+			if (!defined $linkfiles{$name})
+				{
+				# first occurrence - add to list
+				$linkfiles{$name}=1;
+				&textElement($file, "TARGETNAME", $targetname, $file->getFirstChild);
+				$file->removeAttribute("NAME");
+				&disconnectNode($file);
+				$xmlLinkGroup->appendChild($file);
+				$xmlLinkGroup->addText("\n");
+				}
+			}
+		&removeNode($group);
+		}
+
+
+	# Build the "Documents" group
+			
+	my $xmlDocumentsGroup;
+	my %documentfiles;
+	my @documentgroups = $xmlProjectDoc->getElementsByTagName("DOCUMENTSGROUP",1);
+	foreach my $group (@documentgroups)
+		{
+		$targetname = $group->getAttribute("TARGET");
+		my @files = $group->getElementsByTagName("FILEREF",0);
+		foreach my $file (@files)
+			{				
+			# Only create the "Documents" group if there are some files to add to it
+			if (!defined $xmlDocumentsGroup)
+				{
+				$xmlDocumentsGroup = &addGroup($xmlGroupList,"Documents");
+				}
+
+			my $name = $file->getAttribute("NAME");
+
+			
+			if (!defined $documentfiles{$name})
+				{
+				# first occurrence - add to list
+				$documentfiles{$name}=1;
+				&textElement($file, "TARGETNAME", $targetname, $file->getFirstChild);
+				$file->removeAttribute("NAME");
+				&disconnectNode($file);
+				$xmlDocumentsGroup->appendChild($file);
+				$xmlDocumentsGroup->addText("\n");
+				}
+			}
+		&removeNode($group);
+		}
+
+
+	# Build the "Lib" group and its subgroups
+
+	my $xmlLibGroup = &addGroup($xmlGroupList, "Libraries");
+	my %libplats;
+	my @libgroups = $xmlProjectDoc->getElementsByTagName("LIBGROUP",1);
+	foreach my $group (@libgroups)
+		{
+		$targetname = $group->getAttribute("TARGET");
+		my $plat = $group->getAttribute("PLAT");
+		if (!defined $libplats{$plat})
+			{
+			$libplats{$plat} = &addGroup($xmlLibGroup, $plat);
+			}
+		my $platgroup = $libplats{$plat};
+		my @files = $group->getElementsByTagName("FILEREF",0);
+		foreach my $file (@files)
+			{
+			my $name = $file->getAttribute("NAME");
+			if (!defined $sourcefiles{"$plat\\$name"})
+				{
+				# first occurrence - add to list
+				$sourcefiles{"$plat\\$name"}=1;
+				&textElement($file, "TARGETNAME", $targetname, $file->getFirstChild);
+				$file->removeAttribute("NAME");
+				&disconnectNode($file);
+				$platgroup->appendChild($file);
+				$platgroup->addText("\n");
+				}
+			}
+		&removeNode($group);
+		}
+
+	# Replace the GROUPLIST & TARGETORDER in the template document
+
+	my $node = $xmlProjectDoc->getElementsByTagName("GROUPLIST",1)->item(0);
+	$node->getParentNode->replaceChild($xmlGroupList, $node);
+
+	$node = $xmlProjectDoc->getElementsByTagName("TARGETORDER",1)->item(0);
+	$node->getParentNode->replaceChild($xmlTargetOrder, $node);
+
+	# Insert the "Build All" target
+
+	my $xmlBuildAll = new XML::DOM::Element($xmlProjectDoc,"TARGET");
+	$xmlBuildAll->addText("\n");
+	&textElement($xmlBuildAll, "NAME", "Build All");
+	my $settinglist = new XML::DOM::Element($xmlProjectDoc,"SETTINGLIST");
+	&textSetting($settinglist, "Linker", "None");
+	&textSetting($settinglist, "Targetname", "Build All");
+	$xmlBuildAll->appendChild($settinglist);
+	$xmlBuildAll->addText("\n");
+	&textElement($xmlBuildAll, "FILELIST", "");
+	$xmlBuildAll->addText("\n");
+	&textElement($xmlBuildAll, "LINKORDER", "");
+	$xmlBuildAll->addText("\n");
+	$xmlBuildAll->appendChild($xmlSubTargetList);
+
+	&addOrderedTarget($xmlTargetOrder, "Build All");
+
+	$node = $xmlProjectDoc->getElementsByTagName("TARGETLIST",1)->item(0);
+	$node->appendChild($xmlBuildAll);
+
+	# Output the result
+
+	&main::Output(
+		$xmlProjectDoc->toString
+	);
+
+}
+
+sub PMEndSrcList {
+
+	my @PlatList=&main::PlatOverrideList();
+	
+	if (scalar @PlatList == 0)
+		{
+		@PlatList = ("WINSCW", "ARM4", "ARMV5");
+
+		if ($CW_major_version >= 3)
+			{
+			push @PlatList, "ARMV5_ABIV1";
+			}
+		}
+
+	shift @PlatList;	# we've already done the first one in the list
+	foreach (@PlatList)
+		{
+		ExtraPlat($_);
+		}
+
+	&finaliseProject();
+
+}
+
+sub GetGCCELibPath($) {
+	my $gnulibgccPath;
+	open PIPE, "arm-none-symbianelf-g++ $_[0] 2>&1 | ";
+	while(<PIPE>){
+		$gnulibgccPath = $_;
+		$gnulibgccPath =~ s/\//\\/g;
+	}
+	close PIPE;
+	my $SearchlibgccDir = &main::Path_Chop(&main::Path_Split('Path', $gnulibgccPath));
+
+	return $SearchlibgccDir;
+}
+
+sub Read_BSF_Options() {
+        my %plat = (main::PlatRec());
+		my @Customization_Data = split(/\n/,$plat{'CUSTOMIZATION_DATA'});
+	foreach my $option (@Customization_Data) {
+			next if ($option =~ /^$/);
+	        warn "Unrecognized BSF syntax: $option.\n"
+		        unless ($option =~ /\s*(\S+)\s+(.+)$/);
+		my $key = uc $1;
+		my $val = $2;
+	        warn "Unrecognized BSF keyword: $key.\n"
+		        unless ($BSF_keywords{$key});
+		if ($key =~ /COMMON_OPTIONS/) {
+		        push @commonOptions, $val;
+			next;
+		}
+		if ($key =~ /THUMB_OPTIONS/) {
+		        push @thumbOptions, $val;
+			next;
+		}
+		if ($key =~ /ARM_OPTIONS/) {
+		        push @armOptions, $val;
+			next;
+		}
+		if ($key =~ /KERNEL_OPTIONS/) {
+		        push @kernelOptions, $val;
+			next;
+		}
+		if ($key =~ /INVARIANT_OPTIONS/) {
+		        push @invariantOptions, $val;
+			next;
+		}
+		if ($key =~ /LD_OPTIONS/) {
+		        push @linkerOptions, $val;
+			next;
+		}
+		if ($key =~ /AR_OPTIONS/) {
+		        push @archiverOptions, $val;
+			next;
+		}
+
+	}
+}
+
+# Set the options passed from BSF file 
+# @param OptionName    - BSF Keyword using which the options would be overridden in the BSF file
+# @param Options       - List of options read from the BSF keyword
+sub Set_BSF_Options($$)
+{
+	my ($OptionName,$Options) = @_;
+	my @Fragments=();
+	
+	if ($CustPlat{'CUSTOMIZES'} && ($CustPlat{'ROOTPLATNAME'} eq "GCCE"))
+	{
+		$CustGCCE=1;
+	}
+	foreach my $val (@{$Options})
+	{		
+		# Check if the value of BSF option is to be set or added/removed.
+		if($val =~ /\+\[.*\]\+|\-\[.*\]\-/)
+		{
+			if (@Fragments = Cl_bpabi::Split_BSF_Options($val,'RemoveOptions'))
+			{
+				foreach my $Opt (@Fragments) 
+				{
+					# Remove trailing white spaces
+					$Opt =~ s/\s+$//;
+					# Substitute '=' with '%' which is a wild card character in makefile.
+					# This is required for cases where option to be removed contains '=' (e.g.'-march=armv5t').
+					# When such options are to be removed, "$(INVARIANT_OPTIONS:-march=armv5t=)" is written in the makefile.
+					# However, because of the occurence of '=', pattern match fails in the makefile and such options are not removed. 
+					# To resolve this, '=' is replaced with '%'  in the makefile so that the substitution pattern looks like 
+					# "$(INVARIANT_OPTIONS:-march%armv5t=)" in makefile (e.g."$(INVARIANT_OPTIONS:-march%armv5t=)").
+					$Opt =~ s/=/%/;
+					if((($OptionName =~ /COMMON_OPTIONS/)
+					|| ($OptionName =~ /THUMB_OPTIONS/)
+					|| ($OptionName =~ /ARM_OPTIONS/)
+					|| ($OptionName =~ /KERNEL_OPTIONS/)
+					|| ($OptionName =~ /INVARIANT_OPTIONS/))
+					&& ($CustGCCE))
+					{
+						$GCCE_CompilerOption = RemoveBsfOptions($Opt,$GCCE_CompilerOption);
+					}
+					elsif($OptionName =~ /COMMON_OPTIONS/)
+					{
+						$CCFLAGS = RemoveBsfOptions($Opt,$CCFLAGS);
+					}
+					elsif(($OptionName =~ /THUMB_OPTIONS/)
+					|| ($OptionName =~ /ARM_OPTIONS/)
+					|| ($OptionName =~ /KERNEL_OPTIONS/))
+					{
+						$CCFLAGS = RemoveBsfOptions($Opt,$CCFLAGS);
+					}
+					elsif($OptionName =~ /INVARIANT_OPTIONS/)
+					{
+						$CCFLAGS = RemoveBsfOptions($Opt,$CCFLAGS);
+					}
+					elsif($OptionName =~ /LD_OPTIONS/)
+					{
+						$linkeropts = RemoveBsfOptions($Opt,$Link);
+						$linkCommand = RemoveBsfOptions($Opt,$Link);
+					}
+					elsif($OptionName =~ /AR_OPTIONS/)
+					{
+						$archiveropts = RemoveBsfOptions($Opt,$linkCommand);
+					}
+				}					
+				@Fragments=();
+			}
+			
+			if (@Fragments = Cl_bpabi::Split_BSF_Options($val,'AddOptions')) 
+			{
+				my $v;
+				foreach $v (@Fragments)
+				{
+					if((($OptionName =~ /COMMON_OPTIONS/)
+					|| ($OptionName =~ /THUMB_OPTIONS/)
+					|| ($OptionName =~ /ARM_OPTIONS/)
+					|| ($OptionName =~ /KERNEL_OPTIONS/)
+					|| ($OptionName =~ /INVARIANT_OPTIONS/))
+					&& ($CustGCCE))
+					{
+						$GCCE_CompilerOption .= ' '.$v.' ';
+					}
+					elsif($OptionName =~ /COMMON_OPTIONS/)
+					{
+						$bsfaddoptions .= ' '.$v.' '; 						
+					}
+					elsif(($OptionName =~ /THUMB_OPTIONS/)
+					|| ($OptionName =~ /ARM_OPTIONS/)
+					|| ($OptionName =~ /KERNEL_OPTIONS/))
+					{
+						$bsfaddoptions .= ' '.$v.' ';	
+					}
+					elsif($OptionName =~ /INVARIANT_OPTIONS/)
+					{
+						$bsfaddoptions .= ' '.$v.' ';
+					}
+					elsif($OptionName =~ /LD_OPTIONS/)
+					{
+						$linkeropts .= ' '.$v.' ';
+					}
+					elsif($OptionName =~ /AR_OPTIONS/)
+					{
+						$archiveropts .= ' '.$v.' ';
+					}
+				}
+				@Fragments=();
+			}
+		}
+		else
+		{
+			if((($OptionName =~ /COMMON_OPTIONS/)
+			|| ($OptionName =~ /THUMB_OPTIONS/)
+			|| ($OptionName =~ /ARM_OPTIONS/)
+			|| ($OptionName =~ /KERNEL_OPTIONS/)
+			|| ($OptionName =~ /INVARIANT_OPTIONS/))
+			&& ($CustGCCE))
+			{
+				$GCCE_CompilerOption .= ' '.$val.' ';
+			}
+			elsif($OptionName =~ /COMMON_OPTIONS/)
+			{
+				$bsfaddoptions .= ' '.$val.' ';
+			}
+			elsif(($OptionName =~ /THUMB_OPTIONS/)
+			|| ($OptionName =~ /ARM_OPTIONS/)
+			|| ($OptionName =~ /KERNEL_OPTIONS/))
+			{
+				$bsfaddoptions .= ' '.$val.' ';
+			}
+			elsif($OptionName =~ /INVARIANT_OPTIONS/)
+			{
+				$bsfaddoptions .= ' '.$val.' ';
+			}
+			elsif($OptionName =~ /LD_OPTIONS/)
+			{
+				$linkeropts .= ' '.$val.' ';
+			}
+			elsif($OptionName =~ /AR_OPTIONS/)
+			{
+				$archiveropts .= ' '.$val.' ';
+			}
+		}	
+	}
+}
+
+sub RemoveBsfOptions($$)
+{
+	my ($Opt_to_replace,$Opt_replaced_in) = @_;
+	
+	$Opt_replaced_in =~ s/$Opt_to_replace//g;
+	return $Opt_replaced_in;
+}
+
+# function to expand the macro as pass with appropriate options
+sub printlist {
+	my $option =shift @_;
+	my @list = @_,
+	my $data;
+	my $finalval=undef;
+	
+	foreach $data (@list)
+	{
+		if($option =~ "-D") {
+			$finalval .= " ".$option.$data;	
+		}
+		else {
+			$finalval .= " ".$option." ".$data;
+		}
+	}
+	return $finalval;
+}
+
+#read the configuration make file into the HASH and use them for further processing
+sub collect_config_data {
+	my($configfile) = @_;
+	open(DATA, "<$configfile");
+	while(<DATA>) 
+	{	
+		my $line = $_;
+		if($line =~ /=/)
+		{
+			if ($line =~ /(.*):=(.*)/)
+			{ 
+				$configdata{$1}=$2;
+			}
+			elsif ($line =~ /(.*)=(.*=.*)/)
+			{ 
+				$configdata{$1}=$2;
+			}
+			elsif ($line =~ /(.*)=(.*)/)
+			{ 
+				$configdata{$1}=$2;
+			}
+		}
+	}
+	close(DATA)
+}
+
+#function is ti fetch the contents of the config data which is read from the configuration make file, 
+# for ex: KERNEL_OPTIONS=$(ARM_INSTRUCTION_SET) $(NO_EXCEPTIONS), this function extracts the value for ARM_INSTRUCTION_SET & NO_EXCEPTIONS
+sub fetch_config_data {
+	my($list) = @_;
+	my $op;
+	my $op1;
+	my $finaldata = undef;
+	
+	my @ip_options = split(/\s+/, $list);	
+	foreach $op (@ip_options)
+	{
+		$op =~ s/\)//g;
+		$op =~ s/\$\(//g;
+		if($op =~ /-/) {
+			$finaldata .= " ".$op;
+		}
+		else {
+			$finaldata .= " ".$configdata{$op};
+		}
+	}
+	return $finaldata;
+}
+
+# function to fix the bsf options, if the bsf option is already present in the CCFLAGS then remove from it so that it can be added from bsf,
+# this is to avoid the duplication of the options passed to the compiler.
+sub fixbsfoptions {
+	my ($options) = @_;
+	my $ccflgs = $CCFLAGS;
+	my $d;
+	my $Pattern = '-{1,2}\S+\s*(?!-)\S*';
+	my @list = $options =~ /$Pattern/g;
+	foreach $d (@list) {
+		if($ccflgs =~ /$d/) {
+				$ccflgs =~ s/$d//g;	
+		}
+		else {
+			if($d =~ /(.*)\s+(.*)/) {
+				my $a = $1;
+				if($ccflgs =~ /$a\s+\S+/) {
+					$ccflgs =~ s/$a\s+\S+//g;
+				}
+			}
+		}
+	}
+	$CCFLAGS = $ccflgs;
+}
+
+# funtion to get the list if the libraries to be linked during linking
+sub GetLibList() {
+	my @LibList;
+	my @StaticLibList;
+	my $Plat=&main::Plat;
+	unless(defined($ENV{RVCT_VER_MAJOR})){
+		my ($rvct_M, $rvct_m, $rvct_b) = RVCT_plat2set::get_version_list($Plat);
+		$ENV{RVCT_VER_MAJOR}=$rvct_M;
+	}
+	&Cl_bpabi::getVariableForNewPlat();
+	my $list = &Cl_bpabi::getConfigVariable('STATIC_LIBS_LIST') ;
+	
+	if (length($list) >0)
+	{
+		@StaticLibList = split(/\s+/, $list);
+	}
+	if($Plat eq "ARMV5" || $Plat eq "ARMV5_ABIV2" || IsCustomization($Plat)) {
+		@LibList=&Armutl_ArmLibList;
+		if(@LibList==0) {
+			my $LibDir = Armutl_ArmLibDir();
+			if (@StaticLibList) {
+				foreach my $lib (@StaticLibList) {
+					push @LibList, ("$LibDir\\$lib");
+				}
+			}
+		}
+	}
+	else
+	{
+		@LibList = ('$(STATIC_LIBS_LIST)');
+	}
+	return @LibList;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/ide_vc6.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1262 @@
+# Copyright (c) 1999-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:
+# Makmake-module for creating MAKMAKE MSVC6 IDE makefiles shared by windows platform modules
+# 
+#
+
+package Ide_vc6;
+
+# declare variables global for module
+my $BaseAddressFlag;
+my @CppCall;
+my %IdeBlds=();
+my %PrjHdrs=();
+my @Win32LibList=();
+my $Win32Resrc;
+my $Win32StdHeaders;
+my $MSVCVer;
+
+my $SupText='';
+
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	PMHelp_Mmp
+
+	PMCheckPlatformL
+
+	PMPlatProcessMmp
+
+	PMStartBldList
+		PMBld
+	PMEndBldList
+	PMStartSrcList
+			PMResrcBld
+			PMDoc
+			PMStartSrc
+			PMSrcDepend
+	PMEndSrcList
+);
+
+use Winutl;
+use Pathutl;
+
+sub PMHelp_Mmp {
+# get the windows help from WINUTL
+	&Winutl_Help_Mmp;
+}
+
+sub PMCheckPlatformL {
+	if ((&main::Plat eq 'TOOLS') and (&main::BasicTrgType ne 'EXE') and (&main::BasicTrgType ne 'LIB')) {
+		die "Can't specify anything but EXE or LIB targettypes for this platform\n";
+	}
+}
+
+sub PMPlatProcessMmp (@) {
+
+	# get WINUTL to do the windows mmp file processing
+	&Winutl_DoMmp(\@_, $ENV{INCLUDE});
+	$BaseAddressFlag=&Winutl_BaseAddress;
+	$BaseAddressFlag=~s/^(.+$)$/ \/base:\"$1\"/o;
+	@Win32LibList=&Winutl_Win32LibList;
+	my $MSVCVer = &Winutl_MSVCVer;
+	push @Win32LibList, "kernel32.lib";
+	$Win32Resrc=&Winutl_Win32Resrc;
+	$Win32StdHeaders=&Winutl_Win32StdHeaders;
+}
+
+sub PMStartBldList($) {
+	my ($makecmd) = @_;
+	die "Cannot generate $makecmd makefiles\n" if ($makecmd ne "nmake");
+	my $BaseTrg=&main::BaseTrg;
+	my @BldList=&main::BldList;
+	my $BldPath=&main::BldPath;
+	my $ChopDataPath=&main::Path_Chop(&main::DataPath);
+	my $ChopTrgPath=&main::Path_Chop(&main::TrgPath);
+	my $DefFile=&main::DefFile;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $ExportLibrary=&main::ExportLibrary;
+	my $LibPath=&main::LibPath;
+
+	my $MSVCVer = &Winutl_MSVCVer;
+
+	my $LinkPath=&main::LinkPath;
+	my $Plat=&main::Plat;
+	my $RelPath=&main::RelPath;
+	my $Trg=&main::Trg;
+	my $StatLinkPath=&main::StatLinkPath;
+	my $TrgType=&main::TrgType;
+
+
+	# set up global IDE builds variable
+	%IdeBlds= (
+		UREL=> "$BaseTrg - Win32 Uni Release",
+		UDEB=> "$BaseTrg - Win32 Uni Debug",
+	);
+	if (&main::Plat eq 'TOOLS') {
+		%IdeBlds= (
+			REL=> "$BaseTrg - Win32 Release",
+			DEB=> "$BaseTrg - Win32 Debug",
+		);
+	}
+	
+
+#	Start the supplementary makefile
+
+	$SupText.=join('',
+		"\n",
+#			need to set path here because MSDEV might be set up so that
+#			it does not take account of the PATH environment variable
+		"PATH=$ENV{PATH}\n",
+		"\n",
+		"# EPOC DEFINITIONS\n",
+		"\n",
+		"EPOCBLD = $BldPath #\n",
+		"EPOCTRG = $RelPath #\n",
+		"EPOCLIB = $LibPath #\n",
+		"EPOCLINK = $LinkPath #\n",
+		"EPOCSTATLINK = $StatLinkPath #\n",
+		"\n"
+	);
+			
+	if ($BasicTrgType eq 'DLL' || $TrgType eq 'EXEXP') {
+		foreach (@BldList) {
+			$SupText.=join('',
+				"EPOCBLD$_ = \$(EPOCBLD)$_\n",
+				"EPOCTRG$_ = \$(EPOCTRG)$_\n",
+				"EPOCLIB$_ = \$(EPOCLIB)UDEB\n",
+				"EPOCLINK$_ = \$(EPOCLINK)UDEB\n",
+				"EPOCSTATLINK$_ = \$(EPOCSTATLINK)$_\n",
+				"\n"
+			);
+		}
+		$SupText.="\nTRGDIR = ";
+		if ($Plat!~/^WINC$/o && $ChopTrgPath) {	# target path not allowed under WINC
+			$SupText.=$ChopTrgPath;
+		}
+		else {
+			$SupText.=".\\";
+		}
+		$SupText.="\n\nDATADIR = $ChopDataPath\n\n";
+
+
+#		commands for creating the import library
+		$SupText.="LIBRARY :";
+		if ($DefFile) {
+			unless (&main::ExportUnfrozen) {
+				if (-e $DefFile) { # effectively "if project frozen ..."
+					$SupText.=" \"\$(EPOCLIB)UDEB\\$ExportLibrary.lib\"\n";
+				}
+				else {
+					$SupText.=join('',
+						"\n",
+						"\t\@echo WARNING: Not attempting to create \"\$(EPOCLIB)UDEB\\$ExportLibrary.lib\".\n",
+						"\t\@echo When exports are frozen in \"$DefFile\", regenerate Makefile.\n"
+					);
+				}
+			}
+			else {
+				$SupText.=join('',
+					"\n",
+					"\t\@echo Not attempting to create \"\$(EPOCLIB)UDEB\\$ExportLibrary.lib\"\n",
+					"\t\@echo from frozen .DEF file, since EXPORTUNFROZEN specified.\n"
+				);
+			}
+			$SupText.=join('',
+				"\n",
+				"\n",
+				"# REAL TARGET - IMPORT LIBRARY\n",
+				"\n",
+				"\"\$(EPOCLIB)UDEB\\$ExportLibrary.lib\" : \"$DefFile\" MAKEWORKLIBRARY\n",
+				"\tperl -S prepdef.pl \"$DefFile\" \"\$(EPOCBLD)\\$ExportLibrary.prep.def\"\n",
+				"\tlib.exe /nologo /machine:i386 /nodefaultlib /name:\"$Trg\" /def:\"\$(EPOCBLD)\\$ExportLibrary.prep.def\" /out:\"\$(EPOCLIB)UDEB\\$ExportLibrary.lib\"\n",
+				"\tdel \"\$(EPOCLIB)UDEB\\$ExportLibrary.exp\"\n"
+			);
+		}
+		$SupText.=join('',
+			"\n",
+			"\n",
+			"MAKEWORKLIBRARY : \"${LibPath}UDEB\"\n",
+			"\n",
+			"\"${LibPath}UDEB\" :\n"
+		);
+		$SupText.="\t\@perl -S emkdir.pl \"${LibPath}UDEB\"\n\n\n";
+	}
+
+
+
+	&main::Output(
+		"# Microsoft Developer Studio Project File - Name=\"$BaseTrg\" - Package Owner=<4>\n",
+		"# Microsoft Developer Studio Generated Build File, Format Version 6.00\n",
+		"# ** DO NOT EDIT **\n",
+		"\n"
+	);
+
+	if ($BasicTrgType=~/^DLL$/o) {
+		&main::Output(
+			"# TARGTYPE \"Win32 (x86) Dynamic-Link Library\" 0x0102\n"
+		);
+	}
+	elsif ($BasicTrgType=~/^EXE$/o) {
+		if (not &main::Plat=~/^(WINC|TOOLS)$/o) {
+			&main::Output(
+				"# TARGTYPE \"Win32 (x86) Application\" 0x0101\n"
+			);
+		}
+		else {
+			&main::Output(
+				"# TARGTYPE \"Win32 (x86) Console Application\" 0x0103\n"
+			);
+		}
+	}
+	elsif ($BasicTrgType=~/^(LIB)$/o) {
+		&main::Output(
+			"# TARGTYPE \"Win32 (x86) Static Library\" 0x0104\n"
+		);
+	}
+	
+	&main::Output(
+		"\n",
+		"CFG=",$IdeBlds{$BldList[0]},"\n",
+		"!MESSAGE This is not a valid makefile. To build this project using NMAKE,\n",
+		"!MESSAGE use the Export Makefile command and run\n",
+		"!MESSAGE \n",
+		"!MESSAGE NMAKE /f \"",$BaseTrg,".mak\".\n",
+		"!MESSAGE \n",
+		"!MESSAGE You can specify a configuration when running NMAKE\n",
+		"!MESSAGE by defining the macro CFG on the command line. For example:\n",
+		"!MESSAGE \n",
+		"!MESSAGE NMAKE /f \"",$BaseTrg,".mak\" CFG=\"".$IdeBlds{$BldList[0]}."\"\n",
+		"!MESSAGE \n",
+		"!MESSAGE Possible choices for configuration are:\n",
+		"!MESSAGE \n"
+	);
+	&main::OutSetLength(79);
+	if ($BasicTrgType=~/^DLL$/o) {
+		foreach (reverse @BldList) { # reverse because VC6 takes last as the default
+			&main::OutFormat(
+				"!MESSAGE \"",$IdeBlds{$_},"\" (based on \"Win32 (x86) Dynamic-Link Library\")"
+			);
+			&main::Output();
+		}
+	}
+	elsif ($BasicTrgType=~/^EXE$/o) {
+		if (not &main::Plat=~/^(WINC|TOOLS)$/o) {
+			foreach (reverse @BldList) {
+				&main::OutFormat(
+					"!MESSAGE \"",$IdeBlds{$_},"\" (based on \"Win32 (x86) Application\")"
+				);
+				&main::Output();
+			}
+		}
+		else {
+			foreach (reverse @BldList) {
+				&main::OutFormat(
+					"!MESSAGE \"",$IdeBlds{$_},"\" (based on \"Win32 (x86) Console Application\")"
+				);
+				&main::Output();
+			}
+		}
+	}
+	elsif ($BasicTrgType=~/^(LIB)$/o) {
+		foreach (@BldList) {
+			&main::OutFormat(
+				"!MESSAGE \"",$IdeBlds{$_},"\" (based on \"Win32 (x86) Static Library\")"
+			);
+			&main::Output();
+		}
+	}
+	&main::OutSetLength();
+	&main::Output(
+		"!MESSAGE \n",
+		"\n"
+	);
+
+	# BEGIN THE PROJECT
+	#------------------
+	&main::Output(
+		"# Begin Project\n",
+		"# PROP Scc_ProjName \"\"\n",
+		"# PROP Scc_LocalPath \"\"\n",
+		"CPP=cl.exe\n",
+		"MTL=midl.exe\n",
+		"RSC=rc.exe\n",
+		"\n"
+	);
+}
+
+sub PMBld {
+
+	my @BaseSrcList=&main::BaseSrcList;
+	my $BaseTrg=&main::BaseTrg;
+	my $Bld=&main::Bld;
+	my @BldList=&main::BldList;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my $ChopLinkPath=&main::Path_Chop(&main::LinkPath);
+	my $ChopRelPath=&main::Path_Chop(&main::RelPath);
+	my $ChopStatLinkPath=&main::Path_Chop(&main::StatLinkPath);
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $ExportLibrary=&main::ExportLibrary;
+	my $DefFile=&main::DefFile;
+	my $FirstLib=&main::FirstLib;
+	my $BasicTrgType=&main::BasicTrgType;
+	my @MacroList=&main::MacroList();
+	push @MacroList, "__SUPPORT_CPP_EXCEPTIONS__";
+    my $VariantFile=&main::VariantFile();
+
+
+	my @LibList;
+	my $PathBaseDsp=&main::MakeFilePath.&main::BaseMak;
+	my @StatLibList=&main::StatLibList;
+	my $Trg=&main::Trg;
+	my $TrgPath=&main::TrgPath;
+	my $TrgType=&main::TrgType;
+	
+	my $newlib = main::NewLib(); # Check if newlib has been set in the MMP file.
+	my $NewLib = 'scppnwdl.lib'; # This is where operator new and operator delete
+                                 # are defined for user side targets.
+	my $NewKernLib = 'scppnwdl_kern.lib'; # This is where operator new and operator delete
+                                 	  # are defined for kernel side targets.
+
+
+	if ($Bld =~ /DEB/) {
+		@LibList=&main::DebugLibList;
+	} else {
+		@LibList=&main::LibList;
+	}
+
+	my $NotUseWin32LibsFlag="";
+	unless ($Win32StdHeaders or &main::Plat eq 'TOOLS') {
+		$NotUseWin32LibsFlag=" /X"; # this flag suppresses searching of the standard directories for header files
+	}
+
+
+	if ($Bld eq $BldList[0]) {
+		&main::Output(
+			"!IF  \"\$(CFG)\" == \"$IdeBlds{$Bld}\"\n",
+			"\n"
+		);
+	}
+	else {
+		&main::Output(
+			"!ELSEIF  \"\$(CFG)\" == \"$IdeBlds{$Bld}\"\n",
+			"\n"
+		);
+	}
+	&main::Output(
+		"# PROP BASE Use_MFC 0\n"
+	);
+	if ($Bld=~/REL$/o) {
+		&main::Output(
+			"# PROP BASE Use_Debug_Libraries 0\n",
+			"# PROP BASE Output_Dir \".\\Win32_Un\"\n",
+			"# PROP BASE Intermediate_Dir \".\\Win32_Un\"\n"
+		);
+	}
+	elsif ($Bld=~/DEB$/o) {
+		&main::Output(
+			"# PROP BASE Use_Debug_Libraries 1\n",
+			"# PROP BASE Output_Dir \".\\Win32_U0\"\n",
+			"# PROP BASE Intermediate_Dir \".\\Win32_U0\"\n"
+		);
+	}
+	&main::Output(
+			"# PROP Use_MFC 0\n"
+	);
+	if ($Bld=~/REL$/o) {
+		&main::Output(
+			"# PROP Use_Debug_Libraries 0\n"
+		);
+	}
+	elsif ($Bld=~/DEB$/o) {
+		&main::Output(
+			"# PROP Use_Debug_Libraries 1\n"
+		);
+	}
+	&main::Output(
+		"# PROP Output_Dir \"$ChopRelPath\"\n",
+		"# PROP Intermediate_Dir \"$ChopBldPath\"\n",
+	);
+
+	&main::Output(
+		"# ADD CPP",
+		" /nologo",		# suppress "sign-on" banner message
+		" /Zp4"	,		# packs structures on 4 byte boundaries
+		" /GF"			# Pools strings and places them in read-only memory 
+	);
+
+	$MSVCVer = &Winutl_MSVCVer;
+
+	if ($MSVCVer >= 7) {
+		&main::Output(
+			" /wd4996",			# C4996: 'xxxx' was declared deprecated
+			" /wd4571"			# C4571: catch(...) blocks compiled with /EHs do not catch or re-throw Structured Exceptions
+		);	
+
+		if (&main::Plat ne 'TOOLS') {
+			&main::Output(
+				" /EHsc",			# Exceptions on
+				" /GR"				# RTTI on
+			);
+			if ($MSVCVer >= 8) {
+				&main::Output(
+					" /GS-"			# Buffer checking off
+				);
+			}
+		} else {
+			&main::Output(
+				" /EHsc",			# Exceptions on
+				" /GR",				# RTTI on
+				" /GS"				# Buffer checking on
+			);
+		}
+	} else {
+		if (&main::Plat ne 'TOOLS') {
+			&main::Output(
+					" /GX",				# Exceptions on
+					" /GR"				# RTTI on
+			);
+		}
+	}
+
+	if ($BasicTrgType=~/^EXE$/o) {
+		&main::Output(
+			' /MT'			# Creates a multi-threaded executable file, using libcmt.lib
+		);
+		if ($Bld=~/DEB$/o) {
+			&main::Output(
+				"d"			# i.e. /MTd, debug executable using debug version of libcmt
+			);
+		}
+	}
+	elsif (($BasicTrgType=~/^(DLL|LIB)$/o) and (&main::Plat ne 'TOOLS')) {
+		&main::Output(
+			" /MD"			# Creates a multithreaded DLL, using MSVCRT.LIB
+		);
+		if ($Bld=~/DEB$/o) {
+			&main::Output(
+				"d"			# i.e. /MDd, debug executable using debug version of msvcrt
+			);
+		}
+	}
+
+	if ($MSVCVer >= 8) {
+		&main::Output(
+			" /Zc:wchar_t-"				# Don't make wchar_t a built-in; breaks mangled names
+		);		
+	}
+
+	if (($MSVCVer >= 7) || (&main::Plat ne 'TOOLS')) {
+		&main::Output(
+			" /W4"
+		);
+	}
+
+	if ($Bld=~/DEB$/o) {
+		&main::Output(
+			" /Zi",		# Generates complete debugging information
+			" /Od"		# Disables optimization
+		);
+#		euser change to apply inlining on the _NAKED functions
+		if ($BaseTrg=~/^EUSER$/oi) {
+			&main::Output(
+				' /Ob1'	# Specific control of expension of inline functions
+			);
+		}
+	}
+	elsif ($Bld=~/REL$/o) {
+		&main::Output(
+			' /O1'				# Creates small code
+		);
+		if ($MSVCVer >= 8) {
+			&main::Output(
+				' /fp:strict'		# Improves floating-point consistency
+			);
+		} else {
+			&main::Output(
+				' /Op'				# Improves floating-point consistency
+			);
+		}
+
+	}
+	&main::Output(
+		"$NotUseWin32LibsFlag"
+	);
+	my @incList=();
+	my $candidate;
+	INCLOOP: foreach $candidate (@ChopUserIncPaths,@ChopSysIncPaths) {
+		my $accepted;	# remove duplicates
+		foreach $accepted (@incList) {
+			if ($candidate eq $accepted) {
+				next INCLOOP;
+			}
+		}
+		push @incList, $candidate;
+		&main::Output(
+			" /I \"$candidate\""
+		);
+	}
+	foreach (@MacroList) {
+		&main::Output(
+			" /D \"$_\""
+		);
+	}
+
+
+   if($VariantFile){
+        my $VariantFileFileName  = Path_Split('FILE',$VariantFile);
+        &main::Output(
+              " /FI\"$VariantFileFileName\""
+              );
+	}
+
+	if ($Bld=~/DEB$/o) {
+		&main::Output(
+			" /FR /Fd\"$ChopRelPath\\$TrgPath$BaseTrg.PDB\""
+		);
+	}
+	&main::Output(
+		" /c\n",
+	);
+
+	if ($BasicTrgType=~/^DLL$/o) {
+		&main::Output(
+			"# ADD MTL /nologo"
+		);
+		if ($Bld=~/REL$/o) {
+			&main::Output(
+				" /mktyplib203 /D"
+			);
+		}
+		elsif ($Bld=~/DEB$/o) {
+			&main::Output(
+				" /D \"_DEBUG\" /mktyplib203"
+			);
+		}
+		&main::Output(
+			" /win32\n"
+		);
+	}
+
+	&main::Output(
+		"# ADD BASE RSC /l 0x809\n",
+		"# ADD RSC /l 0x809 /d"
+	);
+	if ($Bld=~/REL$/o) {
+		&main::Output(
+			" \"NDEBUG\""
+		);
+	}
+	elsif ($Bld=~/DEB$/o) {
+		&main::Output(
+			" \"_DEBUG\""
+		);
+	}
+	&main::Output(
+		"\n"
+	);
+
+	&main::Output(
+		"BSC32=bscmake.exe\n",
+		"# ADD BSC32 /nologo\n",
+	);
+
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		&main::Output(
+			"LINK32=link.exe\n",
+			"# ADD BASE LINK32 /machine:IX86\n",
+			"# ADD LINK32"
+		);
+		unless (&main::Plat eq 'TOOLS') {
+			&main::Output(
+				" \"$ChopStatLinkPath\\$FirstLib\""
+			);
+			
+			unless ($newlib) {
+				if ( main::SystemTrg() ) {
+					# System targets are PDD, LDD, VAR, KEXT and KDLL.
+
+					&main::Output(
+						" \"$ChopStatLinkPath\\$NewKernLib\""
+					);
+				}
+				else {
+					&main::Output(
+						" \"$ChopStatLinkPath\\$NewLib\""
+					);
+				}
+			}
+			else {
+				&main::Output(
+					" \"$ChopStatLinkPath\\$newlib\""
+				);
+			}
+		}
+	}
+	elsif ($BasicTrgType=~/^LIB$/o) {
+		&main::Output(
+			"LIB32=link.exe -lib\n",
+			"# ADD BASE LIB32 /machine:IX86\n",
+			"# ADD LIB32"
+		);
+	}
+	foreach (@Win32LibList) {
+		&main::Output(
+			" \"",lc $_,"\""
+		);
+	}
+	foreach (@StatLibList) {
+		&main::Output(
+			" \"$ChopStatLinkPath\\",lc $_,"\""
+		);
+	}
+	foreach (@LibList) {
+		&main::Output(
+			" \"$ChopLinkPath\\",lc $_,"\""
+		);
+	}
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			" \"$ChopBldPath\\$ExportLibrary.exp\""
+		);
+	}
+	&main::Output(' /nologo');
+	if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+		&main::Output(
+			" /fixed:no $BaseAddressFlag"
+		);
+	}
+	if (&main::HeapSize) {
+		my %HeapSize=&main::HeapSize;
+		&main::Output(
+			' /heap:',$HeapSize{Max},',',$HeapSize{Min}
+		);
+	}
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			' /noentry /dll'
+		);
+	}
+	elsif ($BasicTrgType=~/^EXE$/o) {
+		unless (&main::Plat eq 'TOOLS') {
+			&main::Output(
+				' /entry:"?_E32Bootstrap@@YGXXZ"'
+			);
+		}
+	}
+	if (&main::Plat=~/^(WINC|TOOLS)$/o && $BasicTrgType=~/^EXE$/o) { # shouldn't really have WINC mentioned here
+		&main::Output(
+			' /subsystem:console'
+		);
+	}
+	else {
+		&main::Output(
+			' /subsystem:windows'
+		);
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)$/o && $Bld=~/DEB$/o) {
+		&main::Output(
+#			pdb needs specifying here to be the same as the default applied in command-line builds
+			" /pdb:\"$ChopRelPath\\$TrgPath$BaseTrg.pdb\" /debug"
+		);
+	}
+	&main::Output(
+		' /machine:IX86',
+		' /ignore:4089',		# LNK4089: all references to "dynamic-link library" discarded by /OPT:REF
+		' /ignore:4005'			# LNK4005: no objects used from XXX
+	);
+
+	if ($MSVCVer >= 7) {
+		&main::Output(
+			' /ignore:4210'	# LNK4210: .CRT section exists; there may be unhandled static initializers or terminators
+		);
+	}
+
+	my $EntrySymbol='';
+	unless (&main::Plat eq 'TOOLS') {
+		if ($BasicTrgType=~/^EXE$/o) {
+			my $debug = '';
+			if ($Bld =~ /DEB$/o) {
+				$debug .= 'd';
+			}
+			&main::Output(
+				" /nodefaultlib:libcmt$debug.lib"
+			);
+		}
+		if ($BasicTrgType=~/^DLL$/o) {
+			&main::Output(
+				" /include:\"__E32Dll\""
+			);
+			$EntrySymbol='_E32Dll';
+		}
+		elsif ($BasicTrgType=~/^EXE$/o) {
+			&main::Output(
+				" /include:\"__E32Startup\""
+			);
+			$EntrySymbol='_E32Startup';
+		}
+	} else {
+		&main::Output(
+			' /ignore:4098'	# LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
+		);
+	}
+	my $AbsentSubst = '';
+	if ($EntrySymbol) {
+		$AbsentSubst = " -absent $EntrySymbol";
+	}
+	&main::Output(
+		" /out:\"$ChopRelPath\\$TrgPath$Trg\""
+	);
+	if ($MSVCVer <= 7) {
+		if ($BasicTrgType=~/^(DLL|EXE)$/o) {
+			&main::Output(
+				' /WARN:3'
+			);
+		}
+	}
+	if ($BasicTrgType=~/^(DLL|EXE)$/o && $Bld=~/DEB$/o) {
+		&main::Output(
+			"\n",
+			"# SUBTRACT LINK32 /pdb:none"
+		);
+	}
+	&main::Output(
+		"\n"
+	);
+	if (&main::Plat eq 'TOOLS' and $BasicTrgType eq 'EXE') {
+		&main::Output(
+			"# Begin Special Build Tool\n",
+			"PostBuild_Cmds=copy \"$ChopRelPath\\$TrgPath$Trg\" \"",&main::EPOCToolsPath,"$Trg\" \n",
+			"# End Special Build Tool\n"
+		);
+	}
+	if ($BasicTrgType=~/^DLL$/o || $TrgType=~/^EXEXP$/o) {
+		&main::Output(
+			"# Begin Special Build Tool\n",
+			"SOURCE=\$(InputPath)\n",
+			"PreLink_Cmds=echo Doing first-stage link by name\\\n"
+		);
+		&main::Output(
+			"\tnmake -nologo -f \"${PathBaseDsp}.SUP.MAKE\" PRELINK$Bld\\\n",
+			"\tif errorlevel 1 nmake -nologo -f \"${PathBaseDsp}.SUP.MAKE\" STOPLINK$Bld \n",
+			"PostBuild_Cmds=nmake -nologo -f \"${PathBaseDsp}.SUP.MAKE\" POSTBUILD$Bld\n",
+			"# End Special Build Tool\n"
+		);
+
+
+#		append to the supplementary makefile for each build
+		$SupText.=join('',
+			"# BUILD - $Bld\n",
+			"\n",
+			"LIBS="
+		);
+		foreach (@StatLibList) {
+			$SupText.=" \\\n\t\"\$(EPOCSTATLINK$Bld)\\$_\"";
+		}
+		foreach (@LibList) {
+			$SupText.=" \\\n\t\"\$(EPOCLINK$Bld)\\$_\"";
+		}
+		$SupText.="\n\nLINK_OBJS=";
+		foreach (@BaseSrcList) {
+			$SupText.=" \\\n\t\"\$(EPOCBLD$Bld)\\$_.obj\"";
+		}
+		if ($Win32Resrc) {
+			$SupText.=" \\\n\t\"\$(EPOCBLD$Bld)\\".&main::Path_Split('Base',$Win32Resrc).".res\"";
+		}
+		$SupText.="\n\nSTAGE1_LINK_FLAGS=\"\$(EPOCSTATLINK$Bld)\\$FirstLib\"";
+		
+		unless ($newlib) {
+			if ( main::SystemTrg() ) {
+				# System targets are PDD, LDD, VAR, KEXT and KDLL.
+
+				$SupText.=" \"\$(EPOCSTATLINK$Bld)\\$NewKernLib\"";
+			}
+			else {
+				$SupText.=" \"\$(EPOCSTATLINK$Bld)\\$NewLib\"";
+			}
+		}
+		else {
+			$SupText.=" \"\$(EPOCSTATLINK$Bld)\\$newlib\"";
+		}
+		
+		foreach (@Win32LibList) {
+			$SupText.=' ';
+			$SupText.=lc $_;
+		}
+		$SupText.=" \\\n \$(LIBS) /nologo$BaseAddressFlag /noentry /dll /subsystem:windows";
+		if ($Bld=~/DEB$/o) {
+			$SupText.=' /debug';
+		}
+		$SupText.=" \\\n /incremental:no /machine:IX86 /ignore:4089";
+		if ($BasicTrgType=~/^EXE$/o) {
+			my $debug = '';
+			if ($Bld =~ /DEB$/o) {
+				$debug .= 'd';
+			}
+			$SupText .= " /nodefaultlib:libcmt$debug.lib";
+		}
+		if ($MSVCVer >= 7) {
+			$SupText .=  " /ignore:4210";
+		}
+		if ($BasicTrgType=~/^DLL$/o) {
+			$SupText.=" /include:\"__E32Dll\"";
+		}
+		else {
+			$SupText.=" /include:\"__E32Startup\"";
+		}
+		if ($BasicTrgType=~/^(DLL)$/o) {
+			$SupText.=" /implib:\"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"";
+		} elsif ($BasicTrgType=~/^(EXE)$/o) {
+			$SupText.=" /implib:\"\$(EPOCBLD$Bld)\\$ExportLibrary.exe.lib\"";
+		}
+		$SupText.=join('',
+			' /ignore:4089',		# LNK4089: all references to "dynamic-link library" discarded by /OPT:REF
+			' /ignore:4005'			# LNK4005: no objects used from XXX
+		);
+		if ($MSVCVer >= 7) {
+			$SupText.=" /ignore:4210";		# LNK4210: .CRT section exists; there may be unhandled static initializers or terminators
+		}
+		$SupText.=" /out:\"\$(EPOCBLD$Bld)\\$Trg\"";
+		if ($MSVCVer < 7) {
+			$SupText .= " /WARN:3";
+		}
+		$SupText.="\n\n";
+		$SupText.="PRELINK$Bld : \$(LINK_OBJS)";
+		if (-e $DefFile) { # effectively "if project frozen ..."
+			$SupText.=" \"$DefFile\"";
+		}
+		unless (&main::Plat eq 'TOOLS') {
+			$SupText.=" \"\$(EPOCSTATLINK$Bld)\\$FirstLib\"";
+			
+			unless ($newlib) {
+				if ( main::SystemTrg() ) {
+					# System targets are PDD, LDD, VAR, KEXT and KDLL.
+
+					$SupText.=" \"\$(EPOCSTATLINK$Bld)\\$NewKernLib\"";
+				}
+				else {
+					$SupText.=" \"\$(EPOCSTATLINK$Bld)\\$NewLib\"";
+				}
+			}
+			else {
+				$SupText.=" \"\$(EPOCSTATLINK$Bld)\\$newlib\"";
+			}
+		}
+		$SupText.=" \$(LIBS)\n";
+
+#		Link by name first time round for dlls
+		$SupText.=join('',
+			"\tlink.exe \@<<\n",
+			"\t\t\$(STAGE1_LINK_FLAGS) \$(LINK_OBJS)\n",
+			"<<\n",
+			"\tdel \"\$(EPOCBLD$Bld)\\$Trg\"\n"
+		);
+
+		if ($BasicTrgType=~/^(DLL)$/o) {
+			$SupText.="\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\"\n";
+		} elsif ($BasicTrgType=~/^(EXE)$/o) {
+			$SupText.="\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.exe.exp\"\n";
+		}
+
+#		Generate an export info file
+		if ($BasicTrgType=~/^(DLL)$/o) {
+			$SupText.=join('',
+				"\tdumpbin /exports /out:\"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\" \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n",
+				"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n"
+			);
+		} elsif ($BasicTrgType=~/^(EXE)$/o) {
+			$SupText.=join('',
+				"\tdumpbin /exports /out:\"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\" \"\$(EPOCBLD$Bld)\\$ExportLibrary.exe.lib\"\n",
+				"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.exe.lib\"\n"
+			);
+		}
+
+#		call makedef to reorder the export information
+#		call perl on the script here so nmake will die if there are errors - this doesn't happen if calling perl in a batch file
+		$SupText.="\tperl -S makedef.pl $AbsentSubst -Inffile \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\"";
+		if (-e $DefFile) { # effectively "if project frozen ..."
+			$SupText.=" -Frzfile \"$DefFile\"";
+		}
+		# freeze ordinals, a maximum of 2, for polymorphic dlls
+		my $Ordinal;
+		my $Num=1;
+		foreach $Ordinal (&main::Exports) {
+#			replace "$" with "$$" so that NMAKE doesn't think there's a macro in the function name
+			$Ordinal=~s-\$-\$\$-go;
+			$SupText.=" -$Num $Ordinal";
+			$Num++;
+		}
+		$SupText.=join('',
+			" \"\$(EPOCBLD)$ExportLibrary.def\" \n",
+			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.inf\"\n"
+		);
+
+		# create the export object from the .DEF file
+		$SupText.="\tlib.exe  /nologo /machine:i386 /nodefaultlib /name:\"$Trg\" /def:\"\$(EPOCBLD)$ExportLibrary.def\" /out:\"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n";
+		if (&main::ExportUnfrozen) {
+			$SupText.="\tcopy \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\" \"\$(EPOCLIB)UDEB\\$ExportLibrary.lib\"\n";
+		}
+		$SupText.=join('',
+			"\tdel \"\$(EPOCBLD$Bld)\\$ExportLibrary.lib\"\n",
+			"\t\@echo First-stage link successful\n",
+			"\n",
+			"\n",
+			"STOPLINK$Bld : DELEXPOBJ$Bld\n",
+			"\t\@echo Stopped the build by removing the export object,\n",
+			"\t\@echo if present, because the pre-link stage failed\n",
+			"\n",
+			"\n",
+			"POSTBUILD$Bld : DELEXPOBJ$Bld"
+		);
+		if ($DefFile and not &main::ExportUnfrozen) {
+			$SupText.=" LIBRARY";
+		}
+		$SupText.=join('',
+			"\n",
+			"\n",
+			"\n",
+			"DELEXPOBJ$Bld :\n"
+		);
+
+		if ($BasicTrgType=~/^(DLL)$/o) {
+			$SupText.="\tif exist \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\" del \"\$(EPOCBLD$Bld)\\$ExportLibrary.exp\"\n";
+		} elsif ($BasicTrgType=~/^(EXE)$/o) {
+			$SupText.="\tif exist \"\$(EPOCBLD$Bld)\\$ExportLibrary.exe.exp\" del \"\$(EPOCBLD$Bld)\\$ExportLibrary.exe.exp\"\n";
+		}
+
+		$SupText.=join('',
+			"\n",
+			"\n",
+			"\n"
+		);
+	}
+
+	&main::Output(
+		"\n"
+	);
+}
+
+sub PMEndBldList {
+
+	# CLOSE THE !IF ... !ENDIF LOOP
+	#------------------------------
+	&main::Output(
+		"!ENDIF \n",
+		"\n"
+	);
+}
+
+sub PMStartSrcList {
+
+	my @BldList=&main::BldList;
+
+	&main::Output(
+		"# Begin Target\n",
+		"\n"
+	);
+	foreach (@BldList) {
+		&main::Output(
+			"# Name \"".$IdeBlds{$_}."\"\n"
+		);
+	}
+	&main::Output(
+		"# Begin Group \"Source Files\"\n",
+		"\n",
+		"# PROP Default_Filter \"cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90\"\n"
+	);
+}
+
+sub PMResrcBld {
+
+	my $ResourceRef=&main::ResourceRef;
+	my $Resrc=ucfirst lc &main::Path_Split('File', $$ResourceRef{Source});
+	my $BaseResrc=&main::Path_Split('Base', $$ResourceRef{Source});
+	my $SrcPath=&main::Path_Split('Path', $$ResourceRef{Source});
+	my $TrgPath=&main::Path_Split('Path', $$ResourceRef{Trg});
+	my @LangList=($$ResourceRef{Lang});
+	
+	my $inputpath="$SrcPath$Resrc";
+	
+	&main::Output(
+		"# Begin Source File\n",
+		"\n",
+		"SOURCE=$inputpath\n"
+	);
+
+	my @BldList=&main::BldList;
+	my $ChopBldPath=&main::Path_Chop(&main::BldPath);
+	my @ChopSysIncPaths=&main::Path_Chop(&main::SysIncPaths);
+	my @ChopUserIncPaths=&main::Path_Chop(&main::UserIncPaths);
+	my $DataPath=&main::DataPath;
+	my @DepList=&main::DepList;
+	my $PathBaseDsp=&main::MakeFilePath.&main::BaseMak;
+	my $PerlLibPath=&main::PerlLibPath;
+	my $RelPath=&main::RelPath;
+	my $ChopSrcPath=&main::Path_Chop($SrcPath);
+
+	my $ResrcHdr=join '', &main::EPOCIncPath(), $BaseResrc, '.RSG';
+
+	&main::OutFormat(
+		"USERDEP__$BaseResrc="
+	);
+	$SupText.="DEPEND=";
+	my $Dep;
+	foreach $Dep (@DepList) {
+		&main::OutFormat(
+			"\"$Dep\"\t"
+		);
+		$SupText.=" \\\n\t\"$Dep\"";
+	}
+	&main::Output(
+		"\n"
+	);
+	$SupText.="\n\n";
+
+	my $Bld;
+	foreach $Bld (@BldList) {
+		my $ResrcTrgFullName="$RelPath$Bld\\$TrgPath$BaseResrc.r";
+		if ($Bld eq $BldList[0]) {
+			&main::Output(
+				'!IF'
+			);
+		}
+		else {
+			&main::Output(
+				'!ELSEIF'
+			);
+		}
+		&main::Output(
+			"  \"\$(CFG)\" == \"$IdeBlds{$Bld}\"\n",
+			"\n"
+		);
+		&main::Output(
+			"# PROP Intermediate_Dir \"$ChopBldPath\"\n",
+			"# Begin Custom Build - Building resources from $Resrc\n",
+			"InputPath=$inputpath\n",
+			"\n",
+			"BuildCmds= \\\n",
+			"\tnmake -nologo -f \"${PathBaseDsp}.SUP.MAKE\"\\\n",
+			"  \"$ResrcTrgFullName\"\n"
+		);
+		$SupText.="\"$ResrcTrgFullName\" :";
+		my $Lang;
+		foreach $Lang (@LangList) {
+			if ($Lang eq 'SC') {
+#				change to put dummy file in dependency list
+				$SupText.=" \"$ResrcTrgFullName$Lang.dummy\"";
+				next;
+			}
+			$SupText.=" \"$ResrcTrgFullName$Lang\"";
+		}
+		$SupText.="\n\n";
+		foreach $Lang (@LangList) {
+#			change to put dummy file in dependency list
+			if ($Lang eq 'SC') {
+				$SupText.="\"$ResrcTrgFullName$Lang.dummy\"";
+			}
+			else {
+				$SupText.="\"$ResrcTrgFullName$Lang\"";
+			}
+			$SupText.=" : \"$SrcPath$Resrc\" \$(DEPEND)\n";
+			$SupText.="\tperl -S epocrc.pl -I \"$ChopSrcPath\"";
+			foreach (@ChopUserIncPaths) {
+				$SupText.=" -I \"$_\"";
+			}
+			$SupText.=" -I-";
+			foreach (@ChopSysIncPaths) {
+				$SupText.=" -I \"$_\"";
+			}
+			$SupText.=" -DLANGUAGE_$Lang -u \"$SrcPath$Resrc\"";
+			$SupText.=" -o\"$ResrcTrgFullName$Lang\" -h\"$SrcPath$BaseResrc.rs~\" -t\"\$(EPOCBLD$Bld)\"\n";
+# 			change because if a .RSC file is output then VC5 tries to link it to the main target as a Win32 resource file
+			if ($Lang eq 'SC') {
+				$SupText.="\techo this is a dummy output file > \"$ResrcTrgFullName$Lang.dummy\"\n";
+			}
+			$SupText.=join('',
+				"\tperl -S ecopyfile.pl \"$SrcPath$BaseResrc.rs~\" \"$ResrcHdr\"\n",
+				"\tdel \"$SrcPath$BaseResrc.rs~\"\n",
+				"\n"
+			);
+		}
+
+		foreach $Lang (@LangList) {
+#			change again to avoid VC5 linking the resource
+			my $TmpLang=$Lang;
+			if ($TmpLang eq 'SC') {
+				$TmpLang.='.dummy';
+			}
+			&main::Output(
+				"\n",
+				"\"$ResrcTrgFullName$TmpLang\" : \$(SOURCE) \"\$(INTDIR)\"\\\n",
+				" \"\$(OUTDIR)\"\n",
+				"   \$(BuildCmds)\n",
+			);
+		}
+		&main::Output(
+			"# End Custom Build\n",
+			"\n"
+		);
+	}
+	&main::Output(
+		"!ENDIF \n",
+		"\n",
+		"# End Source File\n"
+	);
+}
+
+sub PMDoc {    
+
+	my $SrcPath=&main::SrcPath;
+
+	&main::Output(
+		"# Begin Source File\n",
+		"\n",
+		"SOURCE=",$SrcPath,ucfirst lc &main::Doc,"\n",
+		"# PROP Exclude_From_Build 1\n",
+		"# End Source File\n"
+	);
+}
+
+sub PMStartSrc {    
+
+	&main::Output(
+		"# Begin Source File\n",
+		"\n",
+		"SOURCE=",&main::SrcPath,ucfirst lc &main::Src,"\n",
+		"# End Source File\n"
+	);
+}
+
+sub PMSrcDepend {
+
+	# Generate user header list for this src, merge with list for all sources
+	foreach (&main::DepList) {
+		$PrjHdrs{$_}='unusedval';
+	}
+}
+
+sub PMEndSrcList {
+
+	my $BaseDsp=&main::BaseMak;
+	my $PathBaseDsp=&main::MakeFilePath.$BaseDsp;
+
+	&main::Output(
+		"# End Group\n",
+		"# Begin Group \"Resource Files\"\n",
+		"\n",
+		"# PROP Default_Filter \"ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe\"\n"
+	);
+	if ($Win32Resrc) {
+		&main::Output(
+			"# Begin Source File\n",
+			"\n",
+			"SOURCE=",ucfirst lc $Win32Resrc,"\n",
+			"# End Source File\n"
+		);
+		# Generate user header list for this src, merge with list for all sources
+		foreach (&main::Deps_GenDependsL($Win32Resrc)) {
+			$PrjHdrs{$_}='unusedval';
+		}
+	}
+	&main::Output(
+		"# End Group\n"
+	);
+
+	# Use the global %PrjHdrs Hash to produce user header listing
+	&main::Output(
+		"# Begin Group \"Header Files\"\n",
+		"\n",
+		"# PROP Default_Filter \"h;hpp;hxx;hm;inl;fi;fd\"\n"
+	);
+	foreach (keys %PrjHdrs) {
+		&main::Output(
+			"# Begin Source File\n",
+			"\n",
+			"SOURCE=",&main::Path_Split('Path',$_),ucfirst lc &main::Path_Split('File',$_),"\n",
+			"# End Source File\n"
+		);
+	}	
+	&main::Output(
+		"# End Group\n",
+		"# End Target\n",
+		"# End Project\n",
+	);
+
+	&main::Path_DelFiles("$PathBaseDsp.MAK","$PathBaseDsp.MDP","$PathBaseDsp.NCB","$PathBaseDsp.OPT","$PathBaseDsp.PLG");
+
+#	Add target to supplementary makefile to recreate the workspace
+#
+#	This target is intended for use as a custom tool within the MSVC IDE, for regenerating
+#	workspace once the .MMP file has been edited within the IDE.  To install the target as
+#	a custom tool in the IDE, select Tools->Customise...->Tools, and choose a name for the
+#	tool, e.g. "Recreate Workspace".  Next, type "nmake.exe" as the command and
+#	"-nologo -f $(WkspDir)\$(WkspName).sup.make recreateworkspace" as the program arguments.
+#	Leave the "initial directory" field blank, and tick the "Close window on exiting" checkbox.
+#	Having edited the .MMP file for a project, select the new tool from the tools menu to
+#	recreate the workspace.  If the commands have run correctly, you will be prompted to
+#	reload the workspace.
+	$SupText.=join('',
+		"\n",
+		"RECREATEWORKSPACE :\n",
+		'	cd ', &main::Path_Chop(&main::Path_WorkPath), "\n",
+		'	perl -S makmake.pl -D ', &main::MmpFile, ' ', &main::PlatName, "\n",
+		"\n"
+	);
+
+#	Create the supplementary makefile
+	
+	&main::CreateExtraFile(&main::MakeFilePath.&main::BaseMak.'.SUP.MAKE', $SupText);
+
+
+# create the .DSW file
+	my $DswText=join(
+		"\n",
+		"Microsoft Developer Studio Workspace File, Format Version 6.00",
+		'# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!',
+		'',
+		'#'x79,
+		'',
+		"Project: \"$BaseDsp\"=.\\$BaseDsp.dsp - Package Owner=<4>",
+		'',
+		'Package=<5>',
+		'{{{',
+		'}}}',
+		'',
+		'Package=<4>',
+		'{{{',
+		'}}}',
+		'',
+		'#'x79,
+		'',
+		'Global:',
+		'',
+		'Package=<5>',
+		'{{{',
+		'}}}',
+		'',
+		'Package=<3>',
+		'{{{',
+		'}}}',
+		'',
+		'#'x79,
+		''
+	);
+
+	&main::CreateExtraFile("$PathBaseDsp.DSW",$DswText);
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/lockit_info.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,346 @@
+# Copyright (c) 2001-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:
+#
+
+package lockit_info;
+use File::Copy;
+use File::Path;
+use File::Basename;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	Check_Epocroot
+	Setup_LockitPath
+	Lockit_Releasables
+	Copy_Files
+	WriteTo_Info
+	LineExists
+	Lockit_SrcFile
+	Open_InfoFile
+	Close_InfoFile
+);
+
+use Pathutl;
+my $epocroot;
+my $epocPath;
+
+sub Check_Epocroot 
+	{
+	$epocroot = $ENV{EPOCROOT};
+	die "ERROR: Must set the EPOCROOT environment variable\n" if (!defined($epocroot));
+	$epocroot =~ s-/-\\-go;	# for those working with UNIX shells
+	die "ERROR: EPOCROOT must not include a drive letter\n" if ($epocroot =~ /^.:/);
+	die "ERROR: EPOCROOT must be an absolute path without a drive letter\n" if ($epocroot !~ /^\\/);
+	die "ERROR: EPOCROOT must not be a UNC path\n" if ($epocroot =~ /^\\\\/);
+	die "ERROR: EPOCROOT must end with a backslash\n" if ($epocroot !~ /\\$/);
+	die "ERROR: EPOCROOT must specify an existing directory\n" if (!-d $epocroot);
+
+	$epocroot=~ s-\\$--;		# chop trailing \\
+	$epocPath = "$epocroot\\epoc32\\localisation";
+	}
+
+
+## main function which handles all lockit-related function
+sub Lockit_SrcFile()
+{
+	my ($ResrcFile, $RppFile,$Resrc_Options, $FileType, $Bitmaps, $RscTarget, $lang);
+	
+	if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+		($ResrcFile, $RppFile,$Resrc_Options, $FileType, $Bitmaps, $RscTarget, $lang)= @_;
+	}
+	else {
+
+		($ResrcFile, $RppFile,$Resrc_Options, $FileType, $Bitmaps, $RscTarget)= @_;
+	}
+	$RscTarget=Path_Split('File', $RscTarget);
+	my ($Tgtdir, $CWDir) = split(/:/, $Resrc_Options);
+	$Tgtdir =~s-^(.*)\\$-$1-o; # remove terminating backslash
+	$Tgtdir=~s-^\\--o; # remove leading backslash
+	
+	Check_Epocroot();
+	my $FilePath;
+
+	if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+		$FilePath = Setup_LockitPath($CWDir, $ResrcFile, $FileType, $lang);
+
+		# update rppfile in epoc32\localisation if -l option specified and generating resource
+			
+		copy("$RppFile", "$FilePath\\");
+	}
+	else {
+		$FilePath = Setup_LockitPath($CWDir, $ResrcFile, $FileType);
+
+		# update rppfile in epoc32\localisation if -l option specified and generating resource
+		copy("$RppFile", "$FilePath\\$ResrcFile.rpp");
+	}
+
+	# update bitmaps in epoc32\localisation if -l option and bitmaps specified
+	if ($CWDir && ($Bitmaps ne ""))
+	{
+		my $BmpRef;
+		$Bitmaps =~ s/ +|\t/ /g; # replace tabs and more spaces with single space
+		$Bitmaps =~s/^ //g; # remove leading space
+		$Bitmaps =~s/ $//g; # remove trailing space
+
+		my (@AifBitmaps) = split(/ /, $Bitmaps);
+		foreach $BmpRef (@AifBitmaps) {
+			$BmpRef =~ /^([^\\]+)(\\.*)$/;
+			my $CDepth = $1;
+			my $bmp = $2;
+			Copy_Files($bmp, $FilePath);
+			my $file_base= basename($bmp);
+			chmod (0666,"$FilePath\\$file_base");
+		}
+	}
+
+	if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+		if (LineExists($ResrcFile.$lang, $RscTarget) == 0)
+		{
+			Open_InfoFile($ResrcFile . $lang);
+
+			WriteTo_Info ( "\n\\$Tgtdir\\$RscTarget :" );
+
+			if($FileType =~ /RSC/i && $RppFile ne "") {
+				WriteTo_Info (
+					 " $ResrcFile$lang.rpp"
+				)
+			}
+
+			elsif ($RppFile ne "") {
+				WriteTo_Info (
+					 " $ResrcFile$lang.text $ResrcFile$lang.struct"
+				)
+			}
+
+			if($Bitmaps ne "")
+			{
+				my $BmpRef;
+				my (@AifBitmaps) = split(/ /, $Bitmaps);
+				foreach $BmpRef (@AifBitmaps) {
+					$BmpRef =~ /^([^\\]+)(\\.*)$/;
+					my $CDepth = $1;
+					my $bmp = $2;
+					my $file_base= basename($bmp);
+					WriteTo_Info (
+						 " $CDepth\\$file_base"
+					);
+				}
+			}
+
+			Close_InfoFile($ResrcFile . $lang);
+		}
+	}
+	else {
+		if (LineExists($ResrcFile, $RscTarget) == 0)
+		{
+			Open_InfoFile($ResrcFile);
+
+			WriteTo_Info ( "\n\\$Tgtdir\\$RscTarget :" );
+
+			if($FileType =~ /RSC/i && $RppFile ne "") {
+				WriteTo_Info (
+					 " $ResrcFile.rpp"
+				)
+			}
+
+			elsif ($RppFile ne "") {
+				WriteTo_Info (
+					 " $ResrcFile.text $ResrcFile.struct"
+				)
+			}
+
+			if($Bitmaps ne "")
+			{
+				my $BmpRef;
+				my (@AifBitmaps) = split(/ /, $Bitmaps);
+				foreach $BmpRef (@AifBitmaps) {
+					$BmpRef =~ /^([^\\]+)(\\.*)$/;
+					my $CDepth = $1;
+					my $bmp = $2;
+					my $file_base= basename($bmp);
+					WriteTo_Info (
+						 " $CDepth\\$file_base"
+					);
+				}
+			}
+
+			Close_InfoFile($ResrcFile);
+
+		}
+	}
+}
+
+
+## copy source files
+sub Copy_Files ()
+	{
+	my ($SourceName, $TargetName) = @_;
+
+	copy($SourceName, $TargetName);
+	}
+
+## create necessary directories
+sub Create_InfoFile ()
+	{
+	my ($CreateLockitPath, $CreateInfoFile, $Datadir) = @_;
+	if ( !-e "$CreateLockitPath") { mkpath($CreateLockitPath); }
+	if ( !-e "$epocPath\\group") { mkpath("$epocPath\\group"); }
+	if ( !-e "$epocPath\\group\\$CreateInfoFile.info") {	
+		open INFO,">$epocPath\\group\\$CreateInfoFile.info" or die "ERROR: Can not create file \"$CreateInfoFile\"\n"; 
+		print INFO "DATADIR: $Datadir\n";
+		close INFO;
+	}
+}
+
+## open INFO file to write source information
+sub Open_InfoFile ($)
+	{
+	my $FileToOpen = $_[0];
+	open INFO,">>$epocPath\\group\\$FileToOpen.INFO" or die "ERROR: Can not open  \"$epocPath\\group\\$FileToOpen\"\n";
+	}
+
+
+## write source filename to INFO file
+sub WriteTo_Info ($) 
+	{
+	my $Text = $_[0];
+	print INFO "$Text";
+	}
+
+
+## check whether source filename is written to INFO file
+sub LineExists ()
+	{
+	my $FileToOpen = $_[0];
+	my $LineCheck = $_[1];
+	my $exists = 0;
+
+	open INFO,"$epocPath\\group\\$FileToOpen.info" or die "ERROR: Can not open \"$FileToOpen\"\n";
+		while(<INFO>) {
+			if (/$LineCheck/i) { $exists = 1; return $exists; } 
+		}
+		close INFO;
+	return $exists;
+	}
+	
+
+#determine Components pathname and create INFO files
+sub Setup_LockitPath
+	{
+	my ($ComponentSrcPath, $Resrc, $FileType, $lang);
+
+	if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+		($ComponentSrcPath, $Resrc, $FileType, $lang) = @_;
+	}
+	else {
+		($ComponentSrcPath, $Resrc, $FileType) = @_;
+	}
+	my ($temp, $CWDir) = split(/\\/, $ComponentSrcPath);
+	my $FilePath = $epocPath;
+
+	if($FileType =~ /RSS/i) { $FileType = "rsc"; }
+	if($FileType =~ /^acl|abw|aif|a[0-9]/i) {
+		$FilePath .= "\\aif";
+	}
+	
+## change added to support cnf file generation
+	if ($FileType =~ /CNF/i) { 
+		$FilePath .= "\\cnf"; 
+	}
+
+	my $WorkPath = ""; 
+
+	if($Resrc !~ /^$CWDir$/i) {
+		$WorkPath = "$Resrc"; 
+	}
+
+	$FilePath .= "\\$WorkPath\\$FileType";
+
+	if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+		&Create_InfoFile("$FilePath", "$Resrc$lang", "\\$WorkPath");
+	}
+	else {
+		&Create_InfoFile("$FilePath", "$Resrc", "\\$WorkPath");
+	}
+
+	return $FilePath;
+	}
+
+
+## accumulate list of Lockit releasables
+sub Lockit_Releasables
+{
+	my ($ComponentSrcPath, $ResrcFile, $href, $Bitmaps, $lang);
+	my $Resrc;
+	my ($BaseResrc,$FileType);
+	my $LockitInfoPath;
+	my $LockitPath;
+	my %Files;
+
+	if (defined $ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} &&  ($ENV{ABLD_TOOLSMOD_COMPATIBILITY_MODE} eq 'alpha')) {
+		($ComponentSrcPath, $ResrcFile, $href, $Bitmaps, $lang) = @_;
+
+		$Resrc = basename($ResrcFile);
+		($BaseResrc,$FileType) = split(/\./, $Resrc);
+		Check_Epocroot();
+	
+		$LockitInfoPath = "$epocPath\\group\\$BaseResrc$lang.info";
+
+		$LockitPath = Setup_LockitPath($ComponentSrcPath, $BaseResrc, $FileType, "");
+		%Files = %$href;
+
+		if($FileType =~ /RSS|ACL|ABW|AIF|A[0-9]/i && $Bitmaps eq ""){
+			$LockitPath .= "\\$BaseResrc$lang.rpp";
+		}
+		else {
+			$LockitPath .= "\\$Bitmaps";
+		}
+
+	}
+	else {
+		($ComponentSrcPath, $ResrcFile, $href, $Bitmaps) = @_;
+
+		$Resrc = basename($ResrcFile);
+		($BaseResrc,$FileType) = split(/\./, $Resrc);
+		Check_Epocroot();
+		$LockitInfoPath = "$epocPath\\group\\$BaseResrc.info";
+
+		$LockitPath = Setup_LockitPath($ComponentSrcPath, $BaseResrc, $FileType);
+		%Files = %$href;
+
+		if($FileType =~ /RSS|ACL|ABW|AIF|A[0-9]/i && $Bitmaps eq ""){
+			$LockitPath .= "\\$BaseResrc.rpp";
+		}
+		else {
+			$LockitPath .= "\\$Bitmaps";
+		}
+	}
+
+	my %loggedFiles;
+	$loggedFiles{lc($_)} = 1 foreach keys (%Files);
+	
+	$Files{$LockitPath} = 1 if !($loggedFiles{lc($LockitPath)});
+	$Files{$LockitInfoPath} = 1 if !($loggedFiles{lc($LockitInfoPath)});
+	
+	return %Files;
+}
+
+sub Close_InfoFile ($)
+	{
+	my $FileToClose = $_[0];
+	close INFO;
+	}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/sym_lkup_util.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,257 @@
+#!/usr/bin/perl
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+use FindBin;		# for FindBin::Bin
+use Getopt::Long;
+
+BEGIN {
+# check user has a version of perl that will cope
+	require 5.005_03;
+# establish the path to the Perl libraries: currently the same directory as this script
+	$PerlLibPath = $FindBin::Bin;	# X:/epoc32/tools
+	if ($^O eq "MSWin32")
+	{
+		$PerlLibPath =~ s/\//\\/g;	# X:\epoc32\tools
+		$PerlLibPath .= "\\";
+	}
+}
+
+use lib $PerlLibPath;
+
+my $IgnoreExportDir = 0;
+my $ImportSymFile;
+my $CppFile;
+my $mapFile;
+my $SegmentContentSz = 0;
+my $nSyms = 0;
+my $nImports = 0;
+my %Symbols = ();
+my @Imports = ();
+
+# Version
+my $MajorVersion = 1;
+my $MinorVersion = 1;
+my $PatchVersion = 0;
+
+
+{
+	unless (GetOptions(\%Options, 'sym=s', 'o=s', 'map=s', 'ignore_export_dir')) {
+		exit 1;
+	}
+	$ImportSymFile = $Options{sym};
+	$CppFile = $Options{o};
+	$mapFile = $Options{map};
+	$IgnoreExportDir = $Options{ignore_export_dir};
+
+	unless($ImportSymFile)
+	{
+		print(
+			 "\n",
+			 "SYM_LKUP_UTIL symbol process tool V$MajorVersion.$MinorVersion.$PatchVersion\n",
+			 "\n",
+			 "options:\n",
+			 " -sym symbol file\n",
+			 " -o   output file\n",
+			 " -map  map file\n",
+			 "\n"
+		);
+		exit 1;
+	}
+
+	ReadSymFile() if $ImportSymFile;
+	ReadMapFile() if $mapFile;
+	
+	GenNamedSegment();
+}
+
+sub ReadMapFile() {
+	open FILE, $mapFile or die "Error :SymLookup: Cannot open map file $mapFile\n";
+
+	my $GlbSyms = 0;
+	while(<FILE>) {
+		if($_ =~ /Public Symbols/) {
+			$GlbSyms = 1;
+		}
+		elsif( !$GlbSyms ) {
+			next;
+		}
+		if($_ =~ /([0-9a-fA-F]{8})\s+(\S+)\s+_?(\S+)\s/){
+			$addr = $1;
+			$module = $2;
+			$name = $3;
+			if( defined $Symbols{$name} ) {
+				$Symbols{$name} = $addr;
+			}
+		}
+	}
+#	Remove symbols not found in map file
+	foreach my $sym (keys %Symbols){
+		if( !$Symbols{$sym} ){
+			delete $Symbols{$sym};
+		}
+	}
+
+}
+
+sub ReadSymFile() {
+	open FILE, $ImportSymFile or die "Error :SymLookup: Cannot open file $ImportSymFile\n";
+	
+	my $ImportDirSeen = 0;
+	my $ExportDirSeen = 0;
+	my $ExportNameTblSeen = 0;
+	my $numOfExportNames = 0;
+	my $nameCount = 0;
+	while (<FILE>) {
+# Ignore export table(s) if the flag '$IgnoreExportDir' is set. This flag is set for stddlls, as symbol listing 
+# is not required for them. The windows API GetProcAddr can be used directly. While for stdexe, the symbol names
+# are filtered out and then looked up in the map file for their addresses.
+
+		if($_ =~ /\*\*\* EXPORT DIRECTORY \*\*\*/){
+			next if($IgnoreExportDir);
+			$ExportDirSeen = 1;
+		}
+		elsif($_ =~ /\*\*\* Export Name Pointer Table \*\*\*/){
+			next if($IgnoreExportDir);
+			$ExportNameTblSeen = 1;
+		}
+		elsif($_ =~ /\*\*\* IMPORT DIRECTORY \*\*\*/) {
+			$ImportDirSeen = 1;
+		}
+
+		if($ExportDirSeen){
+			if($_ =~ /numberofnames\s+=\s+0x(\S+)/){
+				$numOfExportNames = hex($1);
+# Reset the flag once done with the export table
+				$ExportDirSeen = 0;
+			}
+		}
+		elsif($ExportNameTblSeen && $numOfExportNames){
+			if($_ =~ /\d+\s+0x[0-9a-fA-F]+\s+(\S+)/){
+				$Symbols{$1}=0;
+# Keep track of the symbols seen in "Export Name Pointer Table"
+				$nameCount++;
+			}
+			if($nameCount == $numOfExportNames){
+# Reset the flag once done with the name table
+				$ExportNameTblSeen = 0;
+			}
+		}
+		elsif($ImportDirSeen) {
+			if($_ =~ /^DLL name\s+=\s+\S+\s+\((\S+)\)/) {
+				my $dllname = $1;
+				push @Imports, $dllname;
+				$ImportDirSeen = 0;
+			}
+		}
+	}
+}
+
+sub GenNamedSegment() {
+
+	my $SegContents = "";
+	
+	&Header(\$SegContents);
+
+	&SymAddrTbl(\$SegContents);
+
+	&SymNames(\$SegContents);
+
+	&Footer(\$SegContents);
+
+	open OUTFILE, ">$CppFile" or die "Error :SymLookup:Cannot open file $CppFile\n";
+	print OUTFILE $SegContents;
+}
+
+sub Header(){
+	my $SegContentsRef = shift @_;
+	
+	$$SegContentsRef .= "\/\* $CppFile\n";
+	$$SegContentsRef .= " \* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).  All rights reserved.\n";
+	$$SegContentsRef .= " \* Makmake-generated source file for named symbol lookup\n";
+	$$SegContentsRef .= " \*\/\n";
+	$$SegContentsRef .= "#pragma data_seg(\".expdata\")";
+
+	$$SegContentsRef .= "\n\n";
+}
+
+sub Footer() {
+	my $SegContentsRef = shift @_;
+	$$SegContentsRef .= "\n#pragma data_seg()\n";
+	$$SegContentsRef .= "\n";
+}
+
+sub SymAddrTbl(){
+	my $SegContentsRef = shift @_;
+	$nSyms = keys %Symbols;
+	$nImports = @Imports;
+	$$SegContentsRef .= "int NSymbols = $nSyms;\n";
+	$$SegContentsRef .= "int NImports = $nImports;\n";
+
+	if(!$nSyms) {
+		return;
+	}
+	$$SegContentsRef .= "int addresses[] = {\n";
+	
+	foreach $key (sort keys %Symbols) {
+		if($Symbols{$key}){
+			$$SegContentsRef .= "\t0x".$Symbols{$key}.",\n";
+		}
+	}
+	$$SegContentsRef .= "};\n";
+}
+
+sub SymNames() {
+	if(!$nImports && !$nSyms){
+		return;
+	}
+	my $SegContentsRef = shift @_;
+	$$SegContentsRef .= "\nchar data[] = {\n";
+
+	my $symnames ;
+	my $colCnt ;
+	foreach $symnames (sort keys %Symbols) {
+		next if( $Symbols{$symnames} == 0);
+		my @chars = split(//,$symnames);
+		$$SegContentsRef .= "\t";
+		$colCnt =0;
+		foreach $aChar (@chars) {
+			if($colCnt >= 80) {
+				$$SegContentsRef .= "\\\n\t";
+				$colCnt = 0;
+			}
+			$$SegContentsRef .= "\'$aChar\',";
+			$colCnt += 4;
+		}
+		$$SegContentsRef .= "0,\n";
+	}
+
+	foreach my $dll (@Imports) {
+		my @chars = split(//,$dll);
+		$$SegContentsRef .= "\t";
+		$colCnt =0;
+		foreach $aChar (@chars) {
+			if($colCnt >= 80) {
+				$$SegContentsRef .= "\\\n\t";
+				$colCnt = 0;
+			}
+			$$SegContentsRef .= "\'$aChar\',";
+			$colCnt += 4;
+		}
+		$$SegContentsRef .= "0,\n";
+	}
+	$$SegContentsRef .= "\n};\n";
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/winutl.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,354 @@
+
+# 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:
+# this package does various ancillary things for windows modules
+# 
+#
+
+package Winutl;
+
+my $BaseAddress='';
+my @Win32LibList=();
+my $Win32Resrc='';
+my $CopyForStaticLinkage=0;
+my $Win32StdHeaders=0;
+my $MSVCVer=0;
+my $MSVCSubVer=0;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	Winutl_Help_Mmp
+
+	Winutl_DoMmp_Parse
+	Winutl_DoMmp
+
+	Winutl_BaseAddress
+	Winutl_Win32LibList
+	Winutl_Win32Resrc
+	Winutl_CopyForStaticLinkage
+	Winutl_Win32StdHeaders
+
+	Winutl_AdjustTargetPath
+
+	Winutl_MSVCVer
+	Winutl_MSVCSubVer
+
+	Winutl_CheckSourceMMPMetaData
+);
+
+use Genutl;
+use E32Variant;
+use CheckSource;
+use Pathutl;
+use Cwd;
+
+my %CheckSourceMMPMetaData;
+
+sub Winutl_Help_Mmp {
+# provide the help text for START <windows platforms> END blocks
+
+	print
+		"BASEADDRESS    [base address for dll loading]\n",
+		"WIN32_LIBRARY  [win32 libraries]\n",
+		"WIN32_RESOURCE  [win32 resource]\n",
+		"COPY_FOR_STATIC_LINKAGE   // copy dll from emulated Z drive\n",
+		"WIN32_HEADERS // instruct compiler to look into standard header directories\n",
+		"              // (implied by WIN32_LIBRARY)\n"
+	;
+}
+
+sub Winutl_DoMmp_Parse ($$) {
+	# takes reference to platform text and semicolon-separated list
+	# of compiler-specific include directories
+	my @PlatTxt=@{$_[0]};
+	my $CompilerIncPaths=$_[1];
+
+# process the START <windows platforms> END blocks
+
+	my $BaseTrg=&main::BaseTrg;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $MakeFilePath=&main::MakeFilePath;
+	my $MMPFILE=&main::MmpFile;
+
+	# set up START WINS ... END block module variables
+	my @MmpWarn=();
+	my $Line;
+	LINE: foreach $Line (@PlatTxt) {
+		my $LineInfo=shift @$Line;
+
+		$LineInfo =~ /^(.+)\((\d+)\)$/;
+		my $CurFile = $1;
+		my $LineNum = $2;
+		my $BldInfDir = cwd;
+		$BldInfDir =~ s/\//\\/g;
+		$BldInfDir =~ s/^\w+://;
+		$BldInfDir .= "\\";
+		
+		$_=shift @$Line;
+		
+		if (/^BASEADDRESS$/oi) {
+			if (@$Line) {
+				$BaseAddress=shift @$Line;
+				$BaseAddress=~s/X/x/o;
+				next LINE;
+			}
+			push @MmpWarn, "$LineInfo : No base address specified for keyword BASEADDRESS\n";
+			next LINE;
+		}
+		if (/^WIN32_LIBRARY$/oi) {
+			if (@$Line)
+				{
+				$Win32StdHeaders = 1;
+
+				foreach (@$Line)
+					{
+					if (/^\./)
+						{
+						# local - check for UNIX slash and physical consistency of file as it exists relative to the bld.inf
+						CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "WIN32_LIBRARY", $_, $LineNum, $CheckSource_PhysicalCheck, $BldInfDir);
+						}
+					else
+						{
+						# global - check for UNIX slash and assume that it must be lower case
+						CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "WIN32_LIBRARY", $_, $LineNum);
+						}
+					$_ = &Path_Norm($_);
+					push @Win32LibList, $_;
+					}
+				}
+			else
+				{
+				push @MmpWarn, "$LineInfo : No libraries specified for keyword WIN32_LIBRARY\n";
+				}
+			next LINE;
+		}
+		if (/^WIN32_RESOURCE$/oi) {
+			if (@$Line) {
+				$Win32Resrc=shift @$Line;
+
+				CheckSource_MetaData(%CheckSourceMMPMetaData, $CurFile, "WIN32_RESOURCE", $Win32Resrc, $LineNum, $CheckSource_PhysicalCheck);
+				$Win32Resrc = &Path_Norm($Win32Resrc);
+				
+				$Win32Resrc=&main::Path_MakeAbs($MMPFILE, $Win32Resrc);
+				next LINE;
+			}
+			push @MmpWarn, "$LineInfo : No resource specified for keyword WIN32_RESOURCE\n";
+			next LINE;
+		}
+		if (/^COPY_FOR_STATIC_LINKAGE$/oi) {
+			if ($BasicTrgType!~/^DLL$/oi) {
+				push @MmpWarn, "$LineInfo : COPY_FOR_STATIC_LINKAGE only applies to DLLs\n";
+				next LINE;
+			}
+			if (&main::TrgPath eq "") {
+				push @MmpWarn, "$LineInfo : COPY_FOR_STATIC_LINKAGE requires TARGETPATH\n";
+				next LINE;
+			}
+			$CopyForStaticLinkage=1;
+			next LINE;
+		}
+		if (/^WIN32_HEADERS$/oi) {
+			$Win32StdHeaders = 1;
+			next LINE;
+		}
+		
+		push @MmpWarn, "$LineInfo : Unrecognised Keyword \"$_\"\n";
+	}
+
+	undef $Line;
+	if (@MmpWarn) {
+		warn
+			"\nMMPFILE \"",$MMPFILE,"\"\n",
+			"START .. END BLOCK WARNINGS(S)\n",
+			@MmpWarn,
+			"\n"
+		;
+	}
+	undef @MmpWarn;
+
+	# if Win32 Libraries required - set the Windows standard include paths
+	if ($Win32StdHeaders || $Win32Resrc || &main::Plat eq 'TOOLS' || &main::Plat eq 'CWTOOLS'
+		|| &main::Plat eq 'TOOLS2')
+	{	# show where to find win32 libraries
+		# include env variable takes everything between ';', including spaces and '"', as part of path
+		my @StdIncPaths=split ';', $CompilerIncPaths;
+		my $path;
+		foreach $path (@StdIncPaths) {
+			$path =~ s-/-\\-go;	# for those working with UNIX shells
+			if ($path =~ /^\+/) {
+				# expand CodeWarrior "recursive" entries
+				$path =~ s-^\+--go;		# remove the + from the current entry
+				if (opendir DIR, $path) {
+					my @list = grep !/^\.\.?$/, readdir DIR;
+					closedir DIR;
+					foreach (@list) {
+						my $newpath="$path\\$_";
+						if (-d $newpath) {
+							push @StdIncPaths,"+$newpath";	# add subdirs for later expansion
+						}
+					}
+				}
+			}
+		}
+		&main::SetStdIncPaths(@StdIncPaths);
+		&main::AddPlatMacros('WIN32','_WINDOWS');
+	}
+}
+
+sub Winutl_DoMmp ($$) {
+	# takes reference to platform text and semicolon-separated list
+	# of compiler-specific include directories
+	my @PlatTxt=@{$_[0]};
+	my $CompilerIncPaths=$_[1];
+
+	my $Plat=&main::Plat;
+	if ($Plat ne "WINSCW" and $Plat ne "CWTOOLS" and $Plat ne "TOOLS2") {
+		#	check that we're using VC6 SP3
+		&Winutl_MSVCVer();
+	}
+
+	&Winutl_DoMmp_Parse(\@PlatTxt, $CompilerIncPaths);
+	
+	my $BaseTrg=&main::BaseTrg;
+	my $BasicTrgType=&main::BasicTrgType;
+	my $MakeFilePath=&main::MakeFilePath;
+	my $MMPFILE=&main::MmpFile;
+	my @UidList=&main::UidList;
+	
+	if ($BasicTrgType=~/^(EXE|DLL)$/oi) {
+		# create the UID source file
+		my $priority = "EPriorityForeground";
+		if (&main::ProcessPriority) {
+			$priority="EPriority".&main::ProcessPriority;
+		}
+
+		my $UidText=join(
+			"\n",
+			'// Makmake-generated uid source file',
+			'#include <e32cmn.h>',
+			'#pragma data_seg(".SYMBIAN")',
+			'__EMULATOR_IMAGE_HEADER2('
+		);
+		foreach (@UidList) {
+			$UidText.="$_,";
+		}
+		my $vstr = "0x".&Genutl_VersionToHexString(&main::Version);
+		my $vid = &main::VendorId;
+		if(!$vid) { $vid="0"; }
+		$UidText.="$priority,".(&main::CapabilityFlags)[0]."u,".(&main::CapabilityFlags)[1]."u,".&main::SecureId.",".$vid.",$vstr,";	# second capability word always 0 for now
+		if (&main::AllowDllData) {
+			$UidText.="1,";
+		} else {
+			$UidText.="0,";
+		}
+		chop $UidText;
+		$UidText.=")\n";
+		$UidText.="#pragma data_seg()\n";
+		unless (&main::Plat eq 'TOOLS' || &main::Plat eq 'CWTOOLS' || &main::Plat eq 'TOOLS2' ) {
+			&main::AddSrc("$MakeFilePath$BaseTrg.UID.CPP", $UidText);
+		};
+	}
+
+}
+
+sub Winutl_BaseAddress () {
+	$BaseAddress;
+}
+
+sub Winutl_Win32LibList () {
+	@Win32LibList;
+}
+
+sub Winutl_Win32Resrc () {
+	$Win32Resrc;
+}
+
+sub Winutl_CopyForStaticLinkage () {
+	$CopyForStaticLinkage;
+}
+
+sub Winutl_Win32StdHeaders () {
+	$Win32StdHeaders;
+}
+
+sub Winutl_AdjustTargetPath () {
+	my ($TrgPathRef) = @_;
+
+	if (&main::EPOCSecurePlatform) {
+
+		my $plan=1;
+		my @macros = &Variant_GetMacroList;
+		foreach my $macro (@macros) {
+			if ($macro =~ m/^SYMBIAN_IGNORE_BIN_TARGETPATH.*/) {
+				$plan = 2;
+				last;
+			}
+		}
+
+		if ($plan == 1) {
+			# Intermediate step: TARGETPATH => COPY_FOR_STATIC_LINKAGE
+			$CopyForStaticLinkage = 1 if ($$TrgPathRef ne "");
+		} else {
+			# Finally: Ignore TARGETPATH and COPY_FOR_STATIC_LINKAGE
+			# unless it's a subdir of sys\bin
+			if (&main::TrgPath !~ /^Z\\sys\\bin\\.+/i) {
+				$$TrgPathRef = "";
+				$CopyForStaticLinkage = 0;
+			}
+		}
+	}
+}
+
+sub Winutl_MSVCVer ($) {
+	my $platcommand=shift;
+	if(!defined $platcommand) {
+		$platcommand=0; }
+	open PIPE, "LINK.EXE 2>&1 |" or die "ERROR: Can't invoke LINK.EXE\n";
+	my $DoneCheck=0;
+	while (<PIPE>) {
+		unless ($DoneCheck) {
+			if (/^.+\s+Version\s+(\d)\.(\d{2})\.((\d{4})|(\d{5})(.\d{2}))\s*$/o) {
+				if (($1<6) or ($1==6 and $2<0) or ($1==6 and $2==0 and $3<8447)) {
+					warn "WARNING: Should install MSVC6 Service Pack 3\n";
+				}
+				$MSVCVer = $1;
+				$MSVCSubVer = $2;
+				$DoneCheck=1;
+			}
+		}
+	}
+	close PIPE;
+	# Do not throw any error when link.exe not present  while displaying
+	# a list of the supported platforms using bldmake plat command.
+	if (!$DoneCheck && !$platcommand) {
+		# Couldn't find version information? Might not have link.exe at all
+		die "ERROR: failed to find version information for LINK.EXE\n";
+	}
+
+	$MSVCVer;
+}
+
+sub Winutl_MSVCSubVer ($) {
+	my $platcommand=@_;
+	&Winutl_MSVCVer($platcommand);
+
+	$MSVCSubVer;
+}
+
+sub Winutl_CheckSourceMMPMetaData () {
+	%CheckSourceMMPMetaData;
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/cw_ide_test.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,418 @@
+#!perl
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Script to build specified MMP files with both command line and IDE, then
+# use EVALID to compare the results.
+# Inspired by "buildall.pl", written by Cuong Phan
+# 
+#
+
+use strict;
+use File::Basename;		# for fileparse()
+use File::Path;			# for mkpath
+use Cwd;				# for cwd
+use OLE;
+use Getopt::Long;
+
+sub Usage ($) 
+	{
+	my ($message) = @_;
+	print <<ENDHERESTRING;
+$message
+
+Usage : perl cw_ide_test.pl [-v] -f mmplist platform1 [platform2 ...]
+
+Builds specified MMP files with both the command line and the CodeWarrior IDE,
+storing the build products in zip files and comparing them with EVALID.
+The output can be summarised using scanlog.pl.
+
+All of the specified MMP files are build for all of the specified platforms.
+If -v is specified, the detailed build commands are included in the output.
+
+ENDHERESTRING
+
+	exit 1;
+	}
+
+my %Options=();
+GetOptions(\%Options, "v", "f=s");
+
+&Usage("No platforms specified") if (@ARGV < 1);
+&Usage("Must specify list of mmp files using -f") if (!defined($Options{"f"}));
+
+my @mmplist=();
+my $specifiedCWD;
+open FILELIST, "<$Options{f}" or &Usage("Cannot open $Options{f}");
+while (<FILELIST>)
+	{
+	$specifiedCWD = "";
+		
+	if (/#.*cwd:/i)
+		{
+		$specifiedCWD = $_;
+		$specifiedCWD =~ s/^.*cwd:/cwd:/i;
+		$specifiedCWD =~ s/\).*$//;
+		$specifiedCWD =~ s/\s*//g;
+		$specifiedCWD =~ s/\//\\/g;
+		$specifiedCWD .="?";
+		}
+		
+	s/#.*$//;		# remove comments
+	s/\s*$//;		# remove trailing ws
+	s/^\s*//;		# remove leading ws
+	s/\//\\/g;		# convert / to \
+	next if ($_ eq "");
+	push @mmplist, $specifiedCWD.$_;
+	}
+close FILELIST;
+
+&Usage("No MMP files?") if (@mmplist == 0);
+
+# create an instance of CodeWarrior
+my $CW = CreateObject OLE  "CodeWarrior.CodeWarriorApp";
+if (!defined($CW))
+	{
+	print "Failed to start CodeWarrior\n";
+	exit(1);
+	}
+
+# turn on autoflush, to get stdout in the right place...
+# These runes come from perlfaq5
+
+my $old_fh = select(STDOUT);
+$| = 1;
+select($old_fh);
+
+foreach my $mmpfile (@mmplist)
+	{
+	$specifiedCWD = "";
+
+	if ($mmpfile =~ /^cwd:/)
+		{
+		$specifiedCWD = $mmpfile;
+		$specifiedCWD =~ s/^cwd://;
+		$specifiedCWD =~ s/\?.*$//;
+		$mmpfile =~ s/^cwd:.*\?//;
+		}
+
+	if (!-f $mmpfile)
+		{
+		print "MISSING: $mmpfile\n";
+		next;
+		}
+	
+	foreach my $platform (@ARGV)
+		{
+		$platform = uc $platform;
+		my ($mmpname, $mmpdir, $mmpext) = fileparse($mmpfile,'\..*');
+		my $phasename = $mmpname."_".$platform;
+		
+		my $origdir = cwd;
+
+		if ($specifiedCWD)
+			{
+			print ("chdir $specifiedCWD\n");			
+			chdir ($specifiedCWD);
+
+			# Workaround for Base components, where GENEXEC.MKE needs to be executed to export the required headers for a build
+			do_system ("bldmake bldfiles");
+			do_system ("abld makefile $platform");
+			}
+		else
+			{
+			print ("chdir $mmpdir\n");
+			chdir ($mmpdir);
+			}
+
+		my $time = localtime;
+		print "===-------------------------------------------------\n";
+		print "=== $phasename\n";
+		print "===-------------------------------------------------\n";
+		print "=== $phasename started $time\n";
+
+		if ($specifiedCWD)
+			{
+			$mmpdir = "\\".$mmpdir;
+			}
+		else
+			{
+			$mmpdir = "";
+			}
+
+		&do_one_mmp_file($phasename, $mmpname, $platform, $mmpdir);
+
+		$time = localtime;
+		print "=== $phasename finished $time\n";
+
+		chdir($origdir);
+		print ("chdir $origdir\n");
+		}
+	}
+
+$CW->Quit(0);
+exit(0);
+
+sub do_system($)
+	{
+	my ($cmd) = @_;
+	print "    $cmd\n";
+	return system($cmd);
+	}
+
+sub zip_and_check($$$)
+	{
+	my ($zipname, $releaseref, $complain) = @_;
+	
+	unlink($zipname) if (-f $zipname);
+	
+	my @ziplist;
+	foreach (sort keys %$releaseref)
+		{
+		if (-f $_)
+			{
+			push @ziplist,$_;	# add to zip archive
+			}
+		else
+			{
+			print "MISSING: $_\n" if ($complain);
+			}
+		}
+	
+	if (scalar @ziplist ==0 && $complain)
+		{
+		print "Can't create empty archive $zipname\n";
+		return;
+		}
+	
+	# Make the non-empty archive
+	
+	open ZIP, "| zip -q $zipname -@";
+	print ZIP
+	 join("\n",@ziplist,"");
+	close ZIP;
+	print "Created $zipname\n";
+	}
+	
+sub do_one_mmp_file($$$)
+	{
+	my ($phasename, $mmpname, $platform, $mmpdir) = @_;
+
+	print "=== $phasename == $mmpname.mmp\n";
+
+	# use MAKMAKE to generate the makefile
+	# make CLEAN to remove any existing build results
+	# make ALL to build everything
+	# make WHAT to get the releaseables, as per abld.pl
+	# check the releaseables and zip up the ones which do exist
+	# make CLEAN again to get ready for the IDE build...
+		
+	my $makefile = "$mmpname.$platform";
+	my %allreleaseables=();		# complete list, for putting back afterwards
+	my %releaseables=();		# just things we expect the IDE to build
+	my %uncheckedreleaseables=();
+	my $makecmd = "make -s";
+	$makecmd = "make" if ($Options{"v"});
+	
+	unlink $makefile if (-f $makefile);
+	&do_system("perl -S makmake.pl $mmpdir$mmpname $platform");
+	return if (!-f $makefile);
+	
+	open PIPE,"make -s -r -f $makefile WHAT |";
+	while (<PIPE>) 
+		{
+		next if (/Nothing to be done for \S+\.$/o);
+#		releasables split on whitespace - quotes possible -stripped out
+		while (/("([^"\t\n\r\f]+)"|([^ "\t\n\r\f]+))/go) 
+			{
+			my $file = ($2 ? $2 : $3);
+			$allreleaseables{$file}=1;
+			next if ($file =~ /epoc32\\localisation\\/i);
+			next if ($file =~ /epoc32\\data/i && $platform =~ /winscw/i);
+			$releaseables{$file}=1;
+			}
+		}
+	close PIPE;
+	&zip_and_check("$mmpname.orig.$platform.zip", \%allreleaseables, 0);
+	
+	&do_system("$makecmd -r -f $makefile CLEAN");
+	&do_system("$makecmd -r -f $makefile ALL");
+	&zip_and_check("$mmpname.cmd.$platform.zip", \%releaseables, 1);
+
+	&do_system("$makecmd -r -f $makefile CLEAN");
+	
+	print "=== $phasename == $mmpname.mcp\n";
+
+	# Remove the remnants of previous projects
+	# use MAKMAKE to generate the importable .xml
+	# import the xml to create the .mcp
+	# build the relevant targets
+	# extract the contents of the "Errors & Warnings" window
+	# check against the commandline list of releasables, zip up the ones which exist
+	
+	my $currentdir = cwd;
+	$currentdir =~ s/\//\\/g;
+	my $xmlfile = "$currentdir\\$mmpname.xml";
+	my $mcpfile = "$currentdir\\$mmpname.mcp";
+	my $mcpdata = "$currentdir\\${mmpname}_Data";
+	
+	&do_system("rmdir /s/q $mcpdata") if (-d $mcpdata);
+	unlink $mcpfile if (-f $mcpfile);
+	unlink $xmlfile if (-f $xmlfile);
+
+	&do_system("perl -S makmake.pl $mmpdir$mmpname CW_IDE:$platform");
+	if (-f $xmlfile)
+		{
+		&fixup_XML($xmlfile) if ($Options{"v"});
+		my $project = $CW->ImportProject($xmlfile, $mcpfile, 'true');
+		if (defined($project))
+			{
+			my $success = &BuildTargets($project->Targets,$platform);
+			$project->Close();
+			return if (!$success);
+			&zip_and_check("$mmpname.ide.$platform.zip", \%releaseables, 1);
+			}
+		else
+			{
+			print "ERROR: failed to import $xmlfile\n";
+			return;
+			}
+		}
+	else
+		{
+		print "ERROR: failed to create $xmlfile\n";
+		return;
+		}
+
+	print "=== $phasename == $mmpname.evalid\n";
+
+	# remove & recreate a clean temporary directory for unzipping
+	# unzip the saved results of the cmd and ide builds
+	# use EVALID to compare the releaseables
+		
+	my $evaliddir = "c:\\temp\\evalid";
+	&do_system("rmdir /s/q $evaliddir") if (-d $evaliddir);
+	mkpath([$evaliddir]);
+	
+	if (   &do_system("unzip -q $mmpname.cmd.$platform.zip -d $evaliddir\\cmd")==0
+		&& &do_system("unzip -q $mmpname.ide.$platform.zip -d $evaliddir\\ide")==0)
+		{
+		open EVALID,"perl -S evalid.pl $evaliddir\\ide $evaliddir\\cmd -c |";
+		while (<EVALID>)
+			{
+			print $_ if (/^(PROBLEM|Failed)/);
+			print $_ if (/^OK/ && $Options{"v"});
+			if (/^FAILED/)
+				{
+				if (/\.map\t/i)
+					{
+					print "WARNING(S): $_";
+					}
+				else
+					{
+					print "FATAL ERROR(S): $_";
+					}
+				}
+			}
+		close EVALID;
+		}
+	else
+		{
+		print "FATAL ERROR(S): problems unpacking zip files\n";
+		}
+	&do_system("rmdir /s/q $evaliddir") if (-d $evaliddir);
+	
+	# Restore original files, if any
+	if (-e "$mmpname.orig.$platform.zip")
+		{
+		&do_system("unzip -q -o $mmpname.orig.$platform.zip -d \\");
+		}
+	}
+
+sub fixup_XML($)
+	{
+	my ($xmlfile) = @_;
+	open XML,"<$xmlfile" or return;
+	my @lines = <XML>;
+	close XML;
+	
+	foreach (@lines)
+		{
+		# Insist that build commands are logged to the output window, irrespective of CW version
+		s-<SETTING><NAME>LogMessages</NAME><VALUE>false</VALUE></SETTING>-<SETTING><NAME>LogMessages</NAME><VALUE>true</VALUE></SETTING>-;
+		s-<SETTING><NAME>ShowCommandLine</NAME><VALUE>false</VALUE></SETTING>-<SETTING><NAME>ShowCommandLine</NAME><VALUE>true</VALUE></SETTING>-;
+
+		# Remove generation of Browse info by Language Parser (temporary workaround for crashes in automated IDE builds)
+		s-<SETTING><NAME>BrowserGenerator</NAME><VALUE>2</VALUE></SETTING>-<SETTING><NAME>BrowserGenerator</NAME><VALUE>0</VALUE></SETTING>-;		
+		}
+		
+	open XML,">$xmlfile" or return;
+	print XML @lines;
+	close XML;
+	}
+	
+sub BuildTargets($$)
+	{
+	my ($targets,$platform) = @_;
+
+	for (my $item=0; $item<$targets->Count; $item++ ) 
+		{
+		my $target = $targets->Item($item);
+	    my $targetName = $target->name;
+	    # Skip platforms we aren't interested in...
+	    next if ($targetName !~ /$platform /i);
+
+		print "Building $targetName...\n";
+		     
+	    $target->RemoveObjectCode( 'true' );
+
+		my $buildMessages = $target->BuildAndWaitToComplete();
+		if (!defined($buildMessages))
+			{
+			printf "FATAL ERROR(S): build aborted? (%s)\n", $target->LastError();
+			return 0;
+			}
+			
+		my $messageList = $buildMessages->Informations;
+		&printMessages("",$messageList) if defined($messageList);
+		
+		my $warningCount = $buildMessages->WarningCount;
+		my $errorCount = $buildMessages->ErrorCount;    
+		print "Completed $targetName with $errorCount errors and $warningCount warnings\n";
+
+		if ($errorCount > 0)
+			{
+			$messageList = $buildMessages->Errors;
+			&printMessages("FATAL ERROR(S): ", $messageList);
+			}
+		if ($warningCount > 0)
+			{
+			$messageList = $buildMessages->Warnings;
+			&printMessages("WARNING: ", $messageList);
+			}
+		} 
+	return 1;
+	}
+
+sub	printMessages ($$)
+	{
+    my ($prefix,$messageList) = @_;
+
+	# traverse through the list of messages
+	for (my $item = 0; $item < ($messageList->Count); $item++)
+		{
+        my $message = $messageList->Item($item);
+		print $prefix,$message->MessageText,"\n";
+		}
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/a.cpp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#include "a.h"
+
+#ifdef ADEF
+int a = 1;
+#else
+int a = 0;
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/b.cpp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#include "b.h"
+
+#ifdef BDEF
+int b = 1;
+#else
+int b = 0;
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/featnames.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,5 @@
+NOEL
+JACK
+
+ADEF
+BDEF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/fred.dll	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1 @@
+fred DLL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/inc_jack/a.h	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifdef JACK
+int a_jack(int);
+#else
+int a_jill(int);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/inc_jack/b.h	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifdef JACK
+int b_jack(int);
+#else
+int b_jill(int);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/inc_noel/a.h	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifdef NOEL
+int a_noel(int);
+#else
+int a_xmas(int);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/inc_noel/b.h	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#ifdef NOEL
+int b_noel(int);
+#else
+int b_xmas(int);
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/jack.hrh	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#define JACK
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/jack2.hrh	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#define JACK
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/john.12345678901234567890123456789012.dll	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1 @@
+john DLL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/john.dll.vmap	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,3 @@
+FEATUREVARIANT
+12345678901234567890123456789012	myvar
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/noel.hrh	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+#define NOEL
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantmap/test.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,261 @@
+#
+# Copyright (c) 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:
+#
+
+# unit tests for featurevariantmap.pm
+
+use strict;
+use Test;
+use File::Basename;
+use File::Spec;
+use lib "../../e32util";	# run from e32toolp/test/featuervariantmap
+use lib "../e32util";		# run from e32toolp/test
+use featurevariantmap;
+use File::Copy;
+use Digest::MD5;
+
+# how many tests do we plan to run?
+BEGIN { plan tests => 56 }
+
+# where is the test data
+my $dir = File::Spec->rel2abs(dirname($0));
+print "# running in $dir\n";
+
+# Copy the features lists needed for this test to the right place
+mkdir("$ENV{EPOCROOT}epoc32/include/variant/featurelists/");
+unlink "$ENV{EPOCROOT}epoc32/include/variant/featurelists/featnames.txt";
+copy("$dir/featnames.txt", "$ENV{EPOCROOT}epoc32/include/variant/featurelists/featnames.txt");
+
+###############################################################################
+# tests for Find                                                              #
+###############################################################################
+
+# we wont find a non-existent file
+ok(featurevariantmap->Find("non-existant-file", "myvar"), "");
+
+# we will find a real file (with no vmap)
+ok(featurevariantmap->Find("$dir/fred.dll", "myvar"), "$dir/fred.dll");
+
+# we wont find a non-existent feature variant
+print "# expect an ERROR from this test\n";
+ok(featurevariantmap->Find("$dir/john.dll", "not-a-variant"), "");
+
+# we will find a real feature variant
+ok(featurevariantmap->Find("$dir/john.dll", "myvar"),
+   "$dir/john.12345678901234567890123456789012.dll");
+
+# the feature variant name should not depend on case
+ok(featurevariantmap->Find("$dir/john.dll", "MyVar"),
+   "$dir/john.12345678901234567890123456789012.dll");
+
+###############################################################################
+# tests for Save                                                              #
+###############################################################################
+
+# create a .vmap from scratch
+unlink("$dir/tony.dll.vmap"); 
+
+ok(! featurevariantmap->Save("$dir/tony.dll", 
+     "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "a_phone", "features_for_a"));
+
+ok(check("$dir/tony.dll.vmap", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","a_phone","features_for_a"));
+
+# add to an existing .vmap file
+ok(! featurevariantmap->Save("$dir/tony.dll", 
+     "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "b_phone", "features_for_b1"));
+
+ok(check("$dir/tony.dll.vmap", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","a_phone","features_for_a"));
+ok(check("$dir/tony.dll.vmap", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","b_phone","features_for_b1"));
+
+# change an entry in an existing .vmap file
+ok(! featurevariantmap->Save("$dir/tony.dll", 
+     "babababababababababababababababa", "b_phone", "features_for_b2"));
+
+ok(check("$dir/tony.dll.vmap", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","a_phone","features_for_a"));
+ok(check("$dir/tony.dll.vmap", "babababababababababababababababa","b_phone","features_for_b2"));
+
+# change with one case and check with another
+ok(! featurevariantmap->Save("$dir/tony.dll", 
+     "abbbbbbbbbbbbbbbbbbbbbbbbbbbbbba", "B_PhOnE", "features_for_b3"));
+
+ok(check("$dir/tony.dll.vmap", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","a_phone","features_for_a"));
+ok(check("$dir/tony.dll.vmap", "abbbbbbbbbbbbbbbbbbbbbbbbbbbbbba","b_phone","features_for_b3"));
+
+# add an entry and a hint to an existing .vmap file
+my @hints = ("FEATUREVARIANT");
+ok(! featurevariantmap->Save("$dir/tony.dll", 
+     "cccccccccccccccccccccccccccccccc", "c_phone", "features_for_c", \@hints));
+
+ok(check("$dir/tony.dll.vmap", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","a_phone","features_for_a"));
+ok(check("$dir/tony.dll.vmap", "abbbbbbbbbbbbbbbbbbbbbbbbbbbbbba","b_phone","features_for_b3"));
+ok(check("$dir/tony.dll.vmap", "cccccccccccccccccccccccccccccccc","c_phone","features_for_c"));
+ok(check("$dir/tony.dll.vmap", "FEATUREVARIANT"));
+
+###############################################################################
+# tests for Hash                                                              #
+###############################################################################
+
+# test the hash key for an invalid feature variant
+my @src = ("$dir/a.cpp", "$dir/b.cpp");
+my %var = ('NAME' => 'something', 'VALID' => 0);
+
+ok(featurevariantmap->Hash(\@src, \%var), "");
+ok(featurevariantmap->HashAndFeatures(\@src, \%var), "");
+
+# test the hash key for a valid feature variant with missing headers
+$var{'VALID'} = 1;
+ok(featurevariantmap->Hash(\@src, \%var), qr/^[0-9a-f]{32}$/);
+ok(CompareHashAndFeatures(featurevariantmap->HashAndFeatures(\@src, \%var)), 'ADEF=undefined,BDEF=undefined');
+
+# test the hash key for a working feature variant
+$var{'BUILD_INCLUDES'} = ["$dir/inc_jack"];
+my $h1 = featurevariantmap->Hash(\@src, \%var);
+ok($h1, qr/^[0-9a-f]{32}$/);
+ok(CompareHashAndFeatures(featurevariantmap->HashAndFeatures(\@src, \%var)), 'ADEF=undefined,BDEF=undefined,JACK=undefined');
+
+# test the hash key for a different working feature variant
+$var{'BUILD_INCLUDES'} = ["$dir/inc_noel", "$dir/inc_fake"];
+my $h2 = featurevariantmap->Hash(\@src, \%var);
+ok($h2, qr/^[0-9a-f]{32}$/);
+ok($h1 ne $h2);
+ok(CompareHashAndFeatures(featurevariantmap->HashAndFeatures(\@src, \%var)), 'ADEF=undefined,BDEF=undefined,NOEL=undefined');
+
+# test the hash key for a working feature variant with a pre-include
+$var{'PREINCLUDE'} = "$dir/jack.hrh";
+$var{'BUILD_INCLUDES'} = ["$dir/inc_jack"];
+my $h3 = featurevariantmap->Hash(\@src, \%var);
+ok($h3, qr/^[0-9a-f]{32}$/);
+ok($h3 ne $h2);
+ok($h3 ne $h1);
+ok(CompareHashAndFeatures(featurevariantmap->HashAndFeatures(\@src, \%var)), 'ADEF=undefined,BDEF=undefined,JACK=defined');
+
+# test that we get the same hash value when we should (jack2.hrh ~ jack.hrh)
+$var{'PREINCLUDE'} = "$dir/jack2.hrh";
+my $h3a = featurevariantmap->Hash(\@src, \%var);
+ok($h3a, $h3);
+ok(CompareHashAndFeatures(featurevariantmap->HashAndFeatures(\@src, \%var)), 'ADEF=undefined,BDEF=undefined,JACK=defined');
+
+# test the hash key for a different working feature variant with a pre-include
+$var{'PREINCLUDE'} = "$dir/noel.hrh";
+$var{'BUILD_INCLUDES'} = ["$dir/inc_noel"];
+my $h4 = featurevariantmap->Hash(\@src, \%var);
+ok($h4, qr/^[0-9a-f]{32}$/);
+ok($h4 ne $h3);
+ok($h4 ne $h2);
+ok($h4 ne $h1);
+ok(CompareHashAndFeatures(featurevariantmap->HashAndFeatures(\@src, \%var)), 'ADEF=undefined,BDEF=undefined,NOEL=defined');
+
+# test the hash key for a different working feature variant with extra macros
+$var{'PREINCLUDE'} = "$dir/noel.hrh";
+$var{'BUILD_INCLUDES'} = ["$dir/inc_noel"];
+$var{'MACROS'} = ["ADEF"];
+my $h5 = featurevariantmap->Hash(\@src, \%var);
+ok($h5, qr/^[0-9a-f]{32}$/);
+ok($h5 ne $h4);
+ok($h5 ne $h3);
+ok($h5 ne $h2);
+ok($h5 ne $h1);
+ok(CompareHashAndFeatures(featurevariantmap->HashAndFeatures(\@src, \%var)), 'ADEF=\'1\',BDEF=undefined,NOEL=defined');
+
+$var{'MACROS'} = ["ADEF", "BDEF"];
+my $h6 = featurevariantmap->Hash(\@src, \%var);
+ok($h6, qr/^[0-9a-f]{32}$/);
+ok($h6 ne $h5);
+ok($h6 ne $h4);
+ok($h6 ne $h3);
+ok($h6 ne $h2);
+ok($h6 ne $h1);
+ok(CompareHashAndFeatures(featurevariantmap->HashAndFeatures(\@src, \%var)), 'ADEF=\'1\',BDEF=\'1\',NOEL=defined');
+
+# test verbose mode
+$featurevariantmap::verbose = 1;
+print "# this test is verbose\n";
+my $h7 = featurevariantmap->Hash(\@src, \%var);
+ok($h7, $h6);
+print "# this test is verbose\n";
+ok(CompareHashAndFeatures(featurevariantmap->HashAndFeatures(\@src, \%var)), 'ADEF=\'1\',BDEF=\'1\',NOEL=defined');
+
+###############################################################################
+# END OF TESTS                                                                #
+###############################################################################
+
+# utility functions
+
+sub check
+{
+	my $file = shift;
+	my $arg1 = shift;
+	my $arg2 = shift;
+	my $feat = shift;
+	
+	if ($arg2)
+	{
+		return checkHash($file, $arg1, $arg2, $feat);
+	}
+	return checkHint($file, $arg1);
+}
+
+sub checkHash
+{
+	my $file = shift;
+	my $hash = shift;
+	my $name = shift;
+	my $feat = shift;
+	
+	open(FILE, $file) or return 0;
+	my $hit = 0;	# found hash with the right name
+	my $bad = 0;	# found hash with the wrong name
+	while (<FILE>)
+	{
+		if (/^$hash\s+(\w+)\s+$feat$/)
+		{
+			if (uc($1) eq uc($name))
+			{
+				$hit = 1;
+			}
+			else
+			{
+				$bad = 1;
+			}
+		}
+	}
+	close(FILE);
+	return ($hit && !$bad);
+}
+
+sub checkHint
+{
+	my $file = shift;
+	my $hint = shift;
+
+	open(FILE, $file) or return 0;
+	while (<FILE>)
+	{
+		if (/^$hint\s*$/)
+		{
+			close(FILE);
+			return 1;
+		}
+	}
+	close(FILE);
+	return 0;
+}
+
+# Check hash and feature list matches
+sub CompareHashAndFeatures
+{
+	return if !$_[0] || !$_[1];
+	return $_[1] if $_[0] eq Digest::MD5::md5_hex($_[1]);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantparser/a1.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,12 @@
+# A1.var
+
+VARIANT A1
+EXTENDS          groupA
+
+VIRTUAL
+
+BUILD_INCLUDE     append	 /epoc32/include/A1/build
+BUILD_INCLUDE   prepend 	/prepend/include/A1
+ROM_INCLUDE prepend /epoc32/include/A1/rom
+
+VARIANT_HRH /epoc32/include/e32std.h
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantparser/a2.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,9 @@
+VARIANT A2
+
+EXTENDS groupA
+VIRTUAL
+
+BUILD_INCLUDE set /epoc32/include/A2/build
+BUILD_INCLUDE append /epoc32/include/A2/build2
+ROM_INCLUDE set /epoc32/include/A2/rom
+VARIANT_HRH /epoc32/include/e32std.h
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantparser/b1a.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,9 @@
+# b1a.var
+
+EXTENDS A1
+VARIANT B1A
+BUILD_INCLUDE append epoc32\include\B1\build
+BUILD_INCLUDE prepend  /prepend/include/B1
+
+ROM_INCLUDE prepend /epoc32/include/B1/rom
+VARIANT_HRH \epoc32/include/e32cmn.inl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantparser/b1b.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,10 @@
+# B1b.var
+
+EXTENDS A1
+VARIANT B1B
+VIRTUAL
+
+BUILD_INCLUDE append /epoc32/include/B1/build
+BUILD_INCLUDE prepend  /prepend/include/B1
+
+ROM_INCLUDE prepend /epoc32/include/B1/rom
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantparser/b2.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,8 @@
+# B2.var
+
+EXTENDS A2
+VARIANT B2
+BUILD_INCLUDE append /epoc32/include/B1/build
+BUILD_INCLUDE prepend  /prepend/include/B1
+
+ROM_INCLUDE prepend /epoc32/include/B1/rom
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantparser/default.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,8 @@
+
+VIRTUAL
+
+VARIANT default      
+
+BUILD_INCLUDE set /epoc32/include/build
+ROM_INCLUDE set /epoc32/include/rom         
+VARIANT_HRH		\epoc32\include\variant\Symbian_OS.hrh
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantparser/groupa.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,13 @@
+VARIANT groupA
+EXTENDS default      
+
+# grouping node
+VIRTUAL
+
+# Add to parent paths
+BUILD_INCLUDE append /epoc32/include/groupA/build
+
+# Append ROM_INCLUDE to parent
+ROM_INCLUDE append /epoc32/include/groupA/rom
+
+VARIANT_HRH /epoc32/include/e32std.h
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/featurevariantparser/test.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,168 @@
+#
+# Copyright (c) 2007 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:
+#
+
+# Unit tests for Feature Variant Parser (featurevariantparser.pm)
+# Will only work with EPOCROOT = \, due to some hard coded paths in the VAR files
+# To use a custom EPOCROOT, update the VAR files to reflect the correct paths
+# This test script can either be called on its own, or run through the test harness under ../unittest.pl
+
+use strict;
+use Test;
+use lib "../../e32util";
+use lib "../e32util";
+use featurevariantparser;
+use File::Spec;
+use File::Basename;
+
+BEGIN { plan tests => 18 }
+
+# Current Working Directory
+my $dir = dirname($0);
+
+my @buildincludes;
+my $buildincs;
+my $romincs;
+my @romincludes;
+my @parentnodes;
+my $parents;
+my @childnodes;
+my $children;
+
+# Uncommenting the next line will enable verbose mode
+#$featurevariantparser::verbose=1;
+
+# Load first variant file
+my %variant1 = featurevariantparser->GetVariant( "default", "$dir" );
+
+#1
+print "\nCheck the NAME of the variant:\n";
+ok( 'default', $variant1{'NAME'} );
+
+#2
+print "\nCheck the FULL PATH:\n";
+ok( File::Spec->rel2abs("$dir\\default.var"), $variant1{'FULLPATH'} );
+
+#3
+print "\nCheck if variant is VALID:\n";
+ok( $variant1{'VALID'} );
+
+#4
+print "\nCheck if this is a VIRTUAL node:\n";
+ok( $variant1{'VIRTUAL'} );
+
+#5
+my $tmp = "$ENV{EPOCROOT}epoc32\\include\\variant\\Symbian_OS.hrh";
+print "\nTest the VARIANT_HRH:\n";
+ok( File::Spec->canonpath($tmp), $variant1{'VARIANT_HRH'} );
+
+#6
+print "\nTesting the BUILD_INCLUDES with 'append' keyword:\n";
+@buildincludes = ("$ENV{EPOCROOT}epoc32/include/build");
+$buildincs     = $variant1{'BUILD_INCLUDES'};
+ok( File::Spec->canonpath("@buildincludes"), "@$buildincs" );
+
+#7
+print "\nTesting the ROM_INCLUDES:\n";
+@romincludes = ("$ENV{EPOCROOT}epoc32\\include\\rom");
+$romincs     = $variant1{'ROM_INCLUDES'};
+ok( File::Spec->canonpath("@romincludes"), "@$romincs" );
+
+# Load Second Variant File
+my %variant2 = featurevariantparser->GetVariant( "a1", "$dir" );
+
+#8
+print "\nTesting PARENT NODES:\n";
+@parentnodes = ("groupA default");
+$parents     = $variant2{'PARENTS'};
+ok( "@parentnodes", "@$parents" );
+
+#9
+print "\nTesting CHILD NODES:\n";
+@childnodes = ( "b1a", "b1b" );
+$children = $variant2{'CHILDREN'};
+ok( "@childnodes", "@$children" );
+
+#10
+print "\nTesting BUILD_INCLUDES of a child variant with 'prepend' keyword:\n";
+@buildincludes = (
+    "$ENV{EPOCROOT}prepend/include/A1",
+    "$ENV{EPOCROOT}epoc32/include/build",
+    "$ENV{EPOCROOT}epoc32/include/groupA/build",
+    "$ENV{EPOCROOT}epoc32/include/A1/build"
+);
+$buildincs = $variant2{'BUILD_INCLUDES'};
+ok( File::Spec->canonpath("@buildincludes"), "@$buildincs" );
+
+#11
+print "\nTesting ROM_INCLUDES of a child variant:\n";
+@romincludes = (
+    "$ENV{EPOCROOT}epoc32/include/A1/rom",
+    "$ENV{EPOCROOT}epoc32/include/rom",
+    "$ENV{EPOCROOT}epoc32/include/groupA/rom"
+);
+$romincs = $variant2{'ROM_INCLUDES'};
+ok( File::Spec->canonpath("@romincludes"), "@$romincs" );
+
+
+#12
+print "\nTesting Invalid Variant file (Missing HRH location). Expect an error from this test\n";
+# Load third Variant File
+my %variant3 = featurevariantparser->GetVariant( "b2", "$dir" );
+ok( !$variant3{'VALID'} );
+
+#13
+my %info4 = featurevariantparser->GetVariant( "a2", "$dir" );
+print "\nTesting the BUILD_INCLUDES of a child node with 'set' keyword:\n";
+@buildincludes = (
+    "$ENV{EPOCROOT}epoc32/include/A2/build",
+    "$ENV{EPOCROOT}epoc32/include/A2/build2"
+);
+$buildincs = $info4{'BUILD_INCLUDES'};
+ok( File::Spec->canonpath("@buildincludes"), "@$buildincs" );
+
+#14 
+print "\nTesting for function which searches for default variant file in a given directory\n";
+ok(featurevariantparser->DefaultExists("$dir"));
+
+
+#15 
+print "\nTesting for function which searches for default variant file in the default directory\n";
+if ( -e "$ENV{EPOCROOT}epoc32/tools/variant/default.var" ) {
+	ok(featurevariantparser->DefaultExists());
+}
+else {
+	ok(!featurevariantparser->DefaultExists());
+}
+
+
+#16
+print "\nTesting GetBuildableFeatureVariants(). Ignore the generated errors\n";
+my @list =featurevariantparser->GetBuildableFeatureVariants($dir);
+my $validlist = "b1a";
+ok($list[0],$validlist);
+
+
+#17
+print "\nTesting ResolveFeatureVariant().Ignore the generated errors\n";
+my @list2 = featurevariantparser->ResolveFeatureVariant("default",$dir);
+my @validlist2 = ("b1a");
+ok(@list2,@validlist2);
+
+#18
+print "\nTesting GetValidVariant().Ignore the generated errors\n";
+my @list3 = featurevariantparser->GetValidVariants($dir);
+my @validlist3 = ("a1","a2","b1a","default","groupa");
+ok("@list3","@validlist3");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/fixeabidefs.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,561 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+
+use strict;
+use Getopt::Long;
+
+my $toolVersion = 1.0;
+my $RVCTVersion = 2.1;
+my $RVCTBuild = 416;
+my @redundantExportsRegEx = (qr/^_ZTI/, qr/^_ZTV/);
+
+
+# 1. Check arguments, output help etc.
+
+if (@ARGV == 0)
+	{
+	print (STDERR "\nFIXEABIDEFS.BAT - Version $toolVersion for RVCT$RVCTVersion b$RVCTBuild\n");
+
+	print STDERR << 'END_OF_HELP';
+
+Usage: fixeabidefs.bat [-analyse|-list|-update] build_log.log 
+
+Parses the output from build_log.log and locates all MAKEDEF errors where ARMV5 built
+object files do not include exports specified in the current, frozen, EABI .def file.
+Where this has occurred, the tool checks against an internal list to determine
+whether these are redundant exports that are no longer required.
+
+-analyse  Process MAKEDEF errors and warnings list .def files that cannot be updated by this tool.
+-list     Lists all .def files that will be updated by the tool.
+-update   Creates updated .def files with redundant exports removed.
+
+Updated .def files have redundant exports removed by "back-filling" from unfrozen exports
+flagged against the same .def file.  If no unfrozen exports are available, the "ABSENT"
+export placeholder is used to effectively remove the export, but maintain a degree of BC.
+
+NOTE: The tool assumes that the original build source layout is replicated on the drive
+where it is being executed.
+
+Redundant exports processed on the following regex:
+END_OF_HELP
+
+	foreach my $redundantExportRegEx (@redundantExportsRegEx)
+		{
+		print ("\t$redundantExportRegEx\n");
+		}
+
+	exit(1);
+	}
+
+my $list = 0;
+my $update = 0;
+my $analyse = 0;
+
+GetOptions ('list' => \$list, 'update' => \$update, 'analyse' => \$analyse);
+
+
+# 2. Parse the log and record the detail of all relevant MAKEDEF errors and warnings
+
+my $BUILD_LOG = $ARGV[0];
+open BUILD_LOG, "< $BUILD_LOG" or die "\nCan't read $BUILD_LOG!\n\n";
+
+my $line;
+my @buildLog;
+
+while ($line = <BUILD_LOG>)
+	{
+	push @buildLog, $line;
+	}
+
+close BUILD_LOG;
+
+my $defFile;
+my $export;
+my $processExport;
+my $variant;
+
+# All hashes keyed on fully pathed .def file
+my %impactedDefFiles;
+my %missingURELExports;
+my %missingUDEBExports;
+my %unfrozenURELExports;
+my %unfrozenUDEBExports;
+
+my $parseWarning = 0;
+my $parseError = 0;
+
+my @exports;
+
+
+# Scan the log and build up UREL and UDEB lists of unfrozen and missing exports
+
+foreach $line (@buildLog)
+	{
+	if (($line !~ /^  /))
+		{
+		if ($parseError)
+			{
+			$variant =~ /UREL/ ? push @{$missingURELExports{$defFile}}, [@exports] : push @{$missingUDEBExports{$defFile}}, [@exports];
+			$parseError = 0;
+			$impactedDefFiles{$defFile} = 1;
+			}
+		elsif ($parseWarning)
+			{
+			$variant =~ /UREL/ ? push @{$unfrozenURELExports{$defFile}}, [@exports] : push @{$unfrozenUDEBExports{$defFile}}, [@exports];
+			$parseWarning = 0;
+			$impactedDefFiles{$defFile} = 1;
+			}
+		
+		@exports = ();
+		}
+		
+	if ($line =~ /^  make.* CFG\=/)
+		{
+		$variant = $line;
+		$variant =~ s/^.*CFG\=//;
+		$variant =~ s/ .*$//;
+		$variant =~ s/\s//g;
+		next;
+		}
+		
+	if ($line =~ /MAKEDEF WARNING:.*not yet Frozen in/)
+		{			
+		$parseError = 0;
+		$parseWarning = 1;
+
+		$defFile = $line;
+		$defFile =~ s/^.*not yet Frozen in//;
+		$defFile =~ s/:$//;
+		$defFile =~ s/\s//g;
+		$defFile = lc $defFile;
+		next;
+		}
+	
+	if ($line =~ /MAKEDEF ERROR:/)
+		{
+		$parseError = 1;
+		$parseWarning = 0;
+		next;
+		}
+
+	if (($line =~ /^  /) && ($parseError || $parseWarning))
+		{			
+		$export = $line;
+		$export =~ s/^.* : //;
+		$export =~ s/ .*$//;
+		$export =~ s/\s//g;
+
+		if ($parseError)
+			{
+			$defFile = $line;
+			$defFile =~ s/\(.*$//;
+			$defFile =~ s/\s//g;
+			$defFile = lc $defFile;
+			}
+
+		push @exports, $export;
+		
+		next;
+		}
+	}
+
+
+my %validDefFiles = %impactedDefFiles;
+
+my %missingExportDifferences;
+my %unfrozenExportDifferences;
+
+my %sharedDifferences;
+
+my $redundantExportRegEx;
+my %invalidExports;
+my $validExport;
+
+my $URELelements;
+my $UDEBelements;
+my $index1;
+my $index2;
+
+foreach $defFile (sort keys %impactedDefFiles)
+	{
+	if ($missingURELExports{$defFile})
+		{			
+		$URELelements = @{$missingURELExports{$defFile}};
+		$UDEBelements = @{$missingUDEBExports{$defFile}};
+
+		for ($index1 = 0; $index1 < $URELelements; $index1++)
+			{
+			foreach $export (@{@{$missingURELExports{$defFile}}[$index1]})
+				{
+				for ($index2 = 0; $index2 < $UDEBelements; $index2++)
+					{
+					if (!grep (/$export/, @{@{$missingUDEBExports{$defFile}}[$index2]}))
+						{
+						if (!$index1 && !$index2)
+							{
+							$missingExportDifferences{$defFile} = 1;
+							}
+						else
+							{
+							$sharedDifferences{$defFile} = 1;
+							}
+
+						delete $validDefFiles{$defFile};
+						}
+					}
+
+				$validExport = 0;
+			
+				foreach $redundantExportRegEx (@redundantExportsRegEx)
+					{
+					if ($export =~ /$redundantExportRegEx/)
+						{
+						$validExport = 1;
+						}
+					}
+
+				if (!$validExport)
+					{
+					${$invalidExports{$defFile}}{$export} = 1;
+					delete $validDefFiles{$defFile};
+					}
+				}
+			}
+
+		for ($index1 = 0; $index1 < $URELelements; $index1++)
+			{
+			foreach $export (@{@{$missingUDEBExports{$defFile}}[$index1]})
+				{
+				for ($index2 = 0; $index2 < $URELelements; $index2++)
+					{
+					if (!grep (/$export/, @{@{$missingURELExports{$defFile}}[$index2]}))
+						{
+						if (!$index1 && !$index2)
+							{
+							$missingExportDifferences{$defFile} = 1;
+							}
+						else
+							{
+							$sharedDifferences{$defFile} = 1;
+							}
+							
+						delete $validDefFiles{$defFile};
+						}
+					}
+
+				$validExport = 0;
+			
+				foreach $redundantExportRegEx (@redundantExportsRegEx)
+					{
+					if ($export =~ /$redundantExportRegEx/)
+						{
+						$validExport = 1;
+						}
+					}
+
+				if (!$validExport)
+					{
+					${$invalidExports{$defFile}}{$export} = 1;
+					delete $validDefFiles{$defFile};
+					}
+				}
+			}
+		}
+
+	if (!$unfrozenURELExports{$defFile} && $unfrozenUDEBExports{$defFile})
+		{
+		$unfrozenExportDifferences{$defFile}  = 1;
+		}
+	elsif ($unfrozenURELExports{$defFile})
+		{
+		$URELelements = @{$unfrozenURELExports{$defFile}};
+		$UDEBelements = @{$unfrozenUDEBExports{$defFile}};
+
+		for ($index1 = 0; $index1 < $URELelements; $index1++)
+			{
+			foreach $export (@{@{$unfrozenURELExports{$defFile}}[$index1]})
+				{
+				for ($index2 = 0; $index2 < $UDEBelements; $index2++)
+					{
+					if (!grep (/$export/, @{@{$unfrozenUDEBExports{$defFile}}[$index2]}))
+						{
+						if (!$index1 && !$index2)
+							{
+							$unfrozenExportDifferences{$defFile} = 1;
+							}
+						else
+							{
+							delete $validDefFiles{$defFile};
+							$sharedDifferences{$defFile} = 1;
+							}
+						}
+					}
+				}
+			}
+
+		for ($index1 = 0; $index1 < $URELelements; $index1++)
+			{
+			foreach $export (@{@{$unfrozenUDEBExports{$defFile}}[$index1]})
+				{
+				for ($index2 = 0; $index2 < $URELelements; $index2++)
+					{
+					if (!grep (/$export/, @{@{$unfrozenURELExports{$defFile}}[$index2]}))
+						{
+						if (!$index1 && !$index2)
+							{
+							$unfrozenExportDifferences{$defFile} = 1;
+							}
+						else
+							{
+							delete $validDefFiles{$defFile};
+							$sharedDifferences{$defFile} = 1;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+if ($analyse)
+	{
+	if (%missingExportDifferences)
+		{
+		print ("\nThe following .def files differ in the number of missing exports between UREL and UDEB builds.\n");
+		print ("These files will not be treated by this tool.\n\n");
+		
+		foreach $defFile (sort keys %missingExportDifferences)
+			{
+			print ("\t$defFile\n");
+			}
+		}
+
+	if (%unfrozenExportDifferences)
+		{	
+		print ("\nThe following .def files differ in the number of unfrozen exports between UREL and UDEB builds.\n");
+		print ("These files will be or were back-filled with regard to any UREL unfrozen exports available.");
+		print ("If no UREL unfrozen exports are available, the classes in question have to be marked non-sharable.\n\n");
+				
+		foreach $defFile (sort keys %unfrozenExportDifferences)
+			{
+			print ("\t$defFile\n");
+			}
+		}
+
+	if (%sharedDifferences)
+		{
+		print ("\nThe following .def files are shared between multiple components, and differ in exports\n");
+		print ("between either UDEB or UREL builds, or between the build of the components from which they are used.\n");
+		print ("These files will not be treated by this tool.\n\n");
+		
+		foreach $defFile (sort keys %sharedDifferences)
+			{
+			print ("\t$defFile\n");
+			}
+		}
+
+	if (%invalidExports)
+		{
+		print ("\nThe following .def files contain missing exports that cannot be resolved by this tool.\n");
+
+		foreach $defFile (sort keys %invalidExports)
+			{
+			print ("\n\t$defFile\n");
+
+			foreach $export (sort keys %{$invalidExports{$defFile}})
+				{
+				print ("\t\t$export\n");
+				}
+			}
+		}
+
+	if (!%missingExportDifferences && !%unfrozenExportDifferences && !%sharedDifferences && !%invalidExports)
+		{
+		print ("\nAll MAKEDEF ERRORs and WARNINGs in the specified log can be treated by this tool.\n");
+		}
+	}
+
+
+if ($list)
+	{
+	foreach $defFile (sort keys %validDefFiles)
+		{
+		print ("$defFile\n");
+		}
+	}
+
+
+if ($update)
+	{
+	my %updatedDefFiles;
+	my $missingExport;
+	my $unfrozenExport;
+
+	foreach $defFile (keys %validDefFiles)
+		{
+		if (!open DEF_FILE, "< $defFile")
+			{
+			print "Can't read $defFile!\n";
+			next;
+			}
+
+		while ($line = <DEF_FILE>)
+		 	{
+		 		
+# Either Back-fill or make 'ABSENT' any missing exports
+
+			if ($missingURELExports{$defFile})
+				{
+				foreach $missingExport (@{@{$missingURELExports{$defFile}}[0]})
+					{
+					if ($line =~ /$missingExport/)
+						{
+						$unfrozenExport = "";
+
+						if ($unfrozenURELExports{$defFile})
+							{
+							$unfrozenExport = pop @{@{$unfrozenURELExports{$defFile}}[0]};
+							}
+
+						if ($unfrozenExport)
+							{
+							$line =~ s/$missingExport/$unfrozenExport/;
+
+							# If there's an existing comment section, then update it appropriately
+
+							my $commentUpdate = '';
+					
+							if ($unfrozenExport =~ /^_ZTV/)
+								{
+								$commentUpdate = '; #<VT>#';
+								}
+							elsif ($unfrozenExport =~ /^_ZTI/)
+								{
+								$commentUpdate = '; #<TI>#';
+								}
+					
+							$line =~ s/;.*$/$commentUpdate/;
+							}
+						else
+							{
+							if ($line =~ / \;/)
+								{
+								$line =~ s/ \;/ ABSENT \;/;
+								}
+							else
+								{
+								$line.= ' ABSENT';
+								}
+							}
+
+						$line .= "\n" unless ($line =~ /\n$/);
+							
+						last;
+						}
+					}
+			 	}
+
+			push (@{$updatedDefFiles{$defFile}}, $line);
+			}
+		close DEF_FILE;
+		}
+
+
+# Resolve any remaining unfrozen exports in the standard way
+
+	my $lastExportIndex;
+	my $lastExportOrdinal;
+
+	foreach $defFile (keys %updatedDefFiles)
+		{
+		if ($unfrozenURELExports{$defFile} && @{@{$unfrozenURELExports{$defFile}}[0]})
+			{
+			$lastExportIndex = @{$updatedDefFiles{$defFile}}-1;
+
+			while (@{$updatedDefFiles{$defFile}}[$lastExportIndex] =~ /^\s$/)
+				{
+				pop @{$updatedDefFiles{$defFile}};
+				$lastExportIndex--;
+				}
+
+			@{$updatedDefFiles{$defFile}}[$lastExportIndex] .= "\n" unless (@{$updatedDefFiles{$defFile}}[$lastExportIndex] =~ /\n$/);
+
+			$lastExportOrdinal = @{$updatedDefFiles{$defFile}}[$lastExportIndex];
+			$lastExportOrdinal =~ s/^.*@\s+//;
+			$lastExportOrdinal =~ s/ .*$//;
+			$lastExportOrdinal =~ s/\s//g;
+
+			foreach $unfrozenExport (@{@{$unfrozenURELExports{$defFile}}[0]})
+				{
+				$lastExportOrdinal++;
+
+				my $comment = '';
+		
+				if ($unfrozenExport =~ /^_ZTV/)
+					{
+					$comment = ' ; #<VT>#';
+					}
+				elsif ($unfrozenExport =~ /^_ZTI/)
+					{
+					$comment = ' ; #<TI>#';
+					}
+				
+				push (@{$updatedDefFiles{$defFile}}, "\t$unfrozenExport @ $lastExportOrdinal NONAME$comment\n");
+				}
+			
+			push (@{$updatedDefFiles{$defFile}}, "\n");
+			}
+		}
+
+
+# Create the new .def files
+
+	foreach $defFile (sort keys %updatedDefFiles)
+		{		
+		if (!open NEW_DEF_FILE, ">$defFile")
+			{
+			print ("ERROR : Can\'t create \"$defFile\"\n");
+			next;
+			}
+
+		foreach $line (@{$updatedDefFiles{$defFile}})
+			{
+			print (NEW_DEF_FILE $line);
+			}
+
+		close NEW_DEF_FILE;
+
+		print ("Created : \"$defFile\"\n");
+		}
+
+	}
+
+
+__END__
+:endofperl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/mmp_testlist.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,133 @@
+# List of MMP files which provide examples of all MMP features
+#
+# This list is for use in short regression tests. It should be
+# regularly processed with mmpscan.pl -f mmp_testlist.txt to
+# ensure that the MMP files still exist and still cover everything.
+
+# wins/winsgui.mmp gets a lot of things
+src/cedar/generic/base/wins/winsgui.mmp											# 					(WINSCW only)
+
+# TARGETTYPE  
+# Need two where emulator and target device don't overlap, e.g. VAR
+#
+##src/common/generic/base/e32/kernel/ekll.mmp									#KLIB
+##src/common/generic/base/e32/euser/edll.mmp									#LIB
+
+src/common/generic/graphics/wserv/group/ANIMDLL.MMP								#ANI
+src/common/generic/app-framework/clock/group/CLOCKA.MMP
+src/common/generic/comms-infras/nifman/group/cs_daemon.mmp						#ECOMIIC
+src/common/generic/app-services/worldserver/group/WorldServer.mmp				#EPOCEXE
+src/common/generic/app-engines/cntmodel/cntsrv/CNTSRV.MMP
+src/cedar/generic/base/f32test/group/t_dirs.mmp									#EXE
+src/common/techview/misc/cctlcolscheme/group/CCtlColScheme.mmp
+src/common/techview/toolkit/shell/group/SHELL.MMP
+src/cedar/generic/base/f32/group/efile.mmp										#EFILE
+src/cedar/generic/base/f32/group/efat.mmp										#FSY				(WINSCW only)
+src/cedar/generic/base/f32/group/elffs.mmp
+src/cedar/generic/base/e32/euser/emulator.mmp									#KDLL				(WINSCW only)
+src/cedar/generic/base/omap/h2/fpga.mmp											#					(not WINSCW)
+src/cedar/generic/base/e32/kernel/edev.mmp										#KLIB
+src/cedar/generic/base/e32/kernel/evar.mmp
+src/cedar/generic/base/e32test/group/d_ldd.mmp									#LDD
+src/common/generic/comms-infras/rootserver/group/bindmgr.mmp					#LIB
+src/common/generic/syslibs/stdlib/BMMP/ECRT0.MMP
+src/common/generic/Multimedia/MMF/MMPFiles/Recognizer/RecMmf.mmp				#MDL
+src/common/generic/app-framework/emime/rec/RECTXT.MMP
+src/common/techview/networking/agentnotifier/group/agentnotifier.mmp			#NOTIFIER2
+src/common/techview/Apps/secui/secdlg/secdlg.mmp
+src/cedar/generic/base/wins/dasnwins.mmp										#PDD 				(WINSCW only)
+src/cedar/generic/base/lubbock/dasnla.mmp										# 					(not WINSCW)
+src/common/generic/graphics/printdrv/group/GENERAL.MMP							#PDL
+src/common/generic/graphics/pdrstore/tps/PRINTDRV.MMP
+src/common/generic/app-engines/convert/WORD/WORD.MMP							#PLUGIN
+src/common/generic/app-services/chtmltocrtconv/group/CHtmlToCrtConverter.mmp
+src/common/generic/j2me/misc/recog/build/MIDP2RecognizerRdl.mmp
+src/cedar/generic/base/e32test/group/textnotifier2.mmp							#TEXTNOTIFIER2
+src/common/generic/networking/dialog/agentnotifier/group/agentshellnotifier.mmp
+src/cedar/generic/base/wins/vwins.mmp											#VAR - emulator		(WINSCW only) winmm.lib
+src/cedar/generic/base/lubbock/vcotla.mmp										#VAR - target		(not WINSCW)
+src/common/generic/syslibs/ecom/ongoing/Framework/MMPFiles/ecomexample12.mmp    #PLUGIN3
+
+# ASSPLIBRARY
+# - removed.  Cedar builds are ASSP generic.
+
+# ASSPABI
+# - none
+
+# COPY_FOR_STATIC_LINKAGE
+src/common/generic/syslibs/pwrcli/group/shutdownsrv.mmp
+src/common/generic/syslibs/bafl/group/Baksrv.mmp
+
+# DEBUG_LIBRARY
+src/common/generic/app-framework/cone/group/CONE.MMP
+src/common/techview/toolkit/eikstd/console/CONSOLE.MMP
+
+# EPOCALLDLLENTRYPOINTS
+# - none
+
+# EPOCFIXEDPROCESS
+src/cedar/generic/base/e32test/group/cpumeter.mmp								# 					(not WINSCW)
+src/cedar/generic/base/e32test/group/t_semutx2.mmp
+
+# EPOCHEAPSIZE
+src/cedar/generic/base/e32test/group/t_ipccpy.mmp
+
+# EPOCPROCESSPRIORITY
+src/cedar/generic/base/e32test/group/crash.mmp
+src/common/techview/MessagingUi/msginit/Group/MsgInit.MMP
+
+# EXPORTLIBRARY
+src/cedar/generic/base/integrator/logic/lmxx600/exvarl1.mmp						#					(not WINSCW)
+
+# EXPORTUNFROZEN
+src/common/generic/app-framework/form/test/ttextview.mmp
+src/common/generic/telephony/mmtsy/test/TS_Sms/TS_sms.mmp
+
+# FIRSTLIB
+src/cedar/generic/base/e32/euser/epoc.mmp										# 					(WINSCW only)
+src/cedar/generic/base/e32/kernel/ekern.mmp										#					(not WINSCW, cwd:src/cedar/generic/base/lubbock)
+src/cedar/generic/base/e32/kernel/ekern.mmp										#					(WINSCW only, cwd:src/cedar/generic/base/wins)
+
+# MCW/MCL
+src/common/techview/CommsUI/bluetoothui/BTSharedUI/BTSharedUI.mmp
+
+# NOEXPORTLIBRARY
+src/cedar/generic/base/lubbock/hal/hal.mmp										#					(not WINSCW, cwd:src/cedar/generic/base/lubbock)
+src/cedar/generic/base/wins/hal/hal.mmp											#					(WINSCW only, cwd:src/cedar/generic/base/wins)
+src/cedar/generic/base/cotulla/dma.mmp											# 					(not WINSCW, cwd:src/cedar/generic/base/lubbock)
+src/cedar/generic/base/integrator/integratorap/kaintap.mmp						# 					(not WINSCW, cwd:src/cedar/generic/base/integrator/core/cm1136)
+
+# OPTION
+src/cedar/generic/base/e32test/group/t_lex.mmp
+
+# SID
+src/cedar/generic/base/e32test/group/t_ver2_1_0.mmp								# 					(not WINSCW)
+src/cedar/generic/base/e32test/group/t_ver2_1_1.mmp								# 					(not WINSCW)
+
+# SRCDBG
+src/common/generic/app-services/versit/tsrc/TBugFix.MMP
+src/common/generic/application-protocols/http/group/httpclient.mmp
+
+# START BITMAP
+src/common/techview/toolkit/extras/group/extras.mmp
+
+# START RESOURCE
+src/common/generic/app-engines/sheng/group/SHENG.MMP
+
+# STATICLIBRARY
+src/common/generic/syslibs/stdlib/TSTLIB/THELLO.MMP
+src/common/generic/syslibs/stdlib/TSTLIB/FINGER.MMP
+
+# STRICTDEPEND
+src/cedar/generic/base/f32/group/estart.mmp
+
+# WIN32_HEADERS
+src/cedar/generic/base/e32/kernel/exstart.mmp
+src/cedar/generic/base/e32utils/d_exc/minkda.mmp
+
+
+# Miscellaneous
+# Assorted files which have caused problems in the past
+
+# - baseaddress for EXE
+src/common/generic/graphics/fbserv/group/FBSERV.MMP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/mmpscan.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,253 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Perl script to scan tree looking for MMP files with particular keywords
+# 
+#
+
+use strict;
+use File::Find;			# for find()
+use File::Basename;		# for fileparse()
+use Cwd;				# for getcwd()
+
+use Getopt::Long;
+my %Options=();
+GetOptions(\%Options, "f=s");
+
+my @patterns = (
+
+'START\s+BITMAP.*\.MCL',
+'START\s+BITMAP.*\.MBW',
+'START\s+BITMAP',
+'START\s+RESOURCE',
+'ALWAYS_BUILD_AS_ARM',
+'ASSPABI',
+'ASSPEXPORTS',
+'ASSPLIBRARY',
+'CAPABILITY',
+'COMPRESSTARGET',
+'DEFFILE',
+'DOCUMENT',
+'EPOCALLOWDLLDATA',
+'EPOCCALLDLLENTRYPOINTS',
+'EPOCDATALINKADDRESS',
+'EPOCFIXEDPROCESS',
+'EPOCHEAPSIZE',
+'EPOCPROCESSPRIORITY',
+'EPOCSTACKSIZE',
+'EXPORTLIBRARY',
+'EXPORTUNFROZEN',
+'FIRSTLIB',
+'LANG',
+# 'LIBRARY',
+'DEBUGLIBRARY',
+'LINKAS',
+'MACRO\s+__SECURE_API__',
+'MACRO',
+'NOCOMPRESSTARGET',
+'NOEXPORTLIBRARY',
+'NOSTRICTDEF',
+'OPTION',
+'RAMTARGET',
+'RESOURCE',
+'ROMTARGET',
+'SECUREID',
+'SRCDBG',
+# 'SOURCE',
+# 'SOURCEPATH',
+'STATICLIBRARY',
+'STRICTDEPEND',
+'SYSTEMINCLUDE',
+'SYSTEMRESOURCE',
+# 'TARGET',
+'TARGETPATH',
+'TARGETTYPE\s+ANI',
+'TARGETTYPE\s+APP',
+'TARGETTYPE\s+CTL',
+'TARGETTYPE\s+DLL',
+'TARGETTYPE\s+ECOMIIC',
+'TARGETTYPE\s+EPOCEXE',
+'TARGETTYPE\s+EXEDLL',
+'TARGETTYPE\s+EXEXP',		# must precede TARGETTYPE EXE
+'TARGETTYPE\s+EXE',
+'TARGETTYPE\s+FSY',
+'TARGETTYPE\s+IMPLIB',
+'TARGETTYPE\s+KDLL',
+'TARGETTYPE\s+KEXT',
+'TARGETTYPE\s+KLIB',
+'TARGETTYPE\s+LDD',
+'TARGETTYPE\s+LIB',
+'TARGETTYPE\s+MDA',
+'TARGETTYPE\s+MDL',
+'TARGETTYPE\s+NOTIFIER2',
+'TARGETTYPE\s+NOTIFIER',
+'TARGETTYPE\s+PDD',
+'TARGETTYPE\s+PDL',
+'TARGETTYPE\s+PLUGIN',
+'TARGETTYPE\s+PLUGIN3',
+'TARGETTYPE\s+RDL',
+'TARGETTYPE\s+TEXTNOTIFIER2',
+'TARGETTYPE\s+VAR',
+'UID',
+'USERINCLUDE',
+'VENDORID',
+'VERSION',
+
+# from START WINS ... END
+'START\s+WINS',
+'BASEADDRESS',
+'WIN32_LIBRARY',
+'WIN32_RESOURCE',
+'COPY_FOR_STATIC_LINKAGE',
+'WIN32_HEADERS',
+
+# count some unmatched things
+'AIF',
+'SOURCE\s.*\.CIA',			# CIA files
+'TARGETTYPE\s+(other)?',	# a trick to catch unsupported targettypes
+'TARGET\s.*DUMMY',			# who doesn't really want a TARGET
+'#IF',
+'#INCLUDE_FAILURE',			# unresolved #include directives
+'#INCLUDE',
+
+);
+
+my %instances = ();
+my %patternsbyfile = ();
+my $mmpcount = 0;
+
+sub read_mmp($$$)
+	{
+	my ($top,$name,$lines) =@_;
+	open MMP, "<$name" or print "error: $name $top\n" and return 0;
+	my @mmplines=<MMP>;
+	close MMP;
+	
+	foreach my $line (@mmplines)
+		{
+		push @$lines, $line;
+		if ($line =~/^\#include\s+(\"|\<)([^"<]+)(\"|\>)/)
+			{
+			my $currentdir = getcwd();
+			my $includename = $2;
+			if (-f $2)
+				{
+				# name exists relative to current directory
+				}
+			elsif (-f "$ENV{EPOCROOT}epoc32/include/$includename")
+				{
+				$includename = "$ENV{EPOCROOT}epoc32/include/$includename";
+				}
+			else
+				{
+				print "Can't locate $2 from $currentdir/$name $top\n";
+				push @$lines, "#INCLUDE_FAILURE";
+				next;
+				}
+			my ($newname, $newdir, $newext) = fileparse($includename, '\..*');
+			chdir($newdir);
+			read_mmp("from $name $top", "$newname$newext", $lines);
+			chdir($currentdir);
+			}
+		}
+	return 1;
+	}
+	
+sub mmpgrep 
+	{
+	my $fullname = $File::Find::name;
+	return if (defined($patternsbyfile{$fullname}));
+
+	my ($name,$dir,$ext) = fileparse($fullname,'\..*');
+	return unless (lc($ext) eq '.mmp');
+	
+	my %found = ();
+	my @lines = ();
+	return if (read_mmp("", "$name$ext", \@lines)==0);
+	
+	$mmpcount++;
+	my $line;
+	LINE: foreach $line (@lines)
+		{
+		$line = uc $line;
+		foreach (@patterns)
+			{
+			if ($line =~/^\s*$_/)
+				{
+				$found{$_} = 1;
+				next LINE;
+				}
+			}
+		}
+	close MMP;
+	foreach (keys %found)
+		{
+		@{$instances{$_}} = () if (!defined $instances{$_});
+		push @{$instances{$_}}, $fullname;
+		}
+	@{$patternsbyfile{$fullname}} = sort keys %found;
+	}
+
+# Scan the tree, processing each filename with mmpgrep
+
+my @scanlist = ();
+if ($Options{f})
+	{
+	open FILELIST, "<$Options{f}" or die "Cannot open $Options{f}\n";
+	my $line;
+	while ($line = <FILELIST>)
+		{
+		$line =~ s/#.*$//;		# remove comments
+		$line =~ s/\s*$//;		# remove trailing ws
+		$line =~ s/^\s*//;		# remove leading ws
+		next if ($line eq "");
+		push @scanlist, $line;
+		}
+	close FILELIST;
+	}
+push @scanlist, @ARGV;
+find (\&mmpgrep,@scanlist);
+
+# Report the results
+
+print "$mmpcount mmp files processed\n";
+
+my $pattern;
+print "\nSummary by pattern\n";
+foreach $pattern (@patterns)
+	{
+	my $count=0;
+	my $list = $instances{$pattern};
+	$count = scalar @{$list} if (defined $list);
+	printf "%-30s %5d\n", $pattern, $count;
+	}
+	
+print "\nDetail\n";
+foreach $pattern (sort keys %instances)
+	{
+	my $list = $instances{$pattern};
+	my $title = $pattern;
+	$title =~ s/\\s\+/ /;
+	print "\n$title:\n";
+	foreach my $file (@{$list})
+		{
+		print "  $file\n";
+		}
+	}
+
+foreach (sort keys %patternsbyfile)
+	{
+	print "\n$_ :  ", join(" ",@{$patternsbyfile{$_}});
+	}
+
+print "\n";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/test/unittest.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 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:
+#
+
+# run unit tests for e32toolp
+
+use strict;
+use Test::Harness;
+$Test::Harness::Verbose = 1;
+
+my @all = ( 
+'featurevariantparser/test.pl' ,
+'featurevariantmap/test.pl'
+);
+
+runtests(@all);
+exit 0;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/toolinfo/gcce_plat2set.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,74 @@
+# Copyright (c) 2008-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:
+# This module provides a mapping from build platforms (e.g. GCCE) to the
+# corresponding GCC-E environment settings.
+# Currently this module only provides very simple functionality. The intention is
+# that if we're going to support different GCC-E versions for different build
+# platforms (as we do for RVCT) this module should be extended to provide similar
+# functionality to rvct_plat2set.
+# 
+#
+
+package gcce_plat2set;
+
+
+# Returns the GCCE version corresponding to the given build platform. The first
+# function returns the data as a string (e.g. "4.2.3"); the second function
+# returns the data as a list (e.g. [4,2,3]).
+sub get_version_string($);
+sub get_version_list($);
+
+# Returns true if a GCC-E version for the given platform exists.
+sub compiler_exists($);
+
+
+my $g_version;
+
+
+sub get_version_string($)
+{
+    return $g_version;
+}
+
+sub get_version_list($)
+{
+    return split(/\./, $g_version);
+}
+
+sub compiler_exists($)
+{
+    if ($g_version)
+    {
+        return 1;
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+BEGIN
+{
+    my $vers = qx/arm-none-symbianelf-gcc -dumpversion 2>&1/;
+
+    if ($vers =~ /^\s*(\d+\.\d+.\d+)\s*$/)
+    {
+        $g_version = "$1";
+    }
+}
+
+
+1;
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/toolinfo/rvct_plat2set.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,395 @@
+# Copyright (c) 2008-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:
+# This module provides a mapping from build platforms (e.g. ARMV5) to the
+# corresponding RVCT environment settings. The information is obtained from an INI
+# file pointed to by the environment variable ABLD_PLAT_INI. The file can have two
+# different formats. The first format (Format 1) is:
+# [Symbian_OS_v9.5]
+# ARMV5 = RVCT 2.2.616
+# ARMV6 = RVCT 2.2.616
+# ARMV7 = RVCT 3.1.700
+# [Symbian_OS_v9.6]
+# ARMV5 = RVCT 3.1.862
+# ARMV7 = RVCT 4.0.100
+# [Symbian_OS_vFuture]
+# ARMV5 = RVCT 4.1.812
+# ARMV7 = RVCT 4.0.100
+# This format matches the tuple <OS version, build platform> onto a RVCT version.
+# The build system will look up the OS version in "\epoc32\data\buildinfo.txt".
+# The second format (Format 2) is:
+# ARMV5 = RVCT 2.2.616
+# ARMV6 = RVCT 2.2.616
+# ARMV7 = RVCT 3.1.700
+# This format doesn't take the OS version into account and is mostly intended for
+# the Integration team.
+# If ABLD_PLAT_INI is not set, or if the INI file doesn't contain any data for the
+# given platform, whatever RVCT version is found in the path will be used.
+# 
+#
+
+package RVCT_plat2set;
+
+use RVCT_ver2set;
+
+#
+# PUBLIC FUNCTIONS
+#
+
+# Returns the RVCT version corresponding to the given build platform. The first
+# function returns the data as a string (e.g. "2.2.616"); the second function
+# returns the data as a list (e.g. [2,2,616]).
+sub get_version_string($);
+sub get_version_list($);
+
+# Returns true if an RVCT version corresponding to the given platform exists.
+sub compiler_exists($);
+
+# Given a build platform, returns what the name and value of the RVCT??BIN variable
+# would be. 
+sub get_bin_name($);
+sub get_bin_path($);
+
+# Given a build platform, returns what the name and value of the RVCT??INC variable
+# would be. 
+sub get_inc_name($);
+sub get_inc_path($);
+
+# Given a build platform, returns what the name and value of the RVCT??LIB variable
+# variable would be. 
+sub get_lib_name($);
+sub get_lib_path($);
+
+# Given a build platform and the name of an RVCT library, returns the full path to
+# that library.
+sub find_lib($$);
+
+#
+# PRIVATE HELPER FUNCTIONS
+#
+
+sub _get_something(@);
+sub _err_and_die(@);
+sub _get_os_version();
+sub _parse_section_data($@);
+
+
+#
+# GLOBAL DATA
+#
+
+my %g_data;
+
+
+sub get_version_string($)
+{
+    return _get_something(@_, 'version');
+}
+
+sub get_version_list($)
+{
+    my $tmp = _get_something(@_, 'version');
+
+    return split(/\./, $tmp);
+}
+
+sub compiler_exists($)
+{
+    my $plat = shift;
+
+    if ( $g_data{$plat}->{version} || $g_data{0}->{version} )
+    {
+        return 1;
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+sub get_bin_name($)
+{
+    return _get_something(@_, 'bin_name');
+}
+
+sub get_bin_path($)
+{
+    return _get_something(@_, 'bin_path');
+}
+
+sub get_inc_name($)
+{
+    return _get_something(@_, 'inc_name');
+}
+
+sub get_inc_path($)
+{
+    return _get_something(@_, 'inc_path');
+}
+
+sub get_lib_name($)
+{
+    return _get_something(@_, 'lib_name');
+}
+
+sub get_lib_path($)
+{
+    return _get_something(@_, 'lib_path');
+}
+
+sub find_lib($$)
+{
+    my $plat = shift;
+    my $lib  = shift;
+
+    my $p = get_lib_path($plat);
+
+    my $f1 = "$p\\armlib\\$lib";
+    my $f2 = "$p\\cpplib\\$lib";
+
+    return "$p\\armlib\\$lib" if -f $f1;
+    return "$p\\cpplib\\$lib" if -f $f2;
+
+    _err_and_die("could not find $lib for platform $plat.");
+}
+
+sub _get_something(@)
+{
+    my $plat = shift;
+    my $what = shift;
+    
+    my $data = $g_data{$plat}->{$what};
+
+    if (!$data)
+    {
+        $data = $g_data{0}->{$what};
+    }
+
+    return $data;
+}
+
+sub _err_and_die(@)
+{
+    if ( defined(&main::FatalError) )
+    {
+        main::FatalError(@_);
+    }
+    else
+    {
+        print STDERR "error: @_\n";
+    }
+
+    exit 1;
+}
+
+sub _get_os_version()
+{
+    my $fname = "/epoc32/data/buildinfo.txt";
+    
+    my $os_ver = "";
+
+    open (my $in,  "<",  $fname) or _err_and_die("couldn't open $fname.");
+
+    while (<$in>)
+    {
+        chomp;
+
+        if ( $_ =~ /^\s*ManufacturerSoftwareBuild\s+M\d\d\d\d\d_(\S+)\s*$/i )
+        {
+            $os_ver = $1;
+            last
+        }
+    }
+
+    close $in or _err_and_die("couldn't close $fname.");
+
+    _err_and_die("couldn't read OS version in $fname") unless $os_ver;
+
+    return $os_ver;
+}
+
+sub _parse_section_data($@)
+{
+    my ($fname, @lines) = @_;
+
+    for (@lines)
+    {
+        if ( $_ =~ /^\s*(\w+)\s*=\s*RVCT\s+(\d+\.\d+\.\d+)\s*$/i )
+        {
+            my $plat = uc($1);
+            my $vers = $2;
+
+            _err_and_die("$fname: platform $plat already defined.") if $g_data{$plat};
+            _err_and_die("$fname: RVCT $vers doesn't exist.") unless RVCT_ver2set::compiler_exists($vers);
+
+            $g_data{$plat}->{version} = $vers;
+
+            $g_data{$plat}->{bin_name} = RVCT_ver2set::get_bin_name($vers);
+            $g_data{$plat}->{bin_path} = RVCT_ver2set::get_bin_path($vers);
+
+            $g_data{$plat}->{inc_name} = RVCT_ver2set::get_inc_name($vers);
+            $g_data{$plat}->{inc_path} = RVCT_ver2set::get_inc_path($vers);
+
+            $g_data{$plat}->{lib_name} = RVCT_ver2set::get_lib_name($vers);
+            $g_data{$plat}->{lib_path} = RVCT_ver2set::get_lib_path($vers);
+        }
+        else
+        {
+            _err_and_die("$fname: invalid field: $_.");
+        }
+    }
+}
+
+
+# initialize module
+{
+    # Initialise platform "0", wich represents the RVCT version found in the path.
+    my $vsnworked = 0; # Flag to check if --vsn command worked
+    # clear --licretry from RVCT22_CCOPT
+    my $key;
+    my %RVCT_CCOPT;
+    foreach $key (keys %ENV) {
+        if($key =~ /RVCT\d+_CCOPT/i ) {
+            $RVCT_CCOPT{$key} = $ENV{$key};
+            $ENV{$key} =~ s/--licretry//i;
+        }
+    }
+    my @lines = qx/armcc --vsn 2>&1/;
+
+    foreach (@lines)
+    {
+        if ($_ =~ /\bRVCT(\d)\.(\d)\s+\[Build (\d+)\]/ )
+        {
+	    $vsnworked = 1;
+            my ($bin, $inc, $lib) = ("RVCT$1$2BIN", "RVCT$1$2INC", "RVCT$1$2LIB");
+
+            $g_data{0}->{version} = "$1.$2.$3";
+
+            $g_data{0}->{bin_name} = $bin;
+            $g_data{0}->{bin_path} = $ENV{$bin};
+
+            $g_data{0}->{inc_name} = $inc;
+            $g_data{0}->{inc_path} = $ENV{$inc};
+
+            $g_data{0}->{lib_name} = $lib;
+            $g_data{0}->{lib_path} = $ENV{$lib};
+
+            last;
+        }
+    }
+    # In case --vsn doesn't work, call --version_number and setup environment variables
+    if ($vsnworked == 0)
+    {
+	    my @lines = qx/armcc --version_number 2>&1/;
+	    foreach (@lines) 
+	    {
+		    if ($_ =~ /^(\d{1})(\d{1})\d{1}(\d{3})$/) 
+		    {
+			    my ($bin, $inc, $lib) = ("RVCT$1$2BIN", "RVCT$1$2INC", "RVCT$1$2LIB");
+			    $g_data{0}->{version} = "$1.$2.$3";
+			    
+			    $g_data{0}->{bin_name} = $bin;
+			    $g_data{0}->{bin_path} = $ENV{$bin};
+
+			    $g_data{0}->{inc_name} = $inc;
+		            $g_data{0}->{inc_path} = $ENV{$inc};
+
+		            $g_data{0}->{lib_name} = $lib;
+		            $g_data{0}->{lib_path} = $ENV{$lib};
+
+            		    last;
+	   		 }
+    	    }
+    }
+
+    # restore RVCT22_CCOPT
+    foreach $key (keys %RVCT_CCOPT) {
+        $ENV{$key} = $RVCT_CCOPT{$key};
+    }
+    # Initialise all platforms defined in the INI file, if that file exists.
+
+    my $fname = $ENV{ABLD_PLAT_INI};
+
+    if ($fname) # The environment variable is set.
+    {
+        _err_and_die("ABLD_PLAT_INI doesn't point to a file.") unless -f $fname;
+
+        open (my $in,  "<",  $fname) or _err_and_die("couldn't open ABLD_PLAT_INI = $fname.");
+
+        my @lines = ();
+        my $format1 = 0;
+
+        while (<$in>)
+        {
+            chomp;
+
+            next if /^\s*;/ ;
+            next if /^\s*#/ ;
+            next if /^\s*$/ ;
+
+            if ($_ =~ /^\s*\[/i)
+            {
+                # This must be the start of an INI section so We treat the file as
+                # format 1.
+                $format1 = 1;
+            }
+
+            push @lines, $_;
+        }
+
+
+        close $in or _err_and_die("couldn't close ABLD_PLAT_INI = $fname.");
+        _err_and_die("$fname contains no data") unless @lines;
+
+        if ($format1)
+        {
+            my $os_ver = _get_os_version();
+            my @lines2 = ();
+
+            while (@lines)
+            {
+                my $line = shift @lines;
+                
+                if ( $line =~ /^\s*\[$os_ver\]/i)
+                {
+                    last;
+                }
+            }
+
+            while (@lines)
+            {
+                my $line = shift @lines;
+
+                if ( $line =~ /^\s*\[/i)
+                {
+                    last;
+                }
+            
+                push @lines2, $line;
+            }
+
+            _parse_section_data($fname, @lines2);
+        }
+        else # Format 2.
+        {
+            # The file is one big section without header.
+            _parse_section_data($fname, @lines);
+        }
+
+    } # if ($fname)
+}
+
+
+1;
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/toolinfo/rvct_ver2set.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,217 @@
+# Copyright (c) 2008-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:
+# This module provides a mapping from RVCT versions to the corresponding environment
+# settings. The information is obtained from a configuration file pointed to by the
+# environment variable ABLD_RVCT_INI. The following example shows the file's
+# structure:
+# [2.2.616]
+# bin=C:\Apps\ARM-RVCT\2.2.616\bin
+# inc=C:\Apps\ARM-RVCT\2.2.616\inc
+# lib=C:\Apps\ARM-RVCT\2.2.616\lib
+# [3.1.700]
+# bin=C:\Apps\ARM-RVCT\3.1.700\bin
+# inc=C:\Apps\ARM-RVCT\3.1.700\inc
+# lib=C:\Apps\ARM-RVCT\3.1.700\lib
+# If the file is used, it must contain at least one section.
+# 
+#
+
+
+package RVCT_ver2set;
+
+#
+# PUBLIC FUNCTIONS
+#
+
+# Returns a list of available RVCT versions, for example ["2.2.435", "2.2.616"].
+sub get_versions();
+
+# Returns true if the given RVCT version exists.
+sub compiler_exists($);
+
+# Given an RVCT version, returns what the name and value of the RVCT??BIN
+# variable would be. 
+sub get_bin_name($);
+sub get_bin_path($);
+
+# Given an RVCT version, returns what the name and value of the RVCT??INC
+# variable would be. 
+sub get_inc_name($);
+sub get_inc_path($);
+
+# Given an RVCT version, returns what the name and value of the RVCT??LIB
+# variable would be. 
+sub get_lib_name($);
+sub get_lib_path($);
+
+
+#
+# PRIVATE HELPER FUNCTIONS
+#
+
+# Prints an error message and then terminates.
+sub _err_and_die(@);
+
+
+#
+# GLOBAL DATA
+#
+
+# Contains all the information read from the configuration file.
+my %g_data;
+
+
+sub get_versions()
+{
+    return sort(keys %g_data);
+}
+
+sub compiler_exists($)
+{
+    my $vers = shift;
+    return ( $g_data{$vers} ); 
+}
+
+sub get_bin_name($)
+{
+    my $vers = shift;
+    return $g_data{$vers}->{bin_name}; 
+}
+
+sub get_bin_path($)
+{
+    my $vers = shift;
+    return $g_data{$vers}->{bin_path}; 
+}
+
+sub get_inc_name($)
+{
+    my $vers = shift;
+    return $g_data{$vers}->{inc_name}; 
+}
+
+sub get_inc_path($)
+{
+    my $vers = shift;
+    return $g_data{$vers}->{inc_path}; 
+}
+
+sub get_lib_name($)
+{
+    my $vers = shift;
+    return $g_data{$vers}->{lib_name}; 
+}
+
+sub get_lib_path($)
+{
+    my $vers = shift;
+    return $g_data{$vers}->{lib_path}; 
+}
+
+sub _err_and_die(@)
+{
+    print STDERR "error: @_\n";
+    exit 1;
+}
+
+
+# initialize module
+{
+    my $fname = $ENV{ABLD_RVCT_INI};
+
+    if ($fname) # The environment varaible is set.
+    {
+        _err_and_die("ABLD_RVCT_INI doesn't point to a file.") unless -f $fname;
+
+        open (my $in,  "<",  $fname) or _err_and_die("couldn't open ABLD_RVCT_INI = $fname.");
+
+        my @lines = ();
+
+        while (<$in>)
+        {
+            chomp;
+
+            next if /^\s*;/ ;
+            next if /^\s*#/ ;
+            next if /^\s*$/ ;
+
+            push @lines, $_;
+        }
+
+        close $in or _err_and_die("couldn't close ABLD_RVCT_INI = $fname.");
+
+        while (@lines)
+        {
+            my $ver = shift @lines;
+            my $kv1 = shift @lines;
+            my $kv2 = shift @lines;
+            my $kv3 = shift @lines;
+
+            my $Mm = "";
+
+            if ( $ver =~ /^\s*\[(\d+)\.(\d+)\.(\d+)\]\s*$/ )
+            {
+                _err_and_die("$fname: duplicate section: $ver.") if $g_data{$1};
+                $ver = "$1.$2.$3";
+                $Mm  = "$1$2";
+            }
+            else
+            {
+                _err_and_die("$fname: invalid section header: $ver.");
+            }
+
+            my %kv = ();
+
+            for ($kv1, $kv2, $kv3)
+            {
+                _err_and_die("$fname: not enough data in section $ver.") unless $_;
+
+                if ( $_ =~ /^\s*(bin|inc|lib)\s*=(.*)$/i )
+            {
+                    my $key = uc($1);
+                    my $val = $2;
+
+                    $val =~ s/^\s+//;
+                    $val =~ s/\s+$//;
+
+                    _err_and_die("$fname: in section $ver: \"$key\" doesn't point to a directory.") unless -d $val;
+                    _err_and_die("$fname: in section $ver: duplicate key \"$key\".") if $kv{$key};
+
+                    $kv{$key} = $val;
+                }
+                else
+                {
+                    _err_and_die("$fname: in section $ver: invalid line \"$_\".");
+                }
+            }
+
+            $g_data{$ver}->{bin_name} = "RVCT${Mm}BIN";
+            $g_data{$ver}->{bin_path} = "$kv{BIN}";
+            $g_data{$ver}->{inc_name} = "RVCT${Mm}INC";
+            $g_data{$ver}->{inc_path} = "$kv{INC}";
+            $g_data{$ver}->{lib_name} = "RVCT${Mm}LIB";
+            $g_data{$ver}->{lib_path} = "$kv{LIB}";
+        }
+
+    }
+    else
+    {
+        # ABLD_RVCT_INI isn't set. This is not an error. All public functions will
+        # return NULL.
+    }
+}
+
+1;
+
+
Binary file sbsv1/buildsystem/bin/java/symbianant.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/app-services/buildstubsis.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for stub .sis building extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	app-services
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/app-services/buildstubsis.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,72 @@
+# Copyright (c) 2006-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:
+# Build Stub SIS file
+# 
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+# Select appropriate directory and ensure it exists
+
+TARGETDIR=$(EPOCROOT)epoc32/data/z/system/install
+
+ifeq ($(PLATFORM),WINS) 
+        TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/system/install
+else
+ifeq ($(PLATFORM),WINSCW)
+        TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/system/install
+endif
+endif
+
+$(TARGETDIR) :
+	$(call createdir,"$(TARGETDIR)") 
+
+# Build stub SIS file
+
+SISFILE= $(TARGETDIR)/$(SISNAME).sis
+
+$(SISFILE) : $(EXTENSION_ROOT)/$(SRCDIR)/$(SISNAME).pkg
+	$(EPOCROOT)epoc32/tools/makesis -s $? $@
+
+do_nothing :
+	echo do_nothing
+
+# The targets invoked by abld
+
+MAKMAKE : do_nothing
+
+RESOURCE : $(TARGETDIR) $(SISFILE)
+
+SAVESPACE : BLD
+
+BLD : do_nothing
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+FINAL : do_nothing
+
+CLEAN :
+	-$(ERASE) $(SISFILE)
+
+RELEASABLES :
+	@echo $(SISFILE)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/app-services/buildupgradesis.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for upgrade sis building extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	app-services
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/app-services/buildupgradesis.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,72 @@
+# Copyright (c) 2006-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:
+# Build Upgrade SIS file
+# 
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+# Select appropriate directory and ensure it exists
+
+TARGETDIR=$(EPOCROOT)epoc32/data/z/private/$(UID_DIR)
+ifeq ($(PLATFORM),WINS) 
+        TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/$(UID_DIR)
+else
+ifeq ($(PLATFORM),WINSCW)
+        TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/$(UID_DIR)
+endif
+endif
+
+$(TARGETDIR) :
+	@$(call createdir,"$(TARGETDIR)") 
+
+# Build stub SIS file
+
+SISFILE= $(TARGETDIR)/$(SISNAME).sis
+
+$(SISFILE) : $(EXTENSION_ROOT)/$(SRCDIR)/$(SISNAME).pkg
+	$(EPOCROOT)epoc32/tools/makesis -d$(EXTENSION_ROOT)/$(SRCDIR) $? $@
+
+
+do_nothing :
+# do_nothing
+
+# The targets invoked by abld
+
+MAKMAKE : do_nothing
+
+RESOURCE : $(TARGETDIR) $(SISFILE)
+
+SAVESPACE : BLD
+
+BLD : do_nothing
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+FINAL : do_nothing
+
+CLEAN :
+	-$(ERASE) $(SISFILE)
+
+RELEASABLES :
+	@echo $(SISFILE)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/app-services/tzlocaltestserver.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2006-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:
+# Meta information for stub .sis building extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	app-services
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/app-services/tzlocaltestserver.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,62 @@
+# Copyright (c) 2007-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:
+# TzLocalTestServer - makefile for TimeZoneLocalization test data
+# 
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+MBSDIR = $(EPOCROOT)epoc32/tools/shell
+include $(MBSDIR)/$(notdir $(basename $(SHELL))).mk
+
+
+# Erase resources command
+erase_res  = $(ERASE) $(EPOCROOT)epoc32$/release$/$(PLATFORM)$/$(CFG)$/z$/resource$/timezonelocalization
+erase_data = $(ERASE) $(EPOCROOT)epoc32$/data$/z$/resource$/timezonelocalization
+do_nothing : 
+
+RESOURCE :
+	-$(erase_res)$/$(TZ_RSC)
+	-$(erase_data)$/$(TZ_RSC)
+	-$(erase_res)$/$(TZ_R01)
+	-$(erase_data)$/$(TZ_R01)
+	-$(erase_res)$/$(TZ_R02)
+	-$(erase_data)$/$(TZ_R02)
+	-$(erase_res)$/$(TZ_GRP_RSC)
+	-$(erase_data)$/$(TZ_GRP_RSC)
+	-$(erase_res)$/$(TZ_GRP_R01)
+	-$(erase_data)$/$(TZ_GRP_R01)
+	-$(erase_res)$/$(TZ_GRP_R02)
+	-$(erase_data)$/$(TZ_GTP_R02)
+
+BLD : do_nothing
+
+MAKMAKE :  do_nothing
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+CLEAN : do_nothing
+
+FINAL : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASEABLES : do_nothing
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for the word database kit extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	app-services
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/app-services/wlddatabasekit_sec.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,76 @@
+# Copyright (c) 2006-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:
+# Builds the World Database
+# 
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+TARGETDIR=$(EPOCROOT)epoc32/data/z/resource/worldserver
+
+ifeq ($(PLATFORM), WINS)
+        TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/worldserver
+else
+ifeq ($(PLATFORM), WINSCW)
+        TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/worldserver
+endif
+endif
+
+$(TARGETDIR) :
+	@$(call createdir,"$(TARGETDIR)")
+
+WLDCOMP=$(EPOCROOT)epoc32/release/winc/udeb/wldcomp.exe
+DATABASE=$(TARGETDIR)/$(TARGET)
+
+# We don't build multiple languages - that's a problem
+# for someone else...
+
+$(DATABASE) :  $(EXTENSION_ROOT)/$(SOURCES) $(WLDCOMP)
+	$(WLDCOMP) $(EXTENSION_ROOT)/$(SOURCES) $(DATABASE) -locale-01
+
+do_nothing :
+# do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : do_nothing
+
+BLD : $(TARGETDIR) $(DATABASE)
+
+SAVESPACE : BLD
+
+CLEAN :
+	-$(ERASE) $(DATABASE)
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+RESOURCE : do_nothing
+
+FINAL : do_nothing
+
+RELEASABLES : 
+	@echo $(DATABASE)
+
+ROMFILE : do_nothing
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/application-protocols/buildstubsis.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2007-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:
+# Meta information for stub .sis building extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	application-protocols
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/application-protocols/buildstubsis.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,72 @@
+# Copyright (c) 2007-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:
+# buildstubsis.mk - Build Stub SIS file
+# 
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+# Select appropriate directory and ensure it exists
+
+TARGETDIR=$(EPOCROOT)epoc32/data/z/system/install
+
+ifeq ($(PLATFORM),WINS) 
+	TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/system/install
+else
+ifeq ($(PLATFORM),WINSCW)
+	TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/system/install
+endif
+endif
+
+$(TARGETDIR) :
+	$(call createdir,"$(TARGETDIR)") 
+
+# Build stub SIS file
+
+SISFILE= $(TARGETDIR)/$(SISNAME).sis
+
+$(SISFILE) : $(EXTENSION_ROOT)/$(SRCDIR)/$(SISNAME).pkg
+	$(EPOCROOT)epoc32/tools/makesis -s $? $@
+
+do_nothing :
+	echo do_nothing
+
+# The targets invoked by abld
+
+MAKMAKE : do_nothing
+
+RESOURCE : $(TARGETDIR) $(SISFILE)
+
+SAVESPACE : BLD
+
+BLD : do_nothing
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+FINAL : do_nothing
+
+CLEAN :
+	-$(ERASE) $(SISFILE)
+
+RELEASABLES :
+	@echo $(SISFILE)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/base_rvct_common.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,69 @@
+# Copyright (c) 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:
+# Some functions that are commonly used by base FLM
+
+define base__compile
+$(1) : $(2) : $(3)
+	$(call startrule,base__compile) \
+	$(CC) $(ARMCCFLAGS) $$< -o $$@ \
+	$(call endrule,base__compile)
+
+CLEANTARGETS := $(CLEANTARGETS) $(1)
+endef
+
+define base__h2inc
+$(1) : $(2)
+	$(call startrule,base__h2inc) \
+ 	$(PERL) $(EPOCROOT)/epoc32/tools/h2inc.pl $$< $$@ ARMASM \
+	$(call endrule,base__h2inc)
+
+CLEANTARGETS := $(CLEANTARGETS) $(1)
+endef
+
+define base__asm
+$(1) : $(2) : $(3)
+	$(call startrule,base__asm) \
+	$(ASM) $(AFLAGS) -o $$@ --LIST $(join $(basename $(1)),.lst) $$< \
+	$(call endrule,base__asm)
+
+CLEANTARGETS := $(CLEANTARGETS) $(1) $(join $(basename $(1)),.lst)
+endef
+
+define base__link
+$(1) : $(2)
+	$(call startrule,base__link) \
+	$(LD) $(LFLAGS) -o $$@ $(FULLOBJECTS) \
+	$(call endrule,base__link)
+
+CLEANTARGETS := $(CLEANTARGETS) $(1)
+endef
+
+define base__strip
+$(1) : $(2)
+	$(call startrule,base__strip) \
+	$(FROMELF) --bin --output $$@ $$< \
+	$(call endrule,base__strip)
+
+CLEANTARGETS := $(CLEANTARGETS) $(1)
+endef
+
+define base__omapsig
+$(1) : $(2)
+	$(call startrule,base__omapsig) \
+	$(PERL) $(EPOCROOT)/epoc32/tools/omapsig.pl $(LINKBASE) $$< $$@ \
+	$(call endrule,base__omapsig)
+
+CLEANTARGETS := $(CLEANTARGETS) $(1)
+endef
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/bootstrap.flm.hide	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,195 @@
+# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "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:
+#
+
+ifeq ($($(NAME)_$(PLATFORM_PATH)_bootstrap_flm),)
+$(NAME)_$(PLATFORM_PATH)_bootstrap_flm := 1 
+
+E32PATH := $(EXTENSION_ROOT)/$(E32PATH)
+SOURCES := $(foreach S,$(SOURCES),$(addprefix $(EXTENSION_ROOT)/,$(S)))
+INCLUDES2:=$(addprefix $(EXTENSION_ROOT)/,$(INCLUDES))
+EXTRA_INC_PATH := $(foreach S,$(EXTRA_INC_PATH),$(addprefix $(EXTENSION_ROOT)/,$(S)))
+GENINCLUDES_HEADERS := $(foreach H,$(GENINCLUDES_HEADERS),$(addprefix $(EXTENSION_ROOT)/,$(H)))
+
+ifndef LINKBASE
+LINKBASE := 0x00000000
+endif
+
+UNIQ:=$(E32PATH)$(PLATFORM_PATH)$(NAME)$(MEMMODEL)$(SOURCES)$(ASM_MACROS)
+UNIQ:=$(word 1,$(shell echo $(UNIQ) | $(GNUMD5SUM)))
+
+# Make the output build directory name unique, starting with NAME of the binary being built
+EPOCBLDABS := $(EPOCBLD)/$(NAME)_$(UNIQ)
+
+EPOCINC := $(EPOCROOT)/epoc32/include
+EPOCKERNINC := $(EPOCINC)/kernel
+EPOCCPUINC := $(EPOCKERNINC)/$(CPU)
+EPOCTRG := $(EPOCROOT)/epoc32/release/$(PLATFORM_PATH)
+TRG := $(EPOCTRG)/$(NAME).bin
+TEMPTRG := $(EPOCBLDABS)/$(NAME).bin
+ASMINCPATH := 
+ASM_MACROS :=
+CLEANTARGETS :=
+
+CLEANTARGETS := $(CLEANTARGETS) $(TRG) $(TEMPTRG) $(join $(basename $(TRG)),.sym)
+
+ifneq ($(EXTRA_INC_PATH),)
+ASMINCPATH := $(EXTRA_INC_PATH)
+endif
+
+ASMINCPATH := . $(EPOCBLDABS) $(ASMINCPATH) $(EXTENSION_ROOT) $(EPOCCPUINC) $(EXTRA_EPOC32_INC_PATH) $(E32PATH)/eka/include/kernel/$(CPU)
+
+ifeq ($(MEMMODEL),)
+$(error MEMMODEL parameter not specified)
+endif
+
+# Convert MEMMODEL parameter to lower case
+MEMMODEL := $(shell echo $(MEMMODEL) | tr A-Z a-z)
+
+ifeq ($(MEMMODEL),direct)
+CFG_MM := CFG_MMDirect
+HEADERS_MM :=
+endif
+ifeq ($(MEMMODEL),flexible)
+CFG_MM := CFG_MMFlexible
+HEADERS_MM := $(E32PATH)/eka/include/memmodel/epoc/flexible/$(CPU)/mmboot.h
+endif
+ifeq ($(MEMMODEL),moving)
+CFG_MM := CFG_MMMoving
+HEADERS_MM := $(E32PATH)/eka/include/memmodel/epoc/moving/$(CPU)/mmboot.h
+endif
+ifeq ($(MEMMODEL),multiple)
+CFG_MM := CFG_MMMultiple
+HEADERS_MM := $(E32PATH)/eka/include/memmodel/epoc/multiple/$(CPU)/mmboot.h
+endif
+ifndef CFG_MM
+$(error '$(MEMMODEL)' memory model unknown)
+endif
+
+ASM_MACROS := $(ASM_MACROS) $(CFG_MM)
+ifneq ($(SMP),)
+ASM_MACROS := $(ASM_MACROS) SMP
+endif
+
+ASMINCPATHCMD := $(foreach dir,$(ASMINCPATH),$(join -I ,$(dir)))
+ASM_MACROS := $(ASM_MACROS) USE_CXSF
+      
+INCEXT := inc
+ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),--predefine "$(macro) SETL {TRUE}")
+AFLAGS := -g --keep $(ASM_MACRO_CMD) $(ASMINCPATHCMD)
+LFLAGS := --ro-base $(LINKBASE) --entry $(LINKBASE) --map
+SYMOPT := --symdefs
+
+define bootstrap_asm
+$(1) : $(2) : $(3)
+	$(call startrule,bootstrap_rvct_asm) \
+	$(ASM) $(AFLAGS) -o $$@ --LIST $$(join $$(basename $$@),.lst) $$< \
+	$(call endrule,bootstrap_rvct_asm)
+endef
+
+define bootstrap_link
+$(EPOCBLDABS)/$(NAME).in : $(LINKOBJECTS) $(LINKFILE) | $(EPOCBLDABS)
+	$(call startrule,bootstrap_rvct_link) \
+	$(LD) $(LFLAGS) $(SYMOPT) $$(join $$(basename $$@),.sym) -o $$@ $$(filter %.o,$$^); \
+	$(GNUCP) $$@ $$(join $$(basename $(TRG)),.sym) \
+	$(call endrule,bootstrap_rvct_link)	
+endef
+
+define bootstrap_strip
+$(TRG) : $(EPOCBLDABS)/$(NAME).in
+	$(call startrule,bootstrap_strip) \
+	$(FROMELF) --bin --output $$@ $$< \
+	$(call endrule,bootstrap_rvct_strip)
+endef
+
+define bootstrap_h2inc
+# How to translate the .h files to .inc
+$(1) : $(2)
+	$(call startrule,bootstrap_h2inc) \
+	$(PERL) $(EPOCROOT)/epoc32/tools/h2inc.pl $$< $$@ ARMASM \
+	$(call endrule, bootsrap_h2inc)
+endef
+
+# Joins two lists with a 1:1 mapping, separated by a ->
+# $(call bootstrap_joinlists,a b c,d e f) returns a->d b->e c->f
+define bootstrap_joinlists
+$(join $(1),$(addprefix ->,$(2)))
+endef
+
+# Path for generic source files
+BASESRCPATH := $(E32PATH)/eka/kernel/$(CPU)
+
+# Generic source files
+BASESOURCES := $(foreach S,$(BASESOURCES_NAMES),$(addprefix $(BASESRCPATH)/,$(S)))
+
+HEADERS:= $(E32PATH)/eka/include/kernel/kernboot.h $(E32PATH)/eka/include/kernel/arm/bootdefs.h $(E32PATH)/eka/include/e32rom.h $(GENINCLUDES_HEADERS) $(HEADERS_MM)
+
+# Generated include files
+BOOTSTRAP_GENINCLUDES := $(foreach f,$(HEADERS),$(basename $(notdir $(f))).$(INCEXT))
+
+# Non-generated generic include files
+ifeq ($(BASEINCLUDES),)
+BASEINCLUDES := $(E32PATH)/eka/include/kernel/$(CPU)/bootcpu.inc $(E32PATH)/eka/include/kernel/$(CPU)/bootmacro.inc
+endif
+INCLUDES2 := $(foreach f,$(INCLUDES2),$(basename $(f)).$(INCEXT))
+
+# Generic object files
+FULLBASEOBJECTS := $(foreach src, $(BASESOURCES_NAMES), $(addprefix $(EPOCBLDABS)/,$(basename $(src)).o))
+
+# Platform specific object files
+FULLOBJECTS := $(foreach src, $(SOURCES), $(addprefix $(EPOCBLDABS)/,$(basename $(notdir $(src))).o))
+
+LINKOBJECTS := $(FULLBASEOBJECTS) $(FULLOBJECTS)
+
+# Generated include files with paths
+FULLGENINCLUDES := $(addprefix $(EPOCBLDABS)/,$(BOOTSTRAP_GENINCLUDES))
+
+CLEANTARGETS := $(CLEANTARGETS) $(FULLBASEOBJECTS) $(FULLOBJECTS) $(LINKOBJECTS) $(FULLGENINCLUDES) 
+
+CLEANTARGETS := $(CLEANTARGETS) $(EPOCBLDABS)/$(NAME).in $(join $(basename $(EPOCBLDABS)/$(NAME).in),.sym)
+
+JOINED_INC := $(call bootstrap_joinlists,$(FULLGENINCLUDES),$(HEADERS))
+$(foreach J,$(JOINED_INC),$(eval $(call bootstrap_h2inc,$(word 1,$(subst ->, ,$(J))),$(word 2,$(subst ->, ,$(J))) | $(EPOCBLDABS))))
+
+# How to strip linked object to binary
+$(eval $(call bootstrap_strip,$(TRG),$(EPOCBLDABS)/$(NAME).in))
+
+LISTFILE := $(foreach f,$(FULLBASEOBJECTS),$(join $(basename $(f)),.lst)) $(foreach f,$(FULLOBJECTS),$(join $(basename $(f)),.lst))
+CLEANTARGETS := $(CLEANTARGETS) $(LISTFILE)
+
+JOINED_BASEOBJECTS := $(call bootstrap_joinlists,$(FULLBASEOBJECTS),$(BASESOURCES))
+
+$(foreach J,$(JOINED_BASEOBJECTS),$(eval $(call bootstrap_asm,$(word 1,$(subst ->, ,$(J))),$(EPOCBLDABS)/%.o,$(word 2,$(subst ->, ,$(J))) $(BASEINCLUDES) $(FULLGENINCLUDES) $(INCLUDES2) | $(EPOCBLDABS))))
+
+JOINED_OBJECTS := $(call bootstrap_joinlists,$(FULLOBJECTS),$(SOURCES))
+
+$(foreach J,$(JOINED_OBJECTS),$(eval $(call bootstrap_asm,$(word 1,$(subst ->, ,$(J))),$(EPOCBLDABS)/%.o,$(word 2,$(subst ->, ,$(J))) $(BASEINCLUDES) $(FULLGENINCLUDES) $(INCLUDES2) |$(EPOCBLDABS))))
+
+# How to link the object files
+$(eval $(bootstrap_link))
+
+# Hook into global targets
+TARGET :: $(TRG)
+
+#############################################
+
+# --what to show releasables
+$(eval $(call whatmacro,$(TRG),USERFLM))
+# create directory
+CREATABLEPATHS := $(EPOCBLDABS) $(EPOCTRG)
+$(call makepath,$(CREATABLEPATHS))
+# clean up
+$(eval $(call GenerateStandardCleanTarget,$(CLEANTARGETS),$(BUILDLOC)))
+
+endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/bootstrap.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the boot strap extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/bootstrap.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,457 @@
+# Copyright (c) 2006-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:
+#
+
+# To ensure that EPOCROOT always ends with a forward slash.
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+HOST_PLATFORM := $(patsubst linux%,linux,$(HOSTPLATFORM_DIR))
+ifeq (linux,$(HOST_PLATFORM))
+INC_PATH := $(EPOCROOT)epoc32/include/platform
+endif
+
+ifndef CPU
+CPU := arm
+endif
+
+ifndef LINKBASE
+LINKBASE := 0x00000000
+endif
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+PROCEED:=build
+ifneq "$(PBUILDPID)" ""
+        ifneq "$(CFG)" "UREL"
+                PROCEED:=skip
+        endif
+endif
+
+COPY := $(call ecopy)
+
+ifeq "$(CPU)" "x86"
+        ifeq "$(MEMMODEL)" "direct"
+                BLDSGL:=s
+        else
+                ifeq "$(MEMMODEL)" "flexible"
+                        BLDSGL:=f
+                else
+                        BLDSGL:=
+                endif
+        endif
+        ifdef SMP
+                BLDSMP:=smp
+        else
+                BLDSMP:=
+        endif
+        EPOCROOT:=$(subst /,\,$(EPOCROOT))
+        EPOCBLDABS := $(EPOCROOT)epoc32\build\tasm$(PBUILDPID)\$(BLDSGL)$(VNAME)$(BLDSMP)
+else
+        DRIVELETTER := $(shell cd 2>NUL)
+        DRIVELETTER_2 := $(word 1,$(subst \, ,$(DRIVELETTER)))
+        EPOCBLDABS_1 := $(subst $(TO_ROOT),,$(EPOCBLD))
+        EPOCBLDABS_2 := $(subst $(DRIVELETTER_2),,$(EPOCBLDABS_1))
+        
+        EPOCBLDABS := $(call epocbldabs,$(DRIVELETTER_2),$(EPOCBLDABS_2))/$(NAME)
+endif
+
+EPOCINC := $(INC_PATH)
+EPOCKERNINC := $(EPOCINC)/kernel
+EPOCCPUINC := $(EPOCKERNINC)/$(CPU)
+EPOCMMINC := $(INC_PATH)/memmodel/epoc/$(MEMMODEL)/$(CPU)
+EPOCTRG := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TRG := $(EPOCTRG)/$(NAME).bin
+TEMPTRG := $(EPOCBLDABS)/$(NAME).bin
+
+ifdef EXTRA_INC_PATH
+ASMINCPATH := $(EXTRA_INC_PATH)
+endif
+
+ifeq "$(CPU)" "arm"
+
+ifdef ARMCC
+ASMINCPATH := . $(EPOCBLDABS) $(ASMINCPATH) $(EXTENSION_ROOT) $(EPOCCPUINC)
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_RVCT := $(wordlist 1,6,$(ARMASM_OUT))
+ARMASM_OUT_6 := $(word 6,$(ARMASM_OUT))
+
+# Use GCC toolchain if no other is available
+TOOLVER := GCC
+
+# ARM/Thumb Macro Assembler, RVCT2.2 [Build 616]
+# ARM Assembler, RVCT4.0 [Build 529]
+RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_RVCT)))
+ifeq "$(RVCTSTR)" "RVCT"
+        TOOLVER := RVCT
+        OP := --
+endif
+ifeq "$(ARMASM_OUT_6)" "2.37"
+        TOOLVER := 211
+endif
+endif
+
+ifdef GCCE
+TOOLVER := GCCE
+ASMINCPATH := . $(EPOCBLDABS) $(ASMINCPATH) $(EXTENSION_ROOT) $(EPOCCPUINC)
+ifeq (linux,$(HOST_PLATFORM))
+EXE_SUFFIX :=
+else
+EXE_SUFFIX := .exe
+endif
+ifdef SBS_GCCE441BIN
+GCCEBIN := $(SBS_GCCE441BIN)
+else ifdef SBS_GCCE433BIN
+GCCEBIN := $(SBS_GCCE433BIN)
+else ifdef SBS_GCCE432BIN
+GCCEBIN := $(SBS_GCCE432BIN)
+endif
+GCCEASM := $(GCCEBIN)/arm-none-symbianelf-as$(EXE_SUFFIX)
+GCCELD := $(GCCEBIN)/arm-none-symbianelf-ld$(EXE_SUFFIX)
+GCCESTRIP := $(GCCEBIN)/arm-none-symbianelf-strip$(EXE_SUFFIX)
+endif
+
+endif
+
+ifeq "$(MEMMODEL)" "direct"
+CFG_MM := CFG_MMDirect
+endif
+ifeq "$(MEMMODEL)" "moving"
+CFG_MM := CFG_MMMoving
+endif
+ifeq "$(MEMMODEL)" "multiple"
+CFG_MM := CFG_MMMultiple
+endif
+ifeq "$(MEMMODEL)" "flexible"
+CFG_MM := CFG_MMFlexible
+endif
+ifndef CFG_MM
+$(error Memory model unknown)
+endif
+
+ASM_MACROS += $(CFG_MM)
+ifdef SMP
+        ASM_MACROS += SMP
+endif
+
+ifeq "$(CPU)" "x86"
+        ifndef BASEINCLUDES
+                BASEINCLUDES := bootcpu.inc bootmacr.inc
+        endif
+        ifndef BASESOURCES
+                BASESOURCES := bootmain.asm bootcpu.asm bootutil.asm
+        endif
+        GENINCLUDES := $(GENINCLUDES) x86boot.h
+        ASMINCPATH := . 
+        ASM := tasm
+        LINK := tlink
+        EXE2BIN := exe2bin
+        SRCEXT := asm
+        INCEXT := inc
+        OBJEXT := obj
+        EXEEXT := exe
+        
+        ASMINCPATHCMD := $(foreach dir,$(ASMINCPATH),$(join /i,$(call slash2generic,$(dir))))   
+        ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),/d$(macro)=1)
+        AFLAGS := /l /m3 /ML /W-PDC $(ASM_MACRO_CMD) $(ASMINCPATHCMD)
+        LFLAGS := /m /s /n /3 /c
+        ASMTYP := TASM
+        LINKFILE :=
+        define do_asm
+                cd $(EPOCBLDABS) && $(CP) $(call slash2generic,$<) .
+                cd $(EPOCBLDABS) && $(ASM) $(AFLAGS) $(notdir $<)
+        endef
+        define do_link
+                cd $(EPOCBLDABS) && $(LINK) $(LFLAGS) $(filter %.$(OBJEXT),$(foreach obj,$^,$(notdir $(obj)))), temp.exe
+                cd $(EPOCBLDABS) && $(COPY) temp.exe $@
+                cd $(EPOCBLDABS) && $(ERASE) temp.exe
+        endef
+        define do_strip
+                cd $(EPOCBLDABS) && $(COPY) $< temp.exe
+                cd $(EPOCBLDABS) && $(EXE2BIN) temp.exe temp.bin
+                cd $(EPOCBLDABS) && $(COPY) temp.bin $@
+                cd $(EPOCBLDABS) && $(ERASE) temp.exe temp.bin
+        endef
+endif
+ifeq "$(CPU)" "arm"
+        ifeq "$(TOOLVER)" "211"
+                ASM := armasm
+                LINK := armlink
+                SRCEXT := s
+                INCEXT := inc
+                OBJEXT := o
+                EXEEXT := in
+                ASMINCPATHCMD := $(foreach dir,$(ASMINCPATH),$(join -I ,$(dir)))
+                ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),-predefine "$(macro) SETL {TRUE}")
+                AFLAGS := $(ASM_ARM211_VARIANTFLAGS) -apcs 3/32bit/nosw -Length 0 -Width 200 $(ASM_MACRO_CMD) $(ASMINCPATHCMD)
+                LFLAGS := -Base $(LINKBASE) -Data 0xf0000000 -Entry $(LINKBASE) -Bin -map
+                SYMOPT := -symbols
+                ASMTYP := ARMASM
+                LINKFILE :=
+                define do_asm
+                        $(ASM) $(AFLAGS) -o $@ -LIST $(join $(basename $@),.lst) $<
+                endef
+                define do_link
+                        $(LINK) $(LFLAGS) $(SYMOPT) $(join $(basename $@),.sym) -o $@ $(filter %.$(OBJEXT),$^)
+                endef
+                define do_strip
+                        @if exist $@ $(ERASE) $(call slash2generic,$@) 
+                        $(COPY) $< $@
+                endef
+        endif
+        ifeq "$(TOOLVER)" "RVCT"
+                ASM_MACROS += USE_CXSF
+                ASM := armasm
+                LINK := armlink
+                FROMELF := fromelf
+                SRCEXT := s
+                INCEXT := inc
+                OBJEXT := o
+                EXEEXT := in
+                ASMINCPATHCMD := $(foreach dir,$(ASMINCPATH),$(join -I ,$(dir)))
+                ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+                AFLAGS := -g $(OP)keep $(ASM_MACRO_CMD) $(ASMINCPATHCMD) $(ASM_RVCT_VARIANTFLAGS)
+                LFLAGS := $(OP)ro-base $(LINKBASE) $(OP)entry $(LINKBASE) $(OP)map
+                SYMOPT := $(OP)symdefs
+                ASMTYP := ARMASM
+                LINKFILE :=
+                define do_asm
+                        $(ASM) $(AFLAGS) -o $@ $(OP)LIST $(join $(basename $@),.lst) $<
+                endef
+                define do_link
+                        $(LINK) $(LFLAGS) $(SYMOPT) $(join $(basename $@),.sym) -o $@ $(filter %.$(OBJEXT),$^)
+                        $(COPY) $@ $(join $(basename $(TRG)),.sym)
+                endef
+                define do_strip
+                        $(FROMELF) $(OP)bin $(OP)output $@ $<
+                endef
+        endif
+        ifeq "$(TOOLVER)" "GCC"
+                ASM_MACROS += USE_CXSF GNU_ASM
+                ASM := as
+                LINK := ld
+                STRIP := strip
+                SRCEXT := s
+                INCEXT := ginc
+                OBJEXT := o
+                EXEEXT := in
+                ASMINCPATHCMD := $(foreach dir,$(ASMINCPATH),$(join -I ,$(dir)))
+                ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),--defsym $(macro)=1 )
+                AFLAGS := -mapcs-32 -R -n $(ASM_MACRO_CMD) -I- $(ASMINCPATHCMD)
+                LFLAGS := -n -x --section-alignment 4 --file-alignment 2 -no-whole-archive
+                SYMOPT := -symdefs
+                ASMTYP := AS
+                PROCESS_INCLUDES := 1
+                ifndef LINKFILE
+                        LINKFILE := bootstrap.lnk
+                endif
+                define do_asm
+                        perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $(join $(basename $@),.ss)
+                        $(ASM) $(AFLAGS) -acdhlms=$(join $(basename $@),.lst) -o $@ $(join $(basename $@),.ss)
+                endef
+                define do_link
+                        if exist $(join $(basename $@),.lnk) $(ERASE) $(call slash2generic,$(join $(basename $@),.lnk)) 
+                        $(COPY) $(subst /,\,$(filter %.lnk,$^)) $(join $(basename $@),.lnk)
+                        $(LINK) -M -o $@ $(filter %.$(OBJEXT),$^) $(LFLAGS) --script=$(join $(basename $@),.lnk) >$(join $(basename $@),.map)
+                endef
+                define do_strip
+                        $(STRIP) -O binary -o $(TEMPTRG) $<
+                        $(COPY) $(TEMPTRG) $@
+                        $(ERASE) $(call slash2generic,$(TEMPTRG)) 
+                endef
+        endif
+        ifeq "$(TOOLVER)" "GCCE"
+                ASM_MACROS += USE_CXSF GNU_ASM
+                ASM := $(GCCEASM)
+				ASM_LIST_OPTS := -acdhlms
+                LINK := $(GCCELD)
+                STRIP := $(GCCESTRIP)
+                SRCEXT := s
+                INCEXT := ginc
+                OBJEXT := o
+                EXEEXT := in
+                ASMINCPATHCMD := $(foreach dir,$(ASMINCPATH),$(join -I ,$(dir)))
+                ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),--defsym $(macro)=1 )
+				AFLAGS := -g --keep-locals $(ASM_MACRO_CMD) $(ASMINCPATHCMD)
+				LFLAGS := -Ttext $(LINKBASE) --entry $(LINKBASE) --print-map
+                ASMTYP := AS
+                PROCESS_INCLUDES := 1
+                ifndef LINKFILE
+                        LINKFILE := bootstrap.lnk
+                endif
+                define do_asm
+                        perl $(EPOCROOT)/epoc32/tools/armasm2as.pl $< $(join $(basename $@),.ss)
+                        $(ASM) $(AFLAGS) -o $@ $(ASM_LIST_OPTS)=$(join $(basename $@),.lst) $(join $(basename $@),.ss)
+                endef
+                define do_link
+                        $(call ifexistf,$(join $(basename $@),.lnk),$(ERASE) $(call slash2generic,$(join $(basename $@),.lnk)) )
+                        $(COPY) $(call normalise_path,$(filter %.lnk,$^)) $(join $(basename $@),.lnk)
+                        $(LINK) $(LFLAGS) -o $@ $(filter %.$(OBJEXT),$^)
+                        $(COPY) $@ $(join $(basename $(TRG)),.sym)
+                endef
+                define do_strip
+                        $(STRIP) -O binary -o $(TEMPTRG) $<
+                        $(COPY) $(TEMPTRG) $@
+                        $(ERASE) $(call slash2generic,$(TEMPTRG)) 
+                endef
+        endif
+endif
+
+
+
+# Generic source files
+ifndef BASESOURCES
+BASESOURCES := bootmain.s bootcpu.s bootutils.s
+endif
+
+# Path for generic source files
+ifndef BASESRCPATH
+BASESRCPATH := $(E32PATH)/eka/kernel/$(CPU)
+endif
+
+
+# Generated include files
+GENINCLUDES := $(foreach f,$(GENINCLUDES),$(basename $(f)).$(INCEXT))
+GENINCLUDES := $(GENINCLUDES) e32rom.$(INCEXT) kernboot.$(INCEXT)
+GENINCLUDES := $(GENINCLUDES) bootdefs.$(INCEXT)
+ifneq "$(MEMMODEL)" "direct"
+GENINCLUDES := $(GENINCLUDES) mmboot.$(INCEXT)
+endif
+
+# Headers from which GENINCLUDES are generated
+GENHEADERS = $(foreach inc,$(GENINCLUDES),$(basename $(inc)).h)
+
+# Non-generated generic include files
+ifndef BASEINCLUDES
+BASEINCLUDES := bootcpu.inc bootmacro.inc
+endif
+BASEINCLUDES := $(foreach f,$(BASEINCLUDES),$(basename $(f)).$(INCEXT))
+INCLUDES := $(foreach f,$(INCLUDES),$(basename $(notdir $(f))).$(INCEXT))
+
+# Generic object files
+BASEOBJECTS = $(foreach src, $(BASESOURCES), $(basename $(src)).$(OBJEXT))
+
+# Platform specific object files
+OBJECTS = $(foreach src, $(SOURCES), $(basename $(src)).$(OBJEXT))
+
+# Object files with paths
+FULLBASEOBJECTS = $(addprefix $(EPOCBLDABS)/,$(BASEOBJECTS))
+FULLOBJECTS = $(addprefix $(EPOCBLDABS)/,$(OBJECTS))
+LINKOBJECTS = $(FULLBASEOBJECTS) $(FULLOBJECTS)
+
+# Generated include files with paths
+FULLGENINCLUDES = $(addprefix $(EPOCBLDABS)/,$(GENINCLUDES))
+
+# Tell make where to look for things
+vpath %.h . $(EXTRA_INC_PATH) $(EPOCINC) $(EPOCKERNINC) $(EPOCCPUINC) $(EPOCMMINC)
+vpath %.inc . $(EXTRA_INC_PATH) $(EXTENSION_ROOT) $(EPOCINC) $(EPOCKERNINC) $(EPOCCPUINC) $(EPOCMMINC) $(EPOCBLDABS)
+vpath %.ginc $(EPOCBLDABS)
+vpath %.$(SRCEXT) . $(EXTRA_SRC_PATH) $(EXTENSION_ROOT) $(BASESRCPATH)
+vpath %.$(OBJEXT) $(EPOCBLDABS)
+vpath %.lnk . $(EXTENSION_ROOT) $(EPOCCPUINC)
+
+# How to link the object files 
+$(EPOCBLDABS)/$(NAME).$(EXEEXT): $(LINKOBJECTS) $(LINKFILE) $(call pipe,$(EPOCBLDABS))
+	$(do_link)
+
+# How to strip linked object to binary
+$(TRG): $(EPOCBLDABS)/$(NAME).$(EXEEXT)
+	$(do_strip)
+
+# How to assemble the source files
+ifdef PROCESS_INCLUDES
+FULLBASEINCLUDES := $(addprefix $(EPOCBLDABS)/,$(BASEINCLUDES))
+FULLINCLUDES := $(addprefix $(EPOCBLDABS)/,$(INCLUDES))
+
+$(FULLBASEINCLUDES) : $(EPOCBLDABS)/%.$(INCEXT) : %.inc $(call pipe,$(EPOCBLDABS))
+	perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
+
+$(FULLINCLUDES) : $(EPOCBLDABS)/%.$(INCEXT) : %.inc $(call pipe,$(EPOCBLDABS))
+	perl $(EPOCROOT)/epoc32/tools/armasm2as.pl $< $@
+
+$(FULLBASEOBJECTS) : $(EPOCBLDABS)/%.$(OBJEXT) : %.$(SRCEXT) $(FULLINCLUDES) $(FULLBASEINCLUDES) $(FULLGENINCLUDES) $(call pipe,$(EPOCBLDABS))
+	$(do_asm)
+
+$(FULLOBJECTS) : $(EPOCBLDABS)/%.$(OBJEXT) : %.$(SRCEXT) $(FULLINCLUDES) $(FULLBASEINCLUDES) $(FULLGENINCLUDES) $(call pipe,$(EPOCBLDABS))
+	$(do_asm)
+
+else
+
+ifeq "$(CPU)" "x86"
+FULLBASEINCLUDES := $(addprefix $(EPOCBLDABS)/,$(BASEINCLUDES))
+FULLINCLUDES := $(addprefix $(EPOCBLDABS)/,$(INCLUDES))
+
+$(FULLBASEINCLUDES) $(FULLINCLUDES) : $(EPOCBLDABS)/%.inc : %.inc
+	$(CP) $(call slash2generic,$<) $(call slash2generic,$@) 
+
+$(FULLBASEOBJECTS) $(FULLOBJECTS) : $(EPOCBLDABS)/%.$(OBJEXT) : %.$(SRCEXT) $(FULLBASEINCLUDES) $(FULLGENINCLUDES) $(FULLINCLUDES)
+	$(do_asm)
+
+else
+$(FULLBASEOBJECTS) $(FULLOBJECTS) : $(EPOCBLDABS)/%.$(OBJEXT) : %.$(SRCEXT) $(BASEINCLUDES) $(FULLGENINCLUDES) $(INCLUDES) $(call pipe,$(EPOCBLDABS))
+	$(do_asm)
+
+endif
+endif
+
+# How to translate the .h files to .inc
+$(FULLGENINCLUDES) : $(EPOCBLDABS)/%.$(INCEXT) : %.h $(call pipe,$(EPOCBLDABS))
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ $(ASMTYP)
+
+
+# How to make the working directories
+$(EPOCBLDABS) $(EPOCTRG) :
+	$(call ifnotexistd,$(call slash2generic,$@))
+
+# Makmake targets
+.PHONY : MAKMAKE FREEZE LIB CLEANLIB RESOURCE FINAL BLD SAVESPACE RELEASABLES CLEAN
+.PHONY : build skip
+
+MAKMAKE :
+	echo Nothing to do
+	echo $(BASESRCPATH)
+
+FREEZE :
+	echo Nothing to do
+	echo $(BASESRCPATH)
+
+LIB :
+	echo Nothing to do
+	echo $(BASESRCPATH)
+
+CLEANLIB :
+	echo Nothing to do
+	echo $(BASESRCPATH)
+
+RESOURCE :
+	echo Nothing to do
+	echo $(BASESRCPATH)
+
+FINAL :
+	echo Nothing to do
+
+BLD SAVESPACE : $(PROCEED)
+
+RELEASABLES :
+	@echo $(TRG)
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,$(TRG)) 
+	-$(ERASE) $(call slash2generic,$(EPOCBLDABS)/*.*) 
+
+build: $(EPOCTRG) $(EPOCBLDABS) $(TRG)
+	echo Bootstrap built for $(PLATFORM) $(CFG)
+
+skip:
+	echo Bootstrap build skipped for $(PLATFORM) $(CFG)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/bootstrap.xml.hide	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build build/2_0.xsd">
+
+<!-- Extension interfaces : replacements for Template Extension Makefiles 
+-->
+
+<interface name="base.bootstrap" extends="Symbian.KernelFLM" flm="bootstrap.flm">
+		<param name="E32PATH" />
+		<param name="NAME" />
+		<param name="MEMMODEL" />
+		<param name="EXTRA_INC_PATH" default=''/>
+		<param name="EXTRA_EPOC32_INC_PATH" default=''/>
+		<param name="SOURCES" />
+		<param name="INCLUDES" />
+		<param name="ASM_MACROS" default='' />
+		<param name="GENINCLUDES_HEADERS" default=''/>
+		<param name="CPU" default='arm'/>
+		<param name="SMP" default=''/>
+		<param name="LINKBASE" default='0x00000000'/>
+		<param name="BASESOURCES_NAMES" default="bootmain.s bootcpu.s bootutils.s"/>
+		<param name="INC_PATH" default=''/>
+	</interface>
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/config.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the config extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/config.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,69 @@
+# Copyright (c) 2006-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:
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not. 
+# This is needed to ensure compatibility with SBSv1.
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+ifndef HALPATH
+HALPATH := ..
+endif
+
+ifndef SOURCE
+SOURCE := hal
+endif
+
+ifndef CONFIG_HCF_FILE
+CONFIG_HCF_FILE := config.hcf
+endif
+
+#MDIR := $(call generated,generatedcpp/hal) # abld
+#MDIR := $(call generated,base/lubbock) # raptor
+MDIR := $(call generatedcpp)
+
+MAKMAKE : $(MDIR)/$(PREFIX)values.cpp $(MDIR)/$(PREFIX)config.cpp
+
+FREEZE :
+
+LIB :
+
+CLEANLIB :
+
+RESOURCE :
+
+FINAL :
+
+BLD SAVESPACE : $(MDIR)/$(PREFIX)values.cpp $(MDIR)/$(PREFIX)config.cpp
+
+RELEASABLES :
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,$(MDIR)/$(PREFIX)values.cpp) 
+	-$(ERASE) $(call slash2generic,$(MDIR)/$(PREFIX)config.cpp) 
+#	-$(ERASE) $(MDIR)/$(PREFIX)values.cpp
+#	-$(ERASE) $(MDIR)/$(PREFIX)config.cpp
+
+$(MDIR)/$(PREFIX)values.cpp : $(SOURCE)/values.hda $(EPOCROOT)epoc32/include/platform/hal_data.h
+	-$(call createdir,"$(MDIR)")
+	perl $(HALPATH)/hal/halcfg.pl $(EPOCROOT)epoc32/include/platform/hal_data.h $(SOURCE)/values.hda $(MDIR)/$(PREFIX)values.cpp
+
+$(MDIR)/$(PREFIX)config.cpp : $(SOURCE)/$(CONFIG_HCF_FILE) $(EPOCROOT)epoc32/include/platform/hal_data.h
+	-$(call createdir,"$(MDIR)")
+	perl $(HALPATH)/hal/halcfg.pl -x $(EPOCROOT)epoc32/include/platform/hal_data.h $(SOURCE)/$(CONFIG_HCF_FILE) $(MDIR)/$(PREFIX)config.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/copy_default.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2006-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:
+# Meta information for the copy_default extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/copy_default.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,48 @@
+# Copyright (c) 1999-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:
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+SOURCE_COPY=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/$(SOURCES)
+TARGET_COPY=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/$(TARGET)
+
+$(TARGET_COPY) : $(SOURCE_COPY)
+	$(call cpfeature,"$(SOURCE_COPY)","$(TARGET_COPY)")
+#	perl $(EPOCROOT)epoc32/tools/copyfeaturevariants.pl "$(SOURCE_COPY)" "$(TARGET_COPY)"
+#	$(CP) "$?" "$@"
+
+#
+# The targets invoked by abld...
+#
+
+MAKMAKE BLD SAVESPACE FREEZE LIB CLEANLIB RESOURCE :
+	@echo Nothing to do for "$@"
+
+CLEAN : 
+	-$(ERASE) $(TARGET_COPY)
+
+RELEASABLES : 
+	@echo $(TARGET_COPY)
+
+# we have to wait until the SOURCE_COPY is built before we can copy it...
+#
+FINAL : $(TARGET_COPY)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/genexec.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the genexec extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/genexec.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,71 @@
+# Copyright (c) 2006-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:
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+XINCDIR := $(INC_PATH)
+XINCKDIR := $(INC_PATH)/kernel
+
+PROCEED:=all
+ifneq "$(PBUILDPID)" ""
+	ifneq "$(PLATFORM)" "$(__firstplat)"
+		PROCEED:=skip
+	endif
+endif
+
+.PHONY : MAKMAKE FREEZE LIB CLEANLIB RESOURCE FINAL BLD SAVESPACE RELEASABLES CLEAN
+.PHONY : all skip
+
+MAKMAKE : $(PROCEED)
+
+FREEZE :
+
+LIB : $(PROCEED)
+
+CLEANLIB :
+
+RESOURCE :
+
+FINAL :
+
+BLD SAVESPACE : $(PROCEED)
+
+RELEASABLES :
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,$(XINCDIR)/exec_enum.h) 
+	-$(ERASE) $(call slash2generic,$(XINCDIR)/exec_user.h) 
+	-$(ERASE) $(call slash2generic,$(XINCKDIR)/exec_kernel.h) 
+
+all: $(XINCDIR)/exec_enum.h $(XINCDIR)/exec_user.h $(XINCKDIR)/exec_kernel.h
+
+$(XINCDIR)/exec_enum.h : $(EXTRA_SRC_PATH)/execs.txt $(EXTRA_SRC_PATH)/genexec.pl
+	perl $(EXTRA_SRC_PATH)/genexec.pl -i $(EXTRA_SRC_PATH)/execs.txt -e $(XINCDIR)/exec_enum.h -u $(XINCDIR)/exec_user.h -k $(XINCKDIR)/exec_kernel.h
+
+$(XINCDIR)/exec_user.h : $(EXTRA_SRC_PATH)/execs.txt $(EXTRA_SRC_PATH)/genexec.pl
+	perl $(EXTRA_SRC_PATH)/genexec.pl -i $(EXTRA_SRC_PATH)/execs.txt -e $(XINCDIR)/exec_enum.h -u $(XINCDIR)/exec_user.h -k $(XINCKDIR)/exec_kernel.h
+
+$(XINCKDIR)/exec_kernel.h :  $(EXTRA_SRC_PATH)/execs.txt $(EXTRA_SRC_PATH)/genexec.pl
+	perl $(EXTRA_SRC_PATH)/genexec.pl -i $(EXTRA_SRC_PATH)/execs.txt -e $(XINCDIR)/exec_enum.h -u $(XINCDIR)/exec_user.h -k $(XINCKDIR)/exec_kernel.h
+
+
+skip:
+	echo GENEXEC skipped for $(PLATFORM) $(CFG)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h2_genbootinc.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the h2_genbootinc extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h2_genbootinc.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,64 @@
+# Copyright (c) 2006-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:
+# Generate assembler inc files from header files
+# 
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+XINCDIR := $(INC_PATH)/h2
+XINCDIR2 := $(INC_PATH)/assp/omap1610
+
+MAKMAKE : all
+
+FREEZE :
+
+LIB : all
+
+CLEANLIB :
+
+RESOURCE :
+
+FINAL :
+
+BLD SAVESPACE : all
+
+RELEASABLES :
+	@echo $(XINCDIR)/h2const.inc
+	@echo $(XINCDIR)/nand_fbr_offset.inc
+	@echo $(XINCDIR2)/omapconst.inc
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,$(XINCDIR)/h2const.inc) 
+	-$(ERASE) $(call slash2generic,$(XINCDIR)/nand_fbr_offset.inc) 
+#	-$(ERASE) $(XINCDIR)/h2const.inc
+#	-$(ERASE) $(XINCDIR)/nand_fbr_offset.inc
+	@echo $(XINCDIR2)/omapconst.inc
+
+all: $(XINCDIR)/h2const.inc $(XINCDIR)/nand_fbr_offset.inc $(XINCDIR2)/omapconst.inc
+
+$(XINCDIR)/h2const.inc : $(XINCDIR)/h2const.h
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $(XINCDIR)/h2const.h $(XINCDIR)/h2const.inc ARMASM
+
+$(XINCDIR)/nand_fbr_offset.inc : $(XINCDIR)/nand_fbr_offset.h
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $(XINCDIR)/nand_fbr_offset.h $(XINCDIR)/nand_fbr_offset.inc ARMASM
+
+$(XINCDIR2)/omapconst.inc : $(XINCDIR2)/omapconst.h
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $(XINCDIR2)/omapconst.h $(XINCDIR2)/omapconst.inc ARMASM
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h2_restricted_coreldr.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the h2_restricted_coreldr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h2_restricted_coreldr.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,384 @@
+# Copyright (c) 2006-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:
+# Code execute address set in the linker file
+# 
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+## If any of these macros are changed, then execute "abld clean coreldr" from this directory
+## Use this macro if it is required to use the MMU
+## if the MMU is not require either comment it out or set it FALSE
+USE_MMU := TRUE
+  
+## This macro enables benchmarking code. Comment out or set FALSE if not required
+#WRITE_TIMINGS := TRUE
+
+## This macro causes the page tables to be output. Comment out or set FALSE if not required
+## If this option is selected then the MMU code will be enabled
+#DUMP_PAGE_TABLES := TRUE
+
+
+## Make sure all 3 macros are either TRUE or FALSE
+# Enforce USE_MMU if page table is to be dumped
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+        USE_MMU := TRUE
+else
+        DUMP_PAGE_TABLES := FALSE
+endif
+
+ifneq "$(USE_MMU)" "TRUE"
+        USE_MMU := FALSE
+endif
+
+ifneq "$(WRITE_TIMINGS)" "TRUE"
+        WRITE_TIMINGS := FALSE
+endif
+
+#Set the directories
+GENSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr
+XSRSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr/unistore2
+SPECSRCDIR := $(EXTENSION_ROOT)/../omaph2bsp/h2/nandboot/coreldr
+PLATSRCDIR := $(EXTENSION_ROOT)/../omaph2bsp/shared/bootstrap
+
+VARIANTINC := $(EXTENSION_ROOT)/../omaph2bsp/h2/inc
+ARMDIR := $(INC_PATH)/kernel/arm
+
+GENINC1 := $(INC_PATH) /epoc32/include
+GENDRIVERINC := $(INC_PATH)/drivers
+GENINC2 := $(INC_PATH)/drivers/unistore2
+H2BLDDIR := $(EXTENSION_ROOT)/../omaph2bsp/h2
+GENINCPATH:= $(GENSRCDIR) $(SPECSRCDIR) $(XSRSRCDIR) $(VARIANTINC) $(GENINC1) $(GENDRIVERINC) $(GENINC2) $(H2BLDDIR) $(PLATSRCDIR)
+
+# Set the source/include/target directories
+GSRCDIR = ../../../unref/orphan/cedgen/shared/nandboot
+VINCDIR = ../../../unref/orphan/cedgen/h2/inc
+GINCDIR = ../../../unref/orphan/cedgen/shared/inc
+
+# Build directory (EPOCBLD too long)
+#BUILDLOC = $(EPOCROOT)epoc32/build/omap/h2/specific/unistore2/nandboot/coreldr/$(PLATFORM_PATH)/$(CFG_PATH)
+BUILDLOC = $(EPOCBLD)/$(PLATFORM_PATH)/$(CFG_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TARGET = $(TARGETDIR)/h2_un2_coreldr.bin
+TMPTARGET = $(BUILDLOC)/coreldr.tmp
+
+#Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR) $(GENSRCDIR)
+vpath %.inc . $(SPECSRCDIR)  $(VARIANTINC) $(EPOCINCDIR) $(BLDDIR) $(ARMDIR) $(PLATSRCDIR) $(GENSRCDIR) $(H2BLDDIR)
+vpath %.ginc . $(BUILDLOC)
+
+INCLUDES := nand_macro.inc
+
+VHEADERS := nanddevice.h 
+BUILTINCLUDES := nanddevice.inc
+BUILTINCLUDES2 := nand_plat.inc
+BLDINCLUDES := config.inc
+PLATINCLUDES := 16xx_common.inc general.inc
+GENINCLUDES := armcpudefs.inc
+
+ASMSOURCE := coreldrasm.s
+GENCPPSOURCE := coreldr.cpp inflate.cpp 
+XSRCPPSOURCE := coreldrxsr.cpp
+ifeq "$(USE_MMU)" "TRUE"
+        GENASMSOURCE := coreldrmmu.s # only link in the MMU stuff if required
+endif
+
+HEADERS := inflate.h coreldr.h
+SPECHEADERS := nand_plat.h
+
+## Address at which binary is loaded and started from
+LINKBASE = 0x20000C00
+
+
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+
+# Select the toolchain: ARM RVCT, then GCC 
+
+# Use GCC toolchain if no other is available
+TOOLVER := GCC
+RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4)))
+ifeq "$(RVCTSTR)" "RVCT"
+        TOOLVER := RVCT
+        OP := --
+        OB := o
+endif
+
+# Build up logical TRUE defines
+ifeq "$(USE_MMU)" "TRUE"
+        ASM_TRUE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "TRUE"
+        ASM_TRUE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+        ASM_TRUE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+# Build up logical FALSE defines
+ifeq "$(USE_MMU)" "FALSE"
+        ASM_FALSE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "FALSE"
+        ASM_FALSE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "FALSE"
+        ASM_FALSE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+#Arm RVCT tools
+ifeq "$(TOOLVER)" "RVCT"
+        ASM_TRUE_MACROS += USE_CXSF
+        ASM := armasm
+        LINK := armlink
+        FROMELF := fromelf
+        CPP := armcc
+
+        OBJEXT := o
+        INCEXT := inc
+
+        ARMCCFLAGS := --arm -c -Otime --cpp
+        ARMCCFLAGS := $(ARMCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        ARMCCFLAGS := $(ARMCCFLAGS) -DEKA2
+        ARMCCFLAGS := $(ARMCCFLAGS) -DSYMBIAN_SUPPORT_UNISTORE2
+
+
+        ARMCCFLAGS := $(ARMCCFLAGS) --preinclude $(EPOCROOT)epoc32/include/rvct/rvct.h
+
+        ifeq "$(CFG)" "UDEB"
+        ARMCCFLAGS := $(ARMCCFLAGS) -D_DEBUG
+        endif
+        
+        ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+        ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),$(OP)predefine "$(macro) SETL {FALSE}")
+        ASM_LINKBASE_MACRO := $(OP)predefine "_LINKBASE_ SETA $(LINKBASE)"
+
+        AFLAGS := -g $(OP)keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -I$(BUILDLOC) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        LFLAGS := $(OP)entry BootEntry $(OP)ro-base $(LINKBASE) $(OP)FIRST BootEntry $(OP)map        
+        SYMOPT := $(OP)symdefs
+        ASMTYP := ARMASM
+        LINKFILE :=
+
+        define do_compile
+                $(CPP) $(ARMCCFLAGS) $< -o $@
+        endef
+        define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ ARMASM
+        endef
+        define do_asm
+                $(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+        endef
+        define do_link
+                $(LINK) $(LFLAGS) -$(OB) $@ $(FULLOBJECTS)
+        endef
+        define do_strip
+                $(FROMELF) $(OP)bin $(OP)output $@ $<
+        endef
+endif
+
+
+#GCC build options
+ifeq "$(TOOLVER)" "GCC"
+        ASM := as
+        AFLAGS := -mapcs-32 -R -n -I$(BUILDLOC)
+
+        ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),--defsym $(macro)=1)
+        ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),--defsym $(macro)=0)
+        ASM_LINKBASE_MACRO := --defsym _LINKBASE_=$(LINKBASE)
+
+        LINKFLAGS = -n --section-alignment 4 --file-alignment 2 -no-whole-archive
+        GCCFLAGS=-march=armv4 -nostdinc -pipe -c -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas
+        GCCFLAGS := $(GCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        GCCDEFS = -D__SYMBIAN32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__MARM_ARM4__ -DEKA2 -DSYMBIAN_SUPPORT_UNISTORE2
+        ifeq "$(CFG)" "UDEB"
+        GCC = gcc -x c++ -g -O2 $(GCCFLAGS) -D_DEBUG -D_UNICODE $(GCCDEFS)
+        else
+        GCC = gcc -x c++ -s -fomit-frame-pointer -O2 $(GCCFLAGS) -DNDEBUG -D_UNICODE $(GCCDEFS)
+        endif
+
+        LINKFILE = $(SPECSRCDIR)/coreldr.lnk
+        OBJEXT := o
+        INCEXT := ginc
+
+        PROCESS_INCLUDES := 1
+        define do_compile
+                $(GCC) -o $@ $<
+        endef
+        define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ AS
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $@ $(join $(basename $@),.ginc)
+        endef 
+        define do_includes
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@ 
+        endef
+        define do_asm
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $(join $(basename $@),.s)
+                $(AS) $(AFLAGS) $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -o $@ $(join $(basename $@),.s)
+        endef
+        define do_strip
+                strip -O binary -o "$(TARGET)" "$(TMPTARGET)"
+        
+		$(ERASE) $(call slash2generic,"$(TMPTARGET)") 
+        #	$(ERASE) "$(TMPTARGET)"
+		echo Built $(TARGET)
+        endef
+        define do_link
+                ld -o "$(TMPTARGET)"  --start $(FULLOBJECTS) --script=$(LINKFILE)
+        endef
+endif
+
+
+#CPP source processing
+FULLCPPSOURCE := $(addprefix $(GENSRCDIR)/,$(GENCPPSOURCE))
+
+#Header processing
+FULLHEADERS := $(addprefix $(GENSRCDIR)/,$(HEADERS))
+FULLSPECHEADERS := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+
+FULLVHEADERS := $(addprefix $(GENDRIVERINC)/,$(VHEADERS))
+FULLBUILTINCLUDES := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES))
+$(FULLBUILTINCLUDES) : $(FULLVHEADERS)
+	$(do_h2inc)
+
+FULLVHEADERS2 := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+FULLBUILTINCLUDES2 := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES2))
+$(FULLBUILTINCLUDES2) : $(FULLVHEADERS2) 
+	$(do_h2inc)
+
+#object names
+GENCPPOBJECTS := $(foreach f,$(GENCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(GENCPPOBJECTS))
+
+XSRCPPOBJECTS := $(foreach f,$(XSRCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLXSRCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(XSRCPPOBJECTS))
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+GENASMOBJECTS := $(foreach f,$(GENASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENASMOBJECTS := $(addprefix $(BUILDLOC)/,$(GENASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENASMOBJECTS) $(FULLGENCPPOBJECTS) $(FULLXSRCPPOBJECTS)
+
+ifdef PROCESS_INCLUDES
+
+GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC))
+
+#Creation of headers
+FULLINCLUDES := $(foreach f,$(INCLUDES),$(basename $(f)).$(INCEXT))
+FULLINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLINCLUDES))
+
+$(FULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLBLDINCLUDES := $(foreach f,$(BLDINCLUDES),$(basename $(f)).$(INCEXT))
+FULLBLDINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLBLDINCLUDES))
+$(FULLBLDINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLPLATINCLUDES := $(foreach f,$(PLATINCLUDES),$(basename $(f)).$(INCEXT))
+FULLPLATINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLPLATINCLUDES))
+$(FULLPLATINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLGENINCLUDES := $(foreach f,$(GENINCLUDES),$(basename $(f)).$(INCEXT))
+FULLGENINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLGENINCLUDES))
+$(FULLGENINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+else
+FULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(INCLUDES))
+FULLPLATINCLUDES:= $(addprefix $(PLATSRCDIR)/,$(PLATINCLUDES))
+FULLGENINCLUDES:= $(addprefix $(GENSRCDIR)/,$(GENINCLUDES))
+FULLBLDINCLUDES:= $(addprefix $(H2BLDDIR)/,$(BLDINCLUDES))
+
+#Arm RVCT specifics here
+
+endif
+
+
+#Link 
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#strip
+$(TARGET) : $(TMPTARGET)
+	$(do_strip)
+
+#CPP objects
+$(FULLGENCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLXSRCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(XSRSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+
+#Asm objects
+$(FULLGENASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/$(GENASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBUILTINCLUDES3) $(FULLDRIVERINCLUDES) $(FULLARMINCLUDES) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+$(FULLASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+# make the work directories
+$(TARGETDIR) :
+	$(call ifnotexistd,"$(TARGETDIR)")
+
+$(BUILDLOC) :
+	$(call ifnotexistd,"$(BUILDLOC)")
+
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)") 
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*") 
+#	-$(ERASE) "$(TARGET)"
+#	-$(ERASE) "$(BUILDLOC)/*.*"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h4_genbootinc.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,22 @@
+# Copyright (c) 2005-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:
+# Meta information for the h4_genbootinc extension template
+#
+
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h4_genbootinc.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,58 @@
+# Copyright (c) 2006-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:
+# Generate assembler inc files from header files
+# 
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+XINCDIR := $(INC_PATH)/omap_hrp/h4
+XINCDIR2 := $(INC_PATH)/omap_hrp/assp/omap24xx
+
+MAKMAKE : all
+
+FREEZE :
+
+LIB : all
+
+CLEANLIB :
+
+RESOURCE :
+
+FINAL :
+
+BLD SAVESPACE : all
+
+RELEASABLES :
+	@echo $(XINCDIR)/nand_fbr_offset.inc
+	@echo $(XINCDIR2)/omap24xxconst.inc
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,$(XINCDIR)/nand_fbr_offset.inc) 
+#	-$(ERASE) $(XINCDIR)/nand_fbr_offset.inc
+	@echo $(XINCDIR2)/omap24xxconst.inc
+
+all: $(XINCDIR2)/omap24xxconst.inc $(XINCDIR)/nand_fbr_offset.inc 
+
+$(XINCDIR)/nand_fbr_offset.inc : $(XINCDIR)/nand_fbr_offset.h
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $(XINCDIR)/nand_fbr_offset.h $(XINCDIR)/nand_fbr_offset.inc ARMASM
+
+$(XINCDIR2)/omap24xxconst.inc : $(XINCDIR2)/omap24xxconst.h
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $(XINCDIR2)/omap24xxconst.h $(XINCDIR2)/omap24xxconst.inc ARMASM
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h4_restricted_coreldr.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the h4_restricted_coreldr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h4_restricted_coreldr.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,388 @@
+# Copyright (c) 2006-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:
+# #  NB! LINKBASE :  Code execute address also set coreldr.lnk file 
+# #  MUST REFLECT CORELOADER ADDRESS RELOCATION IN BOTH FILES!!
+# 
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+## If any of these macros are changed, then execute "abld clean coreldr" from this directory
+## Use this macro if it is required to use the MMU
+## if the MMU is not require either comment it out or set it FALSE
+USE_MMU := TRUE
+  
+## This macro enables benchmarking code. Comment out or set FALSE if not required
+#WRITE_TIMINGS := TRUE
+
+## This macro causes the page tables to be output. Comment out or set FALSE if not required
+## If this option is selected then the MMU code will be enabled
+#DUMP_PAGE_TABLES := TRUE
+
+
+## Make sure all 3 macros are either TRUE or FALSE
+# Enforce USE_MMU if page table is to be dumped
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+        USE_MMU := TRUE
+else
+        DUMP_PAGE_TABLES := FALSE
+endif
+
+ifneq "$(USE_MMU)" "TRUE"
+        USE_MMU := FALSE
+endif
+
+ifneq "$(WRITE_TIMINGS)" "TRUE"
+        WRITE_TIMINGS := FALSE
+endif
+
+#Set the directories
+GENSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr
+XSRSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr/unistore2
+SPECSRCDIR := $(EXTENSION_ROOT)/../omaph4bsp/h4/nandboot/coreldr_smallblk
+
+VARIANTINC := $(INC_PATH)/omap_hrp/h4
+VARIANTINC2 := $(EXTENSION_ROOT)/../omaph4bsp/shared/bootstrap
+VARIANTINC3 := $(EXTENSION_ROOT)/../omaph4bsp/h4/nand
+
+GENINC1 := $(INC_PATH)
+GENINC3 := $(EPOCROOT)epoc32/include
+GENDRIVERINC := $(INC_PATH)/drivers
+GENINC2 := $(INC_PATH)/drivers/unistore2
+GENINCPATH:= $(GENSRCDIR) $(SPECSRCDIR) $(XSRSRCDIR) $(VARIANTINC) $(VARIANTINC2) $(VARIANTINC3) $(GENINC1) $(GENDRIVERINC) $(GENINC2) $(GENINC3)
+
+# Set the source/include/target directories
+GSRCDIR = ../../../unref/orphan/cedgen/shared/nandboot
+VINCDIR = ../../../unref/orphan/cedgen/h4/inc
+GINCDIR = ../../../unref/orphan/cedgen/shared/inc
+EPOCINCDIR = $(INC_PATH)/omap_hrp/h4
+
+# Build directory (EPOCBLD too long)
+#BUILDLOC = $(EPOCROOT)epoc32/build/omap_hrp/h4_restricted/unistore2/nandboot/coreldr/$(PLATFORM_PATH)
+#BUILDLOC = $(EPOCBLD)/$(PLATFORM_PATH)/$(CFG_PATH)  # Error as $(EPOCBLD) include platform 
+BUILDLOC = $(EPOCBLD)/$(CFG_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TARGET = $(TARGETDIR)/h4hrp_un2_sb_coreldr.bin
+TMPTARGET = $(BUILDLOC)/h4hrp_un2_sb_coreldr.elf
+
+#Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR)
+vpath %.inc . $(SPECSRCDIR) $(EPOCINCDIR)
+vpath %.ginc . $(BUILDLOC)
+
+INCLUDES :=
+
+VHEADERS := nanddevice.h
+BUILTINCLUDES := nanddevice.inc config.inc
+BUILTINCLUDES2 := nand_plat.inc
+
+ASMSOURCE := coreldrasm_smallblk.s
+GENCPPSOURCE := coreldr.cpp inflate.cpp
+XSRCPPSOURCE := coreldrxsr.cpp
+
+ifeq "$(USE_MMU)" "TRUE"
+        GENASMSOURCE := coreldrmmu.s # only link in the MMU stuff if required
+endif
+
+HEADERS := inflate.h coreldr.h
+SPECHEADERS := nand_plat.h
+
+## Address at which coreloader binary is loaded and then started from
+#
+# On H4 this number is base of ram + 48MB (permitting 48MB core images)
+# this number is pretty arbitrary and may be raised higher into ram
+# if necessary as long as the corresponding change is also made to
+# KCoreLoaderAddress in variant_bootstrap.inc
+#
+LINKBASE = 0x83000000
+
+
+
+#ARMASM_OUT := $(shell armasm 2>&1)
+#ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+ARMASM_OUT := $(wordlist 2, 4, $(shell armasm --vsn 2>&1))
+
+# Select the toolchain: ARM RVCT, then GCC
+
+# Use GCC toolchain if no other is available
+TOOLVER := GCC
+#RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4)))
+RVCTSTR := $(strip $(findstring RVCT,$(ARMASM_OUT)))
+ifeq "$(RVCTSTR)" "RVCT"
+        TOOLVER := RVCT
+        OP := --
+        OB := o
+endif
+
+# Build up logical TRUE defines
+ifeq "$(USE_MMU)" "TRUE"
+        ASM_TRUE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "TRUE"
+        ASM_TRUE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+        ASM_TRUE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+# Build up logical FALSE defines
+ifeq "$(USE_MMU)" "FALSE"
+        ASM_FALSE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "FALSE"
+        ASM_FALSE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "FALSE"
+        ASM_FALSE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+#Arm RVCT tools
+ifeq "$(TOOLVER)" "RVCT"
+        ASM_TRUE_MACROS += USE_CXSF
+        ASM := armasm
+        LINK := armlink
+        FROMELF := fromelf
+        CPP := armcc
+
+        OBJEXT := o
+        INCEXT := inc
+
+        ARMCCFLAGS := --arm -c -Otime --cpp
+        ARMCCFLAGS := $(ARMCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        ARMCCFLAGS := $(ARMCCFLAGS) -DEKA2
+        ARMCCFLAGS := $(ARMCCFLAGS) -DSYMBIAN_SUPPORT_UNISTORE2
+
+        ARMCCFLAGS := $(ARMCCFLAGS) --preinclude $(EPOCROOT)epoc32/include/rvct/rvct.h
+
+        ifeq "$(CFG)" "UDEB"
+        ARMCCFLAGS := $(ARMCCFLAGS) -D_DEBUG
+        endif
+
+        ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+        ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),$(OP)predefine "$(macro) SETL {FALSE}")
+        ASM_LINKBASE_MACRO := $(OP)predefine "_LINKBASE_ SETA $(LINKBASE)"
+
+        AFLAGS := -g $(OP)keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -I$(BUILDLOC) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        LFLAGS := $(OP)entry BootEntry $(OP)ro-base $(LINKBASE) $(OP)FIRST BootEntry $(OP)map
+        SYMOPT := $(OP)symdefs
+        ASMTYP := ARMASM
+        LINKFILE :=
+
+        define do_compile
+                $(CPP) $(ARMCCFLAGS) $< -o $@
+        endef
+        define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ ARMASM
+        endef
+        define do_asm
+                $(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+        endef
+        define do_link
+                $(LINK) $(LFLAGS) -$(OB) $@ $(FULLOBJECTS)
+        endef
+        define do_strip
+                $(FROMELF) $(OP)bin $(OP)output $@ $<
+        endef
+endif
+
+
+#GCC build options
+ifeq "$(TOOLVER)" "GCC"
+        ASM := as
+        AFLAGS := -mapcs-32 -R -n -I$(BUILDLOC)
+
+        ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),--defsym $(macro)=1)
+        ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),--defsym $(macro)=0)
+        ASM_LINKBASE_MACRO := --defsym _LINKBASE_=$(LINKBASE)
+
+        LINKFLAGS = -n --section-alignment 4 --file-alignment 2 -no-whole-archive
+        GCCFLAGS=-march=armv4 -nostdinc -pipe -c -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas
+        GCCFLAGS := $(GCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        GCCDEFS = -D__SYMBIAN32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__MARM_ARM4__ -DEKA2 -DSYMBIAN_SUPPORT_UNISTORE2
+        ifeq "$(CFG)" "UDEB"
+        GCC = gcc -x c++ -g -O2 $(GCCFLAGS) -D_DEBUG -D_UNICODE $(GCCDEFS)
+        else
+        GCC = gcc -x c++ -s -fomit-frame-pointer -O2 $(GCCFLAGS) -DNDEBUG -D_UNICODE $(GCCDEFS)
+        endif
+
+        LINKFILE = $(SPECSRCDIR)/coreldr.lnk
+        OBJEXT := o
+        INCEXT := ginc
+
+        PROCESS_INCLUDES := 1
+        define do_compile
+                $(GCC) -o $@ $<
+        endef
+        define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ AS
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $@ $(join $(basename $@),.ginc)
+        endef
+        define do_includes
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
+        endef
+        define do_asm
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $(join $(basename $@),.s)
+                $(AS) $(AFLAGS) $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -o $@ $(join $(basename $@),.s)
+        endef
+        define do_strip
+                strip -O binary -o "$(TARGET)" "$(TMPTARGET)"
+                echo Built $(TARGET)
+        endef
+        define do_link
+                ld -o "$(TMPTARGET)"  --start $(FULLOBJECTS) --script=$(LINKFILE)
+        endef
+endif
+
+
+#CPP source processing
+FULLCPPSOURCE := $(addprefix $(GENSRCDIR)/,$(GENCPPSOURCE))
+
+#Header processing
+FULLHEADERS := $(addprefix $(GENSRCDIR)/,$(HEADERS))
+FULLSPECHEADERS := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+
+FULLVHEADERS := $(addprefix $(GENDRIVERINC)/,$(VHEADERS))
+FULLBUILTINCLUDES := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES))
+$(FULLBUILTINCLUDES) : $(FULLVHEADERS)
+	$(do_h2inc)
+
+FULLVHEADERS2 := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+FULLBUILTINCLUDES2 := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES2))
+$(FULLBUILTINCLUDES2) : $(FULLVHEADERS2)
+	$(do_h2inc)
+
+#object names
+GENCPPOBJECTS := $(foreach f,$(GENCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(GENCPPOBJECTS))
+
+XSRCPPOBJECTS := $(foreach f,$(XSRCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLXSRCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(XSRCPPOBJECTS))
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+GENASMOBJECTS := $(foreach f,$(GENASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENASMOBJECTS := $(addprefix $(BUILDLOC)/,$(GENASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENASMOBJECTS) $(FULLGENCPPOBJECTS) $(FULLXSRCPPOBJECTS)
+
+ifdef PROCESS_INCLUDES
+
+GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC))
+
+#Creation of headers
+FULLINCLUDES := $(foreach f,$(INCLUDES),$(basename $(f)).$(INCEXT))
+FULLINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLINCLUDES))
+
+$(FULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLBLDINCLUDES := $(foreach f,$(BLDINCLUDES),$(basename $(f)).$(INCEXT))
+FULLBLDINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLBLDINCLUDES))
+$(FULLBLDINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLPLATINCLUDES := $(foreach f,$(PLATINCLUDES),$(basename $(f)).$(INCEXT))
+FULLPLATINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLPLATINCLUDES))
+$(FULLPLATINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLGENINCLUDES := $(foreach f,$(GENINCLUDES),$(basename $(f)).$(INCEXT))
+FULLGENINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLGENINCLUDES))
+$(FULLGENINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+else
+FULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(INCLUDES))
+FULLPLATINCLUDES:= $(addprefix $(PLATSRCDIR)/,$(PLATINCLUDES))
+FULLGENINCLUDES:= $(addprefix $(GENSRCDIR)/,$(GENINCLUDES))
+FULLBLDINCLUDES:= $(addprefix $(H2BLDDIR)/,$(BLDINCLUDES))
+
+#Arm RVCT specifics here
+
+endif
+
+
+#Link
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#strip
+$(TARGET) : $(TMPTARGET)
+	$(do_strip)
+
+#CPP objects
+$(FULLGENCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLXSRCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(XSRSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+#Asm objects
+$(FULLGENASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/$(GENASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBUILTINCLUDES3) $(FULLDRIVERINCLUDES) $(FULLARMINCLUDES) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+$(FULLASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+# make the work directories
+$(TARGETDIR) :
+	$(call ifnotexistd,"$(TARGETDIR)")
+
+$(BUILDLOC) :
+	$(call ifnotexistd,"$(BUILDLOC)")
+
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)") 
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*") 
+#	-$(ERASE) "$(TARGET)"
+#	-$(ERASE) "$(BUILDLOC)/*.*"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the h4_restricted_coreldr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h4_restricted_on_coreldr.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,355 @@
+# Copyright (c) 2007-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:
+# #  NB! LINKBASE :  Code execute address also set coreldr.lnk file 
+# #  MUST REFLECT CORELOADER ADDRESS RELOCATION IN BOTH FILES!!
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+## If any of these macros are changed, then execute "abld clean coreldr" from this directory
+## Use this macro if it is required to use the MMU
+## if the MMU is not require either comment it out or set it FALSE
+USE_MMU := TRUE
+  
+# This macro enables benchmarking code. Comment out or set FALSE if not required
+#WRITE_TIMINGS := TRUE
+
+## This macro causes the page tables to be output. Comment out or set FALSE if not required
+## If this option is selected then the MMU code will be enabled
+#DUMP_PAGE_TABLES := TRUE
+
+
+## Make sure all 3 macros are either TRUE or FALSE
+# Enforce USE_MMU if page table is to be dumped
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+	USE_MMU := TRUE
+else
+	DUMP_PAGE_TABLES := FALSE
+endif
+
+ifneq "$(USE_MMU)" "TRUE"
+	USE_MMU := FALSE
+endif
+
+ifneq "$(WRITE_TIMINGS)" "TRUE"
+	WRITE_TIMINGS := FALSE
+endif
+
+#Set the directories
+GENSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr
+BLSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/UTIL/ONBL2
+XSRSRCDIR1 := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/OAM/OSLess
+XSRSRCDIR2 := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/LLD/DNandO
+SPECSRCDIR := $(EXTENSION_ROOT)/../omaph4bsp/h4/nandboot/coreldr_onenand
+SPECXSRSRCDIR := $(EXTENSION_ROOT)/drivers/h4ons
+
+VARIANTINC := $(INC_PATH)/omap_hrp/h4
+VARIANTINC2 := $(EXTENSION_ROOT)/../omaph4bsp/shared/bootstrap
+VARIANTINC3 := $(EXTENSION_ROOT)/../omaph4bsp/h4/nand  $(EXTENSION_ROOT)/../omaph4bsp/assp/shared/assp $(EXTENSION_ROOT)/../omaph4bsp/assp/omap24xx/inc $(EXTENSION_ROOT)/../omaph4bsp/assp/omap24xx/assp $(EXTENSION_ROOT)/../omaph4bsp/assp/shared/interrupt $(EXTENSION_ROOT)/../omaph4bsp/assp/omap24xx/interrupt $(EXTENSION_ROOT)/../omaph4bsp/shared/gpio $(EXTENSION_ROOT)/../omaph4bsp/shared/mcspi $(EXTENSION_ROOT)/../omaph4bsp/assp/omap24xx/gpio $(EXTENSION_ROOT)/../omaph4bsp/assp/shared $(EXTENSION_ROOT)/../omaph4bsp/shared/cirq $(EXTENSION_ROOT)/../omaph4bsp/shared/dma $(EXTENSION_ROOT)/../omaph4bsp/assp/shared/dma
+
+GENINC1 := $(INC_PATH)
+GENINC3 := $(EPOCROOT)epoc32/include
+GENDRIVERINC := $(INC_PATH)/drivers
+GENINC2 := $(INC_PATH)/drivers/unistore2 $(INC_PATH)/memmodel/epoc $(INC_PATH)/kernel  $(INC_PATH)/kernel/arm $(INC_PATH)/nkern $(INC_PATH)/nkern/arm
+GENXSRINC := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/INC
+GENINCPATH:= $(GENSRCDIR) $(SPECSRCDIR) $(XSRSRCDIR1) $(XSRSRCDIR2) $(SPECXSRSRCDIR) $(VARIANTINC) $(VARIANTINC2) $(VARIANTINC3) $(GENINC1) $(GENDRIVERINC) $(GENINC2) $(GENINC3) $(GENINC4) $(GENXSRINC) $(GENINC3)
+
+# Set the source/include/target directories
+GSRCDIR = ../../../unref/orphan/cedgen/shared/nandboot
+VINCDIR = ../../../unref/orphan/cedgen/h4/inc
+GINCDIR = ../../../unref/orphan/cedgen/shared/inc
+EPOCINCDIR = $(INC_PATH)/omap_hrp/h4
+
+# Build directory (EPOCBLD too long)
+BUILDLOC = $(EPOCROOT)epoc32/build/omap_hrp/h4_restricted/unistore2/nandboot/coreldr/$(PLATFORM_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TARGET = $(TARGETDIR)$/h4hrp_un2_on_coreldr.bin
+TMPTARGET = $(BUILDLOC)$/h4hrp_un2_on_coreldr.elf
+
+#Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR)
+vpath %.inc . $(SPECSRCDIR) $(EPOCINCDIR)
+vpath %.ginc . $(BUILDLOC)
+
+VHEADERS := NandDevice.h
+BUILTINCLUDES := NandDevice.inc config.inc
+BUILTINCLUDES2 := nand_plat.inc
+
+ASMSOURCE := coreldrasm_onenand.s
+GENCPPSOURCE := inflate.cpp
+BLCPPSOURCE := ONbl2.cpp
+XSRCPPSOURCE1 := OSLessOAM.cpp
+XSRCPPSOURCE2 := onld.cpp
+SPECXSRCPPSOURCE := pam.cpp
+
+XSRLIB := $(EPOCROOT)epoc32/release/armv5/$(CFG)/nbl2.lib
+
+ifeq "$(USE_MMU)" "TRUE"
+	GENASMSOURCE := coreldrmmu.s # only link in the MMU stuff if required
+endif
+
+# HEADERS := inflate.h coreldr.h
+HEADERS := 
+SPECHEADERS := nand_plat.h
+
+## Address at which coreloader binary is loaded and then started from
+#
+# On H4 this number is base of ram + 48MB (permitting 48MB core images)
+# this number is pretty arbitrary and may be raised higher into ram
+# if necessary as long as the corresponding change is also made to
+# KCoreLoaderAddress in variant_bootstrap.inc
+#
+LINKBASE = 0x83000000
+
+
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+
+# Select the toolchain: ARM RVCT, then GCC
+
+# Use GCC toolchain if no other is available
+TOOLVER := GCC
+RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4)))
+ifeq "$(RVCTSTR)" "RVCT"
+	TOOLVER := RVCT
+	OP := --
+	OB := o
+endif
+
+# Build up logical TRUE defines
+ifeq "$(USE_MMU)" "TRUE"
+	ASM_TRUE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "TRUE"
+	ASM_TRUE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+	ASM_TRUE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+# Build up logical FALSE defines
+ifeq "$(USE_MMU)" "FALSE"
+	ASM_FALSE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "FALSE"
+	ASM_FALSE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "FALSE"
+	ASM_FALSE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+#Arm RVCT tools
+ifeq "$(TOOLVER)" "RVCT"
+ASM_TRUE_MACROS += USE_CXSF
+ASM := armasm
+LINK := armlink
+FROMELF := fromelf
+CPP := armcc
+
+OBJEXT := o
+INCEXT := inc
+
+ARMCCFLAGS := --arm -c -Otime --cpp
+ARMCCFLAGS := $(ARMCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+ARMCCFLAGS := $(ARMCCFLAGS) -DEKA2
+ARMCCFLAGS := $(ARMCCFLAGS) -DXSR_NBL2 -DREAL_TARGET -DSYMBIAN_SUPPORT_UNISTORE2 
+
+	ARMCCFLAGS := $(ARMCCFLAGS) --preinclude $(EPOCROOT)epoc32/include/rvct/rvct.h
+
+	ifeq "$(CFG)" "UDEB"
+	ARMCCFLAGS := $(ARMCCFLAGS) -D_DEBUG
+	endif
+
+ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),$(OP)predefine "$(macro) SETL {FALSE}")
+ASM_LINKBASE_MACRO := $(OP)predefine "_LINKBASE_ SETA $(LINKBASE)"
+
+AFLAGS := -g $(OP)keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -I$(BUILDLOC) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+LFLAGS := $(OP)entry BootEntry $(OP)ro-base $(LINKBASE) $(OP)FIRST BootEntry $(OP)map
+SYMOPT := $(OP)symdefs
+ASMTYP := ARMASM
+LINKFILE :=
+
+define do_compile
+$(CPP) $(ARMCCFLAGS) $< -o $@
+endef
+define do_h2inc
+perl -S $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ ARMASM
+endef
+define do_asm
+$(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+endef
+define do_link
+$(LINK) $(LFLAGS) -$(OB) $@ $(FULLOBJECTS)
+endef
+define do_strip
+$(FROMELF) $(OP)bin $(OP)output $@ $<
+endef
+endif
+
+#Header processing
+FULLHEADERS := $(addprefix $(GENSRCDIR)/,$(HEADERS))
+FULLSPECHEADERS := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+
+FULLVHEADERS := $(addprefix $(GENDRIVERINC)/,$(VHEADERS))
+FULLBUILTINCLUDES := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES))
+$(FULLBUILTINCLUDES) : $(FULLVHEADERS)
+	$(do_h2inc)
+
+FULLVHEADERS2 := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+FULLBUILTINCLUDES2 := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES2))
+$(FULLBUILTINCLUDES2) : $(FULLVHEADERS2)
+	$(do_h2inc)
+
+#object names
+GENCPPOBJECTS := $(foreach f,$(GENCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(GENCPPOBJECTS))
+
+BLCPPOBJECTS := $(foreach f,$(BLCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLBLCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(BLCPPOBJECTS))
+
+XSRCPPOBJECTS1 := $(foreach f,$(XSRCPPSOURCE1),$(basename $(f)).$(OBJEXT))
+FULLXSRCPPOBJECTS1 := $(addprefix $(BUILDLOC)/,$(XSRCPPOBJECTS1))
+
+XSRCPPOBJECTS2 := $(foreach f,$(XSRCPPSOURCE2),$(basename $(f)).$(OBJEXT))
+FULLXSRCPPOBJECTS2 := $(addprefix $(BUILDLOC)/,$(XSRCPPOBJECTS2))
+
+SPECXSRCPPOBJECTS := $(foreach f,$(SPECXSRCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLSPECXSRCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(SPECXSRCPPOBJECTS))
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+GENASMOBJECTS := $(foreach f,$(GENASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENASMOBJECTS := $(addprefix $(BUILDLOC)/,$(GENASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENASMOBJECTS) $(FULLGENCPPOBJECTS) $(FULLBLCPPOBJECTS) $(FULLXSRCPPOBJECTS1) $(FULLXSRCPPOBJECTS2) $(FULLSPECXSRCPPOBJECTS) $(XSRLIB)
+
+ifdef PROCESS_INCLUDES
+
+GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC))
+
+#Creation of headers
+FULLINCLUDES := $(foreach f,$(INCLUDES),$(basename $(f)).$(INCEXT))
+FULLINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLINCLUDES))
+
+$(FULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLBLDINCLUDES := $(foreach f,$(BLDINCLUDES),$(basename $(f)).$(INCEXT))
+FULLBLDINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLBLDINCLUDES))
+$(FULLBLDINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLPLATINCLUDES := $(foreach f,$(PLATINCLUDES),$(basename $(f)).$(INCEXT))
+FULLPLATINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLPLATINCLUDES))
+$(FULLPLATINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLGENINCLUDES := $(foreach f,$(GENINCLUDES),$(basename $(f)).$(INCEXT))
+FULLGENINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLGENINCLUDES))
+$(FULLGENINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+else
+FULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(INCLUDES))
+FULLPLATINCLUDES:= $(addprefix $(PLATSRCDIR)/,$(PLATINCLUDES))
+FULLGENINCLUDES:= $(addprefix $(GENSRCDIR)/,$(GENINCLUDES))
+FULLBLDINCLUDES:= $(addprefix $(H2BLDDIR)/,$(BLDINCLUDES))
+
+#Arm RVCT specifics here
+
+endif
+
+
+#Link
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#strip
+$(TARGET) : $(TMPTARGET)
+	$(do_strip)
+
+#CPP objects
+$(FULLGENCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLBLCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(BLSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLXSRCPPOBJECTS1) : $(BUILDLOC)/%.$(OBJEXT) : $(XSRSRCDIR1)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLXSRCPPOBJECTS2) : $(BUILDLOC)/%.$(OBJEXT) : $(XSRSRCDIR2)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLSPECXSRCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECXSRSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+
+#Asm objects
+$(FULLGENASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/$(GENASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBUILTINCLUDES3) $(FULLDRIVERINCLUDES) $(FULLARMINCLUDES) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+$(FULLASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+# make the work directories
+$(TARGETDIR) :
+	$(call ifnotexistd,"$(TARGETDIR)")
+
+$(BUILDLOC) :
+	$(call ifnotexistd,"$(BUILDLOC)")
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+	@echo BLD
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)")
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*")
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the h4_restricted_coreldr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/h4_restricted_on_miniboot.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,149 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+## This macro enables benchmarking code. Comment out or set FALSE if not required
+# WRITE_TIMINGS := TRUE
+
+ifneq "$(WRITE_TIMINGS)" "TRUE"
+        WRITE_TIMINGS := FALSE
+endif
+
+#Set the directories
+GENSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/xsr/util/ONBL1
+SPECSRCDIR := $(EXTENSION_ROOT)/nandboot/miniboot_onenand
+
+# Build directory (EPOCBLD too long)
+BUILDLOC = $(EPOCROOT)epoc32/build/omap_hrp/h4_restricted/unistore2/nandboot/miniboot/$(PLATFORM_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TARGET = $(TARGETDIR)$/h4hrp_un2_on_miniboot.bin
+TMPTARGET = $(BUILDLOC)$/h4hrp_un2_on_miniboot.elf
+
+#Rules
+vpath %.s . $(GENSRCDIR) $(SPECSRCDIR) 
+
+GENASMSOURCE := onbl1.s
+ASMSOURCE := miniboot_onenand.s
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+
+# Select the toolchain: ARM RVCT, then GCC
+#TOOLVER := RVCT
+OP := --
+OB := o
+
+
+ifeq "$(WRITE_TIMINGS)" "TRUE"
+	ASM_TRUE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "FALSE"
+	ASM_FALSE_MACROS += WRITE_TIMINGS
+endif 
+
+#Arm RVCT tools
+ASM_TRUE_MACROS += USE_CXSF
+ASM := armasm
+LINK := armlink
+FROMELF := fromelf
+
+OBJEXT := o
+
+ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),$(OP)predefine "$(macro) SETL {FALSE}")
+
+AFLAGS := -g $(OP)keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) -I$(BUILDLOC)
+LFLAGS := $(OP)entry BootEntry $(OP)FIRST BootEntry $(OP)map
+SYMOPT := $(OP)symdefs
+ASMTYP := ARMASM
+
+define do_asm
+	$(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+endef
+
+define do_link
+	$(LINK) $(LFLAGS) -$(OB) $@ $(FULLOBJECTS)
+endef
+
+define do_strip
+	$(FROMELF) $(OP)bin $(OP)output $@ $<
+endef
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+GENASMOBJECTS := $(foreach f,$(GENASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENASMOBJECTS := $(addprefix $(BUILDLOC)/,$(GENASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENASMOBJECTS)
+
+
+#Link
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#strip
+$(TARGET) : $(TMPTARGET)
+	$(do_strip)
+
+#Asm objects
+$(FULLGENASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/$(GENASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBUILTINCLUDES3) $(FULLDRIVERINCLUDES) $(FULLARMINCLUDES) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+$(FULLASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+# make the work directories
+$(TARGETDIR) :
+	$(call ifnotexistd,"$(TARGETDIR)")
+   
+$(BUILDLOC) :
+	$(call ifnotexistd,"$(BUILDLOC)")
+	
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)")
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*")
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the integrator_lmnand2_coreldr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/integrator_lmnand2_coreldr.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,291 @@
+# Copyright (c) 2006-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:
+# Code execute address set in the linker file
+# 
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+#Set the directories
+BLDINFDIR := ../../../unref/orphan/cedgen/base/integrator/.
+GENSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr
+XSRSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr/unistore2
+SPECSRCDIR := $(EXTENSION_ROOT)/nandboot/coreldr
+VARIANTINC := $(EXTENSION_ROOT)/inc
+DRIVERDIR := $(EXTENSION_ROOT)/drivers
+EPOCINCDIR = $(EPOCROOT)epoc32/include/integrator/logic/lmnand2
+
+
+GENINC1 := $(EPOCROOT)epoc32/include
+GENDRIVERINC := $(EPOCROOT)epoc32/include/drivers
+GENINC2 := $(EPOCROOT)epoc32/include/drivers/unistore2
+GENINC3 := $(EPOCROOT)epoc32/include/integrator/logic/lmnand2
+GENINCPATH:= $(GENSRCDIR) $(SPECSRCDIR) $(XSRSRCDIR) $(VARIANTINC) $(GENINC1) $(GENDRIVERINC) $(GENINC2) $(GENINC3)
+
+# Build directory (EPOCBLD too long)
+#BUILDLOC = $(EPOCROOT)epoc32/build/integrator/logic/lmnand2/nandboot/coreldr/$(PLATFORM_PATH)/$(CFG_PATH)
+BUILDLOC = $(EPOCBLD)/$(PLATFORM_PATH)/$(CFG_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TARGET = $(TARGETDIR)/_lmnand2_coreldr.bin
+TMPTARGET = $(BUILDLOC)/coreldr.tmp
+
+#Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR)
+vpath %.inc . $(SPECSRCDIR) $(DRIVERDIR) $(EPOCINCDIR)
+vpath %.ginc . $(BUILDLOC)
+
+INCLUDES := nand.inc
+DRIVERINCLUDES := nand_fbr_offset.h
+
+VHEADERS := nanddevice.h 
+BUILTINCLUDES := nanddevice.inc
+
+ASMSOURCE := coreldrasm.s
+GENCPPSOURCE := coreldr.cpp inflate.cpp 
+XSRCPPSOURCE := coreldrxsr.cpp
+
+HEADERS := inflate.h coreldr.h
+SPECHEADERS := nand_plat.h
+
+
+#Execution address
+LINKBASE = 0x1F00000
+
+
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+# Use GCC toolchain if no other is available
+TOOLVER := GCC
+RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4)))
+ifeq "$(RVCTSTR)" "RVCT"
+        TOOLVER := RVCT
+        OP := --
+        OB := o
+endif 
+
+#Arm RVCT tools
+ifeq "$(TOOLVER)" "RVCT"
+        ASM_MACROS += USE_CXSF
+        ASM := armasm
+        LINK := armlink
+        FROMELF := fromelf
+        CPP := armcc
+        
+        OBJEXT := o
+        INCEXT := inc
+        
+        ARMCCFLAGS := --arm -c -Otime --cpp 
+        
+        ARMCCFLAGS := $(ARMCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        
+        ARMCCFLAGS := $(ARMCCFLAGS) -DSYMBIAN_SUPPORT_UNISTORE2 -DEKA2
+
+        ARMCCFLAGS := $(ARMCCFLAGS) --preinclude $(EPOCROOT)epoc32/include/rvct/rvct.h
+
+        ifeq "$(CFG)" "UDEB"
+        ARMCCFLAGS := $(ARMCCFLAGS) -D_DEBUG
+        endif
+        
+        ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+        AFLAGS := -g $(OP)keep $(ASM_MACRO_CMD) -I$(BUILDLOC)
+        LFLAGS := $(OP)entry BootEntry $(OP)ro-base $(LINKBASE) $(OP)FIRST BootEntry $(OP)map	
+        SYMOPT := $(OP)symdefs
+        ASMTYP := ARMASM
+        LINKFILE :=
+        
+        define do_compile
+                $(CPP) $(ARMCCFLAGS) $< -o $@
+        endef
+        define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ ARMASM
+        endef
+        define do_asm
+                $(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+        endef
+        define do_link
+                $(LINK) $(LFLAGS) -$(OB) $@ $(FULLOBJECTS)
+        endef
+        define do_strip
+                $(FROMELF) $(OP)bin $(OP)output $@ $<
+        endef
+endif
+
+
+#GCC build options
+ifeq "$(TOOLVER)" "GCC"
+        ASM := as
+        AFLAGS := -mapcs-32 -R -n -I$(BUILDLOC)
+
+        LINKFLAGS = -n --section-alignment 4 --file-alignment 2 -no-whole-archive
+        GCCFLAGS=-march=armv4 -nostdinc -pipe -c -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas
+        GCCFLAGS := $(GCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        GCCDEFS = -D__SYMBIAN32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__MARM_ARM4__ -DEKA2 -DSYMBIAN_SUPPORT_UNISTORE2
+        ifeq "$(CFG)" "UDEB"
+        GCC = gcc -x c++ -g -O2 $(GCCFLAGS) -D_DEBUG -D_UNICODE $(GCCDEFS)
+        else
+        GCC = gcc -x c++ -s -fomit-frame-pointer -O2 $(GCCFLAGS) -DNDEBUG -D_UNICODE $(GCCDEFS)
+        endif
+
+        LINKFILE = $(SPECSRCDIR)/coreldr.lnk
+        OBJEXT := o
+        INCEXT := ginc
+
+        PROCESS_INCLUDES := 1
+        define do_compile
+                $(GCC) -o $@ $<
+        endef
+        define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ AS
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $@ $(join $(basename $@),.ginc)
+        endef 
+        define do_includes
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@ 
+        endef
+        define do_asm
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $(join $(basename $@),.s)
+                $(AS) $(AFLAGS) -o $@ $(join $(basename $@),.s)
+        endef
+        define do_strip
+                strip -O binary -o "$(TARGET)" "$(TMPTARGET)"
+                $(ERASE) $(call slash2generic,"$(TMPTARGET)") 
+	#	$(ERASE) "$(TMPTARGET)"
+                echo Built $(TARGET)
+        endef
+        define do_link
+                ld -o "$(TMPTARGET)"  --start $(FULLOBJECTS) --script=$(LINKFILE)
+        endef
+endif
+
+
+#CPP source processing
+FULLCPPSOURCE := $(addprefix $(GENSRCDIR)/,$(GENCPPSOURCE))
+
+#Header processing
+FULLHEADERS := $(addprefix $(GENSRCDIR)/,$(HEADERS))
+FULLSPECHEADERS := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+
+FULLVHEADERS := $(addprefix $(GENDRIVERINC)/,$(VHEADERS))
+FULLBUILTINCLUDES := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES))
+$(FULLBUILTINCLUDES) : $(FULLVHEADERS)
+	$(do_h2inc)
+
+
+
+#object names
+GENCPPOBJECTS := $(foreach f,$(GENCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(GENCPPOBJECTS))
+
+XSRCPPOBJECTS := $(foreach f,$(XSRCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLXSRCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(XSRCPPOBJECTS))
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENCPPOBJECTS) $(FULLXSRCPPOBJECTS)
+
+ifdef PROCESS_INCLUDES
+
+GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC))
+
+#Creation of headers
+FULLINCLUDES := $(foreach f,$(INCLUDES),$(basename $(f)).$(INCEXT))
+FULLINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLINCLUDES))
+
+FULLDRIVERINCLUDES := $(foreach f,$(DRIVERINCLUDES),$(basename $(f)).$(INCEXT))
+FULLDRIVERINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLDRIVERINCLUDES))
+
+$(FULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+$(FULLDRIVERINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+else
+FULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(INCLUDES))
+FULLDRIVERINCLUDES:= $(addprefix $(DRIVERDIR)/,$(DRIVERINCLUDES))
+
+#Arm RVCT specifics here
+
+endif
+
+
+#Link 
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#strip
+$(TARGET) : $(TMPTARGET)
+	$(do_strip)
+
+#CPP objects
+$(FULLGENCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS) $(FULLDRIVERINCLUDES)
+	$(do_compile)
+
+$(FULLXSRCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(XSRSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+
+#Asm objects
+$(FULLASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES)
+	$(do_asm)
+
+# make the work directories
+$(TARGETDIR) :
+	$(call ifnotexistd,"$(TARGETDIR)")
+
+$(BUILDLOC) :
+	$(call ifnotexistd,"$(BUILDLOC)")
+
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)") 
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*") 
+#	-$(ERASE) "$(TARGET)"
+#	-$(ERASE) "$(BUILDLOC)/*.*"
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the integrator_lmnand2_miniboot extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/integrator_lmnand2_miniboot.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,215 @@
+# Copyright (c) 2006-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:
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+## Set the source directory
+BLDINFDIR := ../../../unref/orphan/cedgen/base/integrator/.
+SRCDIR = $(EXTENSION_ROOT)/nandboot/miniboot
+SPECSRCDIR = $(EXTENSION_ROOT)/../integratormotherboard/nandboot/miniboot
+TARGETDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+EPOCINCDIR = $(EPOCROOT)epoc32/include/integrator/logic/lmnand2
+
+#Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR)
+vpath %.inc . $(SRCDIR) $(SPECSRCDIR) $(EPOCINCDIR)
+vpath %.ginc . $(BUILDLOC)
+
+
+# Build directory (EPOCBLD too long)
+#BUILDLOC = $(EPOCROOT)epoc32/build/integrator/logic/lmnand2/nandboot/miniboot/$(PLATFORM_PATH)/$(CFG_PATH)
+BUILDLOC = $(EPOCBLD)/$(PLATFORM_PATH)/$(CFG_PATH)
+
+## Set the target name
+INCLUDES := nand.inc
+SPECINCLUDES := arm.inc
+EPOCINCLUDES := nand_fbr_offset.inc
+
+SRC := miniboot.s arm.s
+TARGET = $(TARGETDIR)/_lmnand2_miniboot.bin
+TMPTARGET = $(BUILDLOC)/miniboot.exe
+
+# Set the code and data base addresses 
+LINKBASE = 0x0000000
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+# Use GCC toolchain if no other is available
+TOOLVER := GCC
+RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4)))
+ifeq "$(RVCTSTR)" "RVCT"
+        TOOLVER := RVCT
+        OP := --
+        OB := o
+endif 
+
+ifeq "$(TOOLVER)" "RVCT"
+        ASM_MACROS += USE_CXSF
+
+        ASM := armasm
+        LINK := armlink
+        FROMELF := fromelf
+        OBJEXT := o
+        INCEXT := inc
+
+        ASMINCPATHCMD := $(foreach dir,$(SRCDIR),$(join -I ,$(dir))) $(foreach dir,$(EPOCINCDIR),$(join -I ,$(dir)))
+        SPECASMINCPATHCMD := $(foreach dir,$(SPECSRCDIR),$(join -I ,$(dir)))
+        ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+        AFLAGS := -g $(OP)keep $(ASM_MACRO_CMD) $(ASMINCPATHCMD) $(SPECASMINCPATHCMD)
+        
+        SYMOPT := $(OP)symdefs
+        ASMTYP := ARMASM
+        LINKFILE :=
+        define do_asm
+                $(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+        endef
+        
+        LFLAGS := $(OP)ro-base $(LINKBASE) $(OP)entry $(LINKBASE) $(OP)map
+
+        define do_link
+                $(LINK) $(LFLAGS) -$(OB) $@ $(filter %.$(OBJEXT),$^)
+        endef
+
+        define do_strip
+                $(FROMELF) $(OP)bin $(OP)output $@ $<
+        endef
+endif
+
+
+#GCC build options
+ifeq "$(TOOLVER)" "GCC"
+        ASM := as
+        AFLAGS := -mapcs-32 -R -n -I$(BUILDLOC)
+
+        LINKFLAGS = -n -x --section-alignment 4 --file-alignment 2 -no-whole-archive
+        OBJEXT := o
+        INCEXT := ginc
+        LINKFILE = $(SRCDIR)/miniboot.lnk
+        define do_includes
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
+        endef
+        define do_asm
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $(join $(basename $@),.s) 
+                $(AS) $(AFLAGS) -o $@ $(join $(basename $@),.s)
+        endef
+        define do_link
+                ld -o "$(TMPTARGET)"  --start $(FULLOBJECTS) --script=$(LINKFILE)
+        endef
+        define do_strip
+                strip -O binary -o "$(TARGET)" "$(TMPTARGET)"
+                $(ERASE) $(call slash2generic,"$(TMPTARGET)") 
+	#	$(ERASE) "$(TMPTARGET)"
+                echo Built $(TARGET)
+        endef
+        PROCESS_INCLUDES := 1
+endif
+
+
+OBJECTS := $(foreach f,$(SRC),$(basename $(f)).$(OBJEXT))
+
+FULLOBJECTS := $(addprefix $(BUILDLOC)/,$(OBJECTS))
+
+
+#Include processing
+
+
+ifdef PROCESS_INCLUDES
+
+GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC))
+
+FULLINCLUDES := $(foreach f,$(INCLUDES),$(basename $(f)).$(INCEXT))
+FULLINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLINCLUDES))
+
+SPECFULLINCLUDES := $(foreach f,$(SPECINCLUDES),$(basename $(f)).$(INCEXT))
+SPECFULLINCLUDES := $(addprefix $(BUILDLOC)/,$(SPECFULLINCLUDES))
+
+EPOCFULLINCLUDES := $(foreach f,$(EPOCINCLUDES),$(basename $(f)).$(INCEXT))
+EPOCFULLINCLUDES := $(addprefix $(BUILDLOC)/,$(EPOCFULLINCLUDES))
+
+#Creation of headers
+$(FULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+$(SPECFULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+$(EPOCFULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+else
+
+#Armasm sytax specifc asm rule goes here
+FULLINCLUDES := $(addprefix $(SRCDIR)/,$(INCLUDES))
+SPECFULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(SPECINCLUDES))
+EPOCFULLINCLUDES:= $(addprefix $(EPOCINCDIR)/,$(EPOCINCLUDES))
+
+endif
+ 
+
+#Strip
+$(TARGET) : $(TMPTARGET)
+	$(do_strip)
+
+#Link	
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#Objects
+$(FULLOBJECTS): $(BUILDLOC)/%.$(OBJEXT): %.s $(FULLINCLUDES) $(SPECFULLINCLUDES)  $(EPOCFULLINCLUDES)
+	$(do_asm)
+
+# make directories
+$(TARGETDIR):
+	$(call ifnotexistd,"$(TARGETDIR)")
+
+$(BUILDLOC):
+	$(call ifnotexistd,"$(BUILDLOC)")
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+
+
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)") 
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*") 
+#	-$(ERASE) "$(TARGET)"
+#	-$(ERASE) "$(BUILDLOC)/*.*"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.flm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,84 @@
+# lab_restricted_miniboot.flm
+#
+# Copyright (c) 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:
+#
+
+ifeq ($(lab_restricted_miniboot_flm),)
+lab_restricted_miniboot_flm := 1
+
+# Set the directories
+SRCDIR := $(EXTENSION_ROOT)/../../lab_restricted/unistore2/nandboot/miniboot_largeblk
+
+# Build directory
+BUILDLOC := $(EPOCBLD)/lab_restricted_miniboot_flm/$(PLATFORM_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)/epoc32/release/$(PLATFORM_PATH)
+BINTARGET := $(TARGETDIR)/lab_miniboot.bin
+TMPTARGET := $(BUILDLOC)/lab_miniboot.elf
+TMPTARGET2 := $(BUILDLOC)/lab_miniboot.bin
+
+# Set the Load Address for the miniboot
+# This is currently set to the beginning of SRAM
+LINKBASE := 0x40200000
+
+# Rules
+vpath %.s . $(SRCDIR)
+
+ASMSOURCE := miniboot_largeblk.s
+
+
+# Arm RVCT tools
+ASM_TRUE_MACROS := USE_CXSF
+
+OBJEXT := o
+
+ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),--predefine "$(macro) SETL {TRUE}")
+ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),--predefine "$(macro) SETL {FALSE}")
+
+AFLAGS := -g --keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) -I$(BUILDLOC)
+LFLAGS := --ro-base $(LINKBASE) --entry BootEntry --FIRST BootEntry --map
+SYMOPT := --symdefs
+ASMTYP := ARMASM
+
+# Include base commonly used functions
+include $(EPOCROOT)/epoc32/tools/makefile_templates/base/base_rvct_common.mk
+
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS)
+
+# Link
+$(eval $(call base__link,$(TMPTARGET),$(FULLOBJECTS)))
+# Strip
+$(eval $(call base__strip,$(TMPTARGET2),$(TMPTARGET)))
+# Omapsig
+$(eval $(call base__omapsig,$(BINTARGET),$(TMPTARGET2)))
+
+# Asm objects
+$(eval $(call base__asm,$(FULLASMOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(SRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)))
+
+#
+TARGET :: $(BINTARGET) $(TARGETDIR) $(BUILDLOC) 
+
+# --what to show releasables
+$(eval $(call whatmacro,$(BINTARGET),USERFLM))
+# Create directory
+CREATABLEPATHS := $(TARGETDIR) $(BUILDLOC)
+$(call makepath,$(CREATABLEPATHS))
+# Clean up
+$(eval $(call GenerateStandardCleanTarget,$(CLEANTARGETS),$(BUILDLOC)))
+
+endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,22 @@
+# Copyright (c) 2005-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:
+#
+# Meta information for the lab_restricted_miniboot extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,141 @@
+# lab_restricted_miniboot.mk
+#
+# Copyright (c) 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:
+#
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+#Set the directories
+SRCDIR := $(EXTENSION_ROOT)/../../lab_restricted/unistore2/nandboot/miniboot_largeblk
+
+# Build directory (EPOCBLD too long)
+BUILDLOC = $(EPOCROOT)epoc32/build/lab_restricted/unistore2/nandboot/miniboot/$(PLATFORM_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TARGET = $(TARGETDIR)$/lab_miniboot.bin
+TMPTARGET = $(BUILDLOC)$/lab_miniboot.elf
+TMPTARGET2 = $(BUILDLOC)$/lab_miniboot.bin
+
+# Set the Load Address for the miniboot
+# This is currently set to the beginning of SRAM
+LINKBASE=0x40200000
+
+#Rules
+vpath %.s . $(SRCDIR)
+
+ASMSOURCE := miniboot_largeblk.s
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+
+# Select the toolchain: ARM RVCT, then GCC
+#TOOLVER := RVCT
+OP := --
+OB := o
+
+#Arm RVCT tools
+ASM_TRUE_MACROS += USE_CXSF
+ASM := armasm
+LINK := armlink
+FROMELF := fromelf
+
+OBJEXT := o
+
+ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),$(OP)predefine "$(macro) SETL {FALSE}")
+
+AFLAGS := -g $(OP)keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) -I$(BUILDLOC)
+LFLAGS := $(OP)ro-base $(LINKBASE) $(OP)entry BootEntry $(OP)FIRST BootEntry $(OP)map
+SYMOPT := $(OP)symdefs
+ASMTYP := ARMASM
+
+define do_asm
+	$(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+endef
+
+define do_link
+	$(LINK) $(LFLAGS) -$(OB) $@ $(FULLOBJECTS)
+endef
+
+define do_strip
+	$(FROMELF) $(OP)bin $(OP)output $@ $<
+endef
+
+define do_omapsig
+	perl -S $(EPOCROOT)epoc32/tools/omapsig.pl $(LINKBASE) $< $@
+endef
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS)
+
+
+#Link
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#strip
+$(TMPTARGET2) : $(TMPTARGET)
+	$(do_strip)
+
+#omapsig
+$(TARGET) : $(TMPTARGET2)
+	$(do_omapsig)
+
+#Asm objects
+
+$(FULLASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+# make the work directories
+$(TARGETDIR) :
+	$(call ifnotexistd,"$(TARGETDIR)")
+   
+$(BUILDLOC) :
+	$(call ifnotexistd,"$(BUILDLOC)")
+	
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)")
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*")
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/lab_restricted_miniboot.xml	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?> 
+<build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build build/2_0.xsd">
+
+<!--  Extension interfaces : replacements for Template Extension Makefiles  --> 
+
+ <interface name="base.lab_restricted_miniboot" extends="Symbian.KernelFLM" flm="lab_restricted_miniboot.flm">
+ </interface>
+
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/lubbock_coreldr.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the lubbock_coreldr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/lubbock_coreldr.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,286 @@
+# Copyright (c) 2006-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:
+# Code execute address also set in the linker file
+# 
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+#Set the directories
+GENSRCDIR := $(EXTENSION_ROOT)/../e32utils/nandboot/coreldr
+SPECSRCDIR := $(EXTENSION_ROOT)/nandboot/coreldr
+VARIANTINC := $(EXTENSION_ROOT)/inc
+DRIVERDIR := $(VARIANTINC)
+EPOCINCDIR = $(EPOCROOT)epoc32/include/lubbock/nand
+GENINC1 := $(EPOCROOT)epoc32/include
+GENINC2 := $(EPOCROOT)epoc32/include/lubbock/nand
+GENDRIVERINC := $(EPOCROOT)epoc32/include/drivers
+GENINCPATH:= $(GENSRCDIR) $(SPECSRCDIR) $(VARIANTINC) $(GENINC1) $(GENDRIVERINC)
+ASMINCPATH := $(GENINC2)
+
+# Build directory = EPOCBLD
+BUILDLOC = $(EPOCBLD)$(call sbsadd,/$(PLATFORM_PATH)/$(CFG_PATH))
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TARGET = $(TARGETDIR)/lubbock_coreldr.bin
+TMPTARGET = $(BUILDLOC)/coreldr.tmp
+
+#Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR)
+vpath %.inc . $(SPECSRCDIR) $(VARIANTINC) $(EPOCINCDIR)
+vpath %.ginc . $(BUILDLOC)
+
+INCLUDES := nand.inc
+DRIVERINCLUDES := nand_fbr_offset.h
+
+VHEADERS := nanddevice.h 
+BUILTINCLUDES := nanddevice.inc
+
+ASMSOURCE := coreldrasm.s
+GENCPPSOURCE := coreldr.cpp inflate.cpp 
+HEADERS := inflate.h coreldr.h
+SPECHEADERS := nand_plat.h
+
+#Execution address (top 1M of Lubbock RAM)
+LINKBASE = 0xA3F00000
+
+
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+# Use GCC toolchain if no other is available
+TOOLVER := GCC
+RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4)))
+ifeq "$(RVCTSTR)" "RVCT"
+        TOOLVER := RVCT
+        OP := --
+        OB := o
+endif 
+
+#Arm RVCT tools
+ifeq "$(TOOLVER)" "RVCT"
+        ASM_MACROS += USE_CXSF
+        ASM := armasm
+        LINK := armlink
+        FROMELF := fromelf
+        CPP := armcc
+
+        OBJEXT := o
+        INCEXT := inc
+
+        ARMCCFLAGS := --arm -c -Otime --cpp
+
+        ARMCCFLAGS := $(ARMCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+
+        ARMCCFLAGS := $(ARMCCFLAGS) -DEKA2
+
+        ARMCCFLAGS := $(ARMCCFLAGS) --preinclude $(EPOCROOT)epoc32/include/rvct/rvct.h
+
+
+ifeq "$(CFG)" "UDEB"
+        ARMCCFLAGS := $(ARMCCFLAGS) -D_DEBUG
+endif
+        
+        ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+        AFLAGS := -g $(OP)keep $(ASM_MACRO_CMD) -I$(BUILDLOC) -I$(ASMINCPATH)
+        LFLAGS := $(OP)entry BootEntry $(OP)ro-base $(LINKBASE) $(OP)FIRST BootEntry $(OP)map	
+        SYMOPT := $(OP)symdefs
+        ASMTYP := ARMASM
+        LINKFILE :=
+
+define do_compile
+                $(CPP) $(ARMCCFLAGS) $< -o $@
+endef
+define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ ARMASM
+endef
+define do_asm
+                $(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+endef
+define do_link
+                $(LINK) $(LFLAGS) -$(OB) $@ $(FULLOBJECTS)
+endef
+define do_strip
+                $(FROMELF) $(OP)bin $(OP)output $@ $<
+endef
+endif
+
+
+#GCC build options
+ifeq "$(TOOLVER)" "GCC"
+        ASM := as
+        AFLAGS := -mapcs-32 -R -n -I$(BUILDLOC)
+
+        LINKFLAGS = -n --section-alignment 4 --file-alignment 2 -no-whole-archive
+        GCCFLAGS=-march=armv4 -nostdinc -pipe -c -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas
+        GCCFLAGS := $(GCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        GCCDEFS = -D__SYMBIAN32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__MARM_ARM4__ -DEKA2
+ifeq "$(CFG)" "UDEB"
+        GCC = gcc -x c++ -g -O2 $(GCCFLAGS) -D_DEBUG -D_UNICODE $(GCCDEFS)
+        else
+        GCC = gcc -x c++ -s -fomit-frame-pointer -O2 $(GCCFLAGS) -DNDEBUG -D_UNICODE $(GCCDEFS)
+endif
+
+        LINKFILE = $(SPECSRCDIR)/coreldr.lnk
+        OBJEXT := o
+        INCEXT := ginc
+
+        PROCESS_INCLUDES := 1
+define do_compile
+                $(GCC) -o $@ $<
+endef
+define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ AS
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $@ $(join $(basename $@),.ginc)
+endef 
+define do_includes
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
+endef
+define do_asm
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $(join $(basename $@),.s)
+                $(AS) $(AFLAGS) -o $@ $(join $(basename $@),.s)
+endef
+define do_strip
+                strip -O binary -o "$(TARGET)" "$(TMPTARGET)"
+                $(ERASE) $(call slash2generic,"$(TMPTARGET)") 
+                echo Built $(TARGET)
+endef
+define do_link
+                ld -o "$(TMPTARGET)"  --start $(FULLOBJECTS) --script=$(LINKFILE)
+endef
+endif
+
+
+#CPP source processing
+FULLCPPSOURCE := $(addprefix $(GENSRCDIR)/,$(GENCPPSOURCE))
+
+#Header processing
+FULLHEADERS := $(addprefix $(GENSRCDIR)/,$(HEADERS))
+FULLSPECHEADERS := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+
+FULLVHEADERS := $(addprefix $(GENDRIVERINC)/,$(VHEADERS)) 
+FULLBUILTINCLUDES := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES))
+$(FULLBUILTINCLUDES) : $(FULLVHEADERS)
+	$(do_h2inc)
+
+
+#object names
+GENCPPOBJECTS := $(foreach f,$(GENCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(GENCPPOBJECTS)) 
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENCPPOBJECTS)
+
+ifdef PROCESS_INCLUDES
+
+GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC))
+
+#Creation of headers
+FULLINCLUDES := $(foreach f,$(INCLUDES),$(basename $(f)).$(INCEXT))
+FULLINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLINCLUDES))
+
+FULLDRIVERINCLUDES := $(foreach f,$(DRIVERINCLUDES),$(basename $(f)).$(INCEXT))
+FULLDRIVERINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLDRIVERINCLUDES))
+
+$(FULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc $(call pipe,$(BUILDLOC))
+	$(do_includes)
+
+$(FULLDRIVERINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc $(call pipe,$(BUILDLOC))
+	$(do_includes)
+
+else
+FULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(INCLUDES))
+FULLDRIVERINCLUDES:= $(addprefix $(DRIVERDIR)/,$(DRIVERINCLUDES))
+
+#Arm RVCT specifics here
+
+endif
+
+
+#Link 
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#strip
+$(TARGET) : $(TMPTARGET)
+	$(do_strip)
+
+#CPP objects
+$(FULLGENCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+
+#Asm objects
+$(FULLASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLDRIVERINCLUDES)
+	$(do_asm)
+
+# make the work directories
+$(TARGETDIR) :
+	@$(call ifnotexistd,"$(TARGETDIR)")
+
+$(BUILDLOC) :
+	@$(call ifnotexistd,"$(BUILDLOC)")
+
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+ifneq "$(PLATFORM)" "GCCXML"
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)") 
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*") 
+#	-$(ERASE) "$(TARGET)"
+#	-$(ERASE) "$(BUILDLOC)/*.*"
+
+else
+
+BLD SAVESPACE :
+	echo Nothing to do
+
+RELEASABLES :
+
+CLEAN :
+	echo Nothing to do
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/lubbock_miniboot.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the lubbock_miniboot extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/lubbock_miniboot.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,212 @@
+# Copyright (c) 2006-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:
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+# Set the source directory
+SRCDIR = $(EXTENSION_ROOT)/nandboot/miniboot
+TARGETDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+EPOCINCDIR = $(EPOCROOT)epoc32/include/lubbock/nand
+
+#Rules
+vpath %.s $(SRCDIR)
+vpath %.inc $(SRCDIR) $(EPOCINCDIR)
+vpath %.ginc $(BUILDLOC)
+
+# Build directory
+BUILDLOC = $(EPOCBLD)$(call sbsadd,/base/lubbock)
+
+## Set the target name
+INCLUDES := nand.inc lubbock.inc
+EPOCINCLUDES := nand_fbr_offset.inc
+SRC := miniboot.s lubbock.s
+TARGET=$(TARGETDIR)/lubbock_miniboot.bin
+TMPTARGET = $(BUILDLOC)/miniboot.exe
+
+# Set the code and data base addresses 
+# Since miniboot is PIC this is just to placate the linker
+LINKBASE = 0x0000000
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+# Use GCC toolchain if no other is available
+# NB! Need to keep updating/extending allowable range of RVCT versions!!
+TOOLVER := GCC
+RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4)))
+ifeq "$(RVCTSTR)" "RVCT"
+        TOOLVER := RVCT
+        OP := --
+        OB := o
+endif 
+
+ifeq "$(TOOLVER)" "RVCT"
+        ASM_MACROS += USE_CXSF
+
+        ASM := armasm
+        LINK := armlink
+        FROMELF := fromelf
+        OBJEXT := o
+        INCEXT := inc
+
+        ASMINCPATHCMD := $(foreach dir,$(SRCDIR),$(join -I ,$(dir))) $(foreach dir,$(EPOCINCDIR),$(join -I ,$(dir)))
+        ASMINCFBRPATH := $(foreach fir,$(EPOCINCDIR),$(join -I ,$(fir)))
+        ASM_MACRO_CMD := $(foreach macro,$(ASM_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+        AFLAGS := -g $(OP)keep $(ASM_MACRO_CMD) $(ASMINCPATHCMD) $(ASMINCFBRPATH)
+        
+        SYMOPT := $(OP)symdefs
+        ASMTYP := ARMASM
+        LINKFILE :=
+define do_asm
+        $(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+endef
+        
+        LFLAGS := $(OP)ro-base $(LINKBASE) $(OP)entry $(LINKBASE) $(OP)map
+
+define do_link
+        $(LINK) $(LFLAGS) -$(OB) $@ $(filter %.$(OBJEXT),$^)
+endef
+
+define do_strip
+        $(FROMELF) $(OP)bin $(OP)output $@ $<
+endef
+endif
+
+
+#GCC build options
+ifeq "$(TOOLVER)" "GCC"
+        ASM := as
+        AFLAGS := -mapcs-32 -R -n -I$(BUILDLOC)
+
+        LINKFLAGS = -n -x --section-alignment 4 --file-alignment 2 -no-whole-archive
+        OBJEXT := o
+        INCEXT := ginc
+        LINKFILE = $(SRCDIR)/miniboot.lnk
+define do_headers
+        perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
+endef
+define do_asm
+        perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $(join $(basename $@),.s) 
+        $(AS) $(AFLAGS) -o $@ $(join $(basename $@),.s)
+endef
+define do_link
+        ld -o "$(TMPTARGET)"  --start $(FULLOBJECTS) --script=$(LINKFILE)
+endef
+define do_strip
+        strip -O binary -o "$(TARGET)" "$(TMPTARGET)"
+        $(ERASE) $(call slash2generic,"$(TMPTARGET)") 
+        echo Built $(TARGET)
+endef
+        PROCESS_INCLUDES := 1
+endif
+
+
+OBJECTS := $(foreach f,$(SRC),$(basename $(f)).$(OBJEXT))
+
+FULLOBJECTS := $(addprefix $(BUILDLOC)/,$(OBJECTS))
+
+
+#Include processing
+FULLINCLUDES := $(addprefix $(SRCDIR)/,$(INCLUDES))
+#Object processing
+FULLSRC := $(addprefix $(SRCDIR)/,$(SRC))
+
+ifdef PROCESS_INCLUDES
+GCCSRC := $(addprefix $(EPOCBLD)/,$(SRC))
+FULLINCLUDES := $(foreach f,$(FULLINCLUDES),$(basename $(f)).$(INCEXT))
+
+EPOCFULLINCLUDES := $(foreach f,$(EPOCINCLUDES),$(basename $(f)).$(INCEXT))
+EPOCFULLINCLUDES := $(addprefix $(BUILDLOC)/,$(EPOCFULLINCLUDES))
+
+
+#Creation of headers
+$(FULLINCLUDES) : $(SRCDIR)/%.$(INCEXT) : %.inc
+	$(do_headers)
+$(EPOCFULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_headers)
+
+else
+
+#Armasm sytax specifc asm rule goes here
+
+EPOCFULLINCLUDES:= $(addprefix $(EPOCINCDIR)/,$(EPOCINCLUDES))
+endif
+
+
+#Strip
+$(call abldquote,$(TARGET)) : $(call abldquote,$(TMPTARGET)) $(call pipe,$(TARGETDIR) $(BUILDLOC)) 
+	$(do_strip)
+
+#Link	
+$(call abldquote,$(TMPTARGET)) : $(FULLOBJECTS)
+	$(do_link)
+
+#Objects
+$(FULLOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : %.s $(FULLINCLUDES) $(EPOCFULLINCLUDES) $(call pipe,$(BUILDLOC))
+	$(do_asm)
+
+# make directories
+$(call abldquote,$(TARGETDIR)) :
+	@$(call ifnotexistd,"$(TARGETDIR)")
+	
+$(call abldquote,$(BUILDLOC)) :
+	@$(call ifnotexistd,"$(BUILDLOC)")
+	
+$(EPOCBLD) :
+	@$(call ifnotexistd,"$(EPOCBLD)")
+
+
+MAKMAKE :
+	echo Nothing to do
+	echo $(BUILDLOC)
+
+FREEZE :
+	echo Nothing to do
+	echo $(BUILDLOC)
+
+LIB :
+	echo Nothing to do
+	echo $(BUILDLOC)
+
+CLEANLIB :
+	echo Nothing to do
+	echo $(BUILDLOC)
+
+RESOURCE :
+	echo Nothing to do
+	echo $(BUILDLOC)
+
+FINAL :
+	echo Nothing to do
+	echo $(BUILDLOC)
+
+
+
+BLD SAVESPACE : $(call abldquote,$(TARGETDIR)) $(EPOCBLD) $(call abldquote,$(TARGET)) $(call sbsadd,$(BUILDLOC))
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)") 
+	-$(ERASE) $(call slash2generic,"$(EPOCBLD)/*.*") 
+#	-$(ERASE) "$(TARGET)"
+#	-$(ERASE) "$(EPOCBLD)/*.*"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/modload.pm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,64 @@
+# 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:
+# Runtime module-loading routine for loading e32tools modules into 'main' module
+# 
+#
+
+
+package ModLoad;
+
+require Exporter;
+@ISA=qw(Exporter);
+
+@EXPORT=qw(
+	Load_SetVerbose
+	Load_SetModulePath
+	Load_ModuleL
+);
+
+
+use Pathutl;
+
+my %Mode=(
+	Verbose=>0
+);
+my $ModulePath;
+
+sub Load_SetVerbose () {
+	$Mode{Verbose}=1;
+}
+
+sub Load_SetModulePath ($) {
+	$ModulePath=$_[0];
+}
+
+sub Load_ModuleL (@) {
+# Loads a module into the 'main' package, including all the functions the module defines for export
+
+	my @ModBaseList=@_;
+	my $ModBase;
+	foreach $ModBase (@ModBaseList) {
+		$ModBase=uc $ModBase;
+		die "ERROR: Can't load \"$ModulePath$ModBase.PM\"\n" unless -e "$ModulePath$ModBase.PM";
+		if ($Mode{Verbose}) {
+			print "Loading Module: \"",$ModBase,".PM\"\n";
+		}
+		package main;
+		require $ModBase.".PM" or die "ERROR: Can't load function from \"$ModulePath$ModBase.PM\"\n";
+		my $Package=ucfirst lc $ModBase;
+		$Package->import;
+	}
+}
+
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/nand_fbr_offset.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2005-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:
+# Meta information for the nand_fbr_offset extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/nand_fbr_offset.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,85 @@
+# Copyright (c) 2006-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:
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+# Build directory (EPOCBLD too long)
+BUILDLOC = $(EXTENSION_ROOT)/drivers
+
+## Set the target name
+SRC := $(SRCDIR)/nand_fbr_offset.h
+TARGET = $(TARGETDIR)/nand_fbr_offset.inc
+
+
+
+#Include processing
+FULLINCLUDES := $(addprefix $(SRCDIR)/,$(INCLUDES))
+#Object processing
+FULLSRC := $(addprefix $(SRCDIR)/,$(SRC))
+
+ifdef PROCESS_INCLUDES
+GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC))
+FULLINCLUDES := $(foreach f,$(FULLINCLUDES),$(basename $(f)).$(INCEXT))
+#Creation of headers
+$(FULLINCLUDES) : $(SRCDIR)/%.$(INCEXT) : %.inc
+	$(do_headers)
+else
+#Armasm sytax specifc asm rule goes here
+endif
+
+
+#Rules
+#vpath %.inc . $(SRCDIR) 
+
+
+MAKMAKE :
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $(SRC) $(TARGET) ARMASM
+#	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+
+
+BLD SAVESPACE : 
+	echo Nothing to do
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)") 
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/$(TARGET)") 
+#	-$(ERASE) "$(TARGET)")
+#	-$(ERASE) "$(BUILDLOC)/$(TARGET)")
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,22 @@
+# Copyright (c) 2005-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:
+# Meta information for the h4_genbootinc extension template
+#
+
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/ne1_tb_genbootinc.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,54 @@
+# Copyright (c) 2006-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:
+# h4_genbootinc.mk
+# Generate assembler inc files from header files
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+XINCDIR := $(INC_PATH)/assp/naviengine
+XGENDIR := $(INC_PATH)/assp/naviengine/$(MEMMODEL)
+
+MAKMAKE : all
+
+FREEZE :
+
+LIB : all
+
+CLEANLIB :
+
+RESOURCE :
+
+FINAL :
+
+BLD SAVESPACE : all
+
+RELEASABLES :
+	@echo $(XGENDIR)/naviengine.inc
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,$(XGENDIR)/naviengine.inc) 
+	@echo $(XGENDIR)/naviengine.inc
+
+all: $(XGENDIR)/naviengine.inc
+
+$(XGENDIR)/naviengine.inc : $(XINCDIR)/naviengine.h
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $(XINCDIR)/naviengine.h $(XGENDIR)/naviengine.inc ARMASM
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.flm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,281 @@
+# Copyright (c) 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:
+# ne1_tb_restricted_coreldr.flm
+# #  NB! LINKBASE :  Code execute address also set coreldr.lnk file 
+# #  MUST REFLECT CORELOADER ADDRESS RELOCATION IN BOTH FILES!!
+# 
+#
+
+ifeq ($($(NAME)_ne1_tb_resricted_coreldr_flm),)
+$(NAME)_ne1_tb_resricted_coreldr_flm := 1
+
+## THESE MACROS NEED TO BE SET EXPLICITLY TO TRUE OR BLANK
+
+## Use this macro if it is required to use the MMU
+## if the MMU is not require either comment it out or set it FALSE
+USE_MMU := TRUE
+  
+# This macro enables benchmarking code. Comment out or set FALSE if not required
+WRITE_TIMINGS :=
+# Timer is not implemented for Naviengine. Do not enable!
+
+## This macro causes the page tables to be output. Comment out or set FALSE if not required
+## If this option is selected then the MMU code will be enabled
+DUMP_PAGE_TABLES :=
+# Page tables cannot be dumped on Naviengine due to the NANDController used. Do not enable!
+
+# This macro enables the MMU enabled version of the coreldr to call RestartAuxiliaryCores
+# before it runs the core image.  This function should be defined in the variant, to 
+# restart the auxiliary cores, which it should have paused on startup.
+RUNS_WITH_SMP := TRUE
+
+## Make sure all 3 macros are either TRUE or FALSE
+# Enforce USE_MMU if page table is to be dumped
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+  USE_MMU := TRUE
+else
+  DUMP_PAGE_TABLES := FALSE
+endif
+
+ifneq "$(USE_MMU)" "TRUE"
+  USE_MMU := FALSE
+endif
+
+ifneq "$(WRITE_TIMINGS)" "TRUE"
+  WRITE_TIMINGS := FALSE
+endif
+
+# Set the directories; based on calling bld.inf
+GENSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr
+# Generic drivers
+BLSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/UTIL/ONBL2
+XSRSRCDIR1 := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/OAM/OSLess
+XSRSRCDIR2 := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/LLD/DNandO
+# Coreloader ASM...
+SPECSRCDIR := $(EXTENSION_ROOT)/../navienginebsp/ne1_tb/nandboot
+# PAM - Platform specific Version
+SPECXSRSRCDIR := $(EXTENSION_ROOT)/pam
+SPECXSRSRCDIR1 := $(EXTENSION_ROOT)/lld
+
+# Platform Variant includes
+VARIANTINC := $(INC_PATH)/ne1_tb
+VARIANTINC2 := $(EXTENSION_ROOT)/../navienginebsp/ne1_tb/bootstrap
+VARIANTINC3 := $(EXTENSION_ROOT)/../navienginebsp/ne1_tb/nand  $(EXTENSION_ROOT)/../navienginebsp/naviengine_assp  $(INC_PATH)/assp/naviengine/$(MEMMODEL)
+
+# Generic driver file includes
+GENINC1 := $(INC_PATH) $(EPOCROOT)/epoc32/include
+GENDRIVERINC := $(INC_PATH)/drivers
+GENINC2 := $(INC_PATH)/drivers/unistore2 $(INC_PATH)/memmodel/epoc $(INC_PATH)/kernel  $(INC_PATH)/kernel/arm $(INC_PATH)/nkern $(INC_PATH)/nkern/arm
+GENXSRINC := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/INC
+GENINCPATH:= $(GENSRCDIR) $(SPECSRCDIR) $(XSRSRCDIR1) $(XSRSRCDIR2) $(SPECXSRSRCDIR) $(SPECXSRSRCDIR1) $(VARIANTINC) $(VARIANTINC2) $(VARIANTINC3) $(GENINC1) $(GENDRIVERINC) $(GENINC2) $(GENINC3) $(GENINC4) $(GENXSRINC)
+
+
+# Set the source/include/target directories
+
+# epoc32 folder for exported header files
+EPOCINCDIR := $(INC_PATH)/ne1_tb
+
+# Build directory
+BUILDLOC := $(EPOCBLD)/ne1_tb_restricted_coreldr_flm/$(PLATFORM_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)/epoc32/release/$(PLATFORM_PATH)
+BINTARGET := $(TARGETDIR)/$(NAME).bin
+TMPTARGET := $(BUILDLOC)/$(NAME).elf
+
+# Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR)
+vpath %.inc . $(SPECSRCDIR) $(EPOCINCDIR)
+vpath %.ginc . $(BUILDLOC)
+
+
+# from base/e32/include/drivers/...
+VHEADERS := nanddevice.h
+# the following .inc files get built as part of the process
+BUILTINCLUDES := nanddevice.inc config.inc
+BUILTINCLUDES2 := nand_plat.inc
+
+#
+ASMSOURCE := coreldrasm.s
+GENCPPSOURCE := inflate.cpp
+BLCPPSOURCE := ONbl2.cpp
+XSRCPPSOURCE1 := OSLessOAM.cpp
+SPECXSRCPPSOURCE := pam.cpp
+SPECXSRCPPSOURCE1 := pnl.cpp  
+
+XSRLIB := $(EPOCROOT)/epoc32/release/armv5/$(CFG)/nbl2.lib
+
+# Only link in the MMU stuff if required
+GENASMSOURCE :=
+ifeq "$(USE_MMU)" "TRUE"
+  GENASMSOURCE := coreldrmmu.s
+endif
+
+HEADERS := 
+SPECHEADERS := nand_plat.h
+
+## Address at which coreloader binary is loaded and then started from
+#
+# On NaviEngine this number is base of ram + 208MB (permitting 208MB core images)
+# this number is pretty arbitrary
+# if necessary as long as the corresponding change is also made to
+# KCoreLoaderAddress in variant_bootstrap.inc
+#
+LINKBASE := 0x8D000000
+
+# Build up logical TRUE defines
+ASM_TRUE_MACROS :=
+
+ifeq "$(USE_MMU)" "TRUE"
+  ASM_TRUE_MACROS := $(ASM_TRUE_MACROS) USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "TRUE"
+  ASM_TRUE_MACROS := $(ASM_TRUE_MACROS) WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+  ASM_TRUE_MACROS := $(ASM_TRUE_MACROS) DUMP_PAGE_TABLES
+endif 
+
+ifeq "$(RUNS_WITH_SMP)" "TRUE"
+  ASM_TRUE_MACROS := $(ASM_TRUE_MACROS) RUNS_WITH_SMP
+endif
+
+# Build up logical FALSE defines
+ASM_FALSE_MACROS :=
+
+ifeq "$(USE_MMU)" "FALSE"
+  ASM_FALSE_MACROS := $(ASM_FALSE_MACROS) USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "FALSE"
+  ASM_FALSE_MACROS := $(ASM_FALSE_MACROS) WRITE_TIMINGS
+endif
+
+ifeq "$(DUMP_PAGE_TABLES)" "FALSE"
+  ASM_FALSE_MACROS := $(ASM_FALSE_MACROS) DUMP_PAGE_TABLES
+endif 
+
+
+# Arm RVCT tools
+ASM_TRUE_MACROS := $(ASM_TRUE_MACROS) USE_CXSF
+
+OBJEXT := o
+INCEXT := inc
+
+ARMCCFLAGS := --arm -c -Otime --cpp --enum_is_int
+ARMCCFLAGS := $(ARMCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+ARMCCFLAGS := $(ARMCCFLAGS) -DEKA2
+ARMCCFLAGS := $(ARMCCFLAGS) -DXSR_NBL2 -DREAL_TARGET -DDEFERED_CHK -DSYMBIAN_SUPPORT_UNISTORE2
+
+ARMCCFLAGS := $(ARMCCFLAGS) --preinclude $(EPOCROOT)/epoc32/include/rvct/rvct.h
+
+ifeq "$(CFG)" "UDEB"
+ARMCCFLAGS := $(ARMCCFLAGS) -D_DEBUG
+endif
+
+ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),--predefine "$(macro) SETL {TRUE}")
+ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),--predefine "$(macro) SETL {FALSE}")
+ASM_LINKBASE_MACRO := --predefine "_LINKBASE_ SETA $(LINKBASE)"
+
+AFLAGS := -g --keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -I$(BUILDLOC) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+LFLAGS := --entry BootEntry --ro-base $(LINKBASE) --FIRST BootEntry --map
+SYMOPT := --symdefs
+ASMTYP := ARMASM
+LINKFILE :=
+
+# include base commonly used functions
+include $(EPOCROOT)/epoc32/tools/makefile_templates/base/base_rvct_common.mk
+
+
+# Header processing
+FULLHEADERS := $(addprefix $(GENSRCDIR)/,$(HEADERS))
+FULLSPECHEADERS := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+
+FULLVHEADERS := $(addprefix $(GENDRIVERINC)/,$(VHEADERS))
+FULLBUILTINCLUDES := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES))
+# do h2inc
+$(eval $(call base__h2inc,$(FULLBUILTINCLUDES),$(FULLVHEADERS)))
+
+FULLVHEADERS2 := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+FULLBUILTINCLUDES2 := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES2))
+# do h2inc
+$(eval $(call base__h2inc,$(FULLBUILTINCLUDES2),$(FULLVHEADERS2)))
+
+# object names
+GENCPPOBJECTS := $(foreach f,$(GENCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(GENCPPOBJECTS))
+
+BLCPPOBJECTS := $(foreach f,$(BLCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLBLCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(BLCPPOBJECTS))
+
+XSRCPPOBJECTS1 := $(foreach f,$(XSRCPPSOURCE1),$(basename $(f)).$(OBJEXT))
+FULLXSRCPPOBJECTS1 := $(addprefix $(BUILDLOC)/,$(XSRCPPOBJECTS1))
+
+SPECXSRCPPOBJECTS := $(foreach f,$(SPECXSRCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLSPECXSRCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(SPECXSRCPPOBJECTS))
+
+SPECXSRCPPOBJECTS1 := $(foreach f,$(SPECXSRCPPSOURCE1),$(basename $(f)).$(OBJEXT))
+FULLSPECXSRCPPOBJECTS1 := $(addprefix $(BUILDLOC)/,$(SPECXSRCPPOBJECTS1))
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+GENASMOBJECTS := $(foreach f,$(GENASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENASMOBJECTS := $(addprefix $(BUILDLOC)/,$(GENASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENASMOBJECTS) $(FULLGENCPPOBJECTS) $(FULLBLCPPOBJECTS) $(FULLXSRCPPOBJECTS1) $(FULLSPECXSRCPPOBJECTS) $(FULLSPECXSRCPPOBJECTS1) $(XSRLIB)
+
+
+FULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(INCLUDES))
+FULLPLATINCLUDES:= $(addprefix $(PLATSRCDIR)/,$(PLATINCLUDES))
+FULLGENINCLUDES:= $(addprefix $(GENSRCDIR)/,$(GENINCLUDES))
+FULLBLDINCLUDES:= $(addprefix $(H2BLDDIR)/,$(BLDINCLUDES))
+
+
+# Link
+$(eval $(call base__link,$(TMPTARGET),$(FULLOBJECTS)))
+
+# Strip
+$(eval $(call base__strip,$(BINTARGET),$(TMPTARGET)))
+
+# CPP objects
+$(eval $(call base__compile,$(FULLGENCPPOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(GENSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)))
+
+$(eval $(call base__compile,$(FULLBLCPPOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(BLSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)))
+
+$(eval $(call base__compile,$(FULLXSRCPPOBJECTS1),$(BUILDLOC)/%.$(OBJEXT),$(XSRSRCDIR1)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)))
+
+$(eval $(call base__compile,$(FULLSPECXSRCPPOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(SPECXSRSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)))
+
+$(eval $(call base__compile,$(FULLSPECXSRCPPOBJECTS1),$(BUILDLOC)/%.$(OBJEXT),$(SPECXSRSRCDIR1)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)))
+
+# Asm objects
+$(eval $(call base__asm,$(FULLGENASMOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(GENSRCDIR)/$(GENASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBUILTINCLUDES3) $(FULLDRIVERINCLUDES) $(FULLARMINCLUDES) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)))
+
+$(eval $(call base__asm,$(FULLASMOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)))
+
+#
+TARGET :: $(TARGETDIR) $(BUILDLOC) $(BINTARGET)
+
+# --what to show releasables
+$(eval $(call whatmacro,$(BINTARGET),USERFLM))
+# Create directory
+CREATABLEPATHS := $(TARGETDIR) $(BUILDLOC)
+$(call makepath,$(CREATABLEPATHS))
+# Clean up
+$(eval $(call GenerateStandardCleanTarget,$(CLEANTARGETS),$(BUILDLOC)))
+
+endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2008-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:
+# Meta information for the Navi_restricted_coreldr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,398 @@
+# Copyright (c) 2008-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:
+# ne1_tb_restricted_coreldr.mk
+# #  NB! LINKBASE :  Code execute address also set coreldr.lnk file 
+# #  MUST REFLECT CORELOADER ADDRESS RELOCATION IN BOTH FILES!!
+# 
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+## If any of these macros are changed, then execute "abld clean coreldr" from this directory
+## Use this macro if it is required to use the MMU
+## if the MMU is not require either comment it out or set it FALSE
+USE_MMU := TRUE
+  
+# This macro enables benchmarking code. Comment out or set FALSE if not required
+#WRITE_TIMINGS := TRUE
+# Timer is not implemented for Naviengine. Do not enable!
+
+
+## This macro causes the page tables to be output. Comment out or set FALSE if not required
+## If this option is selected then the MMU code will be enabled
+# DUMP_PAGE_TABLES := TRUE
+# Page tables cannot be dumped on Naviengine due to the NANDController used. Do not enable!
+
+# This macro enables the MMU enabled version of the coreldr to call RestartAuxiliaryCores
+# before it runs the core image.  This function should be defined in the variant, to 
+# restart the auxiliary cores, which it should have paused on startup.
+RUNS_WITH_SMP := TRUE
+
+# Macro used to enable support for Shadowed Memory Regions feature in loader
+# See also varaint\config.inc to enable in bootstrap
+SUPPORTS_SMR := TRUE
+
+## Make sure all 3 macros are either TRUE or FALSE
+# Enforce USE_MMU if page table is to be dumped
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+	USE_MMU := TRUE
+else
+	DUMP_PAGE_TABLES := FALSE
+endif
+
+ifneq "$(USE_MMU)" "TRUE"
+	USE_MMU := FALSE
+endif
+
+ifneq "$(WRITE_TIMINGS)" "TRUE"
+	WRITE_TIMINGS := FALSE
+endif
+
+ifneq "$(SUPPORTS_SMR)" "TRUE"
+	SUPPORTS_SMR := FALSE
+endif
+
+#Set the directories; based on calling bld.inf
+GENSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr
+#Generic drivers
+BLSRCDIR := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/UTIL/ONBL2
+XSRSRCDIR1 := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/OAM/OSLess
+XSRSRCDIR2 := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/LLD/DNandO
+#Coreloader ASM...
+SPECSRCDIR := $(EXTENSION_ROOT)/../navienginebsp/ne1_tb/nandboot
+#PAM - Platform specific Version
+SPECXSRSRCDIR := $(EXTENSION_ROOT)/pam
+SPECXSRSRCDIR1 := $(EXTENSION_ROOT)/lld
+
+#Platform Variant includes
+VARIANTINC := $(INC_PATH)/ne1_tb
+VARIANTINC2 := $(EXTENSION_ROOT)/../navienginebsp/ne1_tb/bootstrap
+VARIANTINC3 := $(EXTENSION_ROOT)/../navienginebsp/ne1_tb/nand  $(EXTENSION_ROOT)/../navienginebsp/naviengine_assp  $(INC_PATH)/assp/naviengine/$(MEMMODEL)
+
+#Generic driver file includes
+GENINC1 := $(INC_PATH) $(EPOCROOT)epoc32/include
+GENDRIVERINC := $(INC_PATH)/drivers
+GENINC2 := $(INC_PATH)/drivers/unistore2 $(INC_PATH)/memmodel/epoc $(INC_PATH)/kernel  $(INC_PATH)/kernel/arm $(INC_PATH)/nkern $(INC_PATH)/nkern/arm
+GENXSRINC := $(EXTENSION_ROOT)/../../../kernelhwsrv/kernel/eka/drivers/unistore2/srca/XSR/INC
+GENINCPATH:= $(GENSRCDIR) $(SPECSRCDIR) $(XSRSRCDIR1) $(XSRSRCDIR2) $(SPECXSRSRCDIR) $(SPECXSRSRCDIR1) $(VARIANTINC) $(VARIANTINC2) $(VARIANTINC3) $(GENINC1) $(GENDRIVERINC) $(GENINC2) $(GENINC3) $(GENINC4) $(GENXSRINC)
+
+
+# Set the source/include/target directories
+
+#epoc32 folder for exported header files
+EPOCINCDIR = $(INC_PATH)/ne1_tb
+
+# Build directory (EPOCBLD too long)
+BUILDLOC = $(EPOCROOT)epoc32/build/bsp/hwip_nec_naviengine/ne1_tb_restricted/unistore2/nandboot/coreldr/$(PLATFORM_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TARGET = $(TARGETDIR)$/$(NAME).bin
+TMPTARGET = $(BUILDLOC)$/$(NAME).elf
+
+#Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR)
+vpath %.inc . $(SPECSRCDIR) $(EPOCINCDIR)
+vpath %.ginc . $(BUILDLOC)
+
+
+# from base/e32/include/drivers/...
+VHEADERS := nanddevice.h
+# the following .inc files get built as part of the process
+BUILTINCLUDES := nanddevice.inc config.inc
+BUILTINCLUDES2 := nand_plat.inc
+
+
+
+ASMSOURCE := coreldrasm.s
+GENCPPSOURCE := inflate.cpp
+BLCPPSOURCE := ONbl2.cpp
+XSRCPPSOURCE1 := OSLessOAM.cpp
+SPECXSRCPPSOURCE := pam.cpp
+SPECXSRCPPSOURCE1 := pnl.cpp  
+
+XSRLIB := $(EPOCROOT)epoc32/release/armv5/$(CFG)/nbl2.lib
+
+ifeq "$(USE_MMU)" "TRUE"
+	#generic version found in base/e32utils/nandboot/coreldr/...
+	GENASMSOURCE := coreldrmmu.s # only link in the MMU stuff if required
+endif
+
+HEADERS := 
+SPECHEADERS := nand_plat.h
+
+## Address at which coreloader binary is loaded and then started from
+#
+# On NaviEngine this number is base of ram + 208MB (permitting 208MB core images)
+# this number is pretty arbitrary
+# if necessary as long as the corresponding change is also made to
+# KCoreLoaderAddress in variant_bootstrap.inc
+#
+LINKBASE = 0x8D000000
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+
+# Select the toolchain: ARM RVCT, then GCC
+
+# Use GCC toolchain if no other is available
+TOOLVER := GCC
+RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4)))
+ifeq "$(RVCTSTR)" "RVCT"
+	TOOLVER := RVCT
+	OP := --
+	OB := o
+endif
+
+# Build up logical TRUE defines
+ifeq "$(USE_MMU)" "TRUE"
+	ASM_TRUE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "TRUE"
+	ASM_TRUE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(SUPPORTS_SMR)" "TRUE"
+	ASM_TRUE_MACROS += SUPPORTS_SMR
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+	ASM_TRUE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+ifeq "$(RUNS_WITH_SMP)" "TRUE"
+	ASM_TRUE_MACROS += RUNS_WITH_SMP
+endif
+
+# Build up logical FALSE defines
+ifeq "$(USE_MMU)" "FALSE"
+	ASM_FALSE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "FALSE"
+	ASM_FALSE_MACROS += WRITE_TIMINGS
+endif
+ 
+ifeq "$(SUPPORTS_SMR)" "FALSE"
+	ASM_FALSE_MACROS += SUPPORTS_SMR
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "FALSE"
+	ASM_FALSE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+#Arm RVCT tools
+ifeq "$(TOOLVER)" "RVCT"
+ASM_TRUE_MACROS += USE_CXSF
+ASM := armasm
+LINK := armlink
+FROMELF := fromelf
+CPP := armcc
+
+OBJEXT := o
+INCEXT := inc
+
+ARMCCFLAGS := --arm -c -Otime --cpp
+ARMCCFLAGS := $(ARMCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+ARMCCFLAGS := $(ARMCCFLAGS) -DEKA2
+ARMCCFLAGS := $(ARMCCFLAGS) -DXSR_NBL2 -DREAL_TARGET -DDEFERED_CHK -DSYMBIAN_SUPPORT_UNISTORE2
+  
+
+ifeq "$(SUPPORTS_SMR)" "TRUE"
+    ARMCCFLAGS := $(ARMCCFLAGS) -DSUPPORTS_SMR
+endif    
+
+
+
+	ARMCCFLAGS := $(ARMCCFLAGS) --preinclude $(EPOCROOT)epoc32/include/rvct/rvct.h
+
+	ifeq "$(CFG)" "UDEB"
+	ARMCCFLAGS := $(ARMCCFLAGS) -D_DEBUG
+	endif
+
+ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),$(OP)predefine "$(macro) SETL {FALSE}")
+ASM_LINKBASE_MACRO := $(OP)predefine "_LINKBASE_ SETA $(LINKBASE)"
+
+AFLAGS := -g $(OP)keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -I$(BUILDLOC) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+LFLAGS := $(OP)entry BootEntry $(OP)ro-base $(LINKBASE) $(OP)FIRST BootEntry $(OP)map
+SYMOPT := $(OP)symdefs
+ASMTYP := ARMASM
+LINKFILE :=
+
+define do_compile
+$(CPP) $(ARMCCFLAGS) $< -o $@
+endef
+define do_h2inc
+perl -S $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ ARMASM
+endef
+define do_asm
+$(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+endef
+define do_link
+$(LINK) $(LFLAGS) -$(OB) $@ $(FULLOBJECTS)
+endef
+define do_strip
+$(FROMELF) $(OP)bin $(OP)output $@ $<
+endef
+endif
+
+#Header processing
+FULLHEADERS := $(addprefix $(GENSRCDIR)/,$(HEADERS))
+FULLSPECHEADERS := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+
+FULLVHEADERS := $(addprefix $(GENDRIVERINC)/,$(VHEADERS))
+FULLBUILTINCLUDES := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES))
+$(FULLBUILTINCLUDES) : $(FULLVHEADERS)
+	$(do_h2inc)
+
+FULLVHEADERS2 := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+FULLBUILTINCLUDES2 := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES2))
+$(FULLBUILTINCLUDES2) : $(FULLVHEADERS2)
+	$(do_h2inc)
+
+#object names
+GENCPPOBJECTS := $(foreach f,$(GENCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(GENCPPOBJECTS))
+
+BLCPPOBJECTS := $(foreach f,$(BLCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLBLCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(BLCPPOBJECTS))
+
+XSRCPPOBJECTS1 := $(foreach f,$(XSRCPPSOURCE1),$(basename $(f)).$(OBJEXT))
+FULLXSRCPPOBJECTS1 := $(addprefix $(BUILDLOC)/,$(XSRCPPOBJECTS1))
+
+SPECXSRCPPOBJECTS := $(foreach f,$(SPECXSRCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLSPECXSRCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(SPECXSRCPPOBJECTS))
+
+SPECXSRCPPOBJECTS1 := $(foreach f,$(SPECXSRCPPSOURCE1),$(basename $(f)).$(OBJEXT))
+FULLSPECXSRCPPOBJECTS1 := $(addprefix $(BUILDLOC)/,$(SPECXSRCPPOBJECTS1))
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+GENASMOBJECTS := $(foreach f,$(GENASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENASMOBJECTS := $(addprefix $(BUILDLOC)/,$(GENASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENASMOBJECTS) $(FULLGENCPPOBJECTS) $(FULLBLCPPOBJECTS) $(FULLXSRCPPOBJECTS1) $(FULLSPECXSRCPPOBJECTS) $(FULLSPECXSRCPPOBJECTS1) $(XSRLIB)
+
+ifdef PROCESS_INCLUDES
+
+GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC))
+
+#Creation of headers
+FULLINCLUDES := $(foreach f,$(INCLUDES),$(basename $(f)).$(INCEXT))
+FULLINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLINCLUDES))
+
+$(FULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLBLDINCLUDES := $(foreach f,$(BLDINCLUDES),$(basename $(f)).$(INCEXT))
+FULLBLDINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLBLDINCLUDES))
+$(FULLBLDINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLPLATINCLUDES := $(foreach f,$(PLATINCLUDES),$(basename $(f)).$(INCEXT))
+FULLPLATINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLPLATINCLUDES))
+$(FULLPLATINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLGENINCLUDES := $(foreach f,$(GENINCLUDES),$(basename $(f)).$(INCEXT))
+FULLGENINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLGENINCLUDES))
+$(FULLGENINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+else
+FULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(INCLUDES))
+FULLPLATINCLUDES:= $(addprefix $(PLATSRCDIR)/,$(PLATINCLUDES))
+FULLGENINCLUDES:= $(addprefix $(GENSRCDIR)/,$(GENINCLUDES))
+FULLBLDINCLUDES:= $(addprefix $(H2BLDDIR)/,$(BLDINCLUDES))
+
+#Arm RVCT specifics here
+
+endif
+
+
+#Link
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#strip
+$(TARGET) : $(TMPTARGET)
+	$(do_strip)
+
+#CPP objects
+$(FULLGENCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLBLCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(BLSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLXSRCPPOBJECTS1) : $(BUILDLOC)/%.$(OBJEXT) : $(XSRSRCDIR1)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLSPECXSRCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECXSRSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLSPECXSRCPPOBJECTS1) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECXSRSRCDIR1)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+#Asm objects
+$(FULLGENASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/$(GENASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBUILTINCLUDES3) $(FULLDRIVERINCLUDES) $(FULLARMINCLUDES) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+$(FULLASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+# make the work directories
+$(TARGETDIR) :
+	$(call ifnotexistd,"$(TARGETDIR)")
+
+$(BUILDLOC) :
+	$(call ifnotexistd,"$(BUILDLOC)")
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+	@echo BLD
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)")
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*")
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/ne1_tb_restricted_coreldr.xml	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?> 
+<build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build build/2_0.xsd">
+
+<!--  Extension interfaces : replacements for Template Extension Makefiles  --> 
+
+ <interface name="base.ne1_tb_restricted_coreldr" extends="Symbian.KernelFLM" flm="ne1_tb_restricted_coreldr.flm">
+  <param name="NAME" />
+  <param name="MEMMODEL" />	
+  <param name="INCLUDES" default='' />
+  <param name="INC_PATH" />
+ </interface>
+
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/omap3_genbootinc.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,22 @@
+# Copyright (c) 2008-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:
+# Meta information for the omap3_genbootinc extension template
+#
+
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/omap3_genbootinc.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,59 @@
+# Copyright (c) 2006-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:
+# Generate assembler inc files from header files
+# 
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+# This will need to change when the directory gets renamed
+XINCDIR := $(INC_PATH)/tiomap3/variant/common
+XINCDIR2 := $(INC_PATH)/tiomap3/assp/common
+
+
+MAKMAKE : all
+
+FREEZE :
+
+LIB : all
+
+CLEANLIB :
+
+RESOURCE :
+
+FINAL :
+
+BLD SAVESPACE : all
+
+RELEASABLES :
+	@echo $(XINCDIR)/nand_fbr_offset.inc
+	@echo $(XINCDIR2)/customrestartreasons.inc
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,$(XINCDIR)/nand_fbr_offset.inc) 
+#	-$(ERASE) $(XINCDIR)/nand_fbr_offset.inc
+	@echo $(XINCDIR2)/customrestartreasons.inc
+
+all: $(XINCDIR2)/customrestartreasons.inc $(XINCDIR)/nand_fbr_offset.inc 
+
+$(XINCDIR)/nand_fbr_offset.inc : $(XINCDIR)/nand_fbr_offset.h
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $(XINCDIR)/nand_fbr_offset.h $(XINCDIR)/nand_fbr_offset.inc ARMASM
+
+$(XINCDIR2)/customrestartreasons.inc : $(XINCDIR2)/customrestartreasons.h
+	perl $(EPOCROOT)epoc32/tools/h2inc.pl $(XINCDIR2)/customrestartreasons.h $(XINCDIR2)/customrestartreasons.inc ARMASM
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.flm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,244 @@
+# Copyright (c) 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:
+# #  NB! LINKBASE :  Code execute address also set coreldr.lnk file 
+# #  MUST REFLECT CORELOADER ADDRESS RELOCATION IN BOTH FILES!!
+#
+
+ifeq ($($(NAME)_omap3_resricted_coreldr_flm),)
+$(NAME)_omap3_resricted_coreldr_flm := 1
+
+## THESE MACROS NEED TO BE SET EXPLICITLY TO TRUE OR BLANK
+
+## Use this macro if it is required to use the MMU
+## if the MMU is not require either comment it out or set it FALSE
+USE_MMU :=
+
+## This macro enables benchmarking code. Comment out or set FALSE if not required
+WRITE_TIMINGS :=
+
+## This macro causes the page tables to be output. Comment out or set FALSE if not required
+## If this option is selected then the MMU code will be enabled
+DUMP_PAGE_TABLES :=
+
+## Make sure all 3 macros are either TRUE or FALSE
+# Enforce USE_MMU if page table is to be dumped
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+  USE_MMU := TRUE
+else
+  DUMP_PAGE_TABLES := FALSE
+endif
+
+ifneq "$(USE_MMU)" "TRUE"
+  USE_MMU := FALSE
+endif
+
+ifneq "$(WRITE_TIMINGS)" "TRUE"
+  WRITE_TIMINGS := FALSE
+endif
+
+# Set the directories
+GENSRCDIR := $(EXTENSION_ROOT)/../../../../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr
+XSRSRCDIR := $(EXTENSION_ROOT)/../../../../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr/unistore2
+SPECSRCDIR := $(EXTENSION_ROOT)/../../../assp/common/nandboot/coreldr_largeblk
+
+VARIANTINC := $(INC_PATH)/tiomap3/variant/$(VARIANT_PATH)
+VARIANTINC2 := $(EXTENSION_ROOT)/../../../assp/common/bootstrap
+VARIANTINC3 := $(EXTENSION_ROOT)/../../34xx_sdp/nand
+VARIANTINC4 := $(INC_PATH)/tiomap3/variant/common
+
+GENINC1 := $(INC_PATH) $(EPOCROOT)/epoc32/include
+GENDRIVERINC := $(INC_PATH)/drivers
+GENINC2 := $(INC_PATH)/drivers/unistore2
+GENINCPATH := $(GENSRCDIR) $(SPECSRCDIR) $(XSRSRCDIR) $(VARIANTINC) $(VARIANTINC2) $(VARIANTINC3) $(VARIANTINC4) $(GENINC1) $(GENDRIVERINC) $(GENINC2)
+
+# Set the source/include/target directories
+GSRCDIR := ../../../assp/common/nandboot
+VINCDIR := ../../../h4/inc
+GINCDIR := ../../../shared/inc
+EPOCINCDIR := $(INC_PATH)/tiomap3/variant/34xx_sdp
+
+# Build directory
+BUILDLOC := $(EPOCBLD)/omap3_restricted_coreldr_flm/$(PLATFORM_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)/epoc32/release/$(PLATFORM_PATH)
+BINTARGET := $(TARGETDIR)/$(NAME).bin
+TMPTARGET := $(BUILDLOC)/$(NAME).elf
+
+# Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR)
+vpath %.inc . $(SPECSRCDIR) $(EPOCINCDIR)
+vpath %.ginc . $(BUILDLOC)
+
+INCLUDES :=
+
+VHEADERS := nanddevice.h
+BUILTINCLUDES := nanddevice.inc config.inc
+BUILTINCLUDES2 := nand_plat.inc
+
+ASMSOURCE := coreldrasm_largeblk.s
+GENCPPSOURCE := coreldr.cpp inflate.cpp
+XSRCPPSOURCE := coreldrxsr.cpp
+
+# Only link in the MMU stuff if required
+GENASMSOURCE :=
+ifeq "$(USE_MMU)" "TRUE"
+  GENASMSOURCE := coreldrmmu.s 
+endif
+
+HEADERS := inflate.h coreldr.h
+SPECHEADERS := nand_plat.h
+
+## Address at which coreloader binary is loaded and then started from
+#
+# On H4 this number is base of ram + 48MB (permitting 48MB core images)
+# this number is pretty arbitrary and may be raised higher into ram
+# if necessary as long as the corresponding change is also made to
+# KCoreLoaderAddress in variant_bootstrap.inc
+#
+LINKBASE := 0x83000000
+
+# Build up logical TRUE defines
+ASM_TRUE_MACROS :=
+
+ifeq "$(USE_MMU)" "TRUE"
+  ASM_TRUE_MACROS := $(ASM_TRUE_MACROS) USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "TRUE"
+  ASM_TRUE_MACROS := $(ASM_TRUE_MACROS) WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+  ASM_TRUE_MACROS := $(ASM_TRUE_MACROS) DUMP_PAGE_TABLES
+endif 
+
+# Build up logical FALSE defines
+ASM_FALSE_MACROS :=
+
+ifeq "$(USE_MMU)" "FALSE"
+  ASM_FALSE_MACROS := $(ASM_FALSE_MACROS) USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "FALSE"
+  ASM_FALSE_MACROS := $(ASM_FALSE_MACROS) WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "FALSE"
+  ASM_FALSE_MACROS := $(ASM_FALSE_MACROS) DUMP_PAGE_TABLES
+endif 
+
+
+# Arm RVCT tools
+ASM_TRUE_MACROS := $(ASM_TRUE_MACROS) USE_CXSF 
+
+OBJEXT := o
+INCEXT := inc
+
+ARMCCFLAGS := --arm -c -Otime --cpp --enum_is_int
+ARMCCFLAGS := $(ARMCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+ARMCCFLAGS := $(ARMCCFLAGS) -DEKA2
+ARMCCFLAGS := $(ARMCCFLAGS) -DSYMBIAN_SUPPORT_UNISTORE2
+
+ARMCCFLAGS := $(ARMCCFLAGS) --preinclude $(EPOCROOT)/epoc32/include/rvct/rvct.h
+
+ifdef MACRO
+ARMCCFLAGS := $(ARMCCFLAGS) -D$(MACRO)
+endif
+
+ifeq "$(CFG)" "UDEB"
+ARMCCFLAGS := $(ARMCCFLAGS) -D_DEBUG
+endif
+
+ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),--predefine "$(macro) SETL {TRUE}")
+ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),--predefine "$(macro) SETL {FALSE}")
+ASM_LINKBASE_MACRO := --predefine "_LINKBASE_ SETA $(LINKBASE)"
+
+AFLAGS := -g --keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -I$(BUILDLOC) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+LFLAGS := --entry BootEntry --ro-base $(LINKBASE) --FIRST BootEntry --map
+SYMOPT := --symdefs
+ASMTYP := ARMASM
+LINKFILE :=
+
+# Include base commonly used functions with RVCT toolchain
+include $(EPOCROOT)/epoc32/tools/makefile_templates/base/base_rvct_common.mk
+
+
+# CPP source processing
+FULLCPPSOURCE := $(addprefix $(GENSRCDIR)/,$(GENCPPSOURCE))
+
+# Header processing
+FULLHEADERS := $(addprefix $(GENSRCDIR)/,$(HEADERS))
+FULLSPECHEADERS := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+
+FULLVHEADERS := $(addprefix $(GENDRIVERINC)/,$(VHEADERS))
+FULLBUILTINCLUDES := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES))
+
+$(eval $(call base__h2inc,$(FULLBUILTINCLUDES),$(FULLVHEADERS)))
+
+FULLVHEADERS2 := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+FULLBUILTINCLUDES2 := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES2))
+
+$(eval $(call base__h2inc,$(FULLBUILTINCLUDES2),$(FULLVHEADERS2)))
+
+# Object names
+GENCPPOBJECTS := $(foreach f,$(GENCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(GENCPPOBJECTS))
+
+XSRCPPOBJECTS := $(foreach f,$(XSRCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLXSRCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(XSRCPPOBJECTS))
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+GENASMOBJECTS := $(foreach f,$(GENASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENASMOBJECTS := $(addprefix $(BUILDLOC)/,$(GENASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENASMOBJECTS) $(FULLGENCPPOBJECTS) $(FULLXSRCPPOBJECTS)
+
+
+FULLINCLUDES := $(addprefix $(SPECSRCDIR)/,$(INCLUDES))
+FULLPLATINCLUDES := $(addprefix $(PLATSRCDIR)/,$(PLATINCLUDES))
+FULLGENINCLUDES := $(addprefix $(GENSRCDIR)/,$(GENINCLUDES))
+FULLBLDINCLUDES := $(addprefix $(H2BLDDIR)/,$(BLDINCLUDES))
+
+
+# Link
+$(eval $(call base__link,$(TMPTARGET),$(FULLOBJECTS)))
+
+# Strip
+$(eval $(call base__strip,$(BINTARGET),$(TMPTARGET)))
+
+# CPP objects
+$(eval $(call base__compile,$(FULLGENCPPOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(GENSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)))
+
+$(eval $(call base__compile,$(FULLXSRCPPOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(XSRSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)))
+
+# Asm objects
+$(eval $(call base__asm,$(FULLGENASMOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(GENSRCDIR)/$(GENASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBUILTINCLUDES3) $(FULLDRIVERINCLUDES) $(FULLARMINCLUDES) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)))
+
+$(eval $(call base__asm,$(FULLASMOBJECTS),$(BUILDLOC)/%.$(OBJEXT),$(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)))
+
+#
+TARGET :: $(TARGETDIR) $(BUILDLOC) $(BINTARGET) 
+
+# --what to show releasables
+$(eval $(call whatmacro,$(BINTARGET),USERFLM))
+# Create directory
+CREATABLEPATHS := $(TARGETDIR) $(BUILDLOC)
+$(call makepath,$(CREATABLEPATHS))
+# Clean up
+$(eval $(call GenerateStandardCleanTarget,$(CLEANTARGETS),$(BUILDLOC)))
+
+endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,21 @@
+# Copyright (c) 2008-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:
+# Meta information for the omap3_restricted_coreldr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	base
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,391 @@
+# Copyright (c) 2008-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:
+# #  NB! LINKBASE :  Code execute address also set coreldr.lnk file 
+# #  MUST REFLECT CORELOADER ADDRESS RELOCATION IN BOTH FILES!!
+# 
+#
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1. 
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+## If any of these macros are changed, then execute "abld clean coreldr" from this directory
+## Use this macro if it is required to use the MMU
+## if the MMU is not require either comment it out or set it FALSE
+## USE_MMU := TRUE
+  
+## This macro enables benchmarking code. Comment out or set FALSE if not required
+#WRITE_TIMINGS := TRUE
+
+## This macro causes the page tables to be output. Comment out or set FALSE if not required
+## If this option is selected then the MMU code will be enabled
+#DUMP_PAGE_TABLES := TRUE
+
+
+## Make sure all 3 macros are either TRUE or FALSE
+# Enforce USE_MMU if page table is to be dumped
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+        USE_MMU := TRUE
+else
+        DUMP_PAGE_TABLES := FALSE
+endif
+
+ifneq "$(USE_MMU)" "TRUE"
+        USE_MMU := FALSE
+endif
+
+ifneq "$(WRITE_TIMINGS)" "TRUE"
+        WRITE_TIMINGS := FALSE
+endif
+
+#Set the directories
+GENSRCDIR := $(EXTENSION_ROOT)/../../../../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr
+XSRSRCDIR := $(EXTENSION_ROOT)/../../../../../../kernelhwsrv/kerneltest/e32utils/nandboot/coreldr/unistore2
+SPECSRCDIR := $(EXTENSION_ROOT)/../../../assp/common/nandboot/coreldr_largeblk
+
+VARIANTINC := $(INC_PATH)/tiomap3/variant/$(VARIANT_PATH)
+VARIANTINC2 := $(EXTENSION_ROOT)/../../../assp/common/bootstrap
+VARIANTINC3 := $(EXTENSION_ROOT)/../../34xx_sdp/nand
+VARIANTINC4 := $(INC_PATH)/tiomap3/variant/common
+
+GENINC1 := $(INC_PATH) $(EPOCROOT)epoc32/include
+GENDRIVERINC := $(INC_PATH)/drivers
+GENINC2 := $(INC_PATH)/drivers/unistore2
+GENINCPATH:= $(GENSRCDIR) $(SPECSRCDIR) $(XSRSRCDIR) $(VARIANTINC) $(VARIANTINC2) $(VARIANTINC3) $(VARIANTINC4) $(GENINC1) $(GENDRIVERINC) $(GENINC2)
+
+# Set the source/include/target directories
+GSRCDIR = ../../../assp/common/nandboot
+VINCDIR = ../../../h4/inc
+GINCDIR = ../../../shared/inc
+EPOCINCDIR = $(INC_PATH)/tiomap3/variant/34xx_sdp
+
+# Build directory (EPOCBLD too long)
+BUILDLOC = $(EPOCROOT)epoc32/build/tiomap3/$(VARIANT_PATH)_restricted/unistore2/nandboot/coreldr/$(PLATFORM)
+#BUILDLOC = $(EPOCROOT)epoc32/build/tiomap3/34xx_sdp_restricted/unistore2/nandboot/coreldr/$(PLATFORM)
+#BUILDLOC = $(EPOCBLD)/$(PLATFORM_PATH)/$(CFG)  # Error as $(EPOCBLD) include platform 
+#BUILDLOC = $(EPOCBLD)/$(CFG_PATH)
+
+# Set the target name
+TARGETDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+TARGET = $(TARGETDIR)/$(NAME).bin
+TMPTARGET = $(BUILDLOC)/$(NAME).elf
+
+#Rules
+vpath %.s . $(SPECSRCDIR) $(SRCDIR)
+vpath %.inc . $(SPECSRCDIR) $(EPOCINCDIR)
+vpath %.ginc . $(BUILDLOC)
+
+INCLUDES :=
+
+VHEADERS := nanddevice.h
+BUILTINCLUDES := nanddevice.inc config.inc
+BUILTINCLUDES2 := nand_plat.inc
+
+ASMSOURCE := coreldrasm_largeblk.s
+GENCPPSOURCE := coreldr.cpp inflate.cpp
+XSRCPPSOURCE := coreldrxsr.cpp
+
+ifeq "$(USE_MMU)" "TRUE"
+        GENASMSOURCE := coreldrmmu.s # only link in the MMU stuff if required
+endif
+
+HEADERS := inflate.h coreldr.h
+SPECHEADERS := nand_plat.h
+
+## Address at which coreloader binary is loaded and then started from
+#
+# On H4 this number is base of ram + 48MB (permitting 48MB core images)
+# this number is pretty arbitrary and may be raised higher into ram
+# if necessary as long as the corresponding change is also made to
+# KCoreLoaderAddress in variant_bootstrap.inc
+#
+LINKBASE = 0x83000000
+
+
+
+ARMASM_OUT := $(shell armasm 2>&1)
+ARMASM_OUT_4 := $(word 4,$(ARMASM_OUT))
+
+# Select the toolchain: ARM RVCT, then GCC
+
+# Use GCC toolchain if no other is available
+TOOLVER := GCC
+RVCTSTR := $(strip $(findstring RVCT, $(ARMASM_OUT_4)))
+ifeq "$(RVCTSTR)" "RVCT"
+        TOOLVER := RVCT
+        OP := --
+        OB := o
+endif
+
+# Build up logical TRUE defines
+ifeq "$(USE_MMU)" "TRUE"
+        ASM_TRUE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "TRUE"
+        ASM_TRUE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "TRUE"
+        ASM_TRUE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+# Build up logical FALSE defines
+ifeq "$(USE_MMU)" "FALSE"
+        ASM_FALSE_MACROS += USE_MMU
+endif 
+
+ifeq "$(WRITE_TIMINGS)" "FALSE"
+        ASM_FALSE_MACROS += WRITE_TIMINGS
+endif 
+
+ifeq "$(DUMP_PAGE_TABLES)" "FALSE"
+        ASM_FALSE_MACROS += DUMP_PAGE_TABLES
+endif 
+
+#Arm RVCT tools
+ifeq "$(TOOLVER)" "RVCT"
+        ASM_TRUE_MACROS += USE_CXSF
+        ASM := armasm
+        LINK := armlink
+        FROMELF := fromelf
+        CPP := armcc
+
+        OBJEXT := o
+        INCEXT := inc
+
+        ARMCCFLAGS := --arm -c -Otime --cpp
+        ARMCCFLAGS := $(ARMCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        ARMCCFLAGS := $(ARMCCFLAGS) -DEKA2
+        ARMCCFLAGS := $(ARMCCFLAGS) -DSYMBIAN_SUPPORT_UNISTORE2
+
+        ARMCCFLAGS := $(ARMCCFLAGS) --preinclude $(EPOCROOT)epoc32/include/rvct/rvct.h
+
+	  ifdef MACRO
+	  ARMCCFLAGS := $(ARMCCFLAGS) -D$(MACRO)
+	  endif
+	  
+        ifeq "$(CFG)" "UDEB"
+        ARMCCFLAGS := $(ARMCCFLAGS) -D_DEBUG
+        endif
+
+        ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),$(OP)predefine "$(macro) SETL {TRUE}")
+        ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),$(OP)predefine "$(macro) SETL {FALSE}")
+        ASM_LINKBASE_MACRO := $(OP)predefine "_LINKBASE_ SETA $(LINKBASE)"
+
+        AFLAGS := -g $(OP)keep $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -I$(BUILDLOC) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        LFLAGS := $(OP)entry BootEntry $(OP)ro-base $(LINKBASE) $(OP)FIRST BootEntry $(OP)map
+        SYMOPT := $(OP)symdefs
+        ASMTYP := ARMASM
+        LINKFILE :=
+
+        define do_compile
+                $(CPP) $(ARMCCFLAGS) $< -o $@
+        endef
+        define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ ARMASM
+        endef
+        define do_asm
+                $(ASM) $(AFLAGS) -$(OB) $@ $(OP)LIST $(join $(basename $@),.lst) $<
+        endef
+        define do_link
+                $(LINK) $(LFLAGS) -$(OB) $@ $(FULLOBJECTS)
+        endef
+        define do_strip
+                $(FROMELF) $(OP)bin $(OP)output $@ $<
+        endef
+endif
+
+
+#GCC build options
+ifeq "$(TOOLVER)" "GCC"
+        ASM := as
+        AFLAGS := -mapcs-32 -R -n -I$(BUILDLOC)
+
+        ASM_TRUE_MACRO_CMD := $(foreach macro,$(ASM_TRUE_MACROS),--defsym $(macro)=1)
+        ASM_FALSE_MACRO_CMD := $(foreach macro,$(ASM_FALSE_MACROS),--defsym $(macro)=0)
+        ASM_LINKBASE_MACRO := --defsym _LINKBASE_=$(LINKBASE)
+
+        LINKFLAGS = -n --section-alignment 4 --file-alignment 2 -no-whole-archive
+        GCCFLAGS=-march=armv4 -nostdinc -pipe -c -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas
+        GCCFLAGS := $(GCCFLAGS) $(foreach dir,$(GENINCPATH),$(join -I, $(dir)))
+        GCCDEFS = -D__SYMBIAN32__ -D__GCC32__ -D__EPOC32__ -D__MARM__ -D__MARM_ARM4__ -DEKA2 -DSYMBIAN_SUPPORT_UNISTORE2
+        ifeq "$(CFG)" "UDEB"
+        GCC = gcc -x c++ -g -O2 $(GCCFLAGS) -D_DEBUG -D_UNICODE $(GCCDEFS)
+        else
+        GCC = gcc -x c++ -s -fomit-frame-pointer -O2 $(GCCFLAGS) -DNDEBUG -D_UNICODE $(GCCDEFS)
+        endif
+
+        LINKFILE = $(SPECSRCDIR)/coreldr.lnk
+        OBJEXT := o
+        INCEXT := ginc
+
+        PROCESS_INCLUDES := 1
+        define do_compile
+                $(GCC) -o $@ $<
+        endef
+        define do_h2inc
+                perl $(EPOCROOT)epoc32/tools/h2inc.pl $< $@ AS
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $@ $(join $(basename $@),.ginc)
+        endef
+        define do_includes
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $@
+        endef
+        define do_asm
+                perl $(EPOCROOT)epoc32/tools/armasm2as.pl $< $(join $(basename $@),.s)
+                $(AS) $(AFLAGS) $(ASM_TRUE_MACRO_CMD) $(ASM_FALSE_MACRO_CMD) $(ASM_LINKBASE_MACRO) -o $@ $(join $(basename $@),.s)
+        endef
+        define do_strip
+                strip -O binary -o "$(TARGET)" "$(TMPTARGET)"
+                echo Built $(TARGET)
+        endef
+        define do_link
+                ld -o "$(TMPTARGET)"  --start $(FULLOBJECTS) --script=$(LINKFILE)
+        endef
+endif
+
+
+#CPP source processing
+FULLCPPSOURCE := $(addprefix $(GENSRCDIR)/,$(GENCPPSOURCE))
+
+#Header processing
+FULLHEADERS := $(addprefix $(GENSRCDIR)/,$(HEADERS))
+FULLSPECHEADERS := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+
+FULLVHEADERS := $(addprefix $(GENDRIVERINC)/,$(VHEADERS))
+FULLBUILTINCLUDES := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES))
+$(FULLBUILTINCLUDES) : $(FULLVHEADERS)
+	$(do_h2inc)
+
+FULLVHEADERS2 := $(addprefix $(VARIANTINC)/,$(SPECHEADERS))
+FULLBUILTINCLUDES2 := $(addprefix $(BUILDLOC)/,$(BUILTINCLUDES2))
+$(FULLBUILTINCLUDES2) : $(FULLVHEADERS2)
+	$(do_h2inc)
+
+#object names
+GENCPPOBJECTS := $(foreach f,$(GENCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(GENCPPOBJECTS))
+
+XSRCPPOBJECTS := $(foreach f,$(XSRCPPSOURCE),$(basename $(f)).$(OBJEXT))
+FULLXSRCPPOBJECTS := $(addprefix $(BUILDLOC)/,$(XSRCPPOBJECTS))
+
+ASMOBJECTS := $(foreach f,$(ASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLASMOBJECTS := $(addprefix $(BUILDLOC)/,$(ASMOBJECTS))
+
+GENASMOBJECTS := $(foreach f,$(GENASMSOURCE),$(basename $(f)).$(OBJEXT))
+FULLGENASMOBJECTS := $(addprefix $(BUILDLOC)/,$(GENASMOBJECTS))
+
+FULLOBJECTS := $(FULLASMOBJECTS) $(FULLGENASMOBJECTS) $(FULLGENCPPOBJECTS) $(FULLXSRCPPOBJECTS)
+
+ifdef PROCESS_INCLUDES
+
+GCCSRC := $(addprefix $(BUILDLOC)/,$(SRC))
+
+#Creation of headers
+FULLINCLUDES := $(foreach f,$(INCLUDES),$(basename $(f)).$(INCEXT))
+FULLINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLINCLUDES))
+
+$(FULLINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLBLDINCLUDES := $(foreach f,$(BLDINCLUDES),$(basename $(f)).$(INCEXT))
+FULLBLDINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLBLDINCLUDES))
+$(FULLBLDINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLPLATINCLUDES := $(foreach f,$(PLATINCLUDES),$(basename $(f)).$(INCEXT))
+FULLPLATINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLPLATINCLUDES))
+$(FULLPLATINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+FULLGENINCLUDES := $(foreach f,$(GENINCLUDES),$(basename $(f)).$(INCEXT))
+FULLGENINCLUDES := $(addprefix $(BUILDLOC)/,$(FULLGENINCLUDES))
+$(FULLGENINCLUDES) : $(BUILDLOC)/%.$(INCEXT) : %.inc
+	$(do_includes)
+
+else
+FULLINCLUDES:= $(addprefix $(SPECSRCDIR)/,$(INCLUDES))
+FULLPLATINCLUDES:= $(addprefix $(PLATSRCDIR)/,$(PLATINCLUDES))
+FULLGENINCLUDES:= $(addprefix $(GENSRCDIR)/,$(GENINCLUDES))
+FULLBLDINCLUDES:= $(addprefix $(H2BLDDIR)/,$(BLDINCLUDES))
+
+#Arm RVCT specifics here
+
+endif
+
+
+#Link
+$(TMPTARGET) : $(FULLOBJECTS)
+	$(do_link)
+
+#strip
+$(TARGET) : $(TMPTARGET)
+	$(do_strip)
+
+#CPP objects
+$(FULLGENCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+$(FULLXSRCPPOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(XSRSRCDIR)/%.cpp $(FULLHEADERS) $(FULLSPECHEADERS)
+	$(do_compile)
+
+#Asm objects
+$(FULLGENASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(GENSRCDIR)/$(GENASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBUILTINCLUDES3) $(FULLDRIVERINCLUDES) $(FULLARMINCLUDES) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+$(FULLASMOBJECTS) : $(BUILDLOC)/%.$(OBJEXT) : $(SPECSRCDIR)/$(ASMSOURCE) $(FULLINCLUDES) $(FULLBUILTINCLUDES) $(FULLBUILTINCLUDES2) $(FULLBLDINCLUDES) $(FULLGENINCLUDES) $(FULLPLATINCLUDES)
+	$(do_asm)
+
+# make the work directories
+$(TARGETDIR) :
+	$(call ifnotexistd,"$(TARGETDIR)")
+
+$(BUILDLOC) :
+	$(call ifnotexistd,"$(BUILDLOC)")
+
+
+
+MAKMAKE :
+	echo Nothing to do
+
+FREEZE :
+	echo Nothing to do
+
+LIB :
+	echo Nothing to do
+
+CLEANLIB :
+	echo Nothing to do
+
+RESOURCE :
+	echo Nothing to do
+
+FINAL :
+	echo Nothing to do
+
+BLD SAVESPACE : $(TARGETDIR) $(BUILDLOC) $(TARGET)
+
+RELEASABLES :
+	@echo "$(TARGET)"
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,"$(TARGET)") 
+	-$(ERASE) $(call slash2generic,"$(BUILDLOC)/*.*") 
+#	-$(ERASE) "$(TARGET)"
+#	-$(ERASE) "$(BUILDLOC)/*.*"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/base/omap3_restricted_coreldr.xml	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?> 
+<build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build build/2_0.xsd">
+
+<!--  Extension interfaces : replacements for Template Extension Makefiles 
+  --> 
+
+ <interface name="base.omap3_restricted_coreldr" extends="Symbian.KernelFLM" flm="omap3_restricted_coreldr.flm">
+  <param name="VARIANT_PATH" />
+  <param name="NAME" />
+  <param name="INC_PATH" />
+  <param name="MACRO" default=''/>
+  <param name="INCLUDES" default='' />
+ </interface>
+
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/converged-comms/createcommdbs.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for PDR generation
+#
+
+platform	win32
+makefile 	gnumake
+techstream	converged-comms
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/converged-comms/createcommdbs.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,50 @@
+# Copyright (c) 2007-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:
+# Envoke CED to create correct CommDB
+# 
+#
+
+do_nothing :
+
+
+#
+# The targets invoked by abld 
+#
+
+MAKMAKE : do_nothing
+
+RESOURCE : do_nothing
+
+SAVESPACE : BLD
+
+BLD : do_nothing
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+FINAL : 
+	perl $(EXTENSION_ROOT)/createcommdbs.pl --command=build --platform=$(PLATFORM) --variant=$(CFG) --sourceDir=$(EXTENSION_ROOT)/$(SRCDIR) --platsec
+
+CLEAN : 
+	perl $(EXTENSION_ROOT)/createcommdbs.pl --command=clean --platform=$(PLATFORM) --variant=$(CFG) --sourceDir=$(EXTENSION_ROOT)/$(SRCDIR) --platsec
+
+RELEASABLES : 
+	@perl $(EXTENSION_ROOT)/createcommdbs.pl --command=releasables --platform=$(PLATFORM) --variant=$(CFG) --sourceDir=$(EXTENSION_ROOT)/$(SRCDIR) --platsec
+	
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for PDR generation
+#
+
+platform	win32
+makefile 	gnumake
+techstream	converged-comms
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/converged-comms/installdefaultcommdb.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,48 @@
+# Copyright (c) 2007-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:
+# Envoke CED to install correct CommDB
+#
+
+do_nothing :
+	rem do_nothing
+
+#
+# The targets invoked by abld 
+#
+
+MAKMAKE : do_nothing
+
+RESOURCE : do_nothing
+
+SAVESPACE : BLD
+
+BLD : do_nothing
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+FINAL : 
+	perl $(EXTENSION_ROOT)/installdefaultcommdb.pl --command=build --platform=$(PLATFORM) --variant=$(CFG) --platsec
+
+CLEAN : 
+	perl $(EXTENSION_ROOT)/installdefaultcommdb.pl --command=clean --platform=$(PLATFORM) --variant=$(CFG) --platsec
+
+RELEASABLES : 
+	@perl $(EXTENSION_ROOT)/installdefaultcommdb.pl --command=releasables --platform=$(PLATFORM) --variant=$(CFG) --platsec
+	
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/graphics/gen_khronos_cpp_from_hdr.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2008-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:
+# Meta information for the gen_khronos_cpp_from_hdr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	graphics
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/graphics/gen_khronos_cpp_from_hdr.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,46 @@
+# Copyright (c) 2008-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:
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+SOURCE_HDR=$(SOURCES)
+TARGET_CPP=$(TARGET)
+CONVERSION_SCRIPT = $(EPOCROOT)epoc32$/tools$/conv_khronos_hdr_to_cpp.pl
+
+MAKMAKE : $(TARGET_CPP)
+
+FREEZE :
+
+LIB :
+
+CLEANLIB :
+
+RESOURCE :
+
+FINAL :
+
+BLD SAVESPACE : $(TARGET_CPP)
+
+RELEASABLES :
+
+CLEAN :
+	perl $(CONVERSION_SCRIPT) $(SOURCE_HDR) $(TARGET_CPP) delete
+
+$(TARGET_CPP): $(SOURCE_HDR)
+	perl $(CONVERSION_SCRIPT) $(SOURCE_HDR) $(TARGET_CPP) create
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2008-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:
+# Meta information for the gen_khronos_openvg_cpp_from_hdr extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	graphics
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/graphics/gen_khronos_openvg_cpp_from_hdr.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,46 @@
+# Copyright (c) 2008-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:
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+SOURCE_HDR=$(SOURCES)
+TARGET_CPP=$(TARGET)
+CONVERSION_SCRIPT = $(EPOCROOT)epoc32$/tools$/conv_khronos_openvg_hdr_to_cpp.pl
+
+MAKMAKE : $(TARGET_CPP)
+
+FREEZE :
+
+LIB :
+
+CLEANLIB :
+
+RESOURCE :
+
+FINAL :
+
+BLD SAVESPACE : $(TARGET_CPP)
+
+RELEASABLES :
+
+CLEAN :
+	perl $(CONVERSION_SCRIPT) $(SOURCE_HDR) $(TARGET_CPP) delete
+
+$(TARGET_CPP): $(SOURCE_HDR)
+	perl $(CONVERSION_SCRIPT) $(SOURCE_HDR) $(TARGET_CPP) create
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/graphics/genpdrs.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for PDR generation
+#
+
+platform	win32
+makefile 	gnumake
+techstream	graphics
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/graphics/genpdrs.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,72 @@
+# Copyright (c) 2006-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:
+# Build PDR files
+# 
+#
+
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+ifeq ($(PLATFORM),WINS) 
+        TARGETDIR:=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/printers
+else
+ifeq ($(PLATFORM),WINSCW)
+        TARGETDIR:=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/printers
+else
+        TARGETDIR:=$(EPOCROOT)epoc32/data/z/resource/printers
+endif
+endif
+
+$(TARGETDIR) :
+	$(call createdir,"$(TARGETDIR)")
+
+PDR=$(TARGETDIR)/$(PRINTER).pdr
+
+$(PDR) : $(EXTENSION_ROOT)/../$(PRINTER_DIR)/$(PRINTER).PD
+	$(EPOCROOT)epoc32/tools/pdrtran '$<' '$@'
+
+do_nothing:
+# do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : do_nothing
+
+BLD : $(TARGETDIR) $(PDR)
+
+SAVESPACE : BLD
+
+RESOURCE : BLD
+
+CLEAN :
+	-$(ERASE) $(PDR)
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+FINAL : do_nothing
+
+RELEASABLES : 
+	@echo $(PDR)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/security/upsserver.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2008-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:
+# Meta information for the GNU ups server extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	security
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/security/upsserver.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,74 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ZDIR:=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z
+
+ifeq "$(PLATFORM)" "WINSCW"
+COPIED_EXE=$(ZDIR)/sys/bin/upsserver.exe
+endif
+
+
+do_nothing:
+	
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+ifdef COPIED_EXE
+#
+# Rules to create and package winscw Z drive upsserver.exe copy
+#
+.PHONY: FINAL
+FINAL : $(COPIED_EXE)
+
+$(COPIED_EXE) : $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/upsserver.exe
+	echo Copying upsserver.exe to emulator Z drive so the UPS romstub works.
+	$(CP)  $(call slash2generic,$<) $(call slash2generic,$@)
+
+CLEAN : 
+	-$(ERASE)  $(COPIED_EXE) 
+
+RELEASABLES : 
+	 echo $(COPIED_EXE)
+
+else
+
+FINAL : do_nothing
+CLEAN : do_nothing
+RELEASABLES : do_nothing
+
+endif
+
+SAVESPACE : BLD
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+RESOURCE : do_nothing
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/conversiontable.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for conversiontable use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/conversiontable.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,75 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+BUILD_DIR = $(call generated,generated/fatcharsetconv)
+	
+
+SOURCE_DIR = $(EXTENSION_ROOT)/../unicodeTables
+
+TARGET= $(BUILD_DIR)/cp950.cpp \
+	$(BUILD_DIR)/cp949.cpp \
+	$(BUILD_DIR)/cp936.cpp \
+	$(BUILD_DIR)/cp932.cpp \
+	$(BUILD_DIR)/cp874.cpp \
+	$(BUILD_DIR)/cp1258.cpp \
+	$(BUILD_DIR)/cp1257.cpp \
+	$(BUILD_DIR)/cp1256.cpp \
+	$(BUILD_DIR)/cp1255.cpp \
+	$(BUILD_DIR)/cp1254.cpp \
+	$(BUILD_DIR)/cp1253.cpp \
+	$(BUILD_DIR)/cp1252.cpp \
+	$(BUILD_DIR)/cp1251.cpp \
+	$(BUILD_DIR)/cp1250.cpp
+
+$(BUILD_DIR):
+	$(call createdir,$(BUILD_DIR)) 
+
+$(TARGET):$(BUILD_DIR)/cp%.cpp : $(SOURCE_DIR)/CP%.txt $(BUILD_DIR)
+	perl $(EXTENSION_ROOT)/FatConversionTable.pl $< $@
+
+
+do_nothing:
+	@echo do nothing
+
+
+MAKMAKE : $(TARGET)
+
+BLD : do_nothing
+
+SAVESPACE : do_nothing
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB: do_nothing
+
+RESOURCE : do_nothing
+
+FINAL : do_nothing
+
+# Do not echo 'do nothing'.
+# Do not specify any 'epoc32/build' files, unless they are built into the CBR. 
+RELEASABLES :
+
+CLEAN :
+	-$(ERASE) $(TARGET)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# fm_copyfiles_to_winscw_zdrive.meta
+#
+
+platform	winscw
+makefile	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/fm_copyfile_to_winscw_zdrive.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,71 @@
+# Copyright (c) 2007-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:
+# fm_copyfiles_to_winscw_zdrive.mk
+# Arguments to makefile are:
+# option FILE_TO_COPY <src/dest_filename_without_any_path>
+# option SRC_PATH     <epocroot_starting_path>
+# option DEST_PATH    <emulator_zdrive_path_starting_with_a_z>
+# Job of the this makefile is to copy the specified file to 
+# the epoc32/release/winscw/CFG/z/... folder for the current config e.g. UREL or
+# UDEB.
+# 
+#
+
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+ 
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+SOURCE_FILE=$(SRC_PATH)/$(FILE_TO_COPY)
+TARGET_DIR=$(EPOCROOT)epoc32/release/winscw/$(CFG_PATH)/$(DEST_PATH)
+TARGET_FILE=$(TARGET_DIR)/$(FILE_TO_COPY)
+
+DO_NOTHING : 
+	@echo do nothing
+
+$(TARGET_DIR) : 
+	$(MKDIR) $(call slash2generic,$(TARGET_DIR))
+	
+#
+# The targets invoked by abld...
+#
+
+MAKMAKE : DO_NOTHING
+
+BLD : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+CLEAN : 
+	@echo Erasing $(call slash2generic,$(TARGET_FILE))
+	-$(ERASE) $(call slash2generic,$(TARGET_FILE))
+
+RELEASABLES : 
+	@echo $(TARGET_FILE)
+
+FINAL : $(TARGET_DIR)
+	@echo Copying $(call slash2generic,$(SOURCE_FILE)) to $(call slash2generic,$(TARGET_FILE))
+	$(CP) $(call slash2generic,$(SOURCE_FILE)) $(call slash2generic,$(TARGET_FILE))
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/generate_cpp.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for cnvtool invocation
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/generate_cpp.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,112 @@
+# Copyright (c) 2000-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:
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+ifneq ($(FIRST_PASS),completed)
+
+FIRST_PASS=completed
+
+SOURCE_DIRECTORY=$(EXTENSION_ROOT)/../data
+
+TOOLS=\
+$(EPOCROOT)epoc32/tools/PARSER.pm \
+$(EPOCROOT)epoc32/tools/WRITER.pm \
+$(EPOCROOT)epoc32/tools/cnvtool.pl
+
+TARGET_DIRECTORY:=$(call generated,generatedcpp/charconv)
+TARGET_DIRECTORY2:=$(EPOCROOT)epoc32/tools/charconv
+
+endif
+
+
+ifeq ($(TYPE),dat)
+
+TARGET_FILES2=$(patsubst %,$(TARGET_DIRECTORY2)/%.dat,$(STEMS))
+
+$(TARGET_FILES2) : $(TARGET_DIRECTORY2)/%.dat: $(SOURCE_DIRECTORY)/%.txt $(SOURCE_DIRECTORY)/%$(CTL_EXT).ctl $(EXTRA_DEP) $(TOOLS)
+	@$(call createdir,"$(TARGET_DIRECTORY2)")
+	perl $(EPOCROOT)epoc32/tools/cnvtool.pl $(subst .txt,$(CTL_EXT).ctl,$<) $< $@  -flattenHashAndSave $(foreach PARAM,$(EXTRA_PARAMS),"$(PARAM)" )
+
+else
+
+# This is required by parellel build
+
+TARGET_FILES=$(patsubst %,$(TARGET_DIRECTORY)/g_%.cpp,$(STEMS)) 
+
+$(TARGET_FILES) : $(TARGET_DIRECTORY)/g_%.cpp: $(SOURCE_DIRECTORY)/%.txt $(SOURCE_DIRECTORY)/%$(CTL_EXT).ctl $(EXTRA_DEP) $(TOOLS)
+	@$(call createdir,"$(TARGET_DIRECTORY)")
+	@$(call createdir,"$(TARGET_DIRECTORY2)")
+	perl $(EPOCROOT)epoc32/tools/cnvtool.pl $(subst .txt,$(CTL_EXT).ctl,$<) $< $@ -generateSourceCode $(foreach PARAM,$(EXTRA_PARAMS),"$(PARAM)" )
+
+endif
+
+
+
+ifneq ($(TYPE),all)
+
+DO_NOTHING :
+# do nothing
+
+  # the targets below are the public ones
+
+MAKMAKE : $(TARGET_FILES2) $(TARGET_FILES)
+
+BLD : $(TARGET_FILES2) $(TARGET_FILES)
+
+SAVESPACE : BLD
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+	
+RESOURCE : DO_NOTHING
+
+CLEAN :
+	-$(ERASE) $(TARGET_FILES2) $(TARGET_FILES)
+
+RELEASABLES : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+endif
+
+
+
+ifeq ($(TYPE),dat)
+
+RELEASABLES : 
+	$(call formatreleasables,$(TARGET_FILES2))
+
+endif
+
+
+
+ifeq ($(TYPE),all)
+
+TYPE=dat
+TARGET_FILES2=$(TARGET_FILES)
+
+include $(call include)
+
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/generate_snm.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for snmtool use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/generate_snm.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,77 @@
+# Copyright (c) 2000-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:
+# basic_snm.mk
+# 
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+ifeq ($(PLATFORM),WINS) 
+        TARGET_DIRECTORY := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/charconv
+else 
+ifeq ($(PLATFORM),WINSCW)
+        TARGET_DIRECTORY := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/charconv
+else
+        TARGET_DIRECTORY := $(EPOCROOT)epoc32/data/z/resource/charconv
+endif
+endif
+
+SOURCE_DIRECTORY=$(EXTENSION_ROOT)
+
+TARGET_FILE=\
+        $(TARGET_DIRECTORY)/$(TARGET)
+
+TOOLS=\
+        $(EPOCROOT)epoc32/tools/PARSER.pm \
+        $(EPOCROOT)epoc32/tools/WRITER.pm \
+        $(EPOCROOT)epoc32/tools/snmtool.pl
+
+$(TARGET_DIRECTORY) :
+	@$(call createdir,"$@")
+
+$(TARGET_DIRECTORY)/basic.snm : $(SOURCE_DIRECTORY)/$(SOURCES) $(TOOLS)
+	perl $(EPOCROOT)epoc32/tools/snmtool.pl $(SOURCE_DIRECTORY)/$(SOURCES) $@
+
+DO_NOTHING :
+	@echo do nothing
+
+# the targets below are the public ones
+
+MAKMAKE : DO_NOTHING
+
+BLD : $(TARGET_DIRECTORY) $(TARGET_FILE)
+
+SAVESPACE : BLD
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+CLEAN : 
+	-$(ERASE) $(TARGET_FILE)
+
+RELEASABLES : 
+	@echo $(TARGET_FILE)
+
+FINAL : DO_NOTHING
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/bafl_copytestfiles.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for bafl_copytestfiles use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/bafl_copytestfiles.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,74 @@
+# Copyright (c) 2007-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:
+# Copy test files to test sortbytable functionality.
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+EPOCDATADIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+else
+EPOCDATADIR=$(EPOCROOT)epoc32/data
+endif
+
+TARGETDIR=$(EPOCDATADIR)/z/system/documents/baflsortbytabletest
+SOURCEDIR=$(EXTENSION_ROOT)/../tsrc
+	
+COPYFILES :
+	$(CP) $(call slash2generic,$(SOURCEDIR)/ADDCERT.RSC $(TARGETDIR)/addcert.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/HELP.RSC $(TARGETDIR)/help.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/MSGEDITOR.RSC $(TARGETDIR)/msgeditor.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/SMLPROGRESS.RSC $(TARGETDIR)/smlprogress.rsc)
+
+$(TARGETDIR) :
+	$(call createdir,"$@")
+	
+DO_NOTHING :
+	@echo do nothing
+	
+#
+# The targets invoked by bld...
+#
+
+BLD : $(TARGETDIR) COPYFILES
+
+CLEAN :  
+	-$(ERASE) $(call slash2generic,$(TARGETDIR)/addcert.rsc)
+	-$(ERASE) $(call slash2generic,$(TARGETDIR)/help.rsc)
+	-$(ERASE) $(call slash2generic,$(TARGETDIR)/msgeditor.rsc)
+	-$(ERASE) $(call slash2generic,$(TARGETDIR)/smlprogress.rsc)
+	
+RELEASABLES :
+	@echo $(TARGETDIR)/addcert.rsc
+	@echo $(TARGETDIR)/help.rsc
+	@echo $(TARGETDIR)/msgeditor.rsc
+	@echo $(TARGETDIR)/smlprogress.rsc
+ 
+MAKMAKE : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for t_copytestfiles use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/bafl_resource_files.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,205 @@
+# Copyright (c) 2007-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:
+# Copy test files to test sortbytable functionality.
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+TARGET_DIRECTORY=$(EPOCROOT)epoc32/release/$(PLATFORM)/$(CFG)/z/system/data
+else
+TARGET_DIRECTORY=$(EPOCROOT)epoc32/data/z/system/data
+endif
+
+SOURCEDIR=$(EXTENSION_ROOT)/../tsrc
+
+$(TARGET_DIRECTORY) :
+	$(call createdir,"$@")
+
+TARGET_FILES=\
+	$(TARGET_DIRECTORY)/t_compressed_unicode_1.rsc $(EPOCROOT)epoc32\include\T_COMPRESSED_UNICODE_1.RSG \
+	$(TARGET_DIRECTORY)/t_compressed_unicode_2.rsc $(EPOCROOT)epoc32\include\T_COMPRESSED_UNICODE_2.RSG \
+	$(TARGET_DIRECTORY)/t_dictionary_compressed_versio_of_2.rsc \
+	$(TARGET_DIRECTORY)/t_calypso_test_resource_file_1.rsc \
+	$(TARGET_DIRECTORY)/t_notrscfile.rsc \
+	$(TARGET_DIRECTORY)/rscheader.bin \
+	$(TARGET_DIRECTORY)/newrscformat.rsc \
+
+$(TARGET_DIRECTORY)/t_compressed_unicode_1.rsc : $(SOURCEDIR)/T_COMPRESSED_UNICODE_1.RPP
+	@RCOMP.EXE -s$? -o$@ -h$(EPOCROOT)epoc32/include/T_COMPRESSED_UNICODE_1.RSG -u -{0x000eb205,*}
+$(EPOCROOT)epoc32/include/T_COMPRESSED_UNICODE_1.RSG : $(SOURCEDIR)/T_COMPRESSED_UNICODE_1.RPP
+	@RCOMP.EXE -s$? -o$(TARGET_DIRECTORY)/t_compressed_unicode_1.rsc -h$@ -u -{0x000eb205,*}
+
+$(TARGET_DIRECTORY)/t_compressed_unicode_2.rsc : $(SOURCEDIR)/T_COMPRESSED_UNICODE_2.RPP
+	@RCOMP.EXE -s$? -o$@ -h$(EPOCROOT)epoc32/include/T_COMPRESSED_UNICODE_2.RSG -u
+$(EPOCROOT)epoc32/include/T_COMPRESSED_UNICODE_2.RSG : $(SOURCEDIR)/T_COMPRESSED_UNICODE_2.RPP
+	@RCOMP.EXE -s$? -o$(TARGET_DIRECTORY)/t_compressed_unicode_2.rsc -h$@ -u
+
+$(TARGET_DIRECTORY)/t_dictionary_compressed_versio_of_2.rsc : $(SOURCEDIR)/T_GENERATE_DICTIONARY_COMPRESSED_VERSION_OF_2.PL
+	@perl -w $(SOURCEDIR)/T_GENERATE_DICTIONARY_COMPRESSED_VERSION_OF_2.PL $(TARGET_DIRECTORY)/t_dictionary_compressed_versio_of_2.rsc
+
+$(TARGET_DIRECTORY)/t_calypso_test_resource_file_1.rsc : $(SOURCEDIR)/T_CALYPSO_COMPILED_RESOURCE_FILE_1.RSC
+	$(CP) $(call slash2generic,$(SOURCEDIR)/T_CALYPSO_COMPILED_RESOURCE_FILE_1.RSC $(TARGET_DIRECTORY)/t_calypso_test_resource_file_1.rsc)
+
+$(TARGET_DIRECTORY)/t_notrscfile.rsc  : $(SOURCEDIR)/T_NotRscFile.RSC
+	$(CP) $(call slash2generic,$(SOURCEDIR)/T_NotRscFile.RSC $(TARGET_DIRECTORY)/t_notrscfile.rsc)
+	
+$(TARGET_DIRECTORY)/rscheader.bin : 
+	$(CP) $(call slash2generic,$(SOURCEDIR)/RscHeader.Bin $(TARGET_DIRECTORY)/rscheader.bin)
+
+$(TARGET_DIRECTORY)/newrscformat.rsc :  $(SOURCEDIR)/RscHeader.Bin  $(SOURCEDIR)/RLETest.BMP $(TARGET_DIRECTORY)/TRSC.rsc
+	@BMCONV.EXE  $(SOURCEDIR)/16RAMC.MBM /c16$(SOURCEDIR)/RLETest.BMP
+	$(CP) $(call slash2generic,$(SOURCEDIR)/RscHeader.Bin)/b + $(call slash2generic,$(TARGET_DIRECTORY)/TRSC.rsc)/b + $(call slash2generic,$(SOURCEDIR)/16RAMC.MBM) /b $(call slash2generic,$(TARGET_DIRECTORY)/newrscformat.rsc)
+
+COPYFILES :
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRSC_Inv1.RSC $(TARGET_DIRECTORY)/trsc_inv1.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRSC_Inv2.RSC $(TARGET_DIRECTORY)/trsc_inv2.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRSC_Inv3.RSC $(TARGET_DIRECTORY)/trsc_inv3.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRSC_Inv4.RSC $(TARGET_DIRECTORY)/trsc_inv4.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRSC_Inv5.RSC $(TARGET_DIRECTORY)/trsc_inv5.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRSC_Inv6.RSC $(TARGET_DIRECTORY)/trsc_inv6.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRSC_Inv7.RSC $(TARGET_DIRECTORY)/trsc_inv7.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRSC_Inv8.RSC $(TARGET_DIRECTORY)/trsc_inv8.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRSC_Inv9.RSC $(TARGET_DIRECTORY)/trsc_inv9.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRscCalypso_Inv10.RSC $(TARGET_DIRECTORY)/trsccalypso_inv10.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRscCalypso_Inv11.RSC $(TARGET_DIRECTORY)/trsccalypso_inv11.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRscCalypso_Inv12.RSC $(TARGET_DIRECTORY)/trsccalypso_inv12.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRscComprU_Inv13.RSC $(TARGET_DIRECTORY)/trsccompru_inv13.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRscComprU_Inv14.RSC $(TARGET_DIRECTORY)/trsccompru_inv14.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRscComprU_Inv15.RSC $(TARGET_DIRECTORY)/trsccompru_inv15.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRscCalypso_Inv16.RSC $(TARGET_DIRECTORY)/trsccalypso_inv16.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/TRscCalypso_Inv17.RSC $(TARGET_DIRECTORY)/trsccalypso_inv17.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/RscHeader.Bin)/b + $(call slash2generic,$(TARGET_DIRECTORY)/t_calypso_test_resource_file_1.rsc)/b $(call slash2generic,$(TARGET_DIRECTORY)/trscromcalypsocomprnewfmt.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/Spi_ECom.spi $(TARGET_DIRECTORY)/spi_ecom.spi)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/Spi_EComRsc1.RSC $(TARGET_DIRECTORY)/spi_ecomrsc1.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/Spi_EComRsc2.RSC $(TARGET_DIRECTORY)/spi_ecomrsc2.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/Spi_EComRsc3.RSC $(TARGET_DIRECTORY)/spi_ecomrsc3.rsc)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/ECom-1-0.spi $(TARGET_DIRECTORY)/ecom-1-0.spi)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/ECom-1-0.s02 $(TARGET_DIRECTORY)/ecom-1-0.s02)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/ECom-2-0.spi $(TARGET_DIRECTORY)/ecom-2-0.spi)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/ECom-2-0.s02 $(TARGET_DIRECTORY)/ecom-2-0.s02)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/Spi_ECom-0-0.spi $(TARGET_DIRECTORY)/spi_ecom-0-0.spi)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/Spi_ECom-1-0.spi $(TARGET_DIRECTORY)/spi_ecom-1-0.spi)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/CECom-0-0.spi $(TARGET_DIRECTORY)/cecom-0-0.spi)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/CECom-1-0.spi $(TARGET_DIRECTORY)/cecom-1-0.spi)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/Spi_ECom_Case-0-0.spi $(TARGET_DIRECTORY)/spi_ecom_case-0-0.spi)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/Spi_ECom_Case-1-0.spi $(TARGET_DIRECTORY)/spi_ecom_case-1-0.spi)
+
+
+DO_NOTHING :
+	@echo do nothing
+
+# the targets below are the public ones
+
+MAKMAKE : DO_NOTHING
+
+BLD : $(TARGET_DIRECTORY) $(TARGET_FILES) COPYFILES
+
+SAVESPACE : BLD
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+CLEAN : 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/t_compressed_unicode_1.rsc $(EPOCROOT)epoc32/include/t_compressed_unicode_1.rsg)
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/t_compressed_unicode_2.rsc $(EPOCROOT)epoc32/include/t_compressed_unicode_2.rsg)
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/t_dictionary_compressed_versio_of_2.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/t_calypso_test_resource_file_1.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/t_notrscfile.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/rscheader.bin) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/newrscformat.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsc_inv1.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsc_inv2.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsc_inv3.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsc_inv4.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsc_inv5.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsc_inv6.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsc_inv7.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsc_inv8.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsc_inv9.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsccalypso_inv10.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsccalypso_inv11.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsccalypso_inv12.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsccompru_inv13.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsccompru_inv14.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsccompru_inv15.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsccalypso_inv16.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trsccalypso_inv17.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/trscromcalypsocomprnewfmt.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/spi_ecom.spi) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/spi_ecomrsc1.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/spi_ecomrsc2.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/spi_ecomrsc3.rsc) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/ecom-1-0.spi)  
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/ecom-1-0.s02) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/ecom-2-0.spi) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/ecom-2-0.s02) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/spi_ecom-0-0.spi) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/spi_ecom-1-0.spi) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/cecom-0-0.spi) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/cecom-1-0.spi)
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/spi_ecom_case-0-0.spi) 
+	-$(ERASE) $(call slash2generic,$(TARGET_DIRECTORY)/spi_ecom_case-1-0.spi)
+
+RELEASABLES : 
+	@echo $(TARGET_DIRECTORY)/t_compressed_unicode_1.rsc $(EPOCROOT)epoc32/include/t_compressed_unicode_1.rsg 
+	@echo $(TARGET_DIRECTORY)/t_compressed_unicode_2.rsc $(EPOCROOT)epoc32/include/t_compressed_unicode_2.rsg 
+	@echo $(TARGET_DIRECTORY)/t_dictionary_compressed_versio_of_2.rsc 
+	@echo $(TARGET_DIRECTORY)/t_calypso_test_resource_file_1.rsc 
+	@echo $(TARGET_DIRECTORY)/t_notrscfile.rsc 
+	@echo $(TARGET_DIRECTORY)/rscheader.bin 
+	@echo $(TARGET_DIRECTORY)/newrscformat.rsc 
+	@echo $(TARGET_DIRECTORY)/trsc_inv1.rsc 
+	@echo $(TARGET_DIRECTORY)/trsc_inv2.rsc 
+	@echo $(TARGET_DIRECTORY)/trsc_inv3.rsc 
+	@echo $(TARGET_DIRECTORY)/trsc_inv4.rsc 
+	@echo $(TARGET_DIRECTORY)/trsc_inv5.rsc 
+	@echo $(TARGET_DIRECTORY)/trsc_inv6.rsc 
+	@echo $(TARGET_DIRECTORY)/trsc_inv7.rsc 
+	@echo $(TARGET_DIRECTORY)/trsc_inv8.rsc 
+	@echo $(TARGET_DIRECTORY)/trsc_inv9.rsc 
+	@echo $(TARGET_DIRECTORY)/trsccalypso_inv10.rsc 
+	@echo $(TARGET_DIRECTORY)/trsccalypso_inv11.rsc 
+	@echo $(TARGET_DIRECTORY)/trsccalypso_inv12.rsc 
+	@echo $(TARGET_DIRECTORY)/trsccompru_inv13.rsc 
+	@echo $(TARGET_DIRECTORY)/trsccompru_inv14.rsc 
+	@echo $(TARGET_DIRECTORY)/trsccompru_inv15.rsc 
+	@echo $(TARGET_DIRECTORY)/trsccalypso_inv16.rsc 
+	@echo $(TARGET_DIRECTORY)/trsccalypso_inv17.rsc 
+	@echo $(TARGET_DIRECTORY)/trscromcalypsocomprnewfmt.rsc 
+	@echo $(TARGET_DIRECTORY)/spi_ecom.spi 
+	@echo $(TARGET_DIRECTORY)/spi_ecomrsc1.rsc 
+	@echo $(TARGET_DIRECTORY)/spi_ecomrsc2.rsc 
+	@echo $(TARGET_DIRECTORY)/spi_ecomrsc3.rsc 
+	@echo $(TARGET_DIRECTORY)/ecom-1-0.spi  
+	@echo $(TARGET_DIRECTORY)/ecom-1-0.s02 
+	@echo $(TARGET_DIRECTORY)/ecom-2-0.spi 
+	@echo $(TARGET_DIRECTORY)/ecom-2-0.s02 
+	@echo $(TARGET_DIRECTORY)/spi_ecom-0-0.spi 
+	@echo $(TARGET_DIRECTORY)/spi_ecom-1-0.spi 
+	@echo $(TARGET_DIRECTORY)/cecom-0-0.spi
+	@echo $(TARGET_DIRECTORY)/cecom-1-0.spi
+	@echo $(TARGET_DIRECTORY)/spi_ecom_case-0-0.spi 
+	@echo $(TARGET_DIRECTORY)/spi_ecom_case-1-0.spi 
+	
+FINAL : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for centrep_copydatfile use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/centrep_copydatfile.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,70 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	EPOCDATADIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+else
+	EPOCDATADIR=$(EPOCROOT)epoc32/data
+endif
+
+TARGETDIR = $(EPOCDATADIR)/z/resource
+SOURCEDIR = $(EXTENSION_ROOT)/../data/certstore
+
+FILE = swicertstore.dat
+
+$(TARGETDIR) : 
+	$(call createdir, "$@")
+
+COPYFILES : $(FILE)
+	
+	$(call forcecopy,$(SOURCEDIR)/$^,$(TARGETDIR)/$^)
+
+$(FILE) :
+
+DO_NOTHING:
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+BLD :	$(TARGETDIR) COPYFILES
+
+CLEAN :
+	$(call forceremove,$(TARGETDIR)/swicertstore.dat)
+
+RELEASABLES :
+	@echo $(TARGETDIR)/swicertstore.dat
+
+MAKMAKE : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+ROMFILE : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for centrep_copyincentrepsrv use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/centrep_copyincentrepsrv.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,74 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+CENTREPSRVSRCDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+CENTREPSRVTGTDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/sys/bin
+
+FILE = centralrepositorysrv.exe
+
+$(CENTREPSRVTGTDIR) :
+	$(call createdir, "$(CENTREPSRVTGTDIR)")
+
+COPYFILE : $(FILE)
+	$(call forcecopy,$(CENTREPSRVSRCDIR)/$^,$(CENTREPSRVTGTDIR))
+
+$(FILE):
+endif
+
+DO_NOTHING :
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+BLD : $(CENTREPSRVTGTDIR) $(CENTREPSRVSRCDIR) COPYFILE
+
+CLEAN : $(FILE)
+	$(call forceremove,$(CENTREPSRVTGTDIR)/$^)
+
+RELEASABLES : $(FILE)
+	@echo $(CENTREPSRVTGTDIR)/$^
+
+else
+BLD : DO_NOTHING
+
+CLEAN : DO_NOTHING
+
+RELEASABLES : DO_NOTHING
+endif
+
+MAKMAKE : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+ROMFILE : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2008-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:
+# Meta information for centrep_copypctestfile use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfile.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,203 @@
+# Copyright (c) 2008-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	EPOCDATADIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+else
+	EPOCDATADIR = $(EPOCROOT)epoc32/data
+endif
+
+SECURETARGETDIR = $(EPOCDATADIR)/z/private/10202BE9
+
+PCCENREPSOURCE = $(EXTENSION_ROOT)/../test
+PCCENREPDATADIR = $(EPOCROOT)epoc32/winscw/c/private/00000000
+PCCENREPTESTDIR = $(EPOCROOT)epoc32/winscw/c
+PCCENREPPCTESTDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+
+$(SECURETARGETDIR) :
+	$(call createdir, "$@")
+
+$(PCCENREPDATADIR) :
+	$(call createdir, "$@")
+
+COPYFILES :
+ifneq ($(findstring TOOLS2,$(PLATFORM)),TOOLS2)
+	
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(SECURETARGETDIR)/000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.cre,$(SECURETARGETDIR)/00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.cre,$(SECURETARGETDIR)/000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888880.txt,$(SECURETARGETDIR)/88888880.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888881.cre,$(SECURETARGETDIR)/88888881.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.txt,$(SECURETARGETDIR)/00022222.txt)
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)	
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPDATADIR)/000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.cre,$(PCCENREPDATADIR)/00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.cre,$(PCCENREPDATADIR)/000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888880.txt,$(PCCENREPDATADIR)/88888880.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888881.cre,$(PCCENREPDATADIR)/88888881.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/winscwcre.cre,$(PCCENREPDATADIR)/ref_winscwcre.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/winscwtxt.cre,$(PCCENREPDATADIR)/ref_winscwtxt.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPDATADIR)/copy000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.cre,$(PCCENREPDATADIR)/copy00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.cre,$(PCCENREPDATADIR)/copy000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.txt,$(PCCENREPDATADIR)/00022222.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.cre,$(PCCENREPDATADIR)/copy00022222.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPTESTDIR)/000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.cre,$(PCCENREPTESTDIR)/00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.cre,$(PCCENREPTESTDIR)/copy00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.txt,$(PCCENREPTESTDIR)/00022222.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.cre,$(PCCENREPTESTDIR)/copy00022222.cre)
+endif
+
+else
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPPCTESTDIR)/000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.cre,$(PCCENREPPCTESTDIR)/00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPPCTESTDIR)/copy000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.cre,$(PCCENREPPCTESTDIR)/copy00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.cre,$(PCCENREPPCTESTDIR)/000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.cre,$(PCCENREPPCTESTDIR)/copy000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/winscwcre.cre,$(PCCENREPPCTESTDIR)/ref_winscwcre.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/winscwtxt.cre,$(PCCENREPPCTESTDIR)/ref_winscwtxt.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888880.txt,$(PCCENREPPCTESTDIR)/88888880.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888881.cre,$(PCCENREPPCTESTDIR)/88888881.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.txt,$(PCCENREPPCTESTDIR)/00022222.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.cre,$(PCCENREPPCTESTDIR)/copy00022222.cre)
+	
+endif
+
+DO_NOTHING:
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+BLD : $(SECURETARGETDIR) $(PCCENREPDATADIR) $(PCCENREPTESTDIR) $(PCCENREPSOURCE) $(PCCENREPPCTESTDIR) COPYFILES
+
+CLEAN :
+
+ifneq ($(findstring TOOLS2,$(PLATFORM)),TOOLS2)
+
+	$(call forceremove,$(SECURETARGETDIR)/000001ff.txt)
+	$(call forceremove,$(SECURETARGETDIR)/00001fff.cre)
+	$(call forceremove,$(SECURETARGETDIR)/000002ff.cre)
+	$(call forceremove,$(SECURETARGETDIR)/88888880.txt)
+	$(call forceremove,$(SECURETARGETDIR)/88888881.cre)
+	$(call forceremove,$(SECURETARGETDIR)/00022222.txt)
+	
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	$(call forceremove,$(PCCENREPDATADIR)/000001ff.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/00001fff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/000002ff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/88888880.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/88888881.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/ref_winscwcre.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/ref_winscwtxt.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/copy000001ff.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/copy00001fff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/copy000002ff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/00022222.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/copy00022222.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/000001ff.txt)
+	$(call forceremove,$(PCCENREPTESTDIR)/00001fff.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/copy00001fff.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/00022222.txt)
+	$(call forceremove,$(PCCENREPTESTDIR)/copy00022222.cre)
+
+endif
+
+else
+	$(call forceremove,$(PCCENREPPCTESTDIR)/000001ff.txt)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/00001fff.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/copy000001ff.txt)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/copy00001fff.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/000002ff.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/copy000002ff.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/ref_winscwcre.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/ref_winscwtxt.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/88888880.txt)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/88888881.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/00022222.txt)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/copy00022222.cre)
+	
+endif
+
+RELEASABLES :
+ifneq ($(findstring TOOLS2,$(PLATFORM)),TOOLS2)
+	
+	@echo $(SECURETARGETDIR)/000001ff.txt
+	@echo $(SECURETARGETDIR)/00001fff.cre
+	@echo $(SECURETARGETDIR)/000002ff.cre
+	@echo $(SECURETARGETDIR)/88888880.txt
+	@echo $(SECURETARGETDIR)/88888881.cre
+	@echo $(SECURETARGETDIR)/00022222.txt
+	
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)	
+	@echo $(PCCENREPDATADIR)/000001ff.txt
+	@echo $(PCCENREPDATADIR)/00001fff.cre
+	@echo $(PCCENREPDATADIR)/000002ff.cre
+	@echo $(PCCENREPDATADIR)/88888880.txt
+	@echo $(PCCENREPDATADIR)/88888881.cre
+	@echo $(PCCENREPDATADIR)/ref_winscwcre.cre
+	@echo $(PCCENREPDATADIR)/ref_winscwtxt.cre
+	@echo $(PCCENREPDATADIR)/copy000001ff.txt
+	@echo $(PCCENREPDATADIR)/copy00001fff.cre
+	@echo $(PCCENREPDATADIR)/copy000002ff.cre
+	@echo $(PCCENREPDATADIR)/00022222.txt
+	@echo $(PCCENREPDATADIR)/copy00022222.cre
+	@echo $(PCCENREPTESTDIR)/000001ff.txt
+	@echo $(PCCENREPTESTDIR)/00001fff.cre
+	@echo $(PCCENREPTESTDIR)/copy00001fff.cre
+	@echo $(PCCENREPTESTDIR)/00022222.txt
+	@echo $(PCCENREPTESTDIR)/copy00022222.cre
+
+endif
+
+else
+	@echo $(PCCENREPPCTESTDIR)/000001ff.txt
+	@echo $(PCCENREPPCTESTDIR)/00001fff.cre
+	@echo $(PCCENREPPCTESTDIR)/copy000001ff.txt
+	@echo $(PCCENREPPCTESTDIR)/copy00001fff.cre
+	@echo $(PCCENREPPCTESTDIR)/000002ff.cre
+	@echo $(PCCENREPPCTESTDIR)/copy000002ff.cre
+	@echo $(PCCENREPPCTESTDIR)/ref_winscwcre.cre
+	@echo $(PCCENREPPCTESTDIR)/ref_winscwtxt.cre
+	@echo $(PCCENREPPCTESTDIR)/88888880.txt
+	@echo $(PCCENREPPCTESTDIR)/88888881.cre
+	@echo $(PCCENREPPCTESTDIR)/00022222.txt
+	@echo $(PCCENREPPCTESTDIR)/copy00022222.cre
+endif
+
+MAKMAKE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+ROMFILE : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2008-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:
+# centrep_copypctestfile.meta
+# Meta information for centrep_copypctestfile use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/centrep_copypctestfilev2.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,238 @@
+# Copyright (c) 2008-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:
+# centrep_copypctestfile.mk
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	EPOCDATADIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+else
+	EPOCDATADIR = $(EPOCROOT)epoc32/data
+endif
+
+SECURETARGETDIR = $(EPOCDATADIR)/z/private/10202BE9
+
+PCCENREPSOURCE = $(EXTENSION_ROOT)/../test
+PCCENREPDATADIR = $(EPOCROOT)epoc32/winscw/c/private/00000000
+PCCENREPTESTDIR = $(EPOCROOT)epoc32/winscw/c
+PCCENREPPCTESTDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+
+$(SECURETARGETDIR) :
+	$(call createdir, "$@")
+
+$(PCCENREPDATADIR) :
+	$(call createdir, "$@")
+
+COPYFILES :
+ifneq ($(findstring TOOLS2,$(PLATFORM)),TOOLS2)
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(SECURETARGETDIR)/000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.crev2,$(SECURETARGETDIR)/00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.crev2,$(SECURETARGETDIR)/000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888880.txt,$(SECURETARGETDIR)/88888880.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888881.cre,$(SECURETARGETDIR)/88888881.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00004fff.cre,$(SECURETARGETDIR)/00004fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.txt,$(SECURETARGETDIR)/00022222.txt)
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)	
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPDATADIR)/000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.crev2,$(PCCENREPDATADIR)/00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.crev2,$(PCCENREPDATADIR)/000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888880.txt,$(PCCENREPDATADIR)/88888880.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888881.cre,$(PCCENREPDATADIR)/88888881.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/winscwcre.crev2,$(PCCENREPDATADIR)/ref_winscwcre.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/winscwtxt.crev2,$(PCCENREPDATADIR)/ref_winscwtxt.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPDATADIR)/copy000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.crev2,$(PCCENREPDATADIR)/copy00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.crev2,$(PCCENREPDATADIR)/copy000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00004fff.cre,$(PCCENREPDATADIR)/00004fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00004fff.cre,$(PCCENREPDATADIR)/copy00004fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.txt,$(PCCENREPDATADIR)/00022222.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.crev2,$(PCCENREPDATADIR)/copy00022222.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPTESTDIR)/000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.crev2,$(PCCENREPTESTDIR)/00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.crev2,$(PCCENREPTESTDIR)/copy00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00004fff.cre,$(PCCENREPTESTDIR)/00004fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00004fff.cre,$(PCCENREPTESTDIR)/copy00004fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.txt,$(PCCENREPTESTDIR)/00022222.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.crev2,$(PCCENREPTESTDIR)/copy00022222.cre)
+# Shared files between the t_cenreppc (WINSCW) and testsymcenrep (TOOLS2) tests.
+	$(call forcecopy,$(PCCENREPSOURCE)/common_crc.txt,$(PCCENREPTESTDIR)/common_crc.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/common_ref_00022222.cre,$(PCCENREPDATADIR)/common_ref_00022222.cre)
+endif
+
+# TOOLS2
+else
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPPCTESTDIR)/000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.crev2,$(PCCENREPPCTESTDIR)/00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00004fff.cre,$(PCCENREPPCTESTDIR)/00004fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000001ff.txt,$(PCCENREPPCTESTDIR)/copy000001ff.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00001fff.crev2,$(PCCENREPPCTESTDIR)/copy00001fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00004fff.cre,$(PCCENREPPCTESTDIR)/copy00004fff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.crev2,$(PCCENREPPCTESTDIR)/000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/000002ff.crev2,$(PCCENREPPCTESTDIR)/copy000002ff.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/winscwcre.crev2,$(PCCENREPPCTESTDIR)/ref_winscwcre.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/winscwtxt.crev2,$(PCCENREPPCTESTDIR)/ref_winscwtxt.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888880.txt,$(PCCENREPPCTESTDIR)/88888880.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/88888881.cre,$(PCCENREPPCTESTDIR)/88888881.cre)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.txt,$(PCCENREPPCTESTDIR)/00022222.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/00022222.crev2,$(PCCENREPPCTESTDIR)/copy00022222.cre)
+# Shared files between the t_cenreppc (WINSCW) and testsymcenrep (TOOLS2) tests.
+	$(call forcecopy,$(PCCENREPSOURCE)/common_crc.txt,$(PCCENREPTESTDIR)/common_crc.txt)
+	$(call forcecopy,$(PCCENREPSOURCE)/common_ref_00022222.cre,$(PCCENREPDATADIR)/common_ref_00022222.cre)
+endif
+
+DO_NOTHING:
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+BLD : $(SECURETARGETDIR) $(PCCENREPDATADIR) $(PCCENREPTESTDIR) $(PCCENREPSOURCE) $(PCCENREPPCTESTDIR) COPYFILES
+
+CLEAN :
+
+ifneq ($(findstring TOOLS2,$(PLATFORM)),TOOLS2)
+	$(call forceremove,$(SECURETARGETDIR)/000001ff.txt)
+	$(call forceremove,$(SECURETARGETDIR)/00001fff.cre)
+	$(call forceremove,$(SECURETARGETDIR)/000002ff.cre)
+	$(call forceremove,$(SECURETARGETDIR)/88888880.txt)
+	$(call forceremove,$(SECURETARGETDIR)/88888881.cre)
+	$(call forceremove,$(SECURETARGETDIR)/00004fff.cre)
+	$(call forceremove,$(SECURETARGETDIR)/00022222.txt)
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	$(call forceremove,$(PCCENREPDATADIR)/000001ff.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/00001fff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/000002ff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/88888880.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/88888881.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/ref_winscwcre.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/ref_winscwtxt.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/copy000001ff.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/copy00001fff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/copy000002ff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/00004fff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/copy00004fff.cre)
+	$(call forceremove,$(PCCENREPDATADIR)/00022222.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/copy00022222.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/000001ff.txt)
+	$(call forceremove,$(PCCENREPTESTDIR)/00001fff.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/copy00001fff.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/00004fff.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/copy00004fff.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/00022222.txt)
+	$(call forceremove,$(PCCENREPTESTDIR)/copy00022222.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/common_crc.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/common_ref_00022222.cre)
+endif
+
+
+# TOOLS2
+else
+	$(call forceremove,$(PCCENREPPCTESTDIR)/000001ff.txt)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/00001fff.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/00004fff.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/copy000001ff.txt)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/copy00001fff.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/000002ff.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/copy000002ff.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/ref_winscwcre.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/ref_winscwtxt.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/88888880.txt)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/88888881.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/00022222.txt)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/copy00022222.cre)
+	$(call forceremove,$(PCCENREPPCTESTDIR)/copy00004fff.cre)
+	$(call forceremove,$(PCCENREPTESTDIR)/common_crc.txt)
+	$(call forceremove,$(PCCENREPDATADIR)/common_ref_00022222.cre)
+
+endif
+
+RELEASABLES :
+ifneq ($(findstring TOOLS2,$(PLATFORM)),TOOLS2)
+	@echo $(SECURETARGETDIR)/000001ff.txt
+	@echo $(SECURETARGETDIR)/00001fff.cre
+	@echo $(SECURETARGETDIR)/000002ff.cre
+	@echo $(SECURETARGETDIR)/88888880.txt
+	@echo $(SECURETARGETDIR)/88888881.cre
+	@echo $(SECURETARGETDIR)/00004fff.cre
+	@echo $(SECURETARGETDIR)/00022222.txt
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	@echo $(PCCENREPDATADIR)/000001ff.txt
+	@echo $(PCCENREPDATADIR)/00001fff.cre
+	@echo $(PCCENREPDATADIR)/000002ff.cre
+	@echo $(PCCENREPDATADIR)/88888880.txt
+	@echo $(PCCENREPDATADIR)/88888881.cre
+	@echo $(PCCENREPDATADIR)/ref_winscwcre.cre
+	@echo $(PCCENREPDATADIR)/ref_winscwtxt.cre
+	@echo $(PCCENREPDATADIR)/copy000001ff.txt
+	@echo $(PCCENREPDATADIR)/copy00001fff.cre
+	@echo $(PCCENREPDATADIR)/copy000002ff.cre
+	@echo $(PCCENREPDATADIR)/00004fff.cre
+	@echo $(PCCENREPDATADIR)/copy00004fff.cre
+	@echo $(PCCENREPDATADIR)/00022222.txt
+	@echo $(PCCENREPDATADIR)/copy00022222.cre
+	@echo $(PCCENREPTESTDIR)/000001ff.txt
+	@echo $(PCCENREPTESTDIR)/00001fff.cre
+	@echo $(PCCENREPTESTDIR)/copy00001fff.cre
+	@echo $(PCCENREPTESTDIR)/00004fff.cre
+	@echo $(PCCENREPTESTDIR)/copy00004fff.cre
+	@echo $(PCCENREPTESTDIR)/00022222.txt
+	@echo $(PCCENREPTESTDIR)/copy00022222.cre
+	@echo $(PCCENREPTESTDIR)/common_crc.txt
+	@echo $(PCCENREPDATADIR)/common_ref_00022222.cre
+endif
+
+# TOOLS2
+else 
+	@echo $(PCCENREPPCTESTDIR)/000001ff.txt
+	@echo $(PCCENREPPCTESTDIR)/00001fff.cre
+	@echo $(PCCENREPPCTESTDIR)/copy000001ff.txt
+	@echo $(PCCENREPPCTESTDIR)/copy00001fff.cre
+	@echo $(PCCENREPPCTESTDIR)/000002ff.cre
+	@echo $(PCCENREPPCTESTDIR)/copy000002ff.cre
+	@echo $(PCCENREPPCTESTDIR)/ref_winscwcre.cre
+	@echo $(PCCENREPPCTESTDIR)/ref_winscwtxt.cre
+	@echo $(PCCENREPPCTESTDIR)/88888880.txt
+	@echo $(PCCENREPPCTESTDIR)/88888881.cre
+	@echo $(PCCENREPPCTESTDIR)/00022222.txt
+	@echo $(PCCENREPPCTESTDIR)/copy00022222.cre
+	@echo $(PCCENREPPCTESTDIR)/copy00004fff.cre
+	@echo $(PCCENREPTESTDIR)/common_crc.txt
+	@echo $(PCCENREPDATADIR)/common_ref_00022222.cre
+
+endif
+
+MAKMAKE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+ROMFILE : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2007-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:
+# charconv_tiso8859x_generate_cpp.meta
+# Meta information for charconv_tiso8859x_generate_cpp use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/charconv_testpostbuild.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,74 @@
+# Copyright (c) 2007-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:
+# This postbuild script is only called when a Test Build is done.  It deletes the KDDI/AU versions of the shiftjis and j5 plugin RSC file, so
+# that only the Docomo versions remain.  This removed ambiguity over which one will load during tests - a seperate version of the KDDI/AU
+# plugins is created for test build, with a unique UID number so they may coexist for test purposes.
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+# Only remove files on emulator build - for hardware, iby file selects correct plugin.
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	TARGETDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/plugins
+
+	TARGET_FILES = \
+	$(TARGETDIR)/shiftjis_kddiau.rsc \
+	$(TARGETDIR)/j5_kddiau.rsc \
+	$(TARGETDIR)/eucjp_packed_2.rsc \
+	$(TARGETDIR)/iso2022jp_2.rsc \
+	$(TARGETDIR)/iso2022jp1_2.rsc \
+	$(TARGETDIR)/j5_kddiau_2.rsc \
+	$(TARGETDIR)/jis_2.rsc\
+	$(TARGETDIR)/shiftjis_kddiau_2.rsc
+	
+	TARGET_FILES:=$(subst /,\,$(TARGET_FILES))
+endif
+
+DO_NOTHING :
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+BLD :	
+	@echo Below rsc files will be deleted to remove ambiguity in testing:
+	@echo $(TARGET_FILES)
+	-$(ERASE) $(TARGET_FILES)	
+else
+BLD : DO_NOTHING
+endif
+
+RELEASABLES : DO_NOTHING
+
+MAKMAKE : DO_NOTHING
+
+CLEAN : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for charconv_tiso8859x_generate_cpp use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/charconv_tiso8859x_generate_cpp.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,73 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+TARGET_DIRECTORY = $(EXTENSION_ROOT)/../test/rtest/tsrc/main
+
+TEXT_FILE_DIRECTORY = $(EXTENSION_ROOT)/../data
+
+TARGET_CPP_FILES = $(TARGET_DIRECTORY)/g_tiso8859x.cpp
+
+TOOLS = $(EXTENSION_ROOT)/../test/rtest/tsrc/main/tiso8859x_generate_cpp.pl
+
+$(TARGET_DIRECTORY) :
+
+$(TARGET_DIRECTORY)/g_tiso8859x.cpp : $(TOOLS) \
+	$(TEXT_FILE_DIRECTORY)/iso88592.txt \
+	$(TEXT_FILE_DIRECTORY)/iso88593.txt \
+	$(TEXT_FILE_DIRECTORY)/iso88594.txt \
+	$(TEXT_FILE_DIRECTORY)/iso88595.txt \
+	$(TEXT_FILE_DIRECTORY)/iso88596.txt \
+	$(TEXT_FILE_DIRECTORY)/iso88597.txt \
+	$(TEXT_FILE_DIRECTORY)/iso88598.txt \
+	$(TEXT_FILE_DIRECTORY)/iso88599.txt \
+	$(TEXT_FILE_DIRECTORY)/iso885910.txt \
+	$(TEXT_FILE_DIRECTORY)/iso885913.txt \
+	$(TEXT_FILE_DIRECTORY)/iso885914.txt \
+	$(TEXT_FILE_DIRECTORY)/iso885915.txt
+	@perl -w $(call slash2generic, $(EXTENSION_ROOT)/../test/rtest/tsrc/main/tiso8859x_generate_cpp.pl '$(EXTENSION_ROOT)')
+
+DO_NOTHING :
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : $(TARGET_DIRECTORY) $(TARGET_CPP_FILES)
+
+BLD : $(TARGET_DIRECTORY) $(TARGET_CPP_FILES)
+
+SAVESPACE : BLD
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+CLEAN : 
+	-$(ERASE) $(TARGET_CPP_FILES)
+
+RELEASABLES : 
+	@echo $(TARGET_CPP_FILES)
+
+FINAL : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for charconv_tsnmdata use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/charconv_tsnmdata.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,68 @@
+# 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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	TARGET_DIRECTORY = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/charconv
+else
+	TARGET_DIRECTORY = $(EPOCROOT)epoc32/data/z/resource/charconv
+endif
+
+TARGET_FILES = $(TARGET_DIRECTORY)/tsnm.snm
+
+SOURCE_DIRECTORY = $(EXTENSION_ROOT)/../test/data/main
+
+TOOLS = \
+	$(EPOCROOT)epoc32/tools/PARSER.PM \
+	$(EPOCROOT)epoc32/tools/WRITER.PM \
+	$(EPOCROOT)epoc32/tools/snmtool.pl
+
+$(TARGET_DIRECTORY) :
+	$(call createdir,"$@")
+
+$(TARGET_FILES) : $(SOURCE_DIRECTORY)/tsnm.txt $(TOOLS)
+	perl $(EPOCROOT)epoc32/tools/snmtool.pl $(SOURCE_DIRECTORY)/tsnm.txt $@
+DO_NOTHING :
+	@echo do nothing
+	
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+BLD : $(TARGET_DIRECTORY) $(TARGET_FILES)
+
+SAVESPACE : BLD
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+CLEAN : 
+	-$(ERASE) $(TARGET_FILES)
+
+RELEASABLES : 
+	@echo $(TARGET_FILES)
+
+FINAL : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for dbms_copytestdbscfiles use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/dbms_copytestdbscfiles.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,132 @@
+# Copyright (c) 2007-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:
+# Build DBMS test files
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	TARGETDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/100012a5/policy
+	TARGETDIR2 = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/100012a5
+	TARGETDIR3 = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/test
+else
+	TARGETDIR = $(EPOCROOT)epoc32/data/z/private/100012a5/policy
+	TARGETDIR2 = $(EPOCROOT)epoc32/data/z/private/100012a5
+	TARGETDIR3 = $(EPOCROOT)epoc32/data/z/system/test
+endif
+
+TARGET_FILES = \
+	$(TARGETDIR)/11335577.spd \
+	$(TARGETDIR)/11335578.spd \
+	$(TARGETDIR)/11335579.spd \
+	$(TARGETDIR)/1133557a.spd \
+	$(TARGETDIR)/12344321.spd \
+	$(TARGETDIR2)/dbs_11335578_a.db \
+	$(TARGETDIR2)/dbs_11335578_b.db \
+	$(TARGETDIR2)/dbs_11335578_z.db \
+	$(TARGETDIR2)/dbs_11335579_testdb.db \
+	$(TARGETDIR2)/dbs_1133557a_zzz.db \
+	$(TARGETDIR2)/dbs_12344321_1234567890123456789012345678901234567890123456789012345678901234567890.db\
+	$(TARGETDIR3)/11335577.txt\
+	$(TARGETDIR3)/11335578.txt\
+	$(TARGETDIR3)/11335579.txt\
+	$(TARGETDIR3)/1133557A.txt\
+	$(TARGETDIR3)/t_dbperf1.sql\
+	$(TARGETDIR3)/t_script.txt\
+	$(TARGETDIR3)/typetextktests44.dat\
+	$(TARGETDIR3)/typetextktests46.dat\
+	$(TARGETDIR3)/typetextktests47.dat
+
+
+$(TARGETDIR) :
+	$(call createdir, "$@")
+
+$(TARGETDIR2) :
+	$(call createdir, "$@")
+	
+$(TARGETDIR3) :
+	$(call createdir, "$@")
+
+COPYFILES :
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/11335577.spd,$(TARGETDIR)/11335577.spd)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/11335578.spd,$(TARGETDIR)/11335578.spd)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/11335579.spd,$(TARGETDIR)/11335579.spd)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/1133557A.spd,$(TARGETDIR)/1133557a.spd)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/12344321.spd,$(TARGETDIR)/12344321.spd)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/dbs_11335578_A.DB,$(TARGETDIR2)/dbs_11335578_a.db)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/dbs_11335578_B.DB,$(TARGETDIR2)/dbs_11335578_b.db)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/dbs_11335578_Z.DB,$(TARGETDIR2)/dbs_11335578_z.db)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/dbs_11335579_TESTDB.DB,$(TARGETDIR2)/dbs_11335579_testdb.db)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/dbs_1133557A_ZZZ.DB,$(TARGETDIR2)/dbs_1133557a_zzz.db)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/dbs_12344321_1234567890123456789012345678901234567890123456789012345678901234567890.DB,$(TARGETDIR2)/dbs_12344321_1234567890123456789012345678901234567890123456789012345678901234567890.db)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/11335577.txt,$(TARGETDIR3)/11335577.txt)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/11335578.txt,$(TARGETDIR3)/11335578.txt)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/11335579.txt,$(TARGETDIR3)/11335579.txt)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/1133557A.txt,$(TARGETDIR3)/1133557A.txt)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/t_dbperf1.sql,$(TARGETDIR3)/t_dbperf1.sql)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/t_script.txt,$(TARGETDIR3)/t_script.txt)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/typetextktests44.dat,$(TARGETDIR3)/typetextktests44.dat)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/typetextktests46.dat,$(TARGETDIR3)/typetextktests46.dat)
+		$(call forcecopy,$(EXTENSION_ROOT)/../TDBMS/typetextktests47.dat,$(TARGETDIR3)/typetextktests47.dat)
+		
+DO_NOTHING :
+	@echo do nothing
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+BLD : $(TARGETDIR) $(TARGETDIR2) $(TARGETDIR3) COPYFILES
+
+CLEAN : 
+	$(call forceremove,$(TARGET_FILES))
+
+SAVESPACE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES :
+	@echo $(TARGETDIR)/11335577.spd
+	@echo $(TARGETDIR)/11335578.spd
+	@echo $(TARGETDIR)/11335579.spd
+	@echo $(TARGETDIR)/1133557a.spd
+	@echo $(TARGETDIR)/12344321.spd
+	@echo $(TARGETDIR2)/dbs_11335578_a.db
+	@echo $(TARGETDIR2)/dbs_11335578_b.db
+	@echo $(TARGETDIR2)/dbs_11335578_z.db
+	@echo $(TARGETDIR2)/dbs_11335579_testdb.db
+	@echo $(TARGETDIR2)/dbs_1133557a_zzz.db
+	@echo $(TARGETDIR2)/dbs_12344321_1234567890123456789012345678901234567890123456789012345678901234567890.db
+	@echo $(TARGETDIR3)/11335577.txt
+	@echo $(TARGETDIR3)/11335578.txt
+	@echo $(TARGETDIR3)/11335579.txt
+	@echo $(TARGETDIR3)/1133557A.txt
+	@echo $(TARGETDIR3)/t_dbperf1.sql
+	@echo $(TARGETDIR3)/t_script.txt
+	@echo $(TARGETDIR3)/typetextktests44.dat
+	@echo $(TARGETDIR3)/typetextktests46.dat
+	@echo $(TARGETDIR3)/typetextktests47.dat
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2008-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:
+# Meta information for the ecom3_buildsis extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/ecom3_buildsis.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,60 @@
+# Copyright (c) 2008-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:
+# Params:
+# SOURCES - list of .pkg files
+# TARGET - not used
+# OPTION OUTDIR - mandatory, it is tef_ecomswi
+# OPTION INDIR - mandatory, path relative to bld.inf containing the 
+# .pkg files.
+# OPTION CERTPEM - mandatory
+# OPTION CERTKEY - mandatory
+# OPTION STUBLIST - mandatory, identify stubs in $(SOURCES)
+# OPTION SCRIPTNAME - mandatory, perl script to build SIS. Must be in
+# same dir as .pkg files.
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+CERTPEM := $(subst /,$(/),$(CERTPEM))
+CERTKEY := $(subst /,$(/),$(CERTKEY))
+OUTDIR := $(subst /,$(/),$(OUTDIR))
+INDIR := $(subst /,$(/),$(INDIR))
+BASEDIR := $(EXTENSION_ROOT)/$(INDIR)
+
+TARGETS := $(shell perl $(BASEDIR)/$(SCRIPTNAME) -platform $(PLATFORM_PATH) -cfg $(CFG_PATH) -outdir $(OUTDIR) -maketrgt RELEASABLES -sources "$(SOURCES)" -stublist "$(STUBLIST)")
+EXTRA := $(shell perl $(BASEDIR)/$(SCRIPTNAME) -platform $(PLATFORM_PATH) -cfg $(CFG_PATH) -outdir $(OUTDIR) -maketrgt EXTRATARGET -sources "$(SOURCES)" -stublist "$(STUBLIST)")
+
+
+$(TARGETS) :
+	@perl $(call slash2generic, $(BASEDIR)/$(SCRIPTNAME)) -basedir $(BASEDIR) -platform $(PLATFORM_PATH) -cfg $(CFG_PATH) -certpem $(CERTPEM) -certkey $(CERTKEY) -maketrgt FINAL $@
+
+#
+# The targets invoked by abld...
+#
+FINAL : $(TARGETS)
+
+BLD MAKMAKE SAVESPACE FREEZE LIB CLEANLIB RESOURCE :
+	@echo do nothing
+
+CLEAN : 
+	-$(ERASE) $(TARGETS) $(EXTRA)
+
+RELEASABLES : 
+	@echo $(TARGETS) $(EXTRA)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for ecom3_postbuild use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/ecom3_postbuild.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,353 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z
+RAMONLYTARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/ramonly
+SOURCEDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+SOURCEDIR2=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/plugins
+else
+TARGETDIR=$(EPOCROOT)epoc32/data/z
+RAMONLYTARGETDIR=$(EPOCROOT)epoc32/data/z/ramonly
+SOURCEDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+SOURCEDIR2=$(EPOCROOT)epoc32/data/z/resource/plugins
+endif
+
+DO_NOTHING:
+	@echo do_nothing
+	
+$(RAMONLYTARGETDIR) :
+	$(call createdir,"$@")
+
+COPYFILES :
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/HeapTestImpl.dll $(TARGETDIR)/heaptestimpl.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/HeapTestImpl.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample5.dll $(RAMONLYTARGETDIR)/ecomexample5.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample5.dll $(RAMONLYTARGETDIR)/invalidsidplugin.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExample5.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample12.dll $(RAMONLYTARGETDIR)/ecomexample12.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExample12.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample12Upgraded.dll $(RAMONLYTARGETDIR)/ecomexample12Upgraded.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExample12Upgraded.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample12Downgraded.dll $(RAMONLYTARGETDIR)/ecomexample12Downgraded.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExample12Downgraded.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample14.dll $(RAMONLYTARGETDIR)/ecomexample14.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExample14.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample14Upgraded.dll $(RAMONLYTARGETDIR)/ecomexample14Upgraded.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExample14Upgraded.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample15.dll $(RAMONLYTARGETDIR)/ecomexample15.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExample15.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExampleBadData.dll	$(RAMONLYTARGETDIR)/ecomexamplebaddata.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExampleBadData.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExampleBadData1.dll $(RAMONLYTARGETDIR)/ecomexamplebaddata1.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExampleBadData1.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExampleBadData2.dll	$(RAMONLYTARGETDIR)/ecomexamplebaddata2.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExampleBadData2.dll)
+				$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample3.dll $(RAMONLYTARGETDIR)/ecomexample3.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample2.dll $(RAMONLYTARGETDIR)/ecomexample2.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample.dll $(RAMONLYTARGETDIR)/ecomexample.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComNullExample.dll $(RAMONLYTARGETDIR)/ecomnullexample.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComRomOnlyExampleOnC.dll $(RAMONLYTARGETDIR)/ecomromonlyexampleonc.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComRomOnlyExampleOnC.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComRomRslvrExampleOnC.dll $(RAMONLYTARGETDIR)/ecomromrslvrexampleonc.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComRomRslvrExampleOnC.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComRomRslvrExampleOnZ.dll $(RAMONLYTARGETDIR)/ecomromrslvrexampleonz.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/T_PlatSecResolverC.dll $(RAMONLYTARGETDIR)/t_platsecresolverc.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/T_PlatSecResolverC.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/T_PlatSecEcom4.dll $(RAMONLYTARGETDIR)/t_platsececom4.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/T_PlatSecEcom4.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EcomUpgradeExample1.dll $(RAMONLYTARGETDIR)/ecomupgradeexample1.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EcomUpgradeExample1.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EcomUpgradeExample2.dll $(RAMONLYTARGETDIR)/ecomupgradeexample2.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EcomUpgradeExample3.dll $(RAMONLYTARGETDIR)/ecomupgradeexample3.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EcomUpgradeExample3.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EcomUpgradeROExample1.dll $(RAMONLYTARGETDIR)/ecomupgraderoexample1.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EcomUpgradeROExample1.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EcomUpgradeROExample2.dll $(RAMONLYTARGETDIR)/ecomupgraderoexample2.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EcomUpgradeROExample3.dll $(RAMONLYTARGETDIR)/ecomupgraderoexample3.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EcomUpgradeROExample3.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/DefectPlugin.dll $(RAMONLYTARGETDIR)/defectplugin.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/DefectPlugin.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample7.dll $(RAMONLYTARGETDIR)/ecomexample7.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExample7.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComExample8.dll $(RAMONLYTARGETDIR)/ecomexample8.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComExample8.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComCR629Example1.dll	$(RAMONLYTARGETDIR)/ecomcr629example1.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComCR629Example1.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComCR629Example2.dll	$(RAMONLYTARGETDIR)/ecomcr629example2.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComCR629Example2.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/LanguagePlugin.dll $(RAMONLYTARGETDIR)/languageplugin.dll)
+		-$(ERASE) $(call slash2generic $(SOURCEDIR)/LanguagePlugin.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComHashExample.dll $(RAMONLYTARGETDIR)/ecomhashexample.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComHashExample.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/EComSwiExample.dll $(RAMONLYTARGETDIR)/ecomswiexample.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/EComSwiExample.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/exampleNine.dll $(RAMONLYTARGETDIR)/examplenine.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/exampleNine.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR)/dummycustomresolver1.dll $(RAMONLYTARGETDIR)/dummycustomresolver1.dll)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR)/dummycustomresolver1.dll)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/HeapTestImpl.rsc $(TARGETDIR)/heaptestimpl.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/HeapTestImpl.rsc $(RAMONLYTARGETDIR)/invalidsidplugin.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/HeapTestImpl.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample5.RSC $(RAMONLYTARGETDIR)/ecomexample5.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExample5.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample12.RSC $(RAMONLYTARGETDIR)/ecomexample12.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExample12.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample12Upgraded.RSC $(RAMONLYTARGETDIR)/ecomexample12Upgraded.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExample12Upgraded.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample12Downgraded.RSC $(RAMONLYTARGETDIR)/ecomexample12Downgraded.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExample12Downgraded.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample14.RSC $(RAMONLYTARGETDIR)/ecomexample14.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExample14.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample14Upgraded.RSC $(RAMONLYTARGETDIR)/ecomexample14Upgraded.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExample14Upgraded.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample15.RSC $(RAMONLYTARGETDIR)/ecomexample15.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExample15.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExampleBadData.RSC $(RAMONLYTARGETDIR)/ecomexamplebaddata.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExampleBadData.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExampleBadData1.RSC $(RAMONLYTARGETDIR)/ecomexamplebaddata1.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExampleBadData1.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExampleBadData2.RSC $(RAMONLYTARGETDIR)/ecomexamplebaddata2.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComExampleBadData2.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample3.RSC $(RAMONLYTARGETDIR)/ecomexample3.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample2.RSC $(RAMONLYTARGETDIR)/ecomexample2.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample.RSC $(RAMONLYTARGETDIR)/ecomexample.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComRomOnlyExampleOnC.RSC $(RAMONLYTARGETDIR)/ecomromonlyexampleonc.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComRomOnlyExampleOnC.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComRomRslvrExampleOnC.RSC $(RAMONLYTARGETDIR)/ecomromrslvrexampleonc.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComRomRslvrExampleOnC.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComRomRslvrExampleOnZ.RSC $(RAMONLYTARGETDIR)/ecomromrslvrexampleonz.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/T_PlatSecResolverC.RSC $(RAMONLYTARGETDIR)/t_platsecresolverc.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/T_PlatSecResolverC.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/T_PlatSecEcom4.RSC $(RAMONLYTARGETDIR)/t_platsececom4.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/T_PlatSecEcom4.RSC)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EcomNullExample.RSC $(RAMONLYTARGETDIR)/ecomnullexample.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeExample1.rsc $(RAMONLYTARGETDIR)/ecomupgradeexample1.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeExample1.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeExample2.rsc $(RAMONLYTARGETDIR)/ecomupgradeexample2.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeExample3.rsc $(RAMONLYTARGETDIR)/ecomupgradeexample3.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeExample3.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeROExample1.rsc $(RAMONLYTARGETDIR)/ecomupgraderoexample1.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeROExample1.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeROExample2.rsc $(RAMONLYTARGETDIR)/ecomupgraderoexample2.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeROExample3.rsc $(RAMONLYTARGETDIR)/ecomupgraderoexample3.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EcomUpgradeROExample3.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/DefectPlugin.rsc $(RAMONLYTARGETDIR)/defectplugin.rsc)
+		-$(ERASE) $(SOURCEDIR2)/DefectPlugin.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample7.rsc $(RAMONLYTARGETDIR)/ecomexample7.rsc)
+		-$(ERASE) $(SOURCEDIR2)/EComExample7.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComExample8.rsc $(RAMONLYTARGETDIR)/ecomexample8.rsc)
+		-$(ERASE) $(SOURCEDIR2)/EComExample8.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComCR629Example1.rsc	$(RAMONLYTARGETDIR)/ecomcr629example1.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComCR629Example1.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComCR629Example2.rsc	$(RAMONLYTARGETDIR)/ecomcr629example2.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComCR629Example2.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/LanguagePlugin.rsc $(RAMONLYTARGETDIR)/languageplugin.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/LanguagePlugin.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/LanguagePlugin.r01 $(RAMONLYTARGETDIR)/languageplugin.r01)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/LanguagePlugin.r01)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/LanguagePlugin.r02 $(RAMONLYTARGETDIR)/languageplugin.r02)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/LanguagePlugin.r02)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/LanguagePlugin.r03 $(RAMONLYTARGETDIR)/languageplugin.r03)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/LanguagePlugin.r03)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComHashExample.rsc $(RAMONLYTARGETDIR)/ecomhashexample.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComHashExample.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/EComSwiExample.rsc $(RAMONLYTARGETDIR)/ecomswiexample.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/EComSwiExample.rsc)
+		$(CP) /B $(call slash2generic, $(SOURCEDIR2)/dummycustomresolver1.rsc $(RAMONLYTARGETDIR)/dummycustomresolver1.rsc)
+		-$(ERASE) $(call slash2generic, $(SOURCEDIR2)/dummycustomresolver1.rsc)
+		
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+BLD : $(RAMONLYTARGETDIR) COPYFILES
+
+CLEAN : 
+		-$(ERASE) $(call slash2generic, $(TARGETDIR)/heaptestimpl.dll)
+		-$(ERASE) $(call slash2generic, $(TARGETDIR)/heaptestimpl.rsc )
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample5.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample12.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample12Upgraded.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample12Downgraded.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample14.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample14Upgraded.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample15.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexamplebaddata.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexamplebaddata1.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexamplebaddata2.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample3.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample2.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample.rsc )
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomromonlyexampleonc.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomromrslvrexampleonc.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomromrslvrexampleonz.rsc)  
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample5.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample12.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample12Upgraded.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample12Downgraded.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample14.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample14Upgraded.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample15.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexamplebaddata.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexamplebaddata1.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexamplebaddata2.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample3.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample2.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomromonlyexampleonc.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomromrslvrexampleonc.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomromrslvrexampleonz.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/invalidsidplugin.rsc) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/invalidsidplugin.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/t_platsecresolverc.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/t_platsecresolverc.rsc )
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/t_platsececom4.dll )
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/t_platsececom4.rsc)
+		
+
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomnullexample.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomnullexample.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgradeexample1.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgradeexample1.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgradeexample2.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgradeexample2.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgradeexample3.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgradeexample3.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgraderoexample1.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgraderoexample1.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgraderoexample2.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgraderoexample2.rsc) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgraderoexample3.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomupgraderoexample3.rsc) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/defectplugin.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/defectplugin.rsc) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample7.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample7.rsc )
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample8.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomexample8.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomcr629example1.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomcr629example1.rsc) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomcr629example2.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomcr629example2.rsc) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/languageplugin.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/languageplugin.rsc) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/languageplugin.r01) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/languageplugin.r02) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/languageplugin.r03) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomhashexample.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomhashexample.rsc) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomswiexample.dll) 
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/ecomswiexample.rsc)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/examplenine.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/dummycustomresolver1.dll)
+		-$(ERASE) $(call slash2generic, $(RAMONLYTARGETDIR)/dummycustomresolver1.rsc)
+
+SAVESPACE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES :
+		@echo $(TARGETDIR)/heaptestimpl.dll
+		@echo $(TARGETDIR)/heaptestimpl.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample5.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample12.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample12Upgraded.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample12Downgraded.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample14.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample14Upgraded.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample15.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexamplebaddata.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexamplebaddata1.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexamplebaddata2.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample3.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample2.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample.rsc 
+		@echo $(RAMONLYTARGETDIR)/ecomromonlyexampleonc.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomromrslvrexampleonc.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomromrslvrexampleonz.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample5.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample12.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample12Upgraded.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample12Downgraded.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample14.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample14Upgraded.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample15.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexamplebaddata.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexamplebaddata1.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexamplebaddata2.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample3.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample2.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample.dll
+		@echo $(RAMONLYTARGETDIR)/ecomromonlyexampleonc.dll
+		@echo $(RAMONLYTARGETDIR)/ecomromrslvrexampleonc.dll
+		@echo $(RAMONLYTARGETDIR)/ecomromrslvrexampleonz.dll
+		@echo $(RAMONLYTARGETDIR)/invalidsidplugin.rsc 
+		@echo $(RAMONLYTARGETDIR)/invalidsidplugin.dll 
+		@echo $(RAMONLYTARGETDIR)/t_platsecresolverc.dll
+		@echo $(RAMONLYTARGETDIR)/t_platsecresolverc.rsc 
+		@echo $(RAMONLYTARGETDIR)/t_platsececom4.dll
+		@echo $(RAMONLYTARGETDIR)/t_platsececom4.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomnullexample.dll
+		@echo $(RAMONLYTARGETDIR)/ecomnullexample.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomupgradeexample1.dll
+		@echo $(RAMONLYTARGETDIR)/ecomupgradeexample1.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomupgradeexample2.dll
+		@echo $(RAMONLYTARGETDIR)/ecomupgradeexample2.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomupgradeexample3.dll
+		@echo $(RAMONLYTARGETDIR)/ecomupgradeexample3.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomupgraderoexample1.dll
+		@echo $(RAMONLYTARGETDIR)/ecomupgraderoexample1.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomupgraderoexample2.dll
+		@echo $(RAMONLYTARGETDIR)/ecomupgraderoexample2.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomupgraderoexample3.dll
+		@echo $(RAMONLYTARGETDIR)/ecomupgraderoexample3.rsc
+		@echo $(RAMONLYTARGETDIR)/defectplugin.dll
+		@echo $(RAMONLYTARGETDIR)/defectplugin.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample7.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample7.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomexample8.dll
+		@echo $(RAMONLYTARGETDIR)/ecomexample8.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomcr629example1.dll
+		@echo $(RAMONLYTARGETDIR)/ecomcr629example1.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomcr629example2.dll
+		@echo $(RAMONLYTARGETDIR)/ecomcr629example2.rsc
+		@echo $(RAMONLYTARGETDIR)/languageplugin.dll
+		@echo $(RAMONLYTARGETDIR)/languageplugin.rsc
+		@echo $(RAMONLYTARGETDIR)/languageplugin.r01
+		@echo $(RAMONLYTARGETDIR)/languageplugin.r02
+		@echo $(RAMONLYTARGETDIR)/languageplugin.r03
+		@echo $(RAMONLYTARGETDIR)/ecomhashexample.dll
+		@echo $(RAMONLYTARGETDIR)/ecomhashexample.rsc
+		@echo $(RAMONLYTARGETDIR)/ecomswiexample.dll
+		@echo $(RAMONLYTARGETDIR)/ecomswiexample.rsc
+		@echo $(RAMONLYTARGETDIR)/examplenine.dll
+		@echo $(RAMONLYTARGETDIR)/dummycustomresolver1.dll
+		@echo $(RAMONLYTARGETDIR)/dummycustomresolver1.rsc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2008-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:
+# Meta information for the ecom3_relocatetarget extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/ecom3_relocatetarget.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,74 @@
+# Copyright (c) 2008-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:
+# Different from ecom3_postbuild.mk in that on armv5 the RAMONLYTARGETDIR
+# is not \epoc32\data\z\ramonly. It is \epoc32\release\armv5\<CFG>\z\ramonly.
+# This template has to preserve the udeb/urel targets.
+# Params:
+# SOURCES - list of .exe and .dll files to relocate
+# TARGET - not used
+# OPTION TARGETDIR - mandatory, it is "ramonly" for ecom testing.
+# OPTION TARGETBASE - optional, overrides \epoc32\release\<platform>\<cfg>\z 
+# OPTION SOURCEDIR -  optional, overrides \epoc32\release\<platform>\<cfg> 
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+# $(/) is actually back slash in Windows environment. Since bld.inf are written
+# with forward slashes and $(CP) is "copy", this substitution is important.
+TARGETDIR := $(subst /,$(/),$(TARGETDIR))
+
+ifdef TARGETBASE
+TARGETBASE := $(subst PLATFORM,$(PLATFORM_PATH),$(TARGETBASE))
+TARGETBASE := $(subst CFG,$(CFG_PATH),$(TARGETBASE))
+TARGETBASE := $(subst /,$(/),$(TARGETBASE))
+DESTDIR:=$(TARGETBASE)/$(TARGETDIR)
+else
+DESTDIR:=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/$(TARGETDIR)
+endif
+
+ifdef SOURCEDIR
+SOURCEDIR := $(subst PLATFORM,$(PLATFORM_PATH),$(SOURCEDIR))
+SOURCEDIR := $(subst CFG,$(CFG_PATH),$(SOURCEDIR))
+SOURCEDIR := $(subst /,$(/),$(SOURCEDIR))
+else
+SOURCEDIR := $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+endif
+
+TARGET_COPY := $(foreach f,$(SOURCES),$(DESTDIR)/$(f) )
+
+$(DESTDIR) :
+	$(call createdir,"$@")
+
+$(TARGET_COPY) :
+	$(CP) $(call slash2generic, $(SOURCEDIR)/$(notdir $@) $@)
+	-$(ERASE) $(call slash2generic, $(SOURCEDIR)/$(notdir $@))
+
+#
+# The targets invoked by abld...
+#
+BLD : $(DESTDIR) $(TARGET_COPY)
+
+MAKMAKE SAVESPACE FREEZE LIB CLEANLIB RESOURCE FINAL :
+	@echo do nothing
+
+CLEAN : 
+	-$(ERASE) $(TARGET_COPY)
+
+RELEASABLES : 
+	@echo $(TARGET_COPY)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2007-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:
+# template.meta
+# Meta information for template use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/featmgr_moveplugin.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,162 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	EPOCDATADIR:=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+else
+	EPOCDATADIR:=$(EPOCROOT)epoc32/data
+endif
+
+BINSOURCEDIR:=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+RESOURCESOURCEDIR:=$(EPOCDATADIR)/z/resource/plugins
+
+FILE1:=normal_plugin.dll
+FILE2:=hanging_plugin.dll
+FILE3:=corrupt_plugin.dll
+FILE4:=reconciliation_plugin.dll
+FILE5:=ab_normal_plugin.dll
+FILE6:=bc_enhanced_plugin.dll
+FILE7:=slowstart_plugin.dll
+FILE8:=invalid_plugin.dll
+FILE9:=normal_plugin.rsc
+FILE10:=hanging_plugin.rsc
+FILE11:=corrupt_plugin.rsc
+FILE12:=reconciliation_plugin.rsc
+FILE13:=ab_normal_plugin.rsc
+FILE14:=bc_enhanced_plugin.rsc
+FILE15:=slowstart_plugin.rsc
+FILE16:=invalid_plugin.rsc
+
+TARGETDIR:=$(EPOCDATADIR)/z/test/efm/plugins
+# we copy the normal plugin files to the resource folder on C: drive for the plugin ignoring test
+PLUGINTARGETDIR:=$(EPOCROOT)epoc32/winscw/c/sys/bin
+RESOURCETARGETDIR:=$(EPOCROOT)epoc32/winscw/c/resource/plugins
+
+$(TARGETDIR) :
+	$(call createdir,"$@")
+
+$(PLUGINTARGETDIR) :
+	$(call createdir,"$@")
+
+$(RESOURCETARGETDIR) :
+	$(call createdir,"$@")
+
+COPYFILES : $(TARGETDIR) $(PLUGINTARGETDIR) $(RESOURCETARGETDIR) 
+	$(call forcecopy,$(BINSOURCEDIR)/$(FILE1),$(TARGETDIR)/$(FILE1))
+	$(call forcecopy,$(BINSOURCEDIR)/$(FILE1),$(PLUGINTARGETDIR)/$(FILE1))
+	$(call forcecopy,$(BINSOURCEDIR)/$(FILE2),$(TARGETDIR)/$(FILE2))
+	$(call forcecopy,$(BINSOURCEDIR)/$(FILE3),$(TARGETDIR)/$(FILE3))
+	$(call forcecopy,$(BINSOURCEDIR)/$(FILE4),$(TARGETDIR)/$(FILE4))
+	$(call forcecopy,$(BINSOURCEDIR)/$(FILE5),$(TARGETDIR)/$(FILE5))
+	$(call forcecopy,$(BINSOURCEDIR)/$(FILE6),$(TARGETDIR)/$(FILE6))
+	$(call forcecopy,$(BINSOURCEDIR)/$(FILE7),$(TARGETDIR)/$(FILE7))
+	$(call forcecopy,$(BINSOURCEDIR)/$(FILE8),$(TARGETDIR)/$(FILE8))
+	$(call forcecopy,$(RESOURCESOURCEDIR)/$(FILE9),$(TARGETDIR)/$(FILE9))
+	$(call forcecopy,$(RESOURCESOURCEDIR)/$(FILE9),$(RESOURCETARGETDIR)/$(FILE9))
+	$(call forcecopy,$(RESOURCESOURCEDIR)/$(FILE10),$(TARGETDIR)/$(FILE10))
+	$(call forcecopy,$(RESOURCESOURCEDIR)/$(FILE11),$(TARGETDIR)/$(FILE11))
+	$(call forcecopy,$(RESOURCESOURCEDIR)/$(FILE12),$(TARGETDIR)/$(FILE12))
+	$(call forcecopy,$(RESOURCESOURCEDIR)/$(FILE13),$(TARGETDIR)/$(FILE13))
+	$(call forcecopy,$(RESOURCESOURCEDIR)/$(FILE14),$(TARGETDIR)/$(FILE14))
+	$(call forcecopy,$(RESOURCESOURCEDIR)/$(FILE15),$(TARGETDIR)/$(FILE15))
+	$(call forcecopy,$(RESOURCESOURCEDIR)/$(FILE16),$(TARGETDIR)/$(FILE16))
+
+ERASEFILES : $(call slash2generic,$(foreach FILE, $(FILE1) $(FILE2) $(FILE3) $(FILE4) $(FILE5) $(FILE6) $(FILE7) $(FILE8), $(TARGETDIR)/$(FILE)) $(PLUGINTARGETDIR)/$(FILE1))
+	$(call forceremove,$(BINSOURCEDIR)/$(FILE1))
+	$(call forceremove,$(BINSOURCEDIR)/$(FILE2))
+	$(call forceremove,$(BINSOURCEDIR)/$(FILE3))
+	$(call forceremove,$(BINSOURCEDIR)/$(FILE4))
+	$(call forceremove,$(BINSOURCEDIR)/$(FILE5))
+	$(call forceremove,$(BINSOURCEDIR)/$(FILE6))
+	$(call forceremove,$(BINSOURCEDIR)/$(FILE7))
+	$(call forceremove,$(BINSOURCEDIR)/$(FILE8))
+	
+DO_NOTHING:
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+BLD : DO_NOTHING
+
+CLEAN :
+	$(call forceremove,$(TARGETDIR)/$(FILE1))
+	$(call forceremove,$(PLUGINTARGETDIR)/$(FILE1))
+	$(call forceremove,$(TARGETDIR)/$(FILE2))
+	$(call forceremove,$(TARGETDIR)/$(FILE3))
+	$(call forceremove,$(TARGETDIR)/$(FILE4))
+	$(call forceremove,$(TARGETDIR)/$(FILE5))
+	$(call forceremove,$(TARGETDIR)/$(FILE6))
+	$(call forceremove,$(TARGETDIR)/$(FILE7))
+	$(call forceremove,$(TARGETDIR)/$(FILE8))
+	$(call forceremove,$(TARGETDIR)/$(FILE9))
+	$(call forceremove,$(RESOURCETARGETDIR)/$(FILE9))
+	$(call forceremove,$(TARGETDIR)/$(FILE10))
+	$(call forceremove,$(TARGETDIR)/$(FILE11))
+	$(call forceremove,$(TARGETDIR)/$(FILE12))
+	$(call forceremove,$(TARGETDIR)/$(FILE13))
+	$(call forceremove,$(TARGETDIR)/$(FILE14))
+	$(call forceremove,$(TARGETDIR)/$(FILE15))
+	$(call forceremove,$(TARGETDIR)/$(FILE16))
+	$(call forceremove,$(RESOURCESOURCEDIR)/$(FILE9))
+	$(call forceremove,$(RESOURCESOURCEDIR)/$(FILE10))
+	$(call forceremove,$(RESOURCESOURCEDIR)/$(FILE11))
+	$(call forceremove,$(RESOURCESOURCEDIR)/$(FILE12))
+	$(call forceremove,$(RESOURCESOURCEDIR)/$(FILE13))
+	$(call forceremove,$(RESOURCESOURCEDIR)/$(FILE14))
+	$(call forceremove,$(RESOURCESOURCEDIR)/$(FILE15))
+	$(call forceremove,$(RESOURCESOURCEDIR)/$(FILE16))
+
+RELEASABLES :
+	@echo $(TARGETDIR)/$(FILE1)
+	@echo $(PLUGINTARGETDIR)/$(FILE1)
+	@echo $(TARGETDIR)/$(FILE2)
+	@echo $(TARGETDIR)/$(FILE3)
+	@echo $(TARGETDIR)/$(FILE4)
+	@echo $(TARGETDIR)/$(FILE5)
+	@echo $(TARGETDIR)/$(FILE6)
+	@echo $(TARGETDIR)/$(FILE7)
+	@echo $(TARGETDIR)/$(FILE8)
+	@echo $(TARGETDIR)/$(FILE9)
+	@echo $(RESOURCETARGETDIR)/$(FILE9)
+	@echo $(TARGETDIR)/$(FILE10)
+	@echo $(TARGETDIR)/$(FILE11)
+	@echo $(TARGETDIR)/$(FILE12)
+	@echo $(TARGETDIR)/$(FILE13)
+	@echo $(TARGETDIR)/$(FILE14)
+	@echo $(TARGETDIR)/$(FILE15)
+	@echo $(TARGETDIR)/$(FILE16)
+
+MAKMAKE : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FINAL : COPYFILES ERASEFILES
+
+ROMFILE : DO_NOTHING
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for logeng_copytestfiles use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/logeng_copytestfiles.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,85 @@
+# Copyright (c) 2008-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:
+# Copy logeng test dat file(s)
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	TARGETDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/system/data
+	TARGETDIR2= $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/101f401d
+else
+	TARGETDIR = $(EPOCROOT)epoc32/data/z/system/data
+	TARGETDIR2=$(EPOCROOT)epoc32/data/z/private/101f401d
+endif
+
+TARGET_FILES = $(TARGETDIR)/oldLogdbu.dat \
+			   $(TARGETDIR)/corruptLogdbu.dat \
+			   $(TARGETDIR)/corruptDamagedLogdbu.dat \
+			   $(TARGETDIR)/101f401d.txt \
+			   $(TARGETDIR2)/CntModel.ini \
+			   $(TARGETDIR2)/SQLite__Contacts.cdb
+			   
+
+$(TARGETDIR)/oldLogdbu.dat : $(EXTENSION_ROOT)/../test/src/oldLogdbu.dat $(TARGETDIR)
+	$(call forcecopy,$(EXTENSION_ROOT)/../test/src/oldLogdbu.dat,$(TARGETDIR)/oldLogdbu.dat)
+$(TARGETDIR)/corruptLogdbu.dat : $(EXTENSION_ROOT)/../test/src/corruptLogdbu.dat
+	$(call forcecopy,$(EXTENSION_ROOT)/../test/src/corruptLogdbu.dat,$(TARGETDIR)/corruptLogdbu.dat)
+$(TARGETDIR)/corruptDamagedLogdbu.dat : $(EXTENSION_ROOT)/../test/src/corruptDamagedLogdbu.dat
+	$(call forcecopy,$(EXTENSION_ROOT)/../test/src/corruptDamagedLogdbu.dat,$(TARGETDIR)/corruptDamagedLogdbu.dat)
+$(TARGETDIR)/101f401d.txt : $(EXTENSION_ROOT)/../test/101f401d.txt
+	$(call forcecopy,$(EXTENSION_ROOT)/../test/101f401d.txt,$(TARGETDIR)/101f401d.txt)
+$(TARGETDIR2)/CntModel.ini : $(EXTENSION_ROOT)/../test/src/CntModel.ini $(TARGETDIR2)
+	$(call forcecopy,$(EXTENSION_ROOT)/../test/src/CntModel.ini,$(TARGETDIR2)/CntModel.ini)
+$(TARGETDIR2)/SQLite__Contacts.cdb : $(EXTENSION_ROOT)/../test/src/SQLite__Contacts.cdb $(TARGETDIR2)
+	$(call forcecopy,$(EXTENSION_ROOT)/../test/src/SQLite__Contacts.cdb,$(TARGETDIR2)/SQLite__Contacts.cdb)
+
+
+DO_NOTHING :
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+BLD : $(TARGET_FILES)
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+CLEAN :
+	$(call forceremove,$(TARGET_FILES))
+
+RELEASABLES :
+	@echo $(TARGETDIR)/oldLogdbu.dat
+	@echo $(TARGETDIR)/corruptLogdbu.dat
+	@echo $(TARGETDIR)/corruptDamagedLogdbu.dat
+	@echo $(TARGETDIR)/101f401d.txt
+	@echo $(TARGETDIR2)/CntModel.ini
+	@echo $(TARGETDIR2)/SQLite__Contacts.cdb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2007-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:
+# sql_copyperfsqltestfile.meta
+# Meta information for sql_copyperfsqltestfile
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/sql_copyperfsqltestfiles.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,213 @@
+# Copyright (c) 2007-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:
+# Copy SQL test files
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/testdata
+else
+TARGETDIR=$(EPOCROOT)epoc32/data/z/testdata
+endif
+
+SOURCEDIR = $(EXTENSION_ROOT)/../SCRIPT
+SOURCEDIR2= $(EXTENSION_ROOT)/../TESTDATA
+
+$(TARGETDIR):
+	$(call createdir, "$@")
+
+COPYFILES :
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Config.script,$(TARGETDIR)/sqldb_config.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_BaseDatabase.script,$(TARGETDIR)/sqldb_basedatabase.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_CreateTable.script,$(TARGETDIR)/sqldb_measurement_createtable.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_CreateTable.script,$(TARGETDIR)/sqldb_performance_createtable.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_insert.script,$(TARGETDIR)/sqldb_measurement_insert.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_insert.script,$(TARGETDIR)/sqldb_performance_insert.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_droptable.script,$(TARGETDIR)/sqldb_measurement_droptable.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_droptable.script,$(TARGETDIR)/sqldb_performance_droptable.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_delete.script,$(TARGETDIR)/sqldb_measurement_delete.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_delete.script,$(TARGETDIR)/sqldb_performance_delete.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_altertable.script,$(TARGETDIR)/sqldb_measurement_altertable.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_altertable.script,$(TARGETDIR)/sqldb_performance_altertable.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_update.script,$(TARGETDIR)/sqldb_measurement_update.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_update.script,$(TARGETDIR)/sqldb_performance_update.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Concurrency.script,$(TARGETDIR)/sqldb_measurement_concurrency.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Concurrency.script,$(TARGETDIR)/sqldb_performance_concurrency.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Select1.script,$(TARGETDIR)/sqldb_measurement_select1.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Select1.script,$(TARGETDIR)/sqldb_performance_select1.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Select2.script,$(TARGETDIR)/sqldb_measurement_select2.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Select2.script,$(TARGETDIR)/sqldb_performance_select2.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Trigger.script,$(TARGETDIR)/sqldb_measurement_trigger.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Trigger.script,$(TARGETDIR)/sqldb_performance_trigger.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Transaction_Commit.script,$(TARGETDIR)/sqldb_measurement_transaction_commit.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Transaction_Commit_Index.script,$(TARGETDIR)/sqldb_measurement_transaction_commit_index.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Transaction_Commit_Mixed.script,$(TARGETDIR)/sqldb_measurement_transaction_commit_mixed.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Transaction_Commit.script,$(TARGETDIR)/sqldb_performance_transaction_commit.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Transaction_Commit_Index.script,$(TARGETDIR)/sqldb_performance_transaction_commit_index.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Transaction_Commit_Mixed.script,$(TARGETDIR)/sqldb_performance_transaction_commit_mixed.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Transaction_Rollback.script,$(TARGETDIR)/sqldb_measurement_transaction_rollback.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Transaction_Rollback_Index.script,$(TARGETDIR)/sqldb_measurement_transaction_rollback_index.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Transaction_Rollback_Mixed.script,$(TARGETDIR)/sqldb_measurement_transaction_rollback_mixed.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Transaction_Rollback.script,$(TARGETDIR)/sqldb_performance_transaction_rollback.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Transaction_Rollback_Index.script,$(TARGETDIR)/sqldb_performance_transaction_rollback_index.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Transaction_Rollback_Mixed.script,$(TARGETDIR)/sqldb_performance_transaction_rollback_mixed.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_AttachDB.script,$(TARGETDIR)/sqldb_measurement_attachdb.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_AttachDB.script,$(TARGETDIR)/sqldb_performance_attachdb.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Measurement_Apps.script,$(TARGETDIR)/sqldb_measurement_apps.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Apps.script,$(TARGETDIR)/sqldb_performance_apps.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Apps_Create.script,$(TARGETDIR)/sqldb_performance_apps_create.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Apps_Delete.script,$(TARGETDIR)/sqldb_performance_apps_delete.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Apps_Modify.script,$(TARGETDIR)/sqldb_performance_apps_modify.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Apps_Select.script,$(TARGETDIR)/sqldb_performance_apps_select.script)
+	$(call forcecopy,$(SOURCEDIR)/SqlDB_Performance_Apps_Add.script,$(TARGETDIR)/sqldb_performance_apps_add.script)
+	$(call forcecopy,$(SOURCEDIR2)/TestsqlDB_comparec0.db,$(TARGETDIR)/testsqldb_comparec0.db)
+	$(call forcecopy,$(SOURCEDIR2)/TestsqlDB_comparec1.db,$(TARGETDIR)/testsqldb_comparec1.db)
+	$(call forcecopy,$(SOURCEDIR2)/TestsqlDB_comparec2.db,$(TARGETDIR)/testsqldb_comparec2.db)
+	$(call forcecopy,$(SOURCEDIR2)/TestsqlDB_comparec3.db,$(TARGETDIR)/testsqldb_comparec3.db)
+	$(call forcecopy,$(SOURCEDIR2)/TestsqlDB_comparef.db,$(TARGETDIR)/testsqldb_comparef.db)
+	$(call forcecopy,$(SOURCEDIR2)/SqlDB_testexecute.ini,$(TARGETDIR)/sqldb_testexecute.ini)
+	$(call forcecopy,$(SOURCEDIR2)/TestSqlDB_Stress.ini,$(TARGETDIR)/testsqldb_stress.ini)
+	$(call forcecopy,$(SOURCEDIR2)/TestSqlDB_Stress_view.ini,$(TARGETDIR)/testsqldb_stress_view.ini)
+
+DO_NOTHING :
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+BLD : $(TARGETDIR) COPYFILES
+
+CLEAN : 
+	$(call forceremove,$(TARGETDIR)/sqldb_config.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_basedatabase.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_createtable.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_createtable.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_insert.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_insert.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_droptable.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_droptable.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_delete.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_delete.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_altertable.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_altertable.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_update.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_update.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_concurrency.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_concurrency.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_select1.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_select1.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_select2.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_select2.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_trigger.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_trigger.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_transaction_commit.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_transaction_commit_index.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_transaction_commit_mixed.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_transaction_commit.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_transaction_commit_mixed.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_transaction_rollback.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_transaction_rollback_index.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_transaction_rollback_mixed.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_transaction_rollback.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_transaction_rollback_index.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_transaction_rollback_mixed.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_attachdb.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_attachdb.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_measurement_apps.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_apps.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_apps_create.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_apps_delete.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_apps_modify.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_apps_select.script)
+	$(call forceremove,$(TARGETDIR)/sqldb_performance_apps_add.script)
+	$(call forceremove,$(TARGETDIR)/testsqldb_comparec0.db)
+	$(call forceremove,$(TARGETDIR)/testsqldb_comparec1.db)
+	$(call forceremove,$(TARGETDIR)/testsqldb_comparec2.db)
+	$(call forceremove,$(TARGETDIR)/testsqldb_comparec3.db)
+	$(call forceremove,$(TARGETDIR)/testsqldb_comparef.db)
+	$(call forceremove,$(TARGETDIR)/sqldb_testexecute.ini)
+	$(call forceremove,$(TARGETDIR)/testsqldb_stress.ini)
+	$(call forceremove,$(TARGETDIR)/testsqldb_stress_view.ini)
+
+SAVESPACE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES :
+	@echo $(TARGETDIR)/sqldb_config.script
+	@echo $(TARGETDIR)/sqldb_basedatabase.script
+	@echo $(TARGETDIR)/sqldb_measurement_createtable.script
+	@echo $(TARGETDIR)/sqldb_performance_createtable.script
+	@echo $(TARGETDIR)/sqldb_measurement_insert.script
+	@echo $(TARGETDIR)/sqldb_performance_insert.script
+	@echo $(TARGETDIR)/sqldb_measurement_droptable.script
+	@echo $(TARGETDIR)/sqldb_performance_droptable.script
+	@echo $(TARGETDIR)/sqldb_measurement_delete.script
+	@echo $(TARGETDIR)/sqldb_performance_delete.script
+	@echo $(TARGETDIR)/sqldb_measurement_altertable.script
+	@echo $(TARGETDIR)/sqldb_performance_altertable.script
+	@echo $(TARGETDIR)/sqldb_measurement_update.script
+	@echo $(TARGETDIR)/sqldb_performance_update.script
+	@echo $(TARGETDIR)/sqldb_measurement_concurrency.script
+	@echo $(TARGETDIR)/sqldb_performance_concurrency.script
+	@echo $(TARGETDIR)/sqldb_measurement_select1.script
+	@echo $(TARGETDIR)/sqldb_performance_select1.script
+	@echo $(TARGETDIR)/sqldb_measurement_select2.script
+	@echo $(TARGETDIR)/sqldb_performance_select2.script
+	@echo $(TARGETDIR)/sqldb_measurement_trigger.script
+	@echo $(TARGETDIR)/sqldb_performance_trigger.script
+	@echo $(TARGETDIR)/sqldb_measurement_transaction_commit.script
+	@echo $(TARGETDIR)/sqldb_measurement_transaction_commit_index.script
+	@echo $(TARGETDIR)/sqldb_measurement_transaction_commit_mixed.script
+	@echo $(TARGETDIR)/sqldb_performance_transaction_commit.script
+	@echo $(TARGETDIR)/sqldb_performance_transaction_commit_mixed.script
+	@echo $(TARGETDIR)/sqldb_measurement_transaction_rollback.script
+	@echo $(TARGETDIR)/sqldb_measurement_transaction_rollback_index.script
+	@echo $(TARGETDIR)/sqldb_measurement_transaction_rollback_mixed.script
+	@echo $(TARGETDIR)/sqldb_performance_transaction_rollback.script
+	@echo $(TARGETDIR)/sqldb_performance_transaction_rollback_index.script
+	@echo $(TARGETDIR)/sqldb_performance_transaction_rollback_mixed.script
+	@echo $(TARGETDIR)/sqldb_measurement_attachdb.script
+	@echo $(TARGETDIR)/sqldb_performance_attachdb.script
+	@echo $(TARGETDIR)/sqldb_measurement_apps.script
+	@echo $(TARGETDIR)/sqldb_performance_apps.script
+	@echo $(TARGETDIR)/sqldb_performance_apps_create.script
+	@echo $(TARGETDIR)/sqldb_performance_apps_delete.script
+	@echo $(TARGETDIR)/sqldb_performance_apps_modify.script
+	@echo $(TARGETDIR)/sqldb_performance_apps_select.script
+	@echo $(TARGETDIR)/sqldb_performance_apps_add.script
+	@echo $(TARGETDIR)/testsqldb_comparec0.db
+	@echo $(TARGETDIR)/testsqldb_comparec1.db
+	@echo $(TARGETDIR)/testsqldb_comparec2.db
+	@echo $(TARGETDIR)/testsqldb_comparec3.db
+	@echo $(TARGETDIR)/testsqldb_comparef.db
+	@echo $(TARGETDIR)/sqldb_testexecute.ini
+	@echo $(TARGETDIR)/testsqldb_stress.ini
+	@echo $(TARGETDIR)/testsqldb_stress_view.ini
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for sql_copysqltestfiles
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/sql_copysqltestfiles.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,146 @@
+# Copyright (c) 2007-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:
+# Copy SQL test files
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/test
+	TARGETDIR2=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/10281e17
+	TARGETDIR3=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/21212124
+else
+	TARGETDIR=$(EPOCROOT)epoc32/data/z/system/test
+	TARGETDIR2=$(EPOCROOT)epoc32/data/z/private/10281e17
+	TARGETDIR3=$(EPOCROOT)epoc32/data/z/private/21212124
+
+endif
+
+SOURCEDIR = $(EXTENSION_ROOT)/../TEST
+
+$(TARGETDIR):
+	$(call createdir, "$@")
+$(TARGETDIR2):
+	$(call createdir, "$@")
+$(TARGETDIR3):	
+	$(call createdir, "$@")
+
+COPYFILES :
+	$(call forcecopy,$(SOURCEDIR)/TestDb1.db,$(TARGETDIR)/testdb1.db)
+	$(call forcecopy,$(SOURCEDIR)/CorruptDb.db,$(TARGETDIR)/corruptdb.db)
+	$(call forcecopy,$(SOURCEDIR)/contacts_schema_to_vendors.sql,$(TARGETDIR)/contacts_schema_to_vendors.sql)
+	$(call forcecopy,$(SOURCEDIR)/add_simple_contacts.sql,$(TARGETDIR)/add_simple_contacts.sql)
+	$(call forcecopy,$(SOURCEDIR)/t_SqlShortNonDb.db,$(TARGETDIR)/t_sqlshortnondb.db)
+	$(call forcecopy,$(SOURCEDIR)/contacts_startup_time.sql,$(TARGETDIR)/contacts_startup_time.sql)
+	$(call forcecopy,$(SOURCEDIR)/t_inc095412.db,$(TARGETDIR)/t_inc095412.db)
+	$(call forcecopy,$(SOURCEDIR)/{21212122}AADb2.db,$(TARGETDIR2)/[21212122]aadb2.db)
+	$(call forcecopy,$(SOURCEDIR)/{21212122}BBDb2.db,$(TARGETDIR2)/[21212122]bbdb2.db)
+	$(call forcecopy,$(SOURCEDIR)/{21212125}T_AB.db,$(TARGETDIR2)/[21212125]t_ab.db)
+	$(call forcecopy,$(SOURCEDIR)/{1111CCCC}T_AB.db,$(TARGETDIR2)/[1111CCCC]t_ab.db)
+	$(call forcecopy,$(SOURCEDIR)/{21212125}T_OneDefPolicy.db,$(TARGETDIR2)/[21212125]t_onedefpolicy.db)
+#	$(call forcecopy,$(SOURCEDIR)/SqlServer.cfg,$(TARGETDIR2)/sqlserver.cfg)
+	$(call forcecopy,$(SOURCEDIR)/t_sqldb1.db,$(TARGETDIR3)/t_sqldb1.db)
+	$(call forcecopy,$(SOURCEDIR)/{98765432}t_2defaultpolicies.db,$(TARGETDIR2)/[98765432]t_2defaultpolicies.db)
+	$(call forcecopy,$(SOURCEDIR)/{98765432}t_emptysettings.db,$(TARGETDIR2)/[98765432]t_emptysettings.db)
+	$(call forcecopy,$(SOURCEDIR)/{98765432}t_invobject.db,$(TARGETDIR2)/[98765432]t_invobject.db)
+	$(call forcecopy,$(SOURCEDIR)/{98765432}t_invversion.db,$(TARGETDIR2)/[98765432]t_invversion.db)
+	$(call forcecopy,$(SOURCEDIR)/{98765432}t_longcollation.db,$(TARGETDIR2)/[98765432]t_longcollation.db)
+	$(call forcecopy,$(SOURCEDIR)/{98765432}t_nocollation.db,$(TARGETDIR2)/[98765432]t_nocollation.db)
+	$(call forcecopy,$(SOURCEDIR)/{98765432}t_nodefaultpolicy.db,$(TARGETDIR2)/[98765432]t_nodefaultpolicy.db)
+	$(call forcecopy,$(SOURCEDIR)/{98765432}t_nosettings.db,$(TARGETDIR2)/[98765432]t_nosettings.db)
+	$(call forcecopy,$(SOURCEDIR)/default_avacon.dbSQL,$(TARGETDIR)/default_avacon.dbSQL)
+	$(call forcecopy,$(SOURCEDIR)/t_sqlbur_backup_ver0.bak,$(TARGETDIR)/t_sqlbur_backup_ver0.bak)
+	$(call forcecopy,$(SOURCEDIR)/t_sqlperformance4.sql,$(TARGETDIR)/t_sqlperformance4.sql)
+
+	
+DO_NOTHING :
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+BLD : $(TARGETDIR) $(TARGETDIR2) $(TARGETDIR3) $(SOURCEDIR) COPYFILES
+
+CLEAN : 
+	$(call forceremove,$(TARGETDIR)/testdb1.db)
+	$(call forceremove,$(TARGETDIR)/corruptdb.db)
+	$(call forceremove,$(TARGETDIR)/contacts_schema_to_vendors.sql)
+	$(call forceremove,$(TARGETDIR)/add_simple_contacts.sql)
+	$(call forceremove,$(TARGETDIR)/t_sqlshortnondb.db)
+	$(call forceremove,$(TARGETDIR)/contacts_startup_time.sql)
+	$(call forceremove,$(TARGETDIR)/t_inc095412.db)
+	$(call forceremove,$(TARGETDIR2)/[21212122]aadb2.db)
+	$(call forceremove,$(TARGETDIR2)/[21212122]bbdb2.db)
+	$(call forceremove,$(TARGETDIR2)/[21212125]t_ab.db)
+	$(call forceremove,$(TARGETDIR2)/[1111CCCC]t_ab.db)
+	$(call forceremove,$(TARGETDIR2)/[21212125]t_onedefpolicy.db)
+#	$(call forceremove,$(TARGETDIR2)/sqlserver.cfg)
+	$(call forceremove,$(TARGETDIR3)/t_sqldb1.db)
+	$(call forceremove,$(TARGETDIR2)/[98765432]t_2defaultpolicies.db)
+	$(call forceremove,$(TARGETDIR2)/[98765432]t_emptysettings.db)
+	$(call forceremove,$(TARGETDIR2)/[98765432]t_invobject.db)
+	$(call forceremove,$(TARGETDIR2)/[98765432]t_invversion.db)
+	$(call forceremove,$(TARGETDIR2)/[98765432]t_longcollation.db)
+	$(call forceremove,$(TARGETDIR2)/[98765432]t_nocollation.db)
+	$(call forceremove,$(TARGETDIR2)/[98765432]t_nodefaultpolicy.db)
+	$(call forceremove,$(TARGETDIR2)/[98765432]t_nosettings.db)
+	$(call forceremove,$(TARGETDIR)/default_avacon.dbSQL)
+	$(call forceremove,$(TARGETDIR)/t_sqlbur_backup_ver0.bak)
+	$(call forceremove,$(TARGETDIR)/t_sqlperformance4.sql)
+	
+SAVESPACE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES : 
+	@echo $(TARGETDIR)/testdb1.db
+	@echo $(TARGETDIR)/corruptdb.db
+	@echo $(TARGETDIR)/contacts_schema_to_vendors.sql
+	@echo $(TARGETDIR)/add_simple_contacts.sql
+	@echo $(TARGETDIR)/t_sqlshortnondb.db
+	@echo $(TARGETDIR)/contacts_startup_time.sql
+	@echo $(TARGETDIR)/t_inc095412.db
+	@echo $(TARGETDIR2)/[21212122]aadb2.db
+	@echo $(TARGETDIR2)/[21212122]bbdb2.db
+	@echo $(TARGETDIR2)/[21212125]t_ab.db
+	@echo $(TARGETDIR2)/[1111CCCC]t_ab.db
+	@echo $(TARGETDIR2)/[21212125]t_onedefpolicy.db
+#	@echo $(TARGETDIR2)/sqlserver.cfg
+	@echo $(TARGETDIR3)/t_sqldb1.db
+	@echo $(TARGETDIR2)/[98765432]t_2defaultpolicies.db
+	@echo $(TARGETDIR2)/[98765432]t_emptysettings.db
+	@echo $(TARGETDIR2)/[98765432]t_invobject.db
+	@echo $(TARGETDIR2)/[98765432]t_invversion.db
+	@echo $(TARGETDIR2)/[98765432]t_longcollation.db
+	@echo $(TARGETDIR2)/[98765432]t_nocollation.db
+	@echo $(TARGETDIR2)/[98765432]t_nodefaultpolicy.db
+	@echo $(TARGETDIR2)/[98765432]t_nosettings.db
+	@echo $(TARGETDIR)/default_avacon.dbSQL
+	@echo $(TARGETDIR)/t_sqlbur_backup_ver0.bak
+	@echo $(TARGETDIR)/t_sqlperformance4.sql
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for sqlite3_copysqlite3testfiles
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/sqlite3_copysqlite3testfiles.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,1277 @@
+# Copyright (c) 2007-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:
+# Copy SQLITE3 test files
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/10285A82
+else
+	TARGETDIR=$(EPOCROOT)epoc32/data/z/private/10285A82
+endif
+
+SOURCEDIR = $(EXTENSION_ROOT)/../TEST/TCLSCRIPT
+
+TARGET_FILES = \
+	$(TARGETDIR)/speed1p.explain \
+	$(TARGETDIR)/speed4p.explain \
+	$(TARGETDIR)/fuzz_common.tcl \
+	$(TARGETDIR)/malloc_common.tcl \
+	$(TARGETDIR)/tester.tcl \
+	$(TARGETDIR)/thread_common.tcl \
+	$(TARGETDIR)/trans2.test.gz \
+	$(TARGETDIR)/aggerror.test \
+	$(TARGETDIR)/alias.test \
+	$(TARGETDIR)/all.test \
+	$(TARGETDIR)/alter.test \
+	$(TARGETDIR)/alter2.test \
+	$(TARGETDIR)/alter3.test \
+	$(TARGETDIR)/altermalloc.test \
+	$(TARGETDIR)/analyze.test \
+	$(TARGETDIR)/async.test \
+	$(TARGETDIR)/async2.test \
+	$(TARGETDIR)/async3.test \
+	$(TARGETDIR)/attach.test \
+	$(TARGETDIR)/attach2.test \
+	$(TARGETDIR)/attach3.test \
+	$(TARGETDIR)/attachmalloc.test \
+	$(TARGETDIR)/auth.test \
+	$(TARGETDIR)/auth2.test \
+	$(TARGETDIR)/autoinc.test \
+	$(TARGETDIR)/autovacuum.test \
+	$(TARGETDIR)/autovacuum_ioerr2.test \
+	$(TARGETDIR)/avtrans.test \
+	$(TARGETDIR)/badutf.test \
+	$(TARGETDIR)/between.test \
+	$(TARGETDIR)/bigfile.test \
+	$(TARGETDIR)/bigrow.test \
+	$(TARGETDIR)/bind.test \
+	$(TARGETDIR)/bindxfer.test \
+	$(TARGETDIR)/bitvec.test \
+	$(TARGETDIR)/blob.test \
+	$(TARGETDIR)/busy.test \
+	$(TARGETDIR)/cache.test \
+	$(TARGETDIR)/capi2.test \
+	$(TARGETDIR)/capi3.test \
+	$(TARGETDIR)/capi3b.test \
+	$(TARGETDIR)/capi3c.test \
+	$(TARGETDIR)/capi3d.test \
+	$(TARGETDIR)/cast.test \
+	$(TARGETDIR)/check.test \
+	$(TARGETDIR)/collate1.test \
+	$(TARGETDIR)/collate2.test \
+	$(TARGETDIR)/collate3.test \
+	$(TARGETDIR)/collate4.test \
+	$(TARGETDIR)/collate5.test \
+	$(TARGETDIR)/collate6.test \
+	$(TARGETDIR)/collate7.test \
+	$(TARGETDIR)/collate8.test \
+	$(TARGETDIR)/collate9.test \
+	$(TARGETDIR)/collateA.test \
+	$(TARGETDIR)/colmeta.test \
+	$(TARGETDIR)/colname.test \
+	$(TARGETDIR)/conflict.test \
+	$(TARGETDIR)/corrupt.test \
+	$(TARGETDIR)/corrupt2.test \
+	$(TARGETDIR)/corrupt3.test \
+	$(TARGETDIR)/corrupt4.test \
+	$(TARGETDIR)/corrupt5.test \
+	$(TARGETDIR)/corrupt6.test \
+	$(TARGETDIR)/corrupt7.test \
+	$(TARGETDIR)/corrupt8.test \
+	$(TARGETDIR)/corrupt9.test \
+	$(TARGETDIR)/corruptA.test \
+	$(TARGETDIR)/crash.test \
+	$(TARGETDIR)/crash2.test \
+	$(TARGETDIR)/crash3.test \
+	$(TARGETDIR)/crash4.test \
+	$(TARGETDIR)/crash5.test \
+	$(TARGETDIR)/crash6.test \
+	$(TARGETDIR)/crash7.test \
+	$(TARGETDIR)/createtab.test \
+	$(TARGETDIR)/cse.test \
+	$(TARGETDIR)/date.test \
+	$(TARGETDIR)/default.test \
+	$(TARGETDIR)/delete.test \
+	$(TARGETDIR)/delete2.test \
+	$(TARGETDIR)/delete3.test \
+	$(TARGETDIR)/descidx1.test \
+	$(TARGETDIR)/descidx2.test \
+	$(TARGETDIR)/descidx3.test \
+	$(TARGETDIR)/diskfull.test \
+	$(TARGETDIR)/distinctagg.test \
+	$(TARGETDIR)/enc.test \
+	$(TARGETDIR)/enc2.test \
+	$(TARGETDIR)/enc3.test \
+	$(TARGETDIR)/eval.test \
+	$(TARGETDIR)/exclusive.test \
+	$(TARGETDIR)/exclusive2.test \
+	$(TARGETDIR)/exec.test \
+	$(TARGETDIR)/expr.test \
+	$(TARGETDIR)/filectrl.test \
+	$(TARGETDIR)/filefmt.test \
+	$(TARGETDIR)/fkey1.test \
+	$(TARGETDIR)/format4.test \
+	$(TARGETDIR)/fts1a.test \
+	$(TARGETDIR)/fts1b.test \
+	$(TARGETDIR)/fts1c.test \
+	$(TARGETDIR)/fts1d.test \
+	$(TARGETDIR)/fts1e.test \
+	$(TARGETDIR)/fts1f.test \
+	$(TARGETDIR)/fts1i.test \
+	$(TARGETDIR)/fts1j.test \
+	$(TARGETDIR)/fts1k.test \
+	$(TARGETDIR)/fts1l.test \
+	$(TARGETDIR)/fts1m.test \
+	$(TARGETDIR)/fts1n.test \
+	$(TARGETDIR)/fts1o.test \
+	$(TARGETDIR)/fts1porter.test \
+	$(TARGETDIR)/fts2.test \
+	$(TARGETDIR)/fts2a.test \
+	$(TARGETDIR)/fts2b.test \
+	$(TARGETDIR)/fts2c.test \
+	$(TARGETDIR)/fts2d.test \
+	$(TARGETDIR)/fts2e.test \
+	$(TARGETDIR)/fts2f.test \
+	$(TARGETDIR)/fts2g.test \
+	$(TARGETDIR)/fts2h.test \
+	$(TARGETDIR)/fts2i.test \
+	$(TARGETDIR)/fts2j.test \
+	$(TARGETDIR)/fts2k.test \
+	$(TARGETDIR)/fts2l.test \
+	$(TARGETDIR)/fts2m.test \
+	$(TARGETDIR)/fts2n.test \
+	$(TARGETDIR)/fts2o.test \
+	$(TARGETDIR)/fts2p.test \
+	$(TARGETDIR)/fts2q.test \
+	$(TARGETDIR)/fts2r.test \
+	$(TARGETDIR)/fts2token.test \
+	$(TARGETDIR)/fts3.test \
+	$(TARGETDIR)/fts3aa.test \
+	$(TARGETDIR)/fts3ab.test \
+	$(TARGETDIR)/fts3ac.test \
+	$(TARGETDIR)/fts3ad.test \
+	$(TARGETDIR)/fts3ae.test \
+	$(TARGETDIR)/fts3af.test \
+	$(TARGETDIR)/fts3ag.test \
+	$(TARGETDIR)/fts3ah.test \
+	$(TARGETDIR)/fts3ai.test \
+	$(TARGETDIR)/fts3aj.test \
+	$(TARGETDIR)/fts3ak.test \
+	$(TARGETDIR)/fts3al.test \
+	$(TARGETDIR)/fts3am.test \
+	$(TARGETDIR)/fts3an.test \
+	$(TARGETDIR)/fts3ao.test \
+	$(TARGETDIR)/fts3atoken.test \
+	$(TARGETDIR)/fts3b.test \
+	$(TARGETDIR)/fts3c.test \
+	$(TARGETDIR)/fts3d.test \
+	$(TARGETDIR)/fts3e.test \
+	$(TARGETDIR)/fts3near.test \
+	$(TARGETDIR)/func.test \
+	$(TARGETDIR)/fuzz.test \
+	$(TARGETDIR)/fuzz2.test \
+	$(TARGETDIR)/fuzz_malloc.test \
+	$(TARGETDIR)/hook.test \
+	$(TARGETDIR)/icu.test \
+	$(TARGETDIR)/in.test \
+	$(TARGETDIR)/in2.test \
+	$(TARGETDIR)/in3.test \
+	$(TARGETDIR)/incrblob.test \
+	$(TARGETDIR)/incrblob2.test \
+	$(TARGETDIR)/incrblob_err.test \
+	$(TARGETDIR)/incrvacuum.test \
+	$(TARGETDIR)/incrvacuum2.test \
+	$(TARGETDIR)/incrvacuum_ioerr.test \
+	$(TARGETDIR)/index.test \
+	$(TARGETDIR)/index2.test \
+	$(TARGETDIR)/index3.test \
+	$(TARGETDIR)/insert.test \
+	$(TARGETDIR)/insert2.test \
+	$(TARGETDIR)/insert3.test \
+	$(TARGETDIR)/insert4.test \
+	$(TARGETDIR)/insert5.test \
+	$(TARGETDIR)/interrupt.test \
+	$(TARGETDIR)/intpkey.test \
+	$(TARGETDIR)/io.test \
+	$(TARGETDIR)/ioerr.test \
+	$(TARGETDIR)/ioerr2.test \
+	$(TARGETDIR)/ioerr3.test \
+	$(TARGETDIR)/ioerr4.test \
+	$(TARGETDIR)/ioerr5.test \
+	$(TARGETDIR)/join.test \
+	$(TARGETDIR)/join2.test \
+	$(TARGETDIR)/join3.test \
+	$(TARGETDIR)/join4.test \
+	$(TARGETDIR)/join5.test \
+	$(TARGETDIR)/journal1.test \
+	$(TARGETDIR)/jrnlmode.test \
+	$(TARGETDIR)/lastinsert.test \
+	$(TARGETDIR)/laststmtchanges.test \
+	$(TARGETDIR)/like.test \
+	$(TARGETDIR)/like2.test \
+	$(TARGETDIR)/limit.test \
+	$(TARGETDIR)/loadext.test \
+	$(TARGETDIR)/loadext2.test \
+	$(TARGETDIR)/lock.test \
+	$(TARGETDIR)/lock2.test \
+	$(TARGETDIR)/lock3.test \
+	$(TARGETDIR)/lock4.test \
+	$(TARGETDIR)/lock5.test \
+	$(TARGETDIR)/lookaside.test \
+	$(TARGETDIR)/main.test \
+	$(TARGETDIR)/malloc.test \
+	$(TARGETDIR)/malloc3.test \
+	$(TARGETDIR)/malloc4.test \
+	$(TARGETDIR)/malloc5.test \
+	$(TARGETDIR)/malloc6.test \
+	$(TARGETDIR)/malloc7.test \
+	$(TARGETDIR)/malloc8.test \
+	$(TARGETDIR)/malloc9.test \
+	$(TARGETDIR)/mallocA.test \
+	$(TARGETDIR)/mallocAll.test \
+	$(TARGETDIR)/mallocB.test \
+	$(TARGETDIR)/mallocC.test \
+	$(TARGETDIR)/mallocD.test \
+	$(TARGETDIR)/mallocE.test \
+	$(TARGETDIR)/mallocF.test \
+	$(TARGETDIR)/mallocG.test \
+	$(TARGETDIR)/mallocH.test \
+	$(TARGETDIR)/mallocI.test \
+	$(TARGETDIR)/manydb.test \
+	$(TARGETDIR)/memdb.test \
+	$(TARGETDIR)/memleak.test \
+	$(TARGETDIR)/memsubsys1.test \
+	$(TARGETDIR)/memsubsys2.test \
+	$(TARGETDIR)/minmax.test \
+	$(TARGETDIR)/minmax2.test \
+	$(TARGETDIR)/minmax3.test \
+	$(TARGETDIR)/misc1.test \
+	$(TARGETDIR)/misc2.test \
+	$(TARGETDIR)/misc3.test \
+	$(TARGETDIR)/misc4.test \
+	$(TARGETDIR)/misc5.test \
+	$(TARGETDIR)/misc6.test \
+	$(TARGETDIR)/misc7.test \
+	$(TARGETDIR)/misuse.test \
+	$(TARGETDIR)/mutex1.test \
+	$(TARGETDIR)/mutex2.test \
+	$(TARGETDIR)/nan.test \
+	$(TARGETDIR)/notnull.test \
+	$(TARGETDIR)/null.test \
+	$(TARGETDIR)/openv2.test \
+	$(TARGETDIR)/pager.test \
+	$(TARGETDIR)/pager2.test \
+	$(TARGETDIR)/pager3.test \
+	$(TARGETDIR)/pageropt.test \
+	$(TARGETDIR)/pagesize.test \
+	$(TARGETDIR)/pcache.test \
+	$(TARGETDIR)/permutations.test \
+	$(TARGETDIR)/pragma.test \
+	$(TARGETDIR)/pragma2.test \
+	$(TARGETDIR)/printf.test \
+	$(TARGETDIR)/progress.test \
+	$(TARGETDIR)/ptrchng.test \
+	$(TARGETDIR)/quick.test \
+	$(TARGETDIR)/quote.test \
+	$(TARGETDIR)/rdonly.test \
+	$(TARGETDIR)/reindex.test \
+	$(TARGETDIR)/rollback.test \
+	$(TARGETDIR)/rowid.test \
+	$(TARGETDIR)/rtree.test \
+	$(TARGETDIR)/safety.test \
+	$(TARGETDIR)/schema.test \
+	$(TARGETDIR)/schema2.test \
+	$(TARGETDIR)/select1.test \
+	$(TARGETDIR)/select2.test \
+	$(TARGETDIR)/select3.test \
+	$(TARGETDIR)/select4.test \
+	$(TARGETDIR)/select5.test \
+	$(TARGETDIR)/select6.test \
+	$(TARGETDIR)/select7.test \
+	$(TARGETDIR)/select8.test \
+	$(TARGETDIR)/select9.test \
+	$(TARGETDIR)/selectA.test \
+	$(TARGETDIR)/selectB.test \
+	$(TARGETDIR)/server1.test \
+	$(TARGETDIR)/shared.test \
+	$(TARGETDIR)/shared2.test \
+	$(TARGETDIR)/shared3.test \
+	$(TARGETDIR)/shared4.test \
+	$(TARGETDIR)/shared_err.test \
+	$(TARGETDIR)/shortread1.test \
+	$(TARGETDIR)/sidedelete.test \
+	$(TARGETDIR)/soak.test \
+	$(TARGETDIR)/softheap1.test \
+	$(TARGETDIR)/sort.test \
+	$(TARGETDIR)/speed1.test \
+	$(TARGETDIR)/speed1p.test \
+	$(TARGETDIR)/speed2.test \
+	$(TARGETDIR)/speed3.test \
+	$(TARGETDIR)/speed4.test \
+	$(TARGETDIR)/speed4p.test \
+	$(TARGETDIR)/sqllimits1.test \
+	$(TARGETDIR)/subquery.test \
+	$(TARGETDIR)/subselect.test \
+	$(TARGETDIR)/substr.test \
+	$(TARGETDIR)/sync.test \
+	$(TARGETDIR)/table.test \
+	$(TARGETDIR)/tableapi.test \
+	$(TARGETDIR)/tclsqlite.test \
+	$(TARGETDIR)/tempdb.test \
+	$(TARGETDIR)/temptable.test \
+	$(TARGETDIR)/thread001.test \
+	$(TARGETDIR)/thread002.test \
+	$(TARGETDIR)/thread003.test \
+	$(TARGETDIR)/thread1.test \
+	$(TARGETDIR)/thread2.test \
+	$(TARGETDIR)/tkt1435.test \
+	$(TARGETDIR)/tkt1443.test \
+	$(TARGETDIR)/tkt1444.test \
+	$(TARGETDIR)/tkt1449.test \
+	$(TARGETDIR)/tkt1473.test \
+	$(TARGETDIR)/tkt1501.test \
+	$(TARGETDIR)/tkt1512.test \
+	$(TARGETDIR)/tkt1514.test \
+	$(TARGETDIR)/tkt1536.test \
+	$(TARGETDIR)/tkt1537.test \
+	$(TARGETDIR)/tkt1567.test \
+	$(TARGETDIR)/tkt1644.test \
+	$(TARGETDIR)/tkt1667.test \
+	$(TARGETDIR)/tkt1873.test \
+	$(TARGETDIR)/tkt2141.test \
+	$(TARGETDIR)/tkt2192.test \
+	$(TARGETDIR)/tkt2213.test \
+	$(TARGETDIR)/tkt2251.test \
+	$(TARGETDIR)/tkt2285.test \
+	$(TARGETDIR)/tkt2332.test \
+	$(TARGETDIR)/tkt2339.test \
+	$(TARGETDIR)/tkt2391.test \
+	$(TARGETDIR)/tkt2409.test \
+	$(TARGETDIR)/tkt2450.test \
+	$(TARGETDIR)/tkt2640.test \
+	$(TARGETDIR)/tkt2643.test \
+	$(TARGETDIR)/tkt2686.test \
+	$(TARGETDIR)/tkt2767.test \
+	$(TARGETDIR)/tkt2817.test \
+	$(TARGETDIR)/tkt2820.test \
+	$(TARGETDIR)/tkt2822.test \
+	$(TARGETDIR)/tkt2832.test \
+	$(TARGETDIR)/tkt2854.test \
+	$(TARGETDIR)/tkt2920.test \
+	$(TARGETDIR)/tkt2927.test \
+	$(TARGETDIR)/tkt2942.test \
+	$(TARGETDIR)/tkt3080.test \
+	$(TARGETDIR)/tkt3093.test \
+	$(TARGETDIR)/tkt3121.test \
+	$(TARGETDIR)/tkt3201.test \
+	$(TARGETDIR)/tkt3292.test \
+	$(TARGETDIR)/tkt3298.test \
+	$(TARGETDIR)/tkt3334.test \
+	$(TARGETDIR)/tokenize.test \
+	$(TARGETDIR)/trace.test \
+	$(TARGETDIR)/trans.test \
+	$(TARGETDIR)/trans2.test \
+	$(TARGETDIR)/trigger1.test \
+	$(TARGETDIR)/trigger2.test \
+	$(TARGETDIR)/trigger3.test \
+	$(TARGETDIR)/trigger4.test \
+	$(TARGETDIR)/trigger5.test \
+	$(TARGETDIR)/trigger6.test \
+	$(TARGETDIR)/trigger7.test \
+	$(TARGETDIR)/trigger8.test \
+	$(TARGETDIR)/trigger9.test \
+	$(TARGETDIR)/triggerA.test \
+	$(TARGETDIR)/triggerB.test \
+	$(TARGETDIR)/types.test \
+	$(TARGETDIR)/types2.test \
+	$(TARGETDIR)/types3.test \
+	$(TARGETDIR)/unique.test \
+	$(TARGETDIR)/update.test \
+	$(TARGETDIR)/utf16align.test \
+	$(TARGETDIR)/vacuum.test \
+	$(TARGETDIR)/vacuum2.test \
+	$(TARGETDIR)/vacuum3.test \
+	$(TARGETDIR)/varint.test \
+	$(TARGETDIR)/veryquick.test \
+	$(TARGETDIR)/view.test \
+	$(TARGETDIR)/vtab1.test \
+	$(TARGETDIR)/vtab2.test \
+	$(TARGETDIR)/vtab3.test \
+	$(TARGETDIR)/vtab4.test \
+	$(TARGETDIR)/vtab5.test \
+	$(TARGETDIR)/vtab6.test \
+	$(TARGETDIR)/vtab7.test \
+	$(TARGETDIR)/vtab8.test \
+	$(TARGETDIR)/vtab9.test \
+	$(TARGETDIR)/vtabA.test \
+	$(TARGETDIR)/vtabB.test \
+	$(TARGETDIR)/vtabC.test \
+	$(TARGETDIR)/vtab_alter.test \
+	$(TARGETDIR)/vtab_err.test \
+	$(TARGETDIR)/vtab_shared.test \
+	$(TARGETDIR)/where.test \
+	$(TARGETDIR)/where2.test \
+	$(TARGETDIR)/where3.test \
+	$(TARGETDIR)/where4.test \
+	$(TARGETDIR)/where5.test \
+	$(TARGETDIR)/where6.test \
+	$(TARGETDIR)/zeroblob.test
+
+
+$(TARGETDIR):
+	$(call createdir, "$@")
+	
+COPYFILES :
+	$(call forcecopy,$(SOURCEDIR)/speed1p.explain,$(TARGETDIR)/speed1p.explain)
+	$(call forcecopy,$(SOURCEDIR)/speed4p.explain,$(TARGETDIR)/speed4p.explain)
+	$(call forcecopy,$(SOURCEDIR)/fuzz_common.tcl,$(TARGETDIR)/fuzz_common.tcl)
+	$(call forcecopy,$(SOURCEDIR)/malloc_common.tcl,$(TARGETDIR)/malloc_common.tcl)
+	$(call forcecopy,$(SOURCEDIR)/tester.tcl,$(TARGETDIR)/tester.tcl)
+	$(call forcecopy,$(SOURCEDIR)/thread_common.tcl,$(TARGETDIR)/thread_common.tcl)
+	$(call forcecopy,$(SOURCEDIR)/trans2.test.gz,$(TARGETDIR)/trans2.test.gz)
+	$(call forcecopy,$(SOURCEDIR)/aggerror.test,$(TARGETDIR)/aggerror.test)
+	$(call forcecopy,$(SOURCEDIR)/alias.test,$(TARGETDIR)/alias.test)
+	$(call forcecopy,$(SOURCEDIR)/all.test,$(TARGETDIR)/all.test)
+	$(call forcecopy,$(SOURCEDIR)/alter.test,$(TARGETDIR)/alter.test)
+	$(call forcecopy,$(SOURCEDIR)/alter2.test,$(TARGETDIR)/alter2.test)
+	$(call forcecopy,$(SOURCEDIR)/alter3.test,$(TARGETDIR)/alter3.test)
+	$(call forcecopy,$(SOURCEDIR)/altermalloc.test,$(TARGETDIR)/altermalloc.test)
+	$(call forcecopy,$(SOURCEDIR)/analyze.test,$(TARGETDIR)/analyze.test)
+	$(call forcecopy,$(SOURCEDIR)/async.test,$(TARGETDIR)/async.test)
+	$(call forcecopy,$(SOURCEDIR)/async2.test,$(TARGETDIR)/async2.test)
+	$(call forcecopy,$(SOURCEDIR)/async3.test,$(TARGETDIR)/async3.test)
+	$(call forcecopy,$(SOURCEDIR)/attach.test,$(TARGETDIR)/attach.test)
+	$(call forcecopy,$(SOURCEDIR)/attach2.test,$(TARGETDIR)/attach2.test)
+	$(call forcecopy,$(SOURCEDIR)/attach3.test,$(TARGETDIR)/attach3.test)
+	$(call forcecopy,$(SOURCEDIR)/attachmalloc.test,$(TARGETDIR)/attachmalloc.test)
+	$(call forcecopy,$(SOURCEDIR)/auth.test,$(TARGETDIR)/auth.test)
+	$(call forcecopy,$(SOURCEDIR)/auth2.test,$(TARGETDIR)/auth2.test)
+	$(call forcecopy,$(SOURCEDIR)/autoinc.test,$(TARGETDIR)/autoinc.test)
+	$(call forcecopy,$(SOURCEDIR)/autovacuum.test,$(TARGETDIR)/autovacuum.test)
+	$(call forcecopy,$(SOURCEDIR)/autovacuum_ioerr2.test,$(TARGETDIR)/autovacuum_ioerr2.test)
+	$(call forcecopy,$(SOURCEDIR)/avtrans.test,$(TARGETDIR)/avtrans.test)
+	$(call forcecopy,$(SOURCEDIR)/badutf.test,$(TARGETDIR)/badutf.test)
+	$(call forcecopy,$(SOURCEDIR)/between.test,$(TARGETDIR)/between.test)
+	$(call forcecopy,$(SOURCEDIR)/bigfile.test,$(TARGETDIR)/bigfile.test)
+	$(call forcecopy,$(SOURCEDIR)/bigrow.test,$(TARGETDIR)/bigrow.test)
+	$(call forcecopy,$(SOURCEDIR)/bind.test,$(TARGETDIR)/bind.test)
+	$(call forcecopy,$(SOURCEDIR)/bindxfer.test,$(TARGETDIR)/bindxfer.test)
+	$(call forcecopy,$(SOURCEDIR)/bitvec.test,$(TARGETDIR)/bitvec.test)
+	$(call forcecopy,$(SOURCEDIR)/blob.test,$(TARGETDIR)/blob.test)
+	$(call forcecopy,$(SOURCEDIR)/busy.test,$(TARGETDIR)/busy.test)
+	$(call forcecopy,$(SOURCEDIR)/cache.test,$(TARGETDIR)/cache.test)
+	$(call forcecopy,$(SOURCEDIR)/capi2.test,$(TARGETDIR)/capi2.test)
+	$(call forcecopy,$(SOURCEDIR)/capi3.test,$(TARGETDIR)/capi3.test)
+	$(call forcecopy,$(SOURCEDIR)/capi3b.test,$(TARGETDIR)/capi3b.test)
+	$(call forcecopy,$(SOURCEDIR)/capi3c.test,$(TARGETDIR)/capi3c.test)
+	$(call forcecopy,$(SOURCEDIR)/capi3d.test,$(TARGETDIR)/capi3d.test)
+	$(call forcecopy,$(SOURCEDIR)/cast.test,$(TARGETDIR)/cast.test)
+	$(call forcecopy,$(SOURCEDIR)/check.test,$(TARGETDIR)/check.test)
+	$(call forcecopy,$(SOURCEDIR)/collate1.test,$(TARGETDIR)/collate1.test)
+	$(call forcecopy,$(SOURCEDIR)/collate2.test,$(TARGETDIR)/collate2.test)
+	$(call forcecopy,$(SOURCEDIR)/collate3.test,$(TARGETDIR)/collate3.test)
+	$(call forcecopy,$(SOURCEDIR)/collate4.test,$(TARGETDIR)/collate4.test)
+	$(call forcecopy,$(SOURCEDIR)/collate5.test,$(TARGETDIR)/collate5.test)
+	$(call forcecopy,$(SOURCEDIR)/collate6.test,$(TARGETDIR)/collate6.test)
+	$(call forcecopy,$(SOURCEDIR)/collate7.test,$(TARGETDIR)/collate7.test)
+	$(call forcecopy,$(SOURCEDIR)/collate8.test,$(TARGETDIR)/collate8.test)
+	$(call forcecopy,$(SOURCEDIR)/collate9.test,$(TARGETDIR)/collate9.test)
+	$(call forcecopy,$(SOURCEDIR)/collateA.test,$(TARGETDIR)/collateA.test)
+	$(call forcecopy,$(SOURCEDIR)/colmeta.test,$(TARGETDIR)/colmeta.test)
+	$(call forcecopy,$(SOURCEDIR)/colname.test,$(TARGETDIR)/colname.test)
+	$(call forcecopy,$(SOURCEDIR)/conflict.test,$(TARGETDIR)/conflict.test)
+	$(call forcecopy,$(SOURCEDIR)/corrupt.test,$(TARGETDIR)/corrupt.test)
+	$(call forcecopy,$(SOURCEDIR)/corrupt2.test,$(TARGETDIR)/corrupt2.test)
+	$(call forcecopy,$(SOURCEDIR)/corrupt3.test,$(TARGETDIR)/corrupt3.test)
+	$(call forcecopy,$(SOURCEDIR)/corrupt4.test,$(TARGETDIR)/corrupt4.test)
+	$(call forcecopy,$(SOURCEDIR)/corrupt5.test,$(TARGETDIR)/corrupt5.test)
+	$(call forcecopy,$(SOURCEDIR)/corrupt6.test,$(TARGETDIR)/corrupt6.test)
+	$(call forcecopy,$(SOURCEDIR)/corrupt7.test,$(TARGETDIR)/corrupt7.test)
+	$(call forcecopy,$(SOURCEDIR)/corrupt8.test,$(TARGETDIR)/corrupt8.test)
+	$(call forcecopy,$(SOURCEDIR)/corrupt9.test,$(TARGETDIR)/corrupt9.test)
+	$(call forcecopy,$(SOURCEDIR)/corruptA.test,$(TARGETDIR)/corruptA.test)
+	$(call forcecopy,$(SOURCEDIR)/crash.test,$(TARGETDIR)/crash.test)
+	$(call forcecopy,$(SOURCEDIR)/crash2.test,$(TARGETDIR)/crash2.test)
+	$(call forcecopy,$(SOURCEDIR)/crash3.test,$(TARGETDIR)/crash3.test)
+	$(call forcecopy,$(SOURCEDIR)/crash4.test,$(TARGETDIR)/crash4.test)
+	$(call forcecopy,$(SOURCEDIR)/crash5.test,$(TARGETDIR)/crash5.test)
+	$(call forcecopy,$(SOURCEDIR)/crash6.test,$(TARGETDIR)/crash6.test)
+	$(call forcecopy,$(SOURCEDIR)/crash7.test,$(TARGETDIR)/crash7.test)
+	$(call forcecopy,$(SOURCEDIR)/createtab.test,$(TARGETDIR)/createtab.test)
+	$(call forcecopy,$(SOURCEDIR)/cse.test,$(TARGETDIR)/cse.test)
+	$(call forcecopy,$(SOURCEDIR)/date.test,$(TARGETDIR)/date.test)
+	$(call forcecopy,$(SOURCEDIR)/default.test,$(TARGETDIR)/default.test)
+	$(call forcecopy,$(SOURCEDIR)/delete.test,$(TARGETDIR)/delete.test)
+	$(call forcecopy,$(SOURCEDIR)/delete2.test,$(TARGETDIR)/delete2.test)
+	$(call forcecopy,$(SOURCEDIR)/delete3.test,$(TARGETDIR)/delete3.test)
+	$(call forcecopy,$(SOURCEDIR)/descidx1.test,$(TARGETDIR)/descidx1.test)
+	$(call forcecopy,$(SOURCEDIR)/descidx2.test,$(TARGETDIR)/descidx2.test)
+	$(call forcecopy,$(SOURCEDIR)/descidx3.test,$(TARGETDIR)/descidx3.test)
+	$(call forcecopy,$(SOURCEDIR)/diskfull.test,$(TARGETDIR)/diskfull.test)
+	$(call forcecopy,$(SOURCEDIR)/distinctagg.test,$(TARGETDIR)/distinctagg.test)
+	$(call forcecopy,$(SOURCEDIR)/enc.test,$(TARGETDIR)/enc.test)
+	$(call forcecopy,$(SOURCEDIR)/enc2.test,$(TARGETDIR)/enc2.test)
+	$(call forcecopy,$(SOURCEDIR)/enc3.test,$(TARGETDIR)/enc3.test)
+	$(call forcecopy,$(SOURCEDIR)/eval.test,$(TARGETDIR)/eval.test)
+	$(call forcecopy,$(SOURCEDIR)/exclusive.test,$(TARGETDIR)/exclusive.test)
+	$(call forcecopy,$(SOURCEDIR)/exclusive2.test,$(TARGETDIR)/exclusive2.test)
+	$(call forcecopy,$(SOURCEDIR)/exec.test,$(TARGETDIR)/exec.test)
+	$(call forcecopy,$(SOURCEDIR)/expr.test,$(TARGETDIR)/expr.test)
+	$(call forcecopy,$(SOURCEDIR)/filectrl.test,$(TARGETDIR)/filectrl.test)
+	$(call forcecopy,$(SOURCEDIR)/filefmt.test,$(TARGETDIR)/filefmt.test)
+	$(call forcecopy,$(SOURCEDIR)/fkey1.test,$(TARGETDIR)/fkey1.test)
+	$(call forcecopy,$(SOURCEDIR)/format4.test,$(TARGETDIR)/format4.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1a.test,$(TARGETDIR)/fts1a.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1b.test,$(TARGETDIR)/fts1b.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1c.test,$(TARGETDIR)/fts1c.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1d.test,$(TARGETDIR)/fts1d.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1e.test,$(TARGETDIR)/fts1e.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1f.test,$(TARGETDIR)/fts1f.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1i.test,$(TARGETDIR)/fts1i.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1j.test,$(TARGETDIR)/fts1j.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1k.test,$(TARGETDIR)/fts1k.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1l.test,$(TARGETDIR)/fts1l.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1m.test,$(TARGETDIR)/fts1m.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1n.test,$(TARGETDIR)/fts1n.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1o.test,$(TARGETDIR)/fts1o.test)
+	$(call forcecopy,$(SOURCEDIR)/fts1porter.test,$(TARGETDIR)/fts1porter.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2.test,$(TARGETDIR)/fts2.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2a.test,$(TARGETDIR)/fts2a.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2b.test,$(TARGETDIR)/fts2b.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2c.test,$(TARGETDIR)/fts2c.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2d.test,$(TARGETDIR)/fts2d.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2e.test,$(TARGETDIR)/fts2e.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2f.test,$(TARGETDIR)/fts2f.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2g.test,$(TARGETDIR)/fts2g.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2h.test,$(TARGETDIR)/fts2h.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2i.test,$(TARGETDIR)/fts2i.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2j.test,$(TARGETDIR)/fts2j.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2k.test,$(TARGETDIR)/fts2k.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2l.test,$(TARGETDIR)/fts2l.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2m.test,$(TARGETDIR)/fts2m.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2n.test,$(TARGETDIR)/fts2n.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2o.test,$(TARGETDIR)/fts2o.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2p.test,$(TARGETDIR)/fts2p.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2q.test,$(TARGETDIR)/fts2q.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2r.test,$(TARGETDIR)/fts2r.test)
+	$(call forcecopy,$(SOURCEDIR)/fts2token.test,$(TARGETDIR)/fts2token.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3.test,$(TARGETDIR)/fts3.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3aa.test,$(TARGETDIR)/fts3aa.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3ab.test,$(TARGETDIR)/fts3ab.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3ac.test,$(TARGETDIR)/fts3ac.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3ad.test,$(TARGETDIR)/fts3ad.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3ae.test,$(TARGETDIR)/fts3ae.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3af.test,$(TARGETDIR)/fts3af.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3ag.test,$(TARGETDIR)/fts3ag.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3ah.test,$(TARGETDIR)/fts3ah.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3ai.test,$(TARGETDIR)/fts3ai.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3aj.test,$(TARGETDIR)/fts3aj.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3ak.test,$(TARGETDIR)/fts3ak.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3al.test,$(TARGETDIR)/fts3al.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3am.test,$(TARGETDIR)/fts3am.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3an.test,$(TARGETDIR)/fts3an.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3ao.test,$(TARGETDIR)/fts3ao.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3atoken.test,$(TARGETDIR)/fts3atoken.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3b.test,$(TARGETDIR)/fts3b.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3c.test,$(TARGETDIR)/fts3c.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3d.test,$(TARGETDIR)/fts3d.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3e.test,$(TARGETDIR)/fts3e.test)
+	$(call forcecopy,$(SOURCEDIR)/fts3near.test,$(TARGETDIR)/fts3near.test)
+	$(call forcecopy,$(SOURCEDIR)/func.test,$(TARGETDIR)/func.test)
+	$(call forcecopy,$(SOURCEDIR)/fuzz.test,$(TARGETDIR)/fuzz.test)
+	$(call forcecopy,$(SOURCEDIR)/fuzz2.test,$(TARGETDIR)/fuzz2.test)
+	$(call forcecopy,$(SOURCEDIR)/fuzz_malloc.test,$(TARGETDIR)/fuzz_malloc.test)
+	$(call forcecopy,$(SOURCEDIR)/hook.test,$(TARGETDIR)/hook.test)
+	$(call forcecopy,$(SOURCEDIR)/icu.test,$(TARGETDIR)/icu.test)
+	$(call forcecopy,$(SOURCEDIR)/in.test,$(TARGETDIR)/in.test)
+	$(call forcecopy,$(SOURCEDIR)/in2.test,$(TARGETDIR)/in2.test)
+	$(call forcecopy,$(SOURCEDIR)/in3.test,$(TARGETDIR)/in3.test)
+	$(call forcecopy,$(SOURCEDIR)/incrblob.test,$(TARGETDIR)/incrblob.test)
+	$(call forcecopy,$(SOURCEDIR)/incrblob2.test,$(TARGETDIR)/incrblob2.test)
+	$(call forcecopy,$(SOURCEDIR)/incrblob_err.test,$(TARGETDIR)/incrblob_err.test)
+	$(call forcecopy,$(SOURCEDIR)/incrvacuum.test,$(TARGETDIR)/incrvacuum.test)
+	$(call forcecopy,$(SOURCEDIR)/incrvacuum2.test,$(TARGETDIR)/incrvacuum2.test)
+	$(call forcecopy,$(SOURCEDIR)/incrvacuum_ioerr.test,$(TARGETDIR)/incrvacuum_ioerr.test)
+	$(call forcecopy,$(SOURCEDIR)/index.test,$(TARGETDIR)/index.test)
+	$(call forcecopy,$(SOURCEDIR)/index2.test,$(TARGETDIR)/index2.test)
+	$(call forcecopy,$(SOURCEDIR)/index3.test,$(TARGETDIR)/index3.test)
+	$(call forcecopy,$(SOURCEDIR)/insert.test,$(TARGETDIR)/insert.test)
+	$(call forcecopy,$(SOURCEDIR)/insert2.test,$(TARGETDIR)/insert2.test)
+	$(call forcecopy,$(SOURCEDIR)/insert3.test,$(TARGETDIR)/insert3.test)
+	$(call forcecopy,$(SOURCEDIR)/insert4.test,$(TARGETDIR)/insert4.test)
+	$(call forcecopy,$(SOURCEDIR)/insert5.test,$(TARGETDIR)/insert5.test)
+	$(call forcecopy,$(SOURCEDIR)/interrupt.test,$(TARGETDIR)/interrupt.test)
+	$(call forcecopy,$(SOURCEDIR)/intpkey.test,$(TARGETDIR)/intpkey.test)
+	$(call forcecopy,$(SOURCEDIR)/io.test,$(TARGETDIR)/io.test)
+	$(call forcecopy,$(SOURCEDIR)/ioerr.test,$(TARGETDIR)/ioerr.test)
+	$(call forcecopy,$(SOURCEDIR)/ioerr2.test,$(TARGETDIR)/ioerr2.test)
+	$(call forcecopy,$(SOURCEDIR)/ioerr3.test,$(TARGETDIR)/ioerr3.test)
+	$(call forcecopy,$(SOURCEDIR)/ioerr4.test,$(TARGETDIR)/ioerr4.test)
+	$(call forcecopy,$(SOURCEDIR)/ioerr5.test,$(TARGETDIR)/ioerr5.test)
+	$(call forcecopy,$(SOURCEDIR)/join.test,$(TARGETDIR)/join.test)
+	$(call forcecopy,$(SOURCEDIR)/join2.test,$(TARGETDIR)/join2.test)
+	$(call forcecopy,$(SOURCEDIR)/join3.test,$(TARGETDIR)/join3.test)
+	$(call forcecopy,$(SOURCEDIR)/join4.test,$(TARGETDIR)/join4.test)
+	$(call forcecopy,$(SOURCEDIR)/join5.test,$(TARGETDIR)/join5.test)
+	$(call forcecopy,$(SOURCEDIR)/journal1.test,$(TARGETDIR)/journal1.test)
+	$(call forcecopy,$(SOURCEDIR)/jrnlmode.test,$(TARGETDIR)/jrnlmode.test)
+	$(call forcecopy,$(SOURCEDIR)/lastinsert.test,$(TARGETDIR)/lastinsert.test)
+	$(call forcecopy,$(SOURCEDIR)/laststmtchanges.test,$(TARGETDIR)/laststmtchanges.test)
+	$(call forcecopy,$(SOURCEDIR)/like.test,$(TARGETDIR)/like.test)
+	$(call forcecopy,$(SOURCEDIR)/like2.test,$(TARGETDIR)/like2.test)
+	$(call forcecopy,$(SOURCEDIR)/limit.test,$(TARGETDIR)/limit.test)
+	$(call forcecopy,$(SOURCEDIR)/loadext.test,$(TARGETDIR)/loadext.test)
+	$(call forcecopy,$(SOURCEDIR)/loadext2.test,$(TARGETDIR)/loadext2.test)
+	$(call forcecopy,$(SOURCEDIR)/lock.test,$(TARGETDIR)/lock.test)
+	$(call forcecopy,$(SOURCEDIR)/lock2.test,$(TARGETDIR)/lock2.test)
+	$(call forcecopy,$(SOURCEDIR)/lock3.test,$(TARGETDIR)/lock3.test)
+	$(call forcecopy,$(SOURCEDIR)/lock4.test,$(TARGETDIR)/lock4.test)
+	$(call forcecopy,$(SOURCEDIR)/lock5.test,$(TARGETDIR)/lock5.test)
+	$(call forcecopy,$(SOURCEDIR)/lookaside.test,$(TARGETDIR)/lookaside.test)
+	$(call forcecopy,$(SOURCEDIR)/main.test,$(TARGETDIR)/main.test)
+	$(call forcecopy,$(SOURCEDIR)/malloc.test,$(TARGETDIR)/malloc.test)
+	$(call forcecopy,$(SOURCEDIR)/malloc3.test,$(TARGETDIR)/malloc3.test)
+	$(call forcecopy,$(SOURCEDIR)/malloc4.test,$(TARGETDIR)/malloc4.test)
+	$(call forcecopy,$(SOURCEDIR)/malloc5.test,$(TARGETDIR)/malloc5.test)
+	$(call forcecopy,$(SOURCEDIR)/malloc6.test,$(TARGETDIR)/malloc6.test)
+	$(call forcecopy,$(SOURCEDIR)/malloc7.test,$(TARGETDIR)/malloc7.test)
+	$(call forcecopy,$(SOURCEDIR)/malloc8.test,$(TARGETDIR)/malloc8.test)
+	$(call forcecopy,$(SOURCEDIR)/malloc9.test,$(TARGETDIR)/malloc9.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocA.test,$(TARGETDIR)/mallocA.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocAll.test,$(TARGETDIR)/mallocAll.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocB.test,$(TARGETDIR)/mallocB.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocC.test,$(TARGETDIR)/mallocC.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocD.test,$(TARGETDIR)/mallocD.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocE.test,$(TARGETDIR)/mallocE.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocF.test,$(TARGETDIR)/mallocF.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocG.test,$(TARGETDIR)/mallocG.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocH.test,$(TARGETDIR)/mallocH.test)
+	$(call forcecopy,$(SOURCEDIR)/mallocI.test,$(TARGETDIR)/mallocI.test)
+	$(call forcecopy,$(SOURCEDIR)/manydb.test,$(TARGETDIR)/manydb.test)
+	$(call forcecopy,$(SOURCEDIR)/memdb.test,$(TARGETDIR)/memdb.test)
+	$(call forcecopy,$(SOURCEDIR)/memleak.test,$(TARGETDIR)/memleak.test)
+	$(call forcecopy,$(SOURCEDIR)/memsubsys1.test,$(TARGETDIR)/memsubsys1.test)
+	$(call forcecopy,$(SOURCEDIR)/memsubsys2.test,$(TARGETDIR)/memsubsys2.test)
+	$(call forcecopy,$(SOURCEDIR)/minmax.test,$(TARGETDIR)/minmax.test)
+	$(call forcecopy,$(SOURCEDIR)/minmax2.test,$(TARGETDIR)/minmax2.test)
+	$(call forcecopy,$(SOURCEDIR)/minmax3.test,$(TARGETDIR)/minmax3.test)
+	$(call forcecopy,$(SOURCEDIR)/misc1.test,$(TARGETDIR)/misc1.test)
+	$(call forcecopy,$(SOURCEDIR)/misc2.test,$(TARGETDIR)/misc2.test)
+	$(call forcecopy,$(SOURCEDIR)/misc3.test,$(TARGETDIR)/misc3.test)
+	$(call forcecopy,$(SOURCEDIR)/misc4.test,$(TARGETDIR)/misc4.test)
+	$(call forcecopy,$(SOURCEDIR)/misc5.test,$(TARGETDIR)/misc5.test)
+	$(call forcecopy,$(SOURCEDIR)/misc6.test,$(TARGETDIR)/misc6.test)
+	$(call forcecopy,$(SOURCEDIR)/misc7.test,$(TARGETDIR)/misc7.test)
+	$(call forcecopy,$(SOURCEDIR)/misuse.test,$(TARGETDIR)/misuse.test)
+	$(call forcecopy,$(SOURCEDIR)/mutex1.test,$(TARGETDIR)/mutex1.test)
+	$(call forcecopy,$(SOURCEDIR)/mutex2.test,$(TARGETDIR)/mutex2.test)
+	$(call forcecopy,$(SOURCEDIR)/nan.test,$(TARGETDIR)/nan.test)
+	$(call forcecopy,$(SOURCEDIR)/notnull.test,$(TARGETDIR)/notnull.test)
+	$(call forcecopy,$(SOURCEDIR)/null.test,$(TARGETDIR)/null.test)
+	$(call forcecopy,$(SOURCEDIR)/openv2.test,$(TARGETDIR)/openv2.test)
+	$(call forcecopy,$(SOURCEDIR)/pager.test,$(TARGETDIR)/pager.test)
+	$(call forcecopy,$(SOURCEDIR)/pager2.test,$(TARGETDIR)/pager2.test)
+	$(call forcecopy,$(SOURCEDIR)/pager3.test,$(TARGETDIR)/pager3.test)
+	$(call forcecopy,$(SOURCEDIR)/pageropt.test,$(TARGETDIR)/pageropt.test)
+	$(call forcecopy,$(SOURCEDIR)/pagesize.test,$(TARGETDIR)/pagesize.test)
+	$(call forcecopy,$(SOURCEDIR)/pcache.test,$(TARGETDIR)/pcache.test)
+	$(call forcecopy,$(SOURCEDIR)/permutations.test,$(TARGETDIR)/permutations.test)
+	$(call forcecopy,$(SOURCEDIR)/pragma.test,$(TARGETDIR)/pragma.test)
+	$(call forcecopy,$(SOURCEDIR)/pragma2.test,$(TARGETDIR)/pragma2.test)
+	$(call forcecopy,$(SOURCEDIR)/printf.test,$(TARGETDIR)/printf.test)
+	$(call forcecopy,$(SOURCEDIR)/progress.test,$(TARGETDIR)/progress.test)
+	$(call forcecopy,$(SOURCEDIR)/ptrchng.test,$(TARGETDIR)/ptrchng.test)
+	$(call forcecopy,$(SOURCEDIR)/quick.test,$(TARGETDIR)/quick.test)
+	$(call forcecopy,$(SOURCEDIR)/quote.test,$(TARGETDIR)/quote.test)
+	$(call forcecopy,$(SOURCEDIR)/rdonly.test,$(TARGETDIR)/rdonly.test)
+	$(call forcecopy,$(SOURCEDIR)/reindex.test,$(TARGETDIR)/reindex.test)
+	$(call forcecopy,$(SOURCEDIR)/rollback.test,$(TARGETDIR)/rollback.test)
+	$(call forcecopy,$(SOURCEDIR)/rowid.test,$(TARGETDIR)/rowid.test)
+	$(call forcecopy,$(SOURCEDIR)/rtree.test,$(TARGETDIR)/rtree.test)
+	$(call forcecopy,$(SOURCEDIR)/safety.test,$(TARGETDIR)/safety.test)
+	$(call forcecopy,$(SOURCEDIR)/schema.test,$(TARGETDIR)/schema.test)
+	$(call forcecopy,$(SOURCEDIR)/schema2.test,$(TARGETDIR)/schema2.test)
+	$(call forcecopy,$(SOURCEDIR)/select1.test,$(TARGETDIR)/select1.test)
+	$(call forcecopy,$(SOURCEDIR)/select2.test,$(TARGETDIR)/select2.test)
+	$(call forcecopy,$(SOURCEDIR)/select3.test,$(TARGETDIR)/select3.test)
+	$(call forcecopy,$(SOURCEDIR)/select4.test,$(TARGETDIR)/select4.test)
+	$(call forcecopy,$(SOURCEDIR)/select5.test,$(TARGETDIR)/select5.test)
+	$(call forcecopy,$(SOURCEDIR)/select6.test,$(TARGETDIR)/select6.test)
+	$(call forcecopy,$(SOURCEDIR)/select7.test,$(TARGETDIR)/select7.test)
+	$(call forcecopy,$(SOURCEDIR)/select8.test,$(TARGETDIR)/select8.test)
+	$(call forcecopy,$(SOURCEDIR)/select9.test,$(TARGETDIR)/select9.test)
+	$(call forcecopy,$(SOURCEDIR)/selectA.test,$(TARGETDIR)/selectA.test)
+	$(call forcecopy,$(SOURCEDIR)/selectB.test,$(TARGETDIR)/selectB.test)
+	$(call forcecopy,$(SOURCEDIR)/server1.test,$(TARGETDIR)/server1.test)
+	$(call forcecopy,$(SOURCEDIR)/shared.test,$(TARGETDIR)/shared.test)
+	$(call forcecopy,$(SOURCEDIR)/shared2.test,$(TARGETDIR)/shared2.test)
+	$(call forcecopy,$(SOURCEDIR)/shared3.test,$(TARGETDIR)/shared3.test)
+	$(call forcecopy,$(SOURCEDIR)/shared4.test,$(TARGETDIR)/shared4.test)
+	$(call forcecopy,$(SOURCEDIR)/shared_err.test,$(TARGETDIR)/shared_err.test)
+	$(call forcecopy,$(SOURCEDIR)/shortread1.test,$(TARGETDIR)/shortread1.test)
+	$(call forcecopy,$(SOURCEDIR)/sidedelete.test,$(TARGETDIR)/sidedelete.test)
+	$(call forcecopy,$(SOURCEDIR)/soak.test,$(TARGETDIR)/soak.test)
+	$(call forcecopy,$(SOURCEDIR)/softheap1.test,$(TARGETDIR)/softheap1.test)
+	$(call forcecopy,$(SOURCEDIR)/sort.test,$(TARGETDIR)/sort.test)
+	$(call forcecopy,$(SOURCEDIR)/speed1.test,$(TARGETDIR)/speed1.test)
+	$(call forcecopy,$(SOURCEDIR)/speed1p.test,$(TARGETDIR)/speed1p.test)
+	$(call forcecopy,$(SOURCEDIR)/speed2.test,$(TARGETDIR)/speed2.test)
+	$(call forcecopy,$(SOURCEDIR)/speed3.test,$(TARGETDIR)/speed3.test)
+	$(call forcecopy,$(SOURCEDIR)/speed4.test,$(TARGETDIR)/speed4.test)
+	$(call forcecopy,$(SOURCEDIR)/speed4p.test,$(TARGETDIR)/speed4p.test)
+	$(call forcecopy,$(SOURCEDIR)/sqllimits1.test,$(TARGETDIR)/sqllimits1.test)
+	$(call forcecopy,$(SOURCEDIR)/subquery.test,$(TARGETDIR)/subquery.test)
+	$(call forcecopy,$(SOURCEDIR)/subselect.test,$(TARGETDIR)/subselect.test)
+	$(call forcecopy,$(SOURCEDIR)/substr.test,$(TARGETDIR)/substr.test)
+	$(call forcecopy,$(SOURCEDIR)/sync.test,$(TARGETDIR)/sync.test)
+	$(call forcecopy,$(SOURCEDIR)/table.test,$(TARGETDIR)/table.test)
+	$(call forcecopy,$(SOURCEDIR)/tableapi.test,$(TARGETDIR)/tableapi.test)
+	$(call forcecopy,$(SOURCEDIR)/tclsqlite.test,$(TARGETDIR)/tclsqlite.test)
+	$(call forcecopy,$(SOURCEDIR)/tempdb.test,$(TARGETDIR)/tempdb.test)
+	$(call forcecopy,$(SOURCEDIR)/temptable.test,$(TARGETDIR)/temptable.test)
+	$(call forcecopy,$(SOURCEDIR)/thread001.test,$(TARGETDIR)/thread001.test)
+	$(call forcecopy,$(SOURCEDIR)/thread002.test,$(TARGETDIR)/thread002.test)
+	$(call forcecopy,$(SOURCEDIR)/thread003.test,$(TARGETDIR)/thread003.test)
+	$(call forcecopy,$(SOURCEDIR)/thread1.test,$(TARGETDIR)/thread1.test)
+	$(call forcecopy,$(SOURCEDIR)/thread2.test,$(TARGETDIR)/thread2.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1435.test,$(TARGETDIR)/tkt1435.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1443.test,$(TARGETDIR)/tkt1443.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1444.test,$(TARGETDIR)/tkt1444.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1449.test,$(TARGETDIR)/tkt1449.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1473.test,$(TARGETDIR)/tkt1473.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1501.test,$(TARGETDIR)/tkt1501.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1512.test,$(TARGETDIR)/tkt1512.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1514.test,$(TARGETDIR)/tkt1514.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1536.test,$(TARGETDIR)/tkt1536.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1537.test,$(TARGETDIR)/tkt1537.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1567.test,$(TARGETDIR)/tkt1567.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1644.test,$(TARGETDIR)/tkt1644.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1667.test,$(TARGETDIR)/tkt1667.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt1873.test,$(TARGETDIR)/tkt1873.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2141.test,$(TARGETDIR)/tkt2141.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2192.test,$(TARGETDIR)/tkt2192.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2213.test,$(TARGETDIR)/tkt2213.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2251.test,$(TARGETDIR)/tkt2251.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2285.test,$(TARGETDIR)/tkt2285.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2332.test,$(TARGETDIR)/tkt2332.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2339.test,$(TARGETDIR)/tkt2339.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2391.test,$(TARGETDIR)/tkt2391.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2409.test,$(TARGETDIR)/tkt2409.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2450.test,$(TARGETDIR)/tkt2450.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2640.test,$(TARGETDIR)/tkt2640.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2643.test,$(TARGETDIR)/tkt2643.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2686.test,$(TARGETDIR)/tkt2686.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2767.test,$(TARGETDIR)/tkt2767.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2817.test,$(TARGETDIR)/tkt2817.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2820.test,$(TARGETDIR)/tkt2820.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2822.test,$(TARGETDIR)/tkt2822.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2832.test,$(TARGETDIR)/tkt2832.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2854.test,$(TARGETDIR)/tkt2854.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2920.test,$(TARGETDIR)/tkt2920.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2927.test,$(TARGETDIR)/tkt2927.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt2942.test,$(TARGETDIR)/tkt2942.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt3080.test,$(TARGETDIR)/tkt3080.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt3093.test,$(TARGETDIR)/tkt3093.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt3121.test,$(TARGETDIR)/tkt3121.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt3201.test,$(TARGETDIR)/tkt3201.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt3292.test,$(TARGETDIR)/tkt3292.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt3298.test,$(TARGETDIR)/tkt3298.test)
+	$(call forcecopy,$(SOURCEDIR)/tkt3334.test,$(TARGETDIR)/tkt3334.test)
+	$(call forcecopy,$(SOURCEDIR)/tokenize.test,$(TARGETDIR)/tokenize.test)
+	$(call forcecopy,$(SOURCEDIR)/trace.test,$(TARGETDIR)/trace.test)
+	$(call forcecopy,$(SOURCEDIR)/trans.test,$(TARGETDIR)/trans.test)
+	$(call forcecopy,$(SOURCEDIR)/trans2.test,$(TARGETDIR)/trans2.test)
+	$(call forcecopy,$(SOURCEDIR)/trigger1.test,$(TARGETDIR)/trigger1.test)
+	$(call forcecopy,$(SOURCEDIR)/trigger2.test,$(TARGETDIR)/trigger2.test)
+	$(call forcecopy,$(SOURCEDIR)/trigger3.test,$(TARGETDIR)/trigger3.test)
+	$(call forcecopy,$(SOURCEDIR)/trigger4.test,$(TARGETDIR)/trigger4.test)
+	$(call forcecopy,$(SOURCEDIR)/trigger5.test,$(TARGETDIR)/trigger5.test)
+	$(call forcecopy,$(SOURCEDIR)/trigger6.test,$(TARGETDIR)/trigger6.test)
+	$(call forcecopy,$(SOURCEDIR)/trigger7.test,$(TARGETDIR)/trigger7.test)
+	$(call forcecopy,$(SOURCEDIR)/trigger8.test,$(TARGETDIR)/trigger8.test)
+	$(call forcecopy,$(SOURCEDIR)/trigger9.test,$(TARGETDIR)/trigger9.test)
+	$(call forcecopy,$(SOURCEDIR)/triggerA.test,$(TARGETDIR)/triggerA.test)
+	$(call forcecopy,$(SOURCEDIR)/triggerB.test,$(TARGETDIR)/triggerB.test)
+	$(call forcecopy,$(SOURCEDIR)/types.test,$(TARGETDIR)/types.test)
+	$(call forcecopy,$(SOURCEDIR)/types2.test,$(TARGETDIR)/types2.test)
+	$(call forcecopy,$(SOURCEDIR)/types3.test,$(TARGETDIR)/types3.test)
+	$(call forcecopy,$(SOURCEDIR)/unique.test,$(TARGETDIR)/unique.test)
+	$(call forcecopy,$(SOURCEDIR)/update.test,$(TARGETDIR)/update.test)
+	$(call forcecopy,$(SOURCEDIR)/utf16align.test,$(TARGETDIR)/utf16align.test)
+	$(call forcecopy,$(SOURCEDIR)/vacuum.test,$(TARGETDIR)/vacuum.test)
+	$(call forcecopy,$(SOURCEDIR)/vacuum2.test,$(TARGETDIR)/vacuum2.test)
+	$(call forcecopy,$(SOURCEDIR)/vacuum3.test,$(TARGETDIR)/vacuum3.test)
+	$(call forcecopy,$(SOURCEDIR)/varint.test,$(TARGETDIR)/varint.test)
+	$(call forcecopy,$(SOURCEDIR)/veryquick.test,$(TARGETDIR)/veryquick.test)
+	$(call forcecopy,$(SOURCEDIR)/view.test,$(TARGETDIR)/view.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab1.test,$(TARGETDIR)/vtab1.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab2.test,$(TARGETDIR)/vtab2.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab3.test,$(TARGETDIR)/vtab3.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab4.test,$(TARGETDIR)/vtab4.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab5.test,$(TARGETDIR)/vtab5.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab6.test,$(TARGETDIR)/vtab6.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab7.test,$(TARGETDIR)/vtab7.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab8.test,$(TARGETDIR)/vtab8.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab9.test,$(TARGETDIR)/vtab9.test)
+	$(call forcecopy,$(SOURCEDIR)/vtabA.test,$(TARGETDIR)/vtabA.test)
+	$(call forcecopy,$(SOURCEDIR)/vtabB.test,$(TARGETDIR)/vtabB.test)
+	$(call forcecopy,$(SOURCEDIR)/vtabC.test,$(TARGETDIR)/vtabC.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab_alter.test,$(TARGETDIR)/vtab_alter.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab_err.test,$(TARGETDIR)/vtab_err.test)
+	$(call forcecopy,$(SOURCEDIR)/vtab_shared.test,$(TARGETDIR)/vtab_shared.test)
+	$(call forcecopy,$(SOURCEDIR)/where.test,$(TARGETDIR)/where.test)
+	$(call forcecopy,$(SOURCEDIR)/where2.test,$(TARGETDIR)/where2.test)
+	$(call forcecopy,$(SOURCEDIR)/where3.test,$(TARGETDIR)/where3.test)
+	$(call forcecopy,$(SOURCEDIR)/where4.test,$(TARGETDIR)/where4.test)
+	$(call forcecopy,$(SOURCEDIR)/where5.test,$(TARGETDIR)/where5.test)
+	$(call forcecopy,$(SOURCEDIR)/where6.test,$(TARGETDIR)/where6.test)
+	$(call forcecopy,$(SOURCEDIR)/zeroblob.test,$(TARGETDIR)/zeroblob.test)
+	
+DO_NOTHING :
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+BLD : $(TARGETDIR) COPYFILES
+
+CLEAN : 
+	$(call forceremove,$(TARGET_FILES))
+	
+SAVESPACE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES : 
+	@echo $(TARGETDIR)/speed1p.explain
+	@echo $(TARGETDIR)/speed4p.explain
+	@echo $(TARGETDIR)/fuzz_common.tcl
+	@echo $(TARGETDIR)/malloc_common.tcl
+	@echo $(TARGETDIR)/tester.tcl
+	@echo $(TARGETDIR)/thread_common.tcl
+	@echo $(TARGETDIR)/trans2.test.gz
+	@echo $(TARGETDIR)/aggerror.test
+	@echo $(TARGETDIR)/alias.test
+	@echo $(TARGETDIR)/all.test
+	@echo $(TARGETDIR)/alter.test
+	@echo $(TARGETDIR)/alter2.test
+	@echo $(TARGETDIR)/alter3.test
+	@echo $(TARGETDIR)/altermalloc.test
+	@echo $(TARGETDIR)/analyze.test
+	@echo $(TARGETDIR)/async.test
+	@echo $(TARGETDIR)/async2.test
+	@echo $(TARGETDIR)/async3.test
+	@echo $(TARGETDIR)/attach.test
+	@echo $(TARGETDIR)/attach2.test
+	@echo $(TARGETDIR)/attach3.test
+	@echo $(TARGETDIR)/attachmalloc.test
+	@echo $(TARGETDIR)/auth.test
+	@echo $(TARGETDIR)/auth2.test
+	@echo $(TARGETDIR)/autoinc.test
+	@echo $(TARGETDIR)/autovacuum.test
+	@echo $(TARGETDIR)/autovacuum_ioerr2.test
+	@echo $(TARGETDIR)/avtrans.test
+	@echo $(TARGETDIR)/badutf.test
+	@echo $(TARGETDIR)/between.test
+	@echo $(TARGETDIR)/bigfile.test
+	@echo $(TARGETDIR)/bigrow.test
+	@echo $(TARGETDIR)/bind.test
+	@echo $(TARGETDIR)/bindxfer.test
+	@echo $(TARGETDIR)/bitvec.test
+	@echo $(TARGETDIR)/blob.test
+	@echo $(TARGETDIR)/busy.test
+	@echo $(TARGETDIR)/cache.test
+	@echo $(TARGETDIR)/capi2.test
+	@echo $(TARGETDIR)/capi3.test
+	@echo $(TARGETDIR)/capi3b.test
+	@echo $(TARGETDIR)/capi3c.test
+	@echo $(TARGETDIR)/capi3d.test
+	@echo $(TARGETDIR)/cast.test
+	@echo $(TARGETDIR)/check.test
+	@echo $(TARGETDIR)/collate1.test
+	@echo $(TARGETDIR)/collate2.test
+	@echo $(TARGETDIR)/collate3.test
+	@echo $(TARGETDIR)/collate4.test
+	@echo $(TARGETDIR)/collate5.test
+	@echo $(TARGETDIR)/collate6.test
+	@echo $(TARGETDIR)/collate7.test
+	@echo $(TARGETDIR)/collate8.test
+	@echo $(TARGETDIR)/collate9.test
+	@echo $(TARGETDIR)/collateA.test
+	@echo $(TARGETDIR)/colmeta.test
+	@echo $(TARGETDIR)/colname.test
+	@echo $(TARGETDIR)/conflict.test
+	@echo $(TARGETDIR)/corrupt.test
+	@echo $(TARGETDIR)/corrupt2.test
+	@echo $(TARGETDIR)/corrupt3.test
+	@echo $(TARGETDIR)/corrupt4.test
+	@echo $(TARGETDIR)/corrupt5.test
+	@echo $(TARGETDIR)/corrupt6.test
+	@echo $(TARGETDIR)/corrupt7.test
+	@echo $(TARGETDIR)/corrupt8.test
+	@echo $(TARGETDIR)/corrupt9.test
+	@echo $(TARGETDIR)/corruptA.test
+	@echo $(TARGETDIR)/crash.test
+	@echo $(TARGETDIR)/crash2.test
+	@echo $(TARGETDIR)/crash3.test
+	@echo $(TARGETDIR)/crash4.test
+	@echo $(TARGETDIR)/crash5.test
+	@echo $(TARGETDIR)/crash6.test
+	@echo $(TARGETDIR)/crash7.test
+	@echo $(TARGETDIR)/createtab.test
+	@echo $(TARGETDIR)/cse.test
+	@echo $(TARGETDIR)/date.test
+	@echo $(TARGETDIR)/default.test
+	@echo $(TARGETDIR)/delete.test
+	@echo $(TARGETDIR)/delete2.test
+	@echo $(TARGETDIR)/delete3.test
+	@echo $(TARGETDIR)/descidx1.test
+	@echo $(TARGETDIR)/descidx2.test
+	@echo $(TARGETDIR)/descidx3.test
+	@echo $(TARGETDIR)/diskfull.test
+	@echo $(TARGETDIR)/distinctagg.test
+	@echo $(TARGETDIR)/enc.test
+	@echo $(TARGETDIR)/enc2.test
+	@echo $(TARGETDIR)/enc3.test
+	@echo $(TARGETDIR)/eval.test
+	@echo $(TARGETDIR)/exclusive.test
+	@echo $(TARGETDIR)/exclusive2.test
+	@echo $(TARGETDIR)/exec.test
+	@echo $(TARGETDIR)/expr.test
+	@echo $(TARGETDIR)/filectrl.test
+	@echo $(TARGETDIR)/filefmt.test
+	@echo $(TARGETDIR)/fkey1.test
+	@echo $(TARGETDIR)/format4.test
+	@echo $(TARGETDIR)/fts1a.test
+	@echo $(TARGETDIR)/fts1b.test
+	@echo $(TARGETDIR)/fts1c.test
+	@echo $(TARGETDIR)/fts1d.test
+	@echo $(TARGETDIR)/fts1e.test
+	@echo $(TARGETDIR)/fts1f.test
+	@echo $(TARGETDIR)/fts1i.test
+	@echo $(TARGETDIR)/fts1j.test
+	@echo $(TARGETDIR)/fts1k.test
+	@echo $(TARGETDIR)/fts1l.test
+	@echo $(TARGETDIR)/fts1m.test
+	@echo $(TARGETDIR)/fts1n.test
+	@echo $(TARGETDIR)/fts1o.test
+	@echo $(TARGETDIR)/fts1porter.test
+	@echo $(TARGETDIR)/fts2.test
+	@echo $(TARGETDIR)/fts2a.test
+	@echo $(TARGETDIR)/fts2b.test
+	@echo $(TARGETDIR)/fts2c.test
+	@echo $(TARGETDIR)/fts2d.test
+	@echo $(TARGETDIR)/fts2e.test
+	@echo $(TARGETDIR)/fts2f.test
+	@echo $(TARGETDIR)/fts2g.test
+	@echo $(TARGETDIR)/fts2h.test
+	@echo $(TARGETDIR)/fts2i.test
+	@echo $(TARGETDIR)/fts2j.test
+	@echo $(TARGETDIR)/fts2k.test
+	@echo $(TARGETDIR)/fts2l.test
+	@echo $(TARGETDIR)/fts2m.test
+	@echo $(TARGETDIR)/fts2n.test
+	@echo $(TARGETDIR)/fts2o.test
+	@echo $(TARGETDIR)/fts2p.test
+	@echo $(TARGETDIR)/fts2q.test
+	@echo $(TARGETDIR)/fts2r.test
+	@echo $(TARGETDIR)/fts2token.test
+	@echo $(TARGETDIR)/fts3.test
+	@echo $(TARGETDIR)/fts3aa.test
+	@echo $(TARGETDIR)/fts3ab.test
+	@echo $(TARGETDIR)/fts3ac.test
+	@echo $(TARGETDIR)/fts3ad.test
+	@echo $(TARGETDIR)/fts3ae.test
+	@echo $(TARGETDIR)/fts3af.test
+	@echo $(TARGETDIR)/fts3ag.test
+	@echo $(TARGETDIR)/fts3ah.test
+	@echo $(TARGETDIR)/fts3ai.test
+	@echo $(TARGETDIR)/fts3aj.test
+	@echo $(TARGETDIR)/fts3ak.test
+	@echo $(TARGETDIR)/fts3al.test
+	@echo $(TARGETDIR)/fts3am.test
+	@echo $(TARGETDIR)/fts3an.test
+	@echo $(TARGETDIR)/fts3ao.test
+	@echo $(TARGETDIR)/fts3atoken.test
+	@echo $(TARGETDIR)/fts3b.test
+	@echo $(TARGETDIR)/fts3c.test
+	@echo $(TARGETDIR)/fts3d.test
+	@echo $(TARGETDIR)/fts3e.test
+	@echo $(TARGETDIR)/fts3near.test
+	@echo $(TARGETDIR)/func.test
+	@echo $(TARGETDIR)/fuzz.test
+	@echo $(TARGETDIR)/fuzz2.test
+	@echo $(TARGETDIR)/fuzz_malloc.test
+	@echo $(TARGETDIR)/hook.test
+	@echo $(TARGETDIR)/icu.test
+	@echo $(TARGETDIR)/in.test
+	@echo $(TARGETDIR)/in2.test
+	@echo $(TARGETDIR)/in3.test
+	@echo $(TARGETDIR)/incrblob.test
+	@echo $(TARGETDIR)/incrblob2.test
+	@echo $(TARGETDIR)/incrblob_err.test
+	@echo $(TARGETDIR)/incrvacuum.test
+	@echo $(TARGETDIR)/incrvacuum2.test
+	@echo $(TARGETDIR)/incrvacuum_ioerr.test
+	@echo $(TARGETDIR)/index.test
+	@echo $(TARGETDIR)/index2.test
+	@echo $(TARGETDIR)/index3.test
+	@echo $(TARGETDIR)/insert.test
+	@echo $(TARGETDIR)/insert2.test
+	@echo $(TARGETDIR)/insert3.test
+	@echo $(TARGETDIR)/insert4.test
+	@echo $(TARGETDIR)/insert5.test
+	@echo $(TARGETDIR)/interrupt.test
+	@echo $(TARGETDIR)/intpkey.test
+	@echo $(TARGETDIR)/io.test
+	@echo $(TARGETDIR)/ioerr.test
+	@echo $(TARGETDIR)/ioerr2.test
+	@echo $(TARGETDIR)/ioerr3.test
+	@echo $(TARGETDIR)/ioerr4.test
+	@echo $(TARGETDIR)/ioerr5.test
+	@echo $(TARGETDIR)/join.test
+	@echo $(TARGETDIR)/join2.test
+	@echo $(TARGETDIR)/join3.test
+	@echo $(TARGETDIR)/join4.test
+	@echo $(TARGETDIR)/join5.test
+	@echo $(TARGETDIR)/journal1.test
+	@echo $(TARGETDIR)/jrnlmode.test
+	@echo $(TARGETDIR)/lastinsert.test
+	@echo $(TARGETDIR)/laststmtchanges.test
+	@echo $(TARGETDIR)/like.test
+	@echo $(TARGETDIR)/like2.test
+	@echo $(TARGETDIR)/limit.test
+	@echo $(TARGETDIR)/loadext.test
+	@echo $(TARGETDIR)/loadext2.test
+	@echo $(TARGETDIR)/lock.test
+	@echo $(TARGETDIR)/lock2.test
+	@echo $(TARGETDIR)/lock3.test
+	@echo $(TARGETDIR)/lock4.test
+	@echo $(TARGETDIR)/lock5.test
+	@echo $(TARGETDIR)/lookaside.test
+	@echo $(TARGETDIR)/main.test
+	@echo $(TARGETDIR)/malloc.test
+	@echo $(TARGETDIR)/malloc3.test
+	@echo $(TARGETDIR)/malloc4.test
+	@echo $(TARGETDIR)/malloc5.test
+	@echo $(TARGETDIR)/malloc6.test
+	@echo $(TARGETDIR)/malloc7.test
+	@echo $(TARGETDIR)/malloc8.test
+	@echo $(TARGETDIR)/malloc9.test
+	@echo $(TARGETDIR)/mallocA.test
+	@echo $(TARGETDIR)/mallocAll.test
+	@echo $(TARGETDIR)/mallocB.test
+	@echo $(TARGETDIR)/mallocC.test
+	@echo $(TARGETDIR)/mallocD.test
+	@echo $(TARGETDIR)/mallocE.test
+	@echo $(TARGETDIR)/mallocF.test
+	@echo $(TARGETDIR)/mallocG.test
+	@echo $(TARGETDIR)/mallocH.test
+	@echo $(TARGETDIR)/mallocI.test
+	@echo $(TARGETDIR)/manydb.test
+	@echo $(TARGETDIR)/memdb.test
+	@echo $(TARGETDIR)/memleak.test
+	@echo $(TARGETDIR)/memsubsys1.test
+	@echo $(TARGETDIR)/memsubsys2.test
+	@echo $(TARGETDIR)/minmax.test
+	@echo $(TARGETDIR)/minmax2.test
+	@echo $(TARGETDIR)/minmax3.test
+	@echo $(TARGETDIR)/misc1.test
+	@echo $(TARGETDIR)/misc2.test
+	@echo $(TARGETDIR)/misc3.test
+	@echo $(TARGETDIR)/misc4.test
+	@echo $(TARGETDIR)/misc5.test
+	@echo $(TARGETDIR)/misc6.test
+	@echo $(TARGETDIR)/misc7.test
+	@echo $(TARGETDIR)/misuse.test
+	@echo $(TARGETDIR)/mutex1.test
+	@echo $(TARGETDIR)/mutex2.test
+	@echo $(TARGETDIR)/nan.test
+	@echo $(TARGETDIR)/notnull.test
+	@echo $(TARGETDIR)/null.test
+	@echo $(TARGETDIR)/openv2.test
+	@echo $(TARGETDIR)/pager.test
+	@echo $(TARGETDIR)/pager2.test
+	@echo $(TARGETDIR)/pager3.test
+	@echo $(TARGETDIR)/pageropt.test
+	@echo $(TARGETDIR)/pagesize.test
+	@echo $(TARGETDIR)/pcache.test
+	@echo $(TARGETDIR)/permutations.test
+	@echo $(TARGETDIR)/pragma.test
+	@echo $(TARGETDIR)/pragma2.test
+	@echo $(TARGETDIR)/printf.test
+	@echo $(TARGETDIR)/progress.test
+	@echo $(TARGETDIR)/ptrchng.test
+	@echo $(TARGETDIR)/quick.test
+	@echo $(TARGETDIR)/quote.test
+	@echo $(TARGETDIR)/rdonly.test
+	@echo $(TARGETDIR)/reindex.test
+	@echo $(TARGETDIR)/rollback.test
+	@echo $(TARGETDIR)/rowid.test
+	@echo $(TARGETDIR)/rtree.test
+	@echo $(TARGETDIR)/safety.test
+	@echo $(TARGETDIR)/schema.test
+	@echo $(TARGETDIR)/schema2.test
+	@echo $(TARGETDIR)/select1.test
+	@echo $(TARGETDIR)/select2.test
+	@echo $(TARGETDIR)/select3.test
+	@echo $(TARGETDIR)/select4.test
+	@echo $(TARGETDIR)/select5.test
+	@echo $(TARGETDIR)/select6.test
+	@echo $(TARGETDIR)/select7.test
+	@echo $(TARGETDIR)/select8.test
+	@echo $(TARGETDIR)/select9.test
+	@echo $(TARGETDIR)/selectA.test
+	@echo $(TARGETDIR)/selectB.test
+	@echo $(TARGETDIR)/server1.test
+	@echo $(TARGETDIR)/shared.test
+	@echo $(TARGETDIR)/shared2.test
+	@echo $(TARGETDIR)/shared3.test
+	@echo $(TARGETDIR)/shared4.test
+	@echo $(TARGETDIR)/shared_err.test
+	@echo $(TARGETDIR)/shortread1.test
+	@echo $(TARGETDIR)/sidedelete.test
+	@echo $(TARGETDIR)/soak.test
+	@echo $(TARGETDIR)/softheap1.test
+	@echo $(TARGETDIR)/sort.test
+	@echo $(TARGETDIR)/speed1.test
+	@echo $(TARGETDIR)/speed1p.test
+	@echo $(TARGETDIR)/speed2.test
+	@echo $(TARGETDIR)/speed3.test
+	@echo $(TARGETDIR)/speed4.test
+	@echo $(TARGETDIR)/speed4p.test
+	@echo $(TARGETDIR)/sqllimits1.test
+	@echo $(TARGETDIR)/subquery.test
+	@echo $(TARGETDIR)/subselect.test
+	@echo $(TARGETDIR)/substr.test
+	@echo $(TARGETDIR)/sync.test
+	@echo $(TARGETDIR)/table.test
+	@echo $(TARGETDIR)/tableapi.test
+	@echo $(TARGETDIR)/tclsqlite.test
+	@echo $(TARGETDIR)/tempdb.test
+	@echo $(TARGETDIR)/temptable.test
+	@echo $(TARGETDIR)/thread001.test
+	@echo $(TARGETDIR)/thread002.test
+	@echo $(TARGETDIR)/thread003.test
+	@echo $(TARGETDIR)/thread1.test
+	@echo $(TARGETDIR)/thread2.test
+	@echo $(TARGETDIR)/tkt1435.test
+	@echo $(TARGETDIR)/tkt1443.test
+	@echo $(TARGETDIR)/tkt1444.test
+	@echo $(TARGETDIR)/tkt1449.test
+	@echo $(TARGETDIR)/tkt1473.test
+	@echo $(TARGETDIR)/tkt1501.test
+	@echo $(TARGETDIR)/tkt1512.test
+	@echo $(TARGETDIR)/tkt1514.test
+	@echo $(TARGETDIR)/tkt1536.test
+	@echo $(TARGETDIR)/tkt1537.test
+	@echo $(TARGETDIR)/tkt1567.test
+	@echo $(TARGETDIR)/tkt1644.test
+	@echo $(TARGETDIR)/tkt1667.test
+	@echo $(TARGETDIR)/tkt1873.test
+	@echo $(TARGETDIR)/tkt2141.test
+	@echo $(TARGETDIR)/tkt2192.test
+	@echo $(TARGETDIR)/tkt2213.test
+	@echo $(TARGETDIR)/tkt2251.test
+	@echo $(TARGETDIR)/tkt2285.test
+	@echo $(TARGETDIR)/tkt2332.test
+	@echo $(TARGETDIR)/tkt2339.test
+	@echo $(TARGETDIR)/tkt2391.test
+	@echo $(TARGETDIR)/tkt2409.test
+	@echo $(TARGETDIR)/tkt2450.test
+	@echo $(TARGETDIR)/tkt2640.test
+	@echo $(TARGETDIR)/tkt2643.test
+	@echo $(TARGETDIR)/tkt2686.test
+	@echo $(TARGETDIR)/tkt2767.test
+	@echo $(TARGETDIR)/tkt2817.test
+	@echo $(TARGETDIR)/tkt2820.test
+	@echo $(TARGETDIR)/tkt2822.test
+	@echo $(TARGETDIR)/tkt2832.test
+	@echo $(TARGETDIR)/tkt2854.test
+	@echo $(TARGETDIR)/tkt2920.test
+	@echo $(TARGETDIR)/tkt2927.test
+	@echo $(TARGETDIR)/tkt2942.test
+	@echo $(TARGETDIR)/tkt3080.test
+	@echo $(TARGETDIR)/tkt3093.test
+	@echo $(TARGETDIR)/tkt3121.test
+	@echo $(TARGETDIR)/tkt3201.test
+	@echo $(TARGETDIR)/tkt3292.test
+	@echo $(TARGETDIR)/tkt3298.test
+	@echo $(TARGETDIR)/tkt3334.test
+	@echo $(TARGETDIR)/tokenize.test
+	@echo $(TARGETDIR)/trace.test
+	@echo $(TARGETDIR)/trans.test
+	@echo $(TARGETDIR)/trans2.test
+	@echo $(TARGETDIR)/trigger1.test
+	@echo $(TARGETDIR)/trigger2.test
+	@echo $(TARGETDIR)/trigger3.test
+	@echo $(TARGETDIR)/trigger4.test
+	@echo $(TARGETDIR)/trigger5.test
+	@echo $(TARGETDIR)/trigger6.test
+	@echo $(TARGETDIR)/trigger7.test
+	@echo $(TARGETDIR)/trigger8.test
+	@echo $(TARGETDIR)/trigger9.test
+	@echo $(TARGETDIR)/triggerA.test
+	@echo $(TARGETDIR)/triggerB.test
+	@echo $(TARGETDIR)/types.test
+	@echo $(TARGETDIR)/types2.test
+	@echo $(TARGETDIR)/types3.test
+	@echo $(TARGETDIR)/unique.test
+	@echo $(TARGETDIR)/update.test
+	@echo $(TARGETDIR)/utf16align.test
+	@echo $(TARGETDIR)/vacuum.test
+	@echo $(TARGETDIR)/vacuum2.test
+	@echo $(TARGETDIR)/vacuum3.test
+	@echo $(TARGETDIR)/varint.test
+	@echo $(TARGETDIR)/veryquick.test
+	@echo $(TARGETDIR)/view.test
+	@echo $(TARGETDIR)/vtab1.test
+	@echo $(TARGETDIR)/vtab2.test
+	@echo $(TARGETDIR)/vtab3.test
+	@echo $(TARGETDIR)/vtab4.test
+	@echo $(TARGETDIR)/vtab5.test
+	@echo $(TARGETDIR)/vtab6.test
+	@echo $(TARGETDIR)/vtab7.test
+	@echo $(TARGETDIR)/vtab8.test
+	@echo $(TARGETDIR)/vtab9.test
+	@echo $(TARGETDIR)/vtabA.test
+	@echo $(TARGETDIR)/vtabB.test
+	@echo $(TARGETDIR)/vtabC.test
+	@echo $(TARGETDIR)/vtab_alter.test
+	@echo $(TARGETDIR)/vtab_err.test
+	@echo $(TARGETDIR)/vtab_shared.test
+	@echo $(TARGETDIR)/where.test
+	@echo $(TARGETDIR)/where2.test
+	@echo $(TARGETDIR)/where3.test
+	@echo $(TARGETDIR)/where4.test
+	@echo $(TARGETDIR)/where5.test
+	@echo $(TARGETDIR)/where6.test
+	@echo $(TARGETDIR)/zeroblob.test
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2007-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:
+# Meta information for sqlite3_securecopytestfiles
+#
+
+platform	win32
+makefile 	gnumake
+techstream	pds
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/sqlite3_securecopytestfiles.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,69 @@
+# Copyright (c) 2007-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:
+# Copy SQLITE3_SECURE test files
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	TARGETDIR=$(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/10286A82
+else
+	TARGETDIR=$(EPOCROOT)epoc32/data/z/private/10286A82
+
+endif
+
+SOURCEDIR = $(EXTENSION_ROOT)/../TEST/TCLSCRIPT
+
+$(TARGETDIR):
+	$(call createdir, "$@")
+
+COPYFILES :
+	$(call forcecopy,$(SOURCEDIR)/*.test,$(TARGETDIR)/)
+	$(call forcecopy,$(SOURCEDIR)/tester.tcl,$(TARGETDIR)/)
+
+	
+DO_NOTHING :
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+BLD : $(TARGETDIR) $(SOURCEDIR) COPYFILES
+
+CLEAN : 
+	$(call forceremove,$(TARGETDIR)/*.test)
+	$(call forceremove,$(TARGETDIR)/tester.tcl)
+	
+SAVESPACE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES : 
+	@echo $(TARGETDIR)/*.test
+	@echo $(TARGETDIR)/tester.tcl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for xml_sitestfiledist
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_sitestfiledist.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,131 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(OS), "Windows_NT")
+RMDIR := @rmdir 2>>nul
+else
+RMDIR := @rmdir
+endif
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	DEST_DIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/system/xmltest/serviceindication
+else
+	DEST_DIR = $(EPOCROOT)epoc32/data/z/system/xmltest/serviceindication
+endif
+
+SOURCE_DIR = $(EXTENSION_ROOT)/../test/rtest/data/serviceindication
+
+# Ensure we have a clean canvas - this also avoids us having to specify
+# switches to commands that are not recognised across platforms.
+CLEAN_DEST :
+	$(call createdir,$(DEST_DIR))
+
+MAKE_DIRS :
+	$(call createdir,$(DEST_DIR)/1.0)
+	$(call createdir,$(DEST_DIR)/corrupt)
+
+COPYFILES : CLEAN_DEST MAKE_DIRS
+	$(CP) $(call slash2generic, $(SOURCE_DIR)/1.0/*.bdy $(DEST_DIR)/1.0/*.bdy)
+	$(CP) $(call slash2generic, $(SOURCE_DIR)/corrupt/*.bdy $(DEST_DIR)/corrupt/*.bdy)
+
+DO_NOTHING:
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+RESOURCE : COPYFILES
+
+CLEAN : 
+	$(call createdir,$(DEST_DIR))
+
+BLD : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES :
+	@echo $(DEST_DIR)/1.0/si_invalid_cdate.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_act_multiple.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_act_multiple2.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_cd_day.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_cd_hour.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_cd_len.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_cd_min.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_cd_sec.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_cd_year.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_ind.bdy
+	@echo $(DEST_DIR)/1.0/si_inv_msg_emp.bdy
+	@echo $(DEST_DIR)/1.0/si_valid.bdy
+	@echo $(DEST_DIR)/1.0/si_valid_chi.bdy
+	@echo $(DEST_DIR)/1.0/si_val_act_de.bdy
+	@echo $(DEST_DIR)/1.0/si_val_act_no.bdy
+	@echo $(DEST_DIR)/1.0/si_val_act_sh.bdy
+	@echo $(DEST_DIR)/1.0/si_val_act_sl.bdy
+	@echo $(DEST_DIR)/1.0/si_val_act_sm.bdy
+	@echo $(DEST_DIR)/1.0/si_val_act_sn.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_iso_8859_1.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_iso_8859_2.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_iso_8859_3.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_iso_8859_4.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_iso_8859_5.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_iso_8859_6.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_iso_8859_7.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_iso_8859_8.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_iso_8859_9.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_shift_JIS.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_us_ascii.bdy
+	@echo $(DEST_DIR)/1.0/si_val_char_utf_8.bdy
+	@echo $(DEST_DIR)/1.0/si_val_expired.bdy
+	@echo $(DEST_DIR)/1.0/si_val_exp_null.bdy
+	@echo $(DEST_DIR)/1.0/si_val_ind_opq.bdy
+	@echo $(DEST_DIR)/1.0/si_val_msg_emp_indatt.bdy
+	@echo $(DEST_DIR)/1.0/si_val_no_cd.bdy
+	@echo $(DEST_DIR)/1.0/si_val_no_exp.bdy
+	@echo $(DEST_DIR)/1.0/si_val_only_href.bdy
+	@echo $(DEST_DIR)/1.0/si_val_sender_encoding.bdy
+	@echo $(DEST_DIR)/1.0/si_val_wbx_ver_10.bdy
+	@echo $(DEST_DIR)/1.0/si_val_wbx_ver_11.bdy
+	@echo $(DEST_DIR)/1.0/si_val_wbx_ver_12.bdy
+	@echo $(DEST_DIR)/1.0/si_val_wbx_ver_13.bdy
+	@echo $(DEST_DIR)/corrupt/si_inv_act_undf.bdy
+	@echo $(DEST_DIR)/corrupt/si_inv_cd_token.bdy
+	@echo $(DEST_DIR)/corrupt/si_inv_cd_type.bdy
+	@echo $(DEST_DIR)/corrupt/si_inv_char.bdy
+	@echo $(DEST_DIR)/corrupt/si_inv_hrf_ter.bdy
+	@echo $(DEST_DIR)/corrupt/si_inv_msg_emp2.bdy
+	@echo $(DEST_DIR)/corrupt/si_inv_msg_ter.bdy
+	@echo $(DEST_DIR)/corrupt/si_inv_msg_ter2.bdy
+	@echo $(DEST_DIR)/corrupt/si_val_wbx_ver_14.bdy
+	@echo $(DEST_DIR)/corrupt/si_val_wbx_ver_30.bdy
+	@echo $(DEST_DIR)/corrupt/si_val_wbx_ver_FF.bdy
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for xml_stringdictionary00tagtable use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_stringdictionary00tagtable.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,57 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+BUILD_DIR = $(EPOCROOT)epoc32/build/generated/xml
+
+GENERATED_FILES = $(BUILD_DIR)/t_stringdictionary00tagtable.cpp
+
+$(BUILD_DIR)/t_stringdictionary00tagtable.cpp : $(EXTENSION_ROOT)/../test/rtest/tsrc/t_stringdictionary00tagtable.st
+	$(call createdir,$(BUILD_DIR))
+	@perl $(EPOCROOT)epoc32/tools/ecopyfile.pl $(EXTENSION_ROOT)/../test/rtest/tsrc/t_stringdictionary00tagtable.st $(BUILD_DIR)$/t_stringdictionary00tagtable.st
+	@perl $(EPOCROOT)epoc32/tools/stringtable.pl $(BUILD_DIR)/t_stringdictionary00tagtable.st 
+
+DO_NOTHING:
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : $(GENERATED_FILES)
+
+BLD : MAKMAKE
+
+SAVESPACE : MAKMAKE
+
+CLEAN : 
+	$(call createdir,$(BUILD_DIR))
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES : 
+	@echo $(GENERATED_FILES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for xml_syncmltestfiledist
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_syncmltestfiledist.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,357 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(OS), "Windows_NT")
+RMDIR := @rmdir 2>>nul
+else
+RMDIR := @rmdir
+endif
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	DEST_DIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/system/xmltest/syncml
+else
+	DEST_DIR = $(EPOCROOT)epoc32/data/z/system/xmltest/syncml
+endif
+
+SOURCE_DIR = $(EXTENSION_ROOT)/../test/rtest/data/syncml
+
+# Ensure we have a clean canvas - this also avoids us having to specify
+# switches to commands that are not recognised across platforms.
+CLEAN_DEST :
+	$(call createdir,$(DEST_DIR))
+
+MAKE_DIRS :
+	$(call createdir,$(DEST_DIR)/1.1/add-to-client)
+	$(call createdir,$(DEST_DIR)/1.1/add-to-server)
+	$(call createdir,$(DEST_DIR)/1.1/Atomic)
+	$(call createdir,$(DEST_DIR)/1.1/AuthBasicFail)
+	$(call createdir,$(DEST_DIR)/1.1/AuthBasicFailFirst)
+	$(call createdir,$(DEST_DIR)/1.1/AuthMD5Fail)
+	$(call createdir,$(DEST_DIR)/1.1/AuthMD5FailFirst)
+	$(call createdir,$(DEST_DIR)/1.1/client-large)
+	$(call createdir,$(DEST_DIR)/1.1/client-large-multiple)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAdd)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAlertDisplay)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAlertMultiChoice)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAlertSingleChoice)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAlertTextInput)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAlertUserAccept)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAlertUserReject)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAtomic)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAtomicAlertUserAccept)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAtomicAlertUserReject)
+	$(call createdir,$(DEST_DIR)/1.1/DevManAtomicFail)
+	$(call createdir,$(DEST_DIR)/1.1/DevManDelete)
+	$(call createdir,$(DEST_DIR)/1.1/DevManGet)
+	$(call createdir,$(DEST_DIR)/1.1/DevManLargeObjectAdd)
+	$(call createdir,$(DEST_DIR)/1.1/DevManLargeObjectGet)
+	$(call createdir,$(DEST_DIR)/1.1/DevManReplace)
+	$(call createdir,$(DEST_DIR)/1.1/DevManSequence)
+	$(call createdir,$(DEST_DIR)/1.1/DevManSequenceAlertUserAccept)
+	$(call createdir,$(DEST_DIR)/1.1/DevManSequenceAlertUserReject)
+	$(call createdir,$(DEST_DIR)/1.1/DevManSequenceFail)
+	$(call createdir,$(DEST_DIR)/1.1/DevManSimple)
+	$(call createdir,$(DEST_DIR)/1.1/Large-object-from-client)
+	$(call createdir,$(DEST_DIR)/1.1/Large-object-from-server)
+	$(call createdir,$(DEST_DIR)/1.1/Large-object-from-server2)
+	$(call createdir,$(DEST_DIR)/1.1/Multiple-Db-Sync)
+	$(call createdir,$(DEST_DIR)/1.1/One-way-client-refresh-sync)
+	$(call createdir,$(DEST_DIR)/1.1/One-way-client-sync)
+	$(call createdir,$(DEST_DIR)/1.1/One-way-server-refresh-sync)
+	$(call createdir,$(DEST_DIR)/1.1/One-way-server-sync)
+	$(call createdir,$(DEST_DIR)/1.1/Pref-Tx-Rx)
+	$(call createdir,$(DEST_DIR)/1.1/server-busy)
+	$(call createdir,$(DEST_DIR)/1.1/server-large)
+	$(call createdir,$(DEST_DIR)/1.1/server-large-multiple)
+	$(call createdir,$(DEST_DIR)/1.1/slow-sync)
+	$(call createdir,$(DEST_DIR)/1.1/two-way-add)
+	$(call createdir,$(DEST_DIR)/1.1/two-way-delete)
+	$(call createdir,$(DEST_DIR)/1.1/two-way-replace)
+	$(call createdir,$(DEST_DIR)/1.1/two-way-sync)
+	$(call createdir,$(DEST_DIR)/1.2/defects)
+	$(call createdir,$(DEST_DIR)/unknown)
+
+
+COPYFILES : CLEAN_DEST MAKE_DIRS
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/add-to-client/*.xml $(DEST_DIR)/1.1/add-to-client/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/add-to-server/*.xml $(DEST_DIR)/1.1/add-to-server/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/atomic/*.xml $(DEST_DIR)/1.1/Atomic/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/authbasicfail/*.xml $(DEST_DIR)/1.1/AuthBasicFail/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/authbasicfailfirst/*.xml $(DEST_DIR)/1.1/AuthBasicFailFirst/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/authmd5fail/*.xml $(DEST_DIR)/1.1/AuthMD5Fail/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/authmd5failfirst/*.xml $(DEST_DIR)/1.1/AuthMD5FailFirst/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/client-large/*.xml $(DEST_DIR)/1.1/client-large/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/client-large-multiple/*.xml $(DEST_DIR)/1.1/client-large-multiple/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanadd/*.xml $(DEST_DIR)/1.1/DevManAdd/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertdisplay/*.xml $(DEST_DIR)/1.1/DevManAlertDisplay/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertmultichoice/*.xml $(DEST_DIR)/1.1/DevManAlertMultiChoice/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertsinglechoice/*.xml $(DEST_DIR)/1.1/DevManAlertSingleChoice/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalerttextinput/*.xml $(DEST_DIR)/1.1/DevManAlertTextInput/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertuseraccept/*.xml $(DEST_DIR)/1.1/DevManAlertUserAccept/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertuserreject/*.xml $(DEST_DIR)/1.1/DevManAlertUserReject/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanatomic/*.xml $(DEST_DIR)/1.1/DevManAtomic/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanatomicalertuseraccept/*.xml $(DEST_DIR)/1.1/DevManAtomicAlertUserAccept/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanatomicalertuserreject/*.xml $(DEST_DIR)/1.1/DevManAtomicAlertUserReject/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanatomicfail/*.xml $(DEST_DIR)/1.1/DevManAtomicFail/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmandelete/*.xml $(DEST_DIR)/1.1/DevManDelete/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanget/*.xml $(DEST_DIR)/1.1/DevManGet/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanlargeobjectadd/*.xml $(DEST_DIR)/1.1/DevManLargeObjectAdd/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanlargeobjectget/*.xml $(DEST_DIR)/1.1/DevManLargeObjectGet/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanreplace/*.xml $(DEST_DIR)/1.1/DevManReplace/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansequence/*.xml $(DEST_DIR)/1.1/DevManSequence/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansequencealertuseraccept/*.xml $(DEST_DIR)/1.1/DevManSequenceAlertUserAccept/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansequencealertuserreject/*.xml $(DEST_DIR)/1.1/DevManSequenceAlertUserReject/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansequencefail/*.xml $(DEST_DIR)/1.1/DevManSequenceFail/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansimple/*.xml $(DEST_DIR)/1.1/DevManSimple/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/large-object-from-client/*.xml $(DEST_DIR)/1.1/Large-object-from-client/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/large-object-from-server/*.xml $(DEST_DIR)/1.1/Large-object-from-server/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/large-object-from-server2/*.xml $(DEST_DIR)/1.1/Large-object-from-server2/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/multiple-db-sync/*.xml $(DEST_DIR)/1.1/Multiple-Db-Sync/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/one-way-client-refresh-sync/*.xml $(DEST_DIR)/1.1/One-way-client-refresh-sync/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/one-way-client-sync/*.xml $(DEST_DIR)/1.1/One-way-client-sync/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/one-way-server-refresh-sync/*.xml $(DEST_DIR)/1.1/One-way-server-refresh-sync/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/one-way-server-sync/*.xml $(DEST_DIR)/1.1/One-way-server-sync/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/pref-tx-rx/*.xml $(DEST_DIR)/1.1/Pref-Tx-Rx/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/server-busy/*.xml $(DEST_DIR)/1.1/server-busy/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/server-large/*.xml $(DEST_DIR)/1.1/server-large/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/server-large-multiple/*.xml $(DEST_DIR)/1.1/server-large-multiple/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/slow-sync/*.xml $(DEST_DIR)/1.1/slow-sync/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/two-way-add/*.xml $(DEST_DIR)/1.1/two-way-add/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/two-way-delete/*.xml $(DEST_DIR)/1.1/two-way-delete/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/two-way-replace/*.xml $(DEST_DIR)/1.1/two-way-replace/*.xml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/two-way-sync/*.xml $(DEST_DIR)/1.1/two-way-sync/*.xml)
+
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/add-to-client/*.wbxml $(DEST_DIR)/1.1/add-to-client/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/add-to-server/*.wbxml $(DEST_DIR)/1.1/add-to-server/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/atomic/*.wbxml $(DEST_DIR)/1.1/Atomic/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/authbasicfail/*.wbxml $(DEST_DIR)/1.1/AuthBasicFail/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/authbasicfailfirst/*.wbxml $(DEST_DIR)/1.1/AuthBasicFailFirst/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)$/1.1$/authmd5fail$/*.wbxml $(DEST_DIR)$/1.1$/AuthMD5Fail$/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/authmd5failfirst/*.wbxml $(DEST_DIR)/1.1/AuthMD5FailFirst/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/client-large/*.wbxml $(DEST_DIR)/1.1/client-large/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/client-large-multiple/*.wbxml $(DEST_DIR)/1.1/client-large-multiple/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanadd/*.wbxml $(DEST_DIR)/1.1/DevManAdd/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertdisplay/*.wbxml $(DEST_DIR)/1.1/DevManAlertDisplay/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertmultichoice/*.wbxml $(DEST_DIR)/1.1/DevManAlertMultiChoice/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertsinglechoice/*.wbxml $(DEST_DIR)/1.1/DevManAlertSingleChoice/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalerttextinput/*.wbxml $(DEST_DIR)/1.1/DevManAlertTextInput/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertuseraccept/*.wbxml $(DEST_DIR)/1.1/DevManAlertUserAccept/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanalertuserreject/*.wbxml $(DEST_DIR)/1.1/DevManAlertUserReject/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanatomic/*.wbxml $(DEST_DIR)/1.1/DevManAtomic/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanatomicalertuseraccept/*.wbxml $(DEST_DIR)/1.1/DevManAtomicAlertUserAccept/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanatomicalertuserreject/*.wbxml $(DEST_DIR)/1.1/DevManAtomicAlertUserReject/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanatomicfail/*.wbxml $(DEST_DIR)/1.1/DevManAtomicFail/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmandelete/*.wbxml $(DEST_DIR)/1.1/DevManDelete/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanget/*.wbxml $(DEST_DIR)/1.1/DevManGet/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanlargeobjectadd/*.wbxml $(DEST_DIR)/1.1/DevManLargeObjectAdd/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanlargeobjectget/*.wbxml $(DEST_DIR)/1.1/DevManLargeObjectGet/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmanreplace/*.wbxml $(DEST_DIR)/1.1/DevManReplace/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansequence/*.wbxml $(DEST_DIR)/1.1/DevManSequence/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansequencealertuseraccept/*.wbxml $(DEST_DIR)/1.1/DevManSequenceAlertUserAccept/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansequencealertuserreject/*.wbxml $(DEST_DIR)/1.1/DevManSequenceAlertUserReject/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansequencefail/*.wbxml $(DEST_DIR)/1.1/DevManSequenceFail/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/devmansimple/*.wbxml	 $(DEST_DIR)/1.1/DevManSimple/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/large-object-from-client/*.wbxml $(DEST_DIR)/1.1/Large-object-from-client/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/large-object-from-server/*.wbxml $(DEST_DIR)/1.1/Large-object-from-server/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/large-object-from-server2/*.wbxml $(DEST_DIR)/1.1/Large-object-from-server2/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/multiple-db-sync/*.wbxml $(DEST_DIR)/1.1/Multiple-Db-Sync/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/one-way-client-refresh-sync/*.wbxml $(DEST_DIR)/1.1/One-way-client-refresh-sync/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/one-way-client-sync/*.wbxml $(DEST_DIR)/1.1/One-way-client-sync/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/one-way-server-refresh-sync/*.wbxml $(DEST_DIR)/1.1/One-way-server-refresh-sync/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/one-way-server-sync/*.wbxml $(DEST_DIR)/1.1/One-way-server-sync/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/pref-tx-rx/*.wbxml $(DEST_DIR)/1.1/Pref-Tx-Rx/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/server-busy/*.wbxml $(DEST_DIR)/1.1/server-busy/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/server-large/*.wbxml $(DEST_DIR)/1.1/server-large/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/server-large-multiple/*.wbxml $(DEST_DIR)/1.1/server-large-multiple/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/slow-sync/*.wbxml $(DEST_DIR)/1.1/slow-sync/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/two-way-add/*.wbxml $(DEST_DIR)/1.1/two-way-add/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/two-way-delete/*.wbxml $(DEST_DIR)/1.1/two-way-delete/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/two-way-replace/*.wbxml $(DEST_DIR)/1.1/two-way-replace/*.wbxml)
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.1/two-way-sync/*.wbxml $(DEST_DIR)/1.1/two-way-sync/*.wbxml)
+
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/1.2/defects/*.wbxml $(DEST_DIR)/1.2/defects/*.wbxml)
+	
+	$(CP) $(call slash2generic,$(SOURCE_DIR)/unknown/*.wbxml $(DEST_DIR)/unknown/*.wbxml)
+
+DO_NOTHING:
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+RESOURCE : COPYFILES
+
+CLEAN : 
+	$(call createdir,$(DEST_DIR))
+
+BLD : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES :
+	@echo $(DEST_DIR)/1.1/add-to-client/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/add-to-client/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/add-to-client/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/add-to-server/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/add-to-server/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/add-to-server/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/atomic/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/atomic/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/atomic/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/authbasicfail/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/authbasicfail/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/authbasicfail/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/authbasicfailfirst/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/authbasicfailfirst/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/authbasicfailfirst/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/authmd5fail/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/authmd5fail/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/authmd5fail/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/authmd5failfirst/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/authmd5failfirst/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/authmd5failfirst/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/client-large/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/client-large/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/client-large/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/client-large/FromServer4.wbxml
+	@echo $(DEST_DIR)/1.1/client-large-multiple/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/client-large-multiple/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/client-large-multiple/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/client-large-multiple/FromServer4.wbxml
+	@echo $(DEST_DIR)/1.1/devmanadd/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanadd/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertdisplay/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertdisplay/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertmultichoice/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertmultichoice/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertsinglechoice/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertsinglechoice/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalerttextinput/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalerttextinput/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertuseraccept/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertuseraccept/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertuserreject/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanalertuserreject/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanatomic/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanatomic/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanatomicAlertUserAccept/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanatomicAlertUserAccept/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanatomicAlertUserReject/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanatomicAlertUserReject/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanatomicFail/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanatomicFail/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmandelete/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmandelete/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanget/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanget/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanlargeobjectadd/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanlargeobjectadd/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanlargeobjectadd/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/devmanlargeobjectadd/FromServer4.wbxml
+	@echo $(DEST_DIR)/1.1/devmanlargeobjectget/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanlargeobjectget/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmanlargeobjectget/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/devmanlargeobjectget/FromServer4.wbxml
+	@echo $(DEST_DIR)/1.1/devmanlargeobjectget/FromServer5.wbxml
+	@echo $(DEST_DIR)/1.1/devmanreplace/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmanreplace/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmansequence/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmansequence/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmansequencealertuseraccept/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmansequencealertuseraccept/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmansequencealertuserreject/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmansequencealertuserreject/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmansequencefail/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/devmansequencefail/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/devmansimple/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-client/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-client/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-client/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-client/FromServer4.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-server/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-server/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-server/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-server/FromServer4.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-server2/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-server2/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-server2/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/large-object-from-server2/FromServer4.wbxml
+	@echo $(DEST_DIR)/1.1/multiple-db-sync/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/multiple-db-sync/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/multiple-db-sync/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-client-refresh-sync/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-client-refresh-sync/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-client-refresh-sync/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-client-sync/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-client-sync/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-client-sync/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-server-refresh-sync/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-server-refresh-sync/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-server-refresh-sync/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-server-sync/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-server-sync/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/one-way-server-sync/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/pref-tx-rx/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/pref-tx-rx/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/pref-tx-rx/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/server-busy/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/server-large/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/server-large/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/server-large/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/server-large/FromServer4.wbxml
+	@echo $(DEST_DIR)/1.1/server-large-multiple/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/server-large-multiple/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/server-large-multiple/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/server-large-multiple/FromServer4.wbxml
+	@echo $(DEST_DIR)/1.1/server-large-multiple/FromServer5.wbxml
+	@echo $(DEST_DIR)/1.1/slow-sync/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/slow-sync/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/slow-sync/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-add/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-add/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-add/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-delete/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-delete/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-delete/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-replace/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-replace/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-replace/FromServer3.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-sync/FromServer1.wbxml
+	@echo $(DEST_DIR)/1.1/two-way-sync/FromServer2.wbxml
+	@echo $(DEST_DIR)/1.2/defects/DEF063979.wbxml
+	@echo $(DEST_DIR)/1.2/defects/DEF066185.wbxml
+	@echo $(DEST_DIR)/1.2/defects/DEF078987_1.wbxml
+	@echo $(DEST_DIR)/1.2/defects/DEF078987_2.wbxml
+	@echo $(DEST_DIR)/1.2/defects/DEF078668.wbxml
+	@echo $(DEST_DIR)/unknown/DEF078987_3.wbxml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for xml_wmltestfiledist
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_wmltestfiledist.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,94 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(OS), "Windows_NT")
+RMDIR := @rmdir 2>>nul
+else
+RMDIR := @rmdir
+endif
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	DEST_DIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/system/xmltest/wml
+else
+	DEST_DIR = $(EPOCROOT)epoc32/data/z/system/xmltest/wml
+endif
+
+SOURCE_DIR = $(EXTENSION_ROOT)/../test/rtest/data/Wml
+
+# Ensure we have a clean canvas - this also avoids us having to specify
+# switches to commands that are not recognised across platforms.
+CLEAN_DEST :
+	$(call createdir,$(DEST_DIR))
+
+MAKE_DIRS :
+	$(call createdir,$(DEST_DIR)/1.1)
+	$(call createdir,$(DEST_DIR)/codepage)
+	$(call createdir,$(DEST_DIR)/corrupt)
+	$(call createdir,$(DEST_DIR)/unknown)
+
+COPYFILES : CLEAN_DEST MAKE_DIRS
+	$(CP) $(call slash2generic, $(SOURCE_DIR)/1.1/*.wmlc $(DEST_DIR)/1.1/*.wmlc)
+	$(CP) $(call slash2generic, $(SOURCE_DIR)/codepage/*.wmlc $(DEST_DIR)/codepage/*.wmlc)
+	$(CP) $(call slash2generic, $(SOURCE_DIR)/corrupt/*.wmlc $(DEST_DIR)/corrupt/*.wmlc)
+	$(CP) $(call slash2generic, $(SOURCE_DIR)/unknown/*.wmlc $(DEST_DIR)/unknown/*.wmlc)	
+
+DO_NOTHING:
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+RESOURCE : COPYFILES
+
+CLEAN :
+	$(call createdir,$(DEST_DIR))
+
+BLD : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES :
+	@echo $(DEST_DIR)/1.1/AllElements.wmlc
+	@echo $(DEST_DIR)/1.1/CharEntities.wmlc
+	@echo $(DEST_DIR)/1.1/data.wmlc
+	@echo $(DEST_DIR)/1.1/http___www.bbc.co.uk_mobile_sportheads1.wmlc
+	@echo $(DEST_DIR)/1.1/mob.wmlc
+	@echo $(DEST_DIR)/1.1/Variables.wmlc
+	@echo $(DEST_DIR)/1.1/wireless_char.wmlc
+	@echo $(DEST_DIR)/codepage/wml_data_attr_copepage_255.wmlc
+	@echo $(DEST_DIR)/corrupt/CorruptAttrVal_mob.wmlc
+	@echo $(DEST_DIR)/corrupt/CorruptAttr_mob.wmlc
+	@echo $(DEST_DIR)/corrupt/CorruptTag_AllElements.wmlc
+	@echo $(DEST_DIR)/corrupt/NonNullTermInlineStr.wmlc
+	@echo $(DEST_DIR)/unknown/UnknownPubId_AllElements.wmlc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for xml_xmlcmatchdatapostbuild use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/test/xml_xmlcmatchdatapostbuild.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,85 @@
+# Copyright (c) 2007-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:
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(OS), "Windows_NT")
+	RMDIR := @rmdir 2>>nul
+	@echo $(OS))
+else
+	RMDIR := @rmdir
+endif
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	TARGETDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/xmlramonly
+	SOURCEDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+	SOURCEDIR2 = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/resource/plugins
+else
+	TARGETDIR = $(EPOCROOT)epoc32/data/z/xmlramonly
+	SOURCEDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+	SOURCEDIR2 = $(EPOCROOT)epoc32/data/z/resource/plugins
+endif
+
+# Ensure we have a clean canvas - this also avoids us having to specify
+# switches to commands that are not recognised across platforms.
+CLEAN_DEST :
+	$(call createdir,$(TARGETDIR))
+
+$(TARGETDIR) : 
+	$(call createdir,"$@")
+
+COPYFILES : CLEAN_DEST $(TARGETDIR)
+	$(CP) $(call slash2generic,$(SOURCEDIR)/tu_xmlramparserplugins.dll  $(TARGETDIR)/tu_xmlramparserplugins.dll)
+	$(CP) $(call slash2generic,$(SOURCEDIR2)/tu_xmlramparserplugins.RSC  $(TARGETDIR)/tu_xmlramparserplugins.rsc)
+	-$(ERASE) $(call slash2generic,$(SOURCEDIR)/tu_xmlramparserplugins.dll)
+	-$(ERASE) $(call slash2generic,$(SOURCEDIR2)/tu_xmlramparserplugins.rsc)
+
+DO_NOTHING:
+	@echo do nothing
+
+#
+# The targets invoked by bld...
+#
+
+MAKMAKE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+CLEAN :
+	$(call createdir,$(TARGETDIR))
+
+ifeq ($(PLATFORM), GCCXML)
+BLD : DO_NOTHING
+else
+BLD : COPYFILES
+endif
+
+SAVESPACE : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+RELEASABLES :
+	@echo $(TARGETDIR)/tu_xmlramparserplugins.dll
+	@echo $(TARGETDIR)/tu_xmlramparserplugins.rsc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/word_template.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2007-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:
+# template.meta
+# Meta information for template use
+#
+
+platform	win32
+makefile 	gnumake
+techstream	syslibs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/syslibs/word_template.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,68 @@
+# Copyright (c) 2007-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:
+# template.mk
+# Build Word template files
+# 
+#
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+ifeq ($(findstring WINS,$(PLATFORM)),WINS)
+	TARGETDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/z/private/10003a64
+else
+	# The IBY file uses the template file stored here when building ROMs
+	TARGETDIR = $(EPOCROOT)epoc32/data/z/private/10003a64
+endif
+
+TEMPLATES = $(TARGETDIR)/blank
+
+$(TARGETDIR) :
+	$(call createdir, "$@")
+
+# Well, actually just copy the prebuilt ones for now...
+#  - deleting existing file first (in case it's read-only)
+
+TEMPLATESRCDIR = $(EXTENSION_ROOT)/../utemplat
+
+$(TEMPLATES) : $(TEMPLATESRCDIR)$/BLANK.UK $(TARGETDIR)
+	$(call forceremove,$@)
+	$(call forcecopy,$(TEMPLATESRCDIR)/BLANK.UK,"$@")
+DO_NOTHING :
+	@echo do nothing
+
+# The targets invoked by bld...
+
+MAKMAKE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+SAVESPACE : BLD
+
+BLD : $(TARGETDIR) $(TEMPLATES)
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : DO_NOTHING
+
+CLEAN :
+	-$(ERASE) $(TEMPLATES)
+
+RELEASABLES :
+	@echo $(TEMPLATES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/techview/uiklaf_resource.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for Uiklad resource generation
+#
+
+platform	win32
+makefile 	gnumake
+techstream	techview
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/techview/uiklaf_resource.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,63 @@
+# Copyright (c) 2006-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:
+# Extension Makefile to check uiklaf generated rsg files against the generic exported uiklafgt rsg files.
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+#----------------------------------------------------------------
+# Check whether the associated RSG header
+# files are identical to those already exported by uiklafGT
+#
+#
+
+INCDIR = $(EPOCROOT)epoc32/include
+INCUIKLAFDIR = $(EPOCROOT)epoc32/include/uiklafgt
+
+DO_NOTHING :
+
+#
+# The targets invoked by abld...
+#
+
+MAKMAKE : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+SAVESPACE : DO_NOTHING
+
+BLD : DO_NOTHING
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+FINAL : 
+	perl -w $(EXTENSION_ROOT)/rsg_check.pl $(INCDIR)/eikcore.rsg $(INCUIKLAFDIR)/eikcore.rsg
+	perl -w $(EXTENSION_ROOT)/rsg_check.pl $(INCDIR)/eikpriv.rsg $(INCUIKLAFDIR)/eikpriv.rsg
+
+
+ROMFILE : DO_NOTHING
+
+CLEAN : DO_NOTHING
+
+RELEASABLES : DO_NOTHING
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/ant_launch.flm	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,43 @@
+# Copyright (c) 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:
+#
+
+JAVABLDDIR := $(EPOCBLD)/$(PLATFORM_PATH)/$(CFG_PATH)
+RELDIR := $(EPOCROOT)/epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+ANTLIBCMD := $(subst \,/,$(ANT_HOME))/bin/ant -lib $(EPOCROOT)/epoc32/tools/java
+ANTBLDFILE := $(TO_BLDINF)/$(BUILD_XML)
+
+JAVAMARKER := $(JAVABLDDIR)/javabld.$(BUILD_XML).done
+
+# Build
+ANTCMD_BUILD := $(ANTLIBCMD) -logger com.symbian.ant.ScanLogger -buildfile $(ANTBLDFILE) -Depoc.build=$(JAVABLDDIR) -Depoc.rel=$(RELDIR) -Dtools.rel=$(EPOCROOT)/epoc32/tools ; $(GNUTOUCH) $(JAVAMARKER)
+
+TARGET :: $(JAVAMARKER)
+
+$(call raptor_recipe,ant_build,$(JAVAMARKER),$(ANTBLDFILE) $(JAVABLDDIR),$(ANTCMD_BUILD))
+
+# Clean
+ANTCMD_CLEAN := $(ANTLIBCMD) -logger com.symbian.ant.ScanLogger -buildfile $(ANTBLDFILE) -Depoc.build=$(JAVABLDDIR) -Depoc.rel=$(RELDIR) -Dtools.rel=$(EPOCROOT)/epoc32/tools clean ; $(GNURM) -f $(JAVAMARKER)
+
+$(call raptor_phony_recipe,ant_clean,CLEAN,,$(ANTCMD_CLEAN))
+
+# sbs --what
+JAVARELEASABLES := $(shell $(ANTLIBCMD) -logger com.symbian.ant.AbldWhatLogger -quiet -buildfile $(ANTBLDFILE) -Depoc.rel=$(RELDIR) -Dtools.rel=$(EPOCROOT)/epoc32/tools what)
+
+$(eval $(call whatmacro,$(JAVARELEASABLES),USERFLM))
+
+# Create directory
+CREATABLEPATHS := $(JAVABLDDIR)
+$(call makepath,$(CREATABLEPATHS))
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/ant_launch.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for Apache Ant launcher
+#
+
+platform	tools
+makefile 	gnumake
+techstream	developertools
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/ant_launch.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,81 @@
+# Copyright (c) 1999-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:
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+EXTENSION_ROOT:=$(lastword $(subst :, ,$(EXTENSION_ROOT)))
+BUILDDIR = $(EPOCROOT)epoc32/build$(EXTENSION_ROOT)/$(PLATFORM_PATH)/$(CFG_PATH)
+RELDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)
+LIBDIR = $(ANT_HOME)/bin/ant -lib $(EPOCROOT)epoc32/tools/java
+BLDFILE = -buildfile $(EXTENSION_ROOT)/${build_xml}
+
+BUILD = $(BUILDDIR)/${notdir ${build_xml}}_${target}
+HAS_BUILT = ${wildcard ${BUILD}}
+
+DO_NOTHING :
+	@echo Nothing to do
+
+$(BUILDDIR):
+	-$(MKDIR) $(call slash2generic,$$@)
+
+SAVESPACE : BLD	
+MAKMAKE FREEZE LIB CLEANLIB RESOURCE FINAL : DO_NOTHING
+
+
+## Find configuration
+ifeq ($(CFG),REL)
+RELEASE = REL
+endif
+ifeq ($(CFG),UREL)
+RELEASE = UREL
+endif
+
+## Build target
+ifeq ($(CFG),$(RELEASE))
+ifeq ($(strip $(HAS_BUILT)), )
+
+BLD : $(EXTENSION_ROOT)/${build_xml} $(BUILDDIR)
+	$(LIBDIR) -logger com.symbian.ant.ScanLogger $(BLDFILE) -Depoc.build=$(BUILDDIR) -Depoc.rel=$(RELDIR) -Dtools.rel=$(EPOCROOT)tools ${args} ${target}
+	echo $(BUILDDIR)/${build_xml} ${target} > ${BUILD}
+else
+BLD : ${BUILD}
+	@echo The java component ${target} has already been built. Clean to rebuild.
+endif
+else
+BLD : DO_NOTHING
+endif
+
+
+## Allow for a abld reallyclean
+ifeq ($(CFG),$(RELEASE))
+ifneq ($(strip $(HAS_BUILT)), )
+
+CLEAN : ${BUILD}
+	$(LIBDIR) -logger com.symbian.ant.ScanLogger $(BLDFILE) -Depoc.build=$(BUILDDIR) -Depoc.rel=$(RELDIR) -Dtools.rel=$(EPOCROOT)tools clean 
+	${RM} ${BUILD}
+else
+CLEAN : DO_NOTHING
+endif
+else
+CLEAN : DO_NOTHING
+endif
+
+
+## Allow for a abld -what
+RELEASABLES :
+	$(LIBDIR) -logger com.symbian.ant.AbldWhatLogger -quiet $(BLDFILE) -Depoc.rel=$(RELDIR) -Dtools.rel=$(EPOCROOT)tools what
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/ant_launch.xml	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?> 
+<build xmlns="http://symbian.com/xml/build" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symbian.com/xml/build build/2_0.xsd">
+
+  <!-- Extension interfaces : replacements for Template Extension Makefiles -->
+  <interface name="tools.ant_launch" extends="Symbian.UserFLM" flm="ant_launch.flm">
+    <param name="BUILD_XML" />
+  </interface>
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/apply_imgtools_variants.xml	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<build xmlns="http://symbian.com/xml/build"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://symbian.com/xml/build build/2_0.xsd">
+ 
+	<var name="apply_mingw_libs">
+		<set name="LINKER_OPTIONS" value="-lwsock32" />
+	</var>
+  
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/bldex.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for stlport builds
+#
+
+platform	win32
+makefile 	gnumake
+techstream	tools
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/bldex.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,75 @@
+# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Generate some source files
+# Note that the YACC and LEX tools used expect to see Unix-style
+# path names and will hang horribly if given DOS pathnames
+# 
+#
+
+FIXSLASHES:=$(subst \,/,$(EPOCROOT))
+EPOCROOTABS:=$(patsubst %/,%,$(FIXSLASHES))
+EPOCROOT:=$(EPOCROOTABS)/
+
+YACC_VERSION:=$(EPOCROOT)epoc32/gcc/bin/bison
+LEX_VERSION:=$(EPOCROOT)epoc32/gcc/bin/flex
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+LEXSOURCE:=$(EXTENSION_ROOT)/$(LEXSOURCE)
+YACCSOURCE:=$(EXTENSION_ROOT)/$(YACCSOURCE)
+
+GENERATED_FILES= \
+	$(EPOCROOT)epoc32/build/rcomp/build/rcomp.cpp \
+	$(EPOCROOT)epoc32/build/rcomp/build/rcomp.hpp \
+	$(EPOCROOT)epoc32/build/rcomp/build/rcompl.cpp
+
+$(EPOCROOT)epoc32/build/rcomp/build/rcompl.cpp : $(LEXSOURCE)
+	$(call createdir,$(EPOCROOT)epoc32/build/rcomp/build)
+	$(LEX_VERSION) -t $< > $@
+
+$(EPOCROOT)epoc32/build/rcomp/build/rcomp.cpp $(EPOCROOT)epoc32/build/rcomp/build/rcomp.hpp : $(YACCSOURCE)
+	$(call createdir,$(EPOCROOT)epoc32/build/rcomp/build)
+	$(YACC_VERSION) -d -o $@ $<
+
+do_nothing:
+	
+
+#
+# The targets invoked by bld...
+#
+
+# Do the work in the MAKMAKE target, in the hope of getting the files
+# created in time to scan them in the processing of RCOMP.MMP
+
+MAKMAKE : $(GENERATED_FILES)
+
+BLD : MAKMAKE
+
+SAVESPACE : MAKMAKE
+
+CLEAN : 
+	$(call remove,$(GENERATED_FILES))
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+RESOURCE : do_nothing
+
+FINAL : do_nothing
+
+RELEASABLES : do_nothing
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/compsupp.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2008-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:
+# Meta information for the config extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	Tools
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/compsupp.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,43 @@
+# Copyright (c) 2008-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:
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+do_nothing:
+
+MAKMAKE : do_nothing
+
+FREEZE : do_nothing
+
+LIB :
+	unzip -o $(FILE) -d $(TODIR)
+
+CLEANLIB : do_nothing
+
+RESOURCE : do_nothing
+
+FINAL : do_nothing
+
+BLD : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+		@perl -S $(EPOCROOT)epoc32/tools/listzip.pl $(EPOCROOT)epoc32/release $(FILE)
+
+CLEAN : do_nothing
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/features.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for features file generation
+#
+
+platform	win32
+makefile 	gnumake
+techstream	tools
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/features.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,78 @@
+# Copyright (c) 2007-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:
+# This makefile template is used to generate header/iby/features.dat file
+# 
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+ifeq "$(CFG_PATH)" "rel"
+
+FEAT_TOOL := perl -S $(call slash2generic,features.pl)
+
+ifndef FEAT_DATABASE
+FEAT_DATABASE := $(EPOCROOT)epoc32/rom/include/featuredatabase.xml
+endif
+
+ifndef FEAT_HEADER_PATH
+FEAT_HEADER_PATH := $(EPOCROOT)epoc32/include
+endif
+
+ifndef FEAT_IBY_PATH
+FEAT_IBY_PATH := $(EPOCROOT)epoc32/rom/include
+endif
+
+ifndef FEAT_DAT_PATH
+FEAT_DAT_PATH := $(EPOCROOT)epoc32/data/config
+endif
+
+# Features tool will be invoked here
+ALL:
+	$(FEAT_TOOL) --datfile=$(FEAT_DAT_PATH) --hdrfile=$(FEAT_HEADER_PATH) --ibyfile=$(FEAT_IBY_PATH) $(FEAT_DATABASE)
+
+
+BLD SAVESPACE: ALL
+
+CLEAN :
+	-$(ERASE) $(call slash2generic,$(FEAT_HEADER_PATH)/featureuids.h)
+	-$(ERASE) $(call slash2generic,$(FEAT_IBY_PATH)/feature.iby)
+	-$(ERASE) $(call slash2generic,$(FEAT_DAT_PATH)/features.dat)
+
+RELEASABLES :
+	@echo $(FEAT_HEADER_PATH)/featureuids.h
+	@echo $(FEAT_IBY_PATH)/feature.iby
+	@echo $(FEAT_DAT_PATH)/features.dat
+	
+DO_NOTHING :
+	@echo do nothing
+	
+MAKMAKE : DO_NOTHING
+FREEZE : DO_NOTHING
+LIB : DO_NOTHING
+CLEANLIB : DO_NOTHING
+RESOURCE : DO_NOTHING
+FINAL : DO_NOTHING
+
+#if $(CFG_PATH) == "deb"
+else
+
+FINAL FREEZE LIB CLEANLIB RESOURCE RELEASABLES CLEAN BLD SAVESPACE MAKMAKE :
+
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/jni_ant_launch.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for Apache Ant launcher
+#
+
+platform	tools
+makefile 	gnumake
+techstream	developertools
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/jni_ant_launch.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,64 @@
+# Copyright (c) 1999-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:
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+# Get standard shell definitions
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+LETTERS:=a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+
+# Raptor includes the drive letter on paths - this makefile can't handle the drive letter
+# If we don't do this we get "multiple target patterns" errors in sbsv2
+TMPROOT:=$(strip $(foreach let,$(LETTERS),$(if $(findstring $(let):,$(EPOCROOT)),$(subst $(let):,,$(EPOCROOT)))))
+ifneq ($(TMPROOT),)
+	EPOCROOT:=$(TMPROOT)
+endif
+TMPROOT:=$(strip $(foreach let,$(LETTERS),$(if $(findstring $(let):,$(EXTENSION_ROOT)),$(subst $(let):,,$(EXTENSION_ROOT)))))
+ifneq ($(TMPROOT),)
+	EXTENSION_ROOT:=$(TMPROOT)
+endif
+
+
+BUILDDIR = $(EPOCROOT)epoc32/build/$(EXTENSION_ROOT)/$(PLATFORM_PATH)
+RELDIR = $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)
+LIBDIR = $(ANT_HOME)/bin/ant -lib $(EPOCROOT)epoc32/tools/java
+BLDFILE = -buildfile $(EXTENSION_ROOT)/build.xml
+
+BUILD = $(BUILDDIR)/${notdir ${build_xml}}_${target}
+HAS_BUILT = ${wildcard ${BUILD}}
+
+DO_NOTHING :
+	@echo Nothing to do
+
+SAVESPACE : BLD	
+MAKMAKE FREEZE CLEANLIB RESOURCE FINAL : DO_NOTHING
+
+BLD: DO_NOTHING
+
+LIB:
+	@$(call createdir,"$(BUILDDIR)")
+	$(LIBDIR) -logger com.symbian.ant.ScanLogger $(BLDFILE) -Depoc.build=$(BUILDDIR) -Depoc.rel=$(RELDIR) -Dtools.rel=$(EPOCROOT)tools ${args} ${target}
+	echo $(BUILDDIR)/${build_xml} ${target} > ${BUILD}	
+
+## Allow for a abld reallyclean
+CLEAN :
+	$(LIBDIR) -logger com.symbian.ant.ScanLogger $(BLDFILE) -Depoc.build=$(BUILDDIR) -Depoc.rel=$(RELDIR) -Dtools.rel=$(EPOCROOT)tools clean 
+
+## Allow for a abld -what
+RELEASABLES : 
+	$(LIBDIR) -logger com.symbian.ant.AbldWhatLogger -quiet $(BLDFILE) -Depoc.rel=$(RELDIR) -Dtools.rel=$(EPOCROOT)tools what
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/kif.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2007-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:
+# Meta information for Kit Information file generation
+#
+
+platform	win32
+makefile 	gnumake
+techstream	productcreationtools
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/kif.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,60 @@
+# Copyright (c) 2007-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:
+# Invoke genkif.pl to create the Kit Information File
+# 
+#
+
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+do_nothing :
+	
+
+#
+# The targets invoked by abld 
+#
+
+MAKMAKE : do_nothing
+
+RESOURCE : do_nothing
+
+SAVESPACE : BLD
+
+BLD : 
+ifeq ($(CFG),REL)
+	perl ${EPOCROOT}epoc32/tools/genkif.pl -o ${EPOCROOT}epoc32/data/kif.xml
+endif
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+FINAL : do_nothing
+
+CLEAN : 
+ifeq ($(CFG),REL)
+	$(call remove,${EPOCROOT}epoc32/data/kif.xml)
+endif
+
+RELEASABLES : 
+ifeq ($(CFG),REL)	
+	@echo ${EPOCROOT}epoc32/data/kif.xml	
+endif
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/py2exe.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2007-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:
+# Meta information for Python Py2exe
+#
+
+platform	tools tools2
+makefile 	gnumake
+techstream	productcreationtools
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/py2exe.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,39 @@
+# Copyright (c) 2007-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:
+#
+
+MAKMAKE :
+	@python $(EXTENSION_ROOT)/$(RAPTOR_SCRIPTS_LOC)$(SETUP_SCRIPT) py2exe $(EXTENSION_ROOT)/$(RAPTOR_SCRIPTS_LOC)$(ENTRY_POINT) $(EXTENSION_ROOT)/$(DIST_DIR)
+
+CLEAN :
+	@del $(subst /,\, $(wildcard $(EXTENSION_ROOT)\$(DIST_DIR)*.pyd))
+	@del $(subst /,\, $(EXTENSION_ROOT)\$(DIST_DIR)library.zip)
+	@del $(subst /,\, $(wildcard $(EXTENSION_ROOT)\$(DIST_DIR)MSVCR*.dll))
+	@del $(subst /,\, $(wildcard $(EXTENSION_ROOT)\$(DIST_DIR)python*.dll))
+	@del $(subst .py,.exe, $(subst /,\, $(EXTENSION_ROOT)\$(DIST_DIR)$(ENTRY_POINT)))
+	@del $(subst /,\, $(EXTENSION_ROOT)\$(DIST_DIR)w9xpopen.exe)
+
+RELEASABLES :
+	@echo $(subst /,\, $(wildcard $(EXTENSION_ROOT)\$(DIST_DIR)*.pyd))
+	@echo $(subst /,\, $(EXTENSION_ROOT)\$(DIST_DIR)library.zip)
+	@echo $(subst /,\, $(wildcard $(EXTENSION_ROOT)\$(DIST_DIR)MSVCR*.dll))
+	@echo $(subst /,\, $(wildcard $(EXTENSION_ROOT)\$(DIST_DIR)python*.dll))
+	@echo $(subst .py,.exe, $(subst /,\, $(EXTENSION_ROOT)\$(DIST_DIR)$(ENTRY_POINT)))
+	@echo $(subst /,\, $(EXTENSION_ROOT)\$(DIST_DIR)w9xpopen.exe)
+
+# Dummy target
+DO_NOTHING :
+	
+BLD LIB SAVESPACE FREEZE CLEANLIB RESOURCE FINAL : DO_NOTHING
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/raptor_linux_dist.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for stlport builds
+#
+
+platform	win32
+makefile 	gnumake
+techstream	tools
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/raptor_linux_dist.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,23 @@
+# Copyright (c) 2007-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:
+#
+
+MAKMAKE :
+	cd "$(subst /,\,$(EXTENSION_ROOT)/..)"; python python/sbs_dist.py $(RAPTOR_DIST) $(RAPTOR_DIST_INCLUDE_DIRS)
+
+# Dummy target
+DO_NOTHING :
+
+RELEASABLES CLEAN BLD LIB SAVESPACE FREEZE CLEANLIB RESOURCE FINAL : DO_NOTHING
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/stlport.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+# Copyright (c) 2006-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:
+# Meta information for stlport builds
+#
+
+platform	win32
+makefile 	gnumake
+techstream	tools
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/stlport.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,91 @@
+# Copyright (c) 2007-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:
+#
+
+# To ensure that EPOCROOT always ends with a forward slash
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+
+SOURCE_ARCHIVE:=$(EXTENSION_ROOT)/$(SOURCE_ARCHIVE)
+
+ISPATH:=$(call settPath)
+
+ifeq "$(ISPATH)" "1"
+Path:=$(EPOCROOT)epoc32/gcc_mingw/bin;$(Path)
+PATH:=$(Path)
+endif
+
+
+EXTRACT_DIR=$(EPOCROOT)epoc32/build
+STL_DIR=$(EXTRACT_DIR)/STLport-$(STLPORT_VERSION)
+BUILD_DIR=$(STL_DIR)/build/lib
+UNZIPPED=$(STL_DIR)/unzipped.ok
+
+RELEASE_DIR=$(EPOCROOT)epoc32/release/tools2
+RELEASE_DIR_REL=$(RELEASE_DIR)/rel
+RELEASE_DIR_DEB=$(RELEASE_DIR)/deb
+RELEASE_DIRS=$(RELEASE_DIR_REL) $(RELEASE_DIR_DEB)
+
+STL_REL_LIB_PATH=$(STL_DIR)/lib/libstlport.a
+STL_DEB_LIB_PATH=$(STL_DIR)/lib/libstlportg.a
+
+REL_LIB=$(RELEASE_DIR_REL)/$(STL_REL_LIB_NAME)
+DEB_LIB=$(RELEASE_DIR_DEB)/$(STL_REL_LIB_NAME)
+
+STL_HEADERS_PATH=$(EPOCROOT)epoc32/include/tools/stlport
+
+
+$(UNZIPPED): $(SOURCE_ARCHIVE)  $(EXTRACT_DIR)
+	unzip -o $(SOURCE_ARCHIVE) -d $(EXTRACT_DIR)
+	
+
+$(REL_LIB): $(UNZIPPED) $(STL_REL_LIB_PATH)  $(RELEASE_DIR_REL)
+	$(call ecopy) $(STL_REL_LIB_PATH) $(REL_LIB)
+
+$(DEB_LIB): $(UNZIPPED) $(STL_DEB_LIB_PATH)  $(RELEASE_DIR_DEB)
+	$(call ecopy) $(STL_DEB_LIB_PATH) $(DEB_LIB)
+
+LIB: $(REL_LIB) $(DEB_LIB)
+
+
+$(EXTRACT_DIR) $(RELEASE_DIRS):
+	$(call createdir,$@)
+
+# -Wno-uninitialized is needed by mingw gcc v3.4.5 because it gets
+#  # confused by some of the STLport source and gives this error erroneously
+export EXTRA_CXXFLAGS=-Wno-uninitialized
+
+$(STL_REL_LIB_PATH) (STL_DEB_LIB_PATH):
+	$(call tmpmacro)
+	make -C $(BUILD_DIR) -fgcc.mak install-release-static install-dbg-static LIB_SUFFIX=
+	
+CLEAN:
+	$(call remove,$(REL_LIB))
+	$(call remove,$(DEB_LIB))
+	make -C $(BUILD_DIR) -fgcc.mak clobber LIB_SUFFIX=
+	$(call remove,$(STL_DIR))
+
+
+RELEASABLES:
+	@echo $(REL_LIB)
+	@echo $(DEB_LIB)
+	
+
+MAKMAKE BLD SAVESPACE FREEZE CLEANLIB RESOURCE FINAL:
+	@echo $@ does nothing in $(TEMPLATE_EXTENSION_MAKEFILE)
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/x86tool.meta	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+# Copyright (c) 2006-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:
+# Meta information for the GNU makesis extension template
+#
+
+platform	win32
+makefile 	gnumake
+techstream	tools
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/extension/tools/x86tool.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,373 @@
+# Copyright (c) 2008-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:
+# /epoc32/tools/makefile_templates/tools/x86tool.mk
+# SBSv2 issues and differences from SBSv1
+# 1/ The shell is different
+# 2/ The msys shell can't handle absolute paths from root without the drive letter e.g. it can't find /epoc32 but it can find x:/epoc32
+# workaround is to go back to TO_ROOT
+# 3/ The current directory is at the bld.inf rather than /epoc32/build
+# 4/ Backslash is problematic
+# 5/ Path variables include the drive letter x: which causes problems for make when used in targets due to :
+# 6/ TO_ROOT is not defined
+# 7/ Some tool compatibility is problematic e.g. createdir doesn't work with paths containing forward slash
+# 
+#
+
+# If this environment variable is defined we're definitely building for win32
+ifdef ComSpec
+WIN32:=1
+endif
+
+space:=
+space+=
+LETTERS:=a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+
+# If win32 isn't defined yet - then we're probably building on sbsv2
+# So see if EPOCROOT starts with a drive letter to work out if we're building for win32
+ifndef WIN32
+  ifneq ($(subst $(space),,$(foreach let,$(LETTERS),$(if $(findstring $(let):,$(EPOCROOT)),1,))),)
+    WIN32:=1
+  endif
+endif
+
+# To guarantee there is a slash at the end of EPOCROOT in case there is not.
+# This is needed to ensure compatibility with SBSv1.
+TMPROOT:=$(subst \,/,$(EPOCROOT))
+EPOCROOT:=$(patsubst %/,%,$(TMPROOT))/
+
+# Get standard shell definitions
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+# Raptor includes the drive letter on paths - this makefile can't handle the drive letter
+# If we don't do this we get "multiple target patterns" errors in sbsv2
+TMPROOT:=$(strip $(foreach let,$(LETTERS),$(if $(findstring $(let):,$(EPOCROOT)),$(subst $(let):,,$(EPOCROOT)))))
+ifneq ($(TMPROOT),)
+  EPOCROOT:=$(TMPROOT)
+endif
+TMPROOT:=$(strip $(foreach let,$(LETTERS),$(if $(findstring $(let):,$(EXTENSION_ROOT)),$(subst $(let):,,$(EXTENSION_ROOT)))))
+ifneq ($(TMPROOT),)
+  EXTENSION_ROOT:=$(TMPROOT)
+endif
+
+# Make up for raptor not defining TO_ROOT properly
+# This might get broken if they change the current directory (which should really be in /epoc32/build)
+# We're using TO_ROOT to handle the fact that the msys shell doesn't seem to handle absolute paths
+ifdef WIN32
+  ifeq ($(TO_ROOT),)
+    TMPROOT:=$(strip $(foreach let,$(LETTERS),$(if $(findstring $(let):,$(TO_BLDINF)),$(subst $(let):,,$(TO_BLDINF)))))
+    TO_ROOT:=.$(subst $(space),,$(foreach word,$(subst /,$(space),$(TMPROOT)),/..))
+  endif
+endif
+
+# Handle inconsistent case for build variant
+CFG_PATH:=$(CFG)
+ifeq ($(CFG_PATH),DEB)
+  CFG_PATH:=deb
+endif
+ifeq ($(CFG_PATH),REL)
+  CFG_PATH:=rel
+endif
+
+# Set the following to enable code coverage stats
+CODE_COVERAGE:=
+
+# Build
+ifdef WIN32
+  TARGET_DIR_REL:=$(EPOCROOT)epoc32/release/tools2/rel/
+  TARGET_DIR_DEB:=$(EPOCROOT)epoc32/release/tools2/deb/
+  GCOVDIR:=$(if $(CODE_COVERAGE),$(EPOCROOT)epoc32/gcc_mingw/libgcc/mingw32/3.4.5/)
+else
+  TARGET_DIR_REL:=$(EPOCROOT)epoc32/release/tools2/linux-i386/rel/
+  TARGET_DIR_DEB:=$(EPOCROOT)epoc32/release/tools2/linux-i386/deb/
+endif
+
+# The root to the source code - paths are relative to bld.inf if NOT specified
+# If SOURCE_ROOT specified then it's relative to EPOCROOT
+ifndef SOURCE_ROOT
+  ROOT:=$(subst \,/,$(EXTENSION_ROOT))
+  OBJSUBST:=/
+else
+  ROOT:=$(EPOCROOT)$(subst $(space)/,/,$(SOURCE_ROOT))
+  OBJSUBST:=$(EPOCROOT)
+endif
+
+# ***
+# STATIC LIBRARY
+#
+ifeq ($(TARGET_TYPE),lib)
+  TARGET_FULLNAME_REL:=$(TARGET_DIR_REL)lib$(TARGET_NAME)$(if $(findstring .,$(TARGET_NAME)),,.a)
+  TARGET_FULLNAME_DEB:=$(TARGET_DIR_DEB)lib$(TARGET_NAME)$(if $(findstring .,$(TARGET_NAME)),,.a)
+
+  ifeq ($(CFG_PATH),deb)
+    TARGET_LIB:=$(TARGET_FULLNAME_DEB)
+  endif
+  ifeq ($(CFG_PATH),rel)
+    TARGET_LIB:=$(TARGET_FULLNAME_REL)
+  endif
+  TARGET_LIB?=$(TARGET_FULLNAME_REL) $(TARGET_FULLNAME_DEB)
+endif
+
+# ***
+# EXE
+#
+ifeq ($(TARGET_TYPE),exe)
+  TARGET_FULLNAME_REL:=$(TARGET_DIR_REL)$(TARGET_SUB_DIR)$(TARGET_NAME)$(if $(findstring .,$(TARGET_NAME)),,$(if $(WIN32),.exe))
+  TARGET_FULLNAME_DEB:=$(TARGET_DIR_DEB)$(TARGET_SUB_DIR)$(TARGET_NAME)$(if $(findstring .,$(TARGET_NAME)),,$(if $(WIN32),.exe))
+
+  ifeq ($(CFG_PATH),deb)
+    TARGET_BLD:=$(TARGET_FULLNAME_DEB)
+  endif
+  ifeq ($(CFG_PATH),rel)
+    TARGET_BLD:=$(TARGET_FULLNAME_REL)
+  endif
+  TARGET_BLD?=$(TARGET_FULLNAME_REL) $(TARGET_FULLNAME_DEB)
+
+  LIBS+=symexestub
+  ifdef STLPORT
+    LIBS+=-lstlport.5.1
+  endif
+endif
+
+# ***
+# DLL/SO
+#
+ifeq ($(TARGET_TYPE),dll)
+
+  TARGET_FULLNAME_REL:=$(TARGET_DIR_REL)$(TARGET_SUB_DIR)lib$(TARGET_NAME)$(if $(findstring .,$(TARGET_NAME)),,$(if $(WIN32),.dll,.so))
+  TARGET_FULLNAME_DEB:=$(TARGET_DIR_DEB)$(TARGET_SUB_DIR)lib$(TARGET_NAME)$(if $(findstring .,$(TARGET_NAME)),,$(if $(WIN32),.dll,.so))
+
+  ifeq ($(CFG_PATH),deb)
+    TARGET_BLD:=$(TARGET_FULLNAME_DEB)
+  endif
+  ifeq ($(CFG_PATH),rel)
+    TARGET_BLD:=$(TARGET_FULLNAME_REL)
+  endif
+  TARGET_BLD?=$(TARGET_FULLNAME_REL) $(TARGET_FULLNAME_DEB)
+
+  ifdef STLPORT
+    LIBS+=-lstlport.5.1
+  endif
+endif
+
+# Pick up MINGW compiler from epoc32 on Windows
+ifdef WIN32
+  AR:=$(EPOCROOT)epoc32/gcc_mingw/bin/ar
+  CXX:=$(EPOCROOT)epoc32/gcc_mingw/bin/g++
+endif
+
+# Product include files are different for S60
+ifdef S60_BUILD
+  PRODUCT_INCLUDE:=$(EPOCROOT)epoc32/include/oem/bldvariant.hrh
+else
+  PRODUCT_INCLUDE:=$(EPOCROOT)epoc32/include/variant/Symbian_OS.hrh
+endif
+
+# Define macros we need
+CXXDEFS_COMMON:=$(foreach def,$(MACROS),-D$(def)) -D__SYMBIAN32__ -D__GCC32__ -D__EPOC32__ -D__X86__ -D_UNICODE -D__SUPPORT_CPP_EXCEPTIONS__ -D__TOOLS2__ -D'__PRODUCT_INCLUDE__="$(PRODUCT_INCLUDE)"'
+CXXDEFS_DEB:=$(CXXDEFS_COMMON) -D_DEBUG
+CXXDEFS_REL:=$(CXXDEFS_COMMON)
+
+# Setup the command line options for the compiler
+PREINC=$(EPOCROOT)epoc32/include/x86tool/x86tool.h
+CXXOPT_DEB:=-fshort-wchar -x c++ -O0 -g3 -Wall -c -fmessage-length=0 -include $(PREINC) -masm=intel
+OPTIMISE:=-fdefer-pop -fmerge-constants -fthread-jumps -floop-optimize -fif-conversion -fif-conversion2 -fguess-branch-probability -fcprop-registers -fforce-mem -foptimize-sibling-calls -fstrength-reduce -fcse-follow-jumps -fcse-skip-blocks -frerun-cse-after-loop -frerun-loop-opt -fgcse -fgcse-lm -fgcse-sm -fgcse-las -fdelete-null-pointer-checks -fexpensive-optimizations -fregmove -fschedule-insns -fschedule-insns2 -fsched-interblock -fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks -freorder-functions -fstrict-aliasing -funit-at-a-time -falign-functions -falign-jumps -falign-loops -falign-labels -fcrossjumping
+CXXOPT_REL:=-fshort-wchar -x c++ -Wall -c -fmessage-length=0 -include $(PREINC) $(if $(CODE_COVERAGE),-O0,$(OPTIMISE)) -masm=intel
+
+# Allow specification of additional build include file
+ifdef BUILDINC
+  CXXOPT_DEB+= -include $(BUILDINC)
+  CXXOPT_REL+= -include $(BUILDINC)
+endif
+
+# Extra options needed for cia files
+ASMOPT:=-fomit-frame-pointer
+
+# Linker options for DLL
+ifndef DLL_WIN_LINKER_OPTS
+  DLL_WIN_LINKER_OPTS:= $(if $(CODE_COVERAGE),-lgcov) -Wl,-export-all-symbols
+endif
+ifndef DLL_LIN_LINKER_OPTS
+  DLL_LIN_LINKER_OPTS:= -Wl,-export-all-symbols $(if $(CODE_COVERAGE),-lgcov) -ldl
+endif
+
+# Source files to scan for in a directory
+# Note that CPP and cpp will match on the same files - so a sort is necessary on wildcard results
+SOURCE_EXT:=CPP cpp c cia
+
+# Source code assumed to be all cpp/cia files in supplied directories
+SOURCE_FILES:=$(foreach dir,$(SOURCE_DIRS),$(sort $(foreach ext,$(SOURCE_EXT),$(wildcard $(ROOT)/$(dir)/*.$(ext))))) \
+  $(foreach src,$(SOURCE),$(ROOT)/$(if $(SOURCE_FOLDER),$(SOURCE_FOLDER)/)$(src)) \
+  $(foreach src,$(SOURCE_MOD),$(subst \,/,$(EXTENSION_ROOT))/$(src)) \
+  $(foreach id,$(SOURCE_IDS),$(foreach src,$($(id)_SOURCE),$(subst $(space)/,/,$(if $($(id)_SOURCE_ROOT),$(EPOCROOT)$($(id)_SOURCE_ROOT),$(ROOT))/$(src))))
+
+# Include folders
+CXXINC:=$(foreach inc,$(INCLUDES) $(SOURCE_DIRS),-I$(ROOT)/$(inc)) \
+  $(foreach inc,$(SYS_INCLUDES),-I$(EPOCROOT)$(inc)) -I$(ROOT) \
+  $(foreach id,$(SOURCE_IDS),$(foreach inc,$($(id)_SOURCE_INC),-I$(subst $(space)/,/,$(if $($(id)_SOURCE_ROOT),$(EPOCROOT)$($(id)_SOURCE_ROOT),$(ROOT)))/$(inc)))
+
+# Add standard include paths?
+ifndef NO_STD_INCLUDE
+  CXXINC+= -I$(EPOCROOT)epoc32/include/x86tool -I$(EPOCROOT)epoc32/include
+  ifdef S60_BUILD
+    CXXINC+= -I$(EPOCROOT)epoc32/include/oem
+  endif
+endif
+
+# Support for building JNI
+ifdef JAVA_JNI
+  CXXINC+= -I"$(JAVA_HOME)/include"
+  ifdef WIN32
+    CXXINC+= -I"$(JAVA_HOME)/include/win32"
+  else
+    CXXINC+= -I"$(JAVA_HOME)/include/linux"
+  endif
+endif
+
+
+# STL Port support needed? Note STL and Symbian won't mix!
+ifdef STLPORT
+  CXXINC+= -I$(EPOCROOT)epoc32/include/tools/stlport 
+endif
+
+# ***
+# DEBUG
+#
+
+# Object files are the same name as the source files with a .o extension
+OBJECTFILES_DEB:=$(foreach src,$(SOURCE_FILES),deb$(src).o)
+
+# Compile
+$(OBJECTFILES_DEB) : $(PREINC) $(SOURCE_FILES)
+	@echo ***
+	@echo Making: $@
+	$(call createdir,$(dir $@))
+	$(CXX) $(CXXDEFS_DEB) $(CXXINC) -I$(subst deb$(OBJSUBST),$(OBJSUBST),$(dir $@)) $(CXXOPT_DEB) $(if $(findstring .cia,$@),$(ASMOPT),$(if $(CODE_COVERAGE),-fprofile-arcs -ftest-coverage)) -o$@ $(subst deb$(OBJSUBST),$(OBJSUBST),$(basename $@))
+
+# Link
+$(TARGET_FULLNAME_DEB) : $(OBJECTFILES_DEB) $(foreach lib,$(LIBS),$(TARGET_DIR_DEB)lib$(lib).a) $(foreach lib,$(SHARED_LIBS),$(TARGET_DIR_DEB)lib$(lib)$(if $(WIN32),.a,.so))
+ifeq ($(TARGET_TYPE),lib)
+	@echo ***
+	@echo Creating lib: $@
+	$(AR) -r $(TARGET_FULLNAME_DEB) $(OBJECTFILES_DEB)
+endif
+ifeq ($(TARGET_TYPE),exe)
+	@echo ***
+	@echo Creating exe: $@
+	$(CXX) -L$(TARGET_DIR_DEB) $(if $(GCOVDIR),-L$(GCOVDIR)) \
+		-o$(TARGET_FULLNAME_DEB) $(OBJECTFILES_DEB) \
+		$(foreach lib,$(LIBS) $(SHARED_LIBS), -l$(lib)) \
+		$(if $(CODE_COVERAGE),-lgcov) $(if $(WIN32),,-ldl)
+endif
+ifeq ($(TARGET_TYPE),dll)
+  ifdef WIN32
+	@echo ***
+	@echo Creating Windows dll: $@
+	$(CXX) -L$(TARGET_DIR_DEB) $(if $(GCOVDIR),-L$(GCOVDIR)) \
+		-shared -o$(TARGET_FULLNAME_DEB) $(OBJECTFILES_DEB) \
+		$(foreach lib,$(LIBS) $(SHARED_LIBS), -l$(lib)) \
+		-Wl,-out-implib,$(@D)/$(basename $(@F)).a \
+		$(DLL_WIN_LINKER_OPTS)
+  else
+	@echo ***
+	@echo Creating Linux shared object: $@
+	$(CXX) -L$(TARGET_DIR_DEB) \
+		-shared -o$(TARGET_FULLNAME_DEB) $(OBJECTFILES_DEB) \
+		$(foreach lib,$(LIBS) $(SHARED_LIBS), -l$(lib)) \
+		$(DLL_LIN_LINKER_OPTS)
+  endif
+endif
+
+# ***
+# RELEASE
+#
+
+# Object files are the same name as the source files with a .o extension
+OBJECTFILES_REL:=$(foreach src,$(SOURCE_FILES),rel$(src).o)
+
+# Compile
+$(OBJECTFILES_REL) : $(PREINC) $(SOURCE_FILES)
+	@echo ***
+	@echo Making: $@
+	$(call createdir,$(dir $@))
+	$(CXX) $(CXXDEFS_REL) $(CXXINC) -I$(subst rel$(OBJSUBST),$(OBJSUBST),$(dir $@)) $(CXXOPT_REL) $(if $(findstring .cia,$@),$(ASMOPT),$(if $(CODE_COVERAGE),-fprofile-arcs -ftest-coverage)) -o$@ $(subst rel$(OBJSUBST),$(OBJSUBST),$(basename $@))
+
+# Link
+$(TARGET_FULLNAME_REL) : $(OBJECTFILES_REL) $(foreach lib,$(LIBS),$(TARGET_DIR_REL)lib$(lib).a) $(foreach lib,$(SHARED_LIBS),$(TARGET_DIR_REL)lib$(lib)$(if $(WIN32),.a,.so))
+ifeq ($(TARGET_TYPE),lib)
+	@echo ***
+	@echo Creating lib: $@
+	$(AR) -r $(TARGET_FULLNAME_REL) $(OBJECTFILES_REL)
+endif
+ifeq ($(TARGET_TYPE),exe)
+	@echo ***
+	@echo Creating exe: $@
+	$(CXX) -L$(TARGET_DIR_REL) $(if $(GCOVDIR),-L$(GCOVDIR)) \
+		-o$(TARGET_FULLNAME_REL) $(OBJECTFILES_REL) \
+		$(foreach lib,$(LIBS) $(SHARED_LIBS), -l$(lib)) \
+		$(if $(CODE_COVERAGE),-lgcov) $(if $(WIN32),,-ldl)
+endif
+ifeq ($(TARGET_TYPE),dll)
+  ifdef WIN32
+	@echo ***
+	@echo Creating Windows dll: $@	
+	$(CXX) -L$(TARGET_DIR_REL) $(if $(GCOVDIR),-L$(GCOVDIR)) \
+		-shared -o$(TARGET_FULLNAME_REL) $(OBJECTFILES_REL) \
+		$(foreach lib,$(LIBS) $(SHARED_LIBS), -l$(lib)) \
+		-Wl,-out-implib,$(@D)/$(basename $(@F)).a \
+		$(DLL_WIN_LINKER_OPTS)
+  else
+	@echo ***
+	@echo Creating Linux shared object: $@
+	$(CXX) -L$(TARGET_DIR_REL) \
+		-shared -o$(TARGET_FULLNAME_REL) $(OBJECTFILES_REL) \
+		$(foreach lib,$(LIBS) $(SHARED_LIBS), -l$(lib)) \
+		$(DLL_LIN_LINKER_OPTS)
+  endif
+endif
+
+do_nothing:
+
+#
+# The targets invoked by abld...
+#
+
+MAKMAKE : do_nothing
+FREEZE : do_nothing
+RESOURCE : do_nothing
+CLEANLIB : do_nothing
+FINAL : do_nothing
+
+SAVESPACE :
+ifeq ($(CFG_PATH),deb)
+	$(call remove,$(OBJECTFILES_DEB))
+endif
+ifeq ($(CFG_PATH),rel)
+	$(call remove,$(OBJECTFILES_REL))
+endif
+
+LIB : $(TARGET_LIB)
+
+BLD : $(TARGET_BLD)
+
+CLEAN :
+	$(call remove,$(foreach file,$(TARGET_LIB) $(TARGET_BLD),$(TO_ROOT)$(file)))
+ifeq ($(CFG_PATH),deb)
+	$(call remove,$(OBJECTFILES_DEB))
+endif
+ifeq ($(CFG_PATH),rel)
+	$(call remove,$(OBJECTFILES_REL))
+endif
+
+RELEASABLES :
+	@echo $(TARGET_LIB) $(TARGET_BLD)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/group/bld.inf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,178 @@
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRJ_PLATFORMS
+TOOLS2
+
+PRJ_EXPORTS
+
+../bin/java/symbianant.jar  /epoc32/tools/java/symbianant.jar
+../extension/application-protocols/buildstubsis.meta 	/epoc32/tools/makefile_templates/application-protocols/buildstubsis.meta			
+../extension/application-protocols/buildstubsis.mk 	/epoc32/tools/makefile_templates/application-protocols/buildstubsis.mk			
+../extension/app-services/buildstubsis.meta 		/epoc32/tools/makefile_templates/app-services/buildstubsis.meta		
+../extension/app-services/buildstubsis.mk 		/epoc32/tools/makefile_templates/app-services/buildstubsis.mk		
+../extension/app-services/buildupgradesis.meta 		/epoc32/tools/makefile_templates/app-services/buildupgradesis.meta		
+../extension/app-services/buildupgradesis.mk 		/epoc32/tools/makefile_templates/app-services/buildupgradesis.mk		
+../extension/app-services/tzlocaltestserver.meta	/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.meta			
+../extension/app-services/tzlocaltestserver.mk		/epoc32/tools/makefile_templates/app-services/tzlocaltestserver.mk		
+../extension/app-services/wlddatabasekit_sec.meta	/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.meta			
+../extension/app-services/wlddatabasekit_sec.mk 		/epoc32/tools/makefile_templates/app-services/wlddatabasekit_sec.mk		
+../extension/base/base_rvct_common.mk		/epoc32/tools/makefile_templates/base/base_rvct_common.mk		
+../extension/base/bootstrap.meta 	/epoc32/tools/makefile_templates/base/bootstrap.meta			
+../extension/base/bootstrap.mk 		/epoc32/tools/makefile_templates/base/bootstrap.mk
+//IMK ../extension/base/bootstrap.flm 	/epoc32/tools/makefile_templates/base/bootstrap.flm			
+//IMK ../extension/base/bootstrap.xml		/epoc32/tools/makefile_templates/base/bootstrap.xml			
+../extension/base/config.meta 		/epoc32/tools/makefile_templates/base/config.meta		
+../extension/base/config.mk 		/epoc32/tools/makefile_templates/base/config.mk		
+../extension/base/copy_default.meta 	/epoc32/tools/makefile_templates/base/copy_default.meta			
+../extension/base/copy_default.mk 	/epoc32/tools/makefile_templates/base/copy_default.mk			
+../extension/base/genexec.meta 		/epoc32/tools/makefile_templates/base/genexec.meta		
+../extension/base/genexec.mk 		/epoc32/tools/makefile_templates/base/genexec.mk		
+../extension/base/h2_genbootinc.meta 	/epoc32/tools/makefile_templates/base/h2_genbootinc.meta			
+../extension/base/h2_genbootinc.mk 	/epoc32/tools/makefile_templates/base/h2_genbootinc.mk			
+../extension/base/h2_restricted_coreldr.meta 	/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.meta			
+../extension/base/h2_restricted_coreldr.mk 	/epoc32/tools/makefile_templates/base/h2_restricted_coreldr.mk			
+../extension/base/h4_genbootinc.meta 		/epoc32/tools/makefile_templates/base/h4_genbootinc.meta		
+../extension/base/h4_genbootinc.mk 		/epoc32/tools/makefile_templates/base/h4_genbootinc.mk		
+../extension/base/h4_restricted_coreldr.meta 	/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.meta			
+../extension/base/h4_restricted_coreldr.mk 	/epoc32/tools/makefile_templates/base/h4_restricted_coreldr.mk			
+../extension/base/h4_restricted_on_coreldr.meta 	/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.meta			
+../extension/base/h4_restricted_on_coreldr.mk 	/epoc32/tools/makefile_templates/base/h4_restricted_on_coreldr.mk			
+../extension/base/h4_restricted_on_miniboot.meta 	/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.meta			
+../extension/base/h4_restricted_on_miniboot.mk	/epoc32/tools/makefile_templates/base/h4_restricted_on_miniboot.mk			
+../extension/base/integrator_lmnand2_coreldr.meta 	/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.meta			
+../extension/base/integrator_lmnand2_coreldr.mk 		/epoc32/tools/makefile_templates/base/integrator_lmnand2_coreldr.mk		
+../extension/base/integrator_lmnand2_miniboot.meta 	/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.meta			
+../extension/base/integrator_lmnand2_miniboot.mk 	/epoc32/tools/makefile_templates/base/integrator_lmnand2_miniboot.mk			
+../extension/base/lab_restricted_miniboot.flm		/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.flm		
+../extension/base/lab_restricted_miniboot.meta		/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.meta		
+../extension/base/lab_restricted_miniboot.mk		/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.mk		
+../extension/base/lab_restricted_miniboot.xml		/epoc32/tools/makefile_templates/base/lab_restricted_miniboot.xml		
+../extension/base/lubbock_coreldr.meta 		/epoc32/tools/makefile_templates/base/lubbock_coreldr.meta		
+../extension/base/lubbock_coreldr.mk 		/epoc32/tools/makefile_templates/base/lubbock_coreldr.mk		
+../extension/base/lubbock_miniboot.meta 		/epoc32/tools/makefile_templates/base/lubbock_miniboot.meta		
+../extension/base/lubbock_miniboot.mk 		/epoc32/tools/makefile_templates/base/lubbock_miniboot.mk		
+../extension/base/nand_fbr_offset.meta 		/epoc32/tools/makefile_templates/base/nand_fbr_offset.meta		
+../extension/base/nand_fbr_offset.mk 		/epoc32/tools/makefile_templates/base/nand_fbr_offset.mk		
+../extension/base/ne1_tb_genbootinc.meta				/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.meta
+../extension/base/ne1_tb_genbootinc.mk 				/epoc32/tools/makefile_templates/base/ne1_tb_genbootinc.mk
+../extension/base/ne1_tb_restricted_coreldr.flm		/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.flm		
+../extension/base/ne1_tb_restricted_coreldr.meta 	/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.meta			
+../extension/base/ne1_tb_restricted_coreldr.mk 		/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.mk		
+../extension/base/ne1_tb_restricted_coreldr.xml		/epoc32/tools/makefile_templates/base/ne1_tb_restricted_coreldr.xml		
+../extension/base/omap3_genbootinc.meta		/epoc32/tools/makefile_templates/base/omap3_genbootinc.meta		
+../extension/base/omap3_genbootinc.mk		/epoc32/tools/makefile_templates/base/omap3_genbootinc.mk		
+../extension/base/omap3_restricted_coreldr.flm		/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.flm		
+../extension/base/omap3_restricted_coreldr.meta		/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.meta		
+../extension/base/omap3_restricted_coreldr.mk		/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.mk		
+../extension/base/omap3_restricted_coreldr.xml		/epoc32/tools/makefile_templates/base/omap3_restricted_coreldr.xml		
+../extension/converged-comms/createcommdbs.meta 	/epoc32/tools/makefile_templates/converged-comms/createcommdbs.meta			
+../extension/converged-comms/createcommdbs.mk 	/epoc32/tools/makefile_templates/converged-comms/createcommdbs.mk			
+../extension/converged-comms/installdefaultcommdb.meta 	/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.meta			
+../extension/converged-comms/installdefaultcommdb.mk 	/epoc32/tools/makefile_templates/converged-comms/installdefaultcommdb.mk			
+../extension/graphics/gen_khronos_cpp_from_hdr.meta		/epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.meta		
+../extension/graphics/gen_khronos_cpp_from_hdr.mk		/epoc32/tools/makefile_templates/graphics/gen_khronos_cpp_from_hdr.mk		
+../extension/graphics/gen_khronos_openvg_cpp_from_hdr.meta	/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.meta			
+../extension/graphics/gen_khronos_openvg_cpp_from_hdr.mk	/epoc32/tools/makefile_templates/graphics/gen_khronos_openvg_cpp_from_hdr.mk			
+../extension/graphics/genpdrs.meta 		/epoc32/tools/makefile_templates/graphics/genpdrs.meta		
+../extension/graphics/genpdrs.mk 		/epoc32/tools/makefile_templates/graphics/genpdrs.mk		
+../extension/security/upsserver.meta 	/epoc32/tools/makefile_templates/security/upsserver.meta			
+../extension/security/upsserver.mk 		/epoc32/tools/makefile_templates/security/upsserver.mk		
+../extension/syslibs/conversiontable.meta 	/epoc32/tools/makefile_templates/syslibs/conversiontable.meta			
+../extension/syslibs/conversiontable.mk 		/epoc32/tools/makefile_templates/syslibs/conversiontable.mk		
+../extension/syslibs/fm_copyfile_to_winscw_zdrive.meta 	/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.meta			
+../extension/syslibs/fm_copyfile_to_winscw_zdrive.mk 	/epoc32/tools/makefile_templates/syslibs/fm_copyfile_to_winscw_zdrive.mk			
+../extension/syslibs/generate_cpp.meta 		/epoc32/tools/makefile_templates/syslibs/generate_cpp.meta		
+../extension/syslibs/generate_cpp.mk 		/epoc32/tools/makefile_templates/syslibs/generate_cpp.mk		
+../extension/syslibs/generate_snm.meta 		/epoc32/tools/makefile_templates/syslibs/generate_snm.meta		
+../extension/syslibs/generate_snm.mk 		/epoc32/tools/makefile_templates/syslibs/generate_snm.mk		
+../extension/syslibs/test/bafl_copytestfiles.meta	/epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.meta			
+../extension/syslibs/test/bafl_copytestfiles.mk		/epoc32/tools/makefile_templates/syslibs/test/bafl_copytestfiles.mk		
+../extension/syslibs/test/bafl_resource_files.meta	/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.meta			
+../extension/syslibs/test/bafl_resource_files.mk	/epoc32/tools/makefile_templates/syslibs/test/bafl_resource_files.mk			
+../extension/syslibs/test/centrep_copydatfile.meta	/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.meta			
+../extension/syslibs/test/centrep_copydatfile.mk	/epoc32/tools/makefile_templates/syslibs/test/centrep_copydatfile.mk			
+../extension/syslibs/test/centrep_copyincentrepsrv.meta		/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.meta		
+../extension/syslibs/test/centrep_copyincentrepsrv.mk		/epoc32/tools/makefile_templates/syslibs/test/centrep_copyincentrepsrv.mk		
+../extension/syslibs/test/centrep_copypctestfile.meta		/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.meta		
+../extension/syslibs/test/centrep_copypctestfile.mk		/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfile.mk		
+../extension/syslibs/test/centrep_copypctestfilev2.meta		/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.meta		
+../extension/syslibs/test/centrep_copypctestfilev2.mk		/epoc32/tools/makefile_templates/syslibs/test/centrep_copypctestfilev2.mk		
+../extension/syslibs/test/charconv_testpostbuild.meta		/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.meta		
+../extension/syslibs/test/charconv_testpostbuild.mk		/epoc32/tools/makefile_templates/syslibs/test/charconv_testpostbuild.mk		
+../extension/syslibs/test/charconv_tiso8859x_generate_cpp.meta		/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.meta		
+../extension/syslibs/test/charconv_tiso8859x_generate_cpp.mk		/epoc32/tools/makefile_templates/syslibs/test/charconv_tiso8859x_generate_cpp.mk		
+../extension/syslibs/test/charconv_tsnmdata.meta		/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.meta		
+../extension/syslibs/test/charconv_tsnmdata.mk			/epoc32/tools/makefile_templates/syslibs/test/charconv_tsnmdata.mk	
+../extension/syslibs/test/dbms_copytestdbscfiles.meta		/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.meta		
+../extension/syslibs/test/dbms_copytestdbscfiles.mk		/epoc32/tools/makefile_templates/syslibs/test/dbms_copytestdbscfiles.mk		
+../extension/syslibs/test/ecom3_buildsis.meta			/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.meta	
+../extension/syslibs/test/ecom3_buildsis.mk			/epoc32/tools/makefile_templates/syslibs/test/ecom3_buildsis.mk	
+../extension/syslibs/test/ecom3_postbuild.meta			/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.meta	
+../extension/syslibs/test/ecom3_postbuild.mk			/epoc32/tools/makefile_templates/syslibs/test/ecom3_postbuild.mk	
+../extension/syslibs/test/ecom3_relocatetarget.meta		/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.meta		
+../extension/syslibs/test/ecom3_relocatetarget.mk		/epoc32/tools/makefile_templates/syslibs/test/ecom3_relocatetarget.mk		
+../extension/syslibs/test/featmgr_moveplugin.meta		/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.meta		
+../extension/syslibs/test/featmgr_moveplugin.mk			/epoc32/tools/makefile_templates/syslibs/test/featmgr_moveplugin.mk	
+../extension/syslibs/test/logeng_copytestfiles.meta		/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.meta		
+../extension/syslibs/test/logeng_copytestfiles.mk		/epoc32/tools/makefile_templates/syslibs/test/logeng_copytestfiles.mk		
+../extension/syslibs/test/sql_copyperfsqltestfiles.meta		/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.meta		
+../extension/syslibs/test/sql_copyperfsqltestfiles.mk		/epoc32/tools/makefile_templates/syslibs/test/sql_copyperfsqltestfiles.mk		
+../extension/syslibs/test/sql_copysqltestfiles.meta		/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.meta		
+../extension/syslibs/test/sql_copysqltestfiles.mk		/epoc32/tools/makefile_templates/syslibs/test/sql_copysqltestfiles.mk		
+../extension/syslibs/test/sqlite3_copysqlite3testfiles.meta	/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.meta			
+../extension/syslibs/test/sqlite3_copysqlite3testfiles.mk	/epoc32/tools/makefile_templates/syslibs/test/sqlite3_copysqlite3testfiles.mk			
+../extension/syslibs/test/sqlite3_securecopytestfiles.meta	/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.meta			
+../extension/syslibs/test/sqlite3_securecopytestfiles.mk	/epoc32/tools/makefile_templates/syslibs/test/sqlite3_securecopytestfiles.mk			
+../extension/syslibs/test/xml_sitestfiledist.meta		/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.meta		
+../extension/syslibs/test/xml_sitestfiledist.mk			/epoc32/tools/makefile_templates/syslibs/test/xml_sitestfiledist.mk	
+../extension/syslibs/test/xml_stringdictionary00tagtable.meta	/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.meta			
+../extension/syslibs/test/xml_stringdictionary00tagtable.mk	/epoc32/tools/makefile_templates/syslibs/test/xml_stringdictionary00tagtable.mk			
+../extension/syslibs/test/xml_syncmltestfiledist.meta		/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.meta		
+../extension/syslibs/test/xml_syncmltestfiledist.mk		/epoc32/tools/makefile_templates/syslibs/test/xml_syncmltestfiledist.mk		
+../extension/syslibs/test/xml_wmltestfiledist.meta		/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.meta		
+../extension/syslibs/test/xml_wmltestfiledist.mk		/epoc32/tools/makefile_templates/syslibs/test/xml_wmltestfiledist.mk		
+../extension/syslibs/test/xml_xmlcmatchdatapostbuild.meta	/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.meta			
+../extension/syslibs/test/xml_xmlcmatchdatapostbuild.mk		/epoc32/tools/makefile_templates/syslibs/test/xml_xmlcmatchdatapostbuild.mk		
+../extension/syslibs/word_template.meta			/epoc32/tools/makefile_templates/syslibs/word_template.meta	
+../extension/syslibs/word_template.mk			/epoc32/tools/makefile_templates/syslibs/word_template.mk	
+../extension/techview/uiklaf_resource.meta	/epoc32/tools/makefile_templates/techview/uiklaf_resource.meta			
+../extension/techview/uiklaf_resource.mk		/epoc32/tools/makefile_templates/techview/uiklaf_resource.mk		
+../extension/tools/ant_launch.flm	/epoc32/tools/makefile_templates/tools/ant_launch.flm			
+../extension/tools/ant_launch.meta /epoc32/tools/makefile_templates/tools/ant_launch.meta				
+../extension/tools/ant_launch.mk /epoc32/tools/makefile_templates/tools/ant_launch.mk				
+../extension/tools/ant_launch.xml	/epoc32/tools/makefile_templates/tools/ant_launch.xml			
+../extension/tools/bldex.meta /epoc32/tools/makefile_templates/tools/bldex.meta				
+../extension/tools/bldex.mk /epoc32/tools/makefile_templates/tools/bldex.mk				
+../extension/tools/compsupp.meta		/epoc32/tools/makefile_templates/tools/compsupp.meta		
+../extension/tools/compsupp.mk 		/epoc32/tools/makefile_templates/tools/compsupp.mk		
+../extension/tools/features.meta 	/epoc32/tools/makefile_templates/tools/features.meta			
+../extension/tools/features.mk 		/epoc32/tools/makefile_templates/tools/features.mk		
+../extension/tools/jni_ant_launch.meta /epoc32/tools/makefile_templates/tools/jni_ant_launch.meta				
+../extension/tools/jni_ant_launch.mk /epoc32/tools/makefile_templates/tools/jni_ant_launch.mk				
+../extension/tools/kif.meta		/epoc32/tools/makefile_templates/tools/kif.meta		
+../extension/tools/kif.mk		/epoc32/tools/makefile_templates/tools/kif.mk		
+../extension/tools/py2exe.meta /epoc32/tools/makefile_templates/tools/py2exe.meta				
+../extension/tools/py2exe.mk /epoc32/tools/makefile_templates/tools/py2exe.mk				
+../extension/tools/raptor_linux_dist.meta /epoc32/tools/makefile_templates/tools/raptor_linux_dist.meta				
+../extension/tools/raptor_linux_dist.mk /epoc32/tools/makefile_templates/tools/raptor_linux_dist.mk				
+../extension/tools/stlport.meta 		/epoc32/tools/makefile_templates/tools/stlport.meta		
+../extension/tools/stlport.mk 		/epoc32/tools/makefile_templates/tools/stlport.mk		
+../extension/tools/x86tool.meta 		/epoc32/tools/makefile_templates/tools/x86tool.meta		
+../extension/tools/x86tool.mk 		/epoc32/tools/makefile_templates/tools/x86tool.mk
+../extension/tools/apply_imgtools_variants.xml  /epoc32/tools/makefile_templates/tools/apply_imgtools_variants.xml		
+../shell/cmd.mk 				/epoc32/tools/shell/cmd.mk
+../shell/generic.mk 			/epoc32/tools/shell/generic.mk	
+../shell/sh.mk				/epoc32/tools/shell/sh.mk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/group/buildsystem.mrp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,10 @@
+component	dev_build_sbsv1_buildsystem
+
+source	\src\tools\build\sbsv1\buildsystem
+binary	\src\tools\build\sbsv1\buildsystem\group	all
+exports	\src\tools\build\sbsv1\buildsystem\group
+
+notes_source \component_defs\release.src
+
+ipr T
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/shell/cmd.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,147 @@
+# Copyright (c) 2005-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:
+#
+
+include $(EPOCROOT)epoc32/tools/shell/generic.mk
+
+# Host platform dependant variables
+/:=$(shell echo \)
+;:=;
+CP=copy
+RM=del
+RMDIR=rmdir
+MKDIR=mkdir
+ERASE=@erase /q 2>>nul
+
+
+# Some tools do not work with slash but only dollar slash.  
+# That is actually a defect for them and should be fixed.  
+# Then this macro should be abandoned.
+define slash2generic
+$(subst /,$/,$(1))
+endef
+
+# Call perl script to create directory. 
+# Used in base/config.mk and many others
+define createdir
+perl $(EPOCROOT)epoc32/tools/emkdir.pl $(1)
+endef
+
+# Check if not exist directory then create it first. 
+# Used in BASE/lubbock_miniboot
+define ifnotexistd
+if not exist $(1) md $(subst /,\,$(1))
+endef
+
+# This means there are something to add for SBSv2 here.
+# For abld, there is nothing.
+# Used in base/lubbock_miniboot and should be used in similar situation.
+define sbsadd
+
+endef
+
+# Add double quotes for abld target. No quote for SBSv2.
+# Used in base/lubbock_miniboot
+define abldquote
+"$(1)"
+endef
+
+# Used in Syslibs/conversiontable.mk
+define generated
+$(EPOCROOT)epoc32/build/$(1)
+endef
+
+# Used in syslibs/generate_cpp.mk
+define formatreleasables
+@echo $(1)
+endef
+
+# Used in BASE/config.mk
+define generatedcpp
+$(EPOCROOT)epoc32/build/generatedcpp/hal
+endef
+
+# Set path. Used in BASE/bootstrap.mk
+define epocbldabs
+$(1)$(2)
+endef
+
+# Call perl script ecopyfile.pl to copy.  
+# Used in BASE/bootstrap.mk 
+define ecopy
+perl $(EPOCROOT)epoc32/tools/ecopyfile.pl 
+endef
+
+# Abld does not support pipe symbol | while SBSv2 does.  So for Abld it is nothing.
+# Used in Base/bootstrap.mk. 
+define pipe
+
+endef
+
+# Call perl script copyfeaturevariants.pl.  Used in BASE/copy_default.mk.
+define cpfeature
+perl $(EPOCROOT)epoc32/tools/copyfeaturevariants.pl $(1) $(2)
+endef
+
+# Used in Syslibs/generate_cpp.mk at the bottom to deal with different
+# way of includeing TEM in Abld and SBSv2.
+define include
+$(EPOCROOT)epoc32/tools/makefile_templates/syslibs/generate_cpp.mk
+endef
+
+# Macro to change working directory. Used for TOOLS/stlport.mk
+# The path needs to be fixed before passing to cd command
+define chdir
+-cd $(subst /,\,$(1))
+endef
+
+# Macro to remove files. All paths need to be corrected before deleting.
+# Used in TOOLS/stlport.mk
+define remove
+-$(ERASE) $(subst /,\,$(1))
+endef
+
+# Macro to copy files. Needed for sbsv2 build 
+# Used in PDS components in syslibs/*.mk
+define forcecopy
+$(CP) $(subst /,\,$(1)) $(subst /,\,$(2))
+endef
+
+# Macro to remove files. Needed for sbsv2 build
+# Used in PDS components in syslibs/*.mk
+define forceremove
+-$(ERASE) $(subst /,\,$(1))
+endef
+
+define tmpmacro
+$(call chdir,$(BUILD_DIR));configure.bat -c gcc;
+endef
+
+define settPath
+1
+endef
+
+# Macro to execute a command if a file exists.
+define ifexistf
+if exist $(1) $(2)
+endef
+
+# Macro ensure path delimiters are the right sort.
+define normalise_path
+$(subst /,\,$(1))
+endef
+
+
+# Configuration needs to be returned as upper case for abld
+CONFIGURATION:=REL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/shell/generic.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,63 @@
+# Copyright (c) 2006-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:
+# Definitions common to all shells
+# *_PATH variables to support filename policy conformance in makefile templates
+# NOTE: These should all be replaced by calls to a function that lower-cases
+# the current setting of the original variable
+# 
+#
+
+PLATFORM_PATH=$(PLATFORM)
+CFG_PATH=$(CFG)
+
+ifeq ($(PLATFORM_PATH),WINS) 
+	PLATFORM_PATH=wins
+else
+ifeq ($(PLATFORM_PATH),WINSCW) 
+	PLATFORM_PATH=winscw
+else
+ifeq ($(PLATFORM_PATH),ARMV5) 
+	PLATFORM_PATH=armv5
+else
+ifeq ($(PLATFORM_PATH),ARMV7) 
+	PLATFORM_PATH=armv7
+else
+ifeq ($(PLATFORM_PATH),TOOLS) 
+	PLATFORM_PATH=tools
+else
+ifeq ($(PLATFORM_PATH),TOOLS2) 
+	PLATFORM_PATH=tools2
+endif
+endif
+endif
+endif
+endif
+endif
+
+ifeq ($(CFG_PATH),UREL) 
+	CFG_PATH=urel
+else
+ifeq ($(CFG_PATH),UDEB) 
+	CFG_PATH=udeb
+else
+ifeq ($(CFG_PATH),DEB) 
+	CFG_PATH=deb
+else
+ifeq ($(CFG_PATH),REL) 
+	CFG_PATH=rel
+endif
+endif
+endif
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/shell/sh.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,127 @@
+# Copyright (c) 2006-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:
+#
+
+include $(EPOCROOT)epoc32/tools/shell/generic.mk
+
+
+# Some tools do not work with slash but only dollar slash.  
+# That is actually a defect for them and should be fixed.  
+# Then this macro should be abandoned.
+define slash2generic
+$(1)
+endef
+
+# Use $(MKDIR) to create directory
+# Use in base/config.mk and many others
+define createdir
+$(MKDIR) -p $(1) 
+endef
+
+# Check if not exist directory then create it first. 
+# Use in BASE/lubbock_miniboot and many others
+define ifnotexistd
+if [ ! -d $(1) ]; then $(MKDIR) -p $(1); fi
+endef
+
+# This means there are something to add for SBSv2 here.
+# Used in base/lubbock_miniboot and should be used in similar situation.
+define sbsadd
+$(1)
+endef
+
+# Add double quotes for abld target. No quote for SBSv2.
+# Used in base/lubbock_miniboot
+define abldquote
+$(1)
+endef
+
+# Used in Syslibs/conversiontable.mk
+define generated
+$(EPOCROOT)epoc32/build/$(1)
+endef
+
+# Used in syslibs/generate_cpp.mk
+define formatreleasables
+$(if $(1),@echo $(word 1,$(1)))
+$(if $(1),$(call formatreleasables,$(wordlist 2,$(words $(1)),$(1))))
+endef
+
+# Used in BASE/config.mk
+define generatedcpp
+$(EPOCROOT)epoc32/build/generatedcpp/hal
+endef
+
+# Set path. Used in BASE/bootstrap.mk
+define epocbldabs
+$(EPOCBLD)
+endef
+
+# Copy. Used in BASE/bootstrap.mk 
+define ecopy
+cp
+endef
+
+# Abld does not support pipe symbol | while SBSv2 does.  So for Abld it is nothing.
+# Used in Base/bootstrap.mk. 
+define pipe
+| $(1)
+endef
+
+# Used in BASE/copy_default.mk.
+define cpfeature
+$(CP) $? $@
+endef
+
+# Used in Syslibs/generate_cpp.mk at the bottom to deal with different
+# way of includeing TEM in Abld and SBSv2.
+define include
+$(TEMPLATE_EXTENSION_MAKEFILE)
+endef
+
+# Macro to change working directory. Used for TOOLS/stlport.mk
+# The path needs to be fixed before passing to cd command
+define chdir
+-cd $(1)
+endef
+
+# Macro to remove files. Used in TOOLS/stlport.mk
+define remove
+-rm -f $(1)
+endef
+
+# Macro to copy files. Needed for sbsv2 build
+# Used in PDS components in syslibs/*.mk
+define forcecopy
+$(CP) -f $(1)	$(2) && chmod a+rwx $(2)
+endef
+
+# Macro to remove files. Needed for sbsv2 build
+# Used in PDS components in syslibs/*.mk
+define forceremove
+-$(ERASE) -f $(1)
+endef
+
+# Macro to execute a command if a file exists.
+define ifexistf
+if [ -f $(1) ]; then $(2); fi
+endef
+
+# Macro ensure path delimiters are the right sort.
+define normalise_path
+$(subst \,/,$(1))
+endef
+
+# Configuration needs to be returned as upper case for abld
+CONFIGURATION:=rel
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/Bld.inf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,23 @@
+// Copyright (c) 2000-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:
+// Component description file
+// 
+//
+
+PRJ_MMPFILES
+
+InvariantStaticDLL.mmp
+VariantStaticDLL.mmp
+UseStaticDLL.mmp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/CommonFramework.h	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,61 @@
+// Copyright (c) 2000-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:
+//
+
+
+#ifndef __CommonFramework_H
+#define __CommonFramework_H
+
+#include <e32base.h>
+#include <e32cons.h>
+
+_LIT(KTxtEPOC32EX,"EXAMPLES");
+_LIT(KTxtExampleCode,"Symbian OS Example Code");
+_LIT(KFormatFailed,"failed: leave code=%d");
+_LIT(KTxtOK,"ok");
+_LIT(KTxtPressAnyKey," [press any key]");
+
+// public
+LOCAL_D CConsoleBase* console; // write all your messages to this
+LOCAL_C void doExampleL(); // code this function for the real example
+
+// private
+LOCAL_C void callExampleL(); // initialize with cleanup stack, then do example
+
+GLDEF_C TInt E32Main() // main function called by E32
+    {
+	__UHEAP_MARK;
+	CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack
+	TRAPD(error,callExampleL()); // more initialization, then do example
+	__ASSERT_ALWAYS(!error,User::Panic(KTxtEPOC32EX,error));
+	delete cleanup; // destroy clean-up stack
+	__UHEAP_MARKEND;
+	return 0; // and return
+    }
+
+LOCAL_C void callExampleL() // initialize and call example code under cleanup stack
+    {
+	console=Console::NewL(KTxtExampleCode,TSize(KConsFullScreen,KConsFullScreen));
+	CleanupStack::PushL(console);
+	TRAPD(error,doExampleL()); // perform example function
+	if (error)
+		console->Printf(KFormatFailed, error);
+	else
+		console->Printf(KTxtOK);
+	console->Printf(KTxtPressAnyKey);
+	console->Getch(); // get and ignore character
+	CleanupStack::PopAndDestroy(); // close console
+    }
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLL.cpp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,62 @@
+// Copyright (c) 2000-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:
+// This program creates a dll.
+// 
+//
+
+#include "InvariantStaticDLL.h"
+#include <e32uid.h>
+
+// construct/destruct
+
+EXPORT_C CInvMessenger* CInvMessenger::NewLC(CConsoleBase& aConsole, const TDesC& aString)
+	{
+	CInvMessenger* self=new (ELeave) CInvMessenger(aConsole);
+	CleanupStack::PushL(self);
+	self->ConstructL(aString);
+	return self;
+	}
+
+CInvMessenger::~CInvMessenger() // destruct - virtual, so no export
+	{
+	delete iString;
+	}
+
+// useful functions
+
+EXPORT_C void CInvMessenger::ShowMessage()
+	{
+	_LIT(KFormat1,"FEATURE INVARIANT %S\n");
+	iConsole.Printf(KFormat1, iString); // notify completion
+	}
+
+// constructor support
+// don't export these, because used only by functions in this DLL, eg our NewLC()
+
+CInvMessenger::CInvMessenger(CConsoleBase& aConsole) // first-phase C++ constructor
+	: iConsole(aConsole)
+	{
+	}
+
+void CInvMessenger::ConstructL(const TDesC& aString) // second-phase constructor
+	{
+	iString=aString.AllocL(); // copy given string into own descriptor
+    }
+
+
+GLDEF_C TInt E32Dll(TInt /*aReason*/)
+// DLL entry point
+	{
+	return(KErrNone);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLL.h	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,41 @@
+// Copyright (c) 2000-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:
+// Statically linked dll example
+// 
+//
+ 
+
+#include <e32cons.h>
+
+
+class CInvMessenger : public CBase
+  	{
+public:
+		// Construction
+	IMPORT_C static CInvMessenger* NewLC(CConsoleBase& aConsole, const TDesC& aString);
+		// Destructor - virtual and class not intended
+		// for derivation, so not exported
+	~CInvMessenger();
+		// general functions - exported
+	IMPORT_C void ShowMessage();
+private:
+		// C++ constructor - not exported;
+		// implicitly called from NewLC()
+	CInvMessenger(CConsoleBase& aConsole);
+		// 2nd phase construction, called by NewLC()
+	void ConstructL(const TDesC& aString); // second-phase constructor
+private:
+	CConsoleBase& iConsole; // Use the console (but not owned)
+	HBufC*        iString;  // Allocated container for string data (destructor destroys)
+	};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLL.mmp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,38 @@
+// Copyright (c) 2000-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:
+// using relative paths for sourcepath and user includes
+// exports are unfrozen
+// 
+//
+
+TARGET        InvariantStaticDLL.dll
+TARGETTYPE    dll
+UID           0x1000008d 0x10004268
+VENDORID      0x70000001
+
+SOURCEPATH    .
+SOURCE        InvariantStaticDLL.cpp
+
+USERINCLUDE   .
+OS_LAYER_SYSTEMINCLUDE
+
+LIBRARY       euser.lib
+
+#if defined(WINS)
+    deffile ./InvariantStaticDLLwin.def
+#else
+    deffile ./InvariantStaticDLLarm.def
+#endif
+nostrictdef
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLLarm.def	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,6 @@
+EXPORTS
+	_ZN13CInvMessenger11ShowMessageEv @ 1 NONAME
+	_ZN13CInvMessenger5NewLCER12CConsoleBaseRK7TDesC16 @ 2 NONAME
+	_ZTI13CInvMessenger @ 3 NONAME ; #<TI>#
+	_ZTV13CInvMessenger @ 4 NONAME ; #<VT>#
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/InvariantStaticDLLwin.def	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,4 @@
+EXPORTS
+	?NewLC@CInvMessenger@@SAPAV1@AAVCConsoleBase@@ABVTDesC16@@@Z @ 1 NONAME ; class CInvMessenger * CInvMessenger::NewLC(class CConsoleBase &, class TDesC16 const &)
+	?ShowMessage@CInvMessenger@@QAEXXZ @ 2 NONAME ; void CInvMessenger::ShowMessage(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/UseStaticDLL.cpp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,55 @@
+// Copyright (c) 2000-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:
+// A simple program which uses the statically linked dll  "eulibd1b.dll"
+// 
+//
+
+// standard example header
+#include "CommonFramework.h"
+#include "InvariantStaticDLL.h"
+#include "VariantStaticDLL.h"
+
+_LIT(KTxt1,"statically linked DLL example \n\n");
+
+#ifdef FEATURE_VARIANT_DEFAULT
+	_LIT(KTxt2,"Hello from variant_default!");
+#endif
+
+#ifdef FEATURE_VARIANT_A
+	_LIT(KTxt2,"Hello from variant_a!");
+#endif
+
+#ifdef FEATURE_VARIANT_B
+	_LIT(KTxt2,"Hello from variant_b!");
+#endif
+
+_LIT(KTxtNewLine,"\n");
+
+LOCAL_C void doExampleL()
+    {
+	console->Printf(KTxt1);
+
+	CInvMessenger* myInvMessage = CInvMessenger::NewLC(*console, KTxt2);
+	myInvMessage->ShowMessage();
+
+	console->Printf(KTxtNewLine);
+
+	CVarMessenger* myVarMessage = CVarMessenger::NewLC(*console, KTxt2);
+	myVarMessage->ShowMessage();
+
+	console->Printf(KTxtNewLine);
+	CleanupStack::PopAndDestroy(); 
+	}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/UseStaticDLL.mmp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,33 @@
+// Copyright (c) 2000-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:
+// using relative paths for sourcepath and user includes
+// 
+//
+
+TARGET        UseStaticDLL.exe
+TARGETTYPE    exe
+UID           0
+VENDORID      0x70000001
+
+// test exe's support binary variation
+FEATUREVARIANT
+
+SOURCEPATH    .
+SOURCE        UseStaticDLL.cpp
+
+USERINCLUDE   .
+OS_LAYER_SYSTEMINCLUDE
+
+LIBRARY       euser.lib InvariantStaticDLL.lib VariantStaticDLL.lib
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/VariantStaticDLL.cpp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,72 @@
+// Copyright (c) 2000-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:
+// This program creates a dll.
+// 
+//
+
+#include "VariantStaticDLL.h"
+#include <e32uid.h>
+
+// construct/destruct
+
+EXPORT_C CVarMessenger* CVarMessenger::NewLC(CConsoleBase& aConsole, const TDesC& aString)
+	{
+	CVarMessenger* self=new (ELeave) CVarMessenger(aConsole);
+	CleanupStack::PushL(self);
+	self->ConstructL(aString);
+	return self;
+	}
+
+CVarMessenger::~CVarMessenger() // destruct - virtual, so no export
+	{
+	delete iString;
+	}
+
+// useful functions
+
+EXPORT_C void CVarMessenger::ShowMessage()
+	{
+#ifdef FEATURE_VARIANT_A
+	_LIT(KFormat1,"FEATURE VARIANT A %S\n");
+#else
+	_LIT(KFormat1,"FEATURE VARIANT ~A %S\n");
+#endif
+#ifdef FEATURE_VARIANT_B
+	_LIT(KFormat2,"FEATURE VARIANT B %S\n");
+#else
+	_LIT(KFormat2,"FEATURE VARIANT ~B %S\n");
+#endif
+	iConsole.Printf(KFormat1, iString); // notify completion
+	iConsole.Printf(KFormat2, iString); // notify completion
+	}
+
+// constructor support
+// don't export these, because used only by functions in this DLL, eg our NewLC()
+
+CVarMessenger::CVarMessenger(CConsoleBase& aConsole) // first-phase C++ constructor
+	: iConsole(aConsole)
+	{
+	}
+
+void CVarMessenger::ConstructL(const TDesC& aString) // second-phase constructor
+	{
+	iString=aString.AllocL(); // copy given string into own descriptor
+    }
+
+
+GLDEF_C TInt E32Dll(TInt /*aReason*/)
+// DLL entry point
+	{
+	return(KErrNone);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/VariantStaticDLL.h	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,41 @@
+// Copyright (c) 2000-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:
+// Statically linked dll example
+// 
+//
+ 
+
+#include <e32cons.h>
+
+
+class CVarMessenger : public CBase
+  	{
+public:
+		// Construction
+	IMPORT_C static CVarMessenger* NewLC(CConsoleBase& aConsole, const TDesC& aString);
+		// Destructor - virtual and class not intended
+		// for derivation, so not exported
+	~CVarMessenger();
+		// general functions - exported
+	IMPORT_C void ShowMessage();
+private:
+		// C++ constructor - not exported;
+		// implicitly called from NewLC()
+	CVarMessenger(CConsoleBase& aConsole);
+		// 2nd phase construction, called by NewLC()
+	void ConstructL(const TDesC& aString); // second-phase constructor
+private:
+	CConsoleBase& iConsole; // Use the console (but not owned)
+	HBufC*        iString;  // Allocated container for string data (destructor destroys)
+	};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/VariantStaticDLL.mmp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,49 @@
+// Copyright (c) 2000-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:
+// using relative paths for sourcepath and user includes
+// exports are unfrozen
+// 
+//
+
+TARGET        VariantStaticDLL.dll
+TARGETTYPE    dll
+FEATUREVARIANT
+UID           0x1000008d 0x10004268
+VENDORID      0x70000001
+
+SOURCEPATH    .
+SOURCE        VariantStaticDLL.cpp
+
+USERINCLUDE   .
+OS_LAYER_SYSTEMINCLUDE
+
+LIBRARY       euser.lib
+
+#if defined(WINS)
+    deffile ./VariantStaticDLLwin.def
+#else
+    deffile ./VariantStaticDLLarm.def
+#endif
+nostrictdef
+
+// Test variation in MMP files?
+#if defined(FEATURE_VARIANT_DEFAULT)
+#warning "FEATURE_VARIANT_DEFAULT defined"
+#elif defined(FEATURE_VARIANT_A)
+#warning "FEATURE_VARIANT_A defined"
+#elif defined(FEATURE_VARIANT_B )
+#warning "FEATURE_VARIANT_B defined"
+#else
+#error "Test failed"
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/VariantStaticDLLarm.def	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,6 @@
+EXPORTS
+	_ZN13CVarMessenger11ShowMessageEv @ 1 NONAME
+	_ZN13CVarMessenger5NewLCER12CConsoleBaseRK7TDesC16 @ 2 NONAME
+	_ZTI13CVarMessenger @ 3 NONAME ; #<TI>#
+	_ZTV13CVarMessenger @ 4 NONAME ; #<VT>#
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/VariantStaticDLLwin.def	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,4 @@
+EXPORTS
+	?NewLC@CVarMessenger@@SAPAV1@AAVCConsoleBase@@ABVTDesC16@@@Z @ 1 NONAME ; class CVarMessenger * CVarMessenger::NewLC(class CConsoleBase &, class TDesC16 const &)
+	?ShowMessage@CVarMessenger@@QAEXXZ @ 2 NONAME ; void CVarMessenger::ShowMessage(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/bvtest.txt	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,5 @@
+FEATURE_VARIANT_A
+FEATURE_VARIANT_A_EXTRA
+
+FEATURE_VARIANT_B
+FEATURE_VARIANT_B_EXTRA
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/default.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,5 @@
+
+VARIANT default
+
+BUILD_INCLUDE	set		/epoc32/include/variant
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/test.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,295 @@
+# Copyright (c) 2007-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:
+# binary variation build test
+#
+# build a variant DLL and an invariant DLL and use them.
+
+use strict;
+use Test;
+use Digest::MD5;
+
+# how many tests do we plan to run?
+BEGIN { plan tests => 204 }
+
+# remember where we started
+use Cwd;
+my $cwd = getcwd();
+
+# change to the test data directory
+use File::Basename;
+my $dir = dirname($0);
+chdir($dir);
+print "# running in $dir\n";
+
+# create a local default.hrh, as it varies per OS version
+# (make it just include the product include file)
+my $epocroot = $ENV{'EPOCROOT'};
+my $include = $epocroot . "epoc32/include/variant";
+my $variant = $epocroot . "epoc32/tools/variant";
+
+my $cfg = $variant . "/variant.cfg";
+my $productInclude;
+
+open(VARCFG, "$cfg") or die("cannot read $cfg\n");
+while (<VARCFG>)
+{
+	$productInclude = "$1" if /epoc32.+?([^\\\/]+\.hrh)$/i;
+}
+close(VARCFG);
+die("no product include file in $cfg\n") unless ($productInclude);
+
+open(DEFHRH, ">default.hrh") or die("cannot write $dir/default.hrh\n");
+print(DEFHRH "#include <$productInclude>\n");
+print(DEFHRH "\n#define FEATURE_VARIANT_DEFAULT\n");
+close(DEFHRH);
+print("# testing against product $productInclude\n");
+
+# copy test files to EPOCROOT (make sure we do not destroy any valid
+# files that are already there and remember to clean up afterwards)
+#
+# /epoc32/include/variant/default.hrh
+# /epoc32/include/variant/variant_a.hrh
+# /epoc32/include/variant/variant_b.hrh
+# /epoc32/include/variant/a/variant_a_extra.hrh
+# /epoc32/include/variant/b/variant_b_extra.hrh
+# /epoc32/tools/variant/default.var
+# /epoc32/tools/variant/variant_a.var
+# /epoc32/tools/variant/variant_b.var
+# /epoc32/tools/variant/variant_c.var
+# /epoc32/include/variant/featurelists/bvtest.txt
+
+my @created = ("$include/default.hrh",
+			   "$include/variant_a.hrh",
+			   "$include/variant_b.hrh",
+			   "$include/a/variant_a_extra.hrh",
+			   "$include/b/variant_b_extra.hrh",
+			   "$variant/default.var",
+			   "$variant/variant_a.var",
+			   "$variant/variant_b.var",
+			   "$variant/variant_c.var",
+			   "$include/featurelists/bvtest.txt"
+			  );
+
+use File::Copy;
+my $file;
+foreach $file (@created)
+{
+	my $epocDir = dirname($file);
+	my $localFile = basename($file);
+
+	mkdir($epocDir) if (!-d $epocDir);
+	move($file, "$file.bak") if (-f $file);
+
+	print "# copy $localFile $file\n";
+	unlink $file;
+	copy($localFile, $file) or die "Failed copy: $!";
+}
+
+###############################################################################
+# THE TESTS                                                                   #
+###############################################################################
+
+# we need to test the ABIv1 and ABIv2 builds
+
+testABI("armv5");
+testABI("armv5_abiv1");
+
+###############################################################################
+# END OF TESTS                                                                #
+###############################################################################
+
+# delete test files and restore backed up files to their original state
+foreach $file (@created)
+{
+	if (-f "$file.bak")
+	{
+		move("$file.bak", $file);
+	}
+	else
+	{
+		unlink($file);
+	}
+}
+
+# change back to the starting directory
+chdir($cwd);
+
+# ALL DONE
+
+
+###############################################################################
+# SUBROUTINES                                                                 #
+###############################################################################
+
+sub testABI
+{
+	my $platform = shift;
+
+	# remove the binaries if they already exist
+	my $release = $epocroot . "epoc32/release/$platform";
+
+	my @binaries = (
+			    	"$release/udeb/InvariantStaticDLL.dll",
+			    	"$release/urel/InvariantStaticDLL.dll",
+					);
+
+	foreach (@binaries)
+	{
+		unlink($_);
+	}
+
+	cleanVariants("$release/udeb", "VariantStaticDLL.dll");
+	cleanVariants("$release/urel", "VariantStaticDLL.dll");
+	cleanVariants("$release/udeb", "UseStaticDLL.exe");
+	cleanVariants("$release/urel", "UseStaticDLL.exe");
+
+	# we cannot test the command return values because they are always 0
+	system("bldmake bldfiles");
+	
+	# clean out everything so makefiles have to be recreated
+	system("abld reallyclean $platform.variant_a >nul 2>&1");
+	system("abld reallyclean $platform.variant_b >nul 2>&1");
+	system("abld reallyclean $platform.variant_c >nul 2>&1");
+	system("abld reallyclean $platform >nul 2>&1");
+	
+	# Build variants first to ensure the default makefile is created for invariant dlls
+	system("abld build $platform.variant_a");
+	system("abld build $platform.variant_b");
+	system("abld build $platform.variant_c");
+	system("abld build $platform");
+
+	# test for the existence of each invariant binary file
+	foreach (@binaries)
+	{
+		print "# checking $_\n";
+		ok(-f $_);
+	}
+
+	# test for the existence of each variant binary file
+	checkVariants("$release/udeb/VariantStaticDLL.dll");
+	checkVariants("$release/urel/VariantStaticDLL.dll");
+	checkVariants("$release/udeb/UseStaticDLL.exe");
+	checkVariants("$release/urel/UseStaticDLL.exe");
+}
+
+sub cleanVariants
+{
+	my $dir = shift;
+	my $name = shift;
+
+	if (opendir(DIR, $dir))
+	{
+		while (my $file = readdir(DIR))
+		{
+			if ($file =~ /^$name/)
+			{
+				print "removing $dir/$file\n";
+				unlink("$dir/$file");
+			}
+		}
+		closedir(DIR);
+	}
+	else
+	{
+		print "cannot clean $dir/$name*\n";
+	}
+}
+
+sub checkVariants
+{
+	my $root = shift;
+	
+	$root =~ s/\.([^\.]+)$//;
+	my $ext = $1;
+	
+	my $vmap = "$root.$ext.vmap";
+
+	# there should be a VMAP file
+	print "# checking $vmap\n";
+	ok(-f $vmap);
+
+	my $hashDefault = "0";
+	my $hashVariantA = "0";
+	my $hashVariantB = "0";
+	my $hashVariantC = "0";
+
+	# Variables to hold feature macro values
+	my ( $featDefault, $featVariantA, $featVariantB, $featVariantC );
+	
+	if (open(VMAP, $vmap))
+	{
+		while (<VMAP>)
+		{
+			if (/([0-9a-f]{32})\s+(\S+)\s(\S+)/i)
+			{
+				my $var = lc($2);
+				
+				# Store the data for later
+				( $hashDefault, $featDefault ) = ( $1, $3) if ($var eq 'default');
+				( $hashVariantA, $featVariantA ) = ( $1, $3) if ($var eq 'variant_a');
+				( $hashVariantB, $featVariantB ) = ( $1, $3) if ($var eq 'variant_b');
+				( $hashVariantC, $featVariantC ) = ( $1, $3) if ($var eq 'variant_c');
+			}
+		}
+		close(VMAP);
+	}
+
+	# the three hashes Default,A,B should be valid and different
+	ok($hashDefault);
+	ok($hashVariantA);
+	ok($hashVariantB);
+
+	ok($hashDefault ne $hashVariantA);
+	ok($hashDefault ne $hashVariantB);
+	ok($hashVariantA ne $hashVariantB);
+
+	# the three feature lists for Default,A,B should be valid and different
+	ok($featDefault);
+	ok($featVariantA);
+	ok($featVariantB);
+
+	ok($featDefault ne $featVariantA);
+	ok($featDefault ne $featVariantB);
+	ok($featVariantA ne $featVariantB);
+
+	# Check the feature lists are correct
+	ok($featDefault eq 'FEATURE_VARIANT_A=undefined,FEATURE_VARIANT_B=undefined');
+	ok($featVariantA eq 'FEATURE_VARIANT_A=defined,FEATURE_VARIANT_B=undefined');
+	ok($featVariantB eq 'FEATURE_VARIANT_A=undefined,FEATURE_VARIANT_B=\'123\'');
+	
+	# Check the hash and feature lists match
+	ok($hashDefault eq Digest::MD5::md5_hex($featDefault));
+	ok($hashVariantA eq Digest::MD5::md5_hex($featVariantA));
+	ok($hashVariantB eq Digest::MD5::md5_hex($featVariantB));
+	
+	# hashes A and C should be the same
+	ok($hashVariantA, $hashVariantC);
+
+	# feature lists for A and C should be the same
+	ok($featVariantA, $featVariantC);
+	
+	# the corresponding binaries should exist
+	print("# checking $root.$hashDefault.$ext\n");
+	ok(-f "$root.$hashDefault.$ext");
+
+	print("# checking $root.$hashVariantA.$ext\n");
+	ok(-f "$root.$hashVariantA.$ext");
+
+	print("# checking $root.$hashVariantB.$ext\n");
+	ok(-f "$root.$hashVariantB.$ext");
+
+	print("# checking $root.$hashVariantC.$ext\n");
+	ok(-f "$root.$hashVariantC.$ext");
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/variant_a.hrh	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+// Copyright (c) 2000-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:
+//
+
+#include <default.hrh>
+#include <variant_a_extra.hrh>
+
+#define FEATURE_VARIANT_A
+#undef FEATURE_VARIANT_DEFAULT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/variant_a.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,6 @@
+
+VARIANT variant_a
+EXTENDS default
+
+BUILD_INCLUDE	append	/epoc32/include/variant/a
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/variant_a_extra.hrh	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,17 @@
+// Copyright (c) 2000-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:
+//
+
+#define FEATURE_VARIANT_A_EXTRA
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/variant_b.hrh	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+// Copyright (c) 2000-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:
+//
+
+#include <default.hrh>
+#include <variant_b_extra.hrh>
+
+#define FEATURE_VARIANT_B 123
+#undef FEATURE_VARIANT_DEFAULT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/variant_b.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,5 @@
+
+VARIANT variant_b
+EXTENDS default
+
+BUILD_INCLUDE	append	/epoc32/include/variant/b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/variant_b_extra.hrh	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,17 @@
+// Copyright (c) 2000-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:
+//
+
+#define FEATURE_VARIANT_B_EXTRA
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/binaryvariation/variant_c.var	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,7 @@
+
+VARIANT variant_c
+EXTENDS default
+VARIANT_HRH /epoc32/include/variant/variant_a.hrh
+
+BUILD_INCLUDE	append	/epoc32/include/variant/a
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/extensions/my_testing.01	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,3 @@
+
+this is not really a DLL...
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/extensions/test.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,86 @@
+# Copyright (c) 2007-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:
+# template extension makefile test
+#
+#
+
+use strict;
+use Test;
+
+# how many tests do we plan to run?
+BEGIN { plan tests => 6 }
+
+# remember where we started
+use Cwd;
+my $cwd = getcwd();
+
+# change to the test data directory
+use File::Basename;
+my $dir = dirname($0);
+chdir($dir);
+print "# running in $dir\n";
+
+my $epocroot = $ENV{'EPOCROOT'};
+
+###############################################################################
+# THE TESTS                                                                   #
+###############################################################################
+
+# check base/copy_default in a [non] feature variant world
+my $mk = "../../extension/base/copy_default.mk";
+my $name = "my_testing";
+my $path = "${epocroot}epoc32/release/armv5/udeb/$name";
+my $vars = "SHELL=cmd PLATFORM_PATH=armv5 CFG_PATH=udeb SOURCES=$name.01 TARGET=$name.loc";
+
+use File::Copy;
+copy("$name.01", "$path.01");		# no variants
+unlink("$path.loc");
+
+system("make -f $mk $vars BLD");
+system("make -f $mk $vars RELEASABLES");
+
+print "# checking $path.loc\n";
+ok(-f "$path.loc");
+
+unlink("$path.01");
+system("make -f $mk $vars CLEAN");
+ok(! -f "$path.loc");
+
+my $v1 = "11111111101111111110111111111011";	# variant
+my $v2 = "22222222202222222220222222222022";	# variant
+copy("$name.01", "$path.$v1.01");
+copy("$name.01", "$path.$v2.01");
+
+system("make -f $mk $vars BLD");
+system("make -f $mk $vars RELEASABLES");
+
+print "# checking $path.$v1.loc\n";
+ok(-f "$path.$v1.loc");
+print "# checking $path.$v2.loc\n";
+ok(-f "$path.$v2.loc");
+
+unlink("$path.$v1.01");
+unlink("$path.$v2.01");
+
+system("make -f $mk $vars CLEAN");
+ok(! -f "$path.$v1.loc");
+ok(! -f "$path.$v2.loc");
+
+###############################################################################
+# END OF TESTS                                                                #
+###############################################################################
+
+# change back to the starting directory
+chdir($cwd);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/helloworld/Bld.inf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,20 @@
+// Copyright (c) 2000-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:
+// Component description file
+// 
+//
+
+PRJ_MMPFILES
+
+HelloWorld.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/helloworld/CommonFramework.h	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,61 @@
+// Copyright (c) 2000-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:
+//
+
+
+#ifndef __CommonFramework_H
+#define __CommonFramework_H
+
+#include <e32base.h>
+#include <e32cons.h>
+
+_LIT(KTxtEPOC32EX,"EXAMPLES");
+_LIT(KTxtExampleCode,"Symbian OS Example Code");
+_LIT(KFormatFailed,"failed: leave code=%d");
+_LIT(KTxtOK,"ok");
+_LIT(KTxtPressAnyKey," [press any key]");
+
+// public
+LOCAL_D CConsoleBase* console; // write all your messages to this
+LOCAL_C void doExampleL(); // code this function for the real example
+
+// private
+LOCAL_C void callExampleL(); // initialize with cleanup stack, then do example
+
+GLDEF_C TInt E32Main() // main function called by E32
+    {
+	__UHEAP_MARK;
+	CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack
+	TRAPD(error,callExampleL()); // more initialization, then do example
+	__ASSERT_ALWAYS(!error,User::Panic(KTxtEPOC32EX,error));
+	delete cleanup; // destroy clean-up stack
+	__UHEAP_MARKEND;
+	return 0; // and return
+    }
+
+LOCAL_C void callExampleL() // initialize and call example code under cleanup stack
+    {
+	console=Console::NewL(KTxtExampleCode,TSize(KConsFullScreen,KConsFullScreen));
+	CleanupStack::PushL(console);
+	TRAPD(error,doExampleL()); // perform example function
+	if (error)
+		console->Printf(KFormatFailed, error);
+	else
+		console->Printf(KTxtOK);
+	console->Printf(KTxtPressAnyKey);
+	console->Getch(); // get and ignore character
+	CleanupStack::PopAndDestroy(); // close console
+    }
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/helloworld/HelloWorld.cpp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,23 @@
+// Copyright (c) 2000-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:
+//
+
+#include "CommonFramework.h"
+
+// do the example
+LOCAL_C void doExampleL()
+    {
+	_LIT(KHelloWorldText,"Hello world!\n");
+	console->Printf(KHelloWorldText);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/helloworld/HelloWorld.mmp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,30 @@
+// Copyright (c) 2000-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:
+// using relative paths for sourcepath and user includes
+// 
+//
+
+TARGET        HelloWorld.exe
+TARGETTYPE    exe
+UID           0xE8000047
+VENDORID      0x70000001
+
+SOURCEPATH    .
+SOURCE        HelloWorld.cpp
+
+USERINCLUDE   .
+OS_LAYER_SYSTEMINCLUDE
+
+LIBRARY       euser.lib
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/helloworld/test.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,68 @@
+# Copyright (c) 2007-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:
+# hello world build test
+#
+# If we cannot build this then we probably cannot build anything...
+
+use strict;
+use Test;
+
+# how many tests do we plan to run?
+BEGIN { plan tests => 4 }
+
+# remember where we started
+use Cwd;
+my $cwd = getcwd();
+
+# change to the test data directory
+use File::Basename;
+my $dir = dirname($0);
+chdir($dir);
+print "# running in $dir\n";
+
+# remove the binaries if they already exist
+my $release = $ENV{'EPOCROOT'} . "epoc32/release";
+my @binaries = ("$release/winscw/udeb/HelloWorld.exe",
+			    "$release/winscw/urel/HelloWorld.exe",
+				"$release/armv5/udeb/HelloWorld.exe",
+				"$release/armv5/urel/HelloWorld.exe"
+			   );
+
+foreach (@binaries)
+{
+	unlink($_);
+}
+
+###############################################################################
+# THE TESTS                                                                   #
+###############################################################################
+
+# we cannot test the command return values because they are always 0
+system("bldmake bldfiles");
+system("abld build");
+
+# test for the existence of each binary file
+foreach (@binaries)
+{
+	print "# checking $_\n";
+	ok(-f $_);
+}
+
+###############################################################################
+# END OF TESTS                                                                #
+###############################################################################
+
+# change back to the starting directory
+chdir($cwd);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/test/smoketest.pl	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,34 @@
+# Copyright (c) 2007-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:
+# run smoke tests for the buildsystem
+#
+# each test should use the Test module
+#
+# Failing tests can be re-run individually in their own folder
+# if you need more detailed output to determine the fault.
+
+use strict;
+use Test::Harness;
+$Test::Harness::Verbose = 1;
+
+# a list of all the tests.
+my @all = ( 
+'helloworld/test.pl' ,
+'binaryvariation/test.pl' ,
+'extensions/test.pl'
+);
+
+runtests(@all);
+exit 0;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/tools/buildloggers/group/build.mk	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,36 @@
+# Copyright (c) 2007-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:
+#
+
+SRCDIR = ..\src
+JARDIR = ..\..\..\bin\java
+PKGDIR = com\symbian\ant
+JAVAC = $(JAVA_HOME)\bin\javac -cp $(ANT_HOME)\lib\ant.jar
+
+JARFILE = $(JARDIR)\symbianant.jar
+
+ALL: $(JARFILE)
+
+$(SRCDIR)\$(PKGDIR)\AbldWhatLogger.class: $(SRCDIR)\$(PKGDIR)\AbldWhatLogger.java
+	$(JAVAC) $<
+	
+$(SRCDIR)\$(PKGDIR)\ScanLogger.class: $(SRCDIR)\$(PKGDIR)\ScanLogger.java
+	$(JAVAC) $<
+	
+$(JARFILE): $(SRCDIR)\$(PKGDIR)\AbldWhatLogger.class $(SRCDIR)\$(PKGDIR)\ScanLogger.class
+	$(JAVA_HOME)\bin\jar -cf $@ -C $(SRCDIR) $(PKGDIR)\AbldWhatLogger.class -C $(SRCDIR) $(PKGDIR)\ScanLogger.class
+
+CLEAN:
+	-del $(SRCDIR)\$(PKGDIR)\*.class
+	-del $(JARFILE)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/tools/buildloggers/src/com/symbian/ant/AbldWhatLogger.java	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,37 @@
+// Copyright (c) 2007-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:
+//
+
+package com.symbian.ant;
+
+import java.io.PrintStream;
+import org.apache.tools.ant.DefaultLogger;
+
+public class AbldWhatLogger extends DefaultLogger {
+	
+	protected void printMessage(String aMessage, PrintStream aPrintStream, int aPrioritary) {  
+		if (aMessage.indexOf("[echo]") >= 0) {
+			// remove "[echo]"
+			aMessage = aMessage.replace("[echo]", "");
+		} else {
+			aMessage = "";
+		}
+
+		// remove drive letter
+		aMessage = aMessage.replaceAll("[A-Z]:", "");
+
+		super.printMessage(aMessage, aPrintStream, aPrioritary);
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/buildsystem/tools/buildloggers/src/com/symbian/ant/ScanLogger.java	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,86 @@
+// Copyright (c) 2007-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:
+//
+
+package com.symbian.ant;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.StringUtils;
+
+public class ScanLogger extends DefaultLogger {
+
+    /**
+     * Logs a message, if the priority is suitable.
+     * In non-emacs mode, task level messages are prefixed by the
+     * task name which is right-justified.
+     *
+     * @param event A BuildEvent containing message information.
+     *              Must not be <code>null</code>.
+     */
+    public void messageLogged(BuildEvent event) {
+        int priority = event.getPriority();
+        // Filter out messages based on priority
+        if (priority <= msgOutputLevel) {
+
+            StringBuffer message = new StringBuffer();
+            if (event.getTask() != null && !emacsMode) {
+                // Print out the name of the task if we're in one
+                String name = event.getTask().getTaskName();
+                String label = "[" + name + "] ";
+                int size = LEFT_COLUMN_SIZE - label.length();
+                StringBuffer tmp = new StringBuffer();
+                for (int i = 0; i < size; i++) {
+                    tmp.append(" ");
+                }
+                tmp.append(label);
+                label = tmp.toString();
+
+                try {
+                    BufferedReader r =
+                        new BufferedReader(
+                            new StringReader(event.getMessage()));
+                    String line = r.readLine();
+                    boolean first = true;
+                    while (line != null) {
+                        if (!first) {
+                            message.append(StringUtils.LINE_SEP);
+                        }
+                        first = false;
+                        message.append(label).append(line);
+                        line = r.readLine();
+                    }
+                } catch (IOException e) {
+                    // shouldn't be possible
+                    message.append("ERROR:").append(label).append(event.getMessage());
+                }
+            } else {
+                message.append(event.getMessage());
+            }
+
+            String msg = message.toString();
+            if (priority != Project.MSG_ERR) {
+                printMessage(msg, out, priority);
+            } else {
+                printMessage("ERROR:" + msg, err, priority);
+            }
+            log(msg);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/fix_eabi_think_offsets/fix_eabi_thunk_offsets.bat	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,427 @@
+:: Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+:: All rights reserved.
+:: This component and the accompanying materials are made available
+:: under the terms of "Eclipse Public License v1.0"
+:: which accompanies this distribution, and is available
+:: at the URL "http://www.eclipse.org/legal/epl-v10.html".
+::
+:: Initial Contributors:
+:: Nokia Corporation - initial contribution.
+::
+:: Contributors:
+::
+:: Description:
+::
+
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 28
+
+use strict;
+use Getopt::Long;
+
+my $toolVersion = "1.0";
+
+my $update = 0;
+my $use_perforce = 0;
+my $verbose = 0;
+my $defFile;
+
+# 1. Check arguments, output help etc.
+
+GetOptions (
+	'update' => \$update,			# modify the files
+	'perforce' => \$use_perforce,	# apply "p4 edit" to changed files
+	'v+' => \$verbose,				# print extra diagnostic info
+	'match=s' => \$defFile			# only process DEF files matching a pattern
+	);
+
+if (@ARGV == 0)
+	{
+	print STDERR "\nfix_eabi_thunk_offsets.bat - Version $toolVersion\n";
+
+	print STDERR << 'END_OF_HELP';
+
+Usage: fix_eabi_think_offsets [-update] [-perforce] [-match exp] build_log ... 
+
+Parse the output from one or more build logs, extracting MAKEDEF errors and
+warnings which relate to EABI virtual function override thunks. Using this
+information, prepare modified DEF files in which each "missing" export is 
+replaced by a corresponding "unfrozen" export.
+
+-update     Overwrite the existing .def files with the modified versions
+-perforce   Apply "p4 edit" to each of the modified .def files
+-match exp  Process only .def files with names that contain "\exp"
+
+NOTE: The tool assumes that the original build source layout is replicated on 
+the drive where it is being executed.
+
+Build logs will sometimes contain corrupted warning messages, in which case
+the tool will probably report that there is nothing to replace some missing
+symbol. It may help to edit the log file and try again: it is always safe to 
+run this tool more than once on the same log file.
+
+END_OF_HELP
+
+	exit(1);
+	}
+
+my $parseWarnings = 1;
+my $parseErrors = 1;
+
+
+# 2. Parse the build logs, extracting the Makedef warnings & errors
+
+my $line;
+my $header;
+my $parseWarning = 0;
+my $parseError = 0;
+my $variant;
+my $component;
+my $sourceDefFile;
+my @errorOutput;
+my @warningOutput;
+
+my %DefFiles;
+my %TempDefFiles;
+
+sub newDefFile($)
+	{
+	my ($defFile) = @_;
+	if (!defined $DefFiles{$defFile})
+		{
+		@{$DefFiles{$defFile}} = \();
+		}
+	}
+
+while ($line = <>)
+	{
+	if ($line =~ /^Chdir /)
+		{
+		$component = $line;
+		$component =~ s/^Chdir //;
+		$component =~ s/\s//g;
+		next;
+		}
+		
+	if (($line =~ /^  make/) && ($line =~ / CFG\=/))
+		{
+		$variant = $line;
+		$variant =~ s/^.*CFG\=//;
+		$variant =~ s/ .*$//;
+		$variant =~ s/\s//g;
+		next;
+		}
+
+	if ($parseWarnings && ($line =~ /MAKEDEF WARNING:/))
+		{
+		$parseWarning =  1;
+		$parseError = 0;
+		$header = $line;
+		next;		
+		}
+		
+	if ($parseErrors && ($line =~ /MAKEDEF ERROR:/))
+		{
+		$parseWarning =  0;
+		$parseError = 1;
+		$header = $line;
+		next;		
+		}
+
+	if ($line !~ /^  /)
+		{
+		$parseWarning = 0;
+		$parseError = 0;
+		next;
+		}
+
+	if ($parseWarning)
+		{
+		if ($header)
+			{
+			if ($defFile && ($header !~ /\\$defFile/i))
+				{
+				$parseWarning = 0;
+				$parseError = 0;
+				next;
+				}
+			
+			$sourceDefFile = $header;
+			$sourceDefFile =~ s/^.*not yet Frozen in//;
+			$sourceDefFile =~ s/://;
+			$sourceDefFile =~ s/\s//g;
+			
+			push @warningOutput, "--\n$sourceDefFile ($variant)\n$component\n$header";
+			newDefFile($sourceDefFile);
+			$header = "";
+			}
+
+		next if ($line =~ /\*\*\*/);
+		if ($line =~ /^  (\S.*}\.def)(\(\d+\) : \S+.*)$/)
+			{
+			push @{$DefFiles{$sourceDefFile}}, "W$2";
+			$TempDefFiles{$1} = $sourceDefFile;
+			}
+		push @warningOutput, $line;
+		
+		next;		
+		}
+
+	if ($parseError)
+		{
+		if ($defFile && ($line !~ /\\$defFile/i))
+			{
+			$parseWarning = 0;
+			$parseError = 0;
+			next;
+			}
+			
+		if ($header)
+			{
+			$sourceDefFile = $line;
+			$sourceDefFile =~ s/\(.*$//;
+			$sourceDefFile =~ s/\s//g;
+
+			push @errorOutput, "--\n$sourceDefFile ($variant)\n$component\n$header";
+			newDefFile($sourceDefFile);
+			$header = "";
+			}
+
+		next if ($line =~ /\*\*\*/);
+		if ($line =~ /(\(\d+\) : \S+.*)$/)
+			{
+			push @{$DefFiles{$sourceDefFile}}, "E$1";
+			}
+		push @errorOutput, $line;
+		
+		next;
+		}
+
+	# Catch a orphaned warning line...
+	
+	if ($line =~ /^  (\S.*}\.def)(\(\d+\) : \S+.*)$/)
+		{
+		my $tempDefFile = $1;
+		my $newline = $2;
+		
+		next if ($defFile && ($tempDefFile !~ /\\$defFile/i));
+
+		my $sourceDefFile = $TempDefFiles{$tempDefFile};
+		push @{$DefFiles{$sourceDefFile}}, "W$newline";
+		push @warningOutput, $line;
+		}
+
+	}
+
+close BUILD_LOG;
+
+# 3. Process the information for each DEF file
+
+my %Classes;
+my @DefFileList;
+
+foreach my $def (sort keys %DefFiles)
+	{
+	my @replacements;
+	my @errors;
+	my @warnings;
+	my $problems = 0;
+	
+	print "\n----\n$def\n";
+	if ($verbose > 1)
+		{
+		print "Information extracted from Makedef warnings and errors:\n";
+		# printed inside the following loop...
+		}
+
+	# Process into lists of errors and warnings which can be sorted
+	
+	my $previousline = "";
+	foreach $line (sort @{$DefFiles{$def}})
+		{
+		next if ($line eq $previousline);	# skip duplicates
+		$previousline = $line;
+		print "\t$line\n" if ($verbose > 1);
+			
+		if ($line =~ /^(.)\((\d+)\) : (((_ZTh|_ZTv)([n0-9_]+)_(NK?(\d+)(\S+)))\s.*)$/)
+			{
+			my $msgtype = $1;
+			my $lineno = $2;
+			my $defline = $3;
+			my $symbol = $4;
+			my $thunkprefix = $5;
+			my $thunkoffset = $6;
+			my $unthunked = $7;
+			my $topnamelen = $8;
+			my $restofsymbol = $9;
+			
+			if ($msgtype eq "E")
+				{
+				push @errors, "$unthunked\@$thunkprefix $thunkoffset $lineno $symbol";
+				}
+			else
+				{
+				push @warnings, "$unthunked\@$thunkprefix $thunkoffset $symbol";
+				}
+				
+			my $class = substr $restofsymbol, 0, $topnamelen;
+			$Classes{$class} = 1;
+			}
+		else
+			{
+			print "WARNING: Ignored - not a thunk: $line\n";
+			}
+		}
+	
+	# Match up the errors and warnings for related symbols
+	
+	@errors = sort @errors;
+	@warnings = sort @warnings;
+	my $error;
+	my $warning;
+	while (scalar @errors && scalar @warnings)
+		{
+		# Unpack the first entry in each of the lists
+		
+		$error = shift @errors;
+		my ($ekey, $eoffset, $eline, $esymbol) = split / /, $error;
+		$warning = shift @warnings;
+		my ($wkey, $woffset, $wsymbol) = split / /, $warning;
+		
+		# Are they for the same thunk?
+		
+		if ($ekey lt $wkey) 
+			{
+			# no - unmatched error, so put back the warning
+			unshift @warnings, $warning;
+			print "Nothing to replace missing symbol on $eline : $esymbol\n";
+			$problems += 1;
+			next;
+			}
+		
+		if ($ekey gt $wkey)
+			{
+			# no - unmatched warning, so put back the error
+			unshift @errors, $error;
+			print "Nothing missing for replacement symbol : $wsymbol\n";
+			$problems += 1;
+			next;
+			}
+		
+		# Yes - create replacement instruction
+		
+		push @replacements, "$eline $esymbol => $wsymbol";
+		}
+	
+	# drain remaining problems, if any
+	
+	foreach my $error (@errors)
+		{
+		my ($ekey, $eoffset, $eline, $esymbol) = split / /, $error;
+		print "Nothing to replace missing symbol on $eline : $esymbol\n";
+		$problems += 1;
+		}
+	foreach my $warning (@warnings)
+		{
+		my ($wkey, $woffset, $wsymbol) = split / /, $warning;
+		print "Nothing missing for replacement symbol : $wsymbol\n";
+		$problems += 1;
+		}
+		
+	if ($verbose)
+		{
+		print "\nSubstitions identified:\n\t";
+		print join("\n\t", sort @replacements);
+		print "\n";
+		}
+	
+	open DEFFILE, "<$def" or print "Can't open $def: $!\n" and next;
+	my @deflines = <DEFFILE>;
+	close DEFFILE;
+	my $changedlines = 0;
+
+	foreach my $fix (@replacements)
+		{
+		my ($lineno, $before, $to, $after) = split ' ', $fix;
+
+		my $line = @deflines[$lineno-1];
+		if ($line =~ /\s($after)\s/)
+			{
+			print "$lineno - already fixed\n";
+			next;
+			}
+		if ($line =~ /\s($before)\s/)
+			{
+			$line =~ s/(\s)$before(\s)/$1$after$2/;
+			@deflines[$lineno-1] = $line;
+			print "Changed $lineno to $line" if ($verbose > 1);
+			$changedlines += 1;
+			next;
+			}
+		print "$lineno doesn't contain $before\n";
+		$problems += 1;
+		}
+	print "\n";
+	
+	if ($problems != 0)
+		{
+		print "WARNING: $problems thunks could not be repaired\n";
+		}
+
+	if ($changedlines == 0)
+		{
+		print "Nothing to change\n";
+		next;
+		}
+	print "Will change $changedlines lines\n\n";
+
+	# Now update the file (and edit in Perforce if required)
+		
+	if ($update)
+		{
+		chmod 0666, $def;	# make it writeable
+		
+		open DEFFILE, ">$def" or print "Can't open $def for writing: $!\n" and next;
+		print DEFFILE @deflines;
+		close DEFFILE;
+		
+		print "Updated $def\n";
+		push @DefFileList, $def;
+		
+		if ($use_perforce)
+			{
+			print "* p4 edit $def\n";
+			system "p4 edit $def";
+			print "\n";
+			}
+		}
+	}
+
+# 5. More diagnostic information
+
+if (scalar @DefFileList)
+	{
+	print "\nList of updated def files\n";
+	print join("\n", @DefFileList);
+	print "\n";
+	}
+
+if ($verbose && scalar keys %Classes != 0)
+	{
+	print "\nList of affected classes:\n";
+	print join("\n", sort keys %Classes), "\n";
+	}
+
+__END__
+:endofperl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/fix_eabi_think_offsets/group/bld.inf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,19 @@
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRJ_PLATFORMS
+TOOLS2
+
+PRJ_EXPORTS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/fix_eabi_think_offsets/group/fix_eabi_thunk_offsets.mrp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,10 @@
+component	dev_build_sbsv1_fix_eabi_thunk_offsets
+
+source	\src\tools\build\sbsv1\fix_eabi_thunk_offsets
+binary	\src\tools\build\sbsv1\fix_eabi_thunk_offsets\group	all
+exports	\src\tools\build\sbsv1\fix_eabi_thunk_offsets\group
+
+notes_source \component_defs\release.src
+
+ipr T
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/make-abld/group/bld.inf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,22 @@
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRJ_PLATFORMS
+TOOLS2
+
+PRJ_EXPORTS
+#ifndef TOOLS2_LINUX
+../../make-abld/make.exe			/epoc32/tools/make.exe
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/make-abld/group/make-abld.mrp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,10 @@
+component	dev_build_sbsv1_make-abld
+
+source	\src\tools\build\sbsv1\make-abld
+binary	\src\tools\build\sbsv1\make-abld\group	all
+exports	\src\tools\build\sbsv1\make-abld\group
+
+notes_source \component_defs\release.src
+
+ipr T
+
Binary file sbsv1/make-abld/make.exe has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/scpp-abld/group/bld.inf	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,23 @@
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRJ_PLATFORMS
+TOOLS2
+
+PRJ_EXPORTS
+
+#ifndef TOOLS2_LINUX
+../../scpp-abld/scpp.exe			/epoc32/tools/scpp.exe
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/scpp-abld/group/scpp-abld.mrp	Thu Nov 25 13:59:07 2010 +0000
@@ -0,0 +1,10 @@
+component	dev_build_sbsv1_scpp-abld
+
+source	\src\tools\build\sbsv1\scpp-abld
+binary	\src\tools\build\sbsv1\scpp-abld\group	all
+exports	\src\tools\build\sbsv1\scpp-abld\group
+
+notes_source \component_defs\release.src
+
+ipr T
+
Binary file sbsv1/scpp-abld/scpp.exe has changed