<?xml version="1.0" encoding="UTF-8"?>
<project name="SF-PLATFORM-CONFIG" xmlns:hlm="http://www.nokia.com/helium">
<!-- location of this config -->
<dirname property="sf.platform.config.dir" file="${ant.file.SF-PLATFORM-CONFIG}"/>
<!-- import package properties -->
<import file="${sf.platform.config.dir}/platform_props.ant.xml" optional="true"/>
<!-- import common properties/targets/references -->
<import file="../common/build.xml" />
<!-- import package references -->
<import file="${sf.platform.config.dir}/platform_refs.ant.xml" optional="true"/>
<!--
* Property defaults
-->
<!-- MattD - workaround until generating a model from package definitions works-->
<target name="sf-build-noprep" depends="sf-platform-bootstrap,sf-compile,sf-postbuild">
<echo>[SF-BUILD-NOPREP] (platform)</echo>
<echo>[SF-BUILD-NOPREP] WARNING: Not generating model from packages</echo>
</target>
<target name="sf-platform-bootstrap" depends="sf-gen-buildinfo-txt,sf-platform-bootstrap-gt,sf-platform-bootstrap-s60"/>
<target name="sf-gen-buildinfo-txt">
<mkdir dir="${build.drive}/epoc32/data/"/>
<delete file="${build.drive}/epoc32/data/BuildInfo.txt"/>
<echo file="${build.drive}/epoc32/data/BuildInfo.txt" append="true" message="DeviceFamily 100 ${line.separator}"/>
<echo file="${build.drive}/epoc32/data/BuildInfo.txt" append="true" message="DeviceFamilyRev 0x900 ${line.separator}"/>
<echo file="${build.drive}/epoc32/data/BuildInfo.txt" append="true" message="ManufacturerSoftwareBuild ${build.id}_Symbian_OS_v${sf.spec.sbs.variant} ${line.separator}"/>
</target>
<target name="sf-platform-bootstrap-gt" >
<echo>[SF-platform-bootstrap-gt]</echo>
<!-- do initial stuff to get raptor working -->
<copy todir="${build.drive}/epoc32/include/variant/" failonerror="true" verbose="true">
<fileset dir="${build.drive}/${sf.spec.bldmefirst.gt.hrh}" includes="*.hrh"/>
</copy>
<copy file="${build.drive}/${sf.spec.bldmefirst.gt.variant}" tofile="${build.drive}/epoc32/tools/variant/variant.cfg" failonerror="true" verbose="true" preservelastmodified="true" />
</target>
<target name="sf-platform-bootstrap-s60" >
<!-- Do touch on S60 variant.cfg to force raptor to export -->
<touch file="${build.drive}/${sf.spec.bldmefirst.s60.sbs.variant.cfg}" />
<delete file="${build.log.dir}/${build.id}_bldmefirst-s60.log"/>
<property name="sf.compile.bldmefirst.command.sbsexport" value="sbs EXPORT --ignore-os-detection --export-only"/>
<!-- do bldmefirst stage 1-->
<for list="${sf.spec.bldmefirst.s60.exports}" delimiter="," param="sf.spec.bldmefirst.s60.export">
<sequential>
<echo message="Performing bldmefirst export on @{sf.spec.bldmefirst.s60.export}"/>
<exec executable="cmd" dir="${build.drive}" failonerror="true" append="true" output="${build.log.dir}/${build.id}_bldmefirst-s60.log">
<arg value="/c"/>
<arg value="${sf.compile.bldmefirst.command.sbsexport}" />
<arg value="-b"/>
<arg value="${build.drive}/@{sf.spec.bldmefirst.s60.export}/bld.inf"/>
</exec>
</sequential>
</for>
<copy todir="${build.drive}/epoc32/tools/makefile_templates/s60">
<fileset dir="${build.drive}/sf/tools/makefile_templates">
<exclude name=".hg*"/>
<exclude name=".hg/**"/>
<exclude name="layers.sysdef.xml"/>
</fileset>
</copy>
</target>
<!-- workaround until GenXML can merge v2.0.0 fragments -->
<!--
This target is effectively a callback, called from compile-main.
Its responsibility is to convert the set of peices in ref "system.definition.files" into one sys def with absolute paths
However, in our builds, we know that there will only be one sysdef peice passed in, so that makes things a lot simpler
-->
<target name="create-canonical-sysdef-file">
<fail message="Symbian builds create a canonical system definition from exactly one peice">
<condition>
<resourcecount refid="system.definition.files" when="ne" count="1"/>
</condition>
</fail>
<!-- Locate the first/only item referenced -->
<for param="file">
<resources refid="system.definition.files"/>
<sequential>
<echo message="@{file}"/>
<!-- Once a property is set, it stays set - bingo! -->
<property name="sf.first.system.definition" value="@{file}"/>
</sequential>
</for>
<!-- Having located the file, copy it to the final desired location, absoluting tha paths as we go -->
<copy tofile="${canonical.sysdef.file}" file="${sf.first.system.definition}" overwrite="true" verbose="true">
<filterchain>
<replaceregex pattern="bldFile="os" replace="bldFile="/sf/os" flags="gi"/>
<replaceregex pattern="mrp="os" replace="mrp="/sf/os" flags="gi"/>
<replaceregex pattern="bldFile="mw" replace="bldFile="/sf/mw" flags="gi"/>
<replaceregex pattern="mrp="mw" replace="mrp="/sf/mw" flags="gi"/>
<replaceregex pattern="bldFile="app" replace="bldFile="/sf/app" flags="gi"/>
<replaceregex pattern="mrp="app" replace="mrp="/sf/app" flags="gi"/>
<replaceregex pattern="bldFile="tools" replace="bldFile="/sf/tools" flags="gi"/>
<replaceregex pattern="mrp="tools" replace="mrp="/sf/tools" flags="gi"/>
<replaceregex pattern="bldFile="adaptation" replace="bldFile="/sf/adaptation" flags="gi"/>
<replaceregex pattern="mrp="adaptation" replace="mrp="/sf/adaptation" flags="gi"/>
<expandproperties/>
</filterchain>
</copy>
</target>
<!--
== Name: SF-COMPILE
==
== Desc: Override of common sf-compile target defined in
== common\build.xml
==
== os build will be skipped if sf.spec.os.skipbuild=true
== s60 build will be skipped if sf.spec.s60.skipbuild=true
==
-->
<target name="sf-compile">
<!-- TODO clean up to single target once genxml v2.0.0 merge is fixed -->
<if><istrue value="${sf.spec.splitbuild}"/>
<then>
<if><istrue value="${sf.spec.os.skipbuild}" />
<then><echo message="Skipping OS build"/></then>
<else><runtarget target="sf-os-compile"/></else></if>
<if><istrue value="${sf.spec.s60.skipbuild}" />
<then><echo message="Skipping S60 build"/></then>
<else><runtarget target="sf-s60-compile"/></else></if>
</then>
<else>
<!-- TODO targets for single sysdef build -->
<runtarget target="sf-os-compile"/>
</else>
</if>
<!-- always run cenrep -->
<runtarget target="sf-s60-create-cenrep"/>
</target>
<!--
== Name: SF-OS-COMPILE
==
== Desc: Compile OS part of build using the spec defined in:
==
== - job_props.ant.xml
== - job_refs.ant.xml
==
-->
<target name="sf-os-compile">
<hlm:argSet id="sbs.tools2.var">
<hlm:arg name="config" value="tools2_rel.whatlog" />
<hlm:arg name="singlejob" value="false" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="retry-limit" value="${sf.spec.sbs.retry.limit}" />
</hlm:argSet>
<hlm:argSet id="sbs.tools2.clean.var">
<hlm:arg name="config" value="tools2_rel.whatlog" />
<hlm:arg name="singlejob" value="false" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="command" value="CLEAN --check" />
</hlm:argSet>
<hlm:argSet id="sbs.tools.var">
<hlm:arg name="config" value="tools_rel.whatlog" />
<hlm:arg name="singlejob" value="true" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="retry-limit" value="${sf.spec.sbs.retry.limit}" />
</hlm:argSet>
<hlm:argSet id="sbs.tools.clean.var">
<hlm:arg name="config" value="tools_rel.whatlog" />
<hlm:arg name="singlejob" value="true" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="command" value="CLEAN --check" />
</hlm:argSet>
<hlm:argSet id="sbs.main.sbs.var">
<hlm:arg name="config" value="${sf.spec.sbs.config}" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="retry-limit" value="${sf.spec.sbs.retry.limit}" />
</hlm:argSet>
<hlm:argSet id="sbs.main.clean.sbs.var">
<hlm:arg name="config" value="${sf.spec.sbs.config}" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="command" value="CLEAN --check" />
</hlm:argSet>
<hlm:argSet id="sbs.main.what.sbs.var">
<hlm:arg name="config" value="${sf.spec.sbs.config}" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="command" value="WHAT" />
</hlm:argSet>
<hlm:sbsMakeOptions engine="gmake" id="sbs.toolsbuild.options" />
<hlm:sbsMakeOptions engine="gmake" id="sbs.fullbuild.options" />
<!-- generate baseline dir list to allow delta creation -->
<if><isset property="sf.os.compile.fast"/>
<then>
<echo message="INFO [FAST COMPILE] Skipping baseline dir list generation"/>
</then>
<else>
<antcall target="sf-list-dir" inheritAll="false">
<param name="sf.list.name" value="baseline"/>
</antcall>
</else>
</if>
<!-- OS what -->
<!--
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" />
<param name="sysdef.configurations.list" value="${sf.spec.os.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/>
<reference refid="sbs.main.what.sbs.var" torefid="sbs.var" />
<reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.os.system.definition.files" torefid="system.definition.files" />
</antcall>
-->
<!-- OS clean main build -->
<if><istrue value="${sf.spec.baseline.clean}"/>
<then>
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" />
<param name="sysdef.configurations.list" value="${sf.spec.os.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/>
<reference refid="sbs.main.clean.sbs.var" torefid="sbs.var" />
<reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.os.system.definition.files" torefid="system.definition.files" />
</antcall>
</then>
</if>
<if><isset property="sf.os.compile.fast"/>
<then>
<echo message="INFO [FAST COMPILE] Skipping baseline vs post-clean delta generation"/>
</then>
<else>
<antcall target="sf-list-dir" inheritAll="false">
<param name="sf.list.name" value="post-clean"/>
</antcall>
<!-- what has been cleaned from baseline PDK by sos model -->
<antcall target="sf-delta-dir" inheritAll="false">
<param name="sf.list_a.name" value="baseline"/>
<param name="sf.list_b.name" value="post-clean"/>
</antcall>
</else>
</if>
<if><isset property="sf.os.compile.fast"/>
<then>
<echo message="INFO [FAST COMPILE] Skipping Tools/Tools2 builds"/>
</then>
<else>
<!-- OS tools2 build first-->
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" />
<param name="sysdef.configurations.list" value="${sf.spec.os.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/>
<reference refid="sbs.tools2.var" torefid="sbs.var" />
<reference refid="sbs.toolsbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.os.system.definition.files" torefid="system.definition.files" />
</antcall>
<antcall target="sf-list-dir" inheritAll="false">
<param name="sf.list.name" value="post-build-tools2"/>
</antcall>
<!-- OS tools build after tools2 -->
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" />
<param name="sysdef.configurations.list" value="${sf.spec.os.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/>
<reference refid="sbs.tools.var" torefid="sbs.var" />
<reference refid="sbs.toolsbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.os.system.definition.files" torefid="system.definition.files" />
</antcall>
<antcall target="sf-list-dir" inheritAll="false">
<param name="sf.list.name" value="post-build-tools"/>
</antcall>
</else>
</if>
<if><isset property="sf.os.compile.iterate"/>
<then>
<for list="${sf.spec.sbs.config}" delimiter="," param="sf.spec.sbs.splitconfig">
<sequential>
<echo message="INFO [Iterative compile] @{sf.spec.sbs.splitconfig}"/>
<hlm:argSet id="sbs.main.iterate.sbs.var">
<hlm:arg name="config" value="@{sf.spec.sbs.splitconfig}" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="retry-limit" value="${sf.spec.sbs.retry.limit}" />
</hlm:argSet>
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" />
<param name="sysdef.configurations.list" value="${sf.spec.os.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/>
<reference refid="sbs.main.iterate.sbs.var" torefid="sbs.var" />
<reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.os.system.definition.files" torefid="system.definition.files" />
</antcall>
</sequential>
</for>
</then>
<else>
<!-- OS main build -->
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="compile.sysdef.dtd.stub" value="${sf.spec.os.sysdef.dtd}" />
<param name="sysdef.configurations.list" value="${sf.spec.os.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value ="${sf.spec.os.sysdef.version}"/>
<reference refid="sbs.main.sbs.var" torefid="sbs.var" />
<reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.os.system.definition.files" torefid="system.definition.files" />
</antcall>
</else>
</if>
<if><isset property="sf.os.compile.fast"/>
<then>
<echo message="INFO [FAST COMPILE] Skipping delta and intersect list generation"/>
</then>
<else>
<antcall target="sf-list-dir" inheritAll="false">
<param name="sf.list.name" value="post-build-main"/>
</antcall>
<!-- what has been built in tools2+tools+main -->
<antcall target="sf-delta-dir" inheritAll="false">
<param name="sf.list_a.name" value="post-clean"/>
<param name="sf.list_b.name" value="post-build-main"/>
</antcall>
<!-- what has been cleaned and rebuilt -->
<antcall target="sf-intersect-dir" inheritAll="false">
<param name="sf.list_a.name" value="post-clean_delta"/> <!-- clean list -->
<param name="sf.list_b.name" value="post-build-main_delta"/> <!-- built list -->
</antcall>
<!-- what has been cleaned and not rebuilt -->
</else>
</if>
</target>
<!--
== Name: SF-S60-COMPILE
==
== Desc: Compile S60 part of build using the spec defined in:
==
== - job_props.ant.xml
== - job_refs.ant.xml
==
-->
<target name="sf-s60-compile">
<hlm:argSet id="sbs.tools.var">
<hlm:arg name="config" value="${sf.spec.sbs.tools.config}" />
<hlm:arg name="singlejob" value="true" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="retry-limit" value="${sf.spec.sbs.retry.limit}" />
</hlm:argSet>
<hlm:argSet id="sbs.tools.clean.var">
<hlm:arg name="config" value="${sf.spec.sbs.tools.config}" />
<hlm:arg name="singlejob" value="true" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
</hlm:argSet>
<hlm:argSet id="sbs.main.sbs.var">
<hlm:arg name="config" value="${sf.spec.sbs.config}" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="retry-limit" value="${sf.spec.sbs.retry.limit}" />
</hlm:argSet>
<hlm:argSet id="sbs.main.clean.sbs.var">
<hlm:arg name="config" value="${sf.spec.sbs.config}" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="command" value="CLEAN --check" />
</hlm:argSet>
<hlm:argSet id="sbs.main.what.sbs.var">
<hlm:arg name="config" value="${sf.spec.sbs.config}" />
<hlm:arg name="enable-filter" value="${sf.spec.logs.raptorfilter.enable}" />
<hlm:arg name="command" value="WHAT" />
</hlm:argSet>
<hlm:sbsMakeOptions engine="gmake" id="sbs.toolsbuild.options" />
<hlm:sbsMakeOptions engine="gmake" id="sbs.fullbuild.options" />
<antcall target="sf-list-dir" inheritAll="false">
<param name="sf.list.name" value="s60-baseline"/>
</antcall>
<!-- s60 what -->
<!--
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="sysdef.configurations.list" value="${sf.spec.s60.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value="${sf.spec.s60.sysdef.version}"/>
<reference refid="sbs.main.what.sbs.var" torefid="sbs.var" />
<reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.s60.system.definition.files" torefid="system.definition.files" />
</antcall>
-->
<!-- s60 clean main build -->
<if><istrue value="${sf.spec.baseline.clean}"/>
<then>
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="sysdef.configurations.list" value="${sf.spec.s60.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value="${sf.spec.s60.sysdef.version}"/>
<reference refid="sbs.main.clean.sbs.var" torefid="sbs.var" />
<reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.s60.system.definition.files" torefid="system.definition.files" />
</antcall>
</then>
</if>
<antcall target="sf-list-dir" inheritAll="false">
<param name="sf.list.name" value="post-s60-clean"/>
</antcall>
<!-- what has been cleaned from baseline PDK by s60 model -->
<antcall target="sf-delta-dir" inheritAll="false">
<param name="sf.list_a.name" value="s60-baseline"/>
<param name="sf.list_b.name" value="post-s60-clean"/>
</antcall>
<!-- s60 tools build -->
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="sysdef.configurations.list" value="${sf.spec.s60.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value ="${sf.spec.s60.sysdef.version}"/>
<reference refid="sbs.tools.var" torefid="sbs.var" />
<reference refid="sbs.toolsbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.s60.system.definition.files" torefid="system.definition.files" />
</antcall>
<antcall target="sf-list-dir" inheritAll="false">
<param name="sf.list.name" value="post-s60-build-tools"/>
</antcall>
<!-- s60 main build -->
<antcall target="compile-main" inheritAll="false" inheritRefs="true">
<param name="build.system" value="${sf.spec.build.system}" />
<param name="sysdef.configurations.list" value="${sf.spec.s60.sysdef.clean.configurations.list}" />
<param name="sf.spec.sysdef.version" value="${sf.spec.s60.sysdef.version}"/>
<reference refid="sbs.main.sbs.var" torefid="sbs.var" />
<reference refid="sbs.fullbuild.options" torefid="sbs.make.options" />
<reference refid="sf.spec.s60.system.definition.files" torefid="system.definition.files" />
</antcall>
<antcall target="sf-list-dir" inheritAll="false">
<param name="sf.list.name" value="post-s60-build-main"/>
</antcall>
<!-- what has been built by tools+2+main -->
<antcall target="sf-delta-dir" inheritAll="false">
<param name="sf.list_a.name" value="s60-baseline"/>
<param name="sf.list_b.name" value="post-s60-build-main"/>
</antcall>
<!-- what has been cleaned and rebuilt -->
<antcall target="sf-intersect-dir" inheritAll="false">
<param name="sf.list_a.name" value="post-s60-clean_delta"/> <!-- clean list -->
<param name="sf.list_b.name" value="post-s60-build-main_delta"/> <!-- built list -->
</antcall>
</target>
<target name="sf-s60-create-cenrep">
<echo message="INFO Generating CenRep"/>
<exec executable="${helium.dir}/../ConfigurationTool/cli_build.cmd" dir="${build.drive}" failonerror="false" output="${build.log.dir}/${build.id}_create_cenrep.log">
<arg value="-master_conf"/>
<arg value="s60"/>
<arg value="-impl"/>
<arg value="/epoc32/rom/config/confml_data/s60"/>
<arg value="-confml"/>
<arg value="/epoc32/rom/config/confml_data/s60"/>
<arg value="-ignore_errors"/>
</exec>
<if><available file="${build.drive}/cli_build_error.log" />
<then>
<echo message="INFO CenRep error log found, moving to ${build.log.dir}" />
<move file="${build.drive}/cli_build_error.log" todir="${build.log.dir}" failonerror="false"/>
</then>
</if>
</target>
</project>