<?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.1.0" unless="${property::exists('project.version')}"/>
  <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="nunit.extensions.dll" value="${basedir}/lib/NUnit/${current.build.framework}/nunit.framework.extensions.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="${basedir}/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.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.1.0"/>
    <property name="vendor.apache.org.filenames"
              value="Apache.NMS.dll,Apache.NMS.pdb,Apache.NMS.dll.mdb,Apache.NMS.Test.dll,Apache.NMS.Test.pdb,Apache.NMS.Test.dll.mdb" />

    <!-- 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="${not file::exists(Apache.NMS.dll)}">
	 <echo message="Apache.NMS assembly for ${current.build.framework.name} is not available. Build skipped." />
	 <property name="build.skip" value="true"/>
    </if>

  	<assemblyfileset failonempty="true" id="dependencies">
      <include name="mscorlib.dll" asis="true"/>
      <include name="System.dll" asis="true"/>
      <include name="System.Xml.dll" asis="true"/>
      <include name="${lib.framework.dir}/System.Messaging.dll" />
      <include name="${Apache.NMS.dll}"/>
  	</assemblyfileset>

  	<assemblyfileset failonempty="true" id="test.dependencies">
      <include name="mscorlib.dll" asis="true"/>
      <include name="System.dll" asis="true"/>
      <include name="System.Xml.dll" asis="true"/>
      <include name="${lib.framework.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}"/>
      <include name="${nunit.extensions.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.extensions.dll}"/>
      <include name="${NUnit.Projectfile}"/>
    </fileset>

    <fileset id="install.filenames">
      <include name="LICENSE.txt"/>
      <include name="NOTICE.txt"/>
      <include name="${project.name}.dll"/>
      <include name="${project.name}.pdb"/>
      <include name="nmsprovider-msmq.config"/>
    </fileset>

    <fileset id="deploy.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}.xml"/>
      <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.xml"/>
      <include name="${build.bin.dir}/nmsprovider-*.config"/>
    </fileset>
  </target>

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

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