Revision: 201002
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 21:35:57 +0200
changeset 0 beb51793110d
child 1 363b11713e0c
Revision: 201002 Kit: 201003
Symbian/SysDefToText/SysDefCollector.pm
Symbian/SysDefToText/SysDefParser.pm
Symbian/SysDefToText/SysDefToText.pl
Symbian/SysDefToText/SysDefToText.pm
build/config/export.mk
build/data/S60_SystemBuild.xml
build/data/S60_SystemModel.xml
build/data/custom_SystemDefinition.xml
build/data/default_build.xml
build/data/default_clean.xml
build/data/s60_sbs_config.xml
build/data/systemDefinition.dtd
build/data/systemDefinitionLayerRef.xml
build/data/targetDefinition.xml
build/makefile
build/tools/S60_build.cmd
build/tools/add_build_definition_filter.pl
build/tools/bldlayer.cmd
build/tools/build_Variant.cmd
build/tools/build_tbs.cmd
build/tools/check_environment.pl
build/tools/check_filename_uniq.pl
build/tools/check_path_lenghts.pl
build/tools/compress_zips.pl
build/tools/gencmd.pl
build/tools/localised_emu.pl
build/tools/parse_what_log.pl
build/tools/sw_version.pl
build/tools/targets_from_mmp.pl
build/tools/toucher.exe
build/tools/zip.exe
build_preparation.cmd
group/bld.inf
layers.sysdef.xml
sysdef_1_4_0.dtd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian/SysDefToText/SysDefCollector.pm	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,610 @@
+#
+# 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:
+#
+#-------------------------------------------------------------------------------
+# package: SysDefCollector
+#
+# usage: Interacts with the SysDefParser to obtain those parts of the system
+#        definition which are relevant to building a named configuration within the
+#        system definition. Contains a SysDefCollector::ParserClient instance which
+#        acts as the interface to the SysDefParser. This separation reduces the
+#        possibility of a method name clash due to the parser callback mechanism
+#        requiring the client to implement methods of the same name as the XML
+#        element tags of interest.
+#
+# public methods:
+#
+#    new(configname, loghandle): constructs a new instance to collect system 
+#       definition info relating to the configuration name 'configname'.
+#
+#    parserClient(): returns a reference to the SysDefCollector::ParserClient
+#       instance - typically for passing to the parser.
+#
+#    options(): returns a list of the abld options flags as specified in the
+#       'option' elements.
+#
+#    targets(): returns a list of the abld target flags as specified by the
+#       'targetList' attributes for each 'buildLayer' element in the specified
+#       configuration.
+#
+#    specialInstructionsFlag(): returns true/false accordingly as any relevant
+#       'specialInstructions' elements are present/not present. Relevant means
+#       instructions which invoke SETUPPRJ.BAT.
+#
+#    components(): returns a hash of component name and bldFile directories
+#        for each component to be built for the specified configuration.
+#
+#    dump(): debug/development method to dump the internal data structures
+#
+#    test(): debug/development method to dump the results of the methods
+#        'options()', 'targets()', 'specialInstructionsFlag()', 'components()'.
+#
+#-------------------------------------------------------------------------------
+package SysDefCollector;
+use strict;
+
+my $debugFlag = 0;
+
+sub new 
+{
+    my ($class, $configname, $loghandle) = @_;
+    my $self = { client => SysDefCollector::ParserClient->new($configname,$loghandle), loghandle => $loghandle };
+    return bless $self, $class;
+}
+
+sub parserClient
+{
+    my $self = shift;
+    return $self->{client};
+}
+
+#-------------------------------------------------------------------------------
+# sub options() - returns the translated list of options for each 'option' element
+#-------------------------------------------------------------------------------
+sub options
+{
+    my $self = shift;
+    return $self->_collectedList('option');
+}
+
+#-------------------------------------------------------------------------------
+# sub targets() - returns the translated list of targets for each 'buildLayer'
+#    in the named configuration.
+#-------------------------------------------------------------------------------
+sub targets
+{
+    my $self = shift;
+
+    my @targets;
+    my @buildLayerTargetList = $self->_collectedList('buildLayerTargetList');
+
+    for my $layerTarget (@buildLayerTargetList)
+    {
+        my %targetListHash = $self->_collectedHash('targetList');
+        my @targetList = @{ $targetListHash{$layerTarget} };
+        push @targets, @targetList;
+    }
+
+    # eliminate any duplicates by storing as hash keys
+    my %targetHash = map { $_, '' } @targets;
+
+    # now translate via the target mapping
+    my %targetMap = $self->_collectedHash('target');
+    @targets = map { $targetMap{$_} } keys %targetHash;
+
+    return @targets;
+}
+
+#-------------------------------------------------------------------------------
+# sub specialInstructionsFlag() - returns true if 'specialInstructions' elements are present.
+#-------------------------------------------------------------------------------
+sub specialInstructionsFlag
+{
+    my $self = shift;
+    my $flag = 0;
+    $flag = $self->_collected()->{specialInstructions}
+                        if exists $self->_collected()->{specialInstructions};
+    return $flag;
+}
+
+#-------------------------------------------------------------------------------
+# sub components() - returns an array of components to be built for the named
+#    configuration. Each array element is a reference to a further array whose
+#    element[0] is the component name and element[1] is the directory location
+#    of that component's 'bld.inf' file.
+#-------------------------------------------------------------------------------
+sub components
+{
+    my $self = shift;
+    my $loghandle = $self->{loghandle};
+    
+    my @unitNames;
+    my @unitListRef = $self->_collectedList('unitListRef');
+    my %unitList    = $self->_collectedHash('unitList');
+    my %unitListNamesHash;  # Used to detect duplicates and then discarded!
+    my %unitNamesHash;      # Used to detect duplicates and then discarded!
+    my %unitMap = $self->_collectedHash('unit');
+    
+    for my $unitListName (@unitListRef)
+    {
+        if (defined $unitListNamesHash{$unitListName})
+        {    # Duplicate unitListName! Ignore it!
+            print $loghandle "Ignoring duplicated unitList: $unitListName\n";
+            next;
+        }
+        $unitListNamesHash{$unitListName} = 1;
+        unless (defined $unitList{$unitListName})
+        {     # No info for this unitList!
+            print $loghandle "No Unit info for unitList: $unitListName\n";
+            next;
+        }
+        my @units = @{ $unitList{$unitListName} };
+        foreach my $unit (@units)
+        {
+            if (defined $unitNamesHash{$unit})
+            {    # Duplicate unit name! Ignore it!
+                print $loghandle "Ignoring duplicated Unit: $unit\n";
+                next;
+            }
+            $unitNamesHash{$unit} = 1;
+            unless (defined $unitMap{$unit})
+            {      # No bldFile (directory) info for this component!
+                print $loghandle "No bldFile info for Unit: $unit\n";
+                next;
+            }
+            my @unitdef = ($unit, $unitMap{$unit});
+            push @unitNames, \@unitdef;
+        }
+    }
+
+    return @unitNames;
+}
+
+#-------------------------------------------------------------------------------
+#
+#-------------------------------------------------------------------------------
+sub dump
+{
+    my $self = shift;
+    my $fh = shift;
+    $self->parserClient($fh)->dump($fh);
+}
+
+#-------------------------------------------------------------------------------
+#
+#-------------------------------------------------------------------------------
+sub test
+{
+    my $self = shift;
+    my $fh = $self->{loghandle};    # Logfile handle
+
+    my @options    = $self->options();
+    my @targets    = $self->targets();
+    my $special    = $self->specialInstructionsFlag();
+    my @components = $self->components($fh);
+
+    print $fh "\nTest Collected System Definition Query Methods\n";
+    print $fh "==============================================\n";
+
+    print $fh "options: ['", (join "', '", @options), "']\n";
+    print $fh "targets: ['", (join "', '", @targets), "']\n";
+    print $fh "special instructions: '", ($special ? "yes" : "no" ), "'\n";
+    print $fh "components:\n{\n";
+    for my $component (@components)
+    {
+        print $fh "\t'", $component->[0], "' => '", $component->[1], "'\n";
+    }
+    print $fh "}\n";
+    print $fh "==============================================\n";
+}
+
+#-------------------------------------------------------------------------------
+# private methods:
+#-------------------------------------------------------------------------------
+sub _collected
+{
+    my $self = shift;
+    return $self->parserClient()->{collected};
+}
+
+sub _collectedHash
+{
+    my ($self, $slot) = @_;
+    my %hash = ();
+    %hash = %{ $self->_collected()->{$slot} }
+                        if exists $self->_collected()->{$slot};
+    return %hash;
+}
+
+sub _collectedList
+{
+    my ($self, $slot) = @_;
+    my @list = ();
+    @list = @{ $self->_collected()->{$slot} }
+                        if exists $self->_collected()->{$slot};
+    return @list;
+}
+
+#-------------------------------------------------------------------------------
+# package: SysDefCollector::ParserClient
+#
+# usage: Interacts directly with the SysDefParser to obtain those parts of the system
+#        definition which are of interest. Implements the parser callback methods
+#        for the XML elements for which we collect information. Some elements are
+#        of interest only if they are enclosed within an outer element with certain
+#        properties. Other elements are always of interest. The latter style of
+#        element is always collected. The former is only collected when it is known
+#        that we are within an appropriate enclosing element. The 'context' property
+#        is used for testing this condition.
+#
+# methods:
+#
+#    new(configname): constructs a new instance to collect system definition info
+#       relating to the configuration name 'configname'.
+#
+#    parserClient(): returns a reference to the SysDefCollector::ParserClient
+#       instance - typically for passing to the parser.
+#
+#-------------------------------------------------------------------------------
+package SysDefCollector::ParserClient;
+use strict;
+
+sub new
+{
+    my ($class, $configname, $loghandle) = @_;
+    my $self = { configname => $configname, configfound => 0, context => {intask => 0}, collected => {}, loghandle => $loghandle };
+    return bless $self, $class;
+}
+
+#-------------------------------------------------------------------------------
+# The following methods 'configuration()', 'configuration_()' initiate and
+# terminate respectively the collection of element information found inside a
+# 'configuration' element with 'name' attribute matching the objects 'configname'
+# attribute.
+#-------------------------------------------------------------------------------
+sub configuration
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+    my $loghandle = $self->{loghandle};
+
+    # start of a 'configuration' element - if the name of the element matches our
+    # 'configname' attribute then we create contexts so that elements of interest
+    # nested within this 'configuration' element can be collected.
+    unless ($attrs{name} eq $self->{configname}) { return; }
+    
+    if ($self->{configfound})
+    {
+        print $loghandle "Ignoring duplicated configuration: $attrs{name} ($attrs{description})\n";
+    }
+    else
+    {
+        $self->{configfound} = 1;
+        $self->{context}->{unitListRef} = [];
+        $self->{context}->{buildLayerTargetList} = [];
+    }
+}
+
+sub configuration_
+{
+    my ($self, $expat, $element) = @_;
+    $self->_debugout(@_);
+
+    # end of a 'configuration' element - save what we have collected within this
+    # 'configuration' element and delete the context so as to terminate collection
+    # of any subsequently encountered nested elements.
+
+    if (exists $self->{context}->{unitListRef})
+    {
+        $self->{collected}->{unitListRef} = $self->{context}->{unitListRef};
+        delete $self->{context}->{unitListRef};
+    }
+
+    if (exists $self->{context}->{buildLayerTargetList})
+    {
+        # eliminate duplicates
+        my %hash = map { $_, '' } @{$self->{context}->{buildLayerTargetList}};
+        my @unique = keys %hash;
+        $self->{collected}->{buildLayerTargetList} = \@unique;
+        delete $self->{context}->{buildLayerTargetList};
+    }
+}
+
+#-------------------------------------------------------------------------------
+# Method 'unitListRef()' accumulates 'unitListRef' unitList information found
+# within a 'configuration element with matching name.
+#-------------------------------------------------------------------------------
+sub unitListRef
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+    
+    if($self->{context}->{intask})
+        { return; }     # Task-specific unitListRef not supported
+
+    # if there is a previously created context for 'unitListRef's then store this one.
+
+    if (exists $self->{context}->{unitListRef})
+    {
+        push @{$self->{context}->{unitListRef}}, $attrs{unitList};
+    }
+    my $x = 1;
+}
+
+#-------------------------------------------------------------------------------
+# Methods 'task()' and 'task_()' track context (i.e. inside a task or not)
+# because task-specific activities are not supported.
+#-------------------------------------------------------------------------------
+sub task
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+    $self->{context}->{intask} = 1;
+}
+
+sub task_
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugout(@_);
+    $self->{context}->{intask} = 0;
+}
+
+#-------------------------------------------------------------------------------
+# Method 'buildlayer()' accumulates 'buildlayer' targetList information found
+# within a 'configuration element with matching name.
+#-------------------------------------------------------------------------------
+sub buildLayer
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+
+    if (exists $self->{context}->{buildLayerTargetList})
+    {
+        push @{$self->{context}->{buildLayerTargetList}}, (split /\s+/, $attrs{targetList});
+    }
+}
+
+#-------------------------------------------------------------------------------
+# The following three methods 'unitList()', 'unitList_()' and 'unitRef()'
+# accumulate 'unitList' and 'unitRef' information found within the 'build' elements.
+#-------------------------------------------------------------------------------
+sub unitList
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+
+    # start of a 'unitList' element  - create a context so that collection of all
+    # 'unitRef's elements found within this 'unitList' element can be collected.
+
+    die "Fatal: context already has unitList\n" if exists $self->{context}->{unitList};
+    $self->{context}->{unitList} = { name => $attrs{name}, list => [] };
+}
+
+sub unitList_
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugout(@_);
+
+    # end of the current 'unitList' element - save what we have collected
+    # and delete the context
+
+    $self->{collected}->{unitList} = {} if ! exists $self->{collected}->{unitList};
+
+    my $unitList = delete $self->{context}->{unitList};
+    $self->{collected}->{unitList}->{$unitList->{name}} = $unitList->{list};
+
+}
+
+sub unitRef
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+
+    # unitRef found - save unitRef data to current context
+
+    die "Fatal: context requires unitList\n" if ! exists $self->{context}->{unitList};
+    push @{$self->{context}->{unitList}->{list}}, $attrs{unit};
+}
+
+#-------------------------------------------------------------------------------
+# The method 'unit()' accumulates 'unit' information found within the 'systemModel'
+# elements.
+#-------------------------------------------------------------------------------
+sub unit
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+
+    # no need to set up a temporary context to collect these since they have global scope
+    $self->{collected}->{unit} = {} if ! exists $self->{collected}->{unit};
+    $self->{collected}->{unit}->{$attrs{unitID}} = $attrs{bldFile};
+}
+
+#-------------------------------------------------------------------------------
+# sub option() - accumulates 'option' element information found within the
+# 'build' element.
+#-------------------------------------------------------------------------------
+sub option
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+
+    if ($attrs{enable} =~ /[Yy]/)
+    {
+        # no need to set up a temporary context to collect these since they have global scope
+        $self->{collected}->{option} = [] if ! exists $self->{collected}->{option};
+        push @{$self->{collected}->{option}}, $attrs{abldOption};
+    }
+}
+
+#-------------------------------------------------------------------------------
+# sub target() - accumulates 'target' element information found within the
+# 'build' element.
+#-------------------------------------------------------------------------------
+sub target
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+
+    $self->{collected}->{target} = {} if ! exists $self->{collected}->{target};
+    $self->{collected}->{target}->{$attrs{name}} = $attrs{abldTarget};
+}
+
+#-------------------------------------------------------------------------------
+# sub targetList() - accumulates 'targetList' element information found within the
+# 'build' element.
+#-------------------------------------------------------------------------------
+sub targetList
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+
+    $self->{collected}->{targetList} = {} if ! exists $self->{collected}->{targetList};
+    my @list = split /\s+/, $attrs{target};
+    $self->{collected}->{targetList}->{$attrs{name}} = \@list;
+}
+
+#-------------------------------------------------------------------------------
+# sub specialInstructions() - sets the 'specialInstructions' flag if a
+# 'specialInstructions' element is encountered. In practice, we are only
+# interested in instructions which invoke SETUPPRJ.BAT as this will require
+# the inclusion of the "bootstrap" line in the output text file.
+#-------------------------------------------------------------------------------
+sub specialInstructions
+{
+    my ($self, $expat, $element, %attrs) = @_;
+    $self->_debugin(@_);
+    if ($attrs{command} =~ /^setupprj.bat/i)
+        {
+        $self->{collected}->{specialInstructions} = 1;
+        }
+}
+
+#-------------------------------------------------------------------------------
+# utility routines for development/debug purposes.
+#-------------------------------------------------------------------------------
+
+sub _debugin
+{
+##    return;             ## Suppress this debugging!
+    my $self = shift;
+    my ($ignore0, $ignore2, $element, @args) = @_;
+    my $loghandle = $self->{loghandle};
+    if ($debugFlag) { print $loghandle "Enter: $element (", (join ' ', @args), ")\n"; }
+}
+
+sub _debugout
+{
+##    return;             ## Suppress this debugging!
+    my $self = shift;
+    my $loghandle = $self->{loghandle};
+    if ($debugFlag) { print $loghandle "Leave: $_[2]\n"; }
+}
+
+sub dump
+{
+    my $self = shift;
+    my $fh = shift;
+
+    print $fh "\nDump Collected System Definition\n\n";    
+    print $fh "================================\n";    
+
+    if (keys %{$self->{collected}} > 0)
+    {
+        if (exists $self->{collected}->{option})
+        {
+            my @option = @{$self->{collected}->{option}};
+            print $fh "option :[", (join ',', @option), "]\n";
+        }
+
+        if (exists $self->{collected}->{specialInstructions})
+        {
+            my $flag = $self->{collected}->{specialInstructions};
+            print $fh "specialInstructions : '", ($flag ?  "yes" : "no"), "'\n";
+        }
+        else
+        {
+            print $fh "specialInstructions : 'no'\n";
+        }
+
+        if (exists $self->{collected}->{buildLayerTargetList})
+        {
+            my @buildLayerTargetList = @{$self->{collected}->{buildLayerTargetList}};
+            print $fh "buildLayerTargetList :[", (join ',', @buildLayerTargetList), "]\n";
+        }
+
+        if (exists $self->{collected}->{unitListRef})
+        {
+            my @unitListRef = @{$self->{collected}->{unitListRef}};
+            print $fh "unitListRef :[", (join ',', @unitListRef), "]\n";
+        }
+
+        if (exists $self->{collected}->{unitList})
+        {
+            print $fh "unitList:\n{\n";
+            my %unitList = %{$self->{collected}->{unitList}};
+            for my $key (keys %unitList)
+            {
+                 my @list = @{$unitList{$key}};
+                 print $fh "\t'$key' has units:[", (join ',', @list), "]\n";
+            }
+            print $fh "}\n";
+        }
+
+        if (exists $self->{collected}->{target})
+        {
+            print $fh "target:\n{\n";
+            my %target = %{$self->{collected}->{target}};
+            for my $key (keys %target)
+            {
+                 print $fh "\t'$key' => '", $target{$key} , "'\n";
+            }
+            print $fh "}\n";
+        }
+
+        if (exists $self->{collected}->{targetList})
+        {
+            print $fh "targetList:\n{\n";
+            my %targetList = %{$self->{collected}->{targetList}};
+            for my $key (keys %targetList)
+            {
+                 my @list = @{$targetList{$key}};
+                 print $fh "\t'$key' has targets:[", (join ',', @list), "]\n";
+            }
+            print $fh "}\n";
+        }
+
+        if (exists $self->{collected}->{unit})
+        {
+            print $fh "unit:\n{\n";
+            my %unit = %{$self->{collected}->{unit}};
+            for my $key (keys %unit)
+            {
+                 print $fh "\t'$key' => '", $unit{$key} , "'\n";
+            }
+            print $fh "}\n";
+        }
+    }
+    else
+    {
+        print $fh "Nothing collected\n";
+    }
+    print $fh "================================\n";    
+}
+
+#-------------------------------------------------------------------------------
+# -EOF-
+#-------------------------------------------------------------------------------
+1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian/SysDefToText/SysDefParser.pm	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,131 @@
+#
+# 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:
+#
+#-------------------------------------------------------------------------------
+# package: SysDefParser
+#
+# usage: Wrapper for an XML parser to dispatch callbacks to a client object which
+#    analyses the parsed XML data. The auxiliary package SysDefParser::Dispatcher
+#    acts as an intermediary between the parser and the client to convert function
+#    callbacks to method callbacks using perl's AUTOLOAD mechanism.
+#
+# public methods:
+#
+#    new(-client => <client reference>, [-parser => <package name>]) : creates a
+#        instance. <client reference> is the instance to which the parser callbacks
+#        are dispatched. <package name> is an optional alternative parser client
+#        package to use instead of the default XML::Parser class.
+#
+#    parse(<fileh>): parse the XML data from filehandle <fileh> dispatching
+#        callbacks to the client object.
+#         
+#-------------------------------------------------------------------------------
+
+package SysDefParser;
+use strict;
+
+sub new
+{
+    my ($class, %args) = @_;
+    my $self = bless {}, $class;
+    $self->{client} = delete $args{-client};
+
+    if (exists $args{-parser})
+    {
+        $args{Pkg} = 'SysDefParser::Dispatcher';
+        require $args{-parser};
+        $self->{parser} = $args{-parser}->createParser(%args);
+    }
+    else
+    {
+        $self->{parser} = $class->_createParser(%args);
+    }
+
+    return $self;
+}
+
+sub _createParser
+{
+    my ($class, %args) = @_;
+    require XML::Parser;
+    return XML::Parser->new
+           (
+               Style        => 'Subs',
+               Pkg          => 'SysDefParser::Dispatcher',
+               ErrorContext => 2
+           );
+}
+
+my $PARSERCLIENT = undef;
+
+sub _client { return $PARSERCLIENT; }
+
+sub parse
+{
+    my ($self, $fileh) = @_;
+
+    # we can't pass any context down to the underlying parser so that we can work out which
+    # object any callbacks from the parser are associated with so, assuming that the parser will
+    # not be called in a re-entrant fashion, we store the context at this point, so that we can
+    # then dispatch the callbacks from the parsers 'parse' method to those methods of the saved
+    # $PARSERCLIENT instance.
+
+    die "Fatal: client object not set\n" if ! defined $self->{client};
+    die "Fatal: parser client object already set\n" if defined $PARSERCLIENT;
+    $PARSERCLIENT = $self->{client};
+
+    # call the parser, callbacks will be dispatched to sub AUTOLOAD in SysDefParser::Dispatcher
+
+    my $rv =$self->{parser}->parse($fileh);
+
+    # finished parsing, unset the context
+
+    $PARSERCLIENT = undef;
+
+    return $rv;
+}
+
+#-------------------------------------------------------------------------------
+# package SysDefParser::Dispatcher
+#
+# usage: Internal package. Uses AUTOLOAD mechanism to receive parser callbacks and
+#    convert them to object method calls on teh client object.
+#
+#-------------------------------------------------------------------------------
+package SysDefParser::Dispatcher;
+use strict;
+
+sub AUTOLOAD
+{
+    my @ARGS = @_;
+
+    my $client = SysDefParser::_client();
+
+    die "Fatal: parser client object not set\n" if ! defined $client;
+
+    # translate the called back function name to the client method name
+    my $clientpkg = ref($client);
+    my $method = $SysDefParser::Dispatcher::AUTOLOAD;
+
+    $method =~ s/^SysDefParser::Dispatcher/$clientpkg/;
+
+    # dispatch the parser's callback to the client object (if implemented by client)
+    $client->$method(@ARGS) if $client->can($method);
+}
+
+#-------------------------------------------------------------------------------
+# -EOF-
+#-------------------------------------------------------------------------------
+1;
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian/SysDefToText/SysDefToText.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,116 @@
+#
+# 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:
+#
+#!perl
+# This script converts new-style System Definition XML files to the older
+# .TXT file format (i.e. files of the type GT.TXT, Techview.TXT etc.)
+
+#
+# Modified by S60 to get two xml input file
+# Can use cases when system model and system build located in different files
+#
+
+use strict;
+use FindBin;		# for FindBin::Bin
+use lib $FindBin::Bin;
+use Getopt::Long;
+use SysDefToText;
+
+my $debug;
+
+my ($config, $XMLfile, $outfile, $logfile) = ProcessCommandLine();
+
+print STDERR "Configuration:    $config\n";
+print STDERR "Input .XML file:  @$XMLfile\n";
+print STDERR "Output .TXT file: $outfile\n";
+if (defined $logfile)
+    {
+    print STDERR "Logfile:          $logfile\n";
+    }
+
+SysDefToText::ConvertFile($config, $XMLfile, $outfile, $logfile);
+
+exit(0);
+
+# ProcessCommandLine
+#
+# Inputs
+#   @ARGV
+#
+# Outputs
+#   Returns Configuration Nmae and filenames.
+#
+# Description
+#   This function processes the command line
+#   On error, exits via Usage();
+
+sub ProcessCommandLine
+{
+    my ($help, $config, @XMLfile, $XMLfile1, $outfile, $logfile);
+    my $args = @ARGV;
+
+    my $ret = GetOptions('h' => \$help, 'n=s' => \$config, 'x=s' => \@XMLfile, 'o=s' => \$outfile, 'l=s' => \$logfile);
+
+    if (($help) || (!$args) || (!$ret) || (!@XMLfile) || (!defined $config) || (!defined $outfile))
+    {
+        Usage();
+    }
+    if (@ARGV)
+    {
+        Usage ("Redundant information on command line: @ARGV");
+    }
+    return($config, \@XMLfile, $outfile, $logfile);
+}
+
+# Usage
+#
+# Input: Error message, if any
+#
+# Output: Usage information.
+#
+
+sub Usage
+{
+    if (@_)
+    {
+        print "\n****@_\n";
+    }
+
+    print <<USAGE_EOF;
+
+    Usage: SysDefToText.pl parameters [options]
+
+    Parameters:
+
+    -x   XML System Model File [Multiple -x options allowed]
+    -n   Named Configuration
+    -o   Output Text (.TXT) file
+
+    Options:
+
+    -h   Display this Help and exit.
+    -l   Logfile (.LOG)
+
+USAGE_EOF
+
+    exit 1;
+}
+
+sub dbgprint
+{
+    if($debug) { print ">>@_"; }
+}
+
+__END__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian/SysDefToText/SysDefToText.pm	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,219 @@
+#
+# 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:
+#
+# This module converts new-style System Definition XML files to the older
+# .TXT file format (i.e. files of the type GT.TXT, Techview.TXT etc.)
+
+package SysDefToText;
+use strict;
+use SysDefCollector;
+use SysDefParser;
+
+# ConvertFile
+#
+# Inputs
+#   Name of XML file to read
+#   Configuration name
+#
+# Outputs
+#   Writes data to Text File
+#   Writes to log file, if filename defined.
+#
+# Description
+#   This is the "top level" subroutine for the conversion of a "SysDef" .XML file to an old format "Text" file.
+#
+sub ConvertFile
+{
+    my ($configname, $XMLfile, $outfile, $logfile) = @_;
+
+#    my $XMLhandle = \*XMLFILE;
+    my $outhandle = \*OUTFILE;
+    my $loghandle = \*LOGFILE;
+
+#    open $XMLhandle, "<$XMLfile" or die "Cannot open input file: $XMLfile";
+    open $outhandle, ">$outfile" or die "Cannot open output file: $outfile";
+    if (defined $logfile)
+    {
+        open $loghandle, ">$logfile" or die "Cannot open logfile: $logfile";
+        print $loghandle "Processing: $XMLfile    Output to: $outfile\n";
+        print $loghandle "==================================================\n";
+    }
+    else
+    {
+        $loghandle = \*STDERR;
+    }
+    
+    my $sysdef = SysDefCollector->new($configname,$loghandle);
+    my $parser = SysDefParser->new(-client => $sysdef->parserClient());
+
+		foreach my $file (@$XMLfile) {
+	    my $XMLhandle = \*file;
+	    open $XMLhandle, "<$file" or die "Cannot open input file: $file";
+	    $parser->parse($XMLhandle);
+	    close $XMLhandle;
+		}
+
+    ## Suppress this debugging!
+    ##{   # FTB just call dump() and test() routines.
+        #$sysdef->dump($loghandle);
+        #$sysdef->test($loghandle);
+    ##}
+    
+    WriteHeader($outhandle,$configname,$XMLfile);
+
+    my @list0 = $sysdef->options();          # ABLD options
+    my @list1 = $sysdef->targets();
+    WriteOptionList($outhandle,\@list0,\@list1);
+
+    my @list2 = $sysdef->components();
+    my $bootflag = $sysdef->specialInstructionsFlag();
+    WriteComponentList($outhandle,\@list2,$bootflag);
+    
+#    close XMLFILE;
+    close OUTFILE;
+    if (defined $logfile) { close LOGFILE; }
+}
+
+# WriteHeader
+#
+# Inputs
+#   Handle of Text file to which to write
+#   Configuration name
+#
+# Outputs
+#   Writes data to Text File
+#
+# Description
+#   This subroutine initiates the old format "Text" file.
+#
+sub WriteHeader
+{
+    my $fh = shift;
+    my $config = shift;
+    my $XMLfile = shift;
+    print $fh <<HEADER_TXT;
+#
+# ****************************** IMPORTANT NOTE ************************************
+#
+# This file was generated using information read from: @$XMLfile.
+# The configuration was specified as: $config
+#
+# **********************************************************************************
+#
+
+HEADER_TXT
+}
+
+# WriteOptionList
+#
+# Inputs
+#   Handle of Text file to which to write
+#   Array reference for list of ABLD Options
+#   Array reference for list of targets
+#
+# Outputs
+#   Writes data to Text File
+#
+# Description
+#   This subroutine writes out options and targets (one per line) to the old format "Text" file.
+#   Note that option lines and target lines have the same format! 
+#
+sub WriteOptionList
+{
+    my $fh = shift;
+    my $abldoptions = shift;      # Array ref.
+    my $targets = shift;          # Array ref.
+  
+    print $fh "# Optional variations in the generated scripts\n\n";
+
+    my $column2pos = 8;
+    foreach my $option (@$abldoptions)
+    {
+        my $name = '<option ????>';
+        if ($option =~ /^-(.+)/) {$name = "<option $1>"}
+        my $len = length $name;
+        while ($len > $column2pos) { $column2pos += 8; }
+        printf $fh "%-*s\t# use abld %s\n", $column2pos, $name, $option;
+    }
+
+    foreach my $target (@$targets)
+    {
+        # abld targets are only one word
+        next if ($target =~ /\w+\s+\w+/);
+        my $name;
+        if ($target =~ /(misa|mint|mcot|mtemplate|meig)/i)
+        {
+            $name = "<option arm_assp $target>";
+        } else {
+            $name = "<option $target>";
+        }
+        my $len = length $name;
+        while ($len > $column2pos) { $column2pos += 8; }
+        printf $fh "%-*s\t#\n", $column2pos, $name;
+    }
+
+    print $fh "\n";
+}
+
+# WriteComponentList
+#
+# Inputs
+#   Handle of Text file to which to write
+#   Hash reference for hash of Components
+#
+# Outputs
+#   Writes data to Text File
+#
+# Description
+#   This subroutine writes out the Name and filepath (abld_directory) for each component,
+#   one component per line, to the old format "Text" file.
+#
+sub WriteComponentList
+{
+    my $fh = shift;
+    my $listref = shift;    # Ordered array of array refs -> "Name" and "abld_directory" pairs
+    my $bootflag = shift;   # Boolean flag indicates whether default bootstrap "component" required
+    
+    print $fh "# List of components required \n";
+    print $fh "#\n# Name		abld_directory\n";
+
+    if($bootflag)
+        {
+        print $fh "#\n# Bootstrapping....\n\n";
+        print $fh "<special bldfiles E32Toolp group>			# Special installation for E32ToolP\n\n";
+        print $fh "# Components:\n";
+        }
+    print $fh "#\n";
+
+    ##print $fh "# Things which generate include files used by later components, e.g. .RSG, .MBG or .h files\n\n";
+    ##print $fh "# Everything else\n\n";
+
+    my $column2pos = 8;
+    foreach my $component (@$listref)
+    {
+        my $len = length $component->[0];
+        while ($len > $column2pos) { $column2pos += 8; }
+        my $bldfile = $component->[1];
+        if ($bldfile =~ /^\\/) {
+          $bldfile =~ s/^\\//i;
+        }
+        printf $fh "%-*s\t%s\n", $column2pos, $component->[0], $bldfile;
+    }
+}
+
+1;
+
+__END__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/config/export.mk	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,61 @@
+#
+# 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:
+#
+# buildpreparation's actual configuration export makefile
+
+MAKEFILE =	/sf/tools/buildplatforms/build/config/export.mk
+$(call push,MAKEFILE_STACK,$(MAKEFILE))
+
+S60BUILDTOOLFILES =				$(MAKEFILEDIR)../tools/toucher.exe																			/epoc32/tools/ \
+													$(MAKEFILEDIR)../tools/zip.exe																					/epoc32/tools/ \
+													$(MAKEFILEDIR)../tools/S60_build.cmd																		/epoc32/tools/ \
+													$(MAKEFILEDIR)../tools/localised_emu.pl																	/epoc32/tools/ \
+													$(MAKEFILEDIR)../tools/build_tbs.cmd																		/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../tools/gencmd.pl																				/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../tools/targets_from_mmp.pl															/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../tools/build_Variant.cmd																/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../tools/sw_version.pl																		/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../tools/parse_what_log.pl																/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../tools/check_filename_uniq.pl														/epoc32/tools/ \
+													$(MAKEFILEDIR)../tools/check_path_lenghts.pl														/epoc32/tools/ \
+													$(MAKEFILEDIR)../tools/add_build_definition_filter.pl										/epoc32/tools/s60tools/
+
+PRODUCTIZATIONFILES =			$(MAKEFILEDIR)../tools/check_environment.pl															/epoc32/tools/
+
+S60BUILDDATAFILES =				$(MAKEFILEDIR)../data/S60_SystemBuild.xml																/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../data/S60_SystemModel.xml																/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../data/systemDefinitionLayerRef.xml											/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../data/custom_SystemDefinition.xml												/epoc32/tools/s60tools/ \
+													$(MAKEFILEDIR)../data/s60_sbs_config.xml																/epoc32/sbs_config/
+
+STYLESYSTEMDEFFILES =			$(MAKEFILEDIR)../data/default_build.xml																	/epoc32/tools/systemDefinition/ \
+													$(MAKEFILEDIR)../data/default_clean.xml																	/epoc32/tools/systemDefinition/ \
+													$(MAKEFILEDIR)../data/systemDefinition.dtd															/epoc32/tools/systemDefinition/ \
+													$(MAKEFILEDIR)../data/targetDefinition.xml															/epoc32/tools/systemDefinition/
+
+
+buildpreparation_config										:: buildpreparation_config-s60buildtool buildpreparation_config-productization buildpreparation_config-s60builddata buildpreparation_config-stylesystemdef
+buildpreparation_config-s60buildtool 			::
+buildpreparation_config-productization  	::
+buildpreparation_config-s60builddata 			::
+buildpreparation_config-stylesystemdef		::
+
+
+$(call addfiles, $(S60BUILDTOOLFILES), buildpreparation_config-s60buildtool)
+$(call addfiles, $(PRODUCTIZATIONFILES), buildpreparation_config-productization)
+$(call addfiles, $(S60BUILDDATAFILES), buildpreparation_config-s60builddata)
+$(call addfiles, $(STYLESYSTEMDEFFILES), buildpreparation_config-stylesystemdef)
+
+$(call popout,MAKEFILE_STACK)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/data/S60_SystemBuild.xml	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,370 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition [
+
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset 
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED  
+  span CDATA #IMPLIED
+  level CDATA #IMPLIED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>
+]>
+<SystemDefinition name="S60_SystemBuild" schema="1.4.0">
+<systemModel>
+
+
+	<layer name="os_layer">
+	</layer>
+	<layer name="bldfirst_mw_layer">
+	</layer>
+	<layer name="mw_layer">
+	</layer>
+	<layer name="bldfirst_app_layer">
+	</layer>
+	<layer name="app_layer">
+	</layer>
+	<layer name="tools_layer">
+	</layer>
+	<layer name="stubs_layer">
+	</layer>
+
+<layer name="src">
+<module name="hlpmodel">
+<component name="hlpmodel">
+<unit unitID="S60_hlpmodel" name="hlpmodel" bldFile="\src\common\generic\app-services\hlpmodel\group" mrp=""/>
+</component>
+</module>
+</layer>
+<layer name="extra">
+	<module name="WlanEapSettingsUi_ccx">
+		<component name="WlanEapSettingsUi_ccx">
+			<unit unitID="s60_mw_networking_networkingutilities_WlanEapSettingsUi_group_ccx" name="WlanEapSettingsUi_ccx" bldFile="\sf\mw\accesssec\wlansecuritysettings\wlaneapsettingsui\group\ccx" mrp=""/>
+		</component>
+	</module>
+</layer>
+
+<layer name="SF_SOS">
+<module name="sf_licenseetsystub">
+<component name="sf_licenseetsystub">
+<unit unitID="sf_os_cellularsrv_telephonyserverplugins_licenseetsystub" name="sf_licenseetsystub" bldFile="\sf\os\cellularsrv\telephonyserverplugins\licenseetsystub\group" mrp="" filter="!no_stubs"/>
+</component>
+</module>
+<module name="sf_common_tsy">
+<component name="sf_common_tsy">
+<unit unitID="sf_os_cellularsrv_telephonyserverplugins_common_tsy" name="sf_common_tsy" bldFile="\sf\os\cellularsrv\telephonyserverplugins\common_tsy\group" mrp="" filter=""/>
+</component>
+</module>
+</layer>
+
+</systemModel>
+
+  <build>
+    <option name="KEEPGOING" abldOption="-keepgoing" description="Causes make to keepgoing on errors" enable="Y"/>
+<!--    <option name="SAVESPACE" abldOption="-savespace" description="Causes the removal of intermediate files" enable="Y"/> -->
+    <target name="WINS" abldTarget="wins" description="MSVC Compiler"/>
+    <target name="WINS_REL" abldTarget="wins urel" description="MSVC Compiler"/>
+    <target name="WINS_DEB" abldTarget="wins udeb" description="MSVC Compiler"/>
+    <target name="WINSCW" abldTarget="winscw" description="CodeWarrior Compiler"/>
+    <target name="WINSCW_REL" abldTarget="winscw urel" description="CodeWarrior Compiler"/>
+    <target name="WINSCW_DEB" abldTarget="winscw udeb" description="CodeWarrior Compiler"/>
+    <target name="TOOLS" abldTarget="tools" description="MSVC Compiler for Tools"/>
+    <target name="TOOLS_REL" abldTarget="tools rel" description="MSVC Compiler for Tools Release mode only"/>
+    <target name="ARMV5" abldTarget="armv5" description="RVCT Compiler"/>
+    <target name="ARMV5_REL" abldTarget="armv5 urel" description="RVCT Compiler"/>
+    <target name="ARMV5_DEB" abldTarget="armv5 udeb" description="RVCT Compiler"/>
+    <target name="ARM9E" abldTarget="arm9e" description="RVCT Compiler"/>
+
+    <!-- Aditional Targets -->
+    <target name="CWTOOLS" abldTarget="cwtools" description="CodeWarrior Compiler for Tools"/> <!-- Not supported -->
+    <target name="CWTOOLS_REL" abldTarget="cwtools rel" description="CodeWarrior Compiler for Tools Release mode only"/> <!-- Not supported -->
+    
+    <targetList name="default" description="Main Targets" target="WINSCW ARMV5"/>
+    <targetList name="default_winscw" description="Main Targets" target="WINSCW"/>
+    <targetList name="default_armv5" description="Main Targets" target="ARMV5"/>
+    <targetList name="default_rel" description="Main Targets for rel" target="WINSCW_REL ARMV5_REL"/>
+    <targetList name="default_deb" description="Main Targets for deb" target="WINSCW_DEB ARMV5_DEB"/>
+    <targetList name="default_debrel" description="Main Targets for WINSCW deb and ARMV5 urel" target="WINSCW_DEB ARMV5_REL"/>
+    <targetList name="default_tools" description="tools Targets" target="TOOLS"/>
+    <targetList name="tools_rel" description="tools Release Targets" target="TOOLS_REL"/>
+    <targetList name="cwtools" description="cwtools Targets" target="CWTOOLS"/>
+    <targetList name="cwtools_rel" description="cwtools Release Targets" target="CWTOOLS_REL"/>
+    <targetList name="arm9e" description="arm9e Release Targets" target="ARM9E"/>
+  
+
+  
+   	<configuration name="S60_bldmelast" description="S60 bldmelast part" filter="S60_5_0,western,raptor_S60_bldmelast">
+
+<!-- for target arm9e 
+      <task><specialInstructions name="EAacPlusCodecPlugin" cwd="\sf\os\mm\audio\ARM_CMMF_codecs\EAacPlusCodecPlugin\Group" command="bldmake bldfiles -k"/></task> 
+      <task><specialInstructions name="EAacPlusCodecPlugin" cwd="\sf\os\mm\audio\ARM_CMMF_codecs\EAacPlusCodecPlugin\Group" command="abld build arm9e -k"/></task> 
+-->
+			<layerRef layerName="arm9e_layer"/>
+  		<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+  		<task><buildLayer command="abld build " targetList="arm9e" unitParallel="Y" targetParallel="Y"/></task>
+  		<task><buildLayer command="abld build -what" targetList="arm9e" unitParallel="Y" targetParallel="Y"/></task>
+  		<task><buildLayer command="abld build -check" targetList="arm9e" unitParallel="Y" targetParallel="Y"/></task>
+
+  	</configuration>
+
+   	<configuration name="S60_bldmelast_sf" description="S60 bldmelast part" filter="S60_5_0,western">
+      <!--unitListRef unitList="S60_BLDVARIANT_SF"/>   		
+   		<unitListRef unitList="S60_REGIONALVARIANT"/-->
+
+<!-- do what for regional variant that those can be zipped from bldmelast build log file -->
+  		<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+  		<task><buildLayer command="abld makefile" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+  		<task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+
+  	</configuration>
+  	
+		<configuration name="S60_clean" description="S60 clean build" filter="raptor_S60_clean,oem_build,stubs">
+			<layerRef layerName="os_layer"/>
+			<layerRef layerName="bldfirst_mw_layer"/>
+			<layerRef layerName="mw_layer"/>
+			<layerRef layerName="bldfirst_app_layer"/>
+			<layerRef layerName="app_layer"/>
+			<layerRef layerName="tools_layer"/>
+			<layerRef layerName="stubs_layer"/>
+			      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+		<configuration name="S60_sf" description="S60 sf build" filter="raptor_S60_sf,sf_build">
+			<layerRef layerName="os_layer"/>
+			<layerRef layerName="bldfirst_mw_layer"/>
+			<layerRef layerName="mw_layer"/>
+			<layerRef layerName="bldfirst_app_layer"/>
+			<layerRef layerName="app_layer"/>
+			<layerRef layerName="tools_layer"/>
+			<layerRef layerName="stubs_layer"/>
+			     
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+    
+		<configuration name="S60_winscw" description="S60 winscw build" filter="oem_build">
+			<layerRef layerName="os_layer"/>
+			<layerRef layerName="bldfirst_mw_layer"/>
+			<layerRef layerName="mw_layer"/>
+			<layerRef layerName="bldfirst_app_layer"/>
+			<layerRef layerName="app_layer"/>
+			<layerRef layerName="tools_layer"/>
+			<layerRef layerName="stubs_layer"/>
+
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+		<configuration name="S60_fast" description="S60 clean build for winscw udeb and armv5 urel" filter="oem_build">
+			<layerRef layerName="os_layer"/>
+			<layerRef layerName="bldfirst_mw_layer"/>
+			<layerRef layerName="mw_layer"/>
+			<layerRef layerName="bldfirst_app_layer"/>
+			<layerRef layerName="app_layer"/>
+			<layerRef layerName="tools_layer"/>
+			<layerRef layerName="stubs_layer"/>
+      
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default_debrel" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default_debrel" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default_debrel" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default_debrel" unitParallel="Y" targetParallel="Y"/></task>
+      
+    </configuration>
+
+
+		<configuration name="S60_complementary" description="S60 complementary build" filter="raptor_S60_complementary">
+			<layerRef layerName="complementary_layer"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+<!--  
+launch -what command for binary only component so thosa can be zipped  
+this configuration can be used only when those components has built among normal build
+-->
+		<configuration name="binary_only_what" description="do what command for binary only components" filter="raptor_binary_only_what">
+			<layerRef layerName="bin_layer"/>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+
+<!--  OS Extension build configurations start  -->
+
+	<configuration name="OSExt" description="S60 OS Extension build" filter="osext,dfs_build">
+			<layerRef layerName="os_layer"/>
+			<layerRef layerName="stubs_layer"/>
+      <task><buildLayer command="bldmake bldfiles -k" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export -k" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target -k" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+  	  <task><buildLayer command="abld final" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld -what build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+  </build>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/data/S60_SystemModel.xml	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,1139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE SystemDefinition [
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED
+  proFile CDATA #IMPLIED
+  qmakeArgs CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>
+]>
+<!-- 
+============================================================================ 
+Name        : sysdef_dtd_1_5_1.xml 
+Part of     : Helium 
+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 the License "Eclipse Public License v1.0"
+which accompanies this distribution, and is available
+at the URL "http://www.eclipse.org/legal/epl-v10.html".
+Initial Contributors:
+Nokia Corporation - initial contribution.
+Contributors:
+Description:
+============================================================================
+-->
+<SystemDefinition name="sysdef_dtd_1_5_1_xml + QuickOffice + adobereader + webvideo + wmdrmkeystorage_dist + wmdrmpd_dist + zipviewer + AknPictographBitmaps + avdomain + s60platformrelease + ctd_layers + oemrndtools + swconfigapps + avdomain + btaudioadaptation_stub + drm_stub + ocrsrv_stub + omasuplasnconverterstubimpl + posmsgpluginreferenceimpl + power_save_display_mode_stub + srsfenginestub + systemswstubs + tactileclickplugin_stub + wlanhwinit_stub + camera + commonemail + conntools + contacts + contentcontrol + conversations + devicecontrol + systemswextensions + files + graphicsuis + helps + homescreen + im + iptelephony + jrt + location + messaging + mmsharinguis + avdomain + organizer + phone + photos + printing + profile + radio + rndtools + screensaver + settingsuis + speechsrv + graphics + utils + video + videotelephony + avdomain + webuis + accesssec + appinstall + appsupport + btservices + camerasrv + classicui + dlnasrv + drm + gsprofilesrv + hapticsservices + avdomain + homescreensrv + imghandling + imsrv + inputmethods + ipappprotocols + ipappservices + ipconnmgmt + legacypresence + locationsrv + mds + messagingmw + metadatasrv + avdomain + avdomain + mmuifw + netprotocols + opensrv + phonesrv + platformtools + ptihangulcore + ptikoreanqwertycore + qt + remoteconn + remotemgmt + remotestorage + securitysrv + serviceapi + serviceapifw + shortlinkconn + ossrv + svgt + uiaccelerator + uiresources + uitools + usbservices + videoutils + vpnclient + web + websrv + wirelessacc + bt + deviceplatformrelease + devicesrv + graphics + imagingext + lbs + avdomainosext + networkingsrv + osrndtools + ossrv + systemswextensions + usb + wlan + xmlsrv + buildplatforms + homescreentools" schema="1.5.1 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0"><systemModel>
+    <layer name="complementary_layer">
+      <module name="QuickOffice">
+        <unit unitID="orgdo.QuickOffice" mrp="" bldFile="ext/complementary/QuickOffice/group" filter="dfs_build" name="QuickOffice"/>
+      </module>
+<module name="adobereader">
+        <unit unitID="orgdo.adobereader" mrp="" bldFile="ext/complementary/adobereader/group" filter="dfs_build" name="adobereader"/>
+      </module>
+<module name="webvideo">
+        <unit unitID="wvdo.webvideo" mrp="" bldFile="ext/complementary/webvideo/group" name="webvideo"/>
+      </module>
+<module name="wmdrmkeystorage_dist">
+        <unit unitID="sedo.wmdrmkeystorage_dist" mrp="" bldFile="ext/complementary/wmdrmkeystorage_dist/group" name="wmdrmkeystorage_dist" filter="dfs_build"/>
+      </module>
+<module name="wmdrmpd_dist">
+        <unit unitID="sedo.wmdrmpd_dist" mrp="" bldFile="ext/complementary/wmdrmpd_dist/group" name="wmdrmpd_dist" filter="dfs_build"/>
+      </module>
+<module name="zipviewer">
+        <unit unitID="orgdo.zipviewer" mrp="" bldFile="ext/complementary/zipviewer/group" filter="dfs_build" name="zipviewer"/>
+      </module></layer>
+<layer name="mw_layer">
+      <module name="AknPictographBitmaps">
+        <unit unitID="abs.AknPictographBitmaps" mrp="" bldFile="ext/mw/AknPictographBitmaps" filter="no_build" name="AknPictographBitmaps"/>
+      </module>
+<module name="mobilemidi">
+				<unit unitID="mobilemidi51" mrp="" bldFile="ext/mw/mobilemidi/Group" name="mobilemidi51"/>
+			</module>
+<module name="accesssec">
+        <unit unitID="netdo.accesssec" mrp="" bldFile="sf/mw/accesssec/group" name="accesssec"/>
+        <unit unitID="netdo.wpxeapol" mrp="" bldFile="sf/mw/accesssec/eapol/eapol_framework/eapol_symbian/group/wpxeapol" filter="dfs_build" name="wpxeapol"/>
+        <unit unitID="netdo.wpxeap" mrp="" bldFile="sf/mw/accesssec/eapol/eapol_framework/eapol_symbian/group/wpxeap" filter="dfs_build" name="wpxeap"/>
+        <unit unitID="netdo.wpx" mrp="" bldFile="sf/mw/accesssec/wlansecuritysettings/wlaneapsettingsui/group/wpx" filter="dfs_build" name="wpx"/>
+        <unit unitID="netdo.wapisymbian" mrp="" bldFile="sf/mw/accesssec/eapol/eapol_framework/wapi_symbian/group" filter="dfs_build" name="wapisymbian"/>
+        <unit unitID="netdo.wapiui" mrp="" bldFile="sf/mw/accesssec/wlansecuritysettings/wapisecuritysettingsui/group/" filter="dfs_build" name="wapiui"/>
+      </module>
+<module name="appinstall">
+        <unit unitID="sedo.appinstall" mrp="" bldFile="sf/mw/appinstall/group" name="appinstall"/>
+      </module>
+<module name="appsupport">
+        <unit unitID="sydo.appsupport" name="appsupport" bldFile="sf/mw/appsupport/group" mrp=""/>
+      </module>
+<module name="">
+        <unit unitID="sydo.appsupport.appsupport_plat.flash_mmi_service_interface_custom_api" name="sydo_appsupport_appsupport_plat_flash_mmi_service_interface_custom_api" bldFile="sf/mw/appsupport/appsupport_plat/flash_mmi_service_interface_custom_api/group" mrp="" filter="!sf_build"/>
+        <unit unitID="sydo.appsupport.appsupport_plat.flash_netscape_plugin_command_api" name="sydo_appsupport_appsupport_plat_flash_netscape_plugin_command_api" bldFile="sf/mw/appsupport/appsupport_plat/flash_netscape_plugin_command_api/group" mrp="" filter="!sf_build"/>
+<unit unitID="mmmw_3GPExtParserLib" mrp="" bldFile="sf/mw/mmmw/mmserv/metadatautility/3GPExtParserLib/group" filter="!sf_build" name="mmmw_3GPExtParserLib"/>
+<unit unitID="mtp" mrp="" bldFile="sf/mw/mmmw/mtp/group" filter="!sf_build" name="mtp"/>
+<unit unitID="sedo.securitysrv.pkiutilities.Certificates" bldFile="sf/mw/securitysrv/pkiutilities/Certificates/group" mrp="" filter="sf_build" name="sedo_securitysrv_pkiutilities_Certificates"/>
+<unit unitID="sedo.securitysrv.pkiutilities.Certificates_OEM" bldFile="sf/mw/securitysrv/pkiutilities/Certificates_OEM/group" mrp="" filter="oem_build" name="sedo_securitysrv_pkiutilities_Certificates_OEM"/>
+<unit unitID="lcdo.usbservices.usbclasses.usbosdescriptorhandler" mrp="" bldFile="sf/mw/usbservices/usbclasses/usbosdescriptorhandler/group" filter="!sf_build" name="usbservices_usbclasses_usbosdescriptorhandler"/>
+<unit unitID="lcdo.usbservices.usbclasses.msmmplugin" mrp="" bldFile="sf/mw/usbservices/usbclasses/msmmplugin/group" filter="!sf_build" name="usbservices_usbclasses_msmmplugin"/>
+<unit unitID="lcdo.usbservices.usbclasses.usbhidclassdriver" mrp="" bldFile="sf/mw/usbservices/usbclasses/usbhidclassdriver/group" filter="!sf_build" name="usbservices_usbclasses_usbhidclassdriver"/></module>
+<module name="btservices">
+        <unit unitID="lcdo.btservices" mrp="" bldFile="sf/mw/btservices/group" name="btservices"/>
+      </module>
+<module name="camerasrv">
+        <unit unitID="imm.camerasrv" mrp="" bldFile="sf/mw/camerasrv/group" name="camerasrv"/>
+      </module>
+<module name="dlnasrv">
+        <unit name="dlnasrv" unitID="hcdo.dlnasrv" bldFile="sf/mw/dlnasrv/group" mrp=""/>
+      </module>
+<module name="drm">
+        <unit unitID="sedo.drm" mrp="" bldFile="sf/mw/drm/group" name="drm"/>
+      </module>
+<module name="hapticsservices">
+        <unit unitID="abs.hapticsservices" mrp="" bldFile="sf/mw/hapticsservices/group" name="hapticsservices"/>
+        <unit unitID="abs.tactilefeedbackresolver" mrp="" bldFile="sf/mw/hapticsservices/tactilefeedback/tactilefeedbackresolver/plugins/group" filter="dfs_build" name="tactilefeedbackresolver"/>
+        <unit unitID="abs.tacticonhapticsplugin" mrp="" bldFile="sf/mw/hapticsservices/tacticonserver/server/tacticonpluginfw/tacticonhapticsplugin/group" filter="dfs_build" name="tacticonhapticsplugin"/>
+      </module>
+<module name="helix">
+				<unit unitID="helix" mrp="" bldFile="sf/mw/helix/group" filter="!sf_build" name="helix"/>
+				<unit unitID="helix_src" mrp="" bldFile="sf/mw/helix/helix_ren/src/group" filter="!sf_build" name="helix_src"/>
+				<unit unitID="ng_helix_src" mrp="" bldFile="sf/mw/helix/helix_ren/ng_helix/src/group" filter="!sf_build" name="ng_helix_src"/>
+				<unit unitID="helix_stub" mrp="" bldFile="sf/mw/helix/helix_ren/helix_stub/group" filter="sf_build" name="helix_stub"/>
+			</module>
+<module name="homescreensrv">
+        <unit unitID="hs.homescreensrv" mrp="" bldFile="sf/mw/homescreensrv/group" name="homescreensrv"/>
+      </module>
+<module name="imghandling">
+        <unit unitID="imm.imghandling" mrp="" bldFile="sf/mw/imghandling/group" name="imghandling"/>
+      </module>
+<module name="imsrv">
+        <unit unitID="MeCodo.imsrv" mrp="" bldFile="sf/mw/imsrv/group" name="imsrv"/>
+      </module>
+<module name="inputmethods">
+        <unit unitID="abs.inputmethods" mrp="" bldFile="sf/mw/inputmethods/group" name="inputmethods"/>
+      </module>
+<module name="ipappprotocols">
+  		<unit unitID="ipapdo.ipappprotocols" name="ipappprotocols" bldFile="sf/mw/ipappprotocols/group" mrp=""/> 
+      </module>
+<module name="ipappsrv">
+  		<unit unitID="ipasdo.ipappsrv" name="ipappsrv" bldFile="sf/mw/ipappsrv/group" mrp=""/> 
+      </module>
+<module name="ipconnmgmt">
+        <unit unitID="netdo.ipconnmgmt" mrp="" bldFile="sf/mw/ipconnmgmt/group" name="ipconnmgmt"/>
+      </module>
+<module name="legacypresence">
+        <unit unitID="presdo.legacypresence" mrp="" bldFile="sf/mw/legacypresence/group" name="legacypresence"/>
+      </module>
+<module name="locationsrv">
+        <unit unitID="lodo.locationsrv" mrp="" bldFile="sf/mw/locationsrv/group" name="locationsrv"/>
+      </module>
+<module name="asnpluginimplementation"> 
+     	<unit unitID="lodo.locationsrv.supl.asnpluginimplementation" mrp="" bldFile="sf/mw/locationsrv/supl/locationomasuplprotocolhandler/asnpluginimplementation/group" filter="dfs_build" name="lodo_locationsrv_supl_asnpluginimplementation>"/>
+     </module>
+<module name="asnpluginimplementationver2"> 
+     	<unit unitID="lodo.locationsrv.supl.asnpluginimplementationver2" mrp="" bldFile="sf/mw/locationsrv/supl/locationomasuplprotocolhandler/asnpluginimplementationver2/group" filter="dfs_build" name="lodo_locationsrv_supl_asnpluginimplementationver2>"/>
+     </module>
+<module name="mds">
+        <unit unitID="imm.mds" mrp="" bldFile="sf/mw/mds/group" name="mds"/>
+      </module>
+<module name="messagingmw">
+        <unit unitID="Medo.messagingmw" mrp="" bldFile="sf/mw/messagingmw/group" name="messagingmw"/>
+      </module>
+<module name="metadatasrv">
+        <unit unitID="imm.metadatasrv" mrp="" bldFile="sf/mw/metadatasrv/group" name="metadatasrv"/>
+      </module>
+<module name="mmappfw">
+				<unit unitID="mmappfw" mrp="" bldFile="sf/mw/mmappfw/group" name="mmappfw"/>
+			</module>
+<module name="mmmw">
+				<unit unitID="mmmw" mrp="" bldFile="sf/mw/mmmw/group" name="mmmw"/>
+			</module>
+<module name="mmuifw">
+        <unit unitID="uxdo.mmuifw" mrp="" bldFile="sf/mw/mmuifw/group" name="mmuifw"/>
+      </module>
+<module name="netprotocols">
+	    <unit unitID="browsing_domain.netprotocols" mrp="" bldFile="sf/mw/netprotocols/group" name="netprotocols"/>
+      </module>
+<module name="opensrv">
+        <unit unitID="MeCodo.opensrv" mrp="" bldFile="sf/mw/opensrv/group" name="opensrv"/>
+      </module>
+<module name="phonesrv">
+	      <unit name="phonesrv" unitID="tedo.phonesrv" bldFile="sf/mw/phonesrv/group" mrp=""/>
+      </module>
+<module name="platformtools">
+        <unit unitID="tools.platformtools" mrp="" bldFile="sf/mw/platformtools/group" name="platformtools"/>
+      </module>
+<module name="ptihangulcore">
+        <unit unitID="abs.ptihangulcore" mrp="" bldFile="sf/mw/ptihangulcore/group" name="ptihangulcore"/>
+      </module>
+<module name="ptikoreanqwertycore">
+        <unit unitID="abs.ptikoreanqwertycore" mrp="" bldFile="sf/mw/ptikoreanqwertycore/group" name="ptikoreanqwertycore"/>
+      </module>
+<module name="qt">
+        <unit unitID="qtdo.qt" mrp="" bldFile="sf/mw/qt" name="qt"/>
+      </module>
+<module name="remoteconn">
+        <unit name="remoteconn" unitID="sydo.remoteconn" bldFile="sf/mw/remoteconn/group" mrp=""/>
+      </module>
+<module name="remotemgmt">
+        <unit unitID="spdo.remotemgmt" mrp="" bldFile="sf/mw/remotemgmt/group" name="remotemgmt"/>
+      </module>
+<module name="remotestorage">
+        <unit unitID="presdo.remotestorage" mrp="" bldFile="sf/mw/remotestorage/group" name="remotestorage"/>
+      </module>
+<module name="securitysrv">
+        <unit name="securitysrv" unitID="sedo.securitysrv" bldFile="sf/mw/securitysrv/group" mrp=""/>
+      </module>
+<module name="serviceapi">                             
+<unit name="serviceapi" unitID="sapido.serviceapi" bldFile="sf/mw/serviceapi/group" mrp=""/>
+</module>
+<module name="serviceapifw">                             
+<unit name="serviceapifw" unitID="sapido.serviceapifw" bldFile="sf/mw/serviceapifw/group" mrp=""/>
+</module>
+<module name="shortlinkconn">
+        <unit unitID="lcdo.shortlinkconn" mrp="" bldFile="sf/mw/shortlinkconn/group" name="shortlinkconn"/>
+      </module>
+<module name="upnp">                             
+<unit name="upnp" unitID="mrtdo.upnp" bldFile="sf/mw/srvdiscovery/upnp/group" mrp=""/>
+</module>
+<module name="svgt">
+        <unit unitID="abs.svgt" mrp="" bldFile="sf/mw/svgt/group" name="svgt"/>
+      </module>
+<module name="uiaccelerator">
+        <unit unitID="abs.uiaccelerator" mrp="" bldFile="sf/mw/uiaccelerator/group" name="uiaccelerator"/>
+      </module>
+<module name="uiresources">
+        <unit unitID="abs.uiresources" mrp="" bldFile="sf/mw/uiresources/group" name="uiresources"/>
+        <unit unitID="abs.OemNokia" mrp="" bldFile="sf/mw/uiresources/uigraphics/Icons/data/OemNokia/group" filter="dfs_build" name="OemNokia"/>
+      </module>
+<module name="usbservices">
+        <unit unitID="lcdo.usbservices" mrp="" bldFile="sf/mw/usbservices/group" name="usbservices"/>
+      </module>
+<module name="videoutils">
+        <unit unitID="vado.videoutils" mrp="" bldFile="sf/mw/videoutils/group" name="videoutils"/>
+      </module>
+<module name="vpnclient"> 
+     	<unit unitID="netdo.vpnclient" mrp="" bldFile="sf/mw/vpnclient/group" filter="!oem_build" name="vpnclient"/>
+     </module>
+<module name="web">
+	    <unit unitID="browsing_domain.web" mrp="" bldFile="sf/mw/web/group" name="web"/>
+      </module>
+<module name="websrv">
+        <unit unitID="WSDo.websrv" mrp="" bldFile="sf/mw/websrv/group" name="websrv"/>        
+      </module>
+<module name="wirelessacc">
+        <unit unitID="netdo.wirelessacc" mrp="" bldFile="sf/mw/wirelessacc/group" name="wirelessacc"/>
+      </module>
+<module name="textandloc">
+        <unit unitID="abs.textandloc" mrp="" bldFile="sf/os/textandloc/group" name="textandloc"/>
+      </module></layer>
+<layer name="module_test_layer">
+			<module name="mobilemidi51_tsrc">
+				<unit unitID="mobilemidi51_tsrc" name="mobilemidi51_tsrc" bldFile="ext/mw/mobilemidi/tsrc/MobileMidiTestModule/group" mrp=""/>
+			</module>
+<module name="helix_ren_tsrc">
+				<unit unitID="helix_ren_tsrc" name="helix_ren_tsrc" bldFile="sf/mw/helix/helix_ren/tsrc/helixstiftest/group" mrp=""/>
+			</module>
+<module name="advancedaudiocontroller_tsrc">
+				<unit unitID="advancedaudiocontroller_tsrc" name="advancedaudiocontroller_tsrc" bldFile="sf/mw/mmmw/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/group" mrp=""/>
+			</module>
+<module name="nga_mdf_tsrc">
+				<unit unitID="nga_mdf_tsrc" name="nga_mdf_tsrc" bldFile="sf/os/mm/mdfdevvideoextensions/nga_mdf_postprocessor/tsrc/StifNgaMdfPoPTest/group" mrp=""/>
+			</module></layer>
+<layer name="pref_test_layer">
+			<module name="mobilemidi51_tsrc_group">
+				<unit unitID="mobilemidi51_tsrc_group" name="mobilemidi51_tsrc_group" bldFile="ext/mw/mobilemidi/tsrc/MobileMidiTestModule/group" mrp="" filter="TA_MOBILEMIDI"/>
+			</module>
+<module name="musicplayer_tsrc_group">
+				<unit unitID="musicplayer_tsrc_group" name="musicplayer_tsrc_group" bldFile="sf/app/musicplayer/tsrc/group" mrp="" filter="TA_MUSICPLAYER"/>
+			</module>
+<module name="voicerec_tsrc_group">
+				<unit unitID="voicerec_tsrc_group" name="voicerec_tsrc_group" bldFile="sf/app/voicerec/tsrc/group" mrp="" filter="TA_VOICEREC"/>
+			</module>
+<module name="helix_tsrc_group">
+				<unit unitID="helix_tsrc_group" name="helix_tsrc_group" bldFile="sf/mw/helix/tsrc/group" mrp="" filter="TA_HELIX"/>
+			</module>
+<module name="helix_ren_tsrc_group">
+				<unit unitID="helix_ren_tsrc_group" name="helix_ren_tsrc_group" bldFile="sf/mw/helix/helix_ren/tsrc/helixstiftest/group" mrp="" filter="TA_HELIX_REN"/>
+			</module>
+<module name="mmappfw_tsrc_group">
+				<unit unitID="mmappfw_tsrc_group" name="mmappfw_tsrc_group" bldFile="sf/mw/mmappfw/tsrc/group" mrp="" filter="TA_MMAPPFW"/>
+			</module>
+<module name="mmmw_tsrc_group">
+				<unit unitID="mmmw_tsrc_group" name="mmmw_tsrc_group" bldFile="sf/mw/mmmw/tsrc/group" mrp="" filter="TA_MMMW"/>
+			</module>
+<module name="mmmw_tms_tsrc_group">
+				<unit unitID="mmmw_tms_tsrc_group" name="mmmw_tms_tsrc_group" bldFile="sf/mw/mmmw/mmmw_plat/telephony_multimedia_service_api/tsrc/group" mrp="" filter="TA_TMS"/>
+			</module>
+<module name="advancedaudiocontroller_tsrc_group">
+				<unit unitID="advancedaudiocontroller_tsrc_group" name="advancedaudiocontroller_tsrc_group" bldFile="sf/mw/mmmw/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/group" mrp="" filter="TA_ADVANCEDAUDIOCONTROLLER"/>
+			</module>
+<module name="mm_tsrc_group">
+				<unit unitID="mm_tsrc_group" name="mm_tsrc_group" bldFile="sf/os/mm/tsrc/group" mrp="" filter="TA_MM"/>
+			</module>
+<module name="nga_mdf_tsrc_group">
+				<unit unitID="nga_mdf_tsrc_group" name="nga_mdf_tsrc_group" bldFile="sf/os/mm/mdfdevvideoextensions/nga_mdf_postprocessor/tsrc/StifNgaMdfPoPTest/group" mrp="" filter="TA_NGA_MDF_POSTPROCESSOR"/>
+			</module></layer>
+<layer name="mw_mobilemidi_layer">
+			<module name="mobilemidi_group">
+				<unit unitID="mobilemidi51_group" mrp="" bldFile="ext/mw/mobilemidi/Group" name="mobilemidi51_group"/>
+			</module>
+    </layer>
+<layer name="app_layer">
+      <module name="ctd_layers">
+        <unit unitID="tools.ctd_layers" mrp="" bldFile="ext/tools/ctd_layers/group" name="ctd_layers"/>
+      </module>
+<module name="oemrndtools">
+        <unit unitID="tools.oemrndtools" mrp="" bldFile="ext/tools/oemrndtools/group" name="oemrndtools"/>
+      </module>
+<module name="">
+      <unit unitID="tools.oemrndtools.trk" mrp="" bldFile="ext/tools/oemrndtools/trk/group" filter="oem_build" name="tools_oemrndtools_trk"/>
+     </module>
+<module name="camera">
+        <unit unitID="imm.camera" mrp="" bldFile="sf/app/camera/group" name="camera"/>
+        <unit unitID="imm.camera.help" mrp="" bldFile="sf/app/camera/camerauis/cameraapp/help/group" name="camera_help"/>
+      </module>
+<module name="commonemail">
+        <unit unitID="EDo.commonemail" mrp="" bldFile="sf/app/commonemail/group" name="commonemail"/>
+      </module>
+<module name="conntools">
+        <unit unitID="netdo.conntools" mrp="" bldFile="sf/app/conntools/group" name="conntools"/>
+      </module>
+<module name="contentcontrol">
+        <unit unitID="spdo.contentcontrol" mrp="" bldFile="sf/app/contentcontrol/group" name="contentcontrol"/>
+      </module>
+<module name="conversations">
+        <unit unitID="MeCodo.conversations" mrp="" bldFile="sf/app/conversations/group" name="conversations"/>
+      </module>
+<module name="devicecontrol">
+        <unit unitID="spdo.devicecontrol" mrp="" bldFile="sf/app/devicecontrol/group" name="devicecontrol"/>
+      </module>
+<module name="dictionary">
+        <unit unitID="abs.dictionary" mrp="" bldFile="sf/app/dictionary/group" name="dictionary"/>
+      </module>
+<module name="files">
+        <unit name="files" unitID="presdo.files" bldFile="sf/app/files/group" mrp=""/>
+      </module>
+<module name="graphicsuis">
+        <unit unitID="abs.graphicsuis" mrp="" bldFile="sf/app/graphicsuis/group" name="graphicsuis"/>
+      </module>
+<module name="helps">
+        <unit unitID="abs.helps" mrp="" bldFile="sf/app/helps/group" name="helps"/>
+      </module>
+<module name="homescreen">
+        <unit unitID="hs.homescreen" mrp="" bldFile="sf/app/homescreen/group" name="homescreen"/>
+      </module>
+<module name="im">
+        <unit unitID="impp.im" mrp="" bldFile="sf/app/im/group" name="im"/>
+      </module>
+<module name="iptelephony">
+        <unit name="iptelephony" unitID="te.iptelephony" bldFile="sf/app/iptelephony/group" mrp=""/>
+      </module>
+<module name="jrt">
+        <unit unitID="jrt.jrt" mrp="" bldFile="sf/app/jrt/group" filter="!sf_build" name="jrt"/>
+<unit unitID="jrt.jrt.jrt_plat" mrp="" bldFile="sf/app/jrt/jrt_plat/group" filter="sf_build" name="jrt_jrt_plat"/>
+<unit unitID="jrt.jrt.java_stubs" mrp="" bldFile="sf/app/jrt/java_stubs/group" filter="sf_build" name="jrt_jrt_stubs"/></module>
+<module name="location">
+        <unit unitID="lodo.location" mrp="" bldFile="sf/app/location/group" name="location"/>
+      </module>
+<module name="messaging">
+        <unit unitID="Medo.messaging" mrp="" bldFile="sf/app/messaging/group" name="messaging"/>
+      </module>
+<module name="mmsharinguis">
+  		<unit unitID="msdo.mmsharinguis" name="mmsharinguis" bldFile="sf/app/mmsharinguis/group" mrp=""/> 
+      </module>
+<module name="musicplayer">
+				<unit unitID="musicplayer" mrp="" bldFile="sf/app/musicplayer/group" name="musicplayer"/>
+			</module>
+<module name="organizer">
+        <unit unitID="orgdo.organizer" mrp="" bldFile="sf/app/organizer/group" name="organizer"/>
+      </module>
+<module name="phone">
+        <unit name="phone" unitID="tedo.phone" bldFile="sf/app/phone/group" mrp=""/>
+      </module>
+<module name="photos">
+        <unit unitID="uxdo.photos" mrp="" bldFile="sf/app/photos/group" name="photos"/>
+      </module>
+<module name="printing">
+        <unit unitID="lcdo.printing" mrp="" bldFile="sf/app/printing/group" name="printing"/>
+      </module>
+<module name="profile">
+        <unit name="profile" unitID="presdo.profile" bldFile="sf/app/profile/group" mrp=""/>
+      </module>
+<module name="radio">
+        <unit unitID="vado.radio" mrp="" bldFile="sf/app/radio/group" name="radio"/>
+      </module>
+<module name="rndtools">
+        <unit unitID="tools.rndtools" mrp="" bldFile="sf/app/rndtools/group" name="rndtools"/>
+      </module>
+<module name="screensaver">
+        <unit unitID="abs.screensaver" mrp="" bldFile="sf/app/screensaver/group" name="screensaver"/>
+      </module>
+<module name="settingsuis">
+      <unit name="settingsuis" unitID="presdo.settingsuis" bldFile="sf/app/settingsuis/group" mrp=""/>
+      </module>
+<module name="speechsrv">
+        <unit unitID="MuiDo.speechsrv" mrp="" bldFile="sf/app/speechsrv/group" name="speechsrv"/>
+      </module>
+<module name="LiveTV2">
+        <unit unitID="LiveTV2" mrp="" bldFile="sf/app/tv/group" filter="dfs_build" name="LiveTV2"/>
+			</module>
+<module name="utils">
+        <unit unitID="orgdo.utils" mrp="" bldFile="sf/app/utils/group" name="utils"/>
+      </module>
+<module name="videoplayer">
+        <unit unitID="vado.videoplayer" mrp="" bldFile="sf/app/videoplayer/group" name="videoplayer"/>
+      </module>
+<module name="videotelephony">
+        <unit name="videotelephony_plat" unitID="tedo.videotelephony_plat" bldFile="sf/app/videotelephony/videotelephony_plat/group" mrp=""/>
+        <unit name="PacketVideoEngineBinaries" unitID="tedo.PacketVideoEngineBinaries" bldFile="sf/app/videotelephony/packetvideoengine/PacketVideoEngineBinaries/group" mrp="" filter="!sf_build"/> 
+        <unit name="vtprotocolsstub" unitID="tedo.vtprotocolsstub" bldFile="sf/app/videotelephony/vtprotocolsstub/group" mrp="" filter="sf_build"/>  
+        <unit name="vtprotocols" unitID="tedo.vtprotocols" bldFile="sf/app/videotelephony/vtprotocols/group" mrp="" filter="!sf_build"/>
+        <unit name="DisplaySink" unitID="tedo.DisplaySink" bldFile="sf/app/videotelephony/vtprotocolplugins/DisplaySink/group" mrp=""/> 
+        <unit name="VideoSource" unitID="tedo.VideoSource" bldFile="sf/app/videotelephony/vtprotocolplugins/VideoSource/group" mrp=""/>
+        <unit name="videoteleng" unitID="tedo.videoteleng" bldFile="sf/app/videotelephony/vtengines/videoteleng/Group" mrp=""/>  
+        <unit name="videotelui" unitID="tedo.videotelui" bldFile="sf/app/videotelephony/vtuis/videotelui/group" mrp=""/> 
+	<unit name="vtmediatorplugin" unitID="tedo.vtmediatorplugin" bldFile="sf/app/videotelephony/vtengines/vtmediatorplugin/group" mrp=""/>
+      </module>
+<module name="voicerec">
+				<unit unitID="voicerec" mrp="" bldFile="sf/app/voicerec/group" name="voicerec"/>
+			</module>
+<module name="webuis">
+	    <unit unitID="browsing_domain.webuis" mrp="" bldFile="sf/app/webuis/group" name="webuis"/>
+      </module>
+<module name="locfiles">
+				<unit unitID="platform.locfiles" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group" filter="" name="locfiles"/>
+				<unit unitID="platform.locfiles.set1" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set1" filter="" name="locfiles_set1"/>
+				<unit unitID="platform.locfiles.set2" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set2" filter="" name="locfiles_set2"/>
+				<unit unitID="platform.locfiles.set3" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set3" filter="" name="locfiles_set3"/>
+				<unit unitID="platform.locfiles.set4" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set4" filter="" name="locfiles_set4"/>
+				<unit unitID="platform.locfiles.set5" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set5" filter="" name="locfiles_set5"/>
+				<unit unitID="platform.locfiles.set6" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set6" filter="" name="locfiles_set6"/>
+				<unit unitID="platform.locfiles.set7" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set7" filter="" name="locfiles_set7"/>
+				<unit unitID="platform.locfiles.set8" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set8" filter="" name="locfiles_set8"/>
+				<unit unitID="platform.locfiles.set9" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set9" filter="" name="locfiles_set9"/>
+				<unit unitID="platform.locfiles.set10" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set10" filter="" name="locfiles_set10"/>
+				<unit unitID="platform.locfiles.set11" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set11" filter="" name="locfiles_set11"/>
+				<unit unitID="platform.locfiles.set12" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set12" filter="" name="locfiles_set12"/>
+				<unit unitID="platform.locfiles.set13" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set13" filter="" name="locfiles_set13"/>
+				<unit unitID="platform.locfiles.set14" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set14" filter="" name="locfiles_set14"/>
+				<unit unitID="platform.locfiles.set15" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set15" filter="" name="locfiles_set15"/>
+				<unit unitID="platform.locfiles.set16" mrp="" bldFile="sf/os/deviceplatformrelease/locfiles/group/set16" filter="" name="locfiles_set16"/>
+      </module>
+<module name="helps_loc2">
+        <unit unitID="platform.helps_loc2" mrp="" bldFile="sf/os/deviceplatformrelease/helps_loc2/group" name="helps_loc2"/>
+      </module></layer>
+<layer name="os_layer">
+      <module name="swconfigapps">
+        <unit unitID="tools.swconfigapps" mrp="" bldFile="ext/tools/swconfigapps/group" name="swconfigapps"/>
+      </module>
+<module name="bt">
+        <unit unitID="lcdo.bt" mrp="" bldFile="sf/os/bt/group" name="bt"/>
+      </module>
+<module name="S60Extras">
+        <unit unitID="platform.S60Extras" mrp="" bldFile="sf/os/deviceplatformrelease/S60Extras/group" name="S60Extras"/>
+      </module>
+<module name="version">
+        <unit unitID="platform.version" mrp="" bldFile="sf/os/deviceplatformrelease/Version/group" name="version"/>
+      </module>
+<module name="devicesrv">                                                                                                                            
+        <unit unitID="sydo.devicesrv" mrp="" bldFile="sf/os/devicesrv/group" name="devicesrv"/>                  
+      </module>
+<module name="">
+      		<unit unitID="sydo.devicesrv.fps_api" mrp="" bldFile="sf/os/devicesrv/devicesrv_plat/fps_api/group" name="sydo_devicesrv_fps_api" filter="dfs_build"/>
+      		<unit unitID="sydo.devicesrv.fpsclient" mrp="" bldFile="sf/os/devicesrv/sensorservices/fpsclient/group" name="sydo_devicesrv_fpsclient" filter="dfs_build"/>
+<unit unitID="imm.imagingext.imagingmodules.videoencpluginarm" mrp="" bldFile="sf/os/imagingext/imagingmodules/VideoEncPluginARM/Build" filter="oem_build" name="imm_imagingext_imagingmodules_videoencpluginarm"/>
+<unit unitID="imm.imagingext.imagingmodules.h264avcvideoencarm" mrp="" bldFile="sf/os/imagingext/imagingmodules/H264AVCVideoEncARM/group" filter="oem_build" name="imm_imagingext_imagingmodules_h264avcvideoencarm"/>
+<unit unitID="AudioEqualizerUtility" mrp="" bldFile="sf/os/mm/devsoundextensions/effectspresets/AudioEqualizerUtility/group" filter="!dfs_build" name="AudioEqualizerUtility"/>
+<unit unitID="EnvironmentalReverbUtility" mrp="" bldFile="sf/os/mm/devsoundextensions/effectspresets/EnvironmentalReverbUtility/group" filter="!dfs_build" name="EnvironmentalReverbUtility"/>
+<unit unitID="StereoWideningUtility" mrp="" bldFile="sf/os/mm/devsoundextensions/effectspresets/StereoWideningUtility/group" filter="!dfs_build" name="StereoWideningUtility"/>
+<unit unitID="AacEncoderPlugin" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/AacEncoderPlugin/group" filter="!sf_build" name="AacEncoderPlugin"/>
+<unit unitID="AmrNbCodecPlugin" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/AmrNbCodecPlugin/group" filter="!sf_build" name="AmrNbCodecPlugin"/>
+<unit unitID="AmrWbCodecPlugin" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/AmrWbCodecPlugin/group" filter="!sf_build" name="AmrWbCodecPlugin"/>
+<unit unitID="EAacPlusCodecPlugin" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/EAacPlusCodecPlugin/group" filter="!sf_build" name="EAacPlusCodecPlugin"/>
+<unit unitID="EAacPlusUtil" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/EAacPlusUtil/group" filter="!sf_build" name="EAacPlusUtil"/>
+<unit unitID="MP3CodecPlugin" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/MP3CodecPlugin/group" filter="!sf_build" name="MP3CodecPlugin"/>
+<unit unitID="WMADecoderPlugin" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/WMADecoderPlugin/group" filter="!sf_build" name="WMADecoderPlugin"/>
+<unit unitID="ARM_MDF_Decoders" mrp="" bldFile="sf/os/mm/video/ARM_MDF_Decoders/group" filter="!sf_build" name="ARM_MDF_Decoders"/></module>
+<module name="graphics">
+        <unit unitID="abs.graphics" mrp="" bldFile="sf/os/graphics/group" name="graphics"/>
+      </module>
+<module name="imagingext">
+        <unit unitID="imm.imagingext" mrp="" bldFile="sf/os/imagingext/group" name="imagingext"/>
+      </module>
+<module name="lbs">
+        <unit unitID="lodo.lbs" mrp="" bldFile="sf/os/lbs/group" name="lodo.lbs"/>
+      </module>
+<module name="mm">
+				<unit unitID="mm" mrp="" bldFile="sf/os/mm/group" name="mm"/>
+			</module>
+<module name="networkingsrv">
+        <unit unitID="netdo.networkingsrv" mrp="" bldFile="sf/os/networkingsrv/group" name="networkingsrv"/>
+      </module>
+<module name="osrndtools">
+        <unit unitID="tools.osrndtools" mrp="" bldFile="sf/os/osrndtools/group" name="osrndtools"/>
+      </module>
+<module name="ossrv">                             
+<unit name="ossrv" unitID="mrtdo.ossrv" bldFile="sf/os/ossrv/group" mrp=""/>
+</module>
+<module name="usb">
+        <unit unitID="lcdo.usb" mrp="" bldFile="sf/os/usb/group" name="usb"/>
+      </module>
+<module name="wlan">
+        <unit unitID="netdo.wlan" mrp="" bldFile="sf/os/wlan/group" name="wlan"/>
+        <unit unitID="netdo.wlanwpx" mrp="" bldFile="sf/os/wlan/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/group/wpx" filter="dfs_build" name="wlanwpx"/>
+      </module>
+<module name="xmlsrv">
+        <unit unitID="WSDo.xmlsrv" mrp="" bldFile="sf/os/xmlsrv/group" name="xmlsrv"/>
+      </module>
+<module name="sf_common_tsy">
+			<component name="sf_common_tsy">
+				<unit unitID="symbian.common_tsy" name="sf_common_tsy" bldFile="sf/os/cellularsrv/telephonyserverplugins/common_tsy/group" mrp="" filter=""/>
+			</component>
+		</module>
+<module name="sf_openvg11">
+			<component name="sf_openvg11">
+				<unit unitID="symbian.openvg11" name="sf_openvg11" bldFile="sf/os/graphics/openvg/openvginterface/group/openvg11" mrp="" filter="sf_build"/>
+			</component>
+		</module></layer>
+<layer name="stubs_layer">
+			<module name="audiostubs">
+				<unit unitID="audiostubs" mrp="" bldFile="sf/adaptation/stubs/audiostubs/group" name="audiostubs"/>
+			</module>
+<module name="btaudioadaptation_stub">
+        <unit unitID="lcdo.btaudioadaptation_stub" mrp="" bldFile="sf/adaptation/stubs/btaudioadaptation_stub/group" name="btaudioadaptation_stub" filter="oem_build"/>
+      </module>
+<module name="drm_stubs">
+        <unit name="drm_stubs" unitID="sedo.drm_stubs" bldFile="sf/adaptation/stubs/drm_stubs/group" mrp=""/>
+      </module>
+<module name="ocrsrv_stub">
+        <unit unitID="abs.ocrsrv_stub" mrp="" bldFile="sf/adaptation/stubs/ocrsrv_stub/group" filter="!dfs_build" name="ocrsrv_stub"/>
+      </module>
+<module name="omasuplasnconverterstubimpl">
+        <unit unitID="lodo.omasuplasnconverterstubimpl" mrp="" bldFile="sf/adaptation/stubs/omasuplasnconverterstubimpl/group" filter="!dfs_build" name="omasuplasnconverterstubimpl"/>
+      </module>
+<module name="posmsgpluginreferenceimpl">
+        <unit unitID="lodo.posmsgpluginreferenceimpl" mrp="" bldFile="sf/adaptation/stubs/posmsgpluginreferenceimpl/group" name="posmsgpluginreferenceimpl"/>
+      </module>
+<module name="power_save_display_mode_stub">
+        <unit unitID="abs.power_save_display_mode_stub" mrp="" bldFile="sf/adaptation/stubs/power_save_display_mode_stub/group" name="power_save_display_mode_stub"/>
+      </module>
+<module name="srsfenginestub">
+        <unit unitID="MuiDo.srsfenginestub" mrp="" bldFile="sf/adaptation/stubs/srsfenginestub/group" name="srsfenginestub" filter="stubs"/>
+      </module>
+<module name="systemswstubs">
+  	<unit name="systemswstubs" unitID="sydo.systemswstubs" bldFile="sf/adaptation/stubs/systemswstubs/group" mrp=""/>
+      </module>
+<module name="">
+        <unit name="sydo_systemswstubs_TVOutConfig" unitID="sydo.systemswstubs.TVOutConfig" bldFile="sf/adaptation/stubs/systemswstubs/TVOutConfig/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_accessorypolicyreference" unitID="sydo.systemswstubs.accessorypolicyreference" bldFile="sf/adaptation/stubs/systemswstubs/accessorypolicyreference/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_asyreference" unitID="sydo.systemswstubs.asyreference" bldFile="sf/adaptation/stubs/systemswstubs/asyreference/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_examplecommonisc" unitID="sydo.systemswstubs.examplecommonisc" bldFile="sf/adaptation/stubs/systemswstubs/examplecommonisc/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_exampledsy" unitID="sydo.systemswstubs.exampledsy" bldFile="sf/adaptation/stubs/systemswstubs/exampledsy/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_featuremanagerstub" unitID="sydo.systemswstubs.featuremanagerstub" bldFile="sf/adaptation/stubs/systemswstubs/featuremanagerstub/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_hwrmstubplugins" unitID="sydo.systemswstubs.hwrmstubplugins" bldFile="sf/adaptation/stubs/systemswstubs/hwrmstubplugins/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_hwrmhapticsstubplugin" unitID="sydo.systemswstubs.hwrmhapticsstubplugin" bldFile="sf/adaptation/stubs/systemswstubs/hwrmhapticsstubplugin/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_sensorchannelsreference" unitID="sydo.systemswstubs.sensorchannelsreference" bldFile="sf/adaptation/stubs/systemswstubs/sensorchannelsreference/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_ssyreference" unitID="sydo.systemswstubs.ssyreference" bldFile="sf/adaptation/stubs/systemswstubs/ssyreference/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_startupadaptationstub" unitID="sydo.systemswstubs.startupadaptationstub" bldFile="sf/adaptation/stubs/systemswstubs/startupadaptationstub/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_tiltcompensationstub" unitID="sydo.systemswstubs.tiltcompensationstub" bldFile="sf/adaptation/stubs/systemswstubs/tiltcompensationstub/group" mrp="" filter="oem_build"/>
+        <unit name="sydo_systemswstubs_tvoutbehaviour" unitID="sydo.systemswstubs.tvoutbehaviour" bldFile="sf/adaptation/stubs/systemswstubs/tvoutbehaviour/group" mrp="" filter="oem_build"/>        
+        <unit name="sydo_systemswstubs_wiredbearerreference" unitID="sydo.systemswstubs.wiredbearerreference" bldFile="sf/adaptation/stubs/systemswstubs/wiredbearerreference/group" mrp="" filter="oem_build"/>
+      </module>
+<module name="tactileclickplugin_stub">
+        <unit unitID="abs.tactileclickplugin_stub" mrp="" bldFile="sf/adaptation/stubs/tactileclickplugin_stub/group" name="tactileclickplugin_stub"/>
+      </module>
+<module name="wlanhwinit_stub">
+        <unit unitID="netdo.wlanhwinit_stub" mrp="" bldFile="sf/adaptation/stubs/wlanhwinit_stub/group" name="wlanhwinit_stub"/>
+      </module>
+<module name="sf_licenseetsystub">
+			<component name="sf_licenseetsystub">
+				<unit unitID="symbian.licenseetsystub" name="sf_licenseetsystub" bldFile="sf/os/cellularsrv/telephonyserverplugins/licenseetsystub/group" mrp="" filter=""/>
+			</component>
+		</module></layer>
+<layer name="stubs_audiostubs_layer">
+			<module name="audiostubs_group">
+				<unit unitID="audiostubs_group" mrp="" bldFile="sf/adaptation/stubs/audiostubs/group" name="audiostubs_group"/>
+			</module>
+    </layer>
+<layer name="api_test_layer">
+      <module name="camera_api_tests">
+      	<unit unitID="imm.camera.camcorder_ui_constants_api" mrp="" bldFile="sf/app/camera/camera_plat/camcorder_ui_constants_api/tsrc/group" name="camcorder_ui_constants_api"/>
+      </module>
+      <module name="active_palette_2_api_tests">
+      	<unit unitID="imm.camera.active_palette_2_api" mrp="" bldFile="sf/app/camera/camera_plat/active_palette_2_api/tsrc/group" name="active_palette_2_api"/>
+      </module>
+<module name="contacts_plat">
+        <unit unitID="cms_contactor_api" mrp="" bldFile="sf/app/contacts/contacts_plat/cms_contactor_api/tsrc/group" name="cms_contactor_api"/>
+        <unit unitID="cca_launch_api" mrp="" bldFile="sf/app/contacts/contacts_plat/cca_launch_api/tsrc/group" name="cca_launch_api"/>
+        <unit unitID="cca_view_plugin_api" mrp="" bldFile="sf/app/contacts/contacts_plat/cca_view_plugin_api/tsrc/group" name="cca_view_plugin_api"/>
+        <unit unitID="contactpresence_api" mrp="" bldFile="sf/app/contacts/contacts_plat/contactpresence_api/tsrc/group" name="contactpresence_api"/>
+        <unit unitID="presence_cache_api" mrp="" bldFile="sf/app/contacts/contacts_plat/presence_cache_api/tsrc/group" name="clientsrvtester"/>
+        <unit unitID="virtual_phonebook_policy_api" mrp="" bldFile="sf/app/contacts/contacts_plat/virtual_phonebook_policy_api/tsrc/group" name="virtual_phonebook_policy_api"/>
+        <unit unitID="virtual_phonebook_sim_services_api" mrp="" bldFile="sf/app/contacts/contacts_plat/virtual_phonebook_sim_services_api/tsrc/group" name="virtual_phonebook_sim_services_api"/>        
+        <unit unitID="virtual_phonebook_store_api" mrp="" bldFile="sf/app/contacts/contacts_plat/virtual_phonebook_store_api/tsrc/group" name="virtual_phonebook_store_api"/>        
+        <unit unitID="virtual_phonebook_vcard_api" mrp="" bldFile="sf/app/contacts/contacts_plat/virtual_phonebook_vcard_api/tsrc/group" name="virtual_phonebook_vcard_api"/>        
+        <unit unitID="virtual_phonebook_view_definition_api" mrp="" bldFile="sf/app/contacts/contacts_plat/virtual_phonebook_view_definition_api/tsrc/group" name="virtual_phonebook_view_definition_api"/>     
+        <unit unitID="virtual_phonebook_engine_api" mrp="" bldFile="sf/app/contacts/contacts_plat/virtual_phonebook_engine_api/tsrc/group" name="virtual_phonebook_engine_api"/>     
+        <unit unitID="predictivesearch_client_api" mrp="" bldFile="sf/app/contacts/contacts_plat/predictivesearch_client_api/tsrc/group" name="predictivesearch_client_api"/>        
+        <unit unitID="predictivesearch_utils_api" mrp="" bldFile="sf/app/contacts/contacts_plat/predictivesearch_utils_api/tsrc/group" name="predictivesearch_utils_api"/>     
+        <unit unitID="rcltestsuite" mrp="" bldFile="sf/app/contacts/contacts_plat/phonebook_2_rcl_api/tsrc/group" name="rcltestsuite"/>     
+     	<unit unitID="phonebook_2_icon_api" mrp="" bldFile="sf/app/contacts/contacts_plat/phonebook_2_icon_api/tsrc/ut_CPbk2IconArray/group" name="phonebook_2_icon_api"/>  
+      </module>
+<module name="mmsharinguis_api_test">
+        <unit unitID="msdo.mmsharinguis_api_test" mrp="" bldFile="sf/app/mmsharinguis/mmsharinguis_plat/multimedia_sharing_manager_api/tsrc/group" name="mmsharinguis_api_test"/>
+      </module>
+<module name="musicplayer_tsrc">
+				<unit unitID="musicplayer_tsrc" name="musicplayer_tsrc" bldFile="sf/app/musicplayer/tsrc/group" mrp=""/>
+			</module>
+<module name="tedo_api_tests">
+        <unit unitID="tedo.dialer.test" name="dialer.test" bldFile="sf/app/phone/phoneuis/dialer/tsrc/public/basic/group" mrp=""/>
+        <unit unitID="tedo.phoneui.test" name="phoneui.test" bldFile="sf/app/phone/phoneapp/phoneui/tsrc/public/basic/group" mrp=""/>
+<unit unitID="tedo.PsetNotesUi.test" name="PsetNotesUi.test" bldFile="sf/mw/phonesrv/cellular/PsetNotesUi/tsrc/public/basic/group" mrp=""/>
+<unit unitID="tedo.SSSettings.test" name="SSSettings.test" bldFile="sf/mw/phonesrv/cellular/SSSettings/tsrc/public/basic/group" mrp=""/>
+<unit unitID="tedo.telephonysettings.test" name="telephonysettings.test" bldFile="sf/mw/phonesrv/cellular/telephonysettings/tsrc/public/basic/group" mrp=""/>
+<unit unitID="tedo.cce.test" name="cce.test" bldFile="sf/mw/phonesrv/convergedcallengine/cce/tsrc/public/basic/group" mrp=""/>
+<unit unitID="tedo.spsettings.test" name="spsettings.test" bldFile="sf/mw/phonesrv/convergedcallengine/spsettings/tsrc/public/basic/group" mrp=""/>
+<unit unitID="tedo.aiwdialdata.test" name="aiwdialdata.test" bldFile="sf/mw/phonesrv/phoneclientserver/aiwdialdata/tsrc/public/basic/group" mrp=""/>
+<unit unitID="tedo.dialutils.test" name="dialutils.test" bldFile="sf/mw/phonesrv/phoneclientserver/dialutils/tsrc/public/basic/group" mrp=""/>
+<unit unitID="tedo.phoneclient.test" name="phoneclient.test" bldFile="sf/mw/phonesrv/phoneclientserver/phoneclient/tsrc/public/basic/group" mrp=""/>
+<unit unitID="tedo.call_information_api.test" name="call_information_api.test" bldFile="sf/mw/phonesrv/phonesrv_plat/call_information_api/tsrc/group" mrp=""/>
+<unit unitID="tedo.sat_client_api.test" name="sat_client_api.test" bldFile="sf/mw/phonesrv/phonesrv_plat/sat_client_api/tsrc/group" mrp=""/>
+<unit unitID="tedo.sat_refresh_api.test" name="sat_refresh_api.test" bldFile="sf/mw/phonesrv/phonesrv_plat/sat_refresh_api/tsrc/group" mrp=""/>
+<unit unitID="tedo.sat_service_api.test" name="sat_service_api.test" bldFile="sf/mw/phonesrv/phonesrv_plat/sat_service_api/tsrc/group" mrp=""/>
+<unit unitID="tedo.telephony_mediator_api.test" name="telephony_mediator_api.test" bldFile="sf/mw/phonesrv/phonesrv_plat/telephony_mediator_api/tsrc/ut_telephony_mediator_api/group" mrp=""/>
+<unit unitID="tedo.call_remote_party_information_api.test" name="call_remote_party_information_api.test" bldFile="sf/mw/phonesrv/phonesrv_plat/call_remote_party_information_api/tsrc/group" mrp=""/></module>
+<module name="profile_test">
+        <!--<unit unitID="presdo.profile_test" mrp="" bldFile="&layer_real_source_path;/tsrc/group" name="profile_test" />-->
+        <unit unitID="presdo.profile_test" mrp="" bldFile="sf/app/profile/profilesapplication/Profiles/ProfileApp/tsrc/public/basic/group" name="profile_test"/>
+      </module>
+<module name="settingsuis_test">
+      <!--<unit unitID="presdo.settingsuis_test" mrp="" bldFile="&layer_real_source_path;/tsrc/group" name="settingsuis_test" />-->
+      <unit unitID="presdo.settingsuis_test" mrp="" bldFile="sf/app/settingsuis/devmngt_plat/services_db_api/tsrc/ServicesDbApiTest/group" name="settingsuis_test"/>
+      </module>
+<module name="speechsrv.ui_voice_recognition_api">
+        <unit unitID="MuiDo.speechsrv.ui_voice_recognition_api" mrp="" bldFile="sf/app/speechsrv/speechsrv_plat/ui_voice_recognition_api/tsrc/group" name="speechsrv.ui_voice_recognition_api"/>
+      </module>
+<module name="speechsrv.speech_synthesis_clientserver_api">
+        <unit unitID="MuiDo.speechsrv.speech_synthesis_clientserver_api" mrp="" bldFile="sf/app/speechsrv/srsf/speechsynthesis/tsrc/speechsynthesistest/group" name="speechsrv.speech_synthesis_clientserver_api"/>
+      </module>
+<module name="speechsrv.nss_tts_utility_api">
+        <unit unitID="MuiDo.speechsrv.nss_tts_utility_api" mrp="" bldFile="sf/app/speechsrv/srsf/tsrc/public/basic/group" name="speechsrv.nss_tts_utility_api"/>
+      </module>
+<module name="video_player_file_details_dialog_api_tsrc">
+			<unit unitID="vado.video_player_file_details_dialog_api_test" name="video_player_file_details_dialog_api_tsrc" bldFile="sf/app/videoplayer/videoplayer_plat/video_player_file_details_dialog_api/tsrc/group" mrp=""/>
+		</module>
+<module name="videoplayer_startup_api_tsrc">
+			<unit unitID="vado.videoplayer_startup_api_test" name="videoplayer_startup_api_tsrc" bldFile="sf/app/videoplayer/videoplayer_plat/videoplayer_startup_api/tsrc/group" mrp=""/>
+		</module>
+<module name="voicerec_tsrc">
+				<unit unitID="voicerec_tsrc" name="voicerec_tsrc" bldFile="sf/app/voicerec/tsrc/group" mrp=""/>
+			</module>
+<module name="appinstall_test">
+        <unit unitID="sedo.appinstall_test" mrp="" bldFile="sf/mw/appinstall/tsrc/group" name="appinstall_test"/>
+      </module>
+<module name="btservices_test">
+        <unit unitID="lcdo.btservices_test" mrp="" bldFile="sf/mw/btservices/tsrc/group" name="btservices_test"/>
+      </module>
+<module name="camerasrv_api_tests">
+      	<unit unitID="imm.camerasrv.asynchronous_file_saving_queue_api" mrp="" bldFile="sf/mw/camerasrv/camerasrv_plat/asynchronous_file_saving_queue_api/tsrc/group" name="asynchronous_file_saving_queue_api"/>
+      	<unit unitID="imm.camerasrv.camera_application_engine_api" mrp="" bldFile="sf/mw/camerasrv/camerasrv_plat/camera_application_engine_api/tsrc/group" name="camera_application_engine_api"/>
+      	<unit unitID="imm.camerasrv.imaging_configuration_manager_api" mrp="" bldFile="sf/mw/camerasrv/camerasrv_plat/imaging_configuration_manager_api/tsrc/group" name="imaging_configuration_manager_api"/>
+      	<unit unitID="imm.camerasrv.media_recorder_api" mrp="" bldFile="sf/mw/camerasrv/camerasrv_plat/media_recorder_api/tsrc/group" name="media_recorder_api"/>
+      </module>
+<module name="classicui_plat_api_tests">
+    <unit unitID="abs.classicui.tsrc.all" mrp="" bldFile="sf/mw/classicui/tsrc/group" name="classicui_tsrc_all" filter="classicui_api_all"/>
+    <unit unitID="abs.classicui.tsrc.aiw_provider_utility" mrp="" bldFile="sf/mw/classicui/classicui_plat/aiw_provider_utility_api/tsrc/group" name="classicui_tsrc_aiw_provider_utility" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.aiw_service_interface_base" mrp="" bldFile="sf/mw/classicui/classicui_plat/aiw_service_interface_base_api/tsrc/group" name="classicui_tsrc_aiw_service_interface" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.aiw_service_interface_menu" mrp="" bldFile="sf/mw/classicui/classicui_plat/aiw_service_interface_menu_api/tsrc/group" name="classicui_tsrc_aiw_service_interface_menu" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.alarm" mrp="" bldFile="sf/mw/classicui/classicui_plat/alarm_api/tsrc/group" name="classicui_tsrc_alarm" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.application_switching" mrp="" bldFile="sf/mw/classicui/classicui_plat/application_switching_api/tsrc/group" name="classicui_tsrc_application_switching" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.avkon_fonts" mrp="" bldFile="sf/mw/classicui/classicui_plat/avkon_fonts_api/tsrc/group" name="classicui_tsrc_avkonfonts" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.avkon_secondary_display_support" mrp="" bldFile="sf/mw/classicui/classicui_plat/avkon_secondary_display_support_api/tsrc/group" name="classicui_tsrc_avkon_secondary_display_support" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.avkon_ui_server" mrp="" bldFile="sf/mw/classicui/classicui_plat/avkon_ui_server_api/tsrc/group" name="classicui_tsrc_avkon_ui_server" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.battery_pane" mrp="" bldFile="sf/mw/classicui/classicui_plat/battery_pane_api/tsrc/group" name="classicui_tsrc_battery_pane" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.common_file_dialogs_filter" mrp="" bldFile="sf/mw/classicui/classicui_plat/common_file_dialogs_filter_factory_api/tsrc/group" name="classicui_tsrc_common_file_dialogs_filter_factory" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.custom_cursors" mrp="" bldFile="sf/mw/classicui/classicui_plat/custom_cursors_api/tsrc/group" name="classicui_tsrc_custom_cursors" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.eikon_server_extension_client" mrp="" bldFile="sf/mw/classicui/classicui_plat/eikon_server_extension_client_api/tsrc/group" name="classicui_tsrc_eikon_server_extension_client" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.emergency_call_support" mrp="" bldFile="sf/mw/classicui/classicui_plat/emergency_call_support_api/tsrc/group" name="classicui_tsrc_emergency_call_support" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_aiw_criteria" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_aiw_criteria_api/tsrc/group" name="classicui_tsrc_extended_aiw_criteria" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_animation" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_animation_api/tsrc/group" name="classicui_tsrc_extended_animation" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_buttons" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_buttons_api/tsrc/group" name="classicui_tsrc_extended_buttons" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_editors" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_editors_api/tsrc/group" name="classicui_tsrc_extended_editors" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_grids" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_grids_api/tsrc/group" name="classicui_tsrc_extended_grids" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_indicators" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_indicators_api/tsrc/group" name="classicui_tsrc_extended_indicators" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_initialization" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_initialization_api/tsrc/group" name="classicui_tsrc_extended_initialization" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_input_capabilities" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_input_capabilities_api/tsrc/group" name="classicui_tsrc_extended_input_capabilities" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_lists" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_lists_api/tsrc/group" name="classicui_tsrc_extended_lists" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_notes" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_notes_api/tsrc/group" name="classicui_tsrc_extended_notes" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_notifiers" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_notifiers_api/tsrc/group" name="classicui_tsrc_extended_notifiers" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_options_menu" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_options_menu_api/tsrc/group" name="classicui_tsrc_extended_options_menu" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_setting_pages" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_setting_pages_api/tsrc/group" name="classicui_tsrc_extended_setting_pages" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_status_pane" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_status_pane_api/tsrc/group" name="classicui_tsrc_extended_status_pane" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.extended_utilities" mrp="" bldFile="sf/mw/classicui/classicui_plat/extended_utilities_api/tsrc/group" name="classicui_tsrc_extended_utilities" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.find_item_ui" mrp="" bldFile="sf/mw/classicui/classicui_plat/find_item_ui_api/tsrc/group" name="classicui_tsrc_find_item_ui" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.generic_parameter" mrp="" bldFile="sf/mw/classicui/classicui_plat/generic_parameter_api/tsrc/group" name="classicui_tsrc_generic_parameter" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.global_popup_priority_controller" mrp="" bldFile="sf/mw/classicui/classicui_plat/global_popup_priority_controller_api/tsrc/group" name="classicui_tsrc_global_popup_priority_controller" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.indicator_plugin" mrp="" bldFile="sf/mw/classicui/classicui_plat/indicator_plugin_api/tsrc/group" name="classicui_tsrc_indicator_plugin" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.input_block" mrp="" bldFile="sf/mw/classicui/classicui_plat/input_block_api/tsrc/group" name="classicui_tsrc_input_block" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.item_finder" mrp="" bldFile="sf/mw/classicui/classicui_plat/item_finder_api/tsrc/group" name="classicui_tsrc_item_finder" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.japanese_reading" mrp="" bldFile="sf/mw/classicui/classicui_plat/japanese_reading_api/tsrc/group" name="classicui_tsrc_japanese_reading" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.key_rotator" mrp="" bldFile="sf/mw/classicui/classicui_plat/key_rotator_api/tsrc/group" name="classicui_tsrc_key_rotator" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.layout_configuration" mrp="" bldFile="sf/mw/classicui/classicui_plat/layout_configuration_api/tsrc/group" name="classicui_tsrc_layout_configuration" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.list_effects" mrp="" bldFile="sf/mw/classicui/classicui_plat/list_effects_api/tsrc/group" name="classicui_tsrc_list_effects" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.long_tap_animation" mrp="" bldFile="sf/mw/classicui/classicui_plat/long_tap_animation_api/tsrc/group" name="classicui_tsrc_long_tap_animation" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.media_shared_document" mrp="" bldFile="sf/mw/classicui/classicui_plat/media_shared_document_api/tsrc/group" name="classicui_tsrc_media_shared_document" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.memory_card_ui" mrp="" bldFile="sf/mw/classicui/classicui_plat/memory_card_ui_api/tsrc/group" name="classicui_tsrc_memory_card_ui" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.number_grouping" mrp="" bldFile="sf/mw/classicui/classicui_plat/number_grouping_api/tsrc/group" name="classicui_tsrc_number_grouping" filter="classicui_plat_api"/>
+    <!--unit unitID="abs.classicui.tsrc.personalisation_framework" mrp="" bldFile="&layer_real_source_path;/classicui_plat/personalisation_framework_api/tsrc/group" name="classicui_tsrc_personalisation_framework" filter="classicui_plat_api" /-->
+    <unit unitID="abs.classicui.tsrc.phone_number_text_utilities" mrp="" bldFile="sf/mw/classicui/classicui_plat/phone_number_text_utilities_api/tsrc/group" name="classicui_tsrc_phone_number_text_utilities" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.pointer_event_modifier" mrp="" bldFile="sf/mw/classicui/classicui_plat/pointer_event_modifier_api/tsrc/group" name="classicui_tsrc_pointer_event_modifier" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.popup_form" mrp="" bldFile="sf/mw/classicui/classicui_plat/popup_form_api/tsrc/group" name="classicui_tsrc_popup_form" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.server_application_services" mrp="" bldFile="sf/mw/classicui/classicui_plat/server_application_services_api/tsrc/group" name="classicui_tsrc_server_application_services" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.signal_pane" mrp="" bldFile="sf/mw/classicui/classicui_plat/signal_pane_api/tsrc/group" name="classicui_tsrc_signal_pane" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.skinnable_clock" mrp="" bldFile="sf/mw/classicui/classicui_plat/skinnable_clock_api/tsrc/group" name="classicui_tsrc_skinnable_clock" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.special_character_table" mrp="" bldFile="sf/mw/classicui/classicui_plat/special_character_table_api/tsrc/group" name="classicui_tsrc_special_character_table" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.stylus_activated_popup" mrp="" bldFile="sf/mw/classicui/classicui_plat/stylus_activated_popup_api/tsrc/group" name="classicui_tsrc_stylus_activated_popup" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.task_list" mrp="" bldFile="sf/mw/classicui/classicui_plat/task_list_api/tsrc/group" name="classicui_tsrc_task_list" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.text_scroller" mrp="" bldFile="sf/mw/classicui/classicui_plat/text_scroller_api/tsrc/group" name="classicui_tsrc_text_scroller" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.touch_gesture_framework" mrp="" bldFile="sf/mw/classicui/classicui_plat/touch_gesture_framework_api/tsrc/group" name="classicui_tsrc_touch_gesture_framework" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.touch_pane" mrp="" bldFile="sf/mw/classicui/classicui_plat/touch_pane_api/tsrc/group" name="classicui_tsrc_touch_pane" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.transition_effect_parameters" mrp="" bldFile="sf/mw/classicui/classicui_plat/transition_effect_parameters_api/tsrc/group" name="classicui_tsrc_transition_effect_parameters" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.transition_effect_utilities" mrp="" bldFile="sf/mw/classicui/classicui_plat/transition_effect_utilities_api/tsrc/group" name="classicui_tsrc_transition_effect_utilities" filter="classicui_plat_api"/>
+    <unit unitID="abs.classicui.tsrc.volume_popup" mrp="" bldFile="sf/mw/classicui/classicui_plat/volume_popup_api/tsrc/group" name="classicui_tsrc_volume_popup" filter="classicui_plat_api"/>
+  </module>
+<module name="classicui_pub_api_tests">
+    <unit unitID="abs.classicui.tsrc.aiw_criteria" mrp="" bldFile="sf/mw/classicui/classicui_pub/aiw_criteria_api/tsrc/group" name="classicui_tsrc_aiw_criteria" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.aiw_generic_parameter" mrp="" bldFile="sf/mw/classicui/classicui_pub/aiw_generic_parameter_api/tsrc/group" name="classicui_tsrc_aiw_generic_parameter" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.aiw_service_handler" mrp="" bldFile="sf/mw/classicui/classicui_pub/aiw_service_handler_api/tsrc/group" name="classicui_tsrc_aiw_service_handler" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.animation" mrp="" bldFile="sf/mw/classicui/classicui_pub/animation_api/tsrc/group" name="classicui_tsrc_animation" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.application" mrp="" bldFile="sf/mw/classicui/classicui_pub/application_framework_api/tsrc/group" name="classicui_tsrc_application_framework" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.base_controls" mrp="" bldFile="sf/mw/classicui/classicui_pub/base_controls_api/tsrc/group" name="classicui_tsrc_base_controls" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.buttons" mrp="" bldFile="sf/mw/classicui/classicui_pub/buttons_api/tsrc/group" name="classicui_tsrc_buttons" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.choice_list" mrp="" bldFile="sf/mw/classicui/classicui_pub/choice_list_api/tsrc/group" name="classicui_tsrc_choicelist" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.common_file_dialogs" mrp="" bldFile="sf/mw/classicui/classicui_pub/common_file_dialogs_api/tsrc/group" name="classicui_tsrc_common_file_dialogs" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.context_pane" mrp="" bldFile="sf/mw/classicui/classicui_pub/context_pane_api/tsrc/group" name="classicui_tsrc_context_pane" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.dialog_shutter" mrp="" bldFile="sf/mw/classicui/classicui_pub/dialog_shutter_api/tsrc/group" name="classicui_tsrc_dialog_shutter" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.dialogs" mrp="" bldFile="sf/mw/classicui/classicui_pub/dialogs_api/tsrc/group" name="classicui_tsrc_dialogs" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.editors" mrp="" bldFile="sf/mw/classicui/classicui_pub/editors_api/tsrc/group" name="classicui_tsrc_editors" filter="classicui_pub_api"/> 
+    <unit unitID="abs.classicui.tsrc.errorui" mrp="" bldFile="sf/mw/classicui/classicui_pub/error_ui_api/tsrc/group" name="classicui_tsrc_error_ui" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.fonts" mrp="" bldFile="sf/mw/classicui/classicui_pub/fonts_api/tsrc/group" name="classicui_tsrc_fonts" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.form" mrp="" bldFile="sf/mw/classicui/classicui_pub/form_api/tsrc/group" name="classicui_tsrc_form" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.generic_button" mrp="" bldFile="sf/mw/classicui/classicui_pub/generic_button_api/tsrc/group" name="classicui_tsrc_generic_button" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.grids" mrp="" bldFile="sf/mw/classicui/classicui_pub/grids_api/tsrc/group" name="classicui_tsrc_grids" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.hierarchical_list" mrp="" bldFile="sf/mw/classicui/classicui_pub/hierarchical_lists_api/tsrc/group" name="classicui_tsrc_hierarchical_lists" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.hotkeys" mrp="" bldFile="sf/mw/classicui/classicui_pub/hotkeys_api/tsrc/group" name="classicui_tsrc_hotkeys" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.images" mrp="" bldFile="sf/mw/classicui/classicui_pub/images_api/tsrc/group" name="classicui_tsrc_images" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.indicators" mrp="" bldFile="sf/mw/classicui/classicui_pub/indicators_api/tsrc/group" name="classicui_tsrc_indicators" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.info_popup_note" mrp="" bldFile="sf/mw/classicui/classicui_pub/info_popup_note_api/tsrc/group" name="classicui_tsrc_info_popup_note" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.info_preview_popup" mrp="" bldFile="sf/mw/classicui/classicui_pub/information_preview_popup_api/tsrc/group" name="classicui_tsrc_info_preview_popup" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.initialization" mrp="" bldFile="sf/mw/classicui/classicui_pub/initialization_api/tsrc/group" name="classicui_tsrc_initialization" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.input_frame" mrp="" bldFile="sf/mw/classicui/classicui_pub/input_frame_api/tsrc/group" name="classicui_tsrc_input_frame" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.keylock" mrp="" bldFile="sf/mw/classicui/classicui_pub/keylock_api/tsrc/group" name="classicui_tsrc_keylock" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.labels" mrp="" bldFile="sf/mw/classicui/classicui_pub/labels_api/tsrc/group" name="classicui_tsrc_labels" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.lists" mrp="" bldFile="sf/mw/classicui/classicui_pub/lists_api/tsrc/group" name="classicui_tsrc_lists" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.misc_ctrls" mrp="" bldFile="sf/mw/classicui/classicui_pub/misc_controls_api/tsrc/group" name="classicui_tsrc_misc_controls" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.navigation_pane" mrp="" bldFile="sf/mw/classicui/classicui_pub/navigation_pane_api/tsrc/group" name="classicui_tsrc_navigation_pane" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.notes" mrp="" bldFile="sf/mw/classicui/classicui_pub/notes_api/tsrc/group" name="classicui_tsrc_notes" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.notifiers" mrp="" bldFile="sf/mw/classicui/classicui_pub/notifiers_api/tsrc/group" name="classicui_tsrc_notifiers" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.options_menu" mrp="" bldFile="sf/mw/classicui/classicui_pub/options_menu_api/tsrc/group" name="classicui_tsrc_options_menu" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.popups" mrp="" bldFile="sf/mw/classicui/classicui_pub/popups_api/tsrc/group" name="classicui_tsrc_popups" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.private_ui_framework" mrp="" bldFile="sf/mw/classicui/classicui_pub/private_ui_framework_api/tsrc/group" name="classicui_tsrc_private_ui_framework" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.queries" mrp="" bldFile="sf/mw/classicui/classicui_pub/queries_api/tsrc/group" name="classicui_tsrc_queries" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.screen_clearer" mrp="" bldFile="sf/mw/classicui/classicui_pub/screen_clearer_api/tsrc/group" name="classicui_tsrc_screen_clearer" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.screen_mode" mrp="" bldFile="sf/mw/classicui/classicui_pub/screen_mode_api/tsrc/group" name="classicui_tsrc_screen_mode" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.screen_saver" mrp="" bldFile="sf/mw/classicui/classicui_pub/screen_saver_api/tsrc/group" name="classicui_tsrc_screen_saver" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.scroller" mrp="" bldFile="sf/mw/classicui/classicui_pub/scroller_api/tsrc/group" name="classicui_tsrc_scroller" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.search_field" mrp="" bldFile="sf/mw/classicui/classicui_pub/searchfield_api/tsrc/group" name="classicui_tsrc_searchfield" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.settings_pages" mrp="" bldFile="sf/mw/classicui/classicui_pub/setting_pages_api/tsrc/group" name="classicui_tsrc_setting_pages" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.slider" mrp="" bldFile="sf/mw/classicui/classicui_pub/slider_api/tsrc/group" name="classicui_tsrc_slider" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.sounds" mrp="" bldFile="sf/mw/classicui/classicui_pub/sounds_api/tsrc/group" name="classicui_tsrc_sounds" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.status_pane" mrp="" bldFile="sf/mw/classicui/classicui_pub/status_pane_api/tsrc/group" name="classicui_tsrc_status_pane" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.stylus_popup_menu" mrp="" bldFile="sf/mw/classicui/classicui_pub/stylus_popup_menu_api/tsrc/group" name="classicui_tsrc_stylus_popup_menu" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.tabs" mrp="" bldFile="sf/mw/classicui/classicui_pub/tabs_api/tsrc/group" name="classicui_tsrc_tabs" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.title_pane" mrp="" bldFile="sf/mw/classicui/classicui_pub/title_pane_api/tsrc/group" name="classicui_tsrc_title_pane" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.toolbar" mrp="" bldFile="sf/mw/classicui/classicui_pub/toolbar_api/tsrc/group" name="classicui_tsrc_toolbar" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.touch_ui_utilities" mrp="" bldFile="sf/mw/classicui/classicui_pub/touch_ui_utilities_api/tsrc/group" name="classicui_tsrc_touch_ui_utilities" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.ui_fw_definitions" mrp="" bldFile="sf/mw/classicui/classicui_pub/ui_framework_definitions_api/tsrc/group" name="classicui_tsrc_ui_framework_definitions" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.ui_fw_util" mrp="" bldFile="sf/mw/classicui/classicui_pub/ui_framework_utilities_api/tsrc/group" name="classicui_tsrc_ui_framework_utilities" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.vol_ctrl" mrp="" bldFile="sf/mw/classicui/classicui_pub/volume_control_api/tsrc/group" name="classicui_tsrc_volume_control" filter="classicui_pub_api"/>
+    <unit unitID="abs.classicui.tsrc.window_server_event_observer" mrp="" bldFile="sf/mw/classicui/classicui_pub/window_server_event_observer_api/tsrc/group" name="classicui_tsrc_window_server_event_observer" filter="classicui_pub_api"/>
+  </module>
+<module name="hcdo_api_tests">
+<!--
+        <unit unitID="hcdo.avcontrolframework.test" name="avcontrolframework.test" bldFile="&layer_real_source_path;/upnpavcontrolpoint/avcontrolframework/tsrc/public/basic/group" mrp="" />
+        <unit unitID="hcdo.avobjects.test" name="avobjects.test" bldFile="&layer_real_source_path;/upnpmediaserver/avobjects/tsrc/public/basic/group" mrp="" />
+        <unit unitID="hcdo.mediaserverclient.test" name="mediaserverclient.test" bldFile="&layer_real_source_path;/upnpmediaserver/mediaserverclient/tsrc/public/basic/group" mrp="" />
+        <unit unitID="hcdo.controlpointbase.test" name="controlpointbase.test" bldFile="&layer_real_source_path;/upnpstack/controlpointbase/tsrc/public/basic/group" mrp="" />
+        <unit unitID="hcdo.serviceframework.test" name="serviceframework.test" bldFile="&layer_real_source_path;/upnpstack/serviceframework/tsrc/public/basic/group" mrp="" />
+        <unit unitID="hcdo.upnputils.test" name="upnputils.test" bldFile="&layer_real_source_path;/upnpstack/upnputils/tsrc/public/basic/group" mrp="" />
+        <unit unitID="hcdo.testplugin.test" name="testplugin.test" bldFile="&layer_real_source_path;/dlnasrv_plat/upnp_plugin_api/tsrc/testplugin/group" mrp="" />
+        <unit unitID="hcdo.upnpextensionpluginiftest.test" name="upnpextensionpluginiftest.test" bldFile="&layer_real_source_path;/dlnasrv_plat/upnp_plugin_api/tsrc/upnpextensionpluginiftest/group" mrp="" />
+        <unit unitID="hcdo.upnpxmlparsertes.test" name="upnpxmlparsertest.test" bldFile="&layer_real_source_path;/upnpavcontroller/upnpxmlparser/tsrc/upnpxmlparsertest/group" mrp="" />
+        <unit unitID="hcdo.upnpsecuritytest.test" name="upnpsecuritytest.test" bldFile="&layer_real_source_path;/upnpsharing/upnpsecurity/tsrc/upnpsecuritytest/group" mrp="" />
+-->
+        <unit unitID="hcdo.api.test" name="api.test" bldFile="sf/mw/dlnasrv/tsrc/group" mrp=""/>
+    </module>
+<module name="drm_test">
+        <unit unitID="sedo.drm_test" mrp="" bldFile="sf/mw/drm/tsrc/group" name="drm_test"/>
+      </module>
+<module name="helix_tsrc">
+				<unit unitID="helix_tsrc" name="helix_tsrc" bldFile="sf/mw/helix/tsrc/group" mrp=""/>
+			</module>
+<module name="homescreensrv_api_tests">
+  			<unit unitID="hsdo.content_harvester.test" name="content_harvester.test" bldFile="sf/mw/homescreensrv/homescreensrv_plat/content_harvester_plugin_api/tsrc/group" mrp=""/>
+  			<unit unitID="hsdo.menu_content_service.test" name="menu_content_service.test" bldFile="sf/mw/homescreensrv/homescreensrv_plat/menu_content_service_api/tsrc/group" mrp=""/>
+  			<unit unitID="hsdo.ai_utilities_api.test" name="ai_utilities_api.test" bldFile="sf/mw/homescreensrv/homescreensrv_plat/ai_utilities_api/internal/tsrc/group" mrp=""/>
+  			<unit unitID="hsdo.action_handler_plugin_api.test" name="action_handler_plugin_api.test" bldFile="sf/mw/homescreensrv/homescreensrv_plat/action_handler_plugin_api/tsrc/group" mrp=""/>
+  			<unit unitID="hsdo.menu_sat_interface_api.test" name="menu_sat_interface_api.test" bldFile="sf/mw/homescreensrv/homescreensrv_plat/menu_sat_interface_api/tsrc/group" mrp=""/>
+  			<unit unitID="hsdo.sapi_homescreenplugin.test" name="sapi_homescreenplugin.test" bldFile="sf/mw/homescreensrv/homescreensrv_plat/sapi_homescreenplugin/tsrc/group" mrp=""/>
+			</module>
+<module name="imagehandling_api_tests">
+     	<unit unitID="imm.3gp_library_api" mrp="" bldFile="sf/mw/imghandling/imagehandling_plat/3gp_library_api/tsrc/group" name="3gp_library_api"/>
+     	<unit unitID="imm.imagehandlinglib_api" mrp="" bldFile="sf/mw/imghandling/imagehandlinglib/tsrc/public/basic/group" name="imagehandlinglib_api"/>
+     	<unit unitID="imm.thumbnailmanager_api" mrp="" bldFile="sf/mw/imghandling/imagehandling_plat/thumbnailmanager_api/tsrc/group" name="thumbnailmanager_api"/>
+	</module>
+<module name="inputmethods_api_tests">
+    <unit unitID="abs.inputmethods.tsrc.all" mrp="" bldFile="sf/mw/inputmethods/tsrc/group" name="inputmethods_tsrc_all"/>
+    <unit unitID="abs.inputmethods.tsrc.pen_input_server_api" mrp="" bldFile="sf/mw/inputmethods/inputmethods_plat/pen_input_server_api/tsrc/group" name="inputmethods_tsrc_pen_input_server"/>
+    <unit unitID="abs.inputmethods.tsrc.ptiengine_hwr_api" mrp="" bldFile="sf/mw/inputmethods/inputmethods_plat/ptiengine_hwr_api/tsrc/group" name="inputmethods_tsrc_ptiengine_hwr"/>
+    <unit unitID="abs.inputmethods.tsrc.aknfep_uiinterface_api" mrp="" bldFile="sf/mw/inputmethods/inputmethods_plat/aknfep_uiinterface_api/tsrc/group" name="inputmethods_tsrc_aknfep_uiinterface"/>
+  </module>
+<module name="mds_api_tests">
+        <unit unitID="imm.mds.content_listing_framework_collection_manager_api" mrp="" bldFile="sf/mw/mds/mds_plat/content_listing_framework_collection_manager_api/tsrc/group" name="content_listing_framework_collection_manager_api"/>
+      	<unit unitID="imm.mds.context_engine_plugin_api" mrp="" bldFile="sf/mw/mds/mds_plat/context_engine_plugin_api/tsrc/group" name="context_engine_plugin_api"/>
+      	<unit unitID="imm.mds.harvester_framework_api.composerplugin" mrp="" bldFile="sf/mw/mds/mds_plat/harvester_framework_api/tsrc/ComposerPluginTest/group" name="harvester_framework_api.composerplugin"/>
+      	<unit unitID="imm.mds.harvester_framework_api.harvesterclient" mrp="" bldFile="sf/mw/mds/mds_plat/harvester_framework_api/tsrc/HarvesterClientTest/group" name="harvester_framework_api.harvesterclient"/>
+      	<unit unitID="imm.mds.harvester_framework_api.harvesterdata" mrp="" bldFile="sf/mw/mds/mds_plat/harvester_framework_api/tsrc/HarvesterDataTest/group" name="harvester_framework_api.harvesterdata"/>
+      	<unit unitID="imm.mds.harvester_framework_api.harvesterplugin" mrp="" bldFile="sf/mw/mds/mds_plat/harvester_framework_api/tsrc/HarvesterPluginTest/group" name="harvester_framework_api.harvesterplugin"/>
+      	<unit unitID="imm.mds.harvester_framework_api.monitorplugin" mrp="" bldFile="sf/mw/mds/mds_plat/harvester_framework_api/tsrc/MonitorPluginTest/group" name="harvester_framework_api.monitorplugin"/>
+        <unit unitID="imm.mds.location_manager_api" mrp="" bldFile="sf/mw/mds/mds_plat/location_manager_api/tsrc/group" name="location_manager_api"/>
+        <unit unitID="imm.mds.metadata_engine_api" mrp="" bldFile="sf/mw/mds/mds_plat/metadata_engine_api/tsrc/group" name="metadata_engine_api"/>
+        <unit unitID="imm.mds.content_listing_framework" mrp="" bldFile="sf/mw/mds/mds_pub/content_listing_framework_api/tsrc/group" name="content_listing_framework_api"/>    
+      </module>
+<module name="mmappfw_tsrc">
+				<unit unitID="mmappfw_tsrc" name="mmappfw_tsrc" bldFile="sf/mw/mmappfw/tsrc/group" mrp=""/>
+			</module>
+<module name="mmmw_tsrc">
+				<unit unitID="mmmw_tsrc" name="mmmw_tsrc" bldFile="sf/mw/mmmw/tsrc/group" mrp=""/>
+			</module>
+<module name="securitysrv_test">
+        <unit unitID="sedo.securitysrv_test" mrp="" bldFile="sf/mw/securitysrv/tsrc/group" name="securitysrv_test"/>
+      </module>
+<module name="uiresources_api_tests">
+  	<unit unitID="abs.uiresources.tsrc.all_tests" mrp="" bldFile="sf/mw/uiresources/tsrc/group" name="uiresources_tsrc_cdl" filter="uiresources_api_all"/>
+		<unit unitID="abs.uiresources.tsrc.cdl" mrp="" bldFile="sf/mw/uiresources/uiresources_plat/cdl_api/tsrc/group" name="uiresources_tsrc_cdl" filter="cdl_api"/>
+		<unit unitID="abs.uiresources.tsrc.extended_fonts" mrp="" bldFile="sf/mw/uiresources/uiresources_plat/extended_fonts_api/tsrc/group" name="uiresources_tsrc_extended_fonts" filter="extended_fonts_api"/>
+		<unit unitID="abs.uiresources.tsrc.extended_skins" mrp="" bldFile="sf/mw/uiresources/uiresources_plat/extended_skins_api/tsrc/group" name="uiresources_tsrc_extended_skins" filter="extended_skins_api"/>
+		<unit unitID="abs.uiresources.tsrc.graphic_configuration" mrp="" bldFile="sf/mw/uiresources/uiresources_plat/graphic_configuration_api/tsrc/group" name="uiresources_tsrc_graphic_configuration" filter="graphic_configuration_api"/>
+		<unit unitID="abs.uiresources.tsrc.layout_data" mrp="" bldFile="sf/mw/uiresources/uiresources_plat/layout_data_api/tsrc/group" name="uiresources_tsrc_layout_data" filter="layout_data_api"/>
+		<unit unitID="abs.uiresources.tsrc.layout_system_private" mrp="" bldFile="sf/mw/uiresources/uiresources_plat/layout_system_private_api/tsrc/group" name="uiresources_tsrc_layout_system_private" filter="layout_system_private_api"/>
+		<unit unitID="abs.uiresources.tsrc.skins_image_attributes" mrp="" bldFile="sf/mw/uiresources/uiresources_plat/skins_image_attributes_api/tsrc/group" name="uiresources_tsrc_skins_image_attributes" filter="skins_image_attributes_api"/>
+		<unit unitID="abs.uiresources.tsrc.font_definition" mrp="" bldFile="sf/mw/uiresources/uiresources_pub/font_definition_api/tsrc/group" name="uiresources_tsrc_font_definition" filter="font_definition_api"/>
+		<unit unitID="abs.uiresources.tsrc.graphics" mrp="" bldFile="sf/mw/uiresources/uiresources_pub/graphics_api/tsrc/group" name="uiresources_tsrc_graphics" filter="graphics_api"/>
+		<unit unitID="abs.uiresources.tsrc.pictograph" mrp="" bldFile="sf/mw/uiresources/uiresources_pub/pictograph_api/tsrc/group" name="uiresources_tsrc_pictograph" filter="pictograph_api"/>
+		<unit unitID="abs.uiresources.tsrc.skins" mrp="" bldFile="sf/mw/uiresources/uiresources_pub/skins_api/tsrc/group" name="uiresources_tsrc_skins" filter="skins_api"/>
+  </module>
+<module name="usbservices_test">
+        <unit unitID="lcdo.usbservices_test" mrp="" bldFile="sf/mw/usbservices/tsrc/group" name="usbservices_test"/>
+      </module>
+<module name="videoscheduler_api_tsrc">
+			<unit unitID="vado.videoscheduler_api_test" name="videoscheduler_api_tsrc" bldFile="sf/mw/videoutils/videoutils_plat/videoscheduler_api/tsrc/group" mrp=""/>
+		</module>
+<module name="videoconnutility_apitsrc">
+			<unit unitID="vado.videoconnutility_api_test" name="videoconnutility_api_tsrc" bldFile="sf/mw/videoutils/videoutils_plat/videoconnutility_api/tsrc/group" mrp=""/>
+		</module>
+<module name="imagingext_api_tests">
+      	<unit unitID="imm.imagingext.exif_api" mrp="" bldFile="sf/os/imagingext/imagingext_pub/exif_api/tsrc/group" name="exif_api"/>
+      	<unit unitID="imm.imagingext.iclextjpegapi_api" mrp="" bldFile="sf/os/imagingext/imagingext_plat/extended_icl_jpeg_api/tsrc/group" name="iclextjpegapi_api"/>
+      </module>
+<module name="mm_tsrc">
+				<unit unitID="mm_tsrc" name="mm_tsrc" bldFile="sf/os/mm/tsrc/group" mrp=""/>
+			</module></layer>
+<layer name="unit_test_layer">
+      <module name="camera_unit_tests">
+      </module>
+<module name="cmail.emailserver.unittest">
+        <unit unitID="EDo.cmail.emailframework.unittest" mrp="" bldFile="sf/app/commonemail/emailservices/emailframework/tsrc/group" name="unittest.emailframework.cmail"/>
+        <unit unitID="EDo.cmail.emailserver.unittest" mrp="" bldFile="sf/app/commonemail/emailservices/emailserver/tsrc/group" name="unittest.emailserver.cmail"/>
+        <unit unitID="EDo.cmail.cmailhandlerplugin.unittest" mrp="" bldFile="sf/app/commonemail/emailservices/emailserver/cmailhandlerplugin/tsrc/group" name="unittest.cmailhandlerplugin.cmail"/>
+        <unit unitID="EDo.cmail.mailserverautostart.unittest" mrp="" bldFile="sf/app/commonemail/emailservices/emailserver/mailserverautostart/tsrc/group" name="unittest.mailserverautostart.cmail"/>
+        <unit unitID="EDo.cmail.saveascontactplugin.unittest" mrp="" bldFile="sf/app/commonemail/emailcontacts/contactactionservice/saveascontactplugin/tsrc/group" name="unittest.saveascontactplugin.cmail"/>
+        <unit unitID="EDo.cmail.utils.unittest" mrp="" bldFile="ext/app/eas/Utils/tsrc/group" name="unittest.utils.cmail"/>
+      </module>
+<module name="Phonebook2">
+         <unit unitID="Phonebook2" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/tsrc/group" name="Phonebook2"/>
+         <unit unitID="remotecontactlookup" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/remotecontactlookup/contactactionservice/saveascontactplugin/tsrc/group" name="remotecontactlookup"/>
+         <unit unitID="statusprovider" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/statusprovider/tsrc/ut_statusprovider/group" name="statusprovider"/>      
+      </module>
+<module name="UIControls_Presentation_USIMExtension_CCA">
+        <unit unitID="UIControls" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/UIControls/tsrc/group" name="UIControls"/>
+        <unit unitID="Presentation" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/Presentation/tsrc/group" name="Presentation"/>
+        <unit unitID="USIMExtension" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/USIMExtension/tsrc/group" name="USIMExtension"/>
+        <unit unitID="xSPExtensionManager" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/xSPExtensionManager/tsrc/group" name="xSPExtensionManager"/>
+        <unit unitID="ccacommlauncherplugin" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/tsrc/group" name="ccacommlauncherplugin"/>
+        <unit unitID="ccacontactorservice" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/ccapplication/ccacontactorservice/tsrc/group" name="ccacontactorservice"/>
+        <unit unitID="ccapp" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/ccapplication/ccapp/tsrc/group" name="ccapp"/>
+        <unit unitID="ccamycardplugin" mrp="" bldFile="sf/app/contacts/phonebookui/Phonebook2/ccapplication/ccamycardplugin/tsrc/group" name="ccamycardplugin"/>
+      </module>
+<module name="VirtualPhonebook_VPbkCntModel">
+         <unit unitID="VirtualPhonebook" mrp="" bldFile="sf/app/contacts/phonebookengines/VirtualPhonebook/tsrc/group" name="VirtualPhonebook"/>
+         <unit unitID="VPbkCntModel" mrp="" bldFile="sf/app/contacts/phonebookengines/VirtualPhonebook/VPbkCntModel/tsrc/group" name="VPbkCntModel"/>
+      </module>
+<module name="VPbk_cms_presencecache">
+         <unit unitID="VPbkEng" mrp="" bldFile="sf/app/contacts/phonebookengines/VirtualPhonebook/VPbkEng/tsrc/group" name="VPbkEng"/>
+         <unit unitID="VPbkEngUtils" mrp="" bldFile="sf/app/contacts/phonebookengines/VirtualPhonebook/VPbkEngUtils/tsrc/group" name="VPbkEngUtils"/>
+         <unit unitID="VPbkSimStoreImpl" mrp="" bldFile="sf/app/contacts/phonebookengines/VirtualPhonebook/VPbkSimStoreImpl/tsrc/group" name="VPbkSimStoreImpl"/>
+         <unit unitID="VPbkSimStoreService" mrp="" bldFile="sf/app/contacts/phonebookengines/VirtualPhonebook/VPbkSimStoreService/tsrc/group" name="VPbkSimStoreService"/>
+        <unit unitID="bpastester" mrp="" bldFile="sf/app/contacts/ccservices/cmsservices/bpas/tsrc/group" name="bpastester"/>
+        <unit unitID="cmsengine" mrp="" bldFile="sf/app/contacts/ccservices/cmsservices/cmsengine/tsrc/group" name="cmsengine"/>
+        <unit unitID="contactpresence" mrp="" bldFile="sf/app/contacts/ccservices/cmsservices/contactpresence/tsrc/group" name="contactpresence"/>
+        <unit unitID="presencetrafficlights" mrp="" bldFile="sf/app/contacts/ccservices/cmsservices/presencetrafficlights/tsrc/group" name="presencetrafficlights"/>
+        <unit unitID="utilstester" mrp="" bldFile="sf/app/contacts/presencecache/presencecacheutils/tsrc/group" name="utilstester"/>
+      </module>
+<module name="homescreen_unit_tests">
+         <unit unitID="hsdo.wmunit.test" mrp="" bldFile="sf/app/homescreen/idlehomescreen/widgetmanager/tsrc/wmunittest/group" name="wmunit.test"/>
+      </module>
+<module name="videoplayer_tsrc">
+			<unit unitID="vado.videohelix_test" name="videohelix_tsrc" bldFile="sf/app/videoplayer/videoplayback/videohelix/tsrc/ut_videohelixtest/group" mrp=""/>
+			<unit unitID="vado.videoplaybackcontrols_test" name="videoplaybackcontrols_tsrc" bldFile="sf/app/videoplayer/videoplayback/videoplaybackcontrols/tsrc/videoplaybackcontrols_test/group" mrp=""/>
+			<unit unitID="vado.userinputhandler_test" name="userinputhandler_tsrc" bldFile="sf/app/videoplayer/videoplayback/videoplaybackviews/tsrc/ut_userinputhandlertest/group" mrp=""/>
+			<unit unitID="vado.mpxvideoplayer_test" name="mpxvideoplayer_tsrc" bldFile="sf/app/videoplayer/videoplayerapp/mpxvideoplayer/tsrc/ut_mpxvideoplayertest/group" mrp=""/>
+		</module>
+<module name="videofeeds_tsrc">
+			<unit unitID="vado.feeds_tests_dependency1" name="feeds_tests_dependency1" bldFile="sf/app/videoplayer/tsrc/VCXTestCommon/group" mrp=""/>
+			<unit unitID="vado.feeds_tests_dependency2" name="feeds_tests_dependency2" bldFile="sf/app/videoplayer/tsrc/VCXTestUtilModule/group" mrp=""/>
+			<unit unitID="vado.feeds_tests_dependency3" name="feeds_tests_dependency3" bldFile="sf/app/videoplayer/videofeeds/server/tsrc/IptvTestUtility/group" mrp=""/>
+			<unit unitID="vado.feeds_tests_dependency4" name="feeds_tests_dependency4" bldFile="sf/app/videoplayer/tsrc/VCXTestMyVideosCollectionClient/group" mrp=""/>
+			<unit unitID="vado.serviceprovisioning_test" name="serviceprovisioning_tsrc" bldFile="sf/app/videoplayer/videofeeds/server/tsrc/VCXProvisioningTest/group" mrp=""/>
+			<unit unitID="vado.servicemanagement_test" name="servicemanagement_tsrc" bldFile="sf/app/videoplayer/videofeeds/server/tsrc/VCXServiceManagementApiTest/group" mrp=""/>
+			<unit unitID="vado.vodcontent_test" name="vodcontent_tsrc" bldFile="sf/app/videoplayer/videofeeds/server/tsrc/VCXVodContentApiTest/group" mrp=""/>
+		</module>
+<module name="mpxmyvideoscollection_tsrc">
+			<unit unitID="vado.mvcollection_tests_dependency1" name="mvcollection_tests_dependency1" bldFile="sf/app/videoplayer/tsrc/VCXTestCommon/group" mrp=""/>
+			<unit unitID="vado.mvcollection_tests_dependency2" name="mvcollection_tests_dependency2" bldFile="sf/app/videoplayer/tsrc/VCXTestUtilModule/group" mrp=""/>
+			<unit unitID="vado.mvcollection_tests_dependency3" name="mvcollection_tests_dependency3" bldFile="sf/app/videoplayer/tsrc/VCXTestMyVideosCollectionClient/group" mrp=""/>
+			<unit unitID="vado.mpxmyvideoscollection_test" name="mpxmyvideoscollection_tsrc" bldFile="sf/app/videoplayer/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/group" mrp=""/>
+		</module>
+<module name="other_tsrc">
+			<unit unitID="vado.other_tests_dependency1" name="other_tests_dependency1" bldFile="sf/app/videoplayer/tsrc/VCXTestCommon/group" mrp=""/>
+			<unit unitID="vado.other_tests_dependency2" name="other_tests_dependency2" bldFile="sf/app/videoplayer/tsrc/VCXTestUtilModule/group" mrp=""/>
+			<unit unitID="vado.other_tests_dependency3" name="other_tests_dependency3" bldFile="sf/app/videoplayer/tsrc/VCXTestMyVideosCollectionClient/group" mrp=""/>
+			<unit unitID="vado.mediasettingsengine_test" name="mediasettingsengine_tsrc" bldFile="sf/app/videoplayer/mediasettings/mediasettingsengine/tsrc/mediasettingsenginetest/group" mrp=""/>
+			<unit unitID="vado.vpsettingsenginetest_test" name="vpsettingsenginetest_tsrc" bldFile="sf/app/videoplayer/mediasettings/videoplayersettingsengine/tsrc/vpsettingsenginetest/group" mrp=""/>
+		</module>
+<module name="camerasrv_unit_tests">
+      </module>
+<module name="imagehandling_unit_tests">
+    </module>
+<module name="mds_unit_tests">
+      </module>
+<module name="metadatasrv_unit_tests">
+      </module></layer>
+<layer name="bldfirst_app_layer">
+      <module name="contacts">
+        <unit unitID="contacts" mrp="" bldFile="sf/app/contacts/group" name="contacts"/>
+      </module>
+    </layer>
+<layer name="app_musicplayer_layer">
+			<module name="musicplayer_group">
+				<unit unitID="musicplayer_group" mrp="" bldFile="sf/app/musicplayer/group" name="musicplayer_group"/>
+			</module>
+    </layer>
+<layer name="app_tv_layer">
+      <module name="tv_group">
+        <unit unitID="tv_group" mrp="" bldFile="sf/app/tv/group" filter="dfs_build" name="tv_group"/>
+			</module>
+    </layer>
+<layer name="app_voicerec_layer">
+			<module name="voicerec_group">
+				<unit unitID="voicerec_group" mrp="" bldFile="sf/app/voicerec/group" name="voicerec_group"/>
+			</module>
+    </layer>
+<layer name="bldfirst_mw_layer">
+      <module name="classicui">
+        <unit unitID="abs.classicui" mrp="" bldFile="sf/mw/classicui/group" name="classicui"/>
+      </module>
+<module name="gsprofilesrv">
+        <unit name="gsprofilesrv" unitID="presdo.gsprofilesrv" bldFile="sf/mw/gsprofilesrv/group" mrp=""/>
+      </module></layer>
+<layer name="mw_helix_layer">
+			<module name="helix_group">
+				<unit unitID="helix_group" mrp="" bldFile="sf/mw/helix/group" filter="!sf_build" name="helix_group"/>
+				<unit unitID="helix_src_group" mrp="" bldFile="sf/mw/helix/helix_ren/src/group" filter="!sf_build" name="helix_src_group"/>
+				<unit unitID="ng_helix_src_group" mrp="" bldFile="sf/mw/helix/helix_ren/ng_helix/src/group" filter="!sf_build" name="ng_helix_src_group"/>
+				<unit unitID="helix_stub_group" mrp="" bldFile="sf/mw/helix/helix_ren/helix_stub/group" filter="sf_build" name="helix_stub_group"/> 
+			</module>
+    </layer>
+<layer name="mw_mmappfw_layer">
+			<module name="mmappfw_group">
+				<unit unitID="mmappfw_group" mrp="" bldFile="sf/mw/mmappfw/group" name="mmappfw_group"/>
+			</module>
+    </layer>
+<layer name="mw_mmmw_layer">
+			<module name="mmmw_group">
+				<unit unitID="mmmw_group" mrp="" bldFile="sf/mw/mmmw/group" name="mmmw_group"/>
+			</module>
+			<module name="">
+				<unit unitID="mmmw_3GPExtParserLib_group" mrp="" bldFile="sf/mw/mmmw/mmserv/metadatautility/3GPExtParserLib/group" filter="!sf_build" name="mmmw_3GPExtParserLib_group"/>
+			</module>
+			<module name="">
+				<unit unitID="mtp_group" mrp="" bldFile="sf/mw/mmmw/mtp/group" filter="!sf_build" name="mtp_group"/>
+			</module>
+    </layer>
+<layer name="mw_mmmw_tms_layer">
+			<module name="mmmw_tms_api_group">
+				<unit unitID="mmmw_tms_api_group" mrp="" bldFile="sf/mw/mmmw/mmmw_plat/telephony_multimedia_service_api/group" name="mmmw_tms_api_group"/>
+				<unit unitID="mmmw_tms_group" mrp="" bldFile="sf/mw/mmmw/mmserv/tms/group" name="mmmw_tms_group"/>
+			</module>
+    </layer>
+<layer name="tools_layer">
+      <module name="qtconf">
+        <unit unitID="qtdo.qt.qtconf" mrp="" bldFile="sf/mw/qt/group" name="qtconf"/>
+      </module>
+<module name="uitools">
+        <unit unitID="abs.uitools" mrp="" bldFile="sf/mw/uitools/group" name="uitools"/>
+      </module>
+<module name="">
+        <unit unitID="abs.uitools.toollibraries" mrp="" bldFile="sf/mw/uitools/toollibraries/group" name="uitools_toollibraries" filter="!sf_build"/>
+      </module>
+<module name="homescreentools">
+        <unit unitID="hsdo.themeinstaller" mrp="" bldFile="sf/tools/homescreentools/themeinstaller/group" name="themeinstaller"/>
+        <unit unitID="hsdo.widgettools" mrp="" bldFile="sf/tools/homescreentools/widgettools/group" name="widgettools"/>
+      </module></layer>
+<layer name="bldmefirst_layer">                                                                                                                             
+      <module name="devicesrv">                                                                                                                        
+        <unit unitID="sydo.platformpaths" bldFile="sf/os/devicesrv/devicesrv_pub/platform_path_definitions_api/group" name="platformpaths" mrp=""/>               
+      </module>                                                                                                                                                     
+<module name="homescreentoolsdtd">
+        <unit unitID="hsdo.dtdinstaller" mrp="" bldFile="sf/tools/homescreentools/dtdinstaller/group" name="dtdinstaller"/>
+      </module></layer>
+<layer name="arm9e_layer"> 
+                            <module name=""> 
+                                    <unit unitID="EAacPlusCodecPlugin_arm9e" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/EAacPlusCodecPlugin/group" filter="!sf_build" name="EAacPlusCodecPlugin_arm9e"/> 
+                            </module> 
+        </layer>
+<layer name="bldmelast_layer">
+			<module name="">
+				<unit unitID="EAacPlusCodecPlugin_arm9e_2" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/EAacPlusCodecPlugin/group" filter="!sf_build" name="EAacPlusCodecPlugin_arm9e_2"/>
+			</module>
+    </layer>
+<layer name="os_mm_layer">
+			<module name="mm_group">
+				<unit unitID="mm_group" mrp="" bldFile="sf/os/mm/group" name="mm_group"/>
+			</module>
+			<module name="">
+				<unit unitID="AudioEqualizerUtility_group" mrp="" bldFile="sf/os/mm/devsoundextensions/effectspresets/AudioEqualizerUtility/group" filter="!dfs_build" name="AudioEqualizerUtility_group"/>
+				<unit unitID="EnvironmentalReverbUtility_group" mrp="" bldFile="sf/os/mm/devsoundextensions/effectspresets/EnvironmentalReverbUtility/group" filter="!dfs_build" name="EnvironmentalReverbUtility_group"/>
+				<unit unitID="StereoWideningUtility_group" mrp="" bldFile="sf/os/mm/devsoundextensions/effectspresets/StereoWideningUtility/group" filter="!dfs_build" name="StereoWideningUtility_group"/>
+			</module>
+			<module name="">
+				<unit unitID="AacEncoderPlugin_group" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/AacEncoderPlugin/group" filter="!sf_build" name="AacEncoderPlugin_group"/>
+			</module>
+			<module name="">
+				<unit unitID="AmrNbCodecPlugin_group" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/AmrNbCodecPlugin/group" filter="!sf_build" name="AmrNbCodecPlugin_group"/>
+			</module>
+			<module name="">
+				<unit unitID="AmrWbCodecPlugin_group" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/AmrWbCodecPlugin/group" filter="!sf_build" name="AmrWbCodecPlugin_group"/>
+			</module>
+			<module name="">
+				<unit unitID="EAacPlusCodecPlugin_group" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/EAacPlusCodecPlugin/group" filter="!sf_build" name="EAacPlusCodecPlugin_group"/>
+			</module>
+			<module name="">
+				<unit unitID="EAacPlusUtil_group" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/EAacPlusUtil/group" filter="!sf_build" name="EAacPlusUtil_group"/>
+			</module>
+			<module name="">
+				<unit unitID="MP3CodecPlugin_group" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/MP3CodecPlugin/group" filter="!sf_build" name="MP3CodecPlugin_group"/>
+			</module>
+			<module name="">
+				<unit unitID="WMADecoderPlugin_group" mrp="" bldFile="sf/os/mm/audio/ARM_CMMF_codecs/WMADecoderPlugin/group" filter="!sf_build" name="WMADecoderPlugin_group"/>
+			</module>
+			<module name="">
+				<unit unitID="ARM_MDF_Decoders_group" mrp="" bldFile="sf/os/mm/video/ARM_MDF_Decoders/group" filter="!sf_build" name="ARM_MDF_Decoders_group"/>
+			</module>
+    </layer>
+<layer name="bin_layer">
+			<module name="bin_layer_helix_ren">
+					<unit unitID="bin_layer_sf_mw_helix_helix_ren_src" name="src" bldFile="sf/mw/helix/helix_ren/src/group" mrp="" filter="!no_binonly"/>
+			</module>
+    </layer></systemModel>
+</SystemDefinition>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/data/custom_SystemDefinition.xml	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,194 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition [
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset 
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED  
+  span CDATA #IMPLIED
+  level CDATA #IMPLIED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>
+]>
+
+<SystemDefinition name="custom_SystemDefinition" schema="1.4.0">
+<systemModel>
+<layer name="some_component_name">
+<module name="some_component_name">
+<unit unitID="some_component" name="some_component_name" bldFile="some_component\group" mrp=""/>
+<unit unitID="some_component2" name="some_component_name2" bldFile="some_component2\group" mrp=""/>
+</module>
+</layer>
+</systemModel>
+	<build> 
+<!-- Here the unit list for added components can be given, below some_components is an example for unit list -->
+    <unitList name="SOME_COMPONENTS" description="S60 3.2 and some components">
+      <unitRef unit="some_component"/>
+      <unitRef unit="some_component2"/>
+   	</unitList>
+	
+<!--  Example how to create specific build configuration to build 3.1 with complementary but without stubs  -->
+<!--  !!! NOTE this is just example !!!  -->
+		<configuration name="S60_3_1_with_compl_no_stubs_some_comp" description="S60 3.1 with complementary and without stubs and some components" filter="S60_3_1">
+      <unitListRef unitList="S60_COMMON_OSEXTENSION"/>
+      <unitListRef unitList="S60_3_1_JAVA"/>
+      <unitListRef unitList="S60_COMMON"/>
+      <unitListRef unitList="S60_3_1"/>
+      <unitListRef unitList="S60_COMMON_COMPLEMENTARY"/>
+      <unitListRef unitList="S60_3_1_COMPLEMENTARY"/>
+<!--  include some components  -->
+      <unitListRef unitList="SOME_COMPONENTS"/>
+<!-- include some components end    -->
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><specialInstructions name="Install colour resources" cwd="%EPOCROOT%" command="instcol cl"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+		</configuration>
+
+<!--  Example how to create specific build configuration to build 3.1 with complementary but without stubs  -->
+<!--  !!! NOTE this is just example !!!  -->
+		<configuration name="S60_3_1_with_compl_no_stubs" description="S60 3.1 with complementary and without stubs" filter="S60_3_1">
+      <unitListRef unitList="S60_COMMON_OSEXTENSION"/>
+      <unitListRef unitList="S60_3_1_JAVA"/>
+      <unitListRef unitList="S60_COMMON"/>
+      <unitListRef unitList="S60_3_1"/>
+      <unitListRef unitList="S60_COMMON_COMPLEMENTARY"/>
+      <unitListRef unitList="S60_3_1_COMPLEMENTARY"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><specialInstructions name="Install colour resources" cwd="%EPOCROOT%" command="instcol cl"/></task>
+      <task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+<!--  Example how to create specific build configuration to build 3.1 only for armv5 target (no tools and winscw targets) -->
+<!--  !!! NOTE this is just example !!!  -->
+		<configuration name="S60_3_1_armv5_only" description="S60 3.1 for target ARMV5 only" filter="S60_3_1">
+      <unitListRef unitList="S60_COMMON_OSEXTENSION"/>
+      <unitListRef unitList="S60_3_1_JAVA"/>
+      <unitListRef unitList="S60_COMMON"/>
+      <unitListRef unitList="S60_COMMON_OSEXTENSION_STUBS"/>
+      <unitListRef unitList="S60_COMMON_STUBS"/>
+      <unitListRef unitList="S60_3_1"/>
+      <task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+      <task><buildLayer command="abld export" unitParallel="Y"/></task>
+      <task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+      <task><buildLayer command="abld target" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><specialInstructions name="Install colour resources" cwd="%EPOCROOT%" command="instcol cl"/></task>
+      <task><buildLayer command="abld final" targetList="default_armv5" unitParallel="N" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -what build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+      <task><buildLayer command="abld -check build" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+    </configuration>
+
+  </build> 
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/data/default_build.xml	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,18 @@
+<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+<task><buildLayer command="abld export" unitParallel="Y"/></task>
+<task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld library" targetList="default_tools" unitParallel="N" targetParallel="N"/></task>
+<task><buildLayer command="abld target" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+<task><buildLayer command="abld final" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+<task><buildLayer command="abld -what build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+<task><buildLayer command="abld -check build" targetList="tools_rel" unitParallel="N" targetParallel="Y"/></task>
+<task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld resource" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+<task><buildLayer command="abld library" targetList="default_winscw" unitParallel="N" targetParallel="N"/></task>
+<task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld resource" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+<task><buildLayer command="abld library" targetList="default_armv5" unitParallel="N" targetParallel="N"/></task>
+<task><buildLayer command="abld target" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld final" targetList="default" unitParallel="N" targetParallel="N"/></task>
+<task><buildLayer command="abld -what build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld -check build" targetList="default" unitParallel="Y" targetParallel="Y"/></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/data/default_clean.xml	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,10 @@
+<task><buildLayer command="bldmake bldfiles" unitParallel="Y"/></task>
+<task><buildLayer command="abld makefile" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld clean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld reallyclean" targetList="default_tools" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld makefile" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld makefile" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld clean" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld reallyclean" targetList="default_winscw" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld clean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
+<task><buildLayer command="abld reallyclean" targetList="default_armv5" unitParallel="Y" targetParallel="Y"/></task>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/data/s60_sbs_config.xml	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,26 @@
+<?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">
+
+	<!-- End-user overrides for existing build configurations for SBSv2 (aka Raptor).-->
+
+	<!-- binding of FLM interfaces to certain build/makefile phase to ensure proper order of execution during build -->
+
+	<var name="make_changes">
+	<set name="bitmap.selector.iface" value="\.(bitmap|extension|mifconv|akniconinterfaces|removegtfiles|skingenerator|cryptoprep|builder|help_files|version_update)$"/>
+		<set name="resource.selector.iface" value="\.(resource|extension|mif2cdlindex|nativejava|genericcopy)$"/>
+   <set name="default.selector.iface" value="\.(?!export$|bitmap$|resource$|mifconv$|mif2cdlindex$|nativejava$|akniconinterfaces$|removegtfiles$|genericcopy$|skingenerator$|cryptoprep$|builder$|help_files$|version_update$).*$"/>
+    <!-- 4.5 min -->
+	  <set name='TALON_TIMEOUT' value='540000'/> 
+  </var>
+
+	<!-- emake -->
+	<alias name="emake" meaning="emake_engine.make_changes"/>  
+
+	<!-- gnu make -->
+	<alias name="make" meaning="make_engine.make_changes"/>
+
+
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/data/systemDefinition.dtd	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,159 @@
+<!ELEMENT SystemDefinition (systemModel?, build?)>
+<!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED
+>
+<!-- all paths are relative to the root of the source -->
+
+<!-- System Model Section of DTD -->
+<!ELEMENT systemModel (layer+)>
+
+<!ELEMENT layer (logicalset* | module*)*>
+<!-- Kernel Services, Base Services, OS Services, Etc -->
+<!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED
+>
+
+<!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!-- Generic OS services, Comms Services, etc -->
+<!ATTLIST logicalset 
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED  
+  span CDATA #IMPLIED
+  level CDATA #IMPLIED
+>
+
+<!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+<!-- Telephony services, Networking Services, etc -->
+<!ATTLIST logicalsubset 
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+<!-- Screen Driver, Content Handling, etc -->
+<!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED  
+>
+
+<!ELEMENT component (unit* | package* | prebuilt*)*>
+<!-- units or packages -->
+<!ATTLIST component
+  name CDATA #REQUIRED
+>
+
+<!ELEMENT unit EMPTY >
+<!-- must be buildable (bld.inf) -->
+<!-- bldFile will soon be removed in favour of mrp -->
+<!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+<!ELEMENT package EMPTY >
+<!-- like a unit, but not buildable -->
+<!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+<!ELEMENT prebuilt EMPTY>
+<!-- pre-built CBR component -->
+<!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED
+>
+
+
+
+<!-- Build Section of DTD -->
+<!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+
+<!ELEMENT unitList (unitRef+)>
+<!-- e.g. common, beech, cedar, etc -->
+<!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+>
+
+<!ELEMENT unitRef EMPTY>
+<!-- Reference to unit in System Model -->
+<!ATTLIST unitRef
+  unit IDREF #REQUIRED
+>
+
+<!ELEMENT targetList EMPTY>
+<!-- e.g. DEFAULT_7.0S, TOOLS_7.0S, etc -->
+<!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED
+>
+
+<!ELEMENT target EMPTY>
+<!-- e.g. WINS, WINSCW, ARM4, etc -->
+<!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED
+>
+
+<!ELEMENT option EMPTY>
+<!-- e.g. Keepgoing, SaveSpace, etc -->
+<!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED
+>
+
+<!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+<!-- 7.0s, 8.0a, 8.0b, cuskit, etc -->
+<!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED
+>
+<!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+
+<!ELEMENT unitListRef EMPTY>
+<!-- Reference to unitList -->
+<!ATTLIST unitListRef
+  unitList IDREF #REQUIRED
+>
+
+<!ELEMENT layerRef EMPTY>
+<!-- Reference to named entity in the model, usually a layer -->
+<!ATTLIST layerRef
+  layerName CDATA #REQUIRED
+>
+
+<!ELEMENT buildLayer EMPTY>
+<!-- bldmake, abld export, etc -->
+<!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED
+>
+
+<!ELEMENT specialInstructions EMPTY>
+<!-- BootStrap -->
+<!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED
+>
+ 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/data/targetDefinition.xml	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,28 @@
+<option name="KEEPGOING" abldOption="-keepgoing" description="Causes make to keepgoing on errors" enable="Y"/>
+<!--    <option name="SAVESPACE" abldOption="-savespace" description="Causes the removal of intermediate files" enable="Y"/> -->
+<target name="WINS" abldTarget="wins" description="MSVC Compiler"/>
+<target name="WINS_REL" abldTarget="wins urel" description="MSVC Compiler"/>
+<target name="WINS_DEB" abldTarget="wins udeb" description="MSVC Compiler"/>
+<target name="WINSCW" abldTarget="winscw" description="CodeWarrior Compiler"/>
+<target name="WINSCW_REL" abldTarget="winscw urel" description="CodeWarrior Compiler"/>
+<target name="WINSCW_DEB" abldTarget="winscw udeb" description="CodeWarrior Compiler"/>
+<target name="TOOLS" abldTarget="tools" description="MSVC Compiler for Tools"/>
+<target name="TOOLS_REL" abldTarget="tools rel" description="MSVC Compiler for Tools Release mode only"/>
+<target name="ARMV5" abldTarget="armv5" description="RVCT Compiler"/>
+<target name="ARMV5_REL" abldTarget="armv5 urel" description="RVCT Compiler"/>
+<target name="ARMV5_DEB" abldTarget="armv5 udeb" description="RVCT Compiler"/>
+
+<!-- Aditional Targets -->
+<target name="CWTOOLS" abldTarget="cwtools" description="CodeWarrior Compiler for Tools"/> <!-- Not supported -->
+<target name="CWTOOLS_REL" abldTarget="cwtools rel" description="CodeWarrior Compiler for Tools Release mode only"/> <!-- Not supported -->
+
+<targetList name="default" description="Main Targets" target="WINSCW ARMV5"/>
+<targetList name="default_winscw" description="Main Targets" target="WINSCW"/>
+<targetList name="default_armv5" description="Main Targets" target="ARMV5"/>
+<targetList name="default_rel" description="Main Targets for rel" target="WINSCW_REL ARMV5_REL"/>
+<targetList name="default_deb" description="Main Targets for deb" target="WINSCW_DEB ARMV5_DEB"/>
+<targetList name="default_debrel" description="Main Targets for deb" target="WINSCW_DEB ARMV5_REL"/>
+<targetList name="default_tools" description="tools Targets" target="TOOLS"/>
+<targetList name="tools_rel" description="tools Release Targets" target="TOOLS_REL"/>
+<targetList name="cwtools" description="cwtools Targets" target="CWTOOLS"/>
+<targetList name="cwtools_rel" description="cwtools Release Targets" target="CWTOOLS_REL"/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/makefile	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,8 @@
+# buildpreparation level configuration makefile 
+ 
+MAKEFILE = /sf/tools/buildplatforms/build/makefile
+
+# Place the first target as the default target which is executed from this level 
+buildpreparation_all :: buildpreparation_config
+  
+include include_template.mk
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/S60_build.cmd	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,80 @@
+@echo off
+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 on
+
+@echo off
+setlocal
+echo ===-------------------------------------------------
+echo === Stage=1
+echo ===-------------------------------------------------
+perl -le "$time=localtime; print '=== Stage=1 started ', $time"
+perl -le "$time=localtime; print '=== Stage=1 S60_build.cmd started', $time"
+
+echo Build S60 
+echo usage:   S60_build.cmd
+echo example: S60_build.cmd
+
+if not defined LOGS_PATH (
+call set LOGS_PATH=\logs\
+)
+
+if not defined ZIPS_PATH (
+call set ZIPS_PATH=\zips\
+)
+
+if not exist %LOGS_PATH% (
+md %LOGS_PATH%
+)
+if not exist %ZIPS_PATH% (
+md %ZIPS_PATH%
+)
+
+
+perl -le "$time=localtime; print '=== Stage=1 S60_build.cmd started', $time"
+call vcvars32
+call set copycmd=/y
+
+
+perl -le "$time=localtime; print '=== Stage=1 touch to s60 started ', $time"
+call toucher.exe \sf
+call toucher.exe \ext
+
+perl -le "$time=localtime; print '=== Stage=1 attrib -r started', $time"
+call  attrib -r /s \epoc32\*
+call  attrib -r /s \ext\*
+call  attrib -r /s \sf\*
+
+
+cd\
+perl -le "$time=localtime; print '=== Stage=1 Build started', $time"
+echo Building ...
+call \epoc32\tools\s60tools\build_tbs.cmd S60Build \epoc32\tools\s60tools\
+echo Build end
+
+perl -le "$time=localtime; print '=== Stage=1 bldmelast started', $time"
+call \epoc32\tools\s60tools\build_tbs.cmd bldmelast \epoc32\tools\s60tools\
+
+call cmd /c "cd \config\s60_52_config && cmaker config_post_task ACTION=export BUILD=oem S60=52"
+perl -le "$time=localtime; print '=== Stage=1 zip western delta binaries', $time"
+call perl \epoc32\tools\s60tools\parse_what_log.pl -i %LOGS_PATH%bldmelast_bld.log -filter \epoc32 -zip %ZIPS_PATH%delta_western_package -ex productvariant.hrh
+
+perl -le "$time=localtime; print '=== Stage=1 scanlog_html started', $time"
+call perl \epoc32\tools\htmlscanlog.pl -l %LOGS_PATH%s60Build_bld.log -l %LOGS_PATH%bldmelast_bld.log -o %LOGS_PATH%scanlog_s60Build_full.html -v
+
+perl -le "$time=localtime; print '=== Stage=1 finished ', $time"
+
+endlocal
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/add_build_definition_filter.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,125 @@
+#
+# 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:
+#
+
+use strict;
+use File::Find;     # for finding
+use File::Basename; # for fileparse
+use File::Copy 'copy';
+use File::Path;    
+use Getopt::Long;
+
+my (@sysdeffiles, @filters);
+
+if ( !GetOptions(
+	'i=s' => \@sysdeffiles,
+	'f:s' => \@filters
+	))
+{
+	&error_msg("Invalid arguments!\n");
+}
+
+if (!scalar (@filters)){	&error_msg("No filter(s) to set!\n")};
+if (!scalar (@sysdeffiles)){	&error_msg("No files to set filters\n")};
+
+my $checkfilters = "";
+foreach (@filters) {
+	next if ($_ !~ /\w/i);
+	$checkfilters .=$_;
+	$checkfilters .=",";
+}
+# no filters to add
+if ($checkfilters eq "") {die "nothing to do\n";};
+
+foreach my $file (@sysdeffiles) {
+	eval {set_filters($file);};
+	if ($@) {
+		print "failed $@ \n";
+	}
+}
+
+sub set_filters {
+	my $sysdeffile = shift;
+	my @updated_data;
+	
+ 	open (ORIG,"${sysdeffile}") or die("Cannot open $sysdeffile");
+	my @orig_data=<ORIG>;
+	close ORIG;
+
+	copy($sysdeffile, $sysdeffile.".orig");
+	
+	foreach (@orig_data) {
+		chomp;
+		if ($_ =~ /(<configuration)/i) {
+			my $filterline = getfilterline($_);
+			$_ =~ s/^.*filter=?\"/$&${filterline}/i;
+			$_ =~ s/,\"/\"/i;
+		}
+		push @updated_data, $_."\n";
+	}
+
+	open (UPDATED, ">${sysdeffile}");
+  print UPDATED @updated_data;
+	close UPDATED;
+}
+
+sub getfilterline {
+	my $conffilter = shift;
+	my $newfilterline = ""; 
+
+	$conffilter =~ s/.*filter=\"//i;
+	$conffilter =~ s/\".*//i;
+	
+	my @oldfilters = split(',', $conffilter);
+	
+	foreach (@filters) {
+		my $match = 0;
+		next if ($_ !~ /\w/i);
+# check if filter is defined already
+		foreach my $old (@oldfilters) {
+			if ($old eq $_) {
+				$match = 1;
+				last;
+			}
+		}
+# add filter only if it is new
+		if (!$match) {
+			$newfilterline .= $_;
+			$newfilterline .=",";
+		}
+		
+	}
+
+# remove last ',' if filters are not existed before
+	if (! scalar (@oldfilters) && $newfilterline ne "") {
+		$newfilterline =~ s/,$//i
+	}
+	
+	return $newfilterline;
+}
+
+sub error_msg ($){
+  my($ErrorMsg);
+  ($ErrorMsg)=@_;
+  my $given_command=$0;
+  $given_command =~ s/.*\\(\w+\.\w+)$/$1/;
+  print "Error: $ErrorMsg \n";
+	print "Usage: \n$given_command -f <filter> -i <systemdefinition xml file>\n";
+	print "           -f <filter> (multible allowed)\n";
+	print "           -i <sysdef file> (multible allowed)\n";
+	print "Example: \n$given_command -f test -i \\S60_SystemBuild.xml\n";
+	print "\n";  
+	die "\n";  
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/bldlayer.cmd	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,80 @@
+@echo off
+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 on
+
+@echo off
+setlocal
+perl -le "$time=localtime; print '=== Stage=1 started ', $time"
+
+if not "%1" == "" (
+set BLDLAYER_CONFIGURATION=%1
+) else (
+set BLDLAYER_CONFIGURATION=build
+)
+
+
+if not defined LOGS_PATH (
+	set LOGS_PATH=.\
+)
+
+if not exist %LOGS_PATH% (
+echo create folder for logs
+md %LOGS_PATH%
+)
+
+if not defined BUILD_XML_PATH (
+	set BUILD_XML_PATH=.\
+)
+
+if not exist %BUILD_XML_PATH% (
+echo create folder for build xml file
+md %BUILD_XML_PATH%
+)
+
+
+echo Build logs will be written to %LOGS_PATH%
+
+if exist %LOGS_PATH%scanlog_%BLDLAYER_CONFIGURATION%.html (
+echo Remove old scanlog because htmlscanlog.pl do not overwrite it 
+call del /q %LOGS_PATH%scanlog_%BLDLAYER_CONFIGURATION%.html
+)
+
+
+if exist .\systemDefinition.xml ( 
+if exist .\systemDefinitionLayer.xml (
+echo needed files exist to %BLDLAYER_CONFIGURATION% Ado
+set SGML_SEARCH_PATH=\epoc32\tools\systemDefinition\
+echo perl \epoc32\tools\build\genxml.pl -x .\systemDefinition.xml -n %BLDLAYER_CONFIGURATION% -s \ -o %BUILD_XML_PATH%%BLDLAYER_CONFIGURATION%.xml -l %LOGS_PATH%%BLDLAYER_CONFIGURATION%_xml.log
+call perl \epoc32\tools\build\genxml.pl -x .\systemDefinition.xml -n %BLDLAYER_CONFIGURATION% -s \ -o %BUILD_XML_PATH%%BLDLAYER_CONFIGURATION%.xml -l %LOGS_PATH%%BLDLAYER_CONFIGURATION%_xml.log
+) else (
+echo systemDefinitionLayer.xml not found, %BLDLAYER_CONFIGURATION% Ido
+set SGML_SEARCH_PATH=\epoc32\tools\systemDefinition\
+echo perl \epoc32\tools\build\genxml.pl -x .\systemDefinition.xml -n %BLDLAYER_CONFIGURATION% -s \ -o %BUILD_XML_PATH%%BLDLAYER_CONFIGURATION%.xml -l %LOGS_PATH%%BLDLAYER_CONFIGURATION%_xml.log
+call perl \epoc32\tools\build\genxml.pl -x .\systemDefinition.xml -n %BLDLAYER_CONFIGURATION% -s \ -o %BUILD_XML_PATH%%BLDLAYER_CONFIGURATION%.xml -l %LOGS_PATH%%BLDLAYER_CONFIGURATION%_xml.log
+)
+) else (
+echo systemDefinition.xml not found
+goto :end
+)
+
+echo Building ...
+call \epoc32\tools\s60tools\build_tbs.cmd %BLDLAYER_CONFIGURATION% %BUILD_XML_PATH%
+
+:end
+perl -le "$time=localtime; print '=== Stage=1 finished ', $time"
+endlocal
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/build_Variant.cmd	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,83 @@
+@echo off
+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 on
+
+@echo off
+
+setlocal
+if not defined ZIPS_PATH (
+call set ZIPS_PATH=\zips\
+)
+
+if not defined LOGS_PATH (
+call set LOGS_PATH=\logs\
+)
+
+echo set build tools path
+PATH=%PATH%;\epoc32\tools\;\epoc32\tools\build\;\epoc32\tools\s60tools\
+
+if not exist %ZIPS_PATH% (
+md %ZIPS_PATH%
+)
+if not exist %LOGS_PATH% (
+md %LOGS_PATH%
+)
+
+if exist \epoc32\tools\s60tools\variant_build_china.xml (
+perl -le "$time=localtime; print '=== Stage=1 build china variant', $time"
+rem generate apac cenreps with new config tool 
+cd \s60\tools\toolsextensions\ConfigurationTool\
+call cli_build.cmd -master_conf apac -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\apac -report \logs\configtool_apac_delta.txt -ignore_errors > %LOGS_PATH%configtool_apac_log.txt 2>&1
+cd \
+call build_tbs.cmd variant_build_china \epoc32\tools\s60tools\
+
+perl -le "$time=localtime; print '=== Stage=1 zip china delta binaries', $time"
+call perl \epoc32\tools\s60tools\parse_what_log.pl -i %LOGS_PATH%variant_build_china_bld.log -filter \epoc32 -zip %ZIPS_PATH%delta_china_package -o %LOGS_PATH%variant_china_what.log -ex productvariant.hrh
+
+call zip  -r -u   %ZIPS_PATH%delta_china_package -@ < \logs\configtool_apac_delta.txt 
+
+)
+
+if exist \epoc32\tools\s60tools\variant_build_japan.xml (
+perl -le "$time=localtime; print '=== Stage=1 build japan variant', $time"
+cd \s60\tools\toolsextensions\ConfigurationTool\
+call cli_build.cmd -master_conf japan -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\japan -report \logs\configtool_japan_delta.txt -ignore_errors > %LOGS_PATH%configtool_japan_log.txt 2>&1
+cd \
+call build_tbs.cmd variant_build_japan \epoc32\tools\s60tools\
+
+perl -le "$time=localtime; print '=== Stage=1 zip japan delta binaries', $time"
+call perl \epoc32\tools\s60tools\parse_what_log.pl -i %LOGS_PATH%variant_build_japan_bld.log -filter \epoc32 -zip %ZIPS_PATH%delta_japan_package -o %LOGS_PATH%variant_japan_what.log -ex productvariant.hrh
+
+call zip  -r -u   %ZIPS_PATH%delta_japan_package -@ < \logs\configtool_japan_delta.txt
+
+)
+
+cd \s60\tools\toolsextensions\ConfigurationTool\
+rem thai
+perl -le "$time=localtime; print '=== Stage=1 zip thai delta binaries', $time"
+call cli_build.cmd -master_conf thai -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\thai -report \logs\configtool_thai_delta.txt -ignore_errors > %LOGS_PATH%configtool_thai_log.txt 2>&1
+call zip  -r      %ZIPS_PATH%delta_thai_package -@ < \logs\configtool_thai_delta.txt
+
+rem return western 
+cd \s60\tools\toolsextensions\ConfigurationTool\
+call cli_build.cmd -master_conf s60 -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\s60 -report \logs\configtool_return_western.txt -ignore_errors > %LOGS_PATH%cf_return_western_log.txt 2>&1
+call zip  -r -u   %ZIPS_PATH%delta_western_package -@ < \logs\configtool_return_western.txt
+cd \
+goto end
+
+:end
+endlocal
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/build_tbs.cmd	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,65 @@
+@echo off
+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 on
+
+@echo off
+setlocal
+echo build_tbs
+echo usage:   build_tbs.cmd "input xml file without extension" ["inputfile path"]
+echo usage:   inputfile path is optional cases that command launch different path as inputfile
+echo example: build_tbs.cmd S60Build \epoc32\tools\s60tools\
+echo example: build_tbs.cmd S60Build
+
+echo set build tools path
+PATH=%PATH%;\epoc32\tools\s60tools\
+
+rem set port 1971 for TBS by default 
+if not defined TBS_PORT (
+call set TBS_PORT=1971
+)
+
+rem set 2 processor by default
+if not defined NUMBER_OF_PROCESSORS (
+call set NUMBER_OF_PROCESSORS=2
+)
+
+rem Starts NUMBER_OF_PROCESSORS*2 clients. If NUMBER_OF_PROCESSORS is set to "0" start one client
+if "%NUMBER_OF_PROCESSORS%" equ "0" (
+call set /a LOOP=1
+) else (
+call set /a LOOP=%NUMBER_OF_PROCESSORS%*2
+)
+echo start clients
+:loopagain
+call set /a LOOP-=1
+call start cmd /C "\epoc32\tools\build\buildclient.pl -w 5 -c Client%LOOP% -d localhost:%TBS_PORT% -e 1"
+perl -le "sleep 1"
+if not "%LOOP%" equ "0" goto :loopagain
+
+echo delete old build log
+if exist %LOGS_PATH%scanlog_%1.html (
+call del /q %LOGS_PATH%scanlog_%1.html
+)
+echo start build server
+call perl \epoc32\tools\build\buildserver.pl -p %TBS_PORT% -d %2%1.xml -l %LOGS_PATH%%1_bld.log
+
+call perl \epoc32\tools\htmlscanlog.pl -l %LOGS_PATH%%1_bld.log -o %LOGS_PATH%scanlog_%1.html -v
+
+endlocal
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/check_environment.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,121 @@
+#
+# 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:
+#
+#!/usr/bin/perl
+
+# 
+# ==============================================================================
+#  Name        : unzip_check.pl
+#  Description : This script provides comparison functions to create a filelist
+#				 and to check if all files in the list are available on the
+#				 environment.
+# ==============================================================================
+# 
+
+use strict;
+
+use Getopt::Std;
+use vars qw($opt_c $opt_g);
+
+getopts("c:g:");
+
+if ($opt_g =~ m/-c/i || $opt_c =~ m/-g/i)
+{
+	&error_msg("Cannot generate and check at the same time!");
+}
+
+if ($opt_g)
+{
+	&generate();
+}
+elsif ($opt_c)
+{
+	&check();
+}
+else
+{
+	&error_msg("Please define the action and filename!");
+}
+
+
+sub error_msg
+{
+	my($ErrorMsg);
+	($ErrorMsg)=@_;
+	my $given_command=$0;
+	$given_command =~ s/.*\\(\w+\.\w+)$/$1/;
+	print STDERR "\nERROR: $ErrorMsg \n\n" unless ($ErrorMsg =~ /^$/);
+	print STDERR "\nUsage:\n\t$given_command <parameters>\n";
+	print STDERR "\nParameters:\n";
+	print STDERR "\t-g\tGenerate filelist from the environment into file specified after this parameter\n";
+	print STDERR "\t-c\tCheck if all the files are in the environment that are listed in the file specified after this parameter\n";
+	print STDERR "\nExamples:\n\t$given_command -g filelist.txt\n";
+	print STDERR "\t$given_command -c filelist.txt\n";
+	print STDERR "\n";  
+	die "\n";
+}
+
+
+sub generate
+{
+	unless ($opt_g =~ m/^$/)
+	{
+		open (STDOUT, ">".$opt_g);
+	}
+	
+	open (DIRS,"dir /s/b/a-d 2>nul |");
+	
+	my $current_dir = `cd`;
+	for ($current_dir)
+	{
+		s/^\s+//;
+		s/\s+$//;
+		s/^.\:\\//;
+	}
+	#$current_dir = $current_dir."\\";
+
+	while (my $file=<DIRS>)
+	{
+		chomp;
+		for ($file)
+		{
+			s/^\s+//;
+			s/\s+$//;
+			s/^.\:\\//;
+		}
+		substr($file, 0, length($current_dir)+1) = '';
+		{
+			print STDOUT $file."\n";
+		}
+	}
+}
+
+sub check
+{
+	open (INPUTFILE,$opt_c) or error_msg("Filelist $opt_c not found!");
+		
+	while (my $line=<INPUTFILE>)
+	{
+		chomp;
+		for ($line)
+		{
+			s/^\s+//;
+			s/\s+$//;
+		}
+		stat($line);
+		next if -f _;
+		print "MISSING: ".$line."\n";
+	}
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/check_filename_uniq.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,299 @@
+#
+# Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  See the usage-method below.
+#
+
+use File::Find;
+use File::Spec;
+use Getopt::Long;
+use strict;
+
+my $isFirstError = 1;
+my @dirList;
+my $resultFile = undef;
+my %extHash; # hash which contains the wanted extensions as keys
+
+my $errString = qq(
+The following filenames are not unique inside ADO. Note that if those
+files are not part of compilation (listed in used bld.inf) => there 
+are no immediate problems.
+
+);
+
+
+###########################################
+# Conversion routine. 
+#  - makes all dir separators to be "/"
+#  - removes any drive letter from beginig of path
+#########################################
+sub convertPath
+{
+    my $path = shift;
+    $path =~ s/\\/\//g;
+    $path =~ s/^[A-Za-z]\://;
+    $path =~ tr/A-Z/a-z/;
+    
+    return $path;
+}
+
+###########################################################################
+###########################################################################
+sub usage
+{
+    print "\n";
+    print "This script is intended to check the architectural domain (ADO)\n";
+    print "directory hierarchy content in S60-build.\n";
+    print "It checks that the filenames with given extensions\n";
+    print "are uniq inside the give ADO structure.\n";
+    print "\n";
+    print "Usage:\n";
+    print "  $0 [-h|-help] [-t <theResultFilename>] [-e ext1 -e ext2] -d <dir1> -d <dir2> \n";
+    print "\n";
+    print "Options:\n";
+    print "  -h                  : Show this help\n";
+    print "  -help               : Show this help\n";
+    print "  -t <theFilename>    : The name of the file, where the errors are written.\n";
+    print "                        If not specified errors are written to STDOUT\n";
+    print "  -d <dir1>           : Absoluth path to the ADOs directory. The last item in the dir\n";
+    print "                        should be the ADO name.\n";
+    print "  -e <ext1>           : file extensions that are checked.\n";
+    print "                        If none given, then default value is \"-e mmp,mk\". \n";
+    print "                        If one is specified then the default ones are not handled by default.\n";  
+    print "\n";
+    print "Return values:\n";
+    print "    0 : no errors found (or help wanted)\n";
+    print "   -1 : errors found in check\n";
+    print "   -2 : erronous command line parameters or in result file opening\n";
+    print "\n";
+    print "Usage example:\n";
+    print "   in the below example replace \"<myadoname>\" with real ado name\n";
+    print "   for example  <myadoname> == messaging\n";
+    print "   perl $0 -t \my_path_results.txt -d \s60\app\<myadoname>\n";
+    print "\n";
+    print "   Below one only checks txt-files\n";
+    print "   perl $0 -t \my_path_results.txt -e txt -d \s60\app\<myadoname>\n";
+    print "\n";
+    print "Limitations:\n";
+    print "  - No spaces allowed in the file or directory names !!!\n";
+    print "\n";
+}
+
+###########################################################################
+###########################################################################
+sub errorUsage
+{
+    usage;
+    exit(-2);
+}
+###########################################################################
+###########################################################################
+sub okUsage
+{
+    usage;
+    exit(0);
+}
+
+###########################################################################
+# print results
+###########################################################################
+sub printError
+{
+
+    if(defined($resultFile))
+    {
+	if($isFirstError > 0)
+	{
+	    $isFirstError = 0;
+	    print FILEOUT $errString;
+	}
+	print FILEOUT join("",@_);;
+    }
+    else
+    {
+	if($isFirstError > 0)
+	{
+	    $isFirstError = 0;
+	    print STDOUT $errString;
+	}
+	print STDOUT join("",@_);
+    }
+}
+
+
+###########################################################################
+# Parses the command line parameters from ARGV
+#
+# Params: -
+#
+# Return: -		    
+#
+###########################################################################
+sub parseCmdLine
+{
+    my $incorrectParam = 0;
+    my @extList;
+    
+    if( ! GetOptions('t=s'      => \$resultFile,
+		     'd=s'      => \@dirList,
+		     'e=s'      => \@extList,
+		     'h'        => \&okUsage,
+		     'help'     => \&okUsage,
+		     '<>'       => \&errorUsage))
+    {
+	exit(-2);
+    }
+
+    if(scalar(@dirList) == 0)
+    {
+	print STDERR  "\nERROR: At least one directory has to be specified with -d\n";
+	exit(-2);
+    }
+
+    foreach  (@dirList)
+    {
+	if(/\s+/)
+	{
+	    print STDERR "\nERROR: No spaces allowed in directory names\n";
+	    exit(-2);
+	}
+    }
+
+    # if no ext given => use the default values.
+    if(scalar(@extList) == 0)
+    {
+	$extHash{"mmp"} = 1;
+	$extHash{"mk"} = 1;
+    }
+    else
+    {
+	# handle the extensions given	
+	foreach my $param (@extList)
+	{
+	    my @items = split(",",$param);
+	    foreach my $item (@items)
+	    {
+		# remove spaces
+		$item =~ s/\s//g;
+		$item = convertPath($item);
+		$extHash{$item} = 1; 
+	    }
+	}
+    }
+}
+
+###########################################################################
+###########################################################################
+sub handleFileopenError
+{
+    print STDERR  "\nERROR: Unable to open  $resultFile\n";
+    exit(-2);
+}
+
+
+###########################################
+# This function is called for each file by 
+# the "find" functionality.
+###########################################
+# contains all the erronous file names, details in the 
+# $refToFileHash
+my $refToErrHash;
+# content is:
+# {filenamewithExt => (foundInDir1,foundInDir2)} 
+my $refToFileHash; 
+
+#actual function
+sub handleFile
+{
+    my $file = convertPath($_);
+    my $fileDir = convertPath(File::Spec->catfile(File::Spec->splitdir($File::Find::dir)));
+
+    # the find seems to change the current dir => checking if the item is a dir
+    # should be done from curr Dir (we need to add the ./ so that the -d (testing if
+    # item is directory works)
+    if( -d "./$file")
+    {
+	return;
+    }
+
+    # its a file, test wether the extension is what we want
+    my @tmpList = split(/\./,$file);
+    my $ext = pop @tmpList;
+
+    if(defined($extHash{$ext}))
+    {
+	# is there same name already => if yes => error
+	if(defined($$refToFileHash{$file}))
+	{
+	    $$refToErrHash{$file}  = 1;
+	}
+	# 1st occurance. Add as new item into the refToFileHash
+	else
+	{
+	    my @list;
+	    $$refToFileHash{$file} = \@list;
+	}
+	push(@{$$refToFileHash{$file}},$fileDir);
+    }
+}
+
+###########################################################################
+# MAIN functionality
+###########################################################################
+parseCmdLine;
+if(defined($resultFile))
+{
+    open(FILEOUT,">$resultFile") || handleFileopenError;
+}
+
+# handle each root dir as separate case. This way
+# we do not have to worry about stuff between dirs
+foreach my $dir (@dirList)
+{
+    my %errFileHash;
+    $refToErrHash = \%errFileHash;
+    my %fileHash;
+    $refToFileHash = \%fileHash;
+    
+    find(\&handleFile,($dir));
+    
+    # After one base dir has been handled, then print the found
+    # errors related to that one.
+
+    if(scalar(keys(%errFileHash)) > 0)
+    {
+	printError "\nUnder: $dir\n";
+	foreach my $errFile (keys (%errFileHash))
+	{
+	    printError "   $errFile found in:\n";
+	    foreach my $fileLoc (@{$fileHash{$errFile}})
+	    {
+		printError "      $fileLoc\n";
+	    }
+	}
+    }
+    else
+    {
+	printError "\nNo errors found under $dir\n";
+    }
+}
+
+if(defined($resultFile))
+{
+    close FILEOUT;
+}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/check_path_lenghts.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,221 @@
+#
+# Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  See the usage-method below.
+#
+use File::Find;
+use File::Spec;
+use Getopt::Long;
+use strict;
+
+
+# the 140 has not yet been officially defined. (7.7.2006)
+my $limit = 140;
+my $isFirstError = 1;
+my @dirList;
+my $resultFile = undef;
+
+
+my $errString = qq(
+The following filenames with path are longer than the allowed length,
+which is $limit characters.
+
+);
+
+
+###########################################################################
+###########################################################################
+sub usage
+{
+    print "---------------------------------------------\n";
+    print "THIS SCRIPT IS STILL UNDER EVALUATION. SOME INFORMATION\n";
+    print "GIVEN IN THIS HELP HAS NOT YET BEEN AGREED ON\n";
+    print "---------------------------------------------\n";
+    print "\n";
+    print "This script is intended to check the architectural domain (ADO)\n";
+    print "directory hierarchy content in S60-build\n";
+    print "It checks that the maximum path length does not exceed\n";
+    print "the limitations specified for ADO structure.\n";
+    print "All file names are listed, which exceed the specified limitation.\n";
+    print "\n";
+    print "Usage:\n";
+    print "  $0 [-h|-help] [-t <theResultFilename>] -d <dir1> -d <dir2> \n";
+    print "\n";
+    print "Options:\n";
+    print "  -h                  : Show this help\n";
+    print "  -help               : Show this help\n";
+    print "  -t <theFilename>    : The name of the file, where the errors are written.\n";
+    print "                        If not specified errors are written to STDOUT\n";
+    print "  -d <dir1>           : Absoluth path to the ADOs directory. The last item in the dir\n";
+    print "                        should be the ADO name.\n";
+    print "\n";
+    print "Return values:\n";
+    print "    0 : no errors found (or help wanted)\n";
+    print "   -1 : errors found in check\n";
+    print "   -2 : erronous command line parameters or in result file opening\n";
+    print "\n";
+    print "Usage example:\n";
+    print "   in the below example replace \"<myadoname>\" with real ado name\n";
+    print "   for example  <myadoname> == messaging\n";
+    print "   perl $0 -t \my_path_results.txt -d \s60\app\<myadoname>\n";
+    print "\n";
+    print "Limitations:\n";
+    print "  - No spaces allowed in the file or directory names !!!\n";
+    print "\n";
+}
+
+###########################################################################
+###########################################################################
+sub errorUsage
+{
+    usage;
+    exit(-2);
+}
+###########################################################################
+###########################################################################
+sub okUsage
+{
+    usage;
+    exit(0);
+}
+
+###########################################################################
+# Parses the command line parameters from ARGV
+#
+# Params: -
+#
+# Return: -		    
+#
+###########################################################################
+sub parseCmdLine
+{
+    my $incorrectParam = 0;
+    
+    if( ! GetOptions('t=s'      => \$resultFile,
+		     'd=s'      => \@dirList,
+		     'h'        => \&okUsage,
+		     'help'     => \&okUsage,
+		     '<>'       => \&errorUsage))
+    {
+	exit(-2);
+    }
+
+    if(scalar(@dirList) == 0)
+    {
+	print STDERR  "\nERROR: At least one directory has to be specified with -d\n";
+	exit(-2);
+    }
+
+    foreach  (@dirList)
+    {
+	if(/\s+/)
+	{
+	    print STDERR "\nERROR: No spaces allowed in directory names\n";
+	    exit(-2);
+	}
+    }
+}
+
+sub handleFileopenError
+{
+    print STDERR  "\nERROR: Unable to open  $resultFile\n";
+    exit(-2);
+}
+
+parseCmdLine;
+if(defined($resultFile))
+{
+    open(FILEOUT,">$resultFile") || handleFileopenError;
+}
+
+###########################################################################
+# print results
+###########################################################################
+sub printError
+{
+
+    if(defined($resultFile))
+    {
+	if($isFirstError > 0)
+	{
+	    $isFirstError = 0;
+	    print FILEOUT $errString;
+	}
+	print FILEOUT join("",@_);;
+    }
+    else
+    {
+	if($isFirstError > 0)
+	{
+	    $isFirstError = 0;
+	    print STDOUT $errString;
+	}
+	print STDOUT join("",@_);
+    }
+}
+
+###########################################
+# Conversion routine. 
+#  - makes all dir separators to be "/"
+#  - removes any drive letter from beginig of path
+#########################################
+sub convertPath
+{
+    my $path = shift;
+    $path =~ s/\\/\//g;
+    $path =~ s/^[A-Za-z]\://;
+    
+    return $path;
+}
+
+###########################################
+# This function is called for each file by 
+# the "find" functionality.
+###########################################
+my $currentlyHandling = "";
+my $first = 1;
+my $currentReplacement = "";
+sub handleFile
+{
+    my $file = $_;
+    my $fileDir = convertPath(File::Spec->catfile(File::Spec->splitdir($File::Find::dir)));
+    if($fileDir !~ /^$currentlyHandling/i ||  $first == 1)
+    {
+	$first = 0;
+      	$currentlyHandling = $fileDir;
+    	my @items = File::Spec->splitdir($fileDir);
+  	pop @items;
+	$currentReplacement =  convertPath(File::Spec->catfile(@items));
+	$currentReplacement .= "/";
+    }
+
+    my $total = convertPath($File::Find::name);
+
+    $total =~ s/^$currentReplacement//g;
+    
+    if(length($total) > $limit)
+    {
+	printError "$total : " . length($total),"\n";
+    }
+
+}
+
+
+# Gets the list of header files into the @filenames
+find(\&handleFile,@dirList);
+
+
+if(defined($resultFile))
+{
+    close FILEOUT;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/compress_zips.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,171 @@
+#
+# Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies 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 strict;
+use File::Find;     # for finding
+use File::Basename; # for fileparse
+use File::Path;    
+use File::Copy;    
+use Getopt::Long;
+use Cwd;
+
+my ($back_up);
+my (@zips, @temp_paths);
+my (%zips_files, %zips_paths);
+
+my $temp_dir = "\\compress_temp\\"; 
+my $version = "1.0";
+
+info();
+
+if ( !GetOptions(
+	'backup' => \$back_up,
+	'z=s' => \@zips))
+{
+	&error_msg("Invalid arguments!\n");
+}
+
+if (! scalar (@zips)) {
+	&error_msg("Invalid arguments!\n");
+}
+
+if (scalar (@zips) == 1) {
+	&error_msg("More that one input file is needed!\n");
+}
+
+foreach (@zips) {
+	if (! -e $_) {
+		&error_msg("File not found : $_\n");
+	}
+}
+
+foreach (@zips) {
+	unzip_temp($_);
+}
+
+rezip();
+
+rmtree($temp_dir);
+
+sub unzip_temp {
+	my $zip_file = shift;
+
+	my($n, $d, $ext) = fileparse($zip_file, '\..*');
+	
+	mkpath ($temp_dir.$n);
+	push @temp_paths, $n; 
+	$zips_paths{$n}=$d;
+
+	my $extrCmd = "7za.exe x -y ${zip_file} -o${temp_dir}${n}";
+	print "$extrCmd";
+	system ("$extrCmd");
+	
+	if ($back_up) { 
+		 	print "rename ${zip_file} to ${d}${n}_orig${ext}\n";
+		 	my $backup_name = ${d}.${n}."_orig".${ext};
+		 	rename (${zip_file}, ${backup_name});
+	}
+
+		unlink (${zip_file});
+
+	
+	if (-e "${temp_dir}${n}\\checksum.md5") {
+		unlink ("${temp_dir}${n}\\checksum.md5");
+	}
+	
+	print "\\epoc32\\tools\\evalid.pl -g ${temp_dir}${n} ${temp_dir}${n}\\checksum.md5";	
+	system ("\\epoc32\\tools\\evalid.pl -g ${temp_dir}${n} ${temp_dir}${n}\\checksum.md5");	
+		
+	open (MD5_FILE,"${temp_dir}${n}\\checksum.md5") or &error_msg("Cannot open ${temp_dir}${n}\\checksum.md5");
+	
+	while (<MD5_FILE>) {
+ 		chomp;
+	  next if (/^\/\//); # Skip comment lines
+	  next if (/^#/); # Skip comment lines
+	  next if (/^ *$/); # Skip empty lines 
+  	$_ =~ s/\//\\/g;    #Change / marks to \
+
+		next if !/(TYPE=)/i;
+
+		my $file_name = $_;
+		$file_name =~ s/( TYPE=).*//i;
+
+		$_ =~ s/.*MD5=//i;
+
+	 	$file_name = lc $file_name;
+	 	$file_name =~ s/\\/\//g;    #Change / marks to \
+	
+		my %temp;
+		$temp{$_}=1;
+		if (!exists $zips_files{$file_name}) {
+			$zips_files{$file_name}={%temp};
+		}
+		else {
+#				print "$zips_files{$file_name}{$_}\t $_ \n";
+			if (exists $zips_files{$file_name}{$_}) {
+				$zips_files{$file_name}->{$_}=$zips_files{$file_name}->{$_}+1;
+			}
+		}
+	}
+	
+	close MD5_FILE;
+}
+
+sub rezip {
+	my $given_files = scalar (@zips);
+	my @zip_list;
+	print "\nrezip $given_files \n";
+	 
+	 foreach my $key (keys %zips_files) {
+		 foreach my $key2 (keys %{$zips_files{$key}}) {
+	 		if ($zips_files{$key}{$key2} != $given_files) {
+		  	$key =~ s/\//\\/g;    #Change / marks to \
+	 			push @zip_list, $key."\n"; 
+	 		}
+		}
+	}
+
+  my $current_dir = cwd();
+	foreach my $zip_name (keys %zips_paths) {
+		my $name=$zips_paths{$zip_name}.$zip_name.".zip";
+	  chdir(${temp_dir}.${zip_name});
+		open (ZIP,"| zip -r $name -@");
+		print ZIP @zip_list;
+		close ZIP;
+  	chdir($current_dir);
+	}
+}
+
+
+sub info {
+  print "compress_zips.pl   version $version \n";
+  print "Remove files that are same in each given zipfile.\n";
+  print "Uses evalid to compare files inside zips.\n";
+}
+
+sub error_msg ($){
+  my($ErrorMsg);
+  ($ErrorMsg)=@_;
+  my $given_command=$0;
+  $given_command =~ s/.*\\(\w+\.\w+)$/$1/;
+  print "Error: $ErrorMsg \n";
+	print "Usage: \n$given_command -z \\zips\\delta_western.zip -z \\zips\\delta_china.zip -z \\zips\\delta_japan.zip -backup\n";
+	print "           -z <zipfile>  zipfiles that should compress, two or more are needed\n";
+	print "           -backup       rename original zip files adding '_orig' end of the filename \n";
+	print "Example: \n$given_command -z \\zips\\delta_western.zip -z \\zips\\delta_china.zip -z \\zips\\delta_japan.zip -backup\n";
+	print "\n";  
+	die "\n";  
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/gencmd.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,274 @@
+#
+# 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:  
+#    Generate xml that can give input for symbian tbs build system 
+#
+# ============================================================================
+#  Name     : gencmd.pl
+#  Part of  : Generate cmd file from input file
+#  Origin   : S60 2.0,NMP
+#  Created  : Tue Oct 6 11:32:47 2003
+#  Version  : 1.0
+#  Description: 
+#    Generate xml that can give input for symbian tbs build system 
+#	
+#	
+# structure of input file: 
+# <[build]>         open specific build tag, not required, multiply allowed ( like <[build]><[build1]> )
+#   [build] is given with parameter -b 
+#   if [build] not match with given -b parameter, all lines inside this tag will ignore
+# <\>               close specific build tag
+#
+# <#[name]>         open task block
+#  cd \             specify directory where followed lines will be launch
+#  command.cmd      command that will launch in above directory. command can be whatever (perl, cmd, exe...)
+#  cd \temp         redefine directory where followed lines will be launch
+#  command2.cmd     command that will launch in above directory. command can be whatever (perl, cmd, exe...)
+# <\#>              close task block, close also specific build tag if open
+#
+# <parallel>        open parallel block, all task blocks that located inside same parallel block will be run parallel in tbs
+# <\parallel>       close parallel block, close also task block and specific build tag
+#
+# comment (\\,#) and empty lines ingnore 
+#
+# example:
+#
+# <parallel>                        1st parallel block
+# <#commonengine>                   first task
+# cd \S60\commonengine\group       
+# call bldmake bldfiles -k          command that will lauch 1st state
+# call abld export -k               command that will lauch 2nd state
+# <\#>
+#  
+# <#bldvariant>                     second task
+# <S60_3_1>                         specify directory for 'S60_3_1' build
+# cd \S60\misc\release\bldvariant\Series_60_3_1_elaf\group
+# <\>
+# <S60_3_2><S60_3_3>                specify directory for 'S60_3_2' and 'S60_3_3' build
+# cd \S60\misc\release\bldvariant\elaf\group
+# <\>
+# call bldmake bldfiles -k          command that will lauch 1st state
+# call abld export -k               command that will lauch 2nd state
+# call abld export -w               command that will lauch 3rd state
+# <\#>
+# <\parallel>
+#
+# <parallel>                        2nd parallel block
+# <#build_platforms>
+# cd \s60\build_platforms\group
+# call bldmake bldfiles -k          command that will lauch 4th state
+# call abld export -k               command that will lauch 5th state
+# <\#>
+# <\parallel>
+#
+
+use strict;
+use File::Find;     # for finding
+use File::Basename; # for fileparse
+use Getopt::Long;
+
+#
+# Variables...
+#
+my $version = "V1.0";
+my $inputfile; # input filename
+my $build; # S60_2X
+my $outputfile; # input filename
+my $component = "";
+my ($cmdfile, $xmlfile, $product_name);
+my $skip = 0;
+my ($c, $i, $j);
+
+if ( !GetOptions('i=s' => \$inputfile, 'b=s' => \$build, 'o=s' =>\$outputfile))
+{
+	&error_msg("Invalid arguments\n");
+}
+
+#
+# Hello text
+#
+hello();
+
+$build =~ tr/A-Z/a-z/; #Change all capitals to small    
+  
+open (INPUT,"$inputfile") or &error_msg("Cannot open $inputfile");
+  open (XML_FILE,">$outputfile") or &error_msg("Cannot open $outputfile");
+  pre_xml(\*XML_FILE);
+  gen_xml_file(\*XML_FILE);
+  post_xml(\*XML_FILE);
+  close XML_FILE;
+close INPUT;
+
+sub gen_xml_file {
+  my ($outputfile)=@_;
+  my $parallel = 0;
+  my $component_name = "";
+  my $component_path = "\\";
+  my @component_command;
+  my %component_parallel;
+  my $id = 1;
+  my $stage = 1;
+  
+  while (<INPUT>) {
+    next if (/^\/\//); # Skip comment lines
+    next if (/^#/); # Skip comment lines
+    next if (/^ *$/); # Skip empty lines 
+  
+  #  $_ =~ s/\//\\/g;    #Change / marks to \
+    $_ =~ tr/A-Z/a-z/; #Change all capitals to small    
+  
+    chomp; #Remove line feed and carriage return  
+ 
+# parallel block opened, components should build parallel 
+    if (/^<parallel>/){
+      $parallel = 1;
+      next;
+    }
+# parallel block closed, write components that can build parallel to output file
+    if (/^<\\parallel>/){
+      my $loop = 1;
+      my $line = 0;
+      while ($loop) {
+        my $found = 0;
+        foreach $c (keys %component_parallel)
+        {
+          my @temp;
+#            print "  $c : $i = $component_parallel{$c}[$i] : \n";
+            @temp=keys %{$component_parallel{$c}[$line]};
+            $j = "";
+            $j = @temp[0];
+            if ($j ne "") {
+              print $outputfile "\t\t<Execute ID=\"$id\" Stage=\"$stage\" Component=\"$c\" Cwd=\"$j\" CommandLine=\"$component_parallel{$c}[$line]{$j}\"/>\n";
+#              print "   \;command path = $j:command = $component_parallel{$c}[$line]{$j}\;\n";
+              $found = 1;
+              $id++;
+            }
+        }
+        $line++;
+
+        if (!$found) {
+          $loop = 0;
+        }
+        else {
+                  $stage++;
+
+        }
+      }
+
+# clear variables
+      %component_parallel =();
+      $component_path = "\\";
+      $parallel = 0;
+      next;
+    }
+# component block end
+    if (/^<\\#/){
+    	if (!$skip) {
+    	  $component_parallel{$component_name}=[@component_command];
+  		}
+  	  $skip = 0;
+  	  @component_command = ();
+  	  next;
+  	}
+# block end
+    if (/^<\\>/) {
+  	  $skip = 0;
+  		next;
+    }
+    
+    next if ($skip);
+    if (!/^</) {
+# get path for xml
+      if (/^cd /){
+      	$component_path = $_;
+      	$component_path =~ s/^cd //;
+    	  next;
+    	}
+    	my $rec = {};
+# store command to @component_command variable
+    	$rec->{$component_path} = $_;
+      push (@component_command, $rec);
+  		next;
+    }
+    
+# get component name for xml
+    if (/^<\#/){
+    	$component_name = $_;
+    	$component_name =~ s/^<\#//;
+    	$component_name =~ s/>\Z//;
+  	  next;
+  	}
+  	
+# check build version, if not match skip next lines
+    elsif (!/<$build>/){
+    	$skip = 1;
+    	next;
+  	}
+  }
+}
+
+
+sub hello
+{
+print "\nThis is gencmd.pl Version $version (C)Nokia Corporation 2002-2003\n"; 
+}
+
+sub error_msg ($){
+  my($ErrorMsg);
+  ($ErrorMsg)=@_;
+  my $given_command=$0;
+  $given_command =~ s/.*\\(\w+\.\w+)$/$1/;
+  print "";
+  print "\n";
+  print "Error: $ErrorMsg \n\n";
+  print "Usage: \n$given_command -b <build_name> -i <input file name> -o <output file>\n";
+  print "Example:  \n$given_command bldmefirst.txt -b S60_3_1 -i data\bldmelast.txt -o \epoc32\tools\s60Build\bldmelast.xml\n";
+  print "Example2: \n$given_command bldmefirst.txt -b S60_3_1_western -i data\variant_build.txt -o \epoc32\tools\s60Build\variant_build_western.xml\n";
+  print "\n";  
+  die "\n";    
+}
+
+# write pre information to output file
+sub pre_xml {
+  my ($outputfile)=@_;
+  print $outputfile "<?xml version=\"1.0\"?>\n";
+  print $outputfile "\t<!DOCTYPE Build  [\n";
+  print $outputfile "\t<!ELEMENT Product (Commands)>\n";
+  print $outputfile "\t<!ATTLIST Product name CDATA #REQUIRED>\n";
+  print $outputfile "\t<!ELEMENT Commands (Execute+ | SetEnv*)>\n";
+  print $outputfile "\t<!ELEMENT Execute EMPTY>\n";
+  print $outputfile "\t<!ATTLIST Execute ID CDATA #REQUIRED>\n";
+  print $outputfile "\t<!ATTLIST Execute Stage CDATA #REQUIRED>\n";
+  print $outputfile "\t<!ATTLIST Execute Component CDATA #REQUIRED>\n";
+  print $outputfile "\t<!ATTLIST Execute Cwd CDATA #REQUIRED>\n";
+  print $outputfile "\t<!ATTLIST Execute CommandLine CDATA #REQUIRED>\n";
+  print $outputfile "\t<!ELEMENT SetEnv EMPTY>\n";
+  print $outputfile "\t<!ATTLIST SetEnv Order ID #REQUIRED>\n";
+  print $outputfile "\t<!ATTLIST SetEnv Name CDATA #REQUIRED>\n";
+  print $outputfile "\t<!ATTLIST SetEnv Value CDATA #REQUIRED>\n";
+  print $outputfile "]>\n\n";
+  print $outputfile "<Product Name=\"$product_name\">\n";
+  print $outputfile "\t<Commands>\n";
+  print $outputfile "\t\t<!--Set Env-->\n";
+  print $outputfile "\t\t<SetEnv Order=\"1\" Name=\"EPOCROOT\" Value=\"\\\"/>\n";
+  print $outputfile "\t\t<SetEnv Order=\"2\" Name=\"PATH\" Value=\"\\epoc32\\gcc\\bin\;\\epoc32\\tools\;\%PATH\%\"/>\n\n";
+}
+
+# write post information to output file
+sub post_xml {
+  my ($outputfile)=@_;
+  print $outputfile "\t</Commands>\n";
+  print $outputfile "</Product>\n";
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/localised_emu.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,153 @@
+#
+# Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies 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 that takes an optional language ID as a parameter and updates features.dat and languages.txt
+# in emulator environment.
+#
+# localised_emu.pl
+#
+# Script is RnD Emulator specific!
+#
+# Usage example: localised_emu.pl 
+# Usage example: localised_emu.pl 31
+# Usage example: localised_emu.pl 31 urel
+# Usage example: localised_emu.pl 31 udeb
+#
+
+$HRHFILE = "\\epoc32\\include\\bldpublic.hrh";
+$xml_china_filename = "\\epoc32\\include\\s60features_apac.xml";
+$xml_japan_filename = "\\epoc32\\include\\s60features_japan.xml";
+$xml_korean_filename = "\\epoc32\\include\\s60features_korean.xml";
+@china_languages=(29,30,31,129,157,158,159,326,327);
+@japan_languages=(32,160);
+$korean_language=65;
+
+$lang_id = $ARGV[0];
+$ureludeb = lc $ARGV[1];
+
+if ($lang_id eq "")
+{
+	$lang_id ="01";
+  print "No language selected, default language used: $lang_id\n";
+}
+
+# Check that given id is digit
+if (!($lang_id =~ /^\d+$/ ))
+{
+	$lang_id = "01";
+	print "faulty lang id!\n";
+	&printHelp;
+	exit;
+}
+
+if ($ureludeb eq "")
+{
+	$ureludeb = "udeb";
+	print "No urel/udeb selection made. Selecting UDEB.\n";
+}
+
+# Check that urel/udeb selection is valid
+if (!(($ureludeb eq "urel") or ($ureludeb eq "udeb")))
+{
+	print "faulty urel/udeb selection!\n"; 
+	&printHelp;
+	exit;
+}
+
+$targetfile= "\\epoc32\\release\\winscw\\$ureludeb\\Z\\Resource\\bootdata\\languages.txt";
+
+# check that given id is supported
+open(HRHFILE) or die("Could not open bldpublic.hrh file.");
+foreach $line (<HRHFILE>) {
+    chomp($line);              # remove the newline from $line.
+    if ($line =~ m/LANGUAGE_IDS/)
+    {
+    	if ($line =~ m/$lang_id/)
+    	{
+    		#print "Language ID found from bldpublic.hrh.\n";
+    	} else
+    	{
+    	print "Not supported language ID selected.\n";
+    	print "Supported language ID's:\n";
+    	print "$line\n";
+    	#$lang_id="01";
+    	exit;
+    	}
+    	}
+    	}
+close(HRHFILE);
+
+## generate feature.dat for emulator
+if (grep {$_ eq $lang_id} @china_languages) {
+  #print "China Language ID '$lang_id' selected.\n" ;
+  system("perl -S \\epoc32\\tools\\features.pl \\epoc32\\rom\\include\\featuredatabase.xml $xml_china_filename -d=\\epoc32\\release\\winscw\\$ureludeb\\z\\private\\10205054\\");
+	print "China version of features.dat generated.\n";
+} elsif (grep {$_ eq $lang_id} @japan_languages) {
+	#print "Japan Language ID '$lang_id' selected.\n" ;
+	system("perl -S \\epoc32\\tools\\features.pl \\epoc32\\rom\\include\\featuredatabase.xml $xml_japan_filename -d=\\epoc32\\release\\winscw\\$ureludeb\\z\\private\\10205054\\");	
+	print "Japan version of features.dat generated.\n";
+} elsif ($lang_id == $korean_language) {
+	#print "Korean Language ID '$lang_id' selected.\n" ;
+	system("perl -S \\epoc32\\tools\\features.pl \\epoc32\\rom\\include\\featuredatabase.xml $xml_korean_filename -d=\\epoc32\\release\\winscw\\$ureludeb\\z\\private\\10205054\\");
+	print "Korean version of features.dat generated.\n";
+} else {
+	#print "western Language ID '$lang_id' selected.\n" ;
+	system("perl -S \\epoc32\\tools\\features.pl \\epoc32\\rom\\include\\featuredatabase.xml \\epoc32\\include\\s60features.xml -d=\\epoc32\\release\\winscw\\$ureludeb\\z\\private\\10205054\\");
+	print "Western version of features.dat generated.\n";
+}
+
+
+
+# Put language ID to languages.txt
+$version_string = sprintf("%s,d", $lang_id);
+
+# Make sure that read only flag is off in the target file
+chmod 0755, $targetfile;
+
+# Write the version string in the unicode format
+open OUT, ">$targetfile" or die "Can't open output file: $targetfile $!\n";
+print OUT "\xFF\xFE";
+for (my $i = 0; $i < length($version_string); $i++)
+{
+ printf OUT "%s\0", substr($version_string, $i, 1);
+}
+close OUT;
+
+#start the actual emulator
+if ((lc $ureludeb) eq "urel")
+{
+	system("epoc -rel");
+	print "urel emulator started!\n";
+} 
+else
+{
+	system("epoc");
+	print "udeb emulator started!\n";
+} 
+
+
+
+sub printHelp
+{
+	print "*****************************************\n";
+	print "**Usage of the localised_emulator.pl:\n";
+	print "**localised_emulator.pl <lang_ID> <urel/udeb>\n";
+	print "**Default english udeb (01):localised_emulator.pl\n";
+	print "**China language: localised_emulator.pl 31\n";
+	print "*****************************************\n";
+	print "China ID's: @china_languages\n";
+	print "Japan ID's: @japan_languages\n";
+	print "Korean ID: $korean_language\n";
+}
+
+exit;
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/parse_what_log.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,244 @@
+#
+# Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  See the usage-method below.
+#
+# -----------------------------
+# - Parses TBS build log file -
+# -----------------------------
+#	The script offers parsing functionality for build logs generated by Symbian TBS build tool.
+#	It takes the build log file as an input and creates list of compiled binaries as an output.
+#	The parser searches hard coded key words “-- abld –what” and “++ Finished” and parses the data between the key words.
+#	Optionally you can also zip the binaries. The parser is configurable by giving filter, zipping etc. parameters as an argument.
+#	You can get instructions by launching the script parse_what_log.pl –help
+#	Note: Tested with Symbian TBS build logs only.
+#
+# INPUT:	mandatory:	'-i' name of the build log input file, multiple allowed
+#											'-o' name of the parsed output file or '-zip' name of the zip file
+#											'-filter' and '-pos' defines the string and position ( zero by default ) on the line, which we want to store
+#
+#					optional:		'-ex' defines a list of strings, which excludes lines containing one of these strings
+#											'-zip_prefix' prefix for each secondary zip file name when "double" zipping method selected
+#											'-zip2zip' enables the "double" zipping. Primary zip file name is defined in argument '-zip'
+#											'-zip' full path for the primary zip file
+#
+# OUTPUT: mandatory:	list of compiled binaries as an output file and/or single zip file named according '-zip' parameter
+# 				optional:		separate zip files named according to prefix and component's name containing one's compiled binaries
+#
+
+use warnings; 
+use strict; 
+use Getopt::Long;
+Getopt::Long::Configure ("bundling_override","ignore_case_always");
+
+my ($what_log, $filter_string) = '';
+my ($start_found, $filter_position, $help, $i, $skip_line) = 0;
+my @build_log = ();
+my @lines = ();
+my @exclude_list = ();
+my $temp_folder = "\\temp_what_zip2zip\\";	# temporaly zip for zip2zip
+my ($app, @app_path, $zip_cmd, $zip_prefix, $zip2zip, $zip) = 0;
+my %components;
+
+my $parse_start_string = "^(-- abld .*-w)";	# defines the starting point for parsing
+my $parse_end_string = "++ Finished";			# defines the ending point for parsing
+my $app_key_word = "Chdir ";							# defines the key word for finding the app name
+$filter_position = 0;				#set default filter position to zero
+###############################################
+#									MAIN BEGIN									#
+###############################################
+
+	initialize();							# checks arguments, opens input file etc.
+#	parse_log();							# parses the input file
+	handle_output();					# zips binaries and generates the output file
+
+
+###############################################
+#									MAIN END										#
+###############################################
+
+# Performs initialization
+sub initialize
+{
+	handleArgs();
+	readLogFile();
+}
+
+# Reads, stores and checks arguments
+sub handleArgs
+{
+		my $ii = 0;
+		my $result = GetOptions (											# read and store arguments
+							 'i=s' => \@build_log,							# path for input file
+					     'o=s' => \$what_log,								# path for output file
+					     'filter=s' => \$filter_string,			# saves lines containing string in $filter_string and in position in $filter_position
+					     'pos:i' => \$filter_position,
+					     'ex=s' => \@exclude_list,					# excludes lines containing one of these strings
+					     'zip=s' => \$zip,									# name for zip file containing binaries from parsed lines
+					     'zip_prefix=s' => \$zip_prefix,		# prefix for zip files named with each application's name if $zip2zip defined
+					     'zip2zip' => \$zip2zip,						# double zipping
+					     'h' => \$help,											# prints usage information
+				  	   'help' => \$help										# prints usage information
+				    	 );
+	
+	# check argumens are valid and prints usage if not
+	if (!$result || !scalar(@build_log) || (!$what_log && !$zip) || (!$zip && $zip2zip) ||
+			!$filter_string || ($filter_position < 0) || $help ) {
+		print "\nUSAGE:\n";
+		print "perl parse_what_log.pl\n".
+					" -i\t'full path of the build log input file'\n".
+					" -o\t'full path of the parsed output file'\n".
+					" -filter\t'defines the string on the line, which we want to store'\n".
+					" -pos\t'defines the position for filter string on the line, 0 index is used by default'\n".
+					" -ex\t'defines a list of strings, which excludes lines containing one of these strings'\n".
+					" -zip\t'full path for the primary zip file'\n".
+					" -zip_prefix\t'prefix for each secondary zip file name when 'double' zipping method selected'\n".
+					" -zip2zip\t'enables the 'double' zipping'\n\n";
+
+		print "Example1: Parse the build log\n";
+		print "perl parse_what_log.pl -i \\log\\S60_build.log -o \\Parsed_S60_build.log -filter \"epoc32\" -pos 1\n\n";
+
+		print "Example2: Parse the build log and zip binaries\n";
+		print "perl parse_what_log.pl -i \\log\\S60_build.log -o \\Parsed_S60_build.log -filter \"\\epoc32\" -pos -zip \\zip\\S60_binaries\n\n";
+
+		print "Example3: Parse the build log and double zip binaries\n";
+		print "perl parse_what_log.pl -i \\log\\S60_build.log -o \\Parsed_S60_build.log -filter \"\\epoc32\" -pos -zip \\zip\\S60_binaries -zip2zip\n\n";
+
+		print "Example4: Parse the build log with exclude list\n";
+		print "perl parse_what_log.pl -i \\log\\S60_build.log -o \\Parsed_S60_build.log -filter \"\\epoc32\" -pos -ex \"warning\" -ex \"\\build\"\n\n";
+
+		exit;
+	}
+
+	# disable the meaning of characters used in regular expressions
+#	$parse_start_string = lc("\Q$parse_start_string\E");
+	$parse_end_string = lc("\Q$parse_end_string\E");
+	$filter_string = lc($filter_string);
+	foreach $i (@exclude_list) {
+		$i = lc("\Q$i\E");
+		$exclude_list[$ii++] = $i;
+	}
+
+}
+
+# Opens and reads the log file to memory
+sub readLogFile
+{
+  foreach my $log_file(@build_log) {
+
+		open (IN,"$log_file") or die "Cannot open $log_file for reading: $!";
+		@lines=<IN>;
+		parse_log();
+		close IN;
+	}
+}
+
+# Parses the input file
+# Uses configuration according user input
+sub parse_log {
+ 	foreach (@lines){
+ 		chomp $_;
+
+ 		if ($_=~/$parse_start_string/i || $_=~/ACTION=what/i) {						# find starting point for data
+ 			$start_found = 1;
+ 		}
+ 		elsif ($start_found) {
+   		if ($_=~/$app_key_word/i) {								# find the path for bld.inf file
+  			@app_path = split /[\\||\/]/,$_;
+  			$app = $app_path[scalar(@app_path)-2];	# store application's name
+   		}
+   		if ($_=~/$parse_end_string/i) {						# stop fetching data
+   			$start_found = 0;
+   			next;
+   		}
+			$_ =~ s/\"//g;
+			my $f = $_;
+			$f = lc $f;
+  		if (($filter_position == index $f,$filter_string,$filter_position) && $start_found) { # fetch valid data only
+  			foreach $i (@exclude_list) {						# check if data is having illegal words
+  				if ($_=~/$i/i) {
+  					$skip_line = 1;
+  				}
+  			}
+				if (!$skip_line) {
+ 					$_ =~ s/ /\n/g;
+	      	push @{$components{$app}}, $_."\n";		# store the data under each app's name
+				}
+  		}
+  		$skip_line = 0;
+		}
+	}
+	@lines = ();
+}
+
+# Creates output and zip files according arguements
+# Takes the list of binaries and applications fetched from input file as an input
+sub handle_output {
+  my $zip_cmd;
+
+  # prepares double zipping if zip2zip enabled by user
+  if ($zip2zip) {
+    mkdir $temp_folder;
+  }
+  if ($zip_prefix && $zip_prefix !~ /_$/) { 		# use the prefix from user input
+    $zip_prefix .= "_";
+  }
+
+	# generates zipping command if zip enabled by user
+  if ($zip) {
+    $zip_cmd ="zip -r ";
+    if ($zip2zip) {
+      $zip_cmd .="-j -m ";
+    }
+    if ($zip !~ /\.zip$/i) {
+    	$zip .= ".zip";
+    }
+    $zip_cmd .="${zip} -@ ";
+
+  	open (ZIP, "| $zip_cmd");
+  }
+
+  if ($what_log) {
+  	open (OUT_WHAT,">$what_log") or die "Cannot open $what_log for writing: $!";	# create or open output file
+  }
+
+	# goes through all apps and their binary lists
+	foreach my $app (sort keys %components) {
+	  if ($zip2zip) {
+			my $zip2zip_cmd = "call zip -r ${temp_folder}${zip_prefix}${app}.zip -@ "; # generate double zipping command
+    	open (ZIP2ZIP, "| $zip2zip_cmd");
+      print ZIP2ZIP @{$components{$app}};				# performs the zipping in temp folder	
+    	close ZIP2ZIP;
+	  }
+	  elsif ($zip) {
+      print ZIP @{$components{$app}};						# performs the normal zipping
+	  }
+	  if ($what_log) {
+      print OUT_WHAT @{$components{$app}};			# prints the binary list to output file
+	  }
+	}
+  if ($what_log) {
+    	close OUT_WHAT;
+  }
+
+  if ($zip2zip && $zip) {
+    print ZIP $temp_folder."*\n";								# zips the zip files in temp folder
+  }
+  if ($zip) {
+  	close ZIP;
+  }
+  if ($zip2zip) {
+    rmdir $temp_folder;
+  }
+}
+# EOF
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/sw_version.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,297 @@
+#
+# 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:
+#
+#
+
+
+use strict;
+use Time::Local;
+use File::Copy;
+use Getopt::Long;
+
+
+# Parameters
+
+my $window_title;
+my @custom_version;
+my $S60_platform;
+my $S60_version;
+my $date;
+my $string;
+my $fwstring;
+my $file;
+my $bt;
+my $fwid;
+
+my $result = GetOptions(
+		'w=s' => \$window_title, 
+		'c=s' => \@custom_version, 
+		'p=s' => \$S60_platform, 
+		'pv=s' => \$S60_version,
+		'pd=s' => \$date, 
+		'bt' => \$bt,
+		'fw=s' => \$fwid);	
+if (!$result){&error_msg("Required Argument(s) are missing or wrong");}
+
+	
+#
+# Main program
+#
+if ((!defined $S60_platform) && (!scalar @custom_version) && (!defined $window_title) && (!defined $bt)) {
+	&error_msg("Required Argument(s) are missing");
+}
+
+if (defined $S60_platform) {
+	initial_s60();
+	sw_version(); 
+}
+elsif (scalar @custom_version){
+	initial_custom();
+	sw_version(); 
+}
+
+if (defined $window_title) {
+	window_title ();
+}
+
+if (defined $bt) {
+	bt_port_value();
+}
+
+if (defined $fwid) {
+	fwid_version();
+}
+
+
+#
+# S60 initialisation
+#
+sub initial_s60 (){
+	my $version_short;
+
+	if (defined $date) {
+		unless ($date=~/now/i || $date=~/today/i || $date=~/\d\d-\d\d-\d\d/ ) {  &error_msg("Wrong date format. ");}
+	}
+
+# convert platform version string to short format
+# like: S60_X_Y -> S60-XY
+	my @temp_version = split('_',$S60_platform);
+
+	foreach (@temp_version) {
+		if ($version_short eq "") {
+			$version_short = $_;
+			$version_short .= "-";
+		}
+		else {
+			$version_short .= $_;
+		}
+	}
+	
+	# create version string
+	#V S60_31_200616\n20-04-06\nS60-31\n(c)NMP
+	if (defined $date) {
+		$string='V '.$S60_platform.'_'.$S60_version.'\n*DD*-*MM*-*YY*\n'.$version_short.'\n(c)NMP';
+	}
+	else {
+		$string='V '.$S60_platform.'_'.$S60_version.'\nxx-xx-xx\nxxx-xxx\n(c)NMP';
+	}
+
+	$fwstring='V '.$S60_platform.'_'.$S60_version;
+	
+# set today to date
+	if ($date=~/now/i || $date=~/today/i) {
+		my ($time,$sek, $min, $hour, $day, $month, $year);
+	  ($sek, $min, $hour, $day, $month, $year) = (localtime)[0,1,2,3,4,5];
+	  $month += 1;
+	  $year += 1900;
+	  
+	  my $year_short=$year;
+	  $year_short=~s/.*(\d\d)$/-$1/;
+	  $date=$day.'-'.$month.$year_short
+	}
+	
+	$string=~s/\*DD\*-\*MM\*-\*YY\*/$date/; 
+}
+
+#
+# Custom initialisation
+#
+sub initial_custom (){
+	foreach (@custom_version) {
+		if ($string eq "") {
+			$string=$_;
+		}
+		else {
+			$string.='\n';
+			$string.=$_;
+		}
+	}
+}
+
+#
+# Write new version information for Version project
+#
+sub sw_version (){
+	$file="\\sf\\os\\deviceplatformrelease\\version\\data\\sw.txt";
+  open (to_file,">$file") || die " Cannot create $file Reason: $!\n";
+  #
+  # Writing the version string in the unicode format.
+  #
+  print to_file "\xFF\xFE";
+  for (my $i = 0; $i < length($string); $i++) {
+    printf to_file "%s\0", substr($string,$i, 1);
+  }
+  close (to_file);
+}
+
+
+#
+# Write new fwid version information to fwid files
+#
+sub fwid_version (){
+# $fwid (is path to fwid files) = \\s60_RnD\build_RnD\version_rnd\data\
+
+	my $fwid_file=$fwid."fwid1.txt";
+	write_unicode ($fwid_file, "id=core", "version=".$fwstring );
+
+	my $fwid_file=$fwid."fwid2.txt";
+	write_unicode ($fwid_file, "id=language", "version=".$fwstring." lang" );
+
+	my $fwid_file=$fwid."fwid3.txt";
+	write_unicode ($fwid_file, "id=customer", "version=".$fwstring." cust" );
+}
+
+#
+# Writing the version string in the unicode format.
+#
+
+sub write_unicode (){
+  my $unicode_file = shift;
+  my @unicode_lines = @_;
+
+
+  open (to_file,">$unicode_file") || die " Cannot create $unicode_file Reason: $!\n";
+	binmode to_file;
+
+  print to_file "\xFF\xFE";
+	my $size = scalar(@unicode_lines);
+
+	foreach my $l (@unicode_lines) {
+	  for (my $i = 0; $i < length($l); $i++) {
+     printf to_file "%s\0", substr($l,$i, 1);
+ 	  }
+
+  	$size--;
+
+		if ($size) {
+	  	print to_file "\x0D\x00\x0A\x00";
+	  }
+	}	
+  close (to_file);
+}
+
+#
+# Change window title for s60config project
+# Set new window title to epoc*.ini files 
+#
+sub window_title ($){
+  my(@files);
+  # read configuration files from epoc.ini
+	my $epoc_ini_file="\\s60\\mw\\uiresources\\uiconfig\\s60config\\src\\epoc.ini";
+  open(INI,$epoc_ini_file) or die "Cannot open $epoc_ini_file\n";
+  while (<INI>) {
+	  chomp; #Remove line feed and carriage return  
+	  if (/^configuration /) {
+      $_ =~ s/^configuration //;
+      push @files, $_;
+    }
+	}
+  close INI;
+
+# change window title to each configuration file
+	foreach my $input_file (@files) {
+	  my @lines;
+		$file="\\s60\\mw\\uiresources\\uiconfig\\s60config\\src\\$input_file";
+	  open(IN,$file) or die "Cannot open $file";
+	  @lines=<IN>;
+	  close IN;
+	
+	  foreach (@lines){
+	  	$string = $_;
+	    if (/^\s*WindowTitle\s+\S+/i) {
+	      $_ = "WindowTitle ".$window_title."\n";
+	    }
+		}
+		
+	  open (OUT,">$file") || die "Cannot open $file for overwriting!\n";
+	  print OUT @lines;
+	  close OUT;
+	}
+}
+
+#
+# Change correct port value to allow emulator booting
+#
+sub bt_port_value(){
+  my @lines;  
+  my $bt_string;
+	$file="\\epoc32\\release\\WINSCW\\UDEB\\Z\\private\\101f7989\\Esock\\bt.bt.esk";
+  open(IN,$file) or die "Cannot open $file";
+  @lines=<IN>;
+  close IN;
+
+  foreach (@lines){
+  	$bt_string = $_;
+    if (/^\s*port=\s+\S+/i) {
+      $_ = "port= -1\n";
+    }
+	}
+	
+  open (OUT,">$file") || die "Cannot open $file for overwriting!\n";
+  print OUT @lines;
+  close OUT;
+}
+
+
+sub error_msg ($){
+  my($ErrorMsg);
+  ($ErrorMsg)=@_;
+  my $given_command=$0;
+  $given_command =~ s/.*\\(\w+\.\w+)$/$1/;
+  print "";
+  print "\n";
+  print "Error: $ErrorMsg \n";
+  print "\n";  
+  print "Usage: $given_command [options]\n\n";
+  print "  Options for change version information\n";
+  print "    -p S60_platform [optional with -c]\n";
+  print "    -pv S60_version [optional, require -p]\n";
+  print "    -pd date [optional, require -p]\n";
+  print "    -c custom_version [optional with -p]\n\n";
+  print "  Option for change emulator window title\n";
+  print "    -w window_title [optional]\n\n";
+  print "  Option for change bt port to -1 for emulator\n";
+  print "    -bt [optional]\n";
+  print "    -fwid [optional](To update fwid files for Fota in rnd)\n"; 
+  print "\n\n";  
+  print "DATE uses dd-mm-yy format or you can give now/today\n\n";  
+  print "Example: $given_command -p S60_3_1 -pv 200616 -pd now\n";  
+  print "Example: $given_command -w 92_200614 -p S60_3_1 -pv 200616 -pd now -bt\n";  
+  print "Example: $given_command -w 92_200614 -p S60_3_1 -pv 200616 -pd 26-04-06\n";  
+  print "Example: $given_command -c \"custom\" -c \"version\"\n";  
+  print "Example: $given_command -fw \s60_RnD\build_RnD\version_rnd\data\"\n";  
+  die "\n";    
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/tools/targets_from_mmp.pl	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,183 @@
+#
+# 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:
+#
+#!/usr/bin/perl
+
+# 
+# ==============================================================================
+#  Name        : targets_from_mmp.pl
+#  Description : This script provides search functionality for target components
+#                from mmp-files found from the environment.
+#  Version     : 1
+# ==============================================================================
+# 
+
+use strict;
+use Cwd;
+use File::Find;
+
+use Getopt::Std;
+use vars qw($opt_o $opt_i $opt_p $opt_s );
+
+# -----------------------------------------------------------
+# Check the arguments and if not any or too many print guide.
+# -----------------------------------------------------------
+if (( $#ARGV < 0) || ($#ARGV > 5))
+{
+         print <<USAGE;
+         
+Usage:    targets_from_mmp.pl [-p component] [-o output-file] [-s] [-i input-file]
+
+   -p     prints the mmp-file(s) related to component.
+   -i     specify the input file from where to search for
+          mmp-target relation (value is "targets_from_mmps.txt"
+          if else not specified).
+   -s     scans the environment and prints the output to
+          "targets_from_mmps.txt" or to separately specified
+          file (with option -o).
+   -o     output-file where to write scanning results.
+ 
+ At least one option is required.
+ 
+Examples: targets_from_mmp.pl -s
+          targets_from_mmp.pl -s -o targets_from_mmps.txt
+          targets_from_mmp.pl -p clock.dll
+          targets_from_mmp.pl -p clock.dll -i targets_from_mmps.txt
+USAGE
+	exit -1;
+}
+
+# ---------------
+# Collect options
+# ---------------
+getopts("o:i:p:s");
+
+my ($inputfile, $outputfile);
+
+# -----------------------------------------------------------
+# If output-file is defined in arguments open specified file
+# for printing the targets found from mmp-files.
+# -----------------------------------------------------------
+if ($opt_s)
+{
+	if ($opt_o)
+	{
+		$outputfile = $opt_o;
+	}
+	else
+	{
+		$outputfile = "targets_from_mmps.txt";
+	}
+	
+	open (OUTPUT, ">$outputfile");
+	print "\nWriting targets of mmp-files into \"$outputfile\".\n";
+	
+	find(\&doFind, cwd);
+}
+
+# ----------------------------------------------------
+# If special input file is defined.
+# ----------------------------------------------------
+if ($opt_i)
+{
+	$inputfile = $opt_i;
+}
+else
+{
+	$inputfile = "targets_from_mmps.txt";
+}
+
+# ----------------------------------------------------
+# If component to search is defined in arguments print
+# indication of that on screen.
+# ----------------------------------------------------
+if ($opt_p)
+{
+	open (INPUT, $inputfile) or die "\nInputfile \"$inputfile\" not found, please check the filename or scan the environment first!\n";
+	#print "\nSearching mmp-file for target \"$opt_p\" from \"$inputfile\"...\n\n";
+	
+	my $found_indicator=0;
+	
+	foreach my $line (<INPUT>)
+	{
+		if ($line =~ m/(.*) : $opt_p/i)
+		{
+			print "\n $opt_p -->\n" if ($found_indicator == 0);
+			$found_indicator++;
+			print "    $1";
+		}
+	}
+	
+	print "\nCould not find target \"$opt_p\" from any mmp-file (from \"$inputfile\")!\n" if ($found_indicator == 0);
+	
+	print "\n";
+	close INPUT;
+}
+
+# --------------------------------------------
+# Function to find the targets from mmp-files.
+# --------------------------------------------
+sub doFind
+{
+	my $file = $File::Find::name;
+	
+	$file =~ s,/,\\,g;
+	return unless -f $file;
+	
+	return unless $file =~ /(?i)\.mmp$/;
+	
+	open F, $file or return;
+	#print $file . "\n";
+
+	if ($file =~ m/^\S:(.*)/i)
+	{
+		$file = $1;
+	}
+	
+	my ($line, $foundSomething);
+	
+	$foundSomething = "false";
+	
+	while ($line=<F>)
+	{
+		if ($line=~ m/^[\s|\t]*(?i)TARGET[\s|\t]+(\S*).*$/)
+		{
+			# If output-file is defined print all findings to that.
+			if ($outputfile)
+			{
+
+								
+				print OUTPUT "$file : $1\n";
+			}
+			
+			# If component to search is defined and found
+			# print corresponding mmp-file on screen.
+			
+			$foundSomething = "true";
+		}
+	}
+	
+	if ($foundSomething eq "false")
+	{
+		#print "no TARGET found from $file\n";    
+	}
+	
+	close F;
+}
+
+if ($outputfile)
+{
+	close OUTPUT;
+}
Binary file build/tools/toucher.exe has changed
Binary file build/tools/zip.exe has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build_preparation.cmd	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,125 @@
+@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
+setlocal
+echo ===-------------------------------------------------
+echo === Stage=1
+echo ===-------------------------------------------------
+perl -le "$time=localtime; print '=== Stage=1 started ', $time"
+perl -le "$time=localtime; print '=== Stage=1 build_preparation.cmd started', $time"
+
+echo Set tools and input files for build S60_5_0
+echo !!! Note: Symbian genxml and htmlscanlog tools have to found from environment !!!
+echo usage (all parameters are optional) :
+echo build_preparation.cmd S60_build_configuration -p platform -f conf_filter
+echo -p platform    : 'S60' by default , 'OSExt' is supported by S60
+echo -f conf_filter : not used by default, 'nonjava' 'touch' 'no_stubs' 'no_binonly' 
+echo                  are supported by S60
+echo using parameter '-f' all configurations are updated 
+echo in S60_SystemBuild.xml by add_build_definition_filter.pl
+echo !!! NOTE parameters are case sensitive !!!
+
+:loop
+if "%1"=="" goto end_loop
+
+if "%1" == "-f" (
+set SYSTEM_CONFIGURATION_FILTER=%SYSTEM_CONFIGURATION_FILTER% %1 %2
+shift
+shift
+goto loop
+)
+
+if "%1" == "-p" (
+set BUILD_PLATFORM=%2
+shift
+shift
+goto loop
+)
+
+if not "%1" == "" (
+set S60_BUILD_CONFIGURATION=%1
+)
+
+shift
+goto loop
+
+:end_loop
+
+if defined S60_BUILD_CONFIGURATION (if "%S60_BUILD_CONFIGURATION%" == "OSExt" (
+	set BUILD_PLATFORM=OSExt
+	set CMAKER_BUILD=os_prebuild
+))
+
+if not defined BUILD_PLATFORM (
+	set BUILD_PLATFORM=S60
+	set CMAKER_BUILD=s60_prebuild
+)
+
+if not defined S60_BUILD_CONFIGURATION (
+	set S60_BUILD_CONFIGURATION=%BUILD_PLATFORM%_clean
+)
+
+echo create folder for logs
+if not defined LOGS_PATH (
+	set LOGS_PATH=\logs\
+)
+
+if not exist %LOGS_PATH% (
+md %LOGS_PATH%
+)
+
+echo Build platform '%BUILD_PLATFORM%'
+echo Build configuration '%S60_BUILD_CONFIGURATION%'
+echo Used system configuration filters '%SYSTEM_CONFIGURATION_FILTER%'
+
+
+
+if defined SYSTEM_CONFIGURATION_FILTER (
+echo Add filter '%SYSTEM_CONFIGURATION_FILTER%' for all configurations in S60_SystemBuild.xml
+call \sf\tools\buildplatforms\build\tools\add_build_definition_filter.pl -i \sf\tools\buildplatforms\build\data\S60_SystemBuild.xml %SYSTEM_CONFIGURATION_FILTER%
+)
+
+rem tools_cmaker
+call cd \tools\cmaker && make
+
+rem cmaker_S60_config
+call cmd /c "cd \sf\os\deviceplatformrelease\sf_build\sf_prebuild && cmaker %CMAKER_BUILD% ACTION=export BUILD=%BUILD_PLATFORM%"
+
+
+rem cmaker_s60_51_config
+call cmd /c "cd \config\s60_52_config && cmaker s60_52_config ACTION=export BUILD=oem S60=52"
+
+
+echo Remove possible scanlog because htmlscanlog.pl do not overwrite it 
+if exist %LOGS_PATH%scanlog_S60Build_xml.html (
+call del /q %LOGS_PATH%scanlog_S60Build_xml.html
+)
+
+echo Generate bldmelast.xml for %BUILD_PLATFORM%
+call perl \epoc32\tools\build\genxml.pl -x \epoc32\tools\s60tools\S60_SystemBuild.xml -x \epoc32\tools\s60tools\S60_SystemModel.xml -x \epoc32\tools\s60tools\custom_SystemDefinition.xml -n %BUILD_PLATFORM%_bldmelast -s \ -o \epoc32\tools\s60tools\bldmelast.xml -l %LOGS_PATH%bldmelast_xml.log
+set CONFIGURATION_LOG_FILES=%CONFIGURATION_LOG_FILES% -l %LOGS_PATH%bldmelast_xml.log
+
+echo Generate S60Build.xml for %S60_BUILD_CONFIGURATION% build
+call perl \epoc32\tools\build\genxml.pl -x \epoc32\tools\s60tools\S60_SystemBuild.xml -x \epoc32\tools\s60tools\S60_SystemModel.xml -x \epoc32\tools\s60tools\custom_SystemDefinition.xml -n %S60_BUILD_CONFIGURATION% -s \ -o \epoc32\tools\s60tools\S60Build.xml -l %LOGS_PATH%S60Build_xml.log
+set CONFIGURATION_LOG_FILES=%CONFIGURATION_LOG_FILES% -l %LOGS_PATH%S60Build_xml.log
+
+
+echo Generate summary scanlog from generated build xml files
+call perl \epoc32\tools\htmlscanlog.pl %CONFIGURATION_LOG_FILES% -o %LOGS_PATH%scanlog_S60Build_xml.html -v
+
+
+perl -le "$time=localtime; print '=== Stage=1 finished ', $time"
+endlocal
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/group/bld.inf	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,32 @@
+/*
+* 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:
+*
+*/
+
+
+PRJ_EXPORTS
+
+
+/*
+Path & File name check scripts
+*/
+../build/tools/check_path_lenghts.pl                   /epoc32/tools/check_path_lenghts.pl
+../build/tools/check_filename_uniq.pl                   /epoc32/tools/check_filename_uniq.pl
+
+
+/*
+SBSv2 configuration file
+*/
+../build/data/s60_sbs_config.xml               /epoc32/sbs_config/s60_sbs_config.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/layers.sysdef.xml	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
+  <!ENTITY layer_real_source_path "sf/tools/buildplatforms" >
+]>
+
+<SystemDefinition name="buildplatforms" schema="1.4.0">
+  <systemModel>
+  <layer name="os_layer">
+		<module name="sf_common_tsy">
+			<component name="sf_common_tsy">
+				<unit unitID="symbian.common_tsy" name="sf_common_tsy" bldFile="sf/os/cellularsrv/telephonyserverplugins/common_tsy/group" mrp="" filter=""/>
+			</component>
+		</module>
+		<module name="sf_openvg11">
+			<component name="sf_openvg11">
+				<unit unitID="symbian.openvg11" name="sf_openvg11" bldFile="sf/os/graphics/openvg/openvginterface/group/openvg11" mrp="" filter="sf_build"/>
+			</component>
+		</module>
+	</layer>
+  <layer name="stubs_layer">
+		<module name="sf_licenseetsystub">
+			<component name="sf_licenseetsystub">
+				<unit unitID="symbian.licenseetsystub" name="sf_licenseetsystub" bldFile="sf/os/cellularsrv/telephonyserverplugins/licenseetsystub/group" mrp="" filter=""/>
+			</component>
+		</module>
+	</layer>
+
+    <layer name="bin_layer">
+			<module name="bin_layer_helix_ren">
+					<unit unitID="bin_layer_sf_mw_helix_helix_ren_src" name="src" bldFile="sf/mw/helix/helix_ren/src/group" mrp="" filter="!no_binonly"/>
+			</module>
+    </layer>
+  </systemModel>
+</SystemDefinition>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdef_1_4_0.dtd	Mon Jan 18 21:35:57 2010 +0200
@@ -0,0 +1,86 @@
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>