﻿<?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" />
    <property name="package.dir"             value="${basedir}/package" />
    <property name="src.package.name"        value="${project.name + '-' + project.version + if(project.release.type == 'SNAPSHOT', '-' + project.release.type, '') + '-src.zip'}" />
    <property name="bin.package.name"        value="${project.name + '-' + project.version + if(project.release.type == 'SNAPSHOT', '-' + project.release.type, '') + '-bin.zip'}" />

    <!-- 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="download.skip"           value="false" unless="${property::exists('download.skip')}"/>
    <property name="install.skip"            value="false" unless="${property::exists('install.skip')}"/>
    <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-2.0,net-3.5,net-4.0,mono-2.0,mono-4.0,netcf-2.0,netcf-3.5" unless="${property::exists('build.framework.strings')}"/>
    <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="${build.dir}/${current.build.framework}/${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 four-digit build number -->
    <target name="generate-build-number">
        <if test="${not property::exists('project.version.numeric')}">
            <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>
        </if>
    </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-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>
        <!-- Use the .NET 3.5 compiler for improved language features.  Still targets same runtime. -->
        <if test="${framework::exists('net-3.5')}">
            <property name="nant.settings.currentframework" value="net-3.5" />
        </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-net-4.0-framework-configuration">
        <property name="current.build.framework" value="net-4.0" />
        <property name="current.build.framework.name" value=".NET 4.0" />
        <property name="current.build.defines" value="${build.defines}NET,NET_2_0,NET_3_5,NET_4_0" dynamic="true" />
        <property name="current.build.framework.sign" value="true" />
        <property name="link.sdkdoc.version" value="SDK_v7_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-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="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-netcf-3.5-framework-configuration">
        <property name="current.build.framework" value="netcf-3.5" />
        <property name="current.build.framework.name" value=".NET Compact Framework 3.5" />
        <property name="current.build.defines" value="${build.defines}PocketPC,NETCF,NETCF_3_5" dynamic="true" />
        <property name="current.build.framework.sign" value="true" />
        <property name="link.sdkdoc.version" value="SDK_v3_5" />
        <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>

    <target name="set-mono-4.0-framework-configuration">
        <property name="current.build.framework" value="mono-4.0" />
        <property name="current.build.framework.name" value="Mono 4.0" />
        <property name="current.build.defines" value="${build.defines}MONO,MONO_4_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, download-vendor, 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 -->
                <warning number="3016" /> <!-- do not report warnings for array parameters  -->
            </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 -->
                <warning number="3016" /> <!-- do not report warnings for array parameters  -->
            </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, compile-target, conditional-install"
            description="Install the artifacts into the nant repo" />

    <target name="conditional-install" unless="${build.skip or install.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 or download.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.  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)}" />
                <if test="${not file::exists(lib.task.dest)}">
                    <echo message="Required dependent assembly ${repo.task.artifact} from ${vendor.name} for ${current.build.framework} is not available. Build skipped." />
                    <property name="build.skip" value="true" />
                </if>
            </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="-exclude=Manual,LongRunning" />
                    <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>
        <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="clean-proj" />
            </foreach>
        </foreach>
    </target>

    <target name="clean-proj" depends="init" description="Deletes specific project build">
        <property name="clean.dir" value="build/${current.build.framework}/${current.build.config}" />
        <delete dir="${clean.dir}" if="${directory::exists(clean.dir)}" />
        <property name="clean.dir" value="package/${current.build.config}" />
        <delete dir="${clean.dir}" if="${directory::exists(clean.dir)}" />
    </target>

    <target name="package" description="Bundle the source and binary distributions.">
        <mkdir dir="${package.dir}"
                if="${not directory::exists(package.dir)}" />
        <zip zipfile="${package.dir}/${bin.package.name}">
            <fileset refid="bin.package.contents"/>
        </zip>
        <zip zipfile="${package.dir}/${src.package.name}">
            <fileset refid="src.package.contents"/>
        </zip>
    </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="True" />
                    <property name="CopyrightText" value="" />
                    <property name="CopyrightHref" value="" />
                </documenter>
            </documenters>
        </ndoc>
    </target>

    <target name="sandcastle" depends="set-release-configuration, init, conditional-compile">
        <!-- Directories -->
        <property name="sandcastle.style" value="vs2005" unless="${property::exists('sandcastle.style')}" />
        <property name="documentation.dir" value="${build.bin.dir}" />
        <property name="bin.intern.dir" value="${build.bin.dir}" />
        <property name="bin.extern.dir" value="${basedir}\lib\NUnit\net-2.0" />
        <property name="sandcastle.dir" value="${environment::get-variable('DXROOT')}" />
        <property name="sandcastle.workingdir" value="${build.dir}\doc\${sandcastle.style}" />
        <property name="sandcastle.output.dir" value="${sandcastle.workingdir}\Output" />

        <!-- Executables -->
        <property name="sandcastle.mrefbuilder.exe" value="${sandcastle.dir}\productiontools\mrefbuilder.exe" />
        <property name="sandcastle.buildassembler.exe" value="${sandcastle.dir}\productiontools\buildassembler.exe" />
        <property name="sandcastle.xsltransform.exe" value="${sandcastle.dir}\productiontools\xsltransform.exe" />
        <property name="sandcastle.productiontransforms.dir" value="${sandcastle.dir}\ProductionTransforms" />

        <!-- Create or Cleanup Working Directory -->
        <mkdir dir="${sandcastle.workingdir}"
                if="${not directory::exists(sandcastle.workingdir)}" />
        <delete>
            <fileset basedir="${sandcastle.workingdir}">
                <include name="**\*" />
            </fileset>
        </delete>

        <!-- Copy configuration file, and hard code references -->
        <copy file="${sandcastle.dir}/Presentation/${sandcastle.style}/Configuration/Sandcastle.config"
                tofile="${sandcastle.workingdir}/Sandcastle.config">
            <filterchain>
                <replacestring from="&quot;..\..\" to="&quot;${sandcastle.dir}\" />
                <replacestring from="&quot;..\" to="&quot;${sandcastle.dir}\Examples\" />
                <replacestring from="&quot;.\comments.xml" to="&quot;${documentation.dir}\${project.name}.xml" />
                <replacestring from="&quot;%DXROOT%\Presentation\${sandcastle.style}\content\feedback_content.xml&quot;" to="&quot;${basedir}/src/main/sandcastle/feedback_content.xml&quot;" />
            </filterchain>
        </copy>

        <!-- Run MRefBuilder (introspection on assemblies) to create basic Reflection XML -->
        <exec program="${sandcastle.mrefbuilder.exe}" workingdir="${sandcastle.workingdir}">
            <arg value="${bin.intern.dir}/${project.name}.dll" />
            <arg value="/out:reflection.int.xml" />
            <arg value="/dep:${bin.extern.dir}\*.dll" />
        </exec>

        <!-- Create Reflection XML -->
        <exec program="${sandcastle.xsltransform.exe}" workingdir="${sandcastle.workingdir}">
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ApplyVSDocModel.xsl&quot;" if="${sandcastle.style != 'prototype'}" />
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ApplyPrototypeDocModel.xsl&quot;" if="${sandcastle.style == 'prototype'}" />
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\AddFriendlyFilenames.xsl&quot;" /> <!-- if="${sandcastle.style != 'prototype'}" /> -->
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\AddGuidFilenames.xsl&quot;" if="${sandcastle.style == 'disabled'}" />
            <arg value="reflection.int.xml" />
            <arg value="/out:reflection.xml" />
            <arg value="/arg:IncludeAllMembersTopic=true" />
            <arg value="/arg:IncludeInheritedOverloadTopics=true" />
        </exec>

        <!-- Create Manifest (list of Topics) -->
        <exec program="${sandcastle.xsltransform.exe}" workingdir="${sandcastle.workingdir}">
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ReflectionToManifest.xsl&quot;" />
            <arg value="reflection.xml" />
            <arg value="/out:manifest.xml" />
        </exec>

        <!-- Create Output Environment -->
        <mkdir dir="${sandcastle.output.dir}" />
        <mkdir dir="${sandcastle.output.dir}/html" />
        <copy todir="${sandcastle.output.dir}">
            <fileset basedir="${sandcastle.dir}/Presentation/${sandcastle.style}">
                <include name="icons/*" />
                <include name="media/*" />
                <include name="scripts/*" />
                <include name="styles/*" />
            </fileset>
        </copy>

        <!-- Run BuildAssembler (create html topic files) -->
        <exec program="${sandcastle.buildassembler.exe}" workingdir="${sandcastle.workingdir}">
            <arg value="/config:Sandcastle.config" />
            <arg value="manifest.xml" />
        </exec>
    </target>

    <target name="sandcastle-all" description="Generate all formats of the Sandcastle documentation files.">
        <foreach item="String" in="vs2005,prototype,hana" delim="," property="sandcastle.style">
            <call target="sandcastle" />
        </foreach>
    </target>
</project>
