﻿<?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.MSMQ" 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.MSMQ" />
    <property name="project.group" value="org.apache.activemq" />
    <property name="project.version" value="1.5.0" 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 for MSMQ Class Library" />
    <property name="project.description" value="Apache NMS for MSMQ Class Library (.Net Messaging Library Implementation): An implementation of the NMS API for MSMQ" />

    <!-- Repository organized as: organization/module/version/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="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.MSMQ.Test.nunit" />

    <!-- Skip certain frameworks, since MSMQ is not supported on those platforms. -->
    <property name="build.netcf-2.0.skip" value="true" />
    <property name="build.netcf-3.5.skip" value="true" />
    <property name="build.mono-2.0.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" />

        <!-- 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.5.0" />
        <property name="vendor.apache.org.filenames" value="Apache.NMS.dll,Apache.NMS.pdb,Apache.NMS.Test.dll,Apache.NMS.Test.pdb" />

        <!-- 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.5" />
        <property name="vendor.nunit.org.filenames" value="nunit.framework.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.Xml.dll" />
            <include name="${current.build.framework.assembly.dir}/System.Messaging.dll" />
            <include name="${Apache.NMS.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.Xml.dll" />
            <include name="${current.build.framework.assembly.dir}/System.Messaging.dll" />
            <include name="${Apache.NMS.dll}" />
            <include name="${Apache.NMS.Test.dll}" />
            <include name="${build.bin.dir}/${project.name}.dll" />
            <include name="${nunit.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="${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" />
        </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>
