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