﻿<?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="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}" />
    <!-- TODO: Add net-4.0 once NAnt supports it. -->
    <property name="build.framework.strings" value="net-2.0,net-3.5,mono-2.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" />
        <!-- 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_v6_1" />
        <property name="link.sdkdoc.web" value="true" />
        <property name="nant.settings.currentframework" value="${current.build.framework}" />
    </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>

    <!-- ============================================================================================ -->
    <!--     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}"
            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.  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.name} 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=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>
        <delete dir="build" if="${directory::exists('build')}" />
        <delete dir="obj" if="${directory::exists('obj')}" />
        <delete dir="package" if="${directory::exists('package')}" />
    </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}\vendor\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>
