<?xml version="1.0" encoding="UTF-8"?>

<!--

  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="Top-Level property definitions" default="echo" basedir="..">
    <description>
        Ant file of common properties to be imported by other ant files.
        Property "hy.hdk" must be defined before this file is imported.
    </description>

    <property file="${user.home}/.harmony-classlib.properties" />

    <fail message="Property 'hy.hdk' is not defined">
        <condition>
            <not><isset property="hy.hdk" /></not>
        </condition>
    </fail>
    <property name="hy.jdk" location="${hy.hdk}/jdk" />
    <property name="hy.jre" location="${hy.jdk}/jre" />

    <!-- Debug or release version -->
    <property name="hy.cfg" value="debug" />

    <!-- Javac properties -->
    <!-- Explicitly set to ECJ as the default compiler. -->
    <property name="hy.javac.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" />
    <property name="hy.javac.source" value="1.5" />
    <property name="hy.javac.target" value="1.5" />
    <property name="hy.javac.maxmem" value="384M" />
    <property name="hy.jar.compress" value="true" />

    <!-- Temporarily always include class file debug info -->
    <condition property="hy.javac.debug" value="on" else="on">
        <equals arg1="${hy.cfg}" arg2="debug" />
    </condition>

    <!-- Local variable tables should be available in debug, and unavailable in release modes. -->
    <condition property="build.compilerarg" value="-nowarn -g" else="-nowarn -g:lines,source">
        <equals arg1="${hy.cfg}" arg2="debug" />
    </condition>

    <!-- During packaging, these files must be copied into the meta-inf dir -->
    <fileset id="hy.required.metainf-files" dir="${hy.hdk}">
        <include name="NOTICE" />
        <include name="LICENSE" />
    </fileset>

    <!-- Test run property -->
    <property name="hy.test.forkmode" value="once" />
    <property name="hy.test.timeout" value="900000" />
    <property name="hy.test.vmargs" value="" />

    <!-- Conditions for operating systems -->
    <condition property="is.windows">
        <os family="Windows" />
    </condition>
    <condition property="is.linux">
        <os name="linux" />
    </condition>
    <condition property="is.macosx">
        <os name="mac os x" />
    </condition>
    <condition property="is.freebsd">
        <os name="freebsd" />
    </condition>
    <condition property="is.aix">
        <os name="aix" />
    </condition>
    <condition property="is.unix">
        <os family="unix" />
    </condition>
    <condition property="is.zos">
        <os name="z/OS" />
    </condition>

    <!-- Normalized operating system family -->
    <condition property="hy.os.family" value="windows">
        <isset property="is.windows" />
    </condition>
    <property name="hy.os.family" value="unix" />

    <!-- Normalized operating system name -->

    <!-- this special case makes sense -->
    <condition property="hy.os" value="windows">
        <isset property="is.windows"/>
    </condition>
    <condition property="hy.os" value="linux">
        <os name="linux" />
    </condition>
    <condition property="hy.os" value="freebsd">
        <os name="freebsd" />
    </condition>
    <condition property="hy.os" value="macosx">
        <isset property="is.macosx"/>
    </condition>
    <condition property="hy.os" value="aix">
        <os name="aix" />
    </condition>
    <condition property="hy.os" value="zos">
        <isset property="is.zos"/>
    </condition>

    <property name="hy.os" value="${os.name}" />



    <!-- Conditions for different architectures -->
    <condition property="is.x86_64">
        <or>
            <equals arg1="x86_64" arg2="${os.arch}"/>
            <equals arg1="amd64" arg2="${os.arch}"/>
        </or>
    </condition>
    <condition property="is.x86">
	<and>
	    <not>
                <isset property="is.x86_64" />
            </not>
            <or>
                <equals arg1="x86" arg2="${os.arch}"/>
                <equals arg1="i386" arg2="${os.arch}"/>
                <equals arg1="i686" arg2="${os.arch}"/>
            </or>
        </and>
    </condition>
    <condition property="is.ia64">
        <equals arg1="ia64" arg2="${os.arch}"/>
    </condition>
    <condition property="is.ppc32">
        <or>
            <equals arg1="${os.arch}" arg2="ppc32" />
            <equals arg1="${os.arch}" arg2="ppc" />
        </or>
    </condition>
    <condition property="is.ppc64">
        <equals arg1="${os.arch}" arg2="ppc64" />
    </condition>
    <condition property="is.s390x">
        <equals arg1="${os.arch}" arg2="s390x" />
    </condition>
    <condition property="is.s390">
        <equals arg1="${os.arch}" arg2="s390" />
    </condition>

    <condition property="is.64bit">
        <or>
            <isset property="is.ia64" />
            <isset property="is.x86_64" />
            <isset property="is.ppc64" />
            <isset property="is.s390x" />
        </or>
    </condition>
    <condition property="is.32bit">
        <or>
            <isset property="is.x86" />
            <isset property="is.ppc32" />
            <isset property="is.s390" /> <!-- 31bit of course -->
        </or>
    </condition>
    <condition property="hy.bits" value="32">
        <isset property="is.32bit" />
    </condition>
    <property name="hy.bits" value="64" />

    <!-- Normalized architecture name -->
    <condition property="hy.arch" value="x86_64">
        <isset property="is.x86_64" />
    </condition>
    <condition property="hy.arch" value="x86">
        <and>
            <isset property="is.x86" />
            <isset property="is.32bit" />
        </and>
    </condition>
    <condition property="hy.arch" value="ppc32">
        <isset property="is.ppc32" />
    </condition>
    <property name="hy.arch" value="${os.arch}" />
    
    <!-- Normalized platform name -->
    <property name="hy.platform" value="${hy.os}.${hy.arch}"/>
    <property name="hy.platform.path" value="${hy.os}/${hy.arch}"/>

    <condition property="exe.suffix" value=".exe">
        <isset property="is.windows"/>
    </condition>
    <property name="exe.suffix" value="" />

    <condition property="shlib.prefix" value="">
        <isset property="is.windows"/>
    </condition>
    <property name="shlib.prefix" value="lib" />

    <condition property="shlib.suffix" value=".dll">
        <isset property="is.windows"/>
    </condition>
    <condition property="shlib.suffix" value=".dylib">
        <isset property="is.macosx"/>
    </condition>
    <property name="shlib.suffix" value=".so" />

    <condition property="progdb.suffix" value=".pdb">
        <isset property="is.windows" />
    </condition>

    <condition property="object.suffix" value=".obj">
        <isset property="is.windows" />
    </condition>
    <property name="object.suffix" value=".o" />

    <condition property="linklib.suffix" value=".lib">
        <isset property="is.windows"/>
    </condition>
    <condition property="linklib.suffix" value=".x">
        <isset property="is.zos" />
    </condition>
    <condition property="linklib.suffix" value=".dylib">
        <isset property="is.macosx"/>
    </condition>
    <property name="linklib.suffix" value=".so" />
    
    <condition property="shlib.is.linklib">
        <equals arg1="${shlib.suffix}" arg2="${linklib.suffix}"/>
    </condition>

    <property name="manifest.suffix" value=".manifest" />

    <condition property="make.command" value="nmake.exe">
        <isset property="is.windows"/>
    </condition>
    <condition property="make.command" value="gmake">
        <or>
            <isset property="is.aix"/>
            <isset property="is.freebsd"/>
            <isset property="is.zos"/>
        </or>
    </condition>
    <property name="make.command" value="make" />

    <condition property="make.arg" value="/nologo">
        <isset property="is.windows"/>
    </condition>
    <property name="make.arg" value="" />

    <condition property="png.home" value="/usr/local">
        <isset property="is.freebsd"/>
    </condition>
    <condition property="png.home" value="/sw">
        <isset property="is.macosx"/>
    </condition>
    <property name="png.home" value="/usr" />

    <condition property="lcms.home" value="/usr/local">
        <isset property="is.freebsd"/>
    </condition>
    <condition property="lcms.home" value="/sw">
        <isset property="is.macosx"/>
    </condition>
    <property name="lcms.home" value="/usr" />

    <condition property="jpeg.home" value="/usr/local">
        <isset property="is.freebsd"/>
    </condition>
    <condition property="jpeg.home" value="/sw">
        <isset property="is.macosx"/>
    </condition>
    <property name="jpeg.home" value="/usr" />
    
    <!-- default property for poll-modules macro - i.e. all modules -->
    <property name="build.module" value="*" />
    <property name="exclude.module" value="nothing" />

    <!-- flags -->
    <property name="hy.no.thr" value="false" />
    <condition property="hy.skip.thr" value="true">
        <not>
            <equals arg1="${hy.no.thr}" arg2="false" />
        </not>
    </condition>

    <property name="hy.local.zlib" value="false" />
    <condition property="hy.skip.zlib" value="true">
        <not>
            <equals arg1="${hy.local.zlib}" arg2="false" />
        </not>
    </condition>

    <property name="hy.zip.api" value="false" />
    <condition property="hy.skip.zip.api" value="true">
        <not>
            <equals arg1="${hy.zip.api}" arg2="true" />
        </not>
     </condition>

    <condition property="hy.portlib.stubs" value="true">
        <or>
            <equals arg1="${hy.os}" arg2="aix" />
            <equals arg1="${hy.os}" arg2="zos" />
        </or>
    </condition>
    <property name="hy.portlib.stubs" value="false" />

    <condition property="hy.libstdc++.suffix" value=".libstdc++5">
        <isset property="use.libstdc++5"/>
    </condition>
    <property name="hy.libstdc++.suffix" value="" />

    <property name="hy.platform.variant"
              value="${hy.platform}${hy.libstdc++.suffix}" />

    <!-- fileset to represent classes built by a module. -->
    <fileset id="classes" dir="../../build/classes">
        <includesfile name="${hy.hdk}/build/ant/patternsets/${hy.module}.txt" />
    </fileset>

    <!-- fileset for resources of a module. -->
    <fileset id="resources" dir="src/main/java">
        <exclude name="**/*.java" />
    </fileset>

    <!-- fileset for resources of a module with platform-dependent code. -->
    <fileset id="common.resources" dir="src/main/java/common">
        <exclude name="**/*.java" />
    </fileset>

    <!-- test properties -->
    <property name="tests.output" location="../../build/test_report" />
    <property name="tests.hdk.dir" value="${hy.hdk}/build/test/${hy.module}" />
    <property name="tests.excludes.hdk.dir" value="${tests.hdk.dir}/excludes" />
    <property name="tests.resources.hdk.dir"
              value="${tests.hdk.dir}/resources" />

    <property name="findBugs.report" location="../../build/findbugs_report" />

    <target name="echo" depends="svn-prop, svn-info, test-jre-vm-info"
            description="Display the properties defined by this ant file" >
        <echo>
