sf-platform/build.xml
author Simon Howkins <simonh@symbian.org>
Wed, 15 Jul 2009 13:30:58 +0100
changeset 247 cfde8b1784f7
parent 241 c451bd0c0782
child 260 13596dc42a47
permissions -rw-r--r--
Simplified the locations of some generated files, so they are created where they need to be rather than created on one place and moved to another. Zipping of binaries now assumes that there's always an rnd exclude file, as it is always created by populateziptemplate.pl, even if there's nothing put into it.

<?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}"/>

  <!--
  * Property defaults
   -->

  <!-- workaround until GenXML can merge v2.0.0 fragments -->
  <target name="create-canonical-sysdef-file">

    <runtarget target="preprocess-sysdef-files"/>
    <echo message="Exporting preprocessed System Definition"/>
    <if><istrue value="${sf.spec.splitbuild}"/>
       <then>
       <if><istrue value="${sf.spec.os.skipbuild}" />
            <then><echo message="Skipping OS sysdef creation"/></then>
       <else>
            <!-- TODO use better method to export or wait for GenXML fix?-->
            <copy file="${build.output.dir}\build\input\0000000000000001_system_model_os.xml"
            tofile="${canonical.sysdef.file}" failonerror="false" verbose="true"/>
       </else>
       </if>

       <if><istrue value="${sf.spec.s60.skipbuild}" />
            <then><echo message="Skipping S60 sysdef creation"/></then>
       <else>
            <!-- TODO use better method to export or wait for GenXML fix?-->
            <copy file="${build.output.dir}\build\input\0000000000000001_system_model_s60.xml"
            tofile="${canonical.sysdef.file}" failonerror="false" verbose="true"/>
	   </else>
	   </if>
	   </then>
	
	<else>
	    <!-- TODO use better method to export or wait for GenXML fix?-->
        <copy file="${build.output.dir}\build\input\0000000000000001_system_model_os.xml"
        tofile="${canonical.sysdef.file}" failonerror="false" verbose="true"/>

	    <!-- TODO targets for single sysdef build -->
	    <runtarget target="sf-os-compile"/>
	</else>
        </if>

  </target>

  <!--
    == Name: PREPROCESS-SYSDEF-FILES
    ==
    == Desc: Override of default target in order to deal with symbian os
    ==       system_definition.xml that does not have /sf source prefix
    ==
    ==       TODO get this moved as a Helium core target?
    -->
  <target name="preprocess-sysdef-files">
        <mkdir dir="${build.output.dir}/build/input"/>
        <delete verbose="true">
            <fileset dir="${build.output.dir}/build/input/" includes="**"/>
        </delete>

        <for param="file">
            <resources refid="system.definition.files"/>
            <sequential>
                <copy todir="${build.output.dir}/build/input" verbose="true">
                    <fileset file="@{file}"/>
                    <filterchain>
                        <replaceregex pattern="bldFile=&quot;os" replace="bldFile=&quot;sf\\\\os" flags="gi"/>
                        <replaceregex pattern="mrp=&quot;os" replace="mrp=&quot;sf\\\\os" flags="gi"/>
                        <replaceregex pattern="bldFile=&quot;mw" replace="bldFile=&quot;sf\\\\mw" flags="gi"/>
                        <replaceregex pattern="mrp=&quot;mw" replace="mrp=&quot;sf\\\\mw" flags="gi"/>
                        <replaceregex pattern="bldFile=&quot;app" replace="bldFile=&quot;sf\\\\app" flags="gi"/>
                        <replaceregex pattern="mrp=&quot;app" replace="mrp=&quot;sf\\\\app" flags="gi"/>
                        <replaceregex pattern="bldFile=&quot;tools" replace="bldFile=&quot;sf\\\\tools" flags="gi"/>
                        <replaceregex pattern="mrp=&quot;tools" replace="mrp=&quot;sf\\\\tools" flags="gi"/>
                        <replaceregex pattern="bldFile=&quot;adaptation" replace="bldFile=&quot;sf\\\\adaptation" flags="gi"/>
                        <replaceregex pattern="mrp=&quot;adaptation" replace="mrp=&quot;sf\\\\adaptation" flags="gi"/>
                        
                        <expandproperties/>
                    </filterchain>
                    <mapper>
                        <scriptmapper language="jep" src="${helium.dir}/tools/common/jep/unique_filename.jep"/>
                    </mapper>
                </copy>
            </sequential>
        </for>
    </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>
  </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: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: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: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 -->
		<antcall target="sf-list-dir" inheritAll="false">
			<param name="sf.list.name" value="baseline"/>
		</antcall>

		<!-- 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>
		
		<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>		
		
        <!-- 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>
		
        <!-- 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>
		
		<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 -->
		
  </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: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: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>
			
			<runtarget target="sf-s60-create-cenrep"/>
			
			<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>

  <!-- import sf-common-config -->
  <import file="../common/build.xml" />

</project>