| <?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="Common property definitions" default="echo"> |
| <description> |
| Ant file of common properties to be imported by other ant files |
| </description> |
| |
| <property file="${user.home}/.harmony.properties" /> |
| <dirname property="common.basedir" |
| file="${ant.file.Common property definitions}"/> |
| |
| <import file="${common.basedir}/platform.xml"/> |
| <import file="${common.basedir}/svn.xml"/> |
| |
| <fail message="Property 'hy.target' is not defined"> |
| <condition> |
| <not><isset property="hy.target" /></not> |
| </condition> |
| </fail> |
| <fail message="Property 'hy.component' is not defined"> |
| <condition> |
| <not><isset property="hy.component" /></not> |
| </condition> |
| </fail> |
| <fail message="Property 'hy.module' is not defined"> |
| <condition> |
| <not><isset property="hy.module" /></not> |
| </condition> |
| </fail> |
| <property name="hy.hdk" location="${hy.target}/hdk" /> |
| <property name="hy.jdk" location="${hy.hdk}/jdk" /> |
| <property name="hy.jre" location="${hy.jdk}/jre" /> |
| <property name="hy.build.root" location="${hy.target}/build" /> |
| <property name="hy.build" location="${hy.build.root}/${hy.component}" /> |
| <property name="hy.build.top" location="${hy.build}/toplevel" /> |
| <property name="hy.build.mod" location="${hy.build}/${hy.module}" /> |
| |
| <!-- Root directory of the common dependency pool --> |
| <property name="hy.depends" location="${hy.target}/depends" /> |
| |
| <!-- Debug or release version --> |
| <property name="hy.cfg" value="debug" /> |
| <property name="hy.specification.version" value="1.5" /> |
| |
| <!-- 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="build.compilerarg" value="-nowarn" /> |
| |
| <!-- Temporarily always include class file debug info --> |
| <condition property="hy.javac.debug" value="on" else="on"> |
| <equals arg1="${hy.cfg}" arg2="debug" /> |
| </condition> |
| |
| <!-- Include only stack trace information into release build --> |
| <condition property="hy.javac.debuglevel" value="lines,vars,source" |
| else="lines,source"> |
| <equals arg1="${hy.cfg}" arg2="debug" /> |
| </condition> |
| <property name="hy.jar.compress" value="true" /> |
| |
| |
| <!-- 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="" /> |
| <condition property="hy.run.impl.tests" value="true"> |
| <istrue value="${hy.test.impl}" /> |
| </condition> |
| |
| <condition property="png.home" value="/usr/local"> |
| <isset property="is.freebsd"/> |
| </condition> |
| <condition property="png.home" value="/opt/local"> |
| <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="/opt/local"> |
| <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="/opt/local"> |
| <isset property="is.macosx"/> |
| </condition> |
| <property name="jpeg.home" value="/usr" /> |
| |
| <condition property="is.select" value="true"> |
| <istrue value="${hy.select}" /> |
| </condition> |
| <condition property="is.not.select" value="true"> |
| <not><istrue value="${hy.select}" /></not> |
| </condition> |
| |
| <!-- default property for poll-modules macro - i.e. all modules --> |
| <property name="build.module" value="*" /> |
| <condition property="exclude.module" |
| value="accessibility,applet,awt,imageio,orb,print,rmi,sound,swing"> |
| <istrue value="${hy.select}" /> |
| </condition> |
| <property name="exclude.module" value="nothing" /> |
| <property name="build.java" value="true" /> |
| <property name="build.native" value="true" /> |
| <property name="build.test" value="true" /> |
| <condition property="skip.java.build" value="true"> |
| <equals arg1="${build.java}" arg2="false" /> |
| </condition> |
| <condition property="skip.native.build" value="true"> |
| <equals arg1="${build.native}" arg2="false" /> |
| </condition> |
| <condition property="skip.test.build" value="true"> |
| <equals arg1="${build.test}" arg2="false" /> |
| </condition> |
| |
| <!-- flags --> |
| <property name="hy.no.thr" value="false" /> |
| <condition property="hy.skip.thr" value="true"> |
| <istrue value="${hy.no.thr}" /> |
| </condition> |
| |
| <property name="hy.thr.no.deploy" value="false" /> |
| <condition property="hy.thr.deploy" value="true"> |
| <equals arg1="${hy.thr.no.deploy}" arg2="false" /> |
| </condition> |
| |
| <property name="hy.local.zlib" value="false" /> |
| <condition property="hy.skip.zlib" value="true"> |
| <istrue value="${hy.local.zlib}" /> |
| </condition> |
| |
| <property name="hy.zip.api" value="false" /> |
| <condition property="hy.skip.zip.api" value="true"> |
| <isfalse value="${hy.zip.api}" /> |
| </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.platform.suffix" value=".libstdc++5"> |
| <isset property="use.libstdc++5"/> |
| </condition> |
| <condition property="hy.platform.suffix" value=".8x"> |
| <!-- matches would be better but debian stable has ant 1.6.5 |
| and matches was only added to 1.7.0 and above --> |
| <and> |
| <equals arg1="FreeBSD" arg2="${os.name}" casesensitive="false" /> |
| <contains substring="8." string="${os.version}"/> |
| </and> |
| </condition> |
| <condition property="hy.platform.suffix" value=".7x"> |
| <!-- matches would be better but debian stable has ant 1.6.5 |
| and matches was only added to 1.7.0 and above --> |
| <and> |
| <equals arg1="FreeBSD" arg2="${os.name}" casesensitive="false" /> |
| <contains substring="7." string="${os.version}"/> |
| </and> |
| </condition> |
| <property name="hy.platform.suffix" value="" /> |
| <property name="hy.platform.variant" |
| value="${hy.platform}${hy.platform.suffix}" /> |
| |
| <!-- fileset to represent classes built by a module. --> |
| <fileset id="classes" dir="${hy.build.top}/java"> |
| <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" /> |
| |
| <propertyset id="module.props"> |
| <propertyref name="hy.component" /> |
| <propertyref name="hy.cfg" /> |
| <propertyref name="hy.test.vm.name" /> |
| <propertyref name="svn.revision" /> |
| <propertyref name="svn.info" /> |
| <propertyref name="hy.no.thr" /> |
| <propertyref name="hy.zip.api" /> |
| <propertyref name="hy.select" /> |
| </propertyset> |
| |
| <target name="echo" depends="-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 properties are only set if the "-svn-info" target has been |
| called: |
| |
| svn.revision = ${svn.revision} |
| 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="test-jre-vm-info" depends="-get-test-vm-output"> |
| <!-- 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.target" location="${hy.target}"/> |
| <propertyset refid="module.props" /> |
| <fileset dir="@{dir}" includes="@{includes}" excludes="@{excludes}"> |
| <containsregexp expression="<target[^>]*name="@{target}""/> |
| </fileset> |
| </subant> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="make"> |
| <attribute name="dir" /> |
| <attribute name="target" default="" /> |
| <element name="make-elements" optional="true" /> |
| <sequential> |
| <echo>Making "@{target}" in @{dir}</echo> |
| <echo file="${hy.hdk}/build/make/properties.${make.suffix}"> |
| HY_ZIP_API=${hy.zip.api} |
| HY_PORTLIB_STUBS=${hy.portlib.stubs} |
| HY_CFG=${hy.cfg} |
| HY_ARCH=${hy.arch} |
| HY_ARCH_FAMILY=${hy.arch.family} |
| HY_OS=${hy.os} |
| HY_PLATFORM=${hy.platform} |
| HY_NO_THR=${hy.no.thr} |
| HY_THR_NO_DEPLOY=${hy.thr.no.deploy} |
| HY_LOCAL_ZLIB=${hy.local.zlib} |
| HY_SHLIB_SUFFIX=${shlib.suffix} |
| HY_LINKLIB_SUFFIX=${linklib.suffix} |
| </echo> |
| <exec failonerror="true" |
| executable="${make.command}" |
| dir="@{dir}"> |
| <env key="HY_HDK" value="${hy.hdk}" /> |
| <env key="HY_TARGET" value="${hy.target}" /> |
| <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" /> |
| |
| <!-- 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" /> |
| |
| <!-- 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> |
| <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 target/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 compiler="${hy.javac.compiler}" |
| memoryMaximumSize="${hy.javac.maxmem}" |
| source="${hy.javac.source}" |
| target="${hy.javac.target}" |
| debug="${hy.javac.debug}" |
| debuglevel="${hy.javac.debuglevel}" |
| includeantruntime="false"> |
| <compilerarg line="${build.compilerarg}" /> |
| </javac> |
| </presetdef> |
| |
| <presetdef name="hy.jar.bin"> |
| <jar compress="${hy.jar.compress}"> |
| <manifest> |
| <attribute name="Implementation-Title" value="Apache Harmony"/> |
| <attribute name="Implementation-Vendor" |
| value="The Apache Software Foundation"/> |
| <attribute name="Implementation-Vendor-Id" |
| value="org.apache.harmony"/> |
| <attribute name="Implementation-URL" |
| value="http://harmony.apache.org"/> |
| <attribute name="Implementation-Version" value="${svn.info}"/> |
| <attribute name="Specification-Vendor" |
| value="Sun Microsystems, Inc." /> |
| <attribute name="Specification-Title" |
| value="Java Platform API Specification" /> |
| <attribute name="Specification-Version" |
| value="${hy.specification.version}" /> |
| <attribute name="X-Compile-Source-JDK" |
| value="${hy.javac.source}"/> |
| <attribute name="X-Compile-Target-JDK" |
| value="${hy.javac.target}"/> |
| </manifest> |
| <metainf refid="hy.required.metainf-files"/> |
| </jar> |
| </presetdef> |
| |
| <presetdef name="hy.jar.src"> |
| <jar compress="${hy.jar.compress}"> |
| <manifest> |
| <attribute name="Implementation-Title" value="Apache Harmony"/> |
| <attribute name="Implementation-Vendor" |
| value="The Apache Software Foundation"/> |
| <attribute name="Implementation-Vendor-Id" |
| value="org.apache.harmony"/> |
| <attribute name="Implementation-URL" |
| value="http://harmony.apache.org"/> |
| <attribute name="Implementation-Version" value="${svn.info}"/> |
| <attribute name="Specification-Vendor" |
| value="Sun Microsystems, Inc." /> |
| <attribute name="Specification-Title" |
| value="Java Platform API Specification" /> |
| <attribute name="Specification-Version" |
| value="${hy.specification.version}" /> |
| </manifest> |
| <metainf refid="hy.required.metainf-files"/> |
| </jar> |
| </presetdef> |
| |
| <macrodef name="compile-classes"> |
| <attribute name="description" default="" /> |
| <attribute name="destdir" default="${hy.build.top}/java" /> |
| <element name="javac-elements" /> |
| <sequential> |
| <echo message="Compiling @{description}" /> |
| |
| <mkdir dir="@{destdir}" /> |
| |
| <hy.javac sourcepath="" destdir="@{destdir}"> |
| <javac-elements /> |
| <compilerarg line="${build.compilerarg}" /> |
| <bootclasspath> |
| <fileset dir="${hy.jre}/lib/boot"> |
| <include name="**/*.jar" /> |
| </fileset> |
| </bootclasspath> |
| </hy.javac> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="compile-tests"> |
| <attribute name="description" default="" /> |
| <attribute name="destdir" default="${hy.build.mod}/test/api" /> |
| <element name="javac-elements" /> |
| <sequential> |
| <echo message="Compiling @{description}" /> |
| |
| <mkdir dir="@{destdir}" /> |
| |
| <mkdir dir="${hy.hdk}/build/test" /> |
| <copy file="${junit.jar}" |
| tofile="${hy.hdk}/build/test/junit.jar" /> |
| <copy file="${hamcrest-library.jar}" |
| tofile="${hy.hdk}/build/test/hamcrest-library.jar" /> |
| |
| <hy.javac destdir="@{destdir}"> |
| |
| <javac-elements /> |
| |
| <compilerarg line="${build.compilerarg}" /> |
| |
| <bootclasspath> |
| <fileset dir="${hy.jre}/lib/boot"> |
| <include name="**/*.jar" /> |
| </fileset> |
| </bootclasspath> |
| |
| <classpath location="${hy.build.top}/java" /> |
| <classpath location="${hy.hdk}/build/test/junit.jar" /> |
| <classpath |
| location="${hy.hdk}/build/test/hamcrest-library.jar" /> |
| <classpath location="${hy.hdk}/build/test/support.jar" /> |
| </hy.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="${hy.test.root}/@{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="${hy.test.root}"> |
| <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="${hy.test.root}/@{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="${hy.test.root}"> |
| <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> |
| |
| <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> |
| |
| <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="${hy.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/java5" /> |
| <sourcePath path="src/main/java/common" /> |
| <sourcePath path="src/main/java/${hy.os.family}" /> |
| <class location="@{jarFile}" /> |
| </findbugs> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="init-hdk"> |
| <sequential> |
| <mkdir dir="${hy.hdk}/build/ant" /> |
| <copy file="${common.resources}/make/depends.xml" |
| tofile="${hy.hdk}/build/ant/depends.xml" |
| outputencoding="UTF-8" /> |
| <copy file="${common.resources}/make/depends.properties" |
| tofile="${hy.hdk}/build/ant/depends.properties" |
| outputencoding="UTF-8" /> |
| |
| <mkdir dir="${hy.hdk}/build/make" /> |
| <copy todir="${hy.hdk}/build/make" overwrite="yes"> |
| <fileset dir="${common.resources}/depends/build"> |
| <include name="**" /> |
| </fileset> |
| </copy> |
| |
| </sequential> |
| </macrodef> |
| |
| </project> |