<?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="project.startyear"     value="2005" />
  <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"/>
  <property name="current.build.framework.assembly.dir" value="${framework::get-assembly-directory(framework::get-target-framework())}" dynamic="true"/>

  <property name="build.config.strings"    value="${if(property::exists('configuration'), configuration, if(build.skip.release == 'true', 'debug', 'debug,release'))}" dynamic="true" />

  <!-- 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-windows()}"
            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-windows()}"/>

  <!-- 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')}/local"
            if="${environment::variable-exists('NANT_REPO')}"
            unless="${property::exists('nant.local.repo')}"/>
  <property name="nant.local.repo" value="${user.home}/.nant/repository/local"
            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>

  <target name="generate-build-number">
    <script language="C#">
       <imports>
           <import namespace="System.Globalization" />
           <import namespace="System.Threading" />
       </imports>

       <code>
       <!-- Format for assembly revision is the number of days from the year the project 'started', property project.startyear.  -->
           <![CDATA[
               public static void ScriptMain(Project project)
               {
                   int startYear = Convert.ToInt32(project.Properties["project.startyear"]);
                   DateTime start = new DateTime(startYear, 1, 1);
                   TimeSpan ts = DateTime.Now - start;
                   project.Properties["project.version.numeric"] = project.Properties["project.version"].ToString() + "." + ts.Days.ToString();
               }
           ]]>
       </code>
    </script>
  </target>

  <!-- Generate assemblyinfo.cs files -->
  <target name="generate-assemblyinfo" depends="generate-build-number" 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) ${project.startyear}-${datetime::get-year(datetime::now())} Apache Software Foundation" />
        <attribute type="AssemblyTrademarkAttribute"     value="" />
        <attribute type="AssemblyCultureAttribute"       value="" />
        <attribute type="AssemblyVersionAttribute"       value="${project.version.numeric}" />
        <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="current.build.defines"          value="${build.defines}DEBUG,TRACE," dynamic="true" />
    <property name="csc.debug"                      value="Full" />
    <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="Full" />
    <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="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-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" depends="download-vendor" 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="current.build.config" value="release" />
    <foreach item="String" in="${build.framework.strings}" delim="," property="current.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}/${current.build.framework}/${current.build.config}" />
      <property name="lib.path" value="lib/${vendor.name}/${current.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="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)}"/>
      </foreach>
    </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="build" depends="default" description="Build the project." />
  <target name="rebuild" depends="clean,build" description="Rebuild the project." />
  
  <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="package" if="${directory::exists('package')}" />
  </target>

  <target name="doc" depends="build">
    <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>
