buildframework/helium/tools/localisation/localisation-32.ant.xml
author Shabe Razvi <shaber@symbian.org>
Tue, 13 Jul 2010 18:36:46 +0100
branchhelium-7.0.x
changeset 615 23ca302eb377
parent 593 4367a1b2db65
permissions -rw-r--r--
Add prebuilt jar for changes in Bug 3222

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
============================================================================ 
Name        : localisation-32.ant.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:

============================================================================
-->
<project name="localisation-32" xmlns:hlm="http://www.nokia.com/helium">
    <description>
      S60 3.2 localisation.
    </description>

    <!-- Should be overriden in team configuration! -->
    <!--<property name="localisation.tool" value="localisation-s60-localise" />-->
    <property name="localisation.tool" value="localise-resources" />
    <property name="parse_abld_what.tool" location="${build.drive}\s60\tools\build_platforms\build\tools\parse_what_log.pl" />
    <property name="ctool.dir" location="${build.drive}/s60/tools/toolsextensions/ConfigurationTool" />
    <property name="ctool.western.conf" value="-master_conf s60 -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\s60" />
    <property name="ctool.china.conf" value="-master_conf china -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\${ctool.region.china}" />
    <property name="ctool.japan.conf" value="-master_conf japan -impl \epoc32\rom\config\confml_data\s60 -confml \epoc32\rom\config\confml_data\${ctool.region.japan}" />

    <property name="localisation.buildfile" value="isis" />
    <property name="s60.delta.config.prefix" value="S60_variant_"/>


    <!--<property name="localisation.variation" value="western" />-->

    <property name="localisation.language.file" location="${build.drive}/epoc32/tools/s60tools/languages.xml" />
    <property name="localisation.s60locfiles.dir" location="${build.drive}/s60/misc/release/s60locfiles" />
    <property name="localisation.makefile.target" value="variants" />
    <property name="customer.makefile.target" value="customer_variants" />

    
    <!-- Additional input file per region -->
    <property name="localisation.files.western" value="" />
    <property name="localisation.files.china" value="" />
    <property name="localisation.files.japan" value="" />
    
    <!-- ctool translation -->
    <property name="ctool.region.china" value="apac"/>
    
    <!-- The createDeltaZipMacro enables to create regional variant like china and japan.
    e.g:
         <pre><hlm:createDeltaZipMacro variant="china" type="armv5" ctool="true"/></pre>
    -->
    <macrodef name="createDeltaZipMacro" uri="http://www.nokia.com/helium">
        <attribute name="variant"/>
        <attribute name="type" default=""/>
        <attribute name="ctool" default="false"/>
        <attribute name="force" default="false"/>
        <sequential>
            <mkdir dir="${build.log.dir}"/>
            <mkdir dir="${localisation.log.dir}"/>            
            <if>
                <and>
                    <available file="${zips.loc.dir}/delta_@{variant}_package.zip" />
                    <isfalse value="@{force}"/>
                </and>                    
                <then>
                    <echo>Unzipping ${zips.loc.dir}/delta_@{variant}_package.zip</echo>
                    <unzip src="${zips.loc.dir}/delta_@{variant}_package.zip" dest="${build.drive}/" overwrite="true" />
                </then>
                <else>
                    <if>
                        <equals arg1="@{type}" arg2=""/>
                        <then>
                            <var name="internal.variant.type" value="@{type}"/>
                        </then>
                        <else>
                            <var name="internal.variant.type" value="_@{type}"/>
                        </else>
                    </if>
                    <echo>Generating ${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml</echo>
                    <hlm:compileGenxmlMacro input="-x ${canonical.sysdef.file}"
                                          configuration="${s60.delta.config.prefix}@{variant}${internal.variant.type}"
                                          output="${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml"
                                          log="${localisation.log.dir}/${build.id}.variant_build_@{variant}${internal.variant.type}_genxml.log"/>

                    <echo>Building ${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml</echo>
                    <hlm:compileEbsMacro input="${build.drive}\epoc32\tools\s60tools\variant_build_@{variant}${internal.variant.type}.xml" log="${localisation.log.dir}/${build.id}.@{variant}${internal.variant.type}_compile.log" />
                    <hlm:compileHtmlscanlogMacro input="${localisation.log.dir}/${build.id}.@{variant}${internal.variant.type}_compile.log" output="${build.log.dir}/${build.id}.@{variant}${internal.variant.type}_scan2.html" />
                    
                    <if>
                        <istrue value="@{ctool}"/>
                        <then>
                            <property name="ctool.region.@{variant}" value="@{variant}"/>
                            <echo>Region ctool: ${ctool.region.@{variant}} (@{variant}).</echo>
                            <preset.exec executable="cmd" dir="${ctool.dir}/" failonerror="true" output="${localisation.log.dir}/${build.id}.configtool_@{variant}_log.txt">
                                <arg line="/c cli_build.cmd ${ctool.@{variant}.conf} -report ${localisation.log.dir}/${build.id}.configtool_@{variant}_delta.txt -ignore_errors"/>
                            </preset.exec>
                        </then>
                    </if>
                    <preset.exec executable="perl" dir="${build.drive}/" failonerror="true">
                        <arg value="${parse_abld_what.tool}"/>
                        <arg line="-i ${localisation.log.dir}/${build.id}.@{variant}${internal.variant.type}_compile.log -filter \epoc32 -zip ${zips.loc.dir}/delta_@{variant}_package -ex productvariant.hrh"/>
                    </preset.exec>
                    <if>
                        <istrue value="@{ctool}"/>
                        <then>
                            <preset.exec executable="${build.drive}\epoc32\tools\zip.exe" dir="${build.drive}/" input="${localisation.log.dir}/${build.id}.configtool_@{variant}_delta.txt">
                                <arg line="-r -u ${zips.loc.dir}/delta_@{variant}_package -@"/>
                            </preset.exec>
                        </then>
                    </if>
                    <var name="internal.variant.type" unset="true"/>
                </else>
            </if>
        </sequential>
    </macrodef>


    <!-- The createDeltaWesternZipMacro enables to create western regional variant
    e.g: build western variation using the results from S60_postbuild config
         and enabling configuration tool support.
         <pre><hlm:createDeltaWesternZipMacro configs="S60_postbuild" ctool="true"/></pre>
    -->
    <macrodef name="createDeltaWesternZipMacro"  uri="http://www.nokia.com/helium">
        <attribute name="configs"/>
        <attribute name="ctool" default="false"/>
        <sequential>
            <mkdir dir="${zips.loc.dir}"/>
            <mkdir dir="${localisation.log.dir}"/>
            <for list="@{configs}" delimiter="," param="conf" >
                <sequential>
                    <if>
                        <istrue value="@{ctool}"/>
                        <then>
                            <preset.exec executable="cmd" dir="${ctool.dir}/" failonerror="true" output="${localisation.log.dir}/${build.id}.configtool_western_log.txt">
                                <arg line="/c cli_build.cmd ${ctool.western.conf} -report ${localisation.log.dir}/${build.id}.configtool_western_delta.txt -ignore_errors"/>
                            </preset.exec>
                        </then>
                    </if>
                    <preset.exec executable="perl" dir="${build.drive}/" failonerror="true">
                        <arg value="${parse_abld_what.tool}"/>
                        <arg line="-i ${compile.log.dir}/${build.id}.@{conf}_compile.log -filter \epoc32 -zip ${zips.loc.dir}/delta_western_package -ex productvariant.hrh"/>
                    </preset.exec>
                    <if>
                        <istrue value="@{ctool}"/>
                        <then>
                            <preset.exec executable="${build.drive}\epoc32\tools\zip.exe" dir="${build.drive}/" input="${localisation.log.dir}/${build.id}.configtool_western_delta.txt">
                                <arg line="-r -u ${zips.loc.dir}/delta_western_package -@"/>
                            </preset.exec>
                        </then>
                    </if>
                </sequential>
            </for>
        </sequential>
    </macrodef>

    <!--
        Target to be run after the compile-main to zipup western variation.
        <deprecated>Please consider using binary variation to solve that problem.</deprecated>
    -->
    <target name="localisation-postbuild-western">
        <mkdir dir="${zips.loc.dir}"/>
        <mkdir dir="${localisation.log.dir}"/>

        <antcall target="compile-main">
            <param name="sysdef.configurations.list" value="S60_bldmelast" />
        </antcall>

        <preset.exec executable="perl" dir="${build.drive}/" failonerror="true">
            <arg value="${parse_abld_what.tool}"/>
            <arg line="-i ${compile.log.dir}/${build.id}.S60_bldmelast_compile.log -filter \epoc32 -zip ${zips.loc.dir}/delta_western_package -ex productvariant.hrh"/>
        </preset.exec>
        <copy file="${build.drive}\epoc32\release\ARMV5\urel\elocl.dll" tofile="${build.drive}\epoc32\release\ARMV5\urel\elocl.01" />
        <copy file="${build.drive}\epoc32\release\ARMV5\udeb\elocl.dll" tofile="${build.drive}\epoc32\release\ARMV5\udeb\elocl.01" />
    </target>


    <!--
        This targe generate the language pack related files using informations from the XML configuration file.
        The generated files are:
            * languages.[product].[langid].txt
            * lang.[product].[langid].txt
            * /epoc32/rom/config/[platform]/.../[product]/variant_[langid].iby
        <deprecated>This feature is now supported by iMaker, please update your  Makefile templates to migrate the language data from XML.</deprecated>
    -->
    <target name="localisation-create-languagepack" depends="rombuild-prepare-input">
        <mkdir dir="${localisation.log.dir}"/>
        <for list="${product.list}" delimiter="," param="product.name" >
            <sequential>
                <echo>Language Pack configuration for @{product.name}</echo>
                <exec executable="python" dir="${build.drive}/" failonerror="${failonerror}">                    
                    <arg line="${helium.dir}/tools/localisation/create_language_pack.py @{product.name} ${rombuild.config.file.parsed}"/>
                </exec>        
            </sequential>
        </for>    
    </target>

    <!--
        Developement target that generated the languages.mk using the information from
        the languages.xml file provided by S60.
        <deprecated>Those information will be generated throught Carbon.</deprecated>
    -->
    <target name="localisation-create-system-languages-mk">
        <echo>Generating ${build.drive}/epoc32/rom/config/language/system_languages.mk</echo>
        <mkdir dir="${build.drive}/epoc32/rom/config/language"/>
        <hlm:python>
""" Create a makefile that contains all languages.  """
import localisation
import sys
import ant
            
languages = localisation.Languages(ant.get_property(r'${localisation.language.file}'))
output = open(ant.get_property(r'${build.drive}')+r'\epoc32\rom\config\language\system_languages.mk', "w+")

output.write("############################################\n")
output.write("# DO NOT EDIT - File generated by Helium\n")
output.write("############################################\n")
output.write("system_languages\t\t\t\t=\\\n")
lids = languages.get_language_ids()
lids.sort()
lids.reverse()
while len(lids)>0:
    lid = lids.pop()
    endofline = "\\"
    if (len(lids)==0):
        endofline = ""
    output.write ("%s\t\t\t\t%s %s" % (languages.get_name(lid), lid, endofline))
    output.write("\n")
output.close()
    </hlm:python>
    </target>

    <!--
        This target run the generation of cenrep variation on language pack and customer variants configuration folders.
        <deprecated>S60 3.2 only for 3.2.3 use iMaker</deprecated>
    -->
    <target name="localisation-create-cenrep" depends="localisation-create-language-cenrep,localisation-create-customer-cenrep"/>

    <!--
        This target run the generation of cenrep variation on language pack configuration folders.
        <deprecated>S60 3.2 only for 3.2.3 use iMaker</deprecated>
    -->
    <target name="localisation-create-language-cenrep" depends="rombuild-prepare-input">
        <for list="${product.list}" delimiter="," param="product.name" >
            <sequential>
                <echo>Cenrep generation for @{product.name} languagepack</echo>
                <exec executable="python" dir="${build.drive}/" failonerror="${failonerror}">
                    <arg line="${helium.dir}/tools/localisation/create_variant_cenrep.py @{product.name} ${rombuild.config.file.parsed} languagepack"/>
                </exec>
            </sequential>
        </for>
    </target>

    <!--
        This target run the generation of cenrep variation on customer variants configuration folders.
        <deprecated>S60 3.2 only for 3.2.3 use iMaker</deprecated>
    -->
    <target name="localisation-create-customer-cenrep" depends="rombuild-prepare-input">
        <for list="${product.list}" delimiter="," param="product.name" >
            <sequential>
                <echo>Cenrep generation for @{product.name} customer variant</echo>
                <exec executable="python" dir="${build.drive}/" failonerror="${failonerror}">                    
                    <arg line="${helium.dir}/tools/localisation/create_variant_cenrep.py @{product.name} ${rombuild.config.file.parsed} customer"/>
                </exec>        
            </sequential>
        </for>    
    </target>
    
    <!-- Localisation configuration -->
    <target name="localisation-create-config">
        <mkdir dir="${localisation.log.dir}"/>
        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_config.log" action="start"/>
        <antcall target="localisation-create-languagepack" />
        <antcall target="localisation-create-cenrep" />
        <copy file="${helium.dir}/tools/localisation/templates/rom/mc_variant_imaker.oby" todir="${build.drive}/epoc32/rom"/>
        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_config.log" action="stop"/>
    </target>

    <!-- Localise resources using either EC / EBS based on build system type-->
    <target name="localise-resources">
        <copy file="${helium.dir}/tools/localisation/localiser/isis_EClocaliser.pl" todir="${build.drive}/epoc32/tools"/>
        <copy file="${helium.dir}/tools/localisation/localiser/ECLocaliser.pm" todir="${build.drive}/epoc32/tools"/>
        <propertycopy name="localisation.files.region" from="localisation.files.${localisation.region}" />
        <property name="isis_mktarget.list" value="${localisation.region}_${localisation.buildfile},${localisation.region}_${localisation.buildfile}_what,${localisation.region}_${localisation.buildfile}_check"/>
        <if>
            <equals arg1="${build.system}" arg2="ec-helium" />
            <then>
                <!-- localisation build for EC -->
                <echo message="isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -b=${localisation.region}_${localisation.buildfile} --ecbuild -state=0 -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -h" />
                <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
                    <arg line="${build.drive}/epoc32/tools/isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -state=0 -b=${localisation.region}_${localisation.buildfile} --ecbuild -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -nolocal -k"/>
                </exec>
                <antcall target="localisation-emake"/>
            </then>
            <else>
                <!-- localisation build for TBS -->
                <echo message="isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -b=${localisation.region}_${localisation.buildfile} --noecbuild -state=0 -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -h" />
                <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
                    <arg line="${build.drive}/epoc32/tools/isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -state=0 -b=${localisation.region}_${localisation.buildfile} --noecbuild -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -nolocal -k"/>
                </exec>
                <antcall target="localisation-ebs"/>
            </else>
        </if>        
        <!-- localisation build cleanup -->
        <echo message="isis_EClocaliser.pl -b=${localisation.region}_${localisation.buildfile} -state=2 -dest=&quot;${zips.loc.dir}&quot; -h" />
        <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
            <arg line="${build.drive}/epoc32/tools/isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -b=${temp.build.dir}/${build.id}.${localisation.region}_${localisation.buildfile} -state=2 -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -nolocal -k"/>
        </exec>
    </target>


    <!-- Localise resources using EBS-->
    <target name="localisation-ebs" if="build.system.ebs" depends="set-arm-version" >
        <for list="${isis_mktarget.list}" delimiter="," param="mktarget">
            <sequential>
                <antcall target="compile-ebs">
                    <param name="sysdef.configuration" value="@{mktarget}"/>
                    <param name="genxml.output.file" location="${build.drive}/@{mktarget}.xml"/>
                </antcall>
                <!-- <echo message="isis_EClocaliser.pl ${localisation.files} ${localisation.files.region} -b=${localisation.region}_${localisation.buildfile} -state=1 -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot; -h" />
                <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
                    <arg line="${build.drive}/epoc32/tools/isis_EClocaliser.pl -b=${localisation.region}_${localisation.buildfile} -state=1 -dest=&quot;${zips.loc.dir}&quot; -k"/>
                </exec>
                -->
            </sequential>
        </for>
    </target>


    <!-- Localise resources using EC-->
    <target name="localisation-emake" if="build.system.ec-helium" depends="set-arm-version" >
        <propertycopy name="localisation.files.region" from="localisation.files.${localisation.region}" />
        <for list="${isis_mktarget.list}" delimiter="," param="mktarget">
            <sequential>
                <hlm:recordStartMacro name="@{mktarget}.log" emacsmode="true"/>
                <hlm:emakeMacro name="localisation" makefile="${build.drive}/${localisation.region}_${localisation.buildfile}.make" target="@{mktarget}" dir="${build.drive}/" annodetail="basic,history,file,waiting" phase="localisation"/>
                <hlm:recordStopMacro name="@{mktarget}.log"/>
            </sequential>
        </for>
    </target>


    <!-- S60 localiser tool -->
    <target name="localisation-s60-localiser">
        <propertycopy name="localisation.files.region" from="localisation.files.${localisation.region}" />
        <echo message="s60Localiser.pl ${localisation.files} ${localisation.files.region} -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot;" />
        <exec executable="perl" dir="${build.drive}/" failonerror="${failonerror}">
            <arg line="${build.drive}/epoc32/tools/s60Localiser.pl ${localisation.files} ${localisation.files.region} -c=&quot;${localisation.languages}&quot; -dest=&quot;${zips.loc.dir}&quot; -s60locfiles=&quot;${localisation.s60locfiles.dir}&quot; -l=&quot;${localisation.log}&quot;"/>
        </exec>    
    </target>
    
    
    <!-- Build localised content -->
    <target name="localisation-build" depends="rombuild-prepare-input">
        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_build.log" action="start"/>
        <copy file="${parse_abld_what.tool}" todir="${build.drive}/epoc32/tools/s60tools" failonerror="false"/>
        <mkdir dir="${zips.loc.dir}"/>    
        
        <!-- get all variation available -->    
        <exec executable="python" outputproperty="localisation.variation" dir="${build.drive}/" failonerror="${failonerror}">
            <arg line="${helium.dir}/tools/localisation/getallvariantion.py ${localisation.language.file}"/> 
        </exec>

        <!-- get all variation available -->    
        <echo>We will create zip variation for ${localisation.variation}</echo>
        <for list="${localisation.variation}" delimiter="," param="variant">
            <sequential>    
                <hlm:createDeltaZipMacro variant="@{variant}" />
                <!-- getting all languages to localise -->
                <var name="localisation.languages" unset="true"/>
                <exec executable="python" outputproperty="localisation.languages.output" dir="${build.drive}/" failonerror="${failonerror}">
                    <arg line="${helium.dir}/tools/localisation/getalllanguages.py ${localisation.language.file} @{variant}"/> 
                </exec>
                <propertyregex property="localisation.languages" input="${localisation.languages.output}" override="true" regexp="((?: ?\d+)+)$" select="\1"/>
                <echo>Localising ${localisation.languages}</echo>
                <propertyregex property="localisation.log" input="${build.log.dir}/localisation_${localisation.languages}.html" regexp="\s+" replace="_" override="true"/>
                <echo>Localising using ${localisation.tool}.</echo>
                <antcall target="${localisation.tool}">
                    <param name="localisation.region" value="@{variant}"/>
                </antcall>
                
                <for list="${product.list}" delimiter="," param="product.name" >
                    <sequential>
                        <for list="${localisation.languages}" delimiter=" " param="lid" >
                            <sequential>
                                <exec executable="python" dir="${build.drive}/epoc32/rom" failonerror="${failonerror}">
                                    <arg line="${helium.dir}/tools/localisation/createlocales.py @{product.name} @{lid} -include Override.oby"/> 
                                </exec>
                            </sequential>
                        </for>
                    </sequential>
                </for>
            </sequential>
        </for>
        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_build.log" action="stop"/>
    </target>
    
    
    <!--
        Target to rebuild locales 
        This could be useful for incremental changes/test.
    -->
    <target name="localisation-create-locales">
        <mkdir dir="${localisation.log.dir}"/>
        <hlm:record name="${localisation.log.dir}/${build.id}_create_locales.log" action="start"/>
        
        <!-- get all variation available -->    
        <exec executable="python" outputproperty="localisation.variation" dir="${build.drive}/" failonerror="${failonerror}">
            <arg line="${helium.dir}/tools/localisation/getallvariantion.py ${localisation.language.file}"/> 
        </exec>
                
        <!-- get all variation available -->    
        <echo>We will create zip variation for ${localisation.variation}</echo>
        <for list="${localisation.variation}" delimiter="," param="variant">
            <sequential>
                <hlm:createDeltaZipMacro variant="@{variant}" />
                <!-- getting all languages to localise -->
                <var name="localisation.languages" unset="true"/>
                <exec executable="python" outputproperty="localisation.languages" dir="${build.drive}/" failonerror="${failonerror}">
                    <arg line="${helium.dir}/tools/localisation/getalllanguages.py ${localisation.language.file} @{variant}"/> 
                </exec>
           
                <for list="${product.list}" delimiter="," param="product.name" >
                    <sequential>
                        <for list="${localisation.languages}" delimiter=" " param="lid" >
                            <sequential>
                                <exec executable="python" dir="${build.drive}/epoc32/rom" failonerror="${failonerror}">
                                    <arg line="${helium.dir}/tools/localisation/createlocales.py @{product.name} @{lid} -include Override.oby"/> 
                                </exec>
                            </sequential>
                        </for>
                    </sequential>
                </for>
            </sequential>
        </for>
        <hlm:record name="${localisation.log.dir}/${build.id}_create_locales.log" action="stop"/>
    </target>    

    
    <!-- Creates localised rom images -->
    <target name="localisation-roms" depends="rombuild-create-makefile,flash-config-file"> 
        <mkdir dir="${localisation.log.dir}"/>
        <!-- get product path -->
        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_roms.log" action="start"/>
        <hlm:preECImakerMacro/>
        <for list="${product.list}" delimiter="," param="product.name" >
            <sequential>
                <hlm:rombuildImakerMacro product="@{product.name}" target="${localisation.makefile.target}" />
            </sequential>
        </for>
        <hlm:ecImakerMacro makefile.target="${localisation.makefile.target}" />
        <hlm:record name="${localisation.log.dir}/${build.id}_localisation_roms.log" action="stop"/>
        <hlm:logextract file="${localisation.log.dir}/${build.id}_localisation_roms.log"/>
    </target>

    
    <!-- Creates customer rom images -->
    <target name="customer-roms" depends="rombuild-create-makefile,flash-config-file"> 
        <mkdir dir="${localisation.log.dir}"/>
        <!-- get product path -->
        <hlm:record name="${localisation.log.dir}/${build.id}_customer_roms.log" action="start"/>
        <hlm:preECImakerMacro/>
        <for list="${product.list}" delimiter="," param="product.name" >
            <sequential>
                <hlm:rombuildImakerMacro product="@{product.name}" target="${customer.makefile.target}" />
            </sequential>
        </for>
        <hlm:ecImakerMacro makefile.target="${customer.makefile.target}" />
        <hlm:record name="${localisation.log.dir}/${build.id}_customer_roms.log" action="stop"/>
        <hlm:logextract file="${localisation.log.dir}/${build.id}_customer_roms.log"/>
    </target>

    
    <!-- Runs localisation for product builds.
    
    Creates:
    * Localisation configuration
    * Build localised content
    * Localised rom images
    
     -->
    <target name="localisation" depends="localisation-create-config,precompile-ec,localisation-build,localisation-roms"> 
        <antcall target="postcompile-ec"/>
    </target>

</project>