<?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="mobilecomponents" default="main" basedir=".">

    <property name="FLEX_HOME" location="${basedir}/../../.."/>

    <property file="${FLEX_HOME}/env.properties"/>
    <property environment="env"/>
    <property file="${FLEX_HOME}/build.properties"/>

        <macrodef name="bundle">
            <attribute name="locale"/>
            <sequential>
                <echo message="Compiling frameworks/locale/@{locale}/mobilecomponents_rb.swc"/>

                <!-- Load the <compc> task. We can't do this at the <project> level -->
                <!-- because targets that run before flexTasks.jar gets built would fail. -->
                <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/lib/flexTasks.jar"/>
                
                <compc fork="true"
                       output="${FLEX_HOME}/frameworks/locale/@{locale}/mobilecomponents_rb.swc">
                    <jvmarg line="${compc.jvm.args}"/>
                    <load-config filename="bundle-config.xml" />
                    <arg value="+playerglobal.version=${playerglobal.version}" />
                    <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
                    <arg value="+locale=@{locale}" />
                </compc>
            </sequential>
    </macrodef> 
    
    <macrodef name="fat-swc">
        <attribute name="locale"/>
        <sequential>
            <echo message="creating 'fat-swc' in mobilecomponents_rb.swc for @{locale}"/>
            <mkdir dir="${basedir}/bundles/@{locale}/docs" />
            <zip destfile="${FLEX_HOME}/frameworks/locale/@{locale}/mobilecomponents_rb.swc" update="true">
                <zipfileset dir="${basedir}/bundles/@{locale}/docs" prefix="docs">
                    <include name="*.*"/>
                </zipfileset>
            </zip>
        </sequential>
    </macrodef> 
    
    <macrodef name="bundle-clean">
        <attribute name="locale"/>
        <sequential>
            <delete failonerror="false">
                <fileset dir="${FLEX_HOME}/frameworks/locale">
                    <include name="@{locale}/mobilecomponents_rb.swc"/>
                    <include name="@{locale}/mobilecomponents_rb.swc.incr"/>
                </fileset>
            </delete>
        </sequential>
    </macrodef>
    
    <macrodef name="bundler">
        <attribute name="locale"/>
        <element name="run.fat.swc" optional="yes"/>
        <sequential>
            <bundle-clean locale="@{locale}"/>
            <bundle locale="@{locale}"/>
            <run.fat.swc/>
        </sequential>
    </macrodef>
    
    <condition property="isMac">
        <os family="mac"/>
    </condition>
    <condition property="isWindows">
        <os family="windows" />
    </condition>   
    <condition property="isLinux">
        <and>
          <os family="unix"/>    
          <not>
            <os family="mac"/>    
          </not>
        </and>
    </condition>  

    <target name="main" depends="clean,compile" description="Clean build of mobilecomponents.swc and en_US">
        <bundle locale="${locale}"/>
    </target>

    <target name="other.locales" depends="bundles" description="Build other locale SWCs"/>

    <!-- This is a private target for building mobilecomponents_rb.swc for various locales. -->
    <!-- The targets below set the 'locale' parameter and call it with <antcall>. -->
    <target name="bundles">
        <!-- these languages do not have localized docs-->
        <bundler locale="en_AU"/><!-- Australian resources -->
        <bundler locale="en_GB"/><!-- United Kingdom resources -->
        <bundler locale="en_CA"/><!-- Canadian resources -->
        <bundler locale="da_DK"/><!-- Danish resources -->
        <bundler locale="de_DE"><!-- German resources -->
            <run.fat.swc>
                <fat-swc locale="de_DE"/>
            </run.fat.swc>
        </bundler>
        <bundler locale="es_ES"/><!-- Spanish resources -->
        <bundler locale="fi_FI"/><!--  Finnish resources-->
        <bundler locale="fr_FR"><!-- French resources -->
            <run.fat.swc>
                <fat-swc locale="fr_FR"/>
            </run.fat.swc>
        </bundler>
        <bundler locale="it_IT"/><!-- Italian resources -->
        <bundler locale="ja_JP"><!-- Japanese resources -->
            <run.fat.swc>
                <fat-swc locale="ja_JP"/>
            </run.fat.swc>
        </bundler>
        <bundler locale="ko_KR"/><!-- Korean resources -->
        <bundler locale="nb_NO"/><!-- Norwegian Bokmal resources -->
        <bundler locale="nl_NL"/><!-- Dutch resources -->
        <bundler locale="pt_BR"/><!-- Brazilian Portuguese resources -->
        <bundler locale="pt_PT"/><!-- Portugal Portuguese resources -->
        <bundler locale="ru_RU"><!-- Russian resources -->
            <run.fat.swc>
                <fat-swc locale="ru_RU"/>
            </run.fat.swc>
        </bundler>
        <bundler locale="sv_SE"/><!-- Swedish resources -->
        <bundler locale="zh_CN"><!-- Simplified Chinese resources -->
            <run.fat.swc>
                <fat-swc locale="zh_CN"/>
            </run.fat.swc>
        </bundler>
        <bundler locale="zh_TW"/><!-- Traditional Chinese resources -->
        <bundler locale="el_GR"/><!-- Greek Language  resources -->
    </target>
    
    <target name="clean" depends="bundles-clean">
        <delete failonerror="false">
            <fileset dir="${basedir}" >
                <include name="bundles.properties"/>
                <include name="bundles/en_US/packages.dita"/>
            </fileset>
            <fileset dir="${FLEX_HOME}/frameworks/libs/mobile">
                <include name="mobilecomponents.swc"/>
                <include name="mobilecomponents.swc.incr"/>
            </fileset>
        </delete>
    </target>
    
    <target name="bundles-clean">
        <delete failonerror="false">
            <fileset dir="${FLEX_HOME}/frameworks/locale">
                <include name="*/mobilecomponents_rb.swc"/>
                <include name="*/mobilecomponents_rb.swc.incr"/>
            </fileset>
        </delete>
    </target>

    <target name="configModLinux" description="Modifies which config file to use" if="isLinux">
        <property name="configMod" value="AIR2"/>
    </target>
	
    <target name="configModOther" description="Modifies which config file to use" unless="isLinux">
        <property name="configMod" value=""/>
    </target>

    <target name="compile" description="Compiles mobilecomponents.swc" depends="configModLinux,configModOther">
        <echo message="Compiling frameworks/libs/mobile/mobilecomponents.swc"/>
        <echo message="Using ${env.AIR_HOME}/frameworks/libs/air/airglobal.swc" level="info"/>

        <!-- Load the <compc> task. We can't do this at the <project> level -->
        <!-- because targets that run before flexTasks.jar gets built would fail. -->
        <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/lib/flexTasks.jar"/>
        <!--
            Link in the classes (and their dependencies) for the MXML tags
            listed in this project's manifest.xml.
            Also link the additional classes (and their dependencies)
            listed in MobileComponentsClasses.as,
            because these aren't referenced by the manifest classes.
            Compile against framework.swc, but don't link it into mobilecomponents.swc.
            Link in accessibility support.
            Include the appropriate CSS files and assets in the SWC.
            Don't include any resources in the SWC.
            Write a bundle list of referenced resource bundles
            into the file bundles.properties in this directory.
        -->
        <compc fork="true"
               output="${FLEX_HOME}/frameworks/libs/mobile/mobilecomponents.swc">
            <jvmarg line="${compc.jvm.args}"/>
            <load-config filename="compile-config${configMod}.xml" />
            <arg value="+playerglobal.version=${playerglobal.version}" />
            <arg value="+env.AIR_HOME=${env.AIR_HOME}" />
        </compc>
    </target>
    
    <target name="doc" depends="clean-temp-docs" description="updates mobilecomponents.swc with asdoc xml">
        <!-- Load the <asdoc> task. We can't do this at the <project> level -->
        <!-- because targets that run before flexTasks.jar gets built would fail. -->
        <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/lib/flexTasks.jar"/>

        <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>

        <!-- Call asdoc to generate dita xml files -->
        <asdoc output="${FLEX_HOME}/tempDoc" lenient="true" failonerror="true" keep-xml="true" skip-xsl="true" fork="true" >
            <compiler.source-path path-element="${basedir}/src"/>
            <doc-classes class="MobileComponentsClasses"/>
            <external-library-path dir="${env.AIR_HOME}/frameworks/libs/air">
                <include name="airglobal.swc"/>
            </external-library-path>
            <external-library-path dir="${FLEX_HOME}/frameworks/libs/air">
                <include name="airframework.swc" />
            </external-library-path>
            <external-library-path dir="${FLEX_HOME}/frameworks/libs">
                <include name="framework.swc" />
                <include name="spark.swc" />
                <include name="textLayout.swc"/>
            </external-library-path>

            <library-path/>

            <namespace uri="library://ns.adobe.com/flex/spark" manifest="${basedir}/manifest.xml"/>
            <doc-namespaces uri="library://ns.adobe.com/flex/spark"/>

      <jvmarg line="${asdoc.jvm.args}"/>
        </asdoc>

        <!-- updates mobilecomponents.swc with asdoc xml -->
        <zip destfile="${FLEX_HOME}/frameworks/locale/en_US/mobilecomponents_rb.swc" update="true">
            <zipfileset dir="${FLEX_HOME}/tempDoc/tempdita" prefix="docs">
                <include name="*.*"/>
                <exclude name="ASDoc_Config.xml"/>
                <exclude name="overviews.xml"/>
            </zipfileset>
        </zip>
        <copy file="${FLEX_HOME}/tempDoc/tempdita/packages.dita" tofile="${basedir}/bundles/en_US/packages.dita"/> 
    </target>

    <target name="clean-temp-docs">
        <delete dir="${FLEX_HOME}/tempDoc" failonerror="false" includeEmptyDirs="true"/>
        <delete file="${basedir}/bundles/en_US/packages.dita" failonerror="false"/>
    </target>
</project>
