﻿<?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.7.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${boostdebug}-1_47.dll"          dynamic="true" />
    <property name="boost_date_time"           value="boost_date_time-${vcver}-mt${boostdebug}-1_47.dll"       dynamic="true" />
    <property name="boost_program_options"     value="boost_program_options-${vcver}-mt${boostdebug}-1_47.dll" dynamic="true" />
    <property name="boost_system"              value="boost_system-${vcver}-mt${boostdebug}-1_47.dll"          dynamic="true" />
    <property name="boost_thread"              value="boost_thread-${vcver}-mt${boostdebug}-1_47.dll"          dynamic="true" />
    <property name="qpidclient"                value="qpidclient${debugsuffix}.dll"    dynamic="true" />
    <property name="qpidcommon"                value="qpidcommon${debugsuffix}.dll"    dynamic="true" />
    <property name="qpidmessaging"             value="qpidmessaging${debugsuffix}.dll" dynamic="true" />
    <property name="qpid-proton"               value="qpid-proton${debugsuffix}.dll"   dynamic="true" />
    <property name="qpidtypes"                 value="qpidtypes${debugsuffix}.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"/>
    
    <!-- Limit to debug until lib\Apache.Qpid\net-X.0 gets debug/release subdirectories -->
    <property name="build.config.strings"    value="debug" />

    <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.7.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')}" />
		<property name="debugsuffix"                      value="${if(current.build.config == 'release', '', 'd')}" />
		<property name="boostdebug"                       value="${if(current.build.config == 'release', '', '-gd')}" />
		<echo message="Vendor-init current.build.framework = ${current.build.framework}, current.build.config = ${current.build.config}" />
		<echo message="vcver = ${vcver}, debugsuffix = ${debugsuffix}, boostdebug = ${boostdebug}" />
		 
        <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}" />
        </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="copy-unmanaged-content" description="Copies native DLLs from \lib to \build">
        <foreach item="File" property="filename">
            <in> <items>
                <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/qpid*" />
                <include name="${basedir}/lib/Apache.Qpid/${current.build.framework}/boost*" />
            </items> </in>
            <do>
                <echo message="Copying unmanaged: ${filename}" />
                <copy todir="${build.bin.dir}" file="${filename}" if="${not file::up-to-date(filename, '${build.bin.dir}/${filename}')}" />
            </do>
        </foreach>
    </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>
