<?xml version="1.0"?>
<project name="run-qmake" default="all">

    <target name="all" depends="sf-build-qmake,sf-build-qtmobility-tools,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-qtmobility-tools">
        <sequential>
  <#list data["//unit[@bldFile = '/sf/mw/qtmobility/group']"] as unit>
            <echo>INFO: Configuring qtmobility 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_qtmobility.log"/>
                    </exec>
                </then>
                <else>
                    <echo message="ERROR: Directory ${r'$'}{build.drive}${unit.@bldFile} doesn't exist."/>
                </else>
            </if>          
  </#list>
        </sequential>
    </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>
