﻿<?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="Apache.NMS.ActiveMQ" default="default" xmlns="http://nant.sourceforge.net/release/0.85/nant.xsd">
    <!-- ============================================================================================ -->
    <!--      I N I T I A L I Z A T I O N                                                             -->
    <!-- ============================================================================================ -->
    <property name="basedir" value="${project::get-base-directory()}" />
    <property name="project.name" value="Apache.NMS.ActiveMQ" />
    <property name="project.group" value="org.apache.activemq" />
    <property name="project.version" value="1.7.0" unless="${property::exists('project.version')}" />
    <property name="project.release.type" value="GA" unless="${property::exists('project.release.type')}" />
    <property name="project.short_description" value="Apache NMS for ActiveMQ Class Library" />
    <property name="project.description" value="Apache NMS for ActiveMQ Class Library (.Net Messaging Library Implementation): An implementation of the NMS API for ActiveMQ" />

    <!-- Lib organized as: module/plaform/artifact, platform might be something like 'all' or 'net-2.0/release' -->
    <property name="nunit.dll" value="${basedir}/lib/NUnit/${current.build.framework}/nunit.framework.dll" dynamic="true" />
    <property name="dotnetzip.dll" value="${basedir}/lib/DotNetZip/${current.build.framework}/Ionic.Zlib.dll" dynamic="true" />
    <property name="Apache.NMS.dll" value="${basedir}/lib/Apache.NMS/${current.build.framework}/Apache.NMS.dll" dynamic="true" />
    <property name="Apache.NMS.pdb" value="${basedir}/lib/Apache.NMS/${current.build.framework}/Apache.NMS.pdb" dynamic="true" />
    <property name="Apache.NMS.Test.dll" value="${basedir}/lib/Apache.NMS/${current.build.framework}//Apache.NMS.Test.dll" dynamic="true" />
    <property name="Apache.NMS.Test.pdb" value="${basedir}/lib/Apache.NMS/${current.build.framework}/Apache.NMS.Test.pdb" dynamic="true" />
    <property name="NUnit.Projectfile" value="Apache.NMS.ActiveMQ.Test.nunit" />

    <!-- Skip certain frameworks, since ActiveMQ OpenWire is not supported on those platforms. -->
    <property name="build.netcf-2.0.skip" value="true" />
    <property name="build.netcf-3.5.skip" value="true" />

    <target name="vendor-init" description="Initializes Vendor library from local repository.">
        <!--
           Vendor specific info.  The prefix of 'vendor.apache.org' is taken from the property
           'vendor.fileset.names'.  This comma-delimited list is iterated, and properties with
           well-known suffixes are used to access and copy down vendor file dependencies.
        -->
        <property name="vendor.fileset.names" value="vendor.apache.org,vendor.nunit.org,vendor.dotnetzip.org" />

        <!-- Property grouping for 'vendor.apache.org' -->
        <property name="vendor.apache.org.name" value="Apache.NMS" />
        <property name="vendor.apache.org.group" value="org.apache.activemq" />
        <property name="vendor.apache.org.version" value="1.7.0" />
        <if test="${current.build.framework == 'mono-2.0' or current.build.framework == 'mono-4.0'}">
            <property name="vendor.apache.org.filenames" value="Apache.NMS.dll,Apache.NMS.dll.mdb,Apache.NMS.Test.dll,Apache.NMS.Test.dll.mdb" />
        </if>
        <if test="${not (current.build.framework == 'mono-2.0' or current.build.framework == 'mono-4.0')}">
            <property name="vendor.apache.org.filenames" value="Apache.NMS.dll,Apache.NMS.pdb,Apache.NMS.Test.dll,Apache.NMS.Test.pdb" />
        </if>

        <!-- Property grouping for 'vendor.nunit.org' -->
        <property name="vendor.nunit.org.name" value="NUnit" />
        <property name="vendor.nunit.org.group" value="org.nunit" />
        <property name="vendor.nunit.org.version" value="2.5.8" />
        <property name="vendor.nunit.org.filenames" value="nunit.framework.dll" />

        <!-- Property grouping for 'vendor.dotnetzip.org' -->
        <property name="vendor.dotnetzip.org.name" value="DotNetZip" />
        <property name="vendor.dotnetzip.org.group" value="org.dotnetzip" />
        <property name="vendor.dotnetzip.org.version" value="1.9.1.8" />
        <property name="vendor.dotnetzip.org.filenames" value="Ionic.Zlib.dll" />
    </target>

    <target name="dependency-init" description="Initializes build dependencies">
        <assemblyfileset failonempty="true" id="dependencies">
            <include name="${current.build.framework.assembly.dir}/mscorlib.dll" />
            <include name="${current.build.framework.assembly.dir}/System.dll" />
            <include name="${current.build.framework.assembly.dir}/System.Web.dll" />
            <include name="${current.build.framework.assembly.dir}/System.Xml.dll" />
            <include name="${current.build.framework.assembly.dir}/System.Transactions.dll" />
            <include name="${Apache.NMS.dll}" />
            <include name="${dotnetzip.dll}" />
        </assemblyfileset>

        <assemblyfileset failonempty="true" id="test.dependencies">
            <include name="${current.build.framework.assembly.dir}/mscorlib.dll" />
            <include name="${current.build.framework.assembly.dir}/System.dll" />
            <include name="${current.build.framework.assembly.dir}/System.Data.dll" />
            <include name="${current.build.framework.assembly.dir}/System.Xml.dll" />
            <include name="${current.build.framework.assembly.dir}/System.Transactions.dll" />
            <include name="${Apache.NMS.dll}" />
            <include name="${Apache.NMS.Test.dll}" />
            <include name="${build.bin.dir}/${project.name}.dll" />
            <include name="${nunit.dll}" />
            <include name="${dotnetzip.dll}" />
        </assemblyfileset>

        <fileset id="content.filenames">
            <include name="LICENSE.txt" />
            <include name="NOTICE.txt" />
            <include name="nmsprovider-*.config" />
            <include name="${Apache.NMS.dll}" />
            <include name="${Apache.NMS.pdb}" />
            <include name="${Apache.NMS.Test.dll}" />
            <include name="${Apache.NMS.Test.pdb}" />
            <include name="${dotnetzip.dll}" />
            <include name="${nunit.dll}" />
            <include name="${NUnit.Projectfile}" />
        </fileset>

        <fileset id="install.filenames">
            <include name="LICENSE.txt" />
            <include name="NOTICE.txt" />
            <include name="${build.bin.dir}/${project.name}.dll" />
            <include name="${build.bin.dir}/${project.name}.pdb" />
            <include name="${build.bin.dir}/${project.name}.dll.mdb" />
        </fileset>

    </target>

    <target name="default" depends="install-all" />

    <zipfileset id="src.package.contents" basedir="${basedir}">
        <include name="LICENSE.txt" />
        <include name="NOTICE.txt" />
        <include name="nant-common.xml" />
        <include name="nant.build" />
        <include name="nant.build" />
        <include name="nmsprovider*.config" />
        <include name="vs2008-*.csproj" />
        <include name="vs2008-*.csproj" />
        <include name="vs2008-*.sln" />
        <include name="keyfile/*" />
        <include name="src/**/*.cs" />
        <exclude name="src/sandbox/**" />
    </zipfileset>

    <zipfileset id="bin.package.contents" basedir="${basedir}">
        <include name="LICENSE.txt" />
        <include name="NOTICE.txt" />
        <include name="build/**/nmsprovider*" />
        <include name="build/**/${project.name}*" />
        <include name="lib/**/*" />
        <exclude name="build/**/%temp%/**" />
    </zipfileset>

    <!-- Load the common target definitions  -->
    <include buildfile="${basedir}/nant-common.xml" />
</project>
