﻿<?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="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,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_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>

    <!-- ============================================================================================ -->
    <!--     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 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=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}\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>
