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

  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="remoting/build.xml" default="main" basedir="..">

    <!-- properties -->
    <property file="${basedir}/build.properties"/>
    <property name="lib.dir" value="${basedir}/lib"/>

    <property name="module.dir" value="${basedir}/remoting"/>
    <property name="module.src" value="${module.dir}/src"/>
    <property name="module.classes" value="${module.dir}/classes"/>
    <property name="module.jar" value="${lib.dir}/flex-messaging-remoting.jar"/>

    <property name="build.number" value=""/>

    <path id="classpath">
        <fileset dir="${lib.dir}" erroronmissingdir="false" includes="flex-messaging-common.jar"/>
        <fileset dir="${lib.dir}" erroronmissingdir="false" includes="flex-messaging-core.jar"/>
    </path>

    <target name="main" depends="clean,prepare,run-depend,jar" description="cleans and runs the full build"/>

    <target name="prepare">
        <echo>${ant.file}</echo>
        <mkdir dir="${module.classes}"/>
    </target>

    <target name="run-depend" if="src.depend">
        <echo message="Removing class files that changed and dependent class files."/>
        <depend cache="${module.classes}" srcdir="${module.src}" destdir="${module.classes}"/>
    </target>

    <target name="clean" description="clean">
        <delete file="${module.jar}" failonerror="false"/>
        <delete failonerror="false" includeEmptyDirs="true">
            <fileset dir="${module.classes}">
                <include name="**/*"/>
                <exclude name="dependencies.txt"/>
                <exclude name=".dependency-info/**"/>
            </fileset>
        </delete>
        <delete quiet="true" dir="${module.classes}"/>
        <echo>modules/remoting clean</echo>
    </target>

    <target name="compile" depends="prepare" description="compile">
        <javac debug="${src.debug}" destdir="${module.classes}" srcdir="${module.src}"
               includes="**/*.java" classpathref="classpath"/>
        <echo file="${module.classes}/flex/messaging/version.properties" append="false">build=${build.number}</echo>
    </target>

    <!-- jar containing messaging core infrastructure -->
    <target name="jar" depends="compile">
        <jar destfile="${module.jar}" basedir="${module.classes}">
            <include name="flex/management/**"/>
            <include name="flex/messaging/**"/>
            <exclude name=".dependency-info/**"/>
            <manifest>
                <attribute name="Sealed" value="${manifest.sealed}"/>
                <attribute name="Implementation-Title"
                           value="${manifest.Implementation-Title} - Community Edition - Remoting Module"/>
                <attribute name="Implementation-Version" value="${manifest.Implementation-Version}.${build.number}"/>
                <attribute name="Implementation-Vendor" value="${manifest.Implementation-Vendor}"/>
            </manifest>
        </jar>
    </target>

</project>
