buildframework/helium/tools/rombuild/rombuild.ant.xml
changeset 1 be27ed110b50
child 179 d8ac696cc51f
equal deleted inserted replaced
0:044383f39525 1:be27ed110b50
       
     1 <?xml version="1.0" encoding="UTF-8"?>
       
     2 <!-- 
       
     3 ============================================================================ 
       
     4 Name        : rombuild.ant.xml 
       
     5 Part of     : Helium 
       
     6 
       
     7 Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     8 All rights reserved.
       
     9 This component and the accompanying materials are made available
       
    10 under the terms of the License "Eclipse Public License v1.0"
       
    11 which accompanies this distribution, and is available
       
    12 at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
    13 
       
    14 Initial Contributors:
       
    15 Nokia Corporation - initial contribution.
       
    16 
       
    17 Contributors:
       
    18 
       
    19 Description:
       
    20 
       
    21 ============================================================================
       
    22 -->
       
    23 <project name="rombuild" xmlns:hlm="http://www.nokia.com/helium">
       
    24     <description>
       
    25         ROM image creation using iMaker.
       
    26         Flash config file generation.
       
    27     </description>
       
    28     <import file="./trace_images/tracebuild.ant.xml" />
       
    29     <import file="imaker.ant.xml" />
       
    30 
       
    31     <!-- should be overriden - default configuration -->
       
    32     <!-- <property name="rombuild.makefile.name" value="mc_imaker_conf.mk" /> -->
       
    33     <property name="imaker.command" location="${build.drive}\epoc32\tools\imaker.cmd" />
       
    34     <property name="ee.makefile.target" value="ee_roms" />
       
    35     <property name="subcon.makefile.target" value="subcon_roms" />
       
    36     <property name="trace.makefile.target" value="trace_roms" />
       
    37     <property name="ee_roms.log.file" value="${build.log.dir}/${build.id}_ee_roms.log" />
       
    38     <property name="trace.log.file" value="${build.log.dir}/${build.id}_trace_roms.log" />
       
    39     <property name="subcon.log.file" value="${build.log.dir}/${build.id}_subcon_roms.log" />
       
    40 
       
    41     <!-- Properties for image-creation target which is being used by IDOs -->
       
    42     <property name="image_creation.copyto" value="${build.output.dir}/images" />
       
    43     <property name="image_creation.drive" value="${build.drive}" />
       
    44     <!-- Property for variant-image-creation -->
       
    45     <property name="variant.image.targetpath" value="${build.output.dir}/variant_images" />
       
    46 
       
    47     <!-- That macro runs iMaker using product the configuration generated by Helium. -->
       
    48     <macrodef name="rombuildImakerMacro" uri="http://www.nokia.com/helium">
       
    49         <attribute name="product" />
       
    50         <attribute name="target" />
       
    51         <sequential>
       
    52             <var name="rom.product.path" unset="true" />
       
    53             <if>
       
    54                 <istrue value="${rombuild.using.var}" />
       
    55                 <then>
       
    56                     <script language="jython" setbeans="false">
       
    57                         <![CDATA[
       
    58 import imaker
       
    59 import os
       
    60 if project.getProperty('build.drive') == None :
       
    61     raise Exception("'build.drive' property is not defined")
       
    62 os.chdir(project.getProperty('build.drive') + os.sep)
       
    63 project.setProperty('rom.product.path', imaker.get_product_dir(r'@{product}'))
       
    64                         ]]>
       
    65                     </script>
       
    66                 </then>
       
    67                 <else>
       
    68                     <exec executable="python" outputproperty="rom.product.path" dir="${build.drive}/" failonerror="${failonerror}">
       
    69                         <arg line="${helium.dir}/tools/localisation/get_product_path.py @{product}" />
       
    70                     </exec>
       
    71                     <exec executable="python" outputproperty="rom.product.platform" dir="${build.drive}/" failonerror="${failonerror}">
       
    72                         <arg line="${helium.dir}/tools/localisation/get_product_platform.py @{product}" />
       
    73                     </exec>
       
    74                 </else>
       
    75             </if>
       
    76             <if>
       
    77                 <and>
       
    78                     <equals arg1="${build.system}" arg2="ec-helium" />
       
    79                     <isset property="rom.dryrun" />
       
    80                 </and>
       
    81                 <then>
       
    82                     <echo message="target to run @{target}-dryrun" />
       
    83                     <exec executable="${imaker.command}" dir="${build.drive}/" output="${build.drive}/dryrun_out.txt" append="true" failonerror="${failonerror}">
       
    84                         <arg line="-p@{product} -f /epoc32/rom/${rom.product.path}/${rombuild.makefile.name}" />
       
    85                         <arg value="@{target}-dryrun" />
       
    86                     </exec>
       
    87                 </then>
       
    88                 <else>
       
    89                     <if>
       
    90                         <istrue value="${rombuild.using.var}" />
       
    91                         <then>
       
    92                             <exec executable="${imaker.command}" dir="${build.drive}/" failonerror="${failonerror}">
       
    93                                 <arg line="-p@{product} -f /epoc32/rom/${rom.product.path}/${rombuild.makefile.name}" />
       
    94                                 <arg value="@{target}" />
       
    95                             </exec>
       
    96                         </then>
       
    97                         <else>
       
    98                             <exec executable="${imaker.command}" dir="${build.drive}/" failonerror="${failonerror}">
       
    99                                 <arg line="-p@{product} -c${rom.product.platform} -f /epoc32/rom/${rom.product.path}/${rombuild.makefile.name}" />
       
   100                                 <arg value="@{target}" />
       
   101                             </exec>
       
   102                         </else>
       
   103                     </if>
       
   104                 </else>
       
   105             </if>
       
   106         </sequential>
       
   107     </macrodef>
       
   108 
       
   109 
       
   110     <!-- Create engineering english image using ImageCreation.pl. -->
       
   111     <target name="image-creation" if="image_creation.copyto">
       
   112         <tstamp>
       
   113             <format property="image.archive.date" pattern="ddmmyy'_'HHmmss" />
       
   114         </tstamp>
       
   115 
       
   116         <move todir="${build.drive}/archives/images/${image.archive.date}" failonerror="false">
       
   117             <fileset dir="${build.output.dir}/images/" />
       
   118         </move>
       
   119         <mkdir dir="${build.output.dir}/images" />
       
   120         <exec executable="perl" dir="${build.drive}/" failonerror="true">
       
   121             <arg value="${helium.dir}/tools/compile/ImageCreation.pl" />
       
   122             <arg value="-copyto" />
       
   123             <arg value="${image_creation.copyto}" />
       
   124             <arg value="-MyTraces" />
       
   125             <arg value="${image_creation.MyTraces}" />
       
   126             <arg value="-Drive" />
       
   127             <arg value="${image_creation.drive}" />
       
   128             <arg value="-product" />
       
   129             <arg value="${image_creation.product}" />
       
   130             <arg value="-type" />
       
   131             <arg value="${image_creation.type}" />
       
   132         </exec>
       
   133     </target>
       
   134 
       
   135     <!-- Create variant image using Creator.pl tools.
       
   136     -->
       
   137     <target name="variant-image-creation" if="variant.image.hw">
       
   138         <tstamp>
       
   139             <format property="image.archive.date" pattern="ddmmyy'_'HHmmss" />
       
   140         </tstamp>
       
   141 
       
   142         <move todir="${build.drive}/archives/variant_images/${image.archive.date}" failonerror="false">
       
   143             <fileset dir="${build.output.dir}/variant_images/" />
       
   144         </move>
       
   145         <mkdir dir="${build.output.dir}/variant_images" />
       
   146         <exec executable="perl" dir="${build.drive}/" failonerror="true">
       
   147             <arg value="${build.drive}/Creator.pl" />
       
   148             <arg value="-hw" />
       
   149             <arg value="${variant.image.hw}" />
       
   150             <arg value="-lang" />
       
   151             <arg value="${variant.image.lang}" />
       
   152             <arg value="-core" />
       
   153             <arg value="${variant.image.core}" />
       
   154             <arg value="-variant" />
       
   155             <arg value="${variant.image.variantcode}" />
       
   156             <arg value="-type" />
       
   157             <arg value="${variant.image.type}" />
       
   158             <arg value="-sw" />
       
   159             <arg value="${variant.image.sw}" />
       
   160             <arg value="-targetpath" />
       
   161             <arg value="${variant.image.targetpath}" />
       
   162         </exec>
       
   163     </target>
       
   164 
       
   165     <!-- This targets call the image-creation target to be reexecuted in a build.
       
   166         <deprecated>Should be done diferrently, e.g use imaker in new </deprecated>
       
   167     -->
       
   168     <target name="rerun-image-creation">
       
   169         <runtarget target="image-creation" />
       
   170     </target>
       
   171 
       
   172     <!-- This targets call the variant-image-creation target to be reexecuted in a build.
       
   173         <deprecated>Should be done diferrently, e.g use imaker in new </deprecated>
       
   174     -->
       
   175     <target name="rerun-variant-image-creation">
       
   176         <runtarget target="variant-image-creation" />
       
   177     </target>
       
   178 
       
   179     <!-- Preparing rom image configuration expanding properties, flattening the xinclude stucture
       
   180              and finally expanding properties again. 
       
   181     -->
       
   182     <target name="rombuild-prepare-input" depends="init-build-area">
       
   183         <property name="rombuild.config.file.parsed" location="${build.output.dir}/rom_config.xml.parsed" />
       
   184         <copy file="${rombuild.config.file}" tofile="${rombuild.config.file.parsed}.x1" overwrite="true">
       
   185             <filterchain>
       
   186                 <expandproperties />
       
   187                 <tokenfilter>
       
   188                     <replacestring from="http://www.w3.org/2003/XInclude" to="http://www.w3.org/2001/XInclude" />
       
   189                 </tokenfilter>
       
   190             </filterchain>
       
   191         </copy>
       
   192         <!--<xcluder in="${rombuild.config.file.parsed}.x1" out="${rombuild.config.file.parsed}.xinclude" />-->
       
   193         <xinclude file="${rombuild.config.file.parsed}.x1" tofile="${rombuild.config.file.parsed}.xinclude" />
       
   194         <xmltask source="${rombuild.config.file.parsed}.xinclude" dest="${rombuild.config.file.parsed}.x2">
       
   195             <attr path="//*" attr="xml:base" remove="true" />
       
   196         </xmltask>
       
   197         <copy file="${rombuild.config.file.parsed}.x2" tofile="${rombuild.config.file.parsed}" overwrite="true">
       
   198             <filterchain>
       
   199                 <expandproperties />
       
   200             </filterchain>
       
   201         </copy>
       
   202     </target>
       
   203 
       
   204 
       
   205     <!-- Creates ee-images
       
   206      -->
       
   207     <target name="ee-roms" depends="rombuild-create-makefile" unless="no.ncp">
       
   208         <hlm:startSpecificLogMacro name="${ee_roms.log.file}" />
       
   209         <hlm:preECImakerMacro />
       
   210         <for list="${product.list}" delimiter="," param="product.name">
       
   211             <sequential>
       
   212                 <hlm:rombuildImakerMacro product="@{product.name}" target="${ee.makefile.target}" />
       
   213             </sequential>
       
   214         </for>
       
   215         <hlm:ecImakerMacro makefile.target="${ee.makefile.target}" />
       
   216         <hlm:stopSpecificLogMacro name="${ee_roms.log.file}" />
       
   217         <hlm:metadatarecord database="${metadata.dbfile}">
       
   218             <hlm:textmetadatainput>
       
   219                 <fileset casesensitive="false" file="${ee_roms.log.file}" />
       
   220                 <metadatafilterset refid="filterset.ee.roms" />
       
   221             </hlm:textmetadatainput>
       
   222         </hlm:metadatarecord>
       
   223         <hlm:generateBuildStatus file="${build.id}_ee_roms.log" />
       
   224         <!-- Todo: metadata: assertions for metadata parsing here -->
       
   225         <hlm:publishMacro />
       
   226     </target>
       
   227 
       
   228 
       
   229     <!-- Creates subcon certified rom images with imaker tool -->
       
   230     <target name="subcon-roms" depends="rombuild-create-makefile" unless="no.ncp">
       
   231         <hlm:startSpecificLogMacro name="${subcon.log.file}" />
       
   232         <mkdir dir="${subcon.build.drive}/output/development_flash_images/engineering_english/${product.name}/subcon" />
       
   233         <hlm:preECImakerMacro />
       
   234         <for list="${product.list}" delimiter="," param="product.name">
       
   235             <sequential>
       
   236                 <hlm:rombuildImakerMacro product="@{product.name}" target="${subcon.makefile.target}" />
       
   237             </sequential>
       
   238         </for>
       
   239         <hlm:ecImakerMacro makefile.target="${ee.makefile.target}" />
       
   240         <hlm:stopSpecificLogMacro name="${subcon.log.file}" />
       
   241         <hlm:metadatarecord database="${metadata.dbfile}">
       
   242             <hlm:textmetadatainput>
       
   243                 <fileset casesensitive="false" file= "${subcon.log.file}"/>
       
   244                 <metadatafilterset refid="filterset.subcon.roms" />
       
   245             </hlm:textmetadatainput>
       
   246         </hlm:metadatarecord>
       
   247         <hlm:generateBuildStatus file="${build.id}_subcon_roms.log" />
       
   248         <!-- Todo: metadata: insert assertions for metadata parsing here -->
       
   249         <hlm:publishMacro />
       
   250     </target>
       
   251 
       
   252     <!-- Private: Internal target to export iMaker Helium additions. -->
       
   253     <target name="rombuild-export-features">
       
   254         <copy todir="${build.drive}/epoc32/rom/config" overwrite="true">
       
   255             <fileset dir="${helium.dir}/tools/rombuild/features" casesensitive="false">
       
   256                 <include name="*.mk" />
       
   257                 <include name="unittest/*.mk" />
       
   258             </fileset>
       
   259         </copy>
       
   260     </target>
       
   261 
       
   262     <!-- iMaker related targets -->
       
   263     <target name="rombuild-create-makefile" depends="rombuild-export-features,rombuild-prepare-input">
       
   264         <!-- Just generate the makefile for all the product available in product list. -->
       
   265         <hlm:python>
       
   266 import os
       
   267 
       
   268 import configuration
       
   269 import rom
       
   270 
       
   271 os.chdir(r'${build.drive}/')
       
   272 configBuilder = configuration.NestedConfigurationBuilder(open(r'${rombuild.config.file.parsed}', 'r'))
       
   273 configSet = configBuilder.getConfiguration()
       
   274 for product in r'${product.list}'.split(','):
       
   275     builder = rom.IMakerRomBuilder(configSet, product, (r'${rombuild.using.var}'.lower() == "true"))
       
   276     builder.build()
       
   277         </hlm:python>
       
   278     </target>
       
   279 
       
   280 
       
   281 
       
   282 
       
   283     <!-- Creates trace rom images -->
       
   284     <target name="trace-roms" depends="rombuild-create-makefile" unless="no.ncp">
       
   285         <hlm:startSpecificLogMacro name="${trace.log.file}" />
       
   286         <hlm:preECImakerMacro />
       
   287         <for list="${product.list}" delimiter="," param="product.name">
       
   288             <sequential>
       
   289                 <hlm:rombuildImakerMacro product="@{product.name}" target="${trace.makefile.target}" />
       
   290             </sequential>
       
   291         </for>
       
   292         <hlm:ecImakerMacro makefile.target="${ee.makefile.target}" />
       
   293         <hlm:stopSpecificLogMacro name="${trace.log.file}" />
       
   294         <!-- Todo: Make sure that logfilter is added to the filterset -->
       
   295         <hlm:metadatarecord database="${metadata.dbfile}">
       
   296             <hlm:textmetadatainput>
       
   297                 <fileset casesensitive="false" file="${trace.log.file}" />
       
   298                 <metadatafilterset refid="filterset.trace.rom" />
       
   299             </hlm:textmetadatainput>
       
   300         </hlm:metadatarecord>
       
   301         <hlm:generateBuildStatus file="${build.id}_trace_roms.log" />
       
   302         <!-- Todo: metadata: insert assertions for metadata parsing here -->
       
   303         <hlm:publishMacro />
       
   304     </target>
       
   305 
       
   306     <!-- Single product configuration support
       
   307         <deprecated>Please consider using new iMaker integration.</deprecated>
       
   308     -->
       
   309     <target name="ee-roms-product" depends="rombuild-create-makefile" unless="no.ncp">
       
   310         <sequential>
       
   311             <hlm:preECImakerMacro />
       
   312             <hlm:rombuildImakerMacro product="${product.name}" target="${ee.makefile.target}" />
       
   313             <hlm:ecImakerMacro makefile.target="${ee.makefile.target}" />
       
   314         </sequential>
       
   315     </target>
       
   316 
       
   317     <!-- Used for parallel rom image creation using dry run approach -->
       
   318     <macrodef name="preECImakerMacro" uri="http://www.nokia.com/helium">
       
   319         <sequential>
       
   320             <delete file="${build.drive}/dryrun_out.txt" failonerror="false" />
       
   321         </sequential>
       
   322     </macrodef>
       
   323 
       
   324     <!-- Target to run imaker in parallel rom image creation for S60 3.2 based products -->
       
   325     <macrodef name="ecImakerMacro" uri="http://www.nokia.com/helium">
       
   326         <attribute name="makefile.target" />
       
   327         <sequential>
       
   328             <if>
       
   329                 <and>
       
   330                     <equals arg1="${build.system}" arg2="ec-helium" />
       
   331                     <isset property="rom.dryrun" />
       
   332                 </and>
       
   333                 <then>
       
   334                     <exec executable="python" dir="${build.drive}/" failonerror="${failonerror}">
       
   335                         <arg line="${helium.dir}/tools/rombuild/dryrun_parser.py ${build.drive}/dryrun_out.txt ${build.drive}/@{makefile.target}.make @{makefile.target}" />
       
   336                     </exec>
       
   337                     <antcall target="compile-ec-helium">
       
   338                         <param name="skip.compile-ec-patch" value="yes" />
       
   339                         <param name="sysdef.configuration" value="@{makefile.target}" />
       
   340                         <param name="ec.makefile.file" location="${build.drive}/@{makefile.target}.make" />
       
   341                     </antcall>
       
   342                 </then>
       
   343             </if>
       
   344         </sequential>
       
   345     </macrodef>
       
   346 
       
   347     <!--Private: Internal iMaker macro. -->
       
   348     <macrodef name="internalImakerMacro" uri="http://www.nokia.com/helium">
       
   349         <attribute name="product" />
       
   350         <attribute name="target" />
       
   351         <attribute name="makefile" default="" />
       
   352         <attribute name="cmd" default="" />
       
   353         <sequential>
       
   354             <var name="rom.product.path" unset="true" />
       
   355             <script language="jython" setbeans="false">
       
   356                 <![CDATA[
       
   357 import imaker
       
   358 import os
       
   359 os.chdir(project.getProperty('build.drive') + os.sep)
       
   360 project.setProperty('rom.product.path', imaker.get_product_dir(r'@{product}'))
       
   361               ]]>
       
   362             </script>
       
   363             <if>
       
   364                 <equals arg1="@{makefile}" arg2="" />
       
   365                 <then>
       
   366                     <var name="var.makefile" value="" />
       
   367                 </then>
       
   368                 <else>
       
   369                     <var name="var.makefile" value="-f ${rom.product.path}/@{makefile}" />
       
   370                 </else>
       
   371             </if>
       
   372             <exec executable="${imaker.command}" dir="${build.drive}" failonerror="${failonerror}">
       
   373                 <arg line="-p@{product} @{cmd}" />
       
   374                 <arg line="${var.makefile}" />
       
   375                 <arg line="@{cmd}" />
       
   376                 <arg value="@{target}" />
       
   377             </exec>
       
   378         </sequential>
       
   379     </macrodef>
       
   380 
       
   381     <!-- Timestamp used in flash config file generation -->
       
   382     <tstamp>
       
   383         <format property="fota.release.date" pattern="dd-MM-yy" />
       
   384     </tstamp>
       
   385 
       
   386     <!-- Create flash configration files -->
       
   387     <target name="flash-config-file" if="flash.config.enabled">
       
   388         <runtarget target="rombuild-prepare-input" />
       
   389         <runtarget target="rombuild-create-makefile" />
       
   390 
       
   391         <property name="flash.config.makefile.target" value="flash_config" />
       
   392         <property name="flash.config.makefile.name" value="mc_flash_config.mk" />
       
   393         <hlm:python>
       
   394 import configuration
       
   395 import flash_config
       
   396 import os
       
   397 os.chdir(r'${build.drive}/')
       
   398 configBuilder = configuration.NestedConfigurationBuilder(open(r'${rombuild.config.file.parsed}', 'r'))
       
   399 configSet = configBuilder.getConfiguration()
       
   400 for product in r'${product.list}'.split(','):
       
   401     writer = flash_config.FlashConfigurationWriter(configSet, product)
       
   402     writer.write()
       
   403     </hlm:python>
       
   404         <for list="${product.list}" delimiter="," param="product.name">
       
   405             <sequential>
       
   406                 <hlm:internalImakerMacro product="@{product.name}" target="${flash.config.makefile.target}" makefile="${flash.config.makefile.name}" />
       
   407             </sequential>
       
   408         </for>
       
   409     </target>
       
   410 
       
   411     <!-- The target ido-iby-copy copies the iby files from ido.src.root to ido.romtree
       
   412         Two properties that define from where the files are copied from and whre to. Defauls are 
       
   413         for "ido.src.tree" default value is "${build.drive}${ido.src.root}"  
       
   414         for "ido.romtree" default value is "${build.drive}${env.EPOCROOT}/epoc32/rom/include"  .
       
   415          The IDO should define the ido.src.root and ido.romtree to override the defauls  
       
   416          <deprecated>IDO must now move to the new sysdef structure and use ido-copy-iby.</deprecated>
       
   417     -->
       
   418     <target name="ido-iby-copy">
       
   419         <property name="ido.src.tree" value="${build.drive}${ido.src.root}" />
       
   420         <property name="ido.romtree" value="${build.drive}${env.EPOCROOT}/epoc32/rom/include" />
       
   421         <echo>New files</echo>
       
   422         <!-- the files are in rom folder -->
       
   423         <copy todir="${ido.romtree}" verbose="true" flatten="true">
       
   424             <fileset dir="${ido.src.tree}">
       
   425                 <exclude name="**/internal/**" />
       
   426                 <exclude name="**/tsrc/**" />
       
   427                 <include name="**/rom/*.iby" />
       
   428             </fileset>
       
   429         </copy>
       
   430         <echo>Old files</echo>
       
   431 
       
   432         <copy todir="${ido.romtree}" verbose="true" flatten="true" overwrite="true">
       
   433             <fileset dir="${ido.src.tree}">
       
   434                 <exclude name="**/internal/**" />
       
   435                 <exclude name="**/tsrc/**" />
       
   436                 <include name="**/rom/*.iby" />
       
   437             </fileset>
       
   438         </copy>
       
   439     </target>
       
   440 
       
   441 
       
   442     <!-- Two properties that define from where the files are copied and what platform is used.
       
   443          The IDO should define the ido.src.root and ido.cenrep.platform 
       
   444          The properties ido.cenrep.root and ido.cenrep.target mey be overriden by the user.
       
   445          <deprecated>IDO must now move to the new sysdef structure and use ido-create-cenrep.</deprecated>
       
   446      -->
       
   447     <target name="ido-cenrep" if="ido.cenrep.platform">
       
   448         <property name="ido.src.tree" value="${build.drive}${ido.src.root}" />
       
   449         <property name="ido.cenrep.root" value="${build.drive}${env.EPOCROOT}/epoc32/tools/cenrep" />
       
   450         <property name="ido.cenrep.target" value="${build.drive}${env.EPOCROOT}/epoc32/data/z/private/10202be9" />
       
   451         <echo>Generating cenrep files</echo>
       
   452 
       
   453         <copy todir="${ido.cenrep.root}" verbose="true" flatten="true">
       
   454             <fileset dir="${ido.src.tree}">
       
   455                 <include name="**/cenrep/keys_*.xls" />
       
   456             </fileset>
       
   457         </copy>
       
   458 
       
   459         <!-- in cenrep dir execut 'generate_cenrep_inifile.pl -r %s -d .' % platform -->
       
   460         <exec executable="perl" dir="${ido.cenrep.root}" failonerror="true">
       
   461             <arg value="${ido.cenrep.root}/generate_cenrep_inifile.pl" />
       
   462             <arg value="-r" />
       
   463             <arg value="${ido.cenrep.platform}" />
       
   464             <arg value="-d" />
       
   465             <arg value="." />
       
   466         </exec>
       
   467         <!-- Copy generated files to target path -->
       
   468         <copy todir="${ido.cenrep.target}" verbose="true" flatten="true">
       
   469             <fileset dir="${ido.cenrep.root}">
       
   470                 <include name="????????.txt" />
       
   471             </fileset>
       
   472         </copy>
       
   473 
       
   474     </target>
       
   475 
       
   476     <!--
       
   477         Implement a solution to create build information for imaker.
       
   478     -->
       
   479     <target name="rombuild-imaker-create-buildinfo">
       
   480         <property name="rombuild.buildinfo.template" location="${helium.dir}/tools/common/templates/imaker/image_conf_buildinfo.mk.ftl" />
       
   481         <property name="rombuild.buildinfo.output" location="${build.drive}${env.EPOCROOT}epoc32/rom/config/image_conf_buildinfo.mk" />
       
   482         <fmpp sourceFile="${rombuild.buildinfo.template}" outputFile="${rombuild.buildinfo.output}">
       
   483             <data expandProperties="yes">
       
   484                 ant: antProperties()
       
   485             </data>
       
   486         </fmpp>
       
   487     </target>
       
   488 
       
   489 </project>