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

	<property name="FLEX_HOME" location=".."/>

	<!-- properties -->
	<property file="${FLEX_HOME}/build.properties"/>

	<property name="FLEX_LIB" value="${FLEX_HOME}/lib"/>
	<property name="javac.src" value="1.5"/>
	
	<!-- Property for the platform.  -->
    <condition property="isMac" value="true">
        <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>

	<!--
		Notes: If you're running the main target, then there is no need to call clean first.
		Each of the main targets for the modules will call clean themselves before proceeding.
	-->

	<target name="main" depends="thirdparty-downloads,modules" description="Full build" />

	<target name="dev" depends="modules-dev" description="Runs src.depend build for development"/>

    <target name="super-clean" depends="thirdparty-clean,clean" description="Cleans everything including thirdparty downloads."/>
    
    <!-- 
       To clean these you must call thirdparty-clean or super-clean to clean everything.  
       clean does not remove these since they don't change often and the downloads take time.
    -->
    <target name="thirdparty-downloads" unless="downloads.jar.done" 
        description="Downloads all the required thirdparty JARs.">
        <ant antfile="${basedir}/downloads.xml" target="main" dir="${basedir}"/>
        <echo message="Use thirdparty-clean or super-clean to remove these."/> 
        <property name="downloads.jar.done" value="true"/>
    </target>
    
    <!--
		Cleanup
	-->
	
    <target name="thirdparty-clean" description="Removes all thirdparty JAR downloads.">
        <ant antfile="${basedir}/downloads.xml" target="clean" dir="${basedir}"/>
    </target>

    <target name="clean" depends="batik-clean,velocity-clean">
		<ant dir="${basedir}/asc/build/java" target="clean"/>
		<ant dir="${basedir}/swfutils" target="clean"/>
		<ant dir="${basedir}/fxgutils" target="clean"/>
		<ant dir="${basedir}/debugger" target="clean"/>
		<ant dir="${basedir}/compiler" target="clean"/>
		<ant dir="${basedir}/antTasks" target="clean"/>
        <ant dir="${basedir}/asc/build/java" target="clean"/>
        <ant dir="${basedir}/thirdparty/xerces-patch" target="clean"/>
        <ant dir="${basedir}/flex-messaging-common" target="clean"/>
        <delete includeemptydirs="true" failonerror="false">
            <fileset dir="${FLEX_LIB}">
                <include name="*" />
                <exclude name="adt.jar"/>
            </fileset>
        </delete>
	</target>

	<!--
		Build Java module JARs.
	-->

	<target name="modules" depends="thirdparty,asc,swfutils,fxgutils,compiler,debugger,antTasks,flex-messaging-common" description="Full build of all JARs"/>

	<!--
	   dev does not do a clean first and the batik and velocity libraries are not rebuilt.
	-->
	<target name="modules-dev" depends="asc-dev,swfutils-dev,fxgutils-dev,compiler-dev,debugger-dev,antTasks-dev" description="Build src.depend JARs"/>

	<target name="asc" description="Full build of asc.jar">
		<ant dir="${basedir}/asc/build/java"/>
		<copy file="${basedir}/asc/lib/asc.jar" tofile="${FLEX_LIB}/asc.jar"/>
	</target>

	<target name="asc-dev" description="Build src.depend asc">
		<ant dir="${basedir}/asc/build/java" target="dev"/>
	</target>

	<target name="swfutils" description="Full build of swfutils.jar">
		<ant dir="${basedir}/swfutils"/>
	</target>

	<target name="swfutils-dev" description="Build src.depend swfutils">
		<ant dir="${basedir}/swfutils" target="dev"/>
	</target>

	<target name="fxgutils" description="Full build of fxgutils.jar">
		<ant dir="${basedir}/fxgutils"/>
	</target>

	<target name="fxgutils-dev" description="Build src.depend fxgutils">
		<ant dir="${basedir}/fxgutils" target="dev"/>
	</target>

	<target name="debugger" description="Full build of fdb.jar">
		<ant dir="${basedir}/debugger"/>
	</target>

	<target name="debugger-dev" description="Build src.depend debugger">
		<ant dir="${basedir}/debugger" target="dev"/>
	</target>

	<target name="compiler" depends="thirdparty" description="Full build of compiler JARs">
		<ant dir="${basedir}/compiler"/>
	</target>

	<target name="compiler-dev" depends="thirdparty" description="Build src.depend compiler JARs">
		<ant dir="${basedir}/compiler" target="dev"/>
	</target>

	<target name="antTasks" description="Full build of antTasks" unless="antTasks.compiled" >
		<ant dir="${basedir}/antTasks"/>
		<property name="antTasks.compiled" value="true"/>
	</target>

	<target name="antTasks-dev" description="Build src.depend antTasks" >
		<ant dir="${basedir}/antTasks" target="dev"/>
	</target>

    <target name="flex-messaging-common" description="build BlazeDS flex-messaging-common.jar">
        <ant dir="${basedir}/flex-messaging-common"/>
    </target>

    <target name="thirdparty" depends="xerces-patch,batik,velocity" />
    
	<target name="xerces-patch" description="Build xercesPatch.jar based on xerces 2.9.1" >
        <ant dir="${basedir}/thirdparty/xerces-patch"/>
    </target>
	
	<target name="batik" description="Build batik-all-flex.jar">
        <ant antfile="${basedir}/downloads.xml" target="batik-jars" dir="${basedir}"/>
		<ant dir="${basedir}/thirdparty/batik" target="batik-all-flex-jar">
	        <property name="deprecation" value="off"/>
	        <property name="sun-codecs.disabled" value="true"/>
	    </ant>
	</target>

	<target name="batik-clean">
		<ant dir="${basedir}/thirdparty/batik" target="batik-all-flex-clean"/>
	</target>
	
    <target name="velocity" description="Build velocity-dep-1.4-flex.jar">
		
		<echo message="This target should be run with Java 1.4.2_14. It doesn't work with Java 1.5."/>
		<echo message="Note that velocity builds with several 'enum' is a keyword warnings."/>

        <ant antfile="${basedir}/downloads.xml" target="velocity-jars" dir="${basedir}"/>
		<ant dir="${basedir}/thirdparty/velocity/build" target="jar-dep-flex"/>
	</target>

    <target name="velocity-clean">
	    <mkdir dir="${basedir}/thirdparty/velocity/build/lib"/>
		<ant dir="${basedir}/thirdparty/velocity/build" target="jar-dep-flex-clean"/>
	    <delete dir="${basedir}/thirdparty/velocity/build/lib"/>
    </target>

</project>
