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

    <property file="${basedir}/env.properties"/>
    <property environment="env"/>
    <property file="${basedir}/local.properties"/>
    <property file="${basedir}/build.properties"/>
    <condition property="FLEX_HOME" value="${env.FLEX_HOME}">
        <isset property="env.FLEX_HOME" />
    </condition>
    <condition property="AIR_HOME" value="${env.AIR_HOME}">
        <isset property="env.AIR_HOME" />
    </condition>

    <!-- SDK properties -->
    <property name="FLEX_HOME" value="C:/air3_beta2"/>
    <property name="AIR_HOME" value="C:/air3_beta2"/>
	<property name="MXMLC.JAR" value="${FLEX_HOME}/lib/mxmlc.jar"/>
	<property name="COMPC.JAR" value="${FLEX_HOME}/lib/compc.jar"/>
	<property name="ADL" value="${AIR_HOME}/bin/adl.exe"/>
    <property name="ADT.JAR" value="${AIR_HOME}/lib/adt.jar"/>
	
    <property name="OUTPUT_DIR" value="libs"/>
    
     <target name="init" depends="clean">
     	<mkdir dir="${OUTPUT_DIR}"/>
    </target>
	
	<target name="compilelinguistics" depends="init">
		<java jar="${COMPC.JAR}" fork="true" failonerror="true">
			<arg value="-swf-version"/>
			<arg value="13"/>
			<arg value="+flexlib=${FLEX_HOME}/frameworks"/>
			<arg value="+configname=air"/>
			<arg value="-source-path"/>
			<arg value="AdobeLinguisticUtils/src"/>
			<arg value="-include-sources"/>
			<arg value="AdobeLinguisticUtils/src"/>
			<arg value="-external-library-path"/>
			<arg value="${AIR_HOME}/frameworks/libs/air/airglobal.swc"/>
			<arg value="-output"/>
			<arg value="${OUTPUT_DIR}/AdobeLinguisticUtils.swc"/>
		</java>
	</target>
	
	<target name="compileengine" depends="init">
		<java jar="${COMPC.JAR}" fork="true" failonerror="true">
			<arg value="-swf-version"/>
			<arg value="13"/>
			<arg value="+flexlib=${FLEX_HOME}/frameworks"/>
			<arg value="+configname=air"/>
			<arg value="-source-path"/>
			<arg value="AdobeSpellingEngine/src"/>
			<arg value="-include-sources"/>
			<arg value="AdobeSpellingEngine/src"/>
			<arg value="-external-library-path"/>
			<arg value="${AIR_HOME}/frameworks/libs/air/airglobal.swc"/>
			<arg value="-output"/>
			<arg value="${OUTPUT_DIR}/AdobeSpellingEngine.swc"/>
		</java>
	</target>

	<target name="compileframework" depends="init">
		<java jar="${COMPC.JAR}" fork="true" failonerror="true">
			<arg value="-swf-version"/>
			<arg value="13"/>
			<arg value="+flexlib=${FLEX_HOME}/frameworks"/>
			<arg value="+configname=air"/>
			<arg value="-source-path"/>
			<arg value="AdobeSpellingFramework/src"/>
			<arg value="-source-path"/>
			<arg value="../SWCandANE/src"/>
			<arg value="-include-sources"/>
			<arg value="AdobeSpellingFramework/src"/>
			<arg value="-external-library-path"/>
			<arg value="${AIR_HOME}/frameworks/libs/air/airglobal.swc"/>
			<arg value="-external-library-path"/>
			<arg value="${OUTPUT_DIR}/AdobeSpellingEngine.swc"/>
			<arg value="-output"/>
			<arg value="${OUTPUT_DIR}/AdobeSpellingFramework.swc"/>
		</java>
	</target>

	<target name="compileui" depends="init">
		<java jar="${COMPC.JAR}" fork="true" failonerror="true">
			<arg value="-swf-version"/>
			<arg value="13"/>
			<arg value="+flexlib=${FLEX_HOME}/frameworks"/>
			<arg value="+configname=air"/>
			<arg value="-source-path"/>
			<arg value="AdobeSpellingUITLF/src"/>
			<arg value="-include-sources"/>
			<arg value="AdobeSpellingUITLF/src"/>
			<arg value="-external-library-path"/>
			<arg value="${AIR_HOME}/frameworks/libs/air/airglobal.swc"/>
			<arg value="-external-library-path"/>
			<arg value="${OUTPUT_DIR}/AdobeLinguisticUtils.swc"/>
			<arg value="-external-library-path"/>
			<arg value="${OUTPUT_DIR}/AdobeSpellingEngine.swc"/>
			<arg value="-external-library-path"/>
			<arg value="${OUTPUT_DIR}/AdobeSpellingFramework.swc"/>
			<arg value="-output"/>
			<arg value="${OUTPUT_DIR}/AdobeSpellingUITLF.swc"/>
		</java>
	</target>

    <target name="test" depends="compilelinguistics, compileengine, compileframework, compileui">
    </target>
   
    <target name="clean" description="clean up">
    	<delete dir="${OUTPUT_DIR}"/>
    </target>
</project>