<?xml version="1.0"?>
<!-- 
==========================================================================

 jSieve build file 


  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='jsieve-master' default="main" basedir=".">
    
    <macrodef name='Usage'>
        <sequential>
            <echo message="" />
            <echo message="" />
            <echo message="Apache JSieve" />
            <exec executable="ant" dir="${basedir}">
                <arg value="-projecthelp"/>
            </exec>
        </sequential>
    </macrodef>
    
    <macrodef name='CheckMailConditions'>
        <sequential>
            <available classname="javax.mail.Message" property="is.available.javamail" classpathref="project.test.class.path" />
            <available classname="javax.activation.MimeType" property="is.available.activation" classpathref="project.test.class.path" />
            <condition property="is.available.libs.test">
                <and>
                    <isset property='is.available.javamail' />
                    <isset property='is.available.activation' />
                </and>
            </condition>
        </sequential>
    </macrodef>
    
    <macrodef name='RunTests'>
        <sequential>
            <echo message="Running tests" />
            <mkdir dir="${build.dir}/reports" />
            <junit printsummary="yes" haltonfailure="yes" filtertrace="on">
                <!-- Uncomment this to remotely debug the tests
                <jvmarg line="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y"/>
                -->
                <classpath id="junit.class.path">
                    <pathelement path="${java.class.path}" />
                    <pathelement path='${build.classes.test}'/>
                    <path refid='project.test.class.path' />
                </classpath>
                <formatter type="plain" />
                <batchtest fork="yes" todir="${build.dir}/reports">
                    <fileset dir="${build.classes.test}">
                        <include name="**/*Test.class" />
                    </fileset>
                </batchtest>
            </junit>
        </sequential>
    </macrodef>
    
    <macrodef name='Clean'>
        <sequential>
            <echo message="deleting working directories ready for a clean build" />
            <delete dir='${build.dir}' />
            <mkdir dir='${build.dir}' />
        </sequential>
    </macrodef>
    
    <macrodef name='Jar'>
        <attribute name='name'/>
        <attribute name='prefix' default='-'/>
        <sequential>
            <mkdir dir="${build.lib}" />
            <echo message="Making jSieve Jar (${name}@{prefix}@{name}-${version}.jar)" />
            <jar jarfile="${build.lib}/${name}@{prefix}@{name}-${version}.jar" basedir="${build.classes}">
                <include name="org/apache/jsieve/**" />
                <include name="META-INF/**" />
                <manifest>
                    <attribute name="Extension-Name" value='${extension.name}' />
                    <attribute name="Specification-Title" value='${title.spec}' />
                    <attribute name="Specification-Vendor" value='${vendor}' />
                    <attribute name="Specification-Version" value='${version.spec}' />
                    <attribute name="Implementation-Vendor-Id" value='${vendor.id}' />
                    <attribute name="Implementation-Title" value='${title.impl}' />
                    <attribute name="Implementation-Vendor" value='${vendor}' />
                    <attribute name="Implementation-Version" value='${version}' />
                    <attribute name="X-Compile-Source-JDK" value='${jdk.source}' />
                    <attribute name="X-Compile-Target-JDK" value='${jdk.target}' />
                </manifest>
            </jar>

            <taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${bnd.jar.relative}" />
            <bndwrap jars='${build.lib}/${name}@{prefix}@{name}-${version}.jar' output='${build.lib}/${name}@{prefix}@{name}-${version}.jar' definitions="." />
            <copy todir='${lib.jsieve.dir}' file='${build.lib}/${name}@{prefix}@{name}-${version}.jar' />
        </sequential>
    </macrodef>
    
    <macrodef name='CompileTests'>
        <sequential>
            <fail unless="is.available.libs.test">JavaMail is required for testing</fail>
            <echo message="Compiling jSieve test sources" />
            <mkdir dir="${build.classes.test}" />
            <javac destdir="${build.classes.test}" debug="${debug}" optimize="${optimize}" deprecation="${deprecation}" source="${jdk.source}" target="${jdk.target}">
                <classpath refid="project.test.class.path" />
                <src path="${test.dir}" />
                <include name="org/apache/jsieve/**" />
            </javac>
            <copy todir="${build.classes}">
                <fileset dir="${java.dir}">
                    <include name="**/*.properties" />
                </fileset>
            </copy>
            <copy todir="${build.classes.test}">
                <fileset dir="${testconf.dir}">
                    <include name="**/*.properties" />
                </fileset>
            </copy>
            <copy file='LICENSE.apache' tofile="${build.classes}/META-INF/LICENSE.txt" />
            <copy tofile="${build.classes}/META-INF/NOTICE.txt" file='NOTICE.base' />
        </sequential>
    </macrodef>
    
    <macrodef name='CompileMain'>
        <element name="src" implicit='true'/>
        <sequential>
            <echo message="Compiling JSieve sources" />
            <mkdir dir="${build.classes}" />
            <javac 
                destdir="${build.classes}" 
                debug="${debug}" 
                optimize="${optimize}" 
                deprecation="${deprecation}" 
                source="${jdk.source}" 
                target="${jdk.target}">
                <classpath refid="project.class.path" />
                <src/>
                <include name="org/apache/jsieve/**" />
            </javac>
            <copy todir="${build.classes}">
                <fileset dir="${conf.dir}">
                    <include name="**/*.properties" />
                </fileset>
            </copy>
            <copy file='LICENSE.apache' tofile="${build.classes}/META-INF/LICENSE.txt" />
            <copy tofile="${build.classes}/META-INF/NOTICE.txt" file='NOTICE.base' />
        </sequential>
    </macrodef>

    <macrodef name='forall' description='Executes a target for all modules'>
        <attribute name='do' />
        <attribute name='dir' default='.' />
        <sequential>
            <subant target='@{do}'>
                <fileset dir='@{dir}' includes='main/build.xml' />
                <fileset dir='@{dir}' includes='util/build.xml' />
                <fileset dir='@{dir}' includes='mailet/build.xml' />
            </subant>
        </sequential>
    </macrodef>


    <target name='clean' description=' - cleans modules                [multimodule]'>
        <forall do='clean' />
    </target>

    <target name='main'  description=' - builds modules                [multimodule]'>
        <echo>Note that Maven is used for the releases</echo>
        <forall do='main' />
    </target>
</project>
