<?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 xmlns="http://nant.sourceforge.net/release/0.85/nant.xsd">

  <!-- ============================================================================================ -->
  <!--    P R O P E R T Y    D E F I N I T I O N S                                                  -->
  <!-- ============================================================================================ -->

  <!-- global project settings -->
  <property name="project.cls.compliant" value="true" unless="${property::exists('project.cls.compliant')}"/>
  <property name="project.release.type"  value="SNAPSHOT" unless="${property::exists('project.release.type')}" />
  <property name="project.version.full"  value="${project.version + if(project.release.type == 'snapshot', '-' + project.release.type, '')}" dynamic="true" />
  <property name="build.dir"             value="${basedir}/build" />
  <property name="doc.dir"               value="${build.dir}/doc" />
  <property name="lib.dir"               value="${path::combine(basedir, 'lib')}" dynamic="true" />
  <property name="lib.family.dir"        value="${path::combine(lib.dir, framework::get-family(framework::get-target-framework()))}" dynamic="true" />
  <property name="lib.framework.dir"     value="${path::combine(lib.family.dir, version::to-string(framework::get-version(framework::get-target-framework())))}" dynamic="true" />

  <!-- default configuration -->
  <property name="build.defines"           value=""/>
  <property name="build.noskip"            value="false"/>
  <property name="build.skip"              value="false"/>
  <property name="build.skip.release"      value="false" unless="${property::exists('build.skip.release')}" />
  <property name="compile.skip"            value="false" unless="${property::exists('compile.skip')}" />
  <property name="current.build.config"    value="${if(project.release.type == 'release', 'release', 'debug')}" overwrite="false"/>
  <property name="current.build.framework" value="${framework::get-target-framework()}"  overwrite="false"/>
  <property name="current.build.defines"   value="${build.defines}" />
  <property name="build.framework.strings" value="net-1.1,net-2.0,net-3.5,mono-2.0,netcf-2.0"/>

  <if test="${build.skip.release}">
    <property name="build.config.strings"  value="debug"/>
  </if>
  <if test="${not(build.skip.release)}">
    <property name="build.config.strings"  value="debug,release"/>
  </if>

  <!-- Figure out the user's HOME directory -->
  <property name="user.home" value="${environment::get-variable('HOME')}"
            if="${environment::variable-exists('HOME') and platform::is-unix()}"
            unless="${property::exists('user.home')}"/>
  <property name="user.home" value="${environment::get-variable('USERPROFILE')}"
            if="${environment::variable-exists('USERPROFILE') and platform::is-win32()}"
            unless="${property::exists('user.home')}"/>

  <fail message="The HOME environment variable is not defined.  Please set it to your home directory."
            unless="${property::exists('user.home')}" if="${platform::is-unix()}"/>
  <fail message="The USERPROFILE environment variable is not defined.  Please set it to your home directory."
            unless="${property::exists('user.home')}" if="${platform::is-win32()}"/>

  <!-- Figure out the NANT repositories -->
  <property name="nant.remote.repo" value="${environment::get-variable('NANT_REMOTE_REPO')}"
            if="${environment::variable-exists('NANT_REMOTE_REPO')}"
            unless="${property::exists('nant.remote.repo')}"/>
  <property name="nant.local.repo" value="${environment::get-variable('NANT_REPO')}"
            if="${environment::variable-exists('NANT_REPO')}"
            unless="${property::exists('nant.local.repo')}"/>
  <property name="nant.local.repo" value="${user.home}/.nant/repository"
            unless="${property::exists('nant.local.repo')}"/>
			
  <!-- Figure out the keyfile location -->
  <property name="snk.file"  value="${environment::get-variable('ACTIVEMQ_DOTNET_SNK')}"
            if="${environment::variable-exists('ACTIVEMQ_DOTNET_SNK')}"
            unless="${property::exists('snk.file')}"/>
  <property name="snk.file"  value="${basedir}/keyfile/NMSKey.snk" if="${not property::exists('snk.file')}"/>

  <!-- ============================================================================================ -->
  <!--      I N I T I A L I Z A T I O N     T A R G E T S                                           -->
  <!-- ============================================================================================ -->

  <target name="init" description="Initializes build properties">
    <!-- enabled the release or debug configuration -->
    <call target="set-${current.build.config}-configuration"/>

    <!-- Check to see if our build setup for the target framework -->
    <if test="${not(target::exists('set-'+current.build.framework+'-framework-configuration'))}">
      <fail message="The '${current.build.framework}' framework is not supported by this version of ActiveMQ .NET" />
    </if>
    <call target="set-${current.build.framework}-framework-configuration" />

    <!-- Check to see current platform supports the target framework -->
    <if test="${framework::exists(current.build.framework)}">
       <property name="build.skip" value="false"/>
    </if>
    <if test="${not framework::exists(current.build.framework)}">
       <if test="${build.noskip}">
         <fail message="${current.build.framework.name} is not available." />
       </if>
       <if test="${not(build.noskip)}">
         <echo message="${current.build.framework.name} is not available. Build skipped." />
         <property name="build.skip" value="true"/>
       </if>
    </if>

    <!-- Check to see if we should skip this build framework. -->
    <if test="${not(build.skip)}">
      <if test="${property::exists('build.'+current.build.framework+'.skip')}">
        <property name="build.skip" value="true"/>
        <echo message="The '${current.build.framework}' framework is not supported by this version of ActiveMQ .NET" />
      </if>
    </if>

   <property name="current.build.keysign" value="${current.build.framework.sign}"/>
   <property name="build.bin.dir" value="${basedir}/build/${nant.settings.currentframework}/${current.build.config}" />
    <if test="${not(build.skip)}">
       <echo message="Doing ${if(current.build.keysign,'a signed','an unsigned')} ${current.build.config} build for the ${current.build.framework.name} framework" />
       <mkdir dir="${build.bin.dir}"/>
    </if>
    <call target="dependency-init"/>
  </target>

  <!-- Generate assemblyinfo.cs files -->
  <target name="generate-assemblyinfo" description="Generate the assembly info for the path in assemblyinfo.filename">
    <asminfo output="${assemblyinfo.filename}" language="CSharp">
      <imports>
        <import namespace="System" />
        <import namespace="System.Reflection" />
        <import namespace="System.Runtime.InteropServices" />
      </imports>
      <attributes>
        <attribute type="ComVisibleAttribute"            value="false" />
        <attribute type="CLSCompliantAttribute"          value="${project.cls.compliant}" />
        <attribute type="AssemblyTitleAttribute"         value="${project.short_description}" />
        <attribute type="AssemblyDescriptionAttribute"   value="${project.description}" />
        <attribute type="AssemblyConfigurationAttribute" value="${project.release.type}" />
        <attribute type="AssemblyCompanyAttribute"       value="http://activemq.apache.org/nms" />
        <attribute type="AssemblyProductAttribute"       value="${project.short_description}" />
        <attribute type="AssemblyCopyrightAttribute"     value="Copyright (C) 2005-${datetime::get-year(datetime::now())} Apache Software Foundation" />
        <attribute type="AssemblyTrademarkAttribute"     value="" />
        <attribute type="AssemblyCultureAttribute"       value="" />
        <attribute type="AssemblyVersionAttribute"       value="${project.version}" />
        <attribute type="AssemblyInformationalVersionAttribute" value="${project.version}" />
      </attributes>
    </asminfo>
  </target>

  <!-- ============================================================================================ -->
  <!--    C O N F I G U R A T I O N     T A R G E T S                                               -->
  <!-- ============================================================================================ -->

  <target name="set-noskip-configuration" description="Disable skipping builds">
    <property name="project.noskip"                 value="true" />
  </target>

  <target name="set-debug-configuration" description="Enabled 'debug' builds">
    <property name="current.build.config"           value="debug" />
    <property name="current.build.config.debug"     value="true" />
    <property name="current.build.config.release"   value="false" />
    <property name="csc.debug"                      value="true" />
    <property name="csc.optimize"                   value="false" />
  </target>

  <target name="set-release-configuration" description="Enabled 'release' builds">
    <property name="current.build.config"           value="release" />
    <property name="current.build.config.release"   value="true" />
    <property name="current.build.config.debug"     value="false" />
    <property name="csc.debug"                      value="true" />
    <property name="csc.optimize"                   value="true" />
  </target>

  <target name="set-net-1.1-framework-configuration">
    <property name="current.build.framework"        value="net-1.1" />
    <property name="current.build.framework.name"   value=".NET 1.1"/>
    <property name="current.build.defines"          value="${build.defines}NET,NET_1_1" dynamic="true" />
    <property name="current.build.framework.sign"   value="true" />
    <property name="link.sdkdoc.version"            value="SDK_v1_1" />
    <property name="link.sdkdoc.web"                value="true" />
    <if test="${framework::exists(current.build.framework)}">
      <property name="nant.settings.currentframework" value="${current.build.framework}" />
    </if>
  </target>

  <target name="set-net-2.0-framework-configuration">
    <property name="current.build.framework"        value="net-2.0" />
    <property name="current.build.framework.name"   value=".NET 2.0"/>
    <property name="current.build.defines"          value="${build.defines}NET,NET_2_0" dynamic="true" />
    <property name="current.build.framework.sign"   value="true"/>
    <property name="link.sdkdoc.version"            value="SDK_v2_0" />
    <property name="link.sdkdoc.web"                value="true" />
    <if test="${framework::exists(current.build.framework)}">
      <property name="nant.settings.currentframework" value="${current.build.framework}" />
    </if>
  </target>

  <target name="set-net-3.5-framework-configuration">
    <property name="current.build.framework"        value="net-3.5" />
    <property name="current.build.framework.name"   value=".NET 3.5"/>
    <property name="current.build.defines"          value="${build.defines}NET,NET_2_0,NET_3_5" dynamic="true" />
    <property name="current.build.framework.sign"   value="true"/>
    <property name="link.sdkdoc.version"            value="SDK_v6_1" />
    <property name="link.sdkdoc.web"                value="true" />
    <if test="${framework::exists(current.build.framework)}">
      <property name="nant.settings.currentframework" value="${current.build.framework}" />
    </if>
  </target>

  <target name="set-netcf-2.0-framework-configuration">
    <property name="current.build.framework"        value="netcf-2.0" />
    <property name="current.build.framework.name"   value=".NET Compact Framework 2.0"/>
    <property name="current.build.defines"          value="${build.defines}PocketPC,NETCF,NETCF_2_0" dynamic="true" />
    <property name="current.build.framework.sign"   value="false" />
    <property name="link.sdkdoc.version"            value="SDK_v1_1" />
    <property name="link.sdkdoc.web" value="true" />
    <if test="${framework::exists(current.build.framework)}">
      <property name="nant.settings.currentframework" value="${current.build.framework}" />
    </if>
  </target>

  <target name="set-mono-2.0-framework-configuration">
    <property name="current.build.framework"        value="mono-2.0" />
    <property name="current.build.framework.name"   value="Mono 2.0"/>
    <property name="current.build.defines"          value="${build.defines}MONO,MONO_2_0" dynamic="true" />
    <property name="current.build.framework.sign"   value="true" />
    <property name="link.sdkdoc.version"            value="SDK_v1_1" />
    <property name="link.sdkdoc.web"                value="true" />
    <if test="${framework::exists(current.build.framework)}">
      <property name="nant.settings.currentframework" value="${current.build.framework}" />
    </if>
  </target>

  <!-- ============================================================================================ -->
  <!--     C O M P I L E    T A R G E T S                                                           -->
  <!-- ============================================================================================ -->

  <target name="compile-all" description="Compile all build configurations for all runtime configurations">
    <echo message="Compiling all build configurations for all runtime configurations." />
      <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework">
      <foreach item="String" in="${build.config.strings}" delim="," property="current.build.config">
        <call target="compile-target" />
      </foreach>
    </foreach>
  </target>

  <target name="compile-target" depends="init, conditional-compile"/>
  
  <target name="conditional-compile" depends="init" unless="${build.skip or compile.skip}"
      description="Conditionaly compiles all the modules if build framework and type are supported">
    <call target="compile" />
  </target>

  <target name="compile" description="Compile everything">
    <call target="compile-main" cascade="false" />
    <call target="compile-test" cascade="false" />
  </target>

  <target name="compile-main" depends="init" description="Build the main library">
    <echo message="Building the ${project.name} library"/>

    <property name="assemblyinfo.filename" value="src/main/csharp/CommonAssemblyInfo.cs"/>
    <call target="generate-assemblyinfo"/>

    <csc if="${current.build.keysign}" keyfile="${snk.file}" target="library"
      define="${current.build.defines}" warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}"
      output="${build.bin.dir}/${project.name}.dll" doc="${build.bin.dir}/${project.name}.xml">
      <nowarn>
        <warning number="1591" /> <!-- do not report warnings for missing XML comments -->
      </nowarn>
      <sources failonempty="true">
        <include name="src/main/csharp/**.cs" />
      </sources>
      <references refid="dependencies" />
    </csc>
    <csc if="${not current.build.keysign}" target="library"
      define="${current.build.defines}" warnaserror="false" debug="${csc.debug}"  optimize="${csc.optimize}"
      output="${build.bin.dir}/${project.name}.dll" doc="${build.bin.dir}/${project.name}.xml">
      <nowarn>
        <warning number="1591" /> <!-- do not report warnings for missing XML comments -->
      </nowarn>
      <sources failonempty="true">
        <include name="src/main/csharp/**.cs" />
      </sources>
      <references refid="dependencies" />
    </csc>
    <call target="copy-content"/>
  </target>

  <!-- Compile the nms-test module -->
  <target name="compile-test" depends="compile-main" description="Build the test library">
    <echo message="Building the ${project.name}.Test library" />

    <property name="assemblyinfo.filename" value="src/test/csharp/CommonAssemblyInfo.cs"/>
    <call target="generate-assemblyinfo"/>

    <csc if="${current.build.keysign}" keyfile="${snk.file}" target="library"
      define="${current.build.defines}" warnaserror="false" debug="${csc.debug}"  optimize="${csc.optimize}"
      output="${build.bin.dir}/${project.name}.Test.dll" doc="${build.bin.dir}/${project.name}.Test.xml">
      <nowarn>
        <warning number="1591" /> <!-- do not report warnings for missing XML comments -->
      </nowarn>
      <sources failonempty="true">
          <include name="src/test/csharp/**.cs" />
      </sources>
      <references refid="test.dependencies" />
    </csc>
    <csc if="${not current.build.keysign}" target="library"
      define="${current.build.defines}" warnaserror="false" debug="${csc.debug}"  optimize="${csc.optimize}"
      output="${build.bin.dir}/${project.name}.Test.dll" doc="${build.bin.dir}/${project.name}.Test.xml">
      <nowarn>
        <warning number="1591" /> <!-- do not report warnings for missing XML comments -->
      </nowarn>
      <sources failonempty="true">
        <include name="src/test/csharp/**.cs" />
      </sources>
      <references refid="test.dependencies" />
    </csc>
    <call target="copy-content"/>
  </target>

  <target name="copy-content">
    <foreach item="File" property="content.filename">
      <in>
        <items refid="content.filenames" />
      </in>
      <do>
        <copy todir="${build.bin.dir}" file="${content.filename}" if="${not file::up-to-date(content.filename, '${build.bin.dir}/${content.filename}')}" />
      </do>
    </foreach>
  </target>

  <!-- ============================================================================================ -->
  <!--      I N S T A L L     T A R G E T S                                                         -->
  <!-- ============================================================================================ -->

  <target name="install-all" description="Install all build configurations for all runtime configurations">
    <echo message="Installing all build configurations for all runtime configurations." />
    <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework">
      <foreach item="String" in="${build.config.strings}" delim="," property="current.build.config">
        <call target="install" />
      </foreach>
    </foreach>
  </target>

  <!-- Install the modules to the local repo -->
  <target name="install" depends="init, conditional-compile, conditional-install"
              description="Install the artifacts into the nant repo" />

  <target name="conditional-install" unless="${build.skip}"
          description="Install the artifacts into the nant repo">
    <property name="path" value="${project.group}/${project.name}/${project.version.full}/${current.build.framework}/${current.build.config}"/>

    <foreach item="File" property="install.filename">
      <in>
        <items refid="install.filenames" />
      </in>
      <do>
        <property name="repo.task.artifact" value="${path}/${path::get-file-name(install.filename)}"/>
        <property name="repo.task.src" value="${install.filename}"/>
        <property name="repo.task.dest" value="${nant.local.repo}/${repo.task.artifact}"/>
        <mkdir dir="${directory::get-parent-directory(repo.task.dest)}" />
        <copy file="${repo.task.src}" tofile="${repo.task.dest}"/>
      </do>
    </foreach>
  </target>

  <!-- ============================================================================================ -->
  <!--      R E P O    D O W N L O A D     T A R G E T S                                            -->
  <!-- ============================================================================================ -->

  <target name="download-vendor-all" description="Download vendor files for all runtime configurations">
    <echo message="Downloading vendor files for all runtime configurations." />
    <property name="vendor.build.config" value="release" />
    <foreach item="String" in="${build.framework.strings}" delim="," property="vendor.build.framework">
      <call target="download-vendor" />
    </foreach>
  </target>

  <target name="download-vendor" depends="vendor-init, conditional-download"
              description="Download the vendor artifacts from the nant repo" />

  <target name="conditional-download" unless="${build.skip}"
          description="Download the artifacts from the nant repo">

    <!-- Iterate over the defined vendor filesets. -->
    <foreach item="String" in="${vendor.fileset.names}" delim="," property="current.vendor">
      <property name="vendor.name" value="${property::get-value(current.vendor + '.name')}"/>
      <property name="vendor.group" value="${property::get-value(current.vendor + '.group')}"/>
      <property name="vendor.version" value="${property::get-value(current.vendor + '.version')}"/>
      <property name="vendor.filenames" value="${property::get-value(current.vendor + '.filenames')}"/>

      <property name="local.repo.vendor.path" value="${nant.local.repo}/${vendor.group}/${vendor.name}/${vendor.version}/${vendor.build.framework}/${vendor.build.config}"/>
      <property name="vendor.path" value="vendor/${vendor.name}/${vendor.build.framework}" />
      <property name="lib.path" value="lib/${vendor.name}/${vendor.build.framework}" />

      <!--
           Update the LIB folder with the latest version of the file.  By default, the file from the
           VENDOR folder will be used.  However, if there is a newer version installed in the local
           repository, then that version will be copied into the LIB folder.
       -->
      <foreach item="String" in="${vendor.filenames}" delim="," property="repo.task.artifact">
        <property name="lib.task.dest" value="${lib.path}/${repo.task.artifact}"/>
        <mkdir dir="${directory::get-parent-directory(lib.task.dest)}" />

        <property name="vendor.task.src" value="${vendor.path}/${repo.task.artifact}"/>
        <property name="repo.task.src" value="${local.repo.vendor.path}/${repo.task.artifact}"/>

        <copy file="${repo.task.src}" tofile="${lib.task.dest}" if="${file::exists(repo.task.src)}"/>
        <if test="${not file::exists(repo.task.src)}">
          <copy file="${vendor.task.src}" tofile="${lib.task.dest}" if="${file::exists(vendor.task.src)}"/>
        </if>
      </foreach>
    </foreach>
  </target>

  <!-- ============================================================================================ -->
  <!--      D E P L O Y     T A R G E T S                                                           -->
  <!-- ============================================================================================ -->

  <target name="deploy-all" description="Deploy all build configurations for all runtime configurations">
    <echo message="Deploying release configurations for all runtime configurations." />

    <call target="set-release-configuration" />
    <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework">
      <call target="deploy-target" />
    </foreach>

	<!-- Commit the deployed files to repository.  This completes the deployment. -->
	<exec program="svn" failonerror="false">
		<arg value="commit"/>
		<arg value="deploy"/>
		<arg value="-m"/>
		<arg value="Deploy ${project.name} ${project.version}"/>
	</exec>
  </target>

  <target name="deploy-target" depends="init, conditional-deploy"/>

  <target name="conditional-deploy" depends="init" unless="${build.skip}"
      description="Conditionaly deploy all the modules if build framework and type are supported">
    <call target="deploy" />
  </target>

  <!-- Deploy the modules to the global repo -->
  <target name="deploy" description="Deploy the artifacts into the subversion repo">
    <property name="repo.dir" value="deploy/${current.build.framework}"/>

    <foreach item="File" property="deploy.filename">
      <in>
        <items refid="deploy.filenames" />
      </in>
      <do>
		<property name="repo.task.dest" value="${path::get-file-name(deploy.filename)}"/>
		<copy file="${deploy.filename}" todir="${repo.dir}" unless="${file::up-to-date(deploy.filename, '${repo.dir}/${repo.task.dest}')}" />
      </do>
    </foreach>

  </target>

  <!-- ============================================================================================ -->
  <!--      T E S T     T A R G E T S                                                               -->
  <!-- ============================================================================================ -->

  <target name="test" depends="test-debug" description="Alias test target to test-debug"/>
  <target name="test-all" depends="test-debug, test-release" description="Test all build configurations for all runtime configurations"/>

  <target name="test-debug" depends="" description="Test debug build configurations for all runtime configurations">
	<property name="current.build.config" value="debug"/>
    <call target="test-frameworks" />
  </target>
  
  <target name="test-release" depends="" description="Test release build configurations for all runtime configurations">
	<property name="current.build.config" value="release"/>
    <call target="test-frameworks" />
  </target>
  
  <target name="test-frameworks">
    <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework">
      <call target="init" />
	  <if test="${not build.skip}">
	    <exec program="nunit-console" failonerror="true" workingdir="build/${current.build.framework}/${current.build.config}">
	      <arg value="${NUnit.Projectfile}"/>
	      <arg value="/labels"/>
	      <arg value="/xml=Nunit.TestOutput.xml"/>
	    </exec>
	  </if>
    </foreach>
  </target>

  <!-- ============================================================================================ -->
  <!--      M I S C E L L A N E O U S    T A R G E T S                                              -->
  <!-- ============================================================================================ -->

  <target name="clean" description="Deletes build">
    <if test="${target::exists('clean-init')}">
      <call target="clean-init"/>
    </if>
    <delete dir="build" if="${directory::exists('build')}" />
    <delete dir="obj" if="${directory::exists('obj')}" />
    <delete dir="lib" if="${directory::exists('lib')}" />
  </target>

  <target name="doc" depends="compile">
    <mkdir dir="${doc.dir}"/>
    <ndoc failonerror="false">
      <assemblies basedir="${build.bin.dir}">
        <include name="${project.name}.dll" />
      </assemblies>
      <summaries basedir="${basedir}/src/main/ndoc">
        <include name="NamespaceSummary.xml" />
      </summaries>
      <documenters>
        <documenter name="MSDN">
        <property name="OutputDirectory" value="${doc.dir}" />
          <property name="HtmlHelpName" value="${project.name}" />
          <property name="HtmlHelpCompilerFilename" value="hhc.exe" />
          <property name="IncludeFavorites" value="False" />
          <property name="Title" value="${project.short_description}" />
          <property name="SplitTOCs" value="False" />
          <property name="DefaulTOC" value="" />
          <!--
            <property name="ShowVisualBasic" value="True" />
            <property name="ShowMissingSummaries" value="True" />
            <property name="ShowMissingRemarks" value="True" />
            <property name="ShowMissingParams" value="True" />
            <property name="ShowMissingReturns" value="True" />
            <property name="ShowMissingValues" value="True" />
          -->
          <property name="DocumentInternals" value="False" />
          <property name="DocumentProtected" value="True" />
          <property name="DocumentPrivates" value="False" />
          <property name="DocumentEmptyNamespaces" value="False" />
          <property name="IncludeAssemblyVersion" value="False" />
          <property name="CopyrightText" value="" />
          <property name="CopyrightHref" value="" />
        </documenter>
      </documenters>
    </ndoc>
  </target>

</project>
