﻿<?xml version="1.0"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<project xmlns="http://nant.sourceforge.net/release/0.85/nant.xsd">

    <!-- ============================================================================================ -->
    <!--    P R O P E R T Y    D E F I N I T I O N S                                                  -->
    <!-- ============================================================================================ -->

    <!-- global project settings -->
    <property name="project.cls.compliant"   value="true" unless="${property::exists('project.cls.compliant')}" />
    <property name="project.release.type"    value="SNAPSHOT" unless="${property::exists('project.release.type')}" />
    <property name="project.version.full"    value="${project.version + if(project.release.type == 'snapshot', '-' + project.release.type, '')}" dynamic="true" />
    <property name="project.startyear"       value="2005" />
    <property name="build.dir"               value="${basedir}/build" />
    <property name="doc.dir"                 value="${build.dir}/doc" />
    <property name="lib.dir"                 value="${path::combine(basedir, 'lib')}" dynamic="true" />
    <property name="lib.family.dir"          value="${path::combine(lib.dir, framework::get-family(framework::get-target-framework()))}" dynamic="true" />
    <property name="lib.framework.dir"       value="${path::combine(lib.family.dir, version::to-string(framework::get-version(framework::get-target-framework())))}" dynamic="true" />
    <property name="package.dir"             value="${basedir}/package" />
    <property name="src.package.name"        value="${project.name + '-' + project.version + if(project.release.type == 'SNAPSHOT', '-' + project.release.type, '') + '-src.zip'}" />
    <property name="bin.package.name"        value="${project.name + '-' + project.version + if(project.release.type == 'SNAPSHOT', '-' + project.release.type, '') + '-bin.zip'}" />

    <!-- default configuration -->
    <property name="build.defines"           value="" />
    <property name="build.noskip"            value="false" />
    <property name="build.skip"              value="false" />
    <property name="build.skip.release"      value="false" unless="${property::exists('build.skip.release')}" />
    <property name="download.skip"           value="false" unless="${property::exists('download.skip')}"/>
    <property name="install.skip"            value="false" unless="${property::exists('install.skip')}"/>
    <property name="compile.skip"            value="false" unless="${property::exists('compile.skip')}" />
    <property name="current.build.config"    value="${if(project.release.type == 'release', 'release', 'debug')}" overwrite="false" />
    <property name="current.build.framework" value="${framework::get-target-framework()}" overwrite="false" />
    <property name="current.build.defines"   value="${build.defines}" />
    <property name="build.framework.strings" value="net-2.0,net-3.5,net-4.0,mono-2.0,mono-4.0,netcf-2.0,netcf-3.5" unless="${property::exists('build.framework.strings')}"/>
    <property name="current.build.framework.assembly.dir" value="${framework::get-assembly-directory(framework::get-target-framework())}" dynamic="true" />

    <property name="build.config.strings"    value="${if(property::exists('configuration'), configuration, if(build.skip.release == 'true', 'debug', 'debug,release'))}" dynamic="true" />

    <!-- Figure out the user's HOME directory -->
    <property name="user.home" value="${environment::get-variable('HOME')}"
            if="${environment::variable-exists('HOME') and platform::is-unix()}"
            unless="${property::exists('user.home')}" />
    <property name="user.home" value="${environment::get-variable('USERPROFILE')}"
            if="${environment::variable-exists('USERPROFILE') and platform::is-windows()}"
            unless="${property::exists('user.home')}" />
    <fail message="The HOME environment variable is not defined.  Please set it to your home directory."
            unless="${property::exists('user.home')}" if="${platform::is-unix()}" />
    <fail message="The USERPROFILE environment variable is not defined.  Please set it to your home directory."
            unless="${property::exists('user.home')}" if="${platform::is-windows()}" />

    <!-- Figure out the NANT repositories -->
    <property name="nant.remote.repo" value="${environment::get-variable('NANT_REMOTE_REPO')}"
            if="${environment::variable-exists('NANT_REMOTE_REPO')}"
            unless="${property::exists('nant.remote.repo')}" />
    <property name="nant.local.repo" value="${environment::get-variable('NANT_REPO')}/local"
            if="${environment::variable-exists('NANT_REPO')}"
            unless="${property::exists('nant.local.repo')}" />
    <property name="nant.local.repo" value="${user.home}/.nant/repository/local"
            unless="${property::exists('nant.local.repo')}" />

    <!-- Figure out the keyfile location -->
    <property name="snk.file" value="${environment::get-variable('ACTIVEMQ_DOTNET_SNK')}"
            if="${environment::variable-exists('ACTIVEMQ_DOTNET_SNK')}"
            unless="${property::exists('snk.file')}" />
    <property name="snk.file" value="${basedir}/keyfile/NMSKey.snk"
            if="${not property::exists('snk.file')}" />

    <!-- ============================================================================================ -->
    <!--      I N I T I A L I Z A T I O N     T A R G E T S                                           -->
    <!-- ============================================================================================ -->

    <target name="init" description="Initializes build properties">
        <!-- enabled the release or debug configuration -->
        <call target="set-${current.build.config}-configuration" />

        <!-- Check to see if our build setup for the target framework -->
        <if test="${not(target::exists('set-'+current.build.framework+'-framework-configuration'))}">
            <fail message="The '${current.build.framework}' framework is not supported by this version of ActiveMQ .NET" />
        </if>
        <call target="set-${current.build.framework}-framework-configuration" />

        <!-- Check to see current platform supports the target framework -->
        <if test="${framework::exists(current.build.framework)}">
            <property name="build.skip" value="false" />
        </if>
        <if test="${not framework::exists(current.build.framework)}">
            <if test="${build.noskip}">
                <fail message="${current.build.framework.name} is not available." />
            </if>
            <if test="${not(build.noskip)}">
                <echo message="${current.build.framework.name} is not available. Build skipped." />
                <property name="build.skip" value="true" />
            </if>
        </if>

        <!-- Check to see if we should skip this build framework. -->
        <if test="${not(build.skip)}">
            <if test="${property::exists('build.'+current.build.framework+'.skip')}">
                <property name="build.skip" value="true" />
                <echo message="The '${current.build.framework}' framework is not supported by this version of ActiveMQ .NET" />
            </if>
        </if>

        <property name="current.build.keysign" value="${current.build.framework.sign}" />
        <property name="build.bin.dir" value="${build.dir}/${current.build.framework}/${current.build.config}" />
        <if test="${not(build.skip)}">
            <echo message="Doing ${if(current.build.keysign,'a signed','an unsigned')} ${current.build.config} build for the ${current.build.framework.name} framework" />
            <mkdir dir="${build.bin.dir}" />
        </if>
        <call target="dependency-init" />
    </target>

    <!-- Generate four-digit build number -->
    <target name="generate-build-number">
        <if test="${not property::exists('project.version.numeric')}">
            <script language="C#">
                <imports>
                    <import namespace="System.Globalization" />
                    <import namespace="System.Threading" />
                </imports>
                <code>
                    <!-- Format for assembly revision is the number of days from the year the project 'started', property project.startyear.  -->
                    <![CDATA[
                        public static void ScriptMain(Project project)
                        {
                            int startYear = Convert.ToInt32(project.Properties["project.startyear"]);
                            DateTime start = new DateTime(startYear, 1, 1);
                            TimeSpan ts = DateTime.Now - start;
                            project.Properties["project.version.numeric"] = project.Properties["project.version"].ToString() + "." + ts.Days.ToString();
                        }
                    ]]>
                </code>
            </script>
        </if>
    </target>

    <!-- Generate assemblyinfo.cs files -->
    <target name="generate-assemblyinfo" depends="generate-build-number" description="Generate the assembly info for the path in assemblyinfo.filename">
        <asminfo output="${assemblyinfo.filename}" language="CSharp">
            <imports>
                <import namespace="System" />
                <import namespace="System.Reflection" />
                <import namespace="System.Runtime.InteropServices" />
            </imports>
            <attributes>
                <attribute type="ComVisibleAttribute" value="false" />
                <attribute type="CLSCompliantAttribute" value="${project.cls.compliant}" />
                <attribute type="AssemblyTitleAttribute" value="${project.short_description}" />
                <attribute type="AssemblyDescriptionAttribute" value="${project.description}" />
                <attribute type="AssemblyConfigurationAttribute" value="${project.release.type}" />
                <attribute type="AssemblyCompanyAttribute" value="http://activemq.apache.org/nms" />
                <attribute type="AssemblyProductAttribute" value="${project.short_description}" />
                <attribute type="AssemblyCopyrightAttribute" value="Copyright (C) ${project.startyear}-${datetime::get-year(datetime::now())} Apache Software Foundation" />
                <attribute type="AssemblyTrademarkAttribute" value="" />
                <attribute type="AssemblyCultureAttribute" value="" />
                <attribute type="AssemblyVersionAttribute" value="${project.version.numeric}" />
                <attribute type="AssemblyInformationalVersionAttribute" value="${project.version}" />
            </attributes>
        </asminfo>
    </target>

    <!-- ============================================================================================ -->
    <!--    C O N F I G U R A T I O N     T A R G E T S                                               -->
    <!-- ============================================================================================ -->

    <target name="set-noskip-configuration" description="Disable skipping builds">
        <property name="project.noskip" value="true" />
    </target>

    <target name="set-debug-configuration" description="Enabled 'debug' builds">
        <property name="current.build.config" value="debug" />
        <property name="current.build.config.debug" value="true" />
        <property name="current.build.config.release" value="false" />
        <property name="current.build.defines" value="${build.defines}DEBUG,TRACE," dynamic="true" />
        <property name="csc.debug" value="Full" />
        <property name="csc.optimize" value="false" />
    </target>

    <target name="set-release-configuration" description="Enabled 'release' builds">
        <property name="current.build.config" value="release" />
        <property name="current.build.config.release" value="true" />
        <property name="current.build.config.debug" value="false" />
        <property name="csc.debug" value="Full" />
        <property name="csc.optimize" value="true" />
    </target>

    <target name="set-net-2.0-framework-configuration">
        <property name="current.build.framework" value="net-2.0" />
        <property name="current.build.framework.name" value=".NET 2.0" />
        <property name="current.build.defines" value="${build.defines}NET,NET_2_0" dynamic="true" />
        <property name="current.build.framework.sign" value="true" />
        <property name="link.sdkdoc.version" value="SDK_v2_0" />
        <property name="link.sdkdoc.web" value="true" />
        <if test="${framework::exists(current.build.framework)}">
            <property name="nant.settings.currentframework" value="${current.build.framework}" />
        </if>
        <!-- Use the .NET 3.5 compiler for improved language features.  Still targets same runtime. -->
        <if test="${framework::exists('net-3.5')}">
            <property name="nant.settings.currentframework" value="net-3.5" />
        </if>
    </target>

    <target name="set-net-3.5-framework-configuration">
        <property name="current.build.framework" value="net-3.5" />
        <property name="current.build.framework.name" value=".NET 3.5" />
        <property name="current.build.defines" value="${build.defines}NET,NET_2_0,NET_3_5" dynamic="true" />
        <property name="current.build.framework.sign" value="true" />
        <property name="link.sdkdoc.version" value="SDK_v6_1" />
        <property name="link.sdkdoc.web" value="true" />
        <if test="${framework::exists(current.build.framework)}">
            <property name="nant.settings.currentframework" value="${current.build.framework}" />
        </if>
    </target>

    <target name="set-net-4.0-framework-configuration">
        <property name="current.build.framework" value="net-4.0" />
        <property name="current.build.framework.name" value=".NET 4.0" />
        <property name="current.build.defines" value="${build.defines}NET,NET_2_0,NET_3_5,NET_4_0" dynamic="true" />
        <property name="current.build.framework.sign" value="true" />
        <property name="link.sdkdoc.version" value="SDK_v7_0" />
        <property name="link.sdkdoc.web" value="true" />
        <if test="${framework::exists(current.build.framework)}">
            <property name="nant.settings.currentframework" value="${current.build.framework}" />
        </if>
    </target>

    <target name="set-netcf-2.0-framework-configuration">
        <property name="current.build.framework" value="netcf-2.0" />
        <property name="current.build.framework.name" value=".NET Compact Framework 2.0" />
        <property name="current.build.defines" value="${build.defines}PocketPC,NETCF,NETCF_2_0" dynamic="true" />
        <property name="current.build.framework.sign" value="true" />
        <property name="link.sdkdoc.version" value="SDK_v1_1" />
        <property name="link.sdkdoc.web" value="true" />
        <if test="${framework::exists(current.build.framework)}">
            <property name="nant.settings.currentframework" value="${current.build.framework}" />
        </if>
    </target>

    <target name="set-netcf-3.5-framework-configuration">
        <property name="current.build.framework" value="netcf-3.5" />
        <property name="current.build.framework.name" value=".NET Compact Framework 3.5" />
        <property name="current.build.defines" value="${build.defines}PocketPC,NETCF,NETCF_3_5" dynamic="true" />
        <property name="current.build.framework.sign" value="true" />
        <property name="link.sdkdoc.version" value="SDK_v3_5" />
        <property name="link.sdkdoc.web" value="true" />
        <if test="${framework::exists(current.build.framework)}">
            <property name="nant.settings.currentframework" value="${current.build.framework}" />
        </if>
    </target>

    <target name="set-mono-2.0-framework-configuration">
        <property name="current.build.framework" value="mono-2.0" />
        <property name="current.build.framework.name" value="Mono 2.0" />
        <property name="current.build.defines" value="${build.defines}MONO,MONO_2_0" dynamic="true" />
        <property name="current.build.framework.sign" value="true" />
        <property name="link.sdkdoc.version" value="SDK_v1_1" />
        <property name="link.sdkdoc.web" value="true" />
        <if test="${framework::exists(current.build.framework)}">
            <property name="nant.settings.currentframework" value="${current.build.framework}" />
        </if>
    </target>

    <target name="set-mono-4.0-framework-configuration">
        <property name="current.build.framework" value="mono-4.0" />
        <property name="current.build.framework.name" value="Mono 4.0" />
        <property name="current.build.defines" value="${build.defines}MONO,MONO_4_0" dynamic="true" />
        <property name="current.build.framework.sign" value="true" />
        <property name="link.sdkdoc.version" value="SDK_v1_1" />
        <property name="link.sdkdoc.web" value="true" />
        <if test="${framework::exists(current.build.framework)}">
            <property name="nant.settings.currentframework" value="${current.build.framework}" />
        </if>
    </target>

    <!-- ============================================================================================ -->
    <!--     C O M P I L E    T A R G E T S                                                           -->
    <!-- ============================================================================================ -->

    <target name="compile-all" description="Compile all build configurations for all runtime configurations">
        <echo message="Compiling all build configurations for all runtime configurations." />
        <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework">
            <foreach item="String" in="${build.config.strings}" delim="," property="current.build.config">
                <call target="compile-target" />
            </foreach>
        </foreach>
    </target>

    <target name="compile-target" depends="init, download-vendor, conditional-compile" />

    <target name="conditional-compile" depends="init" unless="${build.skip or compile.skip}"
            description="Conditionaly compiles all the modules if build framework and type are supported">
        <call target="compile" />
    </target>

    <target name="compile" description="Compile everything">
        <call target="compile-main" cascade="false" />
        <call target="compile-test" cascade="false" />
    </target>

    <target name="compile-main" depends="init" description="Build the main library">
        <echo message="Building the ${project.name} library" />
        <property name="assemblyinfo.filename" value="src/main/csharp/CommonAssemblyInfo.cs" />
        <call target="generate-assemblyinfo" />

        <csc if="${current.build.keysign}" keyfile="${snk.file}" target="library"
                define="${current.build.defines}" warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}"
                output="${build.bin.dir}/${project.name}.dll" doc="${build.bin.dir}/${project.name}.xml">
            <nowarn>
                <warning number="1591" /> <!-- do not report warnings for missing XML comments -->
            </nowarn>
            <sources failonempty="true">
                <include name="src/main/csharp/**.cs" />
            </sources>
            <references refid="dependencies" />
        </csc>
        <csc if="${not current.build.keysign}" target="library"
                define="${current.build.defines}" warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}"
                output="${build.bin.dir}/${project.name}.dll" doc="${build.bin.dir}/${project.name}.xml">
            <nowarn>
                <warning number="1591" /> <!-- do not report warnings for missing XML comments -->
            </nowarn>
            <sources failonempty="true">
                <include name="src/main/csharp/**.cs" />
            </sources>
            <references refid="dependencies" />
        </csc>
        <call target="copy-content" />
    </target>

    <!-- Compile the nms-test module -->
    <target name="compile-test" depends="compile-main" description="Build the test library">
        <echo message="Building the ${project.name}.Test library" />
        <property name="assemblyinfo.filename" value="src/test/csharp/CommonAssemblyInfo.cs" />
        <call target="generate-assemblyinfo" />

        <csc if="${current.build.keysign}" keyfile="${snk.file}" target="library"
                define="${current.build.defines}" warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}"
                output="${build.bin.dir}/${project.name}.Test.dll" doc="${build.bin.dir}/${project.name}.Test.xml">
            <nowarn>
                <warning number="1591" /> <!-- do not report warnings for missing XML comments -->
                <warning number="3016" /> <!-- do not report warnings for array parameters  -->
            </nowarn>
            <sources failonempty="true">
                <include name="src/test/csharp/**.cs" />
            </sources>
            <references refid="test.dependencies" />
        </csc>
        <csc if="${not current.build.keysign}" target="library"
                define="${current.build.defines}" warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}"
                output="${build.bin.dir}/${project.name}.Test.dll" doc="${build.bin.dir}/${project.name}.Test.xml">
            <nowarn>
                <warning number="1591" /> <!-- do not report warnings for missing XML comments -->
                <warning number="3016" /> <!-- do not report warnings for array parameters  -->
            </nowarn>
            <sources failonempty="true">
                <include name="src/test/csharp/**.cs" />
            </sources>
            <references refid="test.dependencies" />
        </csc>
        <call target="copy-content" />
    </target>

    <target name="copy-content">
        <foreach item="File" property="content.filename">
            <in>
                <items refid="content.filenames" />
            </in>
            <do>
                <copy todir="${build.bin.dir}" file="${content.filename}" if="${not file::up-to-date(content.filename, '${build.bin.dir}/${content.filename}')}" />
            </do>
        </foreach>
    </target>

    <!-- ============================================================================================ -->
    <!--      I N S T A L L     T A R G E T S                                                         -->
    <!-- ============================================================================================ -->

    <target name="install-all" description="Install all build configurations for all runtime configurations">
        <echo message="Installing all build configurations for all runtime configurations." />
        <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework">
            <foreach item="String" in="${build.config.strings}" delim="," property="current.build.config">
                <call target="install" />
            </foreach>
        </foreach>
    </target>

    <!-- Install the modules to the local repo -->
    <target name="install" depends="init, compile-target, conditional-install"
            description="Install the artifacts into the nant repo" />

    <target name="conditional-install" unless="${build.skip or install.skip}"
            description="Install the artifacts into the nant repo">
        <property name="path" value="${project.group}/${project.name}/${project.version.full}/${current.build.framework}/${current.build.config}" />
        <foreach item="File" property="install.filename">
            <in>
                <items refid="install.filenames" />
            </in>
            <do>
                <property name="repo.task.artifact" value="${path}/${path::get-file-name(install.filename)}" />
                <property name="repo.task.src" value="${install.filename}" />
                <property name="repo.task.dest" value="${nant.local.repo}/${repo.task.artifact}" />
                <mkdir dir="${directory::get-parent-directory(repo.task.dest)}" />
                <copy file="${repo.task.src}" tofile="${repo.task.dest}" />
            </do>
        </foreach>
    </target>

    <!-- ============================================================================================ -->
    <!--      R E P O    D O W N L O A D     T A R G E T S                                            -->
    <!-- ============================================================================================ -->

    <target name="download-vendor-all" description="Download vendor files for all runtime configurations">
        <echo message="Downloading vendor files for all runtime configurations." />
        <property name="current.build.config" value="release" />
        <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework">
            <call target="download-vendor" />
        </foreach>
    </target>

    <target name="download-vendor" depends="vendor-init, conditional-download"
                description="Download the vendor artifacts from the nant repo" />

    <target name="conditional-download" unless="${build.skip or download.skip}"
                description="Download the artifacts from the nant repo">
        <!-- Iterate over the defined vendor filesets. -->
        <foreach item="String" in="${vendor.fileset.names}" delim="," property="current.vendor">
            <property name="vendor.name" value="${property::get-value(current.vendor + '.name')}" />
            <property name="vendor.group" value="${property::get-value(current.vendor + '.group')}" />
            <property name="vendor.version" value="${property::get-value(current.vendor + '.version')}" />
            <property name="vendor.filenames" value="${property::get-value(current.vendor + '.filenames')}" />
            <property name="local.repo.vendor.path" value="${nant.local.repo}/${vendor.group}/${vendor.name}/${vendor.version}/${current.build.framework}/${current.build.config}" />
            <property name="lib.path" value="lib/${vendor.name}/${current.build.framework}" />
            <!--
            Update the LIB folder with the latest version of the file.  If there is a newer version
            installed in the local repository, then that version will be copied into the LIB folder.
            -->
            <foreach item="String" in="${vendor.filenames}" delim="," property="repo.task.artifact">
                <property name="lib.task.dest" value="${lib.path}/${repo.task.artifact}" />
                <mkdir dir="${directory::get-parent-directory(lib.task.dest)}" />
                <property name="repo.task.src" value="${local.repo.vendor.path}/${repo.task.artifact}" />
                <copy file="${repo.task.src}" tofile="${lib.task.dest}" if="${file::exists(repo.task.src)}" />
                <if test="${not file::exists(lib.task.dest)}">
                    <echo message="Required dependent assembly ${repo.task.artifact} from ${vendor.name} for ${current.build.framework} is not available. Build skipped." />
                    <property name="build.skip" value="true" />
                </if>
            </foreach>
        </foreach>
    </target>

    <!-- ============================================================================================ -->
    <!--      T E S T     T A R G E T S                                                               -->
    <!-- ============================================================================================ -->

    <target name="test" depends="test-debug" description="Alias test target to test-debug" />

    <target name="test-all" depends="test-debug, test-release" description="Test all build configurations for all runtime configurations" />

    <target name="test-debug" depends="" description="Test debug build configurations for all runtime configurations">
        <property name="current.build.config" value="debug" />
        <call target="test-frameworks" />
    </target>

    <target name="test-release" depends="" description="Test release build configurations for all runtime configurations">
        <property name="current.build.config" value="release" />
        <call target="test-frameworks" />
    </target>

    <target name="test-frameworks">
        <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework">
            <call target="init" />
            <if test="${not build.skip}">
                <exec program="nunit-console" failonerror="true" workingdir="build/${current.build.framework}/${current.build.config}">
                    <arg value="${NUnit.Projectfile}" />
                    <arg value="-labels" />
                    <arg value="-exclude=Manual,LongRunning" />
                    <arg value="-xml=Nunit.TestOutput.xml" />
                </exec>
            </if>
        </foreach>
    </target>

    <!-- ============================================================================================ -->
    <!--      M I S C E L L A N E O U S    T A R G E T S                                              -->
    <!-- ============================================================================================ -->

    <target name="build" depends="default" description="Build the project." />

    <target name="rebuild" depends="clean,build" description="Rebuild the project." />

    <target name="clean" description="Deletes build">
        <if test="${target::exists('clean-init')}">
            <call target="clean-init" />
        </if>
        <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework">
            <foreach item="String" in="${build.config.strings}" delim="," property="current.build.config">
                <call target="clean-proj" />
            </foreach>
        </foreach>
    </target>

    <target name="clean-proj" depends="init" description="Deletes specific project build">
        <property name="clean.dir" value="build/${current.build.framework}/${current.build.config}" />
        <delete dir="${clean.dir}" if="${directory::exists(clean.dir)}" />
        <property name="clean.dir" value="package/${current.build.config}" />
        <delete dir="${clean.dir}" if="${directory::exists(clean.dir)}" />
    </target>

    <target name="package" description="Bundle the source and binary distributions.">
        <mkdir dir="${package.dir}"
                if="${not directory::exists(package.dir)}" />
        <zip zipfile="${package.dir}/${bin.package.name}">
            <fileset refid="bin.package.contents"/>
        </zip>
        <zip zipfile="${package.dir}/${src.package.name}">
            <fileset refid="src.package.contents"/>
        </zip>
    </target>

    <target name="doc" depends="build">
        <mkdir dir="${doc.dir}" />
        <ndoc failonerror="false">
            <assemblies basedir="${build.bin.dir}">
                <include name="${project.name}.dll" />
            </assemblies>
            <summaries basedir="${basedir}/src/main/ndoc">
                <include name="NamespaceSummary.xml" />
            </summaries>
            <documenters>
                <documenter name="MSDN">
                    <property name="OutputDirectory" value="${doc.dir}" />
                    <property name="HtmlHelpName" value="${project.name}" />
                    <property name="HtmlHelpCompilerFilename" value="hhc.exe" />
                    <property name="IncludeFavorites" value="False" />
                    <property name="Title" value="${project.short_description}" />
                    <property name="SplitTOCs" value="False" />
                    <property name="DefaulTOC" value="" />
                    <!--
                    <property name="ShowVisualBasic" value="True" />
                    <property name="ShowMissingSummaries" value="True" />
                    <property name="ShowMissingRemarks" value="True" />
                    <property name="ShowMissingParams" value="True" />
                    <property name="ShowMissingReturns" value="True" />
                    <property name="ShowMissingValues" value="True" />
                    -->
                    <property name="DocumentInternals" value="False" />
                    <property name="DocumentProtected" value="True" />
                    <property name="DocumentPrivates" value="False" />
                    <property name="DocumentEmptyNamespaces" value="False" />
                    <property name="IncludeAssemblyVersion" value="True" />
                    <property name="CopyrightText" value="" />
                    <property name="CopyrightHref" value="" />
                </documenter>
            </documenters>
        </ndoc>
    </target>

    <target name="sandcastle" depends="set-release-configuration, init, conditional-compile">
        <!-- Directories -->
        <property name="sandcastle.style" value="vs2005" unless="${property::exists('sandcastle.style')}" />
        <property name="documentation.dir" value="${build.bin.dir}" />
        <property name="bin.intern.dir" value="${build.bin.dir}" />
        <property name="bin.extern.dir" value="${basedir}\lib\NUnit\net-2.0" />
        <property name="sandcastle.dir" value="${environment::get-variable('DXROOT')}" />
        <property name="sandcastle.workingdir" value="${build.dir}\doc\${sandcastle.style}" />
        <property name="sandcastle.output.dir" value="${sandcastle.workingdir}\Output" />

        <!-- Executables -->
        <property name="sandcastle.mrefbuilder.exe" value="${sandcastle.dir}\productiontools\mrefbuilder.exe" />
        <property name="sandcastle.buildassembler.exe" value="${sandcastle.dir}\productiontools\buildassembler.exe" />
        <property name="sandcastle.xsltransform.exe" value="${sandcastle.dir}\productiontools\xsltransform.exe" />
        <property name="sandcastle.productiontransforms.dir" value="${sandcastle.dir}\ProductionTransforms" />

        <!-- Create or Cleanup Working Directory -->
        <mkdir dir="${sandcastle.workingdir}"
                if="${not directory::exists(sandcastle.workingdir)}" />
        <delete>
            <fileset basedir="${sandcastle.workingdir}">
                <include name="**\*" />
            </fileset>
        </delete>

        <!-- Copy configuration file, and hard code references -->
        <copy file="${sandcastle.dir}/Presentation/${sandcastle.style}/Configuration/Sandcastle.config"
                tofile="${sandcastle.workingdir}/Sandcastle.config">
            <filterchain>
                <replacestring from="&quot;..\..\" to="&quot;${sandcastle.dir}\" />
                <replacestring from="&quot;..\" to="&quot;${sandcastle.dir}\Examples\" />
                <replacestring from="&quot;.\comments.xml" to="&quot;${documentation.dir}\${project.name}.xml" />
                <replacestring from="&quot;%DXROOT%\Presentation\${sandcastle.style}\content\feedback_content.xml&quot;" to="&quot;${basedir}/src/main/sandcastle/feedback_content.xml&quot;" />
            </filterchain>
        </copy>

        <!-- Run MRefBuilder (introspection on assemblies) to create basic Reflection XML -->
        <exec program="${sandcastle.mrefbuilder.exe}" workingdir="${sandcastle.workingdir}">
            <arg value="${bin.intern.dir}/${project.name}.dll" />
            <arg value="/out:reflection.int.xml" />
            <arg value="/dep:${bin.extern.dir}\*.dll" />
        </exec>

        <!-- Create Reflection XML -->
        <exec program="${sandcastle.xsltransform.exe}" workingdir="${sandcastle.workingdir}">
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ApplyVSDocModel.xsl&quot;" if="${sandcastle.style != 'prototype'}" />
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ApplyPrototypeDocModel.xsl&quot;" if="${sandcastle.style == 'prototype'}" />
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\AddFriendlyFilenames.xsl&quot;" /> <!-- if="${sandcastle.style != 'prototype'}" /> -->
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\AddGuidFilenames.xsl&quot;" if="${sandcastle.style == 'disabled'}" />
            <arg value="reflection.int.xml" />
            <arg value="/out:reflection.xml" />
            <arg value="/arg:IncludeAllMembersTopic=true" />
            <arg value="/arg:IncludeInheritedOverloadTopics=true" />
        </exec>

        <!-- Create Manifest (list of Topics) -->
        <exec program="${sandcastle.xsltransform.exe}" workingdir="${sandcastle.workingdir}">
            <arg value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ReflectionToManifest.xsl&quot;" />
            <arg value="reflection.xml" />
            <arg value="/out:manifest.xml" />
        </exec>

        <!-- Create Output Environment -->
        <mkdir dir="${sandcastle.output.dir}" />
        <mkdir dir="${sandcastle.output.dir}/html" />
        <copy todir="${sandcastle.output.dir}">
            <fileset basedir="${sandcastle.dir}/Presentation/${sandcastle.style}">
                <include name="icons/*" />
                <include name="media/*" />
                <include name="scripts/*" />
                <include name="styles/*" />
            </fileset>
        </copy>

        <!-- Run BuildAssembler (create html topic files) -->
        <exec program="${sandcastle.buildassembler.exe}" workingdir="${sandcastle.workingdir}">
            <arg value="/config:Sandcastle.config" />
            <arg value="manifest.xml" />
        </exec>
    </target>

    <target name="sandcastle-all" description="Generate all formats of the Sandcastle documentation files.">
        <foreach item="String" in="vs2005,prototype,hana" delim="," property="sandcastle.style">
            <call target="sandcastle" />
        </foreach>
    </target>
</project>
