﻿<?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" 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" />
    <property name="project.group" value="org.apache.activemq" />
    <property name="project.version" value="1.2.1" unless="${property::exists('project.version')}" />
    <property name="project.release.type" value="SNAPSHOT" unless="${property::exists('project.release.type')}" />
    <property name="project.short_description" value="Apache NMS Class Library" />
    <property name="project.description" value="Apache NMS (.Net Messaging Library): An abstract interface to Message Oriented Middleware (MOM) providers" />
    <property name="project.cls.compliant" value="true" />
    <property name="nunit.dll" value="${basedir}/lib/NUnit/${current.build.framework}/nunit.framework.dll" dynamic="true" />
    <property name="nunit.extensions.dll" value="${basedir}/lib/NUnit/${current.build.framework}/nunit.framework.extensions.dll" dynamic="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.nunit.org" />

        <!-- 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.4.8" />
        <property name="vendor.nunit.org.filenames" value="nunit.framework.dll,nunit.framework.extensions.dll" />
    </target>

    <target name="dependency-init" description="Initializes build dependencies">
        <if test="${current.build.framework == 'net-3.5' or current.build.framework == 'mono-2.0'}">
            <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.Core.dll" />
                <include name="${current.build.framework.assembly.dir}/System.Web.dll" />
                <include name="${current.build.framework.assembly.dir}/System.Xml.dll" />
            </assemblyfileset>
        </if>
        <if test="${current.build.framework != 'net-3.5'}">
            <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" />
            </assemblyfileset>
        </if>

        <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.Xml.dll" />
            <include name="${build.bin.dir}/${project.name}.dll" />
            <include name="${nunit.dll}" />
            <include name="${nunit.extensions.dll}" />
        </assemblyfileset>

        <fileset id="content.filenames">
            <include name="LICENSE.txt" />
            <include name="NOTICE.txt" />
        </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" />
            <include name="${build.bin.dir}/${project.name}.Test.dll" />
            <include name="${build.bin.dir}/${project.name}.Test.pdb" />
            <include name="${build.bin.dir}/${project.name}.Test.dll.mdb" />
        </fileset>
    </target>

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

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