﻿<?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.3.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="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="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.3.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.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">
		<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}" />
			<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="${build.bin.dir}/${project.name}.dll" />
			<include name="${build.bin.dir}/${project.name}.pdb" />
		</fileset>

	</target>

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

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