<?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.EMS" 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.EMS"/>
  <property name="project.group" value="org.apache.activemq"/>
  <property name="project.version" value="1.1.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 EMS Class Library"/>
  <property name="project.description" value="Apache NMS for EMS Class Library (.Net Messaging Library Implementation): An implementation of the NMS API for EMS"/>
  <!-- The EMS module is not CLS compliant yet -->
  <property name="project.cls.compliant" value="false"/>

  <!-- 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="TIBCO.EMS.dll" value="${basedir}/lib/TIBCO.EMS/${current.build.framework}/TIBCO.EMS.dll" dynamic="true"/>

  <property name="NUnit.Projectfile" value="Apache.NMS.EMS.Test.nunit"/>

  <!-- Skip certain frameworks, since TIBCO client is not supported on those platforms. -->
  <property name="build.net-1.1.skip" value="true"/>
  <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,vendor.tibco.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" />

    <!-- Property grouping for 'vendor.tibco.org' -->
    <property name="vendor.tibco.org.name" value="TIBCO.EMS"/>
    <property name="vendor.tibco.org.group" value="org.tibco.ems"/>
    <property name="vendor.tibco.org.version" value="4.1.0"/>
    <property name="vendor.tibco.org.filenames"
              value="TIBCO.EMS.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="${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="${TIBCO.EMS.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="${TIBCO.EMS.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="${TIBCO.EMS.dll}"/>
      <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="${build.bin.dir}/${project.name}.dll"/>
      <include name="${build.bin.dir}/${project.name}.pdb"/>
      <include name="nmsprovider-ems.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="nmsprovider-*.config"/>
    </fileset>
  </target>

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

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

</project>