Harmony release configuration property:

  hy.cfg = ${hy.cfg}

Harmony javac properties:

  hy.javac.compiler = ${hy.javac.compiler}
  hy.javac.target = ${hy.javac.target}
  hy.javac.source = ${hy.javac.source}
  hy.javac.debug  = ${hy.javac.debug}
  hy.javac.maxmem = ${hy.javac.maxmem}
  build.compilerarg = ${build.compilerarg}

Harmony test properties:

    hy.test.forkmode = ${hy.test.forkmode}
    hy.test.timeout = ${hy.test.timeout}
    hy.test.vm.name = ${hy.test.vm.name}
    hy.test.vmargs = ${hy.test.vmargs}
    findbugs.available = ${findbugs.available}

Harmony platform properties:

  hy.os = ${hy.os}
  hy.os.family = ${hy.os.family}
  hy.arch = ${hy.arch}
  hy.bits = ${hy.bits}
  hy.platform = ${hy.platform}
  hy.platform.path = ${hy.platform.path}

  is.windows = ${is.windows}
  is.unix = ${is.unix}
  is.linux = ${is.linux}
  is.freebsd = ${is.freebsd}
  is.macosx = ${is.macosx}
  is.aix = ${is.aix}
  is.zos = ${is.zos}
  is.32bit = ${is.32bit}
  is.64bit = ${is.64bit}
  is.x86 = ${is.x86}
  is.x86_64 = ${is.x86_64}
  is.ia64 = ${is.ia64}
  is.ppc32 = ${is.ppc32}
  is.ppc64 = ${is.ppc64}
  is.s390 = ${is.s390}
  is.s390x = ${is.s390x}

  exe.suffix = ${exe.suffix}
  shlib.prefix = ${shlib.prefix}
  shlib.suffix = ${shlib.suffix}
  make.command = ${make.command}

  hy.hdk = ${hy.hdk}
  hy.jdk = ${hy.jdk}
  hy.jre = ${hy.jre}

