Improved diagnostic output: when the build fails because a package cannot be cloned into the build drive, it says which package and the repo source and destination.
Improved caching logic, so that it doesn't depend on network availability as much.
Improved indentation.
<?xml version="1.0"?>
<project name="run-qmake" default="all">
<target name="all" depends="sf-build-qmake,sf-build-qtextension-tools,sf-configure-orbit,sd-qmake-all-profiles"/>
<!-- Qmake needs to have been built in this environment, to generate bld.infs to built Qt itself.
Qmake.exe only exists in the source tree if its been built -->
<target name="sf-build-qmake">
<if><not><available file="${r'$'}{build.drive}/sf/mw/qt/bin/qmake.exe" type="file"/></not>
<then>
<sequential>
<#list data["//unit[@bldFile = '/sf/mw/qt/src/s60installs/deviceconfiguration']"] as unit>
<echo>INFO: Building and configuring qmake for ${unit.@bldFile}</echo>
<if>
<available file="${r'$'}{build.drive}${unit.@bldFile}" type="dir"/>
<then>
<exec executable="cmd" dir="${r'$'}{build.drive}${unit.@bldFile}" failonerror="false">
<arg value="/C"/>
<arg line="sbs -c tools2 -j 4 --logfile=${r'$'}{build.drive}/output/logs/${ant['build.id']}_compile_qmake.log"/>
</exec>
</then>
<else>
<echo message="ERROR: Directory ${r'$'}{build.drive}${unit.@bldFile} doesn't exist."/>
<fail message="Unit /sf/mw/qt/src/s60installs/deviceconfiguration is in the model, but not present on disk. Cannot build qmake!"/>
</else>
</if>
</#list>
</sequential>
</then>
</if>
</target>
<target name="sf-build-qtextension-tools">
<sequential>
<#list data["//unit[@bldFile = '/sf/mw/qtextensions/group']"] as unit>
<echo>INFO: Configuring qtextensions for ${unit.@bldFile}</echo>
<if>
<available file="${r'$'}{build.drive}${unit.@bldFile}" type="dir"/>
<then>
<exec executable="cmd" dir="${r'$'}{build.drive}${unit.@bldFile}" failonerror="false">
<arg value="/C"/>
<arg line="sbs -c tools2 -j 4 --logfile=${r'$'}{build.drive}/output/logs/${ant['build.id']}_compile_qtextensions.log"/>
</exec>
</then>
<else>
<echo message="ERROR: Directory ${r'$'}{build.drive}${unit.@bldFile} doesn't exist."/>
</else>
</if>
</#list>
</sequential>
</target>
<target name="sf-configure-orbit">
<sequential>
<#list data["//unit[@proFile = 'hb.pro']"] as unit>
<echo>Running configure.py for ${unit.@bldFile}/${unit.@proFile}</echo>
<if>
<available file="${r'$'}{build.drive}${unit.@bldFile}" type="dir"/>
<then>
<exec executable="cmd" dir="${r'$'}{build.drive}${unit.@bldFile}" failonerror="false" output="${r'$'}{build.drive}/output/logs/${ant['build.id']}_compile_hb_configure.log">
<arg value="/C"/>
<arg value="python"/>
<arg line ="configure.py --qmake-spec=symbian-sbsv2 --platform=symbian --qmake-options=MMP_RULES+=EXPORTUNFROZEN CONFIG+=sgimagelite_support DEFINES+=HB_EFFECTS_OPENVG DEFINES+=HB_FILTER_EFFECTS"/>
</exec>
<echo>INFO: Exporting Orbit mkspecs to epoc32\tools for ${unit.@bldFile}/${unit.@proFile}</echo>
<echo>INFO: Running Orbit theme installer, make install step</echo>
<exec executable="cmd" dir="${r'$'}{build.drive}${unit.@bldFile}" failonerror="false" output="${r'$'}{build.drive}/output/logs/${ant['build.id']}_install_hb_configure.log">
<arg value="/C"/>
<arg value="make install"/>
</exec>
</then>
<else>
<echo message="ERROR: Directory ${r'$'}{build.drive}${unit.@bldFile} doesn't exist."/>
</else>
</if>
</#list>
</sequential>
</target>
<target name="sd-qmake-all-profiles">
<parallel threadCount="${r'$'}{number.of.threads}">
<#list data["//unit[@proFile != 'hb.pro']"] as unit>
<sequential>
<echo>Running qmake for ${unit.@bldFile}/${unit.@proFile}</echo>
<if>
<available file="${r'$'}{build.drive}${unit.@bldFile}" type="dir"/>
<then>
<exec executable="cmd" dir="${r'$'}{build.drive}${unit.@bldFile}" failonerror="false">
<arg value="/C"/>
<arg value="qmake"/>
<!-- arg value="-listgen"/ -->
<#escape x as x?xml>
<arg line="${unit.@qmakeArgs[0]!ant['qt.qmake.default.args']}"/>
</#escape>
<arg value="${unit.@proFile?xml}"/>
</exec>
</then>
<else>
<echo message="ERROR: Directory ${r'$'}{build.drive}${unit.@bldFile} doesn't exist."/>
</else>
</if>
</sequential>
</#list>
</parallel>
</target>
</project>