<?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 OrderSwitches tool is used to order a switch statement from
         JFlex for reproducible binaries  -->
    <target name="order.switches"
            description="Compiles the OrderSwitches 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/OrderSwitches.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,order.switches, 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>