The following property is only set if the "svn-prop" target has been
called:

  svn.revision = ${svn.revision}


The following property is only set if the "svn-info" target has been
called:

  svn.info = ${svn.info}

Ant native properties, for information, but please use Harmony
properties in preference to these:

  os.name = ${os.name}
  os.arch = ${os.arch}

        </echo>
    </target>

    <target name="svn-prop">
        <exec executable="svn">
            <arg value="--non-interactive" />
            <arg value="info" />
            <redirector outputproperty="svn.revision">
                <outputfilterchain>
                    <linecontains>
                        <contains value="Revision: " />
                    </linecontains>
                    <tokenfilter>
                        <replacestring from="Revision: " to=""/>
                    </tokenfilter>
                </outputfilterchain>
            </redirector>
        </exec>
    </target>

    <target name="svn-info">
        <exec executable="svn"
              failifexecutionfails="false"
              resultproperty="svn.rc">
            <arg value="info" />
            <redirector outputproperty="svn.info.tmp">
                <outputfilterchain>
                    <linecontainsregexp>
                        <regexp pattern="Repository Root:|Revision:" />
                    </linecontainsregexp>
                    <tokenfilter>
                        <replacestring from="Repository Root: " to=""/>
                        <replacestring from="Revision: " to=" "/>
                    </tokenfilter>
                    <striplinebreaks/>
                </outputfilterchain>
            </redirector>
        </exec>
        <condition property="svn.info" value="${svn.info.tmp}" >
            <equals arg1="${svn.rc}" arg2="0" />
        </condition>
        <tstamp>
            <format property="svn.info" pattern="'Unknown revision at' dd-MMM-yyyy hh:mm aa"/>
        </tstamp>
    </target>

    <target name="test-jre-vm-info" depends="-get-test-vm-output">
        <echo level="info" message="java -version${line.separator}${test.vm.info.tmp}" />
        <!-- Add other runtime names here -->
        <condition property="hy.test.vm.name" value="ri" >
            <contains string="${test.vm.info.tmp}" substring="HotSpot"/>
        </condition>
        <condition property="hy.test.vm.name" value="jr" >
            <contains string="${test.vm.info.tmp}" substring="JRockit"/>
        </condition>
        <!-- FIXME current behavior relies on the fact that J9 VM doesn't
             support -version parameter -->
        <condition property="hy.test.vm.name" value="ibm" else="drl" >
            <contains string="${test.vm.info.tmp}" substring="IBM" casesensitive="false" />
        </condition>
        <echo level="info" message="hy.test.vm.name = ${hy.test.vm.name}" />
    </target>

    <target name="-get-test-vm-output">
        <condition property="test.jre.home" value="${hy.jre}">
            <not><isset property="test.jre.home" /></not>
        </condition>
        <exec executable="${test.jre.home}/bin/java" failifexecutionfails="false">
            <arg value="-version" />
            <redirector outputproperty="test.vm.info.tmp"/>
        </exec>
    </target>

    <macrodef name="poll-modules" 
        description="directory-based macros for polling sub-builds">
        <attribute name="target" />
        <attribute name="dir" default="modules" />
        <attribute name="includes" default="${build.module}"/>
        <attribute name="excludes" default="${exclude.module}"/>
        <attribute name="antfile" default="*.xml"/>
        <sequential>
            <!-- convert dirset pattern to fileset pattern-->
            <property name="@{dir}.loc" location="@{dir}"/>
            <pathconvert property="list.@{dir}.@{target}" 
                pathsep="${file.separator}@{antfile}," setonempty="no">
                <path>
                    <dirset dir="@{dir}"
                            includes="@{includes}"
                            excludes="@{excludes}">
                        <exclude name=".*" />
                    </dirset>
                </path>
                <map from="${@{dir}.loc}${file.separator}" to=""/>
            </pathconvert>
            <!-- append antfile suffix to last item in the list, if any -->
            <condition property="poll.@{dir}.@{target}"
                value="${list.@{dir}.@{target}}${file.separator}@{antfile}" 
                else="">
                <isset property="list.@{dir}.@{target}"/>
            </condition>
            <poll-build target="@{target}" dir="@{dir}" 
                includes="${poll.@{dir}.@{target}}"/>
        </sequential>
    </macrodef>

    <macrodef name="poll-build"
        description="plain-filter macros for polling sub-builds">
        <attribute name="target" />
        <attribute name="dir" />
        <attribute name="includes" default="**/*.xml"/>
        <attribute name="excludes" default=""/>
        <sequential>
            <echo message="polling @{includes}"/>
            <subant target="@{target}">
                <!-- TODO: modules probably need to work these properties
                     out for themselves in order to reduce coupling -->
                <property name="hy.test.vm.name" value="${hy.test.vm.name}"/>
                <property name="depends.oss" value="${depends.oss}"/>
                <fileset dir="@{dir}" includes="@{includes}" excludes="@{excludes}">
                    <containsregexp expression="&lt;target[^&gt;]*name=&quot;@{target}&quot;"/>
                </fileset>
            </subant>
        </sequential>
    </macrodef>

    <!-- macros for modules -->
    <!-- TOFIX move to a shared file in the HDK/build/make directory. -->

    <macrodef name="make">
        <attribute name="dir" />
        <attribute name="target" default="" />
        <element name="make-elements" optional="true" />
        <sequential>
            <echo>Making "@{target}" in @{dir}</echo>
            <exec failonerror="true"
                  executable="${make.command}"
                  dir="@{dir}">
                <env key="HY_ZIP_API" value="${hy.zip.api}" />
                <env key="HY_PORTLIB_STUBS" value="${hy.portlib.stubs}" />
                <env key="HY_HDK" value="${hy.hdk}" />
                <env key="HY_CFG" value="${hy.cfg}" />
                <env key="HY_ARCH" value="${hy.arch}" />
                <env key="HY_OS" value="${hy.os}" />
                <env key="HY_PLATFORM" value="${hy.platform}" />
                <env key="HY_NO_THR" value="${hy.no.thr}" />
                <env key="HY_LOCAL_ZLIB" value="${hy.local.zlib}" />
                <env key="HY_SHLIB_SUFFIX" value="${shlib.suffix}" />
                <env key="HY_LINKLIB_SUFFIX" value="${linklib.suffix}" />
                <arg line="${make.arg}" />
                <arg line="@{target}" />
                <make-elements />
            </exec>
        </sequential>
    </macrodef>


    <!-- To use with -Dtest.case=... option                   -->
    <!-- if ${test.case} is provided in package+class form    -->
    <!-- it is converted to dir+filename form                 -->
    <macrodef name="convert-test">
        <attribute name="from"/>
        <attribute name="to"/>
        <sequential>
            <pathconvert property="@{to}" setonempty="no">
                <path path="${@{from}}"/>
                <chainedmapper>
                    <filtermapper>
                        <replaceregex pattern="\.java$$"/>
                    </filtermapper>
                    <unpackagemapper from="${basedir}${file.separator}*" to="*.java"/>
                </chainedmapper>
            </pathconvert>
        </sequential>
    </macrodef>
    <convert-test from="test.case" to="converted.tc" />
    
    <!-- Concatenate several exclude lists into single list -->
    <macrodef name="prepare-exclude-list">
       <attribute name="moduleName"/>
       <!-- directory with exclude lists for the module -->
       <attribute name="dir"/>
       <!-- name of concatenated list, should be an absolute pathname -->
       <attribute name="result"/>
       <sequential>
            <!-- names of exclude lists, used by prepare-exclude-list macro -->
            <property name="common.exclude.file" value="exclude.common" />
            <property name="common.exclude.interm" value="exclude.interm" />
            <property name="platform.exclude.file"
                      value="exclude.${hy.platform}.${hy.test.vm.name}" />
            <property name="platform.exclude.interm"
                      value="exclude.${hy.platform}.${hy.test.vm.name}.interm"
            />

            <dirname file="@{result}" property="@{result}.dir" />
            <mkdir dir="${@{result}.dir}" />

           <echo message="" file="@{result}"/>
           <concat destfile="@{result}" force="yes" fixlastline="yes" append="true">
               <fileset dir="@{dir}">
                   <include name="${common.exclude.file}"/> 
                   <include name="${platform.exclude.file}"/>
                   <include name="${common.exclude.interm}" if="exclude.interm" />
                   <include name="${platform.exclude.interm}" if="exclude.interm" />
                   <size value="0" when="more"/>
               </fileset>
           </concat>
       </sequential>
   </macrodef>
    
    <macrodef name="ensure-javac">
        <sequential>
            <fail>
                <condition>
                    <and>
                        <equals arg1="${hy.javac.compiler}" arg2="org.eclipse.jdt.core.JDTCompilerAdapter"/>
                        <not>
                            <available classname="${hy.javac.compiler}"/>
                        </not>
                    </and>
                </condition>
