﻿<?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.AMQP" 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.AMQP" />
    <property name="project.group"             value="org.apache.activemq" />
    <property name="project.version"           value="1.8.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 AMQP Class Library" />
    <property name="project.description"       value="Apache NMS for AMQP Class Library (.Net Messaging Library Implementation): An implementation of the NMS API for AMQP using Apache QPID and Proton" />
	
	<!-- Native Qpid DLLs -->
    <property name="boost_chrono"              value="boost_chrono-${vcver}-mt-1_47.dll"          dynamic="true" />
    <property name="boost_date_time"           value="boost_date_time-${vcver}-mt-1_47.dll"       dynamic="true" />
    <property name="boost_program_options"     value="boost_program_options-${vcver}-mt-1_47.dll" dynamic="true" />
    <property name="boost_system"              value="boost_system-${vcver}-mt-1_47.dll"          dynamic="true" />
    <property name="boost_thread"              value="boost_thread-${vcver}-mt-1_47.dll"          dynamic="true" />
    <property name="qpidclient"                value="qpidclient.dll"    dynamic="true" />
    <property name="qpidcommon"                value="qpidcommon.dll"    dynamic="true" />
    <property name="qpidmessaging"             value="qpidmessaging.dll" dynamic="true" />
    <property name="qpid-proton"               value="qpid-proton.dll"   dynamic="true" />
    <property name="qpidtypes"                 value="qpidtypes.dll"     dynamic="true" />

    <!-- 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="Apache.Qpid.dll"           value="${basedir}/lib/Apache.Qpid/${current.build.framework}/org.apache.qpid.messaging.dll" dynamic="true" />
    <property name="NUnit.Projectfile"         value="Apache.NMS.AMQP.Test.nunit" />

    <!-- Skip certain frameworks, since Apache Qpid is not supported on those platforms.
         net-2.0 built by Visual Studio 2008, net4.0 built by Visual Studio 2010
         to align .NET build with underlying unmanaged C runtime. -->
    <property name="build.framework.strings" value="net-2.0,net-4.0"/>
    
    <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.qpid.apache.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.8.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.8" />
        <property name="vendor.nunit.org.filenames" value="nunit.framework.dll" />

        <!-- Property grouping for 'vendor.qpid.apache.org' -->
        <property name="vendor.qpid.apache.org.name"      value="Apache.Qpid" />
        <property name="vendor.qpid.apache.org.group"     value="org.apache.qpid" />
        <property name="vendor.qpid.apache.org.version"   value="0.28.0.16239" />
        <!-- net-4.0 built with VS2010 (vc100), net-2.0 built with VS2008 (vc90) -->
		<property name="vcver"                            value="${if(current.build.framework == 'net-4.0', 'vc100', 'vc90')}" />
		<echo message="Vendor-init current.build.framework = ${current.build.framework}, current.build.config = ${current.build.config}, vcver = ${vcver}" />
		 
        <property name="vendor.qpid.apache.org.filenames" value="org.apache.qpid.messaging.dll,${boost_chrono},${boost_date_time},${boost_program_options},${boost_system},${boost_thread},${qpidclient},${qpidcommon},${qpidmessaging},${qpid-proton},${qpidtypes}" dynamic="true"/>
    </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="${Apache.NMS.dll}" />
			<include name="${Apache.Qpid.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="${Apache.NMS.dll}" />
            <include name="${Apache.NMS.Test.dll}" />
			<include name="${Apache.Qpid.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="${Apache.Qpid.dll}" />
            <include name="${nunit.dll}" />
            <include name="${NUnit.Projectfile}" />
            <!-- boost unmanaged: net-2.0 -->
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_chrono-vc90-mt-1_47.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_date_time-vc90-mt-1_47.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_program_options-vc90-mt-1_47.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_system-vc90-mt-1_47.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_thread-vc90-mt-1_47.dll" />
            <!-- boost unmanaged net-4.0 -->
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_chrono-vc100-mt-1_47.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_date_time-vc100-mt-1_47.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_program_options-vc100-mt-1_47.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_system-vc100-mt-1_47.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost_thread-vc100-mt-1_47.dll" />
            <!-- qpid native: identical names regardless of framework -->
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/qpid-proton.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/qpidclient.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/qpidcommon.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/qpidmessaging.dll" />
            <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/qpidtypes.dll" />
        </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="nmsprovider*.config" />
        <include name="vs2008-*.csproj" />
        <include name="vs2010-*.csproj" />
        <include name="vs2008-*.sln" />
        <include name="vs2010-*.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>
