<?xml version="1.0"?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

-->

<project name="Installer" basedir="." default="build">

    <!--load environment variables prefixed with env -->
    <property environment="env"/>

    <!--location of property file -->
    <property file="${basedir}/local.properties" />
    <property file="${basedir}/build.properties" description="Properties for Apache Flex SDK Installer project" />
    <property file="${basedir}/build.number"/>
	<property file="${CERT_PASSWORD_FILE}"/>

    <property name="installer.version" value="${release.version}.${build.number}"/>
    <property name="kit.prefix" value="apache-flex-sdk-installer-${installer.version}"/>
    <property name="source.kit" value="${kit.prefix}-src"/>
    <property name="binary.kit" value="${kit.prefix}-bin"/>
    <property name="LOCAL_CONFIG_FILE" value="${basedir}/src/installer/sdk-installer-config-4.0.xml" />

    <!--
        Properties are immutable so value frozen first time property is set.
        If FLEX_HOME is not set with -DFLEX_HOME=/path/to/flex/sdk on the ant command line
        use the environment variable, if it exists. Else if windows, use FLEX_HOME_WIN
        else use FLEX_HOME_MAC, which are both defined in build.properties.
    -->
    <condition property="FLEX_HOME" value="${env.FLEX_HOME}">
        <isset property="env.FLEX_HOME" />
    </condition>
    <condition property="FLEX_HOME" value="${FLEX_HOME_WIN}">
        <os family="windows"/>
    </condition>
    <condition property="FLEX_HOME" value="${FLEX_HOME_MAC}">
        <os family="mac"/>
    </condition>
    <condition property="FLEX_HOME" value="${FLEX_HOME_LINUX}">
        <os family="unix"/>
    </condition>

    <condition property="adl" value="adl.exe">
        <os family="windows"/>
    </condition>

    <condition property="adl" value="adl">
        <os family="mac"/>
    </condition>

    <condition property="runtime" value="win">
        <os family="windows"/>
    </condition>

    <condition property="runtime" value="mac">
        <os family="mac"/>
    </condition>

    <condition property="LOCAL_CONFIG_URL" value="file:///${LOCAL_CONFIG_FILE}">
        <os family="windows"/>
    </condition>
    <property name="LOCAL_CONFIG_URL" value="file://${LOCAL_CONFIG_FILE}" />
    
    <!--
        Properties are immutable so value frozen first time property is set.
        If AIR_HOME is not set on the command line with -DAIR_HOME=/path/to/air/sdk on the
        ant command line use the environment variable, if it exists. Else if windows, use
        AIR_HOME_WIN else use AIR_HOME_MAC, which are both defined in build.properties.
    -->
    <condition property="AIR_HOME" value="${env.AIR_HOME}">
        <isset property="env.AIR_HOME" />
    </condition>
    <condition property="AIR_HOME" value="${AIR_HOME_WIN}">
        <os family="windows"/>
    </condition>
    <condition property="AIR_HOME" value="${AIR_HOME_MAC}">
        <os family="mac"/>
    </condition>
    <condition property="AIR_HOME" value="${AIR_HOME_LINUX}">
        <os family="unix"/>
    </condition>

    <condition property="cert_pwd_not_found" >
		<not>
       		<available file="${CERT_PASSWORD_FILE}"/>
		</not>
    </condition>

	<condition property="KEYSTORE" value="${RELEASE_KEYSTORE_FILE}" >
		<available file="${CERT_PASSWORD_FILE}"/>
	</condition>

	<condition property="KEYSTORE" value="temp.p12" >
		<not>
			<available file="${CERT_PASSWORD_FILE}"/>
		</not>
	</condition>

    <condition property="CERT_PASSWORD" value="${TEMP_PASS_CHANGE_THIS}" >
		<not>
       		<available file="${CERT_PASSWORD_FILE}"/>
		</not>
    </condition>

    <!-- compilers -->
    <property name="ADL" value="${AIR_HOME}/bin/adl"/>
    <property name="ADT" value="${AIR_HOME}/lib/adt.jar"/>

    <!-- additional tasks - mxmlc tag -->
    <path id="flexTasks.path">
        <fileset dir="${FLEX_HOME}">
            <include name="lib/flexTasks.jar" />
            <include name="ant/lib/flexTasks.jar" />
        </fileset>
    </path>
    <taskdef resource="flexTasks.tasks" classpathref="flexTasks.path"/>

    <!--
        Optional jars but should be in place for a real release build.

        For <rat> apache-rat-0.8.jar and apache-rat-tasks-0.8.jar should be in classpath.
        See rat-report.
    -->
    <path id="anttask.classpath">
        <fileset dir="${env.ANT_HOME}/lib">
           <include name="**/apache-rat*.jar"/>
        </fileset>
        <fileset dir="${user.home}">
           <include name=".ant/lib/**/apache-rat*.jar"/>
        </fileset>
    </path>

    <!-- AIR package extension -->
    <condition property="extension" value="exe">
        <os family="windows" />
    </condition>
    <condition property="extension" value="dmg">
        <os family="mac" />
    </condition>
    <condition property="extension" value="deb">
        <os family="unix" />
    </condition>

    <target name="build" depends="init,certificate,compile,packagenative,cleanup"
        description="Compiles and packages application"/>

    <target name="release" depends="clean,build,source-package,rat-report,sign,copy-misc"
        description="Build the application and package up the distros for release."/>

    <target name="init" depends="clean,createDirs,update-version-in-xml-files"
        description="Creates the deploy folders and sets app extension"/>

    <target name="clean" description="Cleans up old files.">
        <delete dir="${BUILD_DIR}" failOnError="false" includeEmptyDirs="true" />
        <delete dir="${LIBRARY_DIR}" failOnError="false" includeEmptyDirs="true" />
        <delete dir="${RELEASE_DIR}" failOnError="false" includeEmptyDirs="true" />
        <delete file="${basedir}/rat.report" failOnError="false"/>
    </target>

    <target name="cleanup" description="Cleans up old files." unless="no.cleanup">
        <delete dir="${BUILD_DIR}" failOnError="false" includeEmptyDirs="true" />
    </target>

    <target name="createDirs">
        <echo>***************************************${line.separator}Execute the update-version target once,${line.separator}and only once, when you modifiy this app.${line.separator}This will increment the version number to allow${line.separator}the app to be updated by the AIR installer.${line.separator}***************************************
        </echo>
        <mkdir dir="${BUILD_DIR}"/>
        <mkdir dir="${RELEASE_DIR}"/>
    </target>

    <!-- Make sure version, esp, build.number, in APP_NAME-app.xml is in sync.  -->
    <target name="update-version-in-xml-files" description="Update version in APP_NAME-app.xml.">
        <echo message="version in ${APP_NAME}-app.xml will be ${installer.version}"/>
        <replaceregexp byline="true">
            <regexp pattern="&lt;versionNumber&gt;(\d+\.)?(\d+\.)?(\d+)&lt;/versionNumber&gt;"/>
            <substitution expression="&lt;versionNumber&gt;${installer.version}&lt;/versionNumber&gt;"/>
            <fileset dir="${SOURCE_DIR}">
                <include name="${APP_NAME}-app.xml"/>
            </fileset>
        </replaceregexp>
		<replaceregexp byline="true">
            <regexp pattern="&lt;latest&gt;(\d+\.)?(\d+\.)?(\d+)&lt;/latest&gt;"/>
            <substitution expression="&lt;latest&gt;${installer.version}&lt;/latest&gt;"/>
            <fileset dir="${SOURCE_DIR}">
                <include name="${APP_CONFIG_XML_NAME}.xml"/>
            </fileset>
        </replaceregexp>
    </target>

    <!--
        Run this target once, and then rebuild, when you make a change to this app
        so that the AIR Installer will allow the app to be updated. The build.number
        property in the file build.property will be read and then incremented and the
        nano version number in the <version> tag in InstallApacheFlex-app.xml will be
        updated.
    -->
    <target name="update-version" description="Update the app version number so the installer will be updated.">
         <tstamp>
            <format property="touch.year" pattern="yyyy"/>
        </tstamp>

        <propertyfile file="build.number"
            comment="Copyright ${touch.year} The Apache Software Foundation.">
            <entry key="build.number" type="int" default="0" operation="+"/>
        </propertyfile>

    </target>

    <target name="packagenative" depends="packageair"
       description="Packages the AIR file from the build directory to create a native installer (exe/dmg) file">

       <java jar="${ADT}" fork="true"
           failonerror="true"
           maxmemory="512m">
           <arg value="-package"/>
           <arg value="-target"/>
           <arg value="native"/>
		   <arg value="${RELEASE_DIR}/${binary.kit}.${extension}"/>
           <arg value="${BUILD_DIR}/${APP_NAME}.air"/>
       </java>
   </target>

    <target name="check-as3commons.swc">
        <available file="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc" property="as3commons.swc.present"/>
    </target>

    <!-- This has a BSD license which is a reciprocal license with the Apache v2 license.  -->
    <target name="get-as3commons.swc" depends="check-as3commons.swc" unless="as3commons.swc.present"
        description="Download as3commons.swc and fail if checksum mismatch.">
        <mkdir dir="${LIBRARY_DIR}"/>
        <get src="http://projects.yoolab.org/maven/content/repositories/releases/org/as3commons/as3commons-zip/1.0.0-alpha.1/as3commons-zip-1.0.0-alpha.1.swc"
            dest="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc"
            verbose="true"/>
        <get src="http://projects.yoolab.org/maven/content/repositories/releases/org/as3commons/as3commons-zip/1.0.0-alpha.1/as3commons-zip-1.0.0-alpha.1.swc.md5"
            dest="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc.md5"
            verbose="true"/>
        <checksum file="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc" algorithm="md5" verifyProperty="isMD5ok"/>
        <delete file="${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc.md5" failOnError="false"/>
        <fail message="Checksum failure for ${LIBRARY_DIR}/as3commons-zip-1.0.0-alpha.1.swc">
            <condition>
                <isfalse value="${isMD5ok}"/>
            </condition>
        </fail>
    </target>

    <target name="compile" depends="get-as3commons.swc"
        description="Compiles the AIR application to a SWF file and places SWF in a temp directory to be packaged.">
        <mxmlc file="${SOURCE_DIR}/${APP_NAME}.${APP_EXTENSION}"
            output="${BUILD_DIR}/${APP_NAME}.swf"
            static-rsls="true"
            accessible="true"
            configname="air"
            debug="${DEBUG_FLAG}"
            failonerror="true"
            fork="true"
            link-report="${BUILD_DIR}/${APP_NAME}.lnk.xml"
            maxmemory="512m">
            <source-path path-element="${SOURCE_DIR}"/>
            <source-path path-element="${COMMON_SOURCE_DIR}"/>
            <external-library-path file="${AIR_HOME}/frameworks/libs/air/airglobal.swc" append="true"/>
            <library-path dir="${LIBRARY_DIR}" includes="*.swc" append="true"/>
            <library-path dir="${ANT_ON_AIR_DIR}" includes="*.swc" append="true"/>
            <define name="INSTALLER::releaseVersion" value="${release.version}"/>
            <define name="INSTALLER::buildNumber" value="${build.number}"/>
        </mxmlc>
    </target>

    <!-- Make sure to use the same certificate each time so we can update the app. -->
    <target name="certificate" if="cert_pwd_not_found">
        <antcall target="generate-certificate"/>
    </target>

    <target name="generate-certificate">
    	<echo message="Using cert ${KEYSTORE}" />
        <java jar="${ADT}" fork="true"
            failonerror="true">
            <arg value="-certificate"/>
            <arg value="-cn"/>
            <arg value="${CERT_NAME}"/>
            <arg value="-ou"/>
            <arg value="${CERT_ORG_UNIT}"/>
            <arg value="-o"/>
            <arg value="${CERT_ORG_NAME}"/>
            <arg value="-c"/>
            <arg value="${CERT_COUNTRY}"/>
            <arg value="${CERT_KEY_TYPE}"/>
            <arg value="${KEYSTORE}"/>
            <arg value="${CERT_PASSWORD}"/>
        </java>
    </target>

    <target name="packageair"
        description="Packages the build SWF file from a temp directory to create an AIR file">
    	<echo message="Using cert ${KEYSTORE}" />
        <java jar="${ADT}" fork="true"
            failonerror="true"
            maxmemory="512m">
            <arg value="-package"/>
            <arg value="-storetype"/>
            <arg value="${STORETYPE}"/>
            <arg value="-keystore"/>
            <arg value="${KEYSTORE}"/>
            <arg value="-storepass"/>
            <arg value="${CERT_PASSWORD}"/>
            <arg value="${BUILD_DIR}/${APP_NAME}.air"/>
            <arg value="${SOURCE_DIR}/${APP_NAME}-app.xml"/>
            <arg value="-C"/>
            <arg value="${BUILD_DIR}"/>
            <arg value="${BUILD_DIR}/${APP_NAME}.swf"/>
            <arg value="-C"/>
            <arg value="${SOURCE_DIR}"/>
            <arg value="${SOURCE_DIR}/${APP_CONFIG_XML_NAME}.xml"/>
            <arg value="${ASSETS_DIR}"/>
        </java>
    </target>

	<target name="copy-misc" description="Copy config files to release directory">
		<copy file="${basedir}/README" tofile="${RELEASE_DIR}/READme"/>
	</target>

    <!--
        Packages the source distribution with ZIP and TAR_GZIP.
        The source file line endings match the package type.
    -->
    <target name="source-package" description="Package source files.">
        <mkdir dir="${BUILD_DIR}/temp"/>
        <copy todir="${BUILD_DIR}/temp/${COMMON_PROJECT_NAME}" includeEmptyDirs="false">
			<fileset dir="${COMMON_PROJECT_DIR}">
				<exclude name="*.p12"/>
				<exclude name="*.password"/>
                <exclude name="rat.report"/>
                <exclude name="libs/**"/>
				<exclude name="bin/**"/>
				<exclude name="bin-debug/**"/>
                <exclude name="release/**"/>
				<exclude name=".settings/**"/>
				<exclude name="**/.actionScriptProperties"/>
                <exclude name="**/.flexProperties"/>
				<exclude name="**/.flexLibProperties"/>
                <exclude name="**/.project"/>
                <exclude name="**/.idea/**"/>
            </fileset>
        </copy>

        <copy todir="${BUILD_DIR}/temp/ant_on_air" includeEmptyDirs="false">
            <fileset dir="${basedir}/../ant_on_air">
                <include name="build.properties" />
                <include name="build.xml" />
            </fileset>
        </copy>
        <copy todir="${BUILD_DIR}/temp/ant_on_air/src" includeEmptyDirs="false">
            <fileset dir="${basedir}/../ant_on_air/src">
            </fileset>
        </copy>
        <copy todir="${BUILD_DIR}/temp/ant_on_air/locale" includeEmptyDirs="false">
            <fileset dir="${basedir}/../ant_on_air/locale">
            </fileset>
        </copy>
        <copy todir="${BUILD_DIR}/temp/ant_on_air/tests" includeEmptyDirs="false">
            <fileset dir="${basedir}/../ant_on_air/tests">
                <exclude name="*.swf" />
            </fileset>
        </copy>

        <copy todir="${BUILD_DIR}/temp/${INSTALLER_PROJECT_NAME}" includeEmptyDirs="false">
			<fileset dir="${basedir}">
				<exclude name="*.p12"/>
				<exclude name="*.password"/>
                <exclude name="rat.report"/>
                <exclude name="libs/**"/>
				<exclude name="bin/**"/>
				<exclude name="bin-debug/**"/>
				<exclude name="build/**"/>
                <exclude name="release/**"/>
				<exclude name="rc/**"/>
				<exclude name=".settings/**"/>
				<exclude name="**/.actionScriptProperties"/>
                <exclude name="**/.flexProperties"/>
				<exclude name="**/.flexLibProperties"/>
                <exclude name="**/.project"/>
                <exclude name="**/.idea/**"/>
				<exclude name="local.properties"/>
				<!-- These are bumped up to the top-level release directory.  -->
                <exclude name="DISCLAIMER"/>
                <exclude name="LICENSE"/>
                <exclude name="NOTICE"/>
                <exclude name="README"/>
                <exclude name="RELEASE_GUIDE"/>
                <exclude name="RELEASE_NOTES"/>
			</fileset>
        </copy>

		<!-- Bump these up to the top-level release directory.  -->
		<copy todir="${BUILD_DIR}/temp" includeEmptyDirs="false">
			<fileset dir="${basedir}">
                <include name="DISCLAIMER"/>
                <include name="LICENSE"/>
                <include name="NOTICE"/>
                <include name="README"/>
                <include name="RELEASE_GUIDE"/>
                <include name="RELEASE_NOTES"/>
			</fileset>
        </copy>

        <fixcrlf srcdir="${BUILD_DIR}/temp" eol="crlf" encoding="UTF8" excludes="**/assets/**,**/*.ttf,**/*.png" fixlast="false"/>

        <mkdir dir="${RELEASE_DIR}"/>
        <zip destfile="${RELEASE_DIR}/${source.kit}.zip"
            basedir="${BUILD_DIR}/temp"/>

        <fixcrlf srcdir="${BUILD_DIR}/temp" eol="unix" encoding="UTF8" excludes="**/assets/**,**/*.ttf,**/*.png" fixlast="false"/>

        <tar destfile="${RELEASE_DIR}/${source.kit}.tar.gz"
            compression="gzip"
            basedir="${BUILD_DIR}/temp"/>

        <delete dir="${BUILD_DIR}/temp"/>
		<delete dir="${BUILD_DIR}"/>
    </target>

    <!--
        Packages the binary distribution with ZIP and TAR_GZIP.
    -->
    <target name="binary-package" description="Package binary files.">
        <mkdir dir="${RELEASE_DIR}"/>

        <zip destfile="${RELEASE_DIR}/${binary.kit}.zip">
            <fileset dir="${basedir}/release">
                <exclude name="**/*.zip"/>
                <exclude name="**/*.tar*"/>
            </fileset>
        </zip>

        <tar destfile="${RELEASE_DIR}/${binary.kit}.tar.gz" compression="gzip">
          <zipfileset src="${RELEASE_DIR}/${binary.kit}.zip"/>
        </tar>
    </target>

	<!--
	    Run the Apache Rat audit tool against the source in the source kit.
	    The report is written to rat.report.

	    You need to place apache-rat-tasks-0.8.jar and apache-rat-0.8.jar in the
	    anttask.classpath in order to do this.  If the jar isn't found, the report
	    will not be generated.
	-->
    <target name="rat-report" depends="rat-taskdef" if="have.rattasks"
        description="Report on licenses in source kit.">

        <!-- Unzip the source kit -->
        <unzip src="${RELEASE_DIR}/${source.kit}.zip" dest="${RELEASE_DIR}/temp"/>

        <property name="rat.dir" value="${RELEASE_DIR}/temp"/>

        <echo message="Checking files at ${rat.dir}, report is ${basedir}/rat.report"/>

        <rat:report xmlns:rat="antlib:org.apache.rat.anttasks"
            reportFile="${basedir}/rat.report">
            <fileset dir="${rat.dir}">
                <exclude name="**/Apache License Version 2.txt"/>
                <!--          Start of source files           -->
                <!-- Apache Category A: Authorized Licenses -->
                <!-- "New BSD License" aka Modified BSD License" aka "BSD 3-Clause License" -->
                <exclude name="${INSTALLER_PROJECT_NAME}/src/com/adobe/crypto/MD5Stream.as"/>
                <exclude name="${INSTALLER_PROJECT_NAME}/src/com/adobe/utils/IntUtil.as"/>
                <!-- generated source files that don't have Apache v2 license header -->
                <exclude name="**/build.number"/>
                <exclude name="**/.actionScriptProperties"/>
                <exclude name="**/.flexProperties"/>
				<exclude name="**/.flexLibProperties"/>
                <exclude name="**/.project"/>
                <exclude name="**/.fxpProperties"/>
                <exclude name="**/.settings/**"/>
                <exclude name="**/.idea/**"/>
                <exclude name="**/*.iml"/>
                <!--          End of source files           -->
                <!--          Start of binary files           -->
                <!-- exclude media (png, ico) -->
                <exclude name="**/*.ico"/>
                <exclude name="**/*.png"/>
                <!-- exclude fonts -->
                <exclude name="**/*.ttf"/>
                <!--          End of binary files           -->
            </fileset>
        </rat:report>

        <delete dir="${RELEASE_DIR}/temp" failOnError="false"/>
    </target>

    <target name="rat-taskdef" description="Rat taskdef">
        <available property="have.rattasks"
            resource="org/apache/rat/anttasks/antlib.xml"
            classpathref="anttask.classpath"/>

        <antcall target="have-rattasks"/>
        <antcall target="no-rattasks"/>
    </target>

    <target name="have-rattasks" if="have.rattasks">
        <typedef resource="org/apache/rat/anttasks/antlib.xml"
                 uri="antlib:org.apache.rat.anttasks"
                 classpathref="anttask.classpath"/>
    </target>

    <target name="no-rattasks" unless="have.rattasks">
        <echo message="Rat report not generated."/>
        <echo message="rat jars (apache-rat-*.jar, apache-rat-tasks-*.jar)"/>
        <echo message="not found in anttask.classpath"/>
    </target>

	<target name="sign" >
		<checksum file="${RELEASE_DIR}/${source.kit}.zip" algorithm="md5" forceOverwrite="yes" />

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${RELEASE_DIR}/${source.kit}.zip.asc" />
			<arg value="--detach-sig" />
			<arg value="${RELEASE_DIR}/${source.kit}.zip" />
		</exec>

		<checksum file="${RELEASE_DIR}/${source.kit}.tar.gz" algorithm="md5" forceOverwrite="yes" />

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${RELEASE_DIR}/${source.kit}.tar.gz.asc" />
			<arg value="--detach-sig" />
			<arg value="${RELEASE_DIR}/${source.kit}.tar.gz" />
		</exec>

		<checksum file="${RELEASE_DIR}/${binary.kit}.${extension}" algorithm="md5" forceOverwrite="yes" />

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${RELEASE_DIR}/${binary.kit}.${extension}.asc" />
			<arg value="--detach-sig" />
			<arg value="${RELEASE_DIR}/${binary.kit}.${extension}" />
		</exec>
	</target>

	<target name="sign_exe" description="sign exe when on mac" >
		<checksum file="${RELEASE_DIR}/${binary.kit}.exe" algorithm="md5" forceOverwrite="yes" />

		<exec executable="gpg">
			<arg value="--armor" />
			<arg value="--output" />
			<arg value="${RELEASE_DIR}/${binary.kit}.exe.asc" />
			<arg value="--detach-sig" />
			<arg value="${RELEASE_DIR}/${binary.kit}.exe" />
		</exec>
	</target>

    <target name="debug" >
        <copy file="${SOURCE_DIR}/${APP_NAME}-app.xml" todir="${BUILD_DIR}" />
        <mkdir dir="${BUILD_DIR}/installer" />
        <exec executable="${AIR_HOME}/bin/${adl}" dir="${BUILD_DIR}" failonerror="true">
            <arg value="-runtime" />
            <arg value="${AIR_HOME}/runtimes/air/${runtime}" />
            <arg value="${BUILD_DIR}/${APP_NAME}-app.xml" />
            <arg value="--" />
            <arg value="-config=${LOCAL_CONFIG_URL}" />
        </exec>
    </target>

    <target name="debug-locale" >
        <copy file="${SOURCE_DIR}/${APP_NAME}-app.xml" todir="${BUILD_DIR}" />
        <mkdir dir="${BUILD_DIR}/installer" />
        <exec executable="${AIR_HOME}/bin/${adl}" dir="${BUILD_DIR}" failonerror="true">
            <arg value="-runtime" />
            <arg value="${AIR_HOME}/runtimes/air/${runtime}" />
            <arg value="${BUILD_DIR}/${APP_NAME}-app.xml" />
            <arg value="--" />
            <arg value="-config=${LOCAL_CONFIG_URL}" />
            <arg value="-language=${TEST_LOCALE}" />
        </exec>
    </target>

    <target name="debug-for-real" >
        <copy file="${SOURCE_DIR}/${APP_NAME}-app.xml" todir="${BUILD_DIR}" />
        <mkdir dir="${BUILD_DIR}/installer" />
        <exec executable="${AIR_HOME}/bin/${adl}" dir="${BUILD_DIR}" failonerror="true">
            <arg value="-runtime" />
            <arg value="${AIR_HOME}/runtimes/air/${runtime}" />
            <arg value="${BUILD_DIR}/${APP_NAME}-app.xml" />
        </exec>
    </target>
</project>