The Eclipse compiler class for Ant could not be found. Please place the ECJ JAR in ANT_HOME/lib.
The JAR can be downloaded directly from eclipse.org or copied from COMMON_RESOURCES/depends/jars/ecj_3.x folder after the fetch-depends target for JDKTOOLS has been run.
Alternatively, you can switch to another compiler, e.g. specify '-Dhy.javac.compiler=modern' for classic javac.                
            </fail>
        </sequential>
    </macrodef>
   
   <presetdef name="hy.javac">
       <javac target="${hy.javac.target}" source="${hy.javac.source}" 
                compiler="${hy.javac.compiler}" debug="${hy.javac.debug}">
           <compilerarg line="${build.compilerarg}" />
       </javac>
   </presetdef>

    <macrodef name="compile-tests">
        <attribute name="description" default="" />
        <attribute name="destdir" default="bin/test" />
        <element name="javac-elements" />
        <sequential>
            <echo message="Compiling @{description}" />
            
            <mkdir dir="@{destdir}" />
            
            <javac destdir="@{destdir}"
               compiler="${hy.javac.compiler}"
               memoryMaximumSize="${hy.javac.maxmem}"
               source="${hy.javac.source}" 
               target="${hy.javac.target}"
               debug="${hy.javac.debug}">

                <javac-elements />

                <compilerarg line="${build.compilerarg}" />

                <bootclasspath>
                    <fileset dir="${hy.jre}/lib/boot">
                        <include name="**/*.jar" />
                    </fileset>
                </bootclasspath>

                <classpath location="${hy.hdk}/build/test/support.jar" />
                <classpath location="../../build/classes" />
            </javac>
        </sequential>
    </macrodef>

    <macrodef name="run-hdk-tests">
        <attribute name="module" />
        <attribute name="jar" />
        <element name="junit-elements" optional="true"/>
        <element name="excludeorinclude" optional="true"/>
        <sequential>
            <echo message="Running @{module} Unit Test from @{jar}" />
            <echo message="Tested jre: ${test.jre.home}/bin/java" />
            <property name="test.module.dir" value="${target.dir}/@{module}" />
            <property name="test.excludes.dir" value="${test.module.dir}/excludes" />
            <property name="test.resources.dir" value="${test.module.dir}/resources" />
            <property name="module.work.dir" location="${work.dir}/@{module}" />
            <property name="test.exclude.file" value="${module.work.dir}/test.exclude" />

            <property name="module.temp.dir"
                      location="${work.dir}/@{module}/temp" />
            <property name="junit.tempdir"
                      location="${module.temp.dir}/ant" />
            <property name="junit.java.io.tmpdir"
                      location="${module.temp.dir}/tmpdir" />
            <property name="junit.user.home"
                      location="${module.temp.dir}/user" />
            
            <mkdir dir="${tests.output}" /> 
            <mkdir dir="${junit.tempdir}" />
            <mkdir dir="${junit.java.io.tmpdir}" />
            <mkdir dir="${junit.user.home}" />

            <prepare-exclude-list moduleName="@{module}" dir="${test.excludes.dir}" result="${test.exclude.file}" />
            <junit fork="yes" 
                   forkmode="${hy.test.forkmode}" 
                   timeout="${hy.test.timeout}" 
                   printsummary="withOutAndErr" 
                   errorproperty="test.errors" 
                   failureproperty="test.failures" 
                   showoutput="on" 
                   dir="${work.dir}/@{module}" 
                   tempdir="${junit.tempdir}"
                   jvm="${test.jre.home}/bin/java">

                <jvmarg line="-Djava.io.tmpdir=${junit.java.io.tmpdir}" />
                <jvmarg line="-Duser.home=${junit.user.home}" />

                <classpath>
                    <fileset dir="${target.dir}">
                        <include name="*.jar" />
                    </fileset>
                    <pathelement path="${test.resources.dir}/" />
                    <pathelement path="${test.module.dir}/" />
                    <pathelement location="${test.module.dir}/@{jar}" />
                </classpath>

                <junit-elements />

                <batchtest todir="${tests.output}" haltonfailure="no">
                    <zipfileset src="${test.module.dir}/@{jar}" encoding="UTF-8">
                        <exclude name="Test.class" />
                        <exclude name="**/*$*" />

                        <!-- if ${test.case}     -->
                        <include name="${converted.tc.class}" if="test.case" />
                        <!-- unless ${test.case} -->
                        <include name="**/*Test.class" unless="test.case" />
                        <excludesfile name="${test.exclude.file}" unless="test.case"/>
                        <excludeorinclude/>
                    </zipfileset>
                </batchtest>

                <assertions enableSystemAssertions="true">
                    <enable />
                </assertions>

                <jvmarg line="${hy.test.vmargs}" />
                <!-- Used by Support_Exec.execJava() -->
                <jvmarg value="-Dhy.test.vmargs=${hy.test.vmargs}" />

                <formatter type="xml" />
            </junit>

            <delete dir="${module.temp.dir}"
                    includeemptydirs="true" failonerror="false" />

            <antcall target="touch-failures-file">
                <param name="module" value="@{module}" />
            </antcall>
            <antcall target="touch-errors-file">
                <param name="module" value="@{module}" />
            </antcall>

        </sequential>
    </macrodef>

    <!-- TOFIX: Can't seem to override the line:
             <include name="**/*Test.class" unless="test.case" />
         so this is just run-hdk-tests without that line -->
    <macrodef name="run-selected-hdk-tests">
        <attribute name="module" />
        <attribute name="jar" />
        <element name="junit-elements" optional="true"/>
        <element name="excludeorinclude" optional="true"/>
        <sequential>
            <echo message="Running @{module} Unit Test from @{jar}" />
            <echo message="Tested jre: ${test.jre.home}/bin/java" />
            <property name="test.module.dir" value="${target.dir}/@{module}" />
            <property name="test.excludes.dir" value="${test.module.dir}/excludes" />
            <property name="test.resources.dir" value="${test.module.dir}/resources" />
            <property name="test.exclude.file" value="${work.dir}/@{module}/test.exclude" />
            
            <mkdir dir="${tests.output}" /> 

            <prepare-exclude-list moduleName="@{module}" dir="${test.excludes.dir}" result="${test.exclude.file}" />
            <junit fork="yes" 
                   forkmode="${hy.test.forkmode}" 
                   timeout="${hy.test.timeout}" 
                   printsummary="withOutAndErr" 
                   errorproperty="test.errors" 
                   failureproperty="test.failures" 
                   showoutput="on" 
                   dir="${work.dir}/@{module}" 
                   tempdir="${work.dir}"
                   jvm="${test.jre.home}/bin/java">

                <classpath>
                    <fileset dir="${target.dir}">
                        <include name="*.jar" />
                    </fileset>
                    <pathelement path="${test.resources.dir}/" />
                    <pathelement path="${test.module.dir}/" />
                    <pathelement location="${test.module.dir}/@{jar}" />
                </classpath>

                <junit-elements />

                <batchtest todir="${tests.output}" haltonfailure="no">
                    <zipfileset src="${test.module.dir}/@{jar}" encoding="UTF-8">
                        <exclude name="Test.class" />
                        <exclude name="**/*$*" />

                        <!-- if ${test.case}     -->
                        <include name="${converted.tc.class}" if="test.case" />
                        <!-- unless ${test.case} -->
                        <excludesfile name="${test.exclude.file}" unless="test.case"/>
                        <excludeorinclude/>
                    </zipfileset>
                </batchtest>

                <assertions enableSystemAssertions="true">
                    <enable />
                </assertions>

                <jvmarg line="${hy.test.vmargs}" />
                <!-- Used by Support_Exec.execJava() -->
                <jvmarg value="-Dhy.test.vmargs=${hy.test.vmargs}" />

                <formatter type="xml" />
            </junit>

            <antcall target="touch-failures-file">
                <param name="module" value="@{module}" />
            </antcall>
            <antcall target="touch-errors-file">
                <param name="module" value="@{module}" />
            </antcall>

        </sequential>
    </macrodef>

    <target name="touch-failures-file" if="test.failures">
        <echo file="${tests.output}/test.failures"
            append="true">${module}${line.separator}</echo>
    </target>

    <target name="touch-errors-file" if="test.errors">
        <echo file="${tests.output}/test.errors"
            append="true">${module}${line.separator}</echo>
    </target>

    <!-- To use with -Dtest.case=... option                   -->
    <!-- if ${test.case} is provided in package+class form    -->
    <!-- it is converted to dir+filename form                 -->
    <macrodef name="convert-test-as-class">
        <attribute name="from" />
        <attribute name="to" />
        <sequential>
            <pathconvert property="@{to}" setonempty="no">
                <path path="${@{from}}" />
                <chainedmapper>
                    <filtermapper>
                        <replaceregex pattern="\.java$$" />
                    </filtermapper>
                    <unpackagemapper from="${basedir}${file.separator}*" to="*.class" />
                </chainedmapper>
            </pathconvert>
        </sequential>
    </macrodef>

    <macrodef name="make-patternset">
        <attribute name="source" default="src/main" />
        <attribute name="module" />
        <attribute name="file"
                   default="${hy.hdk}/build/ant/patternsets/@{module}.txt" />
        <sequential>
            <dirname file="@{file}" property="@{file}.dir" />
            <mkdir dir="${@{file}.dir}" />
            <property name="@{source}.loc" location="@{source}"/>

            <pathconvert targetos="unix" property="@{file}.content"
                         pathsep="${line.separator}">
                <fileset dir="${@{source}.loc}" includes="java*/**/*.java" />
                <map from="${@{source}.loc}/java/unix/" to="" />
                <map from="${@{source}.loc}/java/windows/" to="" />
                <map from="${@{source}.loc}/java/common/" to="" />
                <map from="${@{source}.loc}/java5/" to="" />
                <map from="${@{source}.loc}/java/" to="" />
                <compositemapper>
                    <mapper type="regexp" from="^(.*)\.java$$" to="\1.*"/>
                    <mapper type="regexp" from="^(.*)\.java$$" to="\1$*.*"/>
                </compositemapper>
            </pathconvert>
            <echo message="${@{file}.content}${line.separator}"
                  file="@{file}" />
        </sequential>
    </macrodef>

    <macrodef name="delete-patternset">
        <attribute name="module" />
        <sequential>
            <delete file="${hy.hdk}/build/ant/patternsets/@{module}.txt" />
        </sequential>
    </macrodef>

    <macrodef name="run-findBugs">
       <attribute name="outputFile"/>
       <attribute name="excludeFilter"/>
       <attribute name="jarFile"/>
       <sequential>
           <!-- Find and define findbugs task -->
           <property name="findbugs.home" location="${basedir}/../../depends/oss/findbugs-1.3.9"/>
           <available
               classname="edu.umd.cs.findbugs.anttask.FindBugsTask"
               classpath="${findbugs.home}/lib/findbugs-ant.jar"
               property="findbugs.available"/>
           <taskdef
               name="findbugs"
               classname="edu.umd.cs.findbugs.anttask.FindBugsTask"
               classpath="${findbugs.home}/lib/findbugs-ant.jar"
               onerror="ignore"/>
          <fail message="FindBugs is unavailable" unless="findbugs.available"/>

          <!-- Run findbugs using the attributes given -->
          <dirname file="@{outputFile}" property="@{outputFile}.dir" />
          <mkdir dir="${@{outputFile}.dir}" />
          <findbugs home="${findbugs.home}"
            output="xml"
            outputFile="@{outputFile}"
            excludeFilter="@{excludeFilter}"
            jvmargs="-Xmx512M"
            workhard="true">
            <auxClasspath>
                <fileset dir="${hy.jdk}/jre/lib/boot">
                    <include name="**/*.jar" />
                </fileset>
            </auxClasspath>
            <sourcePath path="src/main/java" />
            <sourcePath path="src/main/java/common" />
            <sourcePath path="src/main/java/${hy.os.family}" />
            <class location="@{jarFile}" />
        </findbugs>
       </sequential>
    </macrodef>

</project>
