| <!-- |
| ! 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=<group name> 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 => calls the default"/> |
| <echo message=" target of the file ${test}/conform/toto.xml"/> |
| <echo message=" -Dtest.type=<type name> 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=<test name> Only a single test. The target <test name> is called"/> |
| </target> |
| |
| </project> |