<?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-build-tools" 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-build-tools}. -->
    <pathconvert property="compiler-build-tools" 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-build-tools}/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"/>
    
    <!-- label is set by CruiseControl script based on P4 label incrementer -->
    <condition property="build.number" value="${env.BUILD_NUMBER}">
        <isset property="env.BUILD_NUMBER"/>
    </condition>
    
    <target name="compiler.test.downloads">
        <ant antfile="${compiler-build-tools}/../compiler/src/test/downloads.xml" dir="${compiler-build-tools}/../compiler/src/test" inheritAll="false"/>
    </target>
    
    <!--

        BUILD TOOL COMPILATION

    -->
	
	<!-- The AnnotateClass tool is used to add @SupressWarnings annotations to Java code produced by ANTLR and JBurg -->
	<target name="annotate.class"
		    description="Compiles the AnnotateClass build tool" >
        <mkdir dir="${compiler-build-tools}/target/classes"/>
        <javac debug="${javac.debug}" deprecation="${javac.deprecation}" destdir="${compiler-build-tools}/target/classes" includeAntRuntime="true"
            source="${javac.src}" target="${javac.src}">
            <compilerarg value="-Xlint:all,-path,-fallthrough"/>
            <src path="${compiler-build-tools}/src/main/java"/>
            <include name="org/apache/royale/compiler/tools/annotate/AnnotateClass.java"/>
            <classpath>
                <pathelement location="${compiler-build-tools}/target/classes"/>
            </classpath>
        </javac>
	</target>
	
	<!-- The UnknownTreePatternInputOutput tool is used to compile an XML file containing unknown AST patterns to a Java class -->
    <target name="unknown.tree.pattern.input.output"
            description="Compiles the UnknownTreePatternInputOutput tool">
        <mkdir dir="${compiler-build-tools}/target/classes"/>
        <javac debug="${javac.debug}" deprecation="${javac.deprecation}" destdir="${compiler-build-tools}/target/classes"
            includeAntRuntime="true" source="${javac.src}" target="${javac.src}">
            <src path="${compiler-build-tools}/src/main/java"/>
            <include name="org/apache/royale/compiler/tools/unknowntreehandler/UnknownTreePatternInputOutput.java"/>
            <compilerarg value="-Xlint:all,-path,-fallthrough"/>
        </javac>
    </target>
	
	<!-- The ProblemLocalizer tool is used to create a problems_en.properties file -->
	<!-- filled with localization strings from classes extending org.apache.royale.compiler.CompilerProblem -->
	<target name="problem.localizer"
	        description="Compiles the ProblemLocalizer build tool">
	    <mkdir dir="${compiler-build-tools}/target/classes"/>
	    <javac debug="${javac.debug}" deprecation="${javac.deprecation}" destdir="${compiler-build-tools}/target/classes" includeAntRuntime="true"
            source="${javac.src}" target="${javac.src}">
	        <compilerarg value="-Xlint:all,-path,-fallthrough"/>
	        <src path="${compiler-build-tools}/tools/problemlocalizer"/>
	        <classpath>
	            <pathelement location="${compiler-build-tools}/target/classes"/>
	        </classpath>
	    </javac>
	</target>

    <target name="main" depends="annotate.class, unknown.tree.pattern.input.output" />
    
    <!--

        CLEANUP

    -->

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

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

 </project>
