<?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="compiler-jburg-types" default="main" basedir=".">

    <!-- 

        PROPERTIES

    -->

    <!-- The 'compiler' property is the absolute path, with forward slashes, -->
    <!-- to the 'compiler-build-tools' directory that contains this file. -->
    <!-- All input paths are expressed as absolute paths starting with ${compiler}. -->
    <pathconvert property="compiler-jburg-types" dirsep="/">
        <path location="${basedir}"/>
    </pathconvert>
    
    <!-- Properties can be overridden locally by loading a local.properties file -->
    <!-- Java 8 users probably need javadoc.params=-Xdoclint:none -->
    <property file="${compiler-jburg-types}/local.properties"/>
    
    <property name="src.depend" value="true"/>

    <!-- Options for <javac> tasks -->
    <property name="javac.debug" value="true"/>
    <property name="javac.deprecation" value="false"/>
    <property name="javac.src" value="1.6"/>

    <!-- JAR manifest entries -->
    <property name="manifest.sealed" value="false"/>
    <property name="manifest.Implementation-Title" value="Apache Royale Compiler"/>
    <property name="manifest.Implementation-Version" value="${release.version}"/>
    <property name="manifest.Implementation-Vendor" value="Apache Software Foundation"/>
    
    <!--

        BUILD TOOL COMPILATION

    -->
	
	<!-- The IASNodeAdapter tool is used by JBurg -->
	<target name="IASNodeAdapter" depends="compiler.downloads"
		    description="Compiles the IASNodeAdapter class" >
        <mkdir dir="${compiler-jburg-types}/target/classes"/>
        <javac debug="${javac.debug}" deprecation="${javac.deprecation}" destdir="${compiler-jburg-types}/target/classes" includeAntRuntime="true"
            source="${javac.src}" target="${javac.src}">
            <compilerarg value="-Xlint:all,-path,-fallthrough"/>
            <src path="${compiler-jburg-types}/src/main/java"/>
            <include name="org/apache/royale/compiler/internal/as/codegen/IASNodeAdapter.java"/>
            <include name="jburg/burg/JBurgGenerator.java"/>
            <classpath>
                <pathelement location="${compiler-jburg-types}/../compiler/lib/external/jburg.jar"/>
                <pathelement location="${compiler-jburg-types}/../compiler/lib/external/antlr.jar"/>
            </classpath>
        </javac>
	</target>
		
    <target name="main" depends="IASNodeAdapter" />
    
    <target name="compiler.downloads.cache" if="usingDownloadCache">
        <ant antfile="${compiler-jburg-types}/../compiler/src/main/resources/downloads.xml"
            dir="${compiler-jburg-types}/../compiler/src/main/resources" inheritAll="false">
            <property name="usingDownloadCache" value="${usingDownloadCache}" />
            <property name="downloadCacheFolder" value="${downloadCacheFolder}" />
        </ant>
    </target>
    
    <target name="compiler.downloads" depends="compiler.downloads.cache" unless="usingDownloadCache">
        <ant antfile="${compiler-jburg-types}/../compiler/src/main/resources/downloads.xml"
            dir="${compiler-jburg-types}/../compiler/src/main/resources" inheritAll="false"/>
    </target>
    <!--

        CLEANUP

    -->

    <target name="clean" description="clean">
        <delete dir="${compiler-jburg-types}/target/classes"/>
    </target>

    <target name="wipe" depends="clean" description="Wipes everything that didn't come from Git.">
        <delete dir="${compiler-jburg-types}/target"/>
    </target>

 </project>
