<!--
  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="tlf" default="main" basedir=".">
  <property file="${basedir}/env.properties"/>
  <property environment="env"/>
  <property file="${basedir}/build.properties"/>
  <!-- Specify a FLEX_HOME in local.properties or
         Override on cmd line with -D=FLEX_HOME=path. -->
  <!--<property file="${basedir}/local.properties"/>-->
  <!-- Default Flex SDK is the trunk.  Override on cmd line with -D=FLEX_HOME=path. -->
  <condition property="FLEX_HOME" value="${env.FLEX_HOME}">
    <available file="${env.FLEX_HOME}/lib/compc.jar" type="file" />
  </condition>
  <condition property="FLEX_HOME" value="${basedir}/../flex-sdk">
    <available file="${basedir}/../flex-sdk/lib/compc.jar" type="file" />
  </condition>
  <echo>FLEX_HOME is ${FLEX_HOME}</echo>
  <echo>Minimal test is set ${minimalTests}</echo>
  <property name="flex.sdk.frameworks" value="${FLEX_HOME}/frameworks"/>
  <property name="flex.locale" value="en_US"/>
  <property name="output.dir" value="bin"/>
  <property name="output.docs" value="${FLEX_HOME}/tempDoc"/>
  <property name="project.uri" value="library://ns.adobe.com/flashx/textLayout"/>
  <property name="compc.jvm.args" value="-Xmx384m"/>
  <property name="textLayout.namespace" value="flashx.textLayout"/>
  <property name="asTestApps.dir" value="${basedir}/asTestApps"/>
  <property name="textLayout.dir" value="${basedir}/textLayout"/>
  <property name="textLayout_editBar.dir" value="${basedir}/sdk/samples/flex/textLayout_editBar"/>
  <property name="textLayout_ui.dir" value="${basedir}/sdk/samples/flex/textLayout_ui"/>
  <property name="testApps.dir" value="${basedir}/testApps"/>
  <property name="automation_core.dir" value="${basedir}/automation_core"/>
  <property name="automation_tests.dir" value="${basedir}/automation_tests"/>
  <property name="automation_apps.dir" value="${basedir}/automation_apps"/>
  <property name="test.dir" value="${basedir}/test"/>
  <property name="dbg" value="false"/>
  <property name="rel" value="true"/>
  <property name="flexdebug" value="${flexdebug}"/>
  <condition property="digest" value="false" else="true">
    <istrue value="${debug}"/>
  </condition>
  <!-- for Flex tags suchs as mxmlc and compc -->
  <path id="flexTasks.path">
    <fileset dir="${FLEX_HOME}">
      <include name="lib/flexTasks.jar"/>
    </fileset>
  </path>
  <taskdef resource="flexTasks.tasks" classpathref="flexTasks.path"/>
  <taskdef resource="flexUnitTasks.tasks">
    <classpath>
      <fileset dir="${basedir}">
        <include name="ant/flexUnitTasks.jar"/>
      </fileset>
    </classpath>
  </taskdef>
  <target name="all" depends="main, asTestApps,textLayout_editBar, textLayout_ui, testApps, automation_core, automation_tests, automation_apps, test" description="Clean build of TLF component and associated applications"/>
  <target name="main" depends="clean,textLayout" description="Clean build of textLayout.swc"/>
  <target name="clean" description="Cleans all SWCs and SWFs">
    <delete failonerror="false">
      <fileset dir="${output.dir}">
			</fileset>
    </delete>
    <delete dir="${basedir}/bin"/>
    <delete file="${basedir}/bundles.properties"/>
  </target>
  <target name="textLayout" description="Compiles textLayout.swc">
    <compc fork="true" output="${output.dir}/textLayout.swc" compute-digest="true" include-classes="flashx.textLayout.CoreClasses flashx.textLayout.EditClasses flashx.textLayout.ConversionClasses">
      <jvmarg line="${compc.jvm.args}"/>
      <keep-as3-metadata>IMXMLObject</keep-as3-metadata>
      <include-namespaces uri="${project.uri}"/>
      <namespace uri="${project.uri}" manifest="${textLayout.dir}/manifest.xml"/>
      <source-path path-element="${textLayout.dir}/src"/>
      <library-path/>
      <include-file name="manifest.xml" path="${textLayout.dir}/manifest.xml"/>
      <static-link-runtime-shared-libraries/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
      <compiler.debug>${flexdebug}</compiler.debug>
    </compc>
  </target>
  <target name="textLayout_flex" description="Compiles textLayout.swc for Flex SDK">
    <compc fork="true" output="${output.dir}/textLayout.swc">
      <jvmarg line="${compc.jvm.args}"/>
      <load-config filename="compile-config.xml"/>
      <arg value="+playerglobal.version=${playerglobal.version}"/>
      <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}"/>
      <arg value="+source.dir=textLayout"/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
      <compiler.debug>${flexdebug}</compiler.debug>
    </compc>
  </target>
  <target name="documentation" depends="textLayout" description="Updates textLayout.swc with ASDoc XML">
    <condition property="asdoc.jvm.args" value="-Xmx384m">
      <os family="windows"/>
    </condition>
    <condition property="asdoc.jvm.args" value="-Xmx512m">
      <os family="mac"/>
    </condition>
    <condition property="asdoc.jvm.args" value="-Xmx512m">
      <os family="unix"/>
    </condition>
    <delete failonerror="false">
      <fileset dir="${output.docs}">
        <include name="validation_errors.log"/>
      </fileset>
    </delete>
    <!-- builds ASDoc XML -->
    <delete dir="${output.docs}\tempdita" failonerror="false" includeEmptyDirs="true"/>
    <asdoc output="${output.docs}" lenient="false" failonerror="true" keep-xml="true" skip-xsl="true" fork="true">
      <doc-classes class="flashx.textLayout.CoreClasses"/>
      <doc-classes class="flashx.textLayout.EditClasses"/>
      <doc-classes class="flashx.textLayout.ConversionClasses"/>
      <compiler.source-path path-element="src"/>
      <external-library-path dir="${output.dir}/textLayout.swc"/>
      <doc-namespaces uri="${project.uri}"/>
      <namespace uri="${project.uri}" manifest="manifest.xml"/>
      <jvmarg line="${asdoc.jvm.args}"/>
      <static-link-runtime-shared-libraries/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
    </asdoc>
    <available file="${output.docs}/validation_errors.log" property="asdoc.errors"/>
    <fail if="asdoc.errors" message="ASDoc Errors"/>
  </target>
  <target name="textLayout_editBar" description="Builds textLayout_editBar.swc">
    <compc fork="${forkValue}" output="${output.dir}/apps/testApps/bin/textLayout_editBar.swc" include-classes="EditBarClasses" compute-digest="${digest}">
      <source-path path-element="${textLayout_editBar.dir}/src"/>
      <jvmarg line="${jvm.args}"/>
      <library-path/>
      <external-library-path dir="${output.dir}" includes="textLayout.swc" append="true"/>
      <!-- <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="flex.swc" append="true"/> -->
      <!-- for Flex SDK 4.0 -->
      <external-library-path dir="${flex.sdk.frameworks}/libs/mx/" includes="mx.swc" append="true"/>
      <!-- for Flex SDK 4.5 -->
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="framework.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="rpc.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="framework_rb.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="rpc_rb.swc" append="true"/>
      <static-link-runtime-shared-libraries/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
      <compiler.debug>${flexdebug}</compiler.debug>
    </compc>
  </target>
  <target name="textLayout_ui" description="Builds textLayout_ui.swc">
    <compc fork="${forkValue}" output="${output.dir}/apps/testApps/bin/textLayout_ui.swc" include-classes="${textLayout.namespace}.UiClasses,bxf.BxfClasses" compute-digest="${digest}">
      <source-path path-element="${textLayout_ui.dir}/src"/>
      <jvmarg line="${jvm.args}"/>
      <library-path/>
      <external-library-path dir="${flex.sdk.frameworks}/libs/mx/" includes="mx.swc" append="true"/>
      <!-- for Flex SDK 4.5 -->
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="framework.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="rpc.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="framework_rb.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="rpc_rb.swc" append="true"/>
      <external-library-path dir="${output.dir}" includes="textLayout.swc" append="true"/>
      <static-link-runtime-shared-libraries/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
      <compiler.debug>${flexdebug}</compiler.debug>
    </compc>
  </target>
  <target name="testApps" description="Builds TLF test application">
    <mxmlc fork="${forkValue}" file="${testApps.dir}/src/Flow.mxml" keep-generated-actionscript="false" debug="${flexdebug}" output="${output.dir}/apps/automation_apps/bin/Flow.swf">
      <default-size width="1100" height="550"/>
      <jvmarg line="${jvm.args}"/>
      <library-path/>
      <library-path dir="${output.dir}" includes="textLayout.swc" append="true"/>
      <library-path dir="${output.dir}/apps/testApps/bin" includes="textLayout_ui.swc" append="true"/>
      <library-path dir="${output.dir}/apps/testApps/bin" includes="textLayout_editBar.swc" append="true"/>
      <!-- <library-path dir="${flex.sdk.frameworks}/libs/" includes="flex.swc" append="true"/> -->
      <!-- for Flex SDK 4.0 -->
      <library-path dir="${flex.sdk.frameworks}/libs/mx/" includes="mx.swc" append="true"/>
      <!-- for Flex SDK 4.5 -->
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="mx_rb.swc" append="true"/>
      <!-- for Flex SDK 4.5 -->
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="framework.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="rpc.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="spark.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="sparkskins.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="utilities.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="framework_rb.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="rpc_rb.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="spark_rb.swc" append="true"/>
      <static-link-runtime-shared-libraries/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
    </mxmlc>
  </target>
  <target name="asTestApp" description="build a single application in asTestApp" if="output">
    <mxmlc fork="${forkValue}" file="${asTestApps.dir}/src/${output}.as" debug="${flexdebug}" output="${output.dir}/apps/asTestApps/bin/${output}.swf">
      <source-path path-element="${asTestApps.dir}/src"/>
      <jvmarg line="${jvm.args}"/>
      <default-size width="1100" height="550"/>
      <library-path/>
      <library-path dir="${output.dir}" includes="textLayout.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="flex.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="flex4.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="framework.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="rpc.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="framework_rb.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="rpc_rb.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="flex4_rb.swc" append="true"/>
      <static-link-runtime-shared-libraries/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
    </mxmlc>
  </target>
  <target name="asTestApps" description="builds some applications in asTestApps">
    <antcall target="asTestApp">
      <param name="output" value="ExplicitFormField"/>
    </antcall>
    <antcall target="asTestApp">
      <param name="output" value="TCMTestFocus2"/>
    </antcall>
    <antcall target="asTestApp">
      <param name="output" value="AliceScroll"/>
    </antcall>
    <antcall target="asTestApp">
      <param name="output" value="KeyLogger"/>
    </antcall>
    <antcall target="asTestApp">
      <param name="output" value="OpHammer"/>
    </antcall>
  </target>
  <target name="automation_core" description="Builds the automation_core.swc">
    <compc fork="${forkValue}" output="${output.dir}/apps/automation_apps/bin/automation_core.swc" include-classes="AutomationCoreClasses">
      <source-path path-element="${automation_core.dir}/src"/>
      <jvmarg line="${jvm.args}"/>
      <library-path/>
      <external-library-path dir="${output.dir}" includes="textLayout.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/libs/mx/" includes="mx.swc" append="true"/>
        <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="rpc.swc" append="true"/>
      <!-- for Flex SDK 4.5 -->
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="framework.swc" append="true"/>
      <!-- External swcs -->
      <external-library-path dir="${basedir}/libs/" includes="flexunit.swc" append="true"/>
      <static-link-runtime-shared-libraries/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
    </compc>
  </target>
  <target name="automation_tests" description="Builds the automation_tests.swc">
    <compc fork="${forkValue}" output="${output.dir}/apps/automation_apps/bin/automation_tests.swc" include-classes="AutomationTestClasses">
      <source-path path-element="${automation_tests.dir}/src"/>
      <jvmarg line="${jvm.args}"/>
      <library-path/>
      <external-library-path dir="${output.dir}" includes="textLayout.swc" append="true"/>
      <external-library-path dir="${output.dir}/apps/automation_apps/bin" includes="automation_core.swc" append="true"/>
      <external-library-path dir="${basedir}/libs" includes="flexunit.swc" append="true"/>
      <!-- External swcs -->
      <external-library-path dir="${flex.sdk.frameworks}/libs/mx/" includes="mx.swc" append="true"/>
      <!-- for Flex SDK 4.5 -->
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="framework.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="rpc.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="spark.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="sparkskins.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/libs/" includes="utilities.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="framework_rb.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="rpc_rb.swc" append="true"/>
      <external-library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="spark_rb.swc" append="true"/>
      <static-link-runtime-shared-libraries/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
    </compc>
  </target>
  <target name="automation_apps" description="Builds the automation test application">
    <mxmlc fork="${forkValue}" file="${automation_apps.dir}/src/VellumUnit.mxml" debug="${flexdebug}" output="${output.dir}/apps/automation_apps/bin/VellumUnit.swf">
      <jvmarg line="${jvm.args}"/>
      <library-path/>
      <library-path dir="${output.dir}" includes="textLayout.swc" append="true"/>
      <library-path dir="${output.dir}/apps/automation_apps/bin" includes="automation_core.swc" append="true"/>
      <library-path dir="${output.dir}/apps/automation_apps/bin" includes="automation_tests.swc" append="true"/>
      <library-path dir="${basedir}/libs" includes="flexunit.swc" append="true"/>
      <library-path dir="${basedir}/libs" includes="flexunit-uilistener.swc" append="true"/>
      <library-path dir="${basedir}/libs" includes="flexunit-cilistener.swc" append="true"/>
      <!-- External swcs -->
      <library-path dir="${flex.sdk.frameworks}/libs/mx/" includes="mx.swc" append="true"/>
      <!-- for Flex SDK 4.5 -->
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="mx_rb.swc" append="true"/>
      <!-- for Flex SDK 4.5 -->
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="framework.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="rpc.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="spark.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="sparkskins.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/libs/" includes="utilities.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="framework_rb.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="rpc_rb.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="spark_rb.swc" append="true"/>
      <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="textLayout_rb.swc" append="true"/>
      <static-link-runtime-shared-libraries/>
      <define name="CONFIG::debug" value="${dbg}"/>
      <define name="CONFIG::release" value="${rel}"/>
      <define name="CONFIG::minimaltests" value="${minimalTests}"/>
    </mxmlc>
    <html-wrapper title="VellumUnit" file="VellumUnit.html" application="VellumUnit" swf="VellumUnit" width="1100" height="800" output="${output.dir}/apps/automation_apps/bin"/>
    <copy todir="${output.dir}/apps/test">
      <fileset dir="${test.dir}">
        <include name="**/*.*"/>
      </fileset>
    </copy>
  </target>
  <target name="test">
    <flexunit
            swf="${output.dir}/apps/automation_apps/bin/VellumUnit.swf"
            player="flash"
            toDir="${output.dir}/apps/automation_apps"
            haltonfailure="true"
            verbose="true"
            />
  </target>
</project>
