blob: e2cd9a66cf49dc7e11573a9a7be0bf9ebed84b41 [file] [log] [blame]
<!--
! ASM: a very small and fast Java bytecode manipulation framework
! Copyright (c) 2000,2002,2003 INRIA, France Telecom
! All rights reserved.
!
! Redistribution and use in source and binary forms, with or without
! modification, are permitted provided that the following conditions
! are met:
! 1. Redistributions of source code must retain the above copyright
! notice, this list of conditions and the following disclaimer.
! 2. Redistributions in binary form must reproduce the above copyright
! notice, this list of conditions and the following disclaimer in the
! documentation and/or other materials provided with the distribution.
! 3. Neither the name of the copyright holders nor the names of its
! contributors may be used to endorse or promote products derived from
! this software without specific prior written permission.
!
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
! THE POSSIBILITY OF SUCH DAMAGE.
-->
<project name="ASM" default="compile">
<!-- ==================================== -->
<!-- ======== PROPERTY DEFINITION ======= -->
<!-- ==================================== -->
<property file="build.config"/>
<property file="build.properties"/>
<property name="src" value="${basedir}/src"/>
<property name="test" value="${basedir}/test"/>
<property name="doc" value="${basedir}/doc"/>
<property name="jdoc" value="${basedir}/jdoc"/>
<property name="web" value="${basedir}/web"/>
<property name="examples" value="${basedir}/examples"/>
<property name="examples.common" value="${examples}/common"/>
<property name="config" value="${basedir}/config"/>
<property name="archive" value="${basedir}/archive"/>
<property name="out" value="${basedir}/output"/>
<property name="out.build" value="${out}/build"/>
<property name="out.dist" value="${out}/dist"/>
<property name="out.dist.lib" value="${out.dist}/lib"/>
<property name="out.dist.doc" value="${out.dist}/doc"/>
<property name="out.dist.jdoc" value="${out.dist.doc}/javadoc"/>
<property name="out.dist.examples" value="${out.dist}/examples"/>
<property name="out.dist.externals" value="${out.dist}/externals"/>
<property name="out.test" value="${out}/test"/>
<property name="out.zip" value="${out}/zip"/>
<target name="properties">
<condition property="examples.exist">
<available file="${examples}"/>
</condition>
<condition property="web.exist">
<available file="${web}/build.xml"/>
</condition>
<condition property="paths.configured">
<and>
<isset property="objectweb.ant.tasks.path"/>
</and>
</condition>
</target>
<!-- ================================== -->
<!-- ======== INITIALIZATION ======= -->
<!-- ================================== -->
<target name="check" unless="paths.configured">
<echo message="The 'build.properties' file must be configured"/>
<fail/>
</target>
<target name="init" depends="properties,check">
<taskdef name="multipleAnt"
classname="org.objectweb.util.ant.MultipleAnt"
classpath="${objectweb.ant.tasks.path}"/>
<taskdef name="javadocMultipleLink"
classname="org.objectweb.util.ant.JavadocMultipleLink"
classpath="${objectweb.ant.tasks.path}"/>
<taskdef name="multipleCopy"
classname="org.objectweb.util.ant.MultipleCopy"
classpath="${objectweb.ant.tasks.path}"/>
<path id="classpath">
<pathelement location="${out.build}"/>
</path>
</target>
<!-- =================================== -->
<!-- ========== COMPILE ========== -->
<!-- =================================== -->
<target name="compile" depends="init">
<mkdir dir="${out.build}"/>
<javac destdir="${out.build}" optimize="on">
<classpath refid="classpath"/>
<src path="${src}"/>
<include name="**/*.java"/>
</javac>
</target>
<!-- =================================== -->
<!-- ========== TEST ========== -->
<!-- =================================== -->
<target name="test" depends="compile">
<ant antfile="${test}/build.xml" target="test" inheritRefs="true"/>
</target>
<!-- =================================== -->
<!-- ========== DIST ========== -->
<!-- =================================== -->
<target name="dist.init">
<mkdir dir="${out.dist}"/>
<mkdir dir="${out.dist.doc}"/>
<mkdir dir="${out.dist.jdoc}"/>
<mkdir dir="${out.dist.lib}"/>
</target>
<target name="jar" depends="dist.init,compile">
<multipleAnt dir="${archive}"/>
</target>
<target name="jdoc" depends="init,dist.init">
<copy todir="${out.dist.doc}"
preservelastmodified="yes"
includeEmptyDirs="false">
<fileset dir="${doc}">
<include name="**/*"/>
<exclude name="**/*.fig"/>
</fileset>
</copy>
<multipleAnt dir="${jdoc}"/>
</target>
<target name="examples" depends="init,dist.init" if="examples.exist">
<mkdir dir="${out.dist.examples}"/>
<copy todir="${out.dist.examples}"
preservelastmodified="yes"
includeEmptyDirs="yes">
<fileset dir="${examples}">
<exclude name="common"/>
<exclude name="common/**/*"/>
</fileset>
</copy>
<multipleCopy file="${examples}/common/build.xml"
toDir="${out.dist.examples}"
notReplace="yes"
preservelastmodified="yes">
<include name="*"/>
<exclude name="etc"/>
<exclude name="lib"/>
</multipleCopy>
<copy toDir="${out.dist.examples}" preservelastmodified="yes">
<fileset dir="${examples.common}">
<include name="**/*"/>
<exclude name="build.xml"/>
</fileset>
</copy>
<copy todir="${out.dist}">
<fileset dir=".">
<include name="externals/*.jar"/>
</fileset>
</copy>
</target>
<target name="dist" depends="jar,jdoc,examples">
<zip zipFile="${out.dist}/src.zip" basedir="${src}"/>
</target>
<!-- =================================== -->
<!-- ========== EXAMPLES ========== -->
<!-- =================================== -->
<target name="example" depends="jar,examples">
<ant inheritAll="false"
dir="${out.dist.examples}/${example.name}"
target="execute"/>
</target>
<!-- =================================== -->
<!-- ========== ZIP ========== -->
<!-- =================================== -->
<!-- creates zip files of the different distribution (source, binaries) -->
<target name="zip" depends="dist">
<mkdir dir="${out.zip}"/>
<tar destfile="${out.zip}/${product.name}-${product.version}.tar.gz"
compression="gzip">
<tarfileset dir="${basedir}" prefix="${product.name}-${product.version}">
<exclude name="build.config"/>
<exclude name="config/**"/>
<exclude name="config"/>
<exclude name="**/externals/**"/>
<exclude name="**/externals"/>
<exclude name="**/lib/**"/>
<exclude name="**/lib"/>
<exclude name="web/**"/>
<exclude name="web"/>
<exclude name="output/**"/>
<exclude name="output"/>
<exclude name="CVSROOT/**"/>
<exclude name="CVSROOT"/>
</tarfileset>
</tar>
<zip zipFile="${out.zip}/${product.name}-${product.version}-bin.zip">
<zipfileset dir="${out.dist}" prefix="${product.name}-${product.version}"/>
</zip>
</target>
<!-- =================================== -->
<!-- ========== WEB ========== -->
<!-- =================================== -->
<target name="web">
<ant dir="${web}"/>
</target>
<!-- =================================== -->
<!-- ========== CLEAN ========== -->
<!-- =================================== -->
<!-- remove all directories -->
<target name="clean.web" if="web.exist">
<ant dir="${web}" target="clean"/>
</target>
<target name="clean" depends="properties,clean.web">
<delete dir="${out.build}"/>
<delete dir="${out.dist}"/>
<delete dir="${out.zip}"/>
<delete dir="${out.test}"/>
</target>
<!-- ==================================== -->
<!-- ========== HELP ========== -->
<!-- ==================================== -->
<target name="help">
<echo message="The available targets are the following:"/>
<echo message=" compile: compiles the product into ${out.build}"/>
<echo message=" dist: creates the product's distributions into ${out.dist}"/>
<echo message=" zip: creates the product's distributions zip files into ${out.zip}"/>
<echo message=" clean: removes all generated files."/>
<echo message=" jar: creates all jars in ${out.dist.lib}"/>
<echo message=" test: run all tests"/>
<echo message=""/>
<echo message="There are some options to run tests:"/>
<echo message=" -Dtest.group=&lt;group name&gt; Only a group of test: The default target of"/>
<echo message=" the xml file is called the test.group contains the xml file name with"/>
<echo message=" directory ex: ant -Dtest.group=conform/toto test =&gt; calls the default"/>
<echo message=" target of the file ${test}/conform/toto.xml"/>
<echo message=" -Dtest.type=&lt;type name&gt; Only a type of test: conform, deviance, stress,"/>
<echo message=" thread or perf. The test.type properties contains the directory name of"/>
<echo message=" the test type ex: ant -Dtest.type=conform test"/>
<echo message=" -Dtest.name=&lt;test name&gt; Only a single test. The target &lt;test name&gt; is called"/>
</target>
</project>