<?xml version="1.0" ?>
<!--
Copyright 2004-2005 The Apache Software Foundation

Licensed 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 name="log4net" default="compile-all" xmlnds="http://tempuri.org/nant-vs.xsd">
    <!-- Global project settings -->
    <property name="log4net.basedir" value="." />
    <property name="project.build.config" value="debug" />
    <property name="project.build.package" value="false" />
    <!-- Include log4net helpers -->
    <include buildfile="${log4net.basedir}/log4net.include" />
    <!-- Targets that should always be executed -->
    <call target="set-build-configuration" />
    <call target="set-framework-configuration" />
    <!-- Targets that check settings -->
    <target name="check-package-version">
        <fail 
            message="A package version has not been specified." 
            if="${not property::exists('package.version')}" />
    </target>
    <target name="check-package-dir">
        <property name="package.dir" value="build/package" overwrite="false" />
        <mkdir dir="${package.dir}" />
    </target>
    <target name="check-current-package-dir">
        <fail 
            message="The current package directory has not been specified."
            if="${not property::exists('current.package.dir')}" />
        <mkdir dir="${current.package.dir}" />
    </target>
    <target name="check-current-package-zipfile">
        <fail 
            message="The current package zipfile has not been specified."
            if="${not property::exists('current.package.zipfile')}" />
    </target>
    <target name="check-htmlhelp-compiler">
        <if test="${not property::exists('htmlhelp.compiler')}">
            <readregistry
                property="htmlhelp.workshop.installroot"
                key="SOFTWARE\Microsoft\HTML Help Workshop\InstallDir"
                hive="CurrentUser"
                failonerror="false" />
            <if test="${property::exists('htmlhelp.workshop.installroot')}">
                <property 
                    name="htmlhelp.compiler"
                    value="${htmlhelp.workshop.installroot}/hhc.exe" />
            </if>
        </if>
        <if test="${not property::exists('htmlhelp.compiler')}">
            <sysinfo />
            <property 
                name="htmlhelp.compiler"
                value="${sys.os.folder.programfiles}/HTML Help Worshop/hhc.exe" />
        </if>
    </target>
    <!-- Target for cleaning up the current package directory -->
    <target name="clean-current-package-dir" depends="check-current-package-dir" description="Cleans the current package directory">
        <echo message="Cleaning the ${current.package.dir} package directory." />
        <delete dir="${current.package.dir}" if="${directory::exists(current.package.dir)}" />
        <mkdir dir="${current.package.dir}" />
    </target>
    <!-- Displays configuration info, usefull for working out why log4net doesn't build -->
    <target name="display-setup" depends="check-htmlhelp-compiler">
        <!-- .NET Framework 1.0 -->
        <if test="${framework::exists('net-1.0')}">
            <property name="nant.settings.currentframework" value="net-1.0" />
            <call target="display-target-framework" />
        </if>
        <if test="${not framework::exists('net-1.0')}">
            <echo message=".NET Framework 1.0 runtime is not available." />
        </if>
        <!-- .NET Framework 1.1 -->
        <if test="${framework::exists('net-1.1')}">
            <property name="nant.settings.currentframework" value="net-1.1" />
            <call target="display-target-framework" />
        </if>
        <if test="${not framework::exists('net-1.1')}">
            <echo message=".NET Framework 1.1 runtime is not available." />
        </if>
        <!-- .NET Framework 2.0 -->
        <if test="${framework::exists('net-2.0')}">
            <property name="nant.settings.currentframework" value="net-2.0" />
            <call target="display-target-framework" />
        </if>
        <if test="${not framework::exists('net-2.0')}">
            <echo message=".NET Framework 2.0 runtime is not available." />
        </if>
        <!-- .NET Compact Framework 1.0 -->
        <if test="${framework::exists('netcf-1.0')}">
            <property name="nant.settings.currentframework" value="netcf-1.0" />
            <call target="display-target-framework" />
        </if>
        <if test="${not framework::exists('netcf-1.0')}">
            <echo message=".NET Compact Framework 1.0 runtime is not available." />
        </if>
        <!-- Mono 1.0 -->
        <if test="${framework::exists('mono-1.0')}">
            <property name="nant.settings.currentframework" value="mono-1.0" />
            <call target="display-target-framework" />
        </if>
        <if test="${not framework::exists('mono-1.0')}">
            <echo message="Mono 1.0 runtime is not available." />
        </if>
        <!-- Mono 2.0 -->
        <if test="${framework::exists('mono-2.0')}">
            <property name="nant.settings.currentframework" value="mono-2.0" />
            <call target="display-target-framework" />
        </if>
        <if test="${not framework::exists('mono-2.0')}">
            <echo message="Mono 2.0 runtime is not available." />
        </if>
        <!-- SSCLI 1.0 -->
        <if test="${framework::exists('sscli-1.0')}">
            <property name="nant.settings.currentframework" value="sscli-1.0" />
            <call target="display-target-framework" />
        </if>
        <if test="${not framework::exists('sscli-1.0')}">
            <echo message="SSCLI 1.0 runtime is not available." />
        </if>
        <!-- HTML Help Compiler -->
        <echo message="htmlhelp.compiler: ${htmlhelp.compiler}" />
    </target>
    <target name="display-target-framework">
        <echo message="" />
        <echo message="----------------------------------------------------------" />
        <echo message=" ${nant.settings.currentframework.description}" />
        <echo message="----------------------------------------------------------" />
        <echo message="" />
        <echo message="framework : ${framework::get-target-framework()}" />
        <echo message="description : ${framework::get-description(framework::get-target-framework())}" />
        <if test="${framework::sdk-exists(framework::get-target-framework())}">
            <echo message="sdk directory : ${framework::get-sdk-directory(framework::get-target-framework())}" />
        </if>
        <if test="${not framework::sdk-exists(framework::get-target-framework())}">
            <echo message="sdk directory : &lt;not configured/available&gt;" />
        </if>
        <echo message="framework directory : ${framework::get-framework-directory(framework::get-target-framework())}" />
        <echo message="assembly directory : ${framework::get-assembly-directory(framework::get-target-framework())}" />
        <echo message="" />
    </target>
    <!-- Target for setting the package configuration -->
    <target name="set-package-configuration" depends="check-package-dir, check-package-version">
        <property name="current.package.name" value="${nant.project.name}-${package.version}" />
        <property name="current.package.dir" value="${package.dir}/${current.package.name}" />
        <property name="log4net.basedir" value="${current.package.dir}" />
        <property name="current.package.zipfile" value="${project::get-name()}-${package.version}.zip" />
        <property name="bin.dir" value="${current.package.dir}/bin" />
        <property name="doc.dir" value="${current.package.dir}/doc" />
        <property name="sdkdoc.dir" value="${doc.dir}/sdk" />
        <delete dir="${current.package.dir}" if="${directory::exists(current.package.dir)}" />
        <mkdir dir="${current.package.dir}" />
    </target>
    <!-- Target for compiling all build configurations for all runtime configurations -->
    <target name="compile-all" description="Compile all build configurations for all runtime configurations">
        <echo message="Compiling all build configurations for all runtime configurations." />
        <call target="set-debug-build-configuration" />
        <call target="compile-build" />
        <call target="set-release-build-configuration" />
        <call target="compile-build" />
    </target>
    <!-- Target for compiling all build configurations for the current runtime configurations -->
    <target name="compile-runtime" description="Compile all build configurations for the current target framework">
        <echo message="Compiling all build configurations for ${framework::get-description(framework::get-target-framework())}." />
        <call target="set-debug-build-configuration" />
        <!-- make sure that the runtime properties that rely on build configuration information are refreshed -->
        <call target="set-runtime-configuration" />
        <call target="compile-${framework::get-target-framework()}" />
        <call target="set-release-build-configuration" />
        <!-- make sure that the runtime properties that rely on build configuration information are refreshed -->
        <call target="set-runtime-configuration" />
        <call target="compile-${framework::get-target-framework()}" />
    </target>
    <!-- Target for compiling all runtime configurations in the current build configuration -->
    <target name="compile-build" description="Compile current build configurations for all runtime configurations">
        <echo message="Compiling all framework versions for the ${current.build.config} build configuration." />
        <if test="${framework::exists('netcf-1.0')}">
            <call target="compile-netcf-1.0" />
        </if>
        <if test="${not framework::exists('netcf-1.0')}">
            <if test="${property::exists('project.build.package') and project.build.package}">
                <fail message="The .NET Compact Framework 1.0 is not available." />
            </if>
            <if test="${not(property::exists('project.build.package') and project.build.package)}">
                <echo 
                    message="The .NET Compact Framework 1.0 is not available. Build skipped." />
            </if>
        </if>
        <if test="${framework::exists('net-1.0')}">
            <call target="compile-net-1.0" />
            <call target="compile-cli-1.0" />
        </if>
        <if test="${not framework::exists('net-1.0')}">
            <if test="${property::exists('project.build.package') and project.build.package}">
                <fail message="The .NET Framework 1.0 is not available." />
            </if>
            <if test="${not(property::exists('project.build.package') and project.build.package)}">
                <echo message="The .NET Framework 1.0 is not available. Build skipped." />
            </if>
        </if>
        <if test="${framework::exists('net-1.1')}">
            <call target="compile-net-1.1" />
        </if>
        <if test="${not framework::exists('net-1.1')}">
            <if test="${property::exists('project.build.package') and project.build.package}">
                <fail message="The .NET Framework 1.1 is not available." />
            </if>
            <if test="${not(property::exists('project.build.package') and project.build.package)}">
                <echo message="The .NET Framework 1.1 is not available. Build skipped." />
            </if>
        </if>
        <if test="${framework::exists('net-2.0')}">
            <call target="compile-net-2.0" />
        </if>
        <if test="${not framework::exists('net-2.0')}">
            <if test="${property::exists('project.build.package') and project.build.package}">
                <fail message="The .NET Framework 2.0 is not available." />
            </if>
            <if test="${not(property::exists('project.build.package') and project.build.package)}">
                <echo message="The .NET Framework 2.0 is not available. Build skipped." />
            </if>
        </if> 
        <if test="${framework::exists('mono-1.0')}">
            <call target="compile-mono-1.0" />
        </if>
        <if test="${not framework::exists('mono-1.0')}">
            <if test="${property::exists('project.build.package') and project.build.package}">
                <fail message="Mono 1.0 is not available." />
            </if>
            <if test="${not(property::exists('project.build.package') and project.build.package)}">
                <echo message="Mono 1.0 is not available. Build skipped." />
            </if>
        </if>
        <if test="${framework::exists('mono-2.0')}">
            <call target="compile-mono-2.0" />
        </if>
        <if test="${not framework::exists('mono-2.0')}">
            <if test="${property::exists('project.build.package') and project.build.package}">
                <fail message="Mono 2.0 is not available." />
            </if>
            <if test="${not(property::exists('project.build.package') and project.build.package)}">
                <echo message="Mono 2.0 is not available. Build skipped." />
            </if>
        </if>
        <if test="${framework::exists('sscli-1.0')}">
            <call target="compile-sscli-1.0" />
        </if>
        <if test="${not framework::exists('sscli-1.0')}">
            <if test="${property::exists('project.build.package') and project.build.package}">
                <fail message="SSCLI 1.0 is not available." />
            </if>
            <if test="${not(property::exists('project.build.package') and project.build.package)}">
                <echo message="SSCLI 1.0 is not available. Build skipped." />
            </if>
        </if>
    </target>
    <target name="compile" description="Builds the current build configuration for the current target framework." depends="check-current-build-config">
        <call target="compile-${framework::get-target-framework()}" />
    </target>
    <target name="compile-netcf-1.0" description="Builds .NET Compact Framework 1.0 version" depends="set-netcf-1.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
        <!-- initialize the temp.build.skip property to false -->
        <property name="temp.build.skip" value="false" />
        <if test="${current.build.config.release}">
            <!-- check if the log4net key file is available -->
            <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
                <if test="${property::exists('project.build.package') and project.build.package}">
                    <fail message="Key file not found." />
                </if>
                <if test="${not(property::exists('project.build.package') and project.build.package)}">
                    <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
                    <echo message="The generated key file should be stored in the log4net base directory." />
                    <echo message="The release build will be skipped." />
                    <property name="temp.build.skip" value="true" />
                </if>
            </if>
            <if test="${file::exists(log4net.basedir + '/log4net.snk')}">
                <!-- copy the log4net key file to the location where the compiler expects it to be -->
                <copy file="${log4net.basedir}/log4net.snk" todir="${current.bin.dir}/../../../" />
            </if>
        </if>
        <if test="${not temp.build.skip}">
            <csc warnaserror="true" target="library" debug="${current.build.debug}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
                <sources basedir="${log4net.basedir}/src">
                    <include name="**/*.cs" />
                </sources>
                <references>
                    <include name="mscorlib.dll" />
                    <include name="System.dll" />
                    <include name="System.Data.dll" />
                    <include name="System.Xml.dll" />
                    <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
                    <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
                </references>
            </csc>
        </if>
    </target>
    <target name="compile-net-1.0" description="Builds .NET Framework 1.0 version" depends="set-net-1.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
        <!-- initialize the temp.build.skip property to false -->
        <property name="temp.build.skip" value="false" />
        <if test="${current.build.config.release}">
            <!-- check if the log4net key file is available -->
            <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
                <if test="${property::exists('project.build.package') and project.build.package}">
                    <fail message="Key file not found." />
                </if>
                <if test="${not(property::exists('project.build.package') and project.build.package)}">
                    <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
                    <echo message="The generated key file should be stored in the log4net base directory." />
                    <echo message="The release build will be skipped." />
                    <property name="temp.build.skip" value="true" />
                </if>
            </if>
            <if test="${file::exists(log4net.basedir + '/log4net.snk')}">
                <!-- copy the log4net key file to the location where the compiler expects it to be -->
                <copy file="${log4net.basedir}/log4net.snk" todir="${current.bin.dir}/../../../" />
            </if>
        </if>
        <if test="${not temp.build.skip}">
            <csc nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
                <sources basedir="${log4net.basedir}/src">
                    <include name="**/*.cs" />
                </sources>
                <references>
                    <include name="mscorlib.dll" />
                    <include name="System.dll" />
                    <include name="System.Data.dll" />
                    <include name="System.Web.dll" />
                    <include name="System.Xml.dll" />
                    <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
                    <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
                </references>
            </csc>
        </if>
    </target>
    <target name="compile-net-1.1" description="Builds .NET Framework 1.1 version" depends="set-net-1.1-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
        <!-- initialize the temp.build.skip property to false -->
        <property name="temp.build.skip" value="false" />
        <if test="${current.build.config.release}">
            <!-- check if the log4net key file is available -->
            <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
                <if test="${property::exists('project.build.package') and project.build.package}">
                    <fail message="Key file not found." />
                </if>
                <if test="${not(property::exists('project.build.package') and project.build.package)}">
                    <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
                    <echo message="The generated key file should be stored in the log4net base directory." />
                    <echo message="The release build will be skipped." />
                    <property name="temp.build.skip" value="true" />
                </if>
            </if>
            <if test="${file::exists(log4net.basedir + '/log4net.snk')}">
                <!-- copy the log4net key file to the location where the compiler expects it to be -->
                <copy file="${log4net.basedir}/log4net.snk" todir="${current.bin.dir}/../../../" />
            </if>
        </if>
        <if test="${not temp.build.skip}">
            <csc nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
                <sources basedir="${log4net.basedir}/src">
                    <include name="**/*.cs" />
                </sources>
                <references>
                    <include name="mscorlib.dll" />
                    <include name="System.dll" />
                    <include name="System.Data.dll" />
                    <include name="System.Web.dll" />
                    <include name="System.Xml.dll" />
                    <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
                    <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
                </references>
            </csc>
        </if>
    </target>
    <target name="compile-net-2.0" description="Builds .NET Framework 2.0 version" depends="set-net-2.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
        <!-- initialize the temp.build.skip property to false -->
        <property name="temp.build.skip" value="false" />
        <if test="${current.build.config.release}">
            <!-- check if the log4net key file is available -->
            <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
                <if test="${property::exists('project.build.package') and project.build.package}">
                    <fail message="Key file not found." />
                </if>
                <if test="${not(property::exists('project.build.package') and project.build.package)}">
                    <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
                    <echo message="The generated key file should be stored in the log4net base directory." />
                    <echo message="The release build will be skipped." />
                    <property name="temp.build.skip" value="true" />
                </if>
            </if>
        </if>
        <if test="${not temp.build.skip}">
            <csc keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
                <nowarn>
                    <!-- warning CS1058: A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a System.Runtime.CompilerServices.RuntimeWrappedException -->
                    <warning number="1058" />
                </nowarn>
                <sources basedir="${log4net.basedir}/src">
                    <include name="**/*.cs" />
                </sources>
                <references>
                    <include name="mscorlib.dll" />
                    <include name="System.dll" />
                    <include name="System.Data.dll" />
                    <include name="System.Web.dll" />
                    <include name="System.Xml.dll" />
                    <include name="System.Configuration.dll" />
                    <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
                    <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
                </references>
            </csc>
        </if>
    </target>
    <target name="compile-mono-1.0" description="Builds Mono 1.0 version" depends="set-mono-1.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
        <!-- initialize the temp.build.skip property to false -->
        <property name="temp.build.skip" value="false" />
        <if test="${current.build.config.release}">
            <!-- check if the log4net key file is available -->
            <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
                <if test="${property::exists('project.build.package') and project.build.package}">
                    <fail message="Key file not found." />
                </if>
                <if test="${not(property::exists('project.build.package') and project.build.package)}">
                    <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
                    <echo message="The generated key file should be stored in the log4net base directory." />
                    <echo message="The release build will be skipped." />
                    <property name="temp.build.skip" value="true" />
                </if>
            </if>
        </if>
        <if test="${not temp.build.skip}">
            <csc keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
                <nowarn>
                    <!-- workaround for Mono bug #61902 -->
                    <warning number="0618" />
                    <!-- warning CS1058: A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a System.Runtime.CompilerServices.RuntimeWrappedException -->
                    <warning number="1058" />
                </nowarn>
                <sources basedir="${log4net.basedir}/src">
                    <include name="**/*.cs" />
                </sources>
                <references>
                    <include name="System.dll" />
                    <include name="System.Data.dll" />
                    <include name="System.Web.dll" />
                    <include name="System.Xml.dll" />
                    <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
                    <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
                </references>
            </csc>
        </if>
    </target>
    <target name="compile-mono-2.0" description="Builds Mono 2.0 version" depends="set-mono-2.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
        <!-- initialize the temp.build.skip property to false -->
        <property name="temp.build.skip" value="false" />
        <if test="${current.build.config.release}">
            <!-- check if the log4net key file is available -->
            <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
                <if test="${property::exists('project.build.package') and project.build.package}">
                    <fail message="Key file not found." />
                </if>
                <if test="${not(property::exists('project.build.package') and project.build.package)}">
                    <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
                    <echo message="The generated key file should be stored in the log4net base directory." />
                    <echo message="The release build will be skipped." />
                    <property name="temp.build.skip" value="true" />
                </if>
            </if>
        </if>
        <if test="${not temp.build.skip}">
            <csc keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
                <nowarn>
                    <!-- workaround for Mono bug #61902 -->
                    <warning number="0618" />
                    <!-- warning CS1058: A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a System.Runtime.CompilerServices.RuntimeWrappedException -->
                    <warning number="1058" />
                </nowarn>
                <sources basedir="${log4net.basedir}/src">
                    <include name="**/*.cs" />
                </sources>
                <references>
                    <include name="System.dll" />
                    <include name="System.Data.dll" />
                    <include name="System.Web.dll" />
                    <include name="System.Xml.dll" />
                    <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
                    <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
                </references>
            </csc>
        </if>
  </target>
  <target name="compile-sscli-1.0" description="Builds SSCLI 1.0 version" depends="set-sscli-1.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
        <!-- initialize the temp.build.skip property to false -->
        <property name="temp.build.skip" value="false" />
        <if test="${current.build.config.release}">
            <!-- check if the log4net key file is available -->
            <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
                <if test="${property::exists('project.build.package') and project.build.package}">
                    <fail message="Key file not found." />
                </if>
                <if test="${not(property::exists('project.build.package') and project.build.package)}">
                    <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
                    <echo message="The generated key file should be stored in the log4net base directory." />
                    <echo message="The release build will be skipped." />
                    <property name="temp.build.skip" value="true" />
                </if>
            </if>
            <if test="${file::exists(log4net.basedir + '/log4net.snk')}">
                <!-- copy the log4net key file to the location where the compiler expects it to be -->
                <copy file="${log4net.basedir}/log4net.snk" todir="${current.bin.dir}/../../../" />
            </if>
        </if>
        <if test="${not temp.build.skip}">
            <csc nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll">
                <sources basedir="${log4net.basedir}/src">
                    <include name="**/*.cs" />
                </sources>
                <references>
                    <include name="mscorlib.dll" />
                    <include name="System.dll" />
                    <include name="System.Xml.dll" />
                    <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
                    <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
                </references>
            </csc>
        </if>
    </target>
    <!--
        This version is built to run on any CLI 1.0 (ECMA 335) standard runtime.
        The build excludes any code that is platform specific.
        The .NET 1.0 compiler and library are used to build the assembly.
        
        The log4net CLI 1.0 assembly is runtime compatible with the following frameworks :
        * Microsoft .NET Framework 1.0 (and higher)
        * Mono 1.0 (and higher)
        
        We only provide this "flavor" of log4net in release configuration because
        debugging information is not standardized and would be too closely tied to
        a specific implementation.
    -->
    <target name="compile-cli-1.0" description="Builds CLI 1.0 version" depends="set-cli-1.0-configuration, check-log4net-basedir, clean-current-bin-dir" if="${current.build.config.release}">
        <delete>
            <fileset basedir="${current.bin.dir}">
                <include name="log4net.*" />
            </fileset>
        </delete>
        <!-- initialize the temp.build.skip property to false -->
        <property name="temp.build.skip" value="false" />
        <if test="${current.build.config.release}">
            <!-- check if the log4net key file is available -->
            <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
                <if test="${property::exists('project.build.package') and project.build.package}">
                    <fail message="Key file not found." />
                </if>
                <if test="${not(property::exists('project.build.package') and project.build.package)}">
                    <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
                    <echo message="The generated key file should be stored in the log4net base directory." />
                    <echo message="The release build will be skipped." />
                    <property name="temp.build.skip" value="true" />
                </if>
            </if>
            <if test="${file::exists(log4net.basedir + '/log4net.snk')}">
                <!-- copy the log4net key file to the location where the compiler expects it to be -->
                <copy file="${log4net.basedir}/log4net.snk" todir="${current.bin.dir}/../../../" />
            </if>
        </if>
        <if test="${not temp.build.skip}">
            <csc nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
                <sources basedir="${log4net.basedir}/src">
                    <include name="**/*.cs" />
                </sources>
                <references>
                    <include name="mscorlib.dll" />
                    <include name="System.dll" />
                    <include name="System.Data.dll" />
                    <include name="System.Web.dll" />
                    <include name="System.Xml.dll" />
                    <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
                    <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
                </references>
            </csc>
        </if>
    </target>
    <!-- Target for generating docs for all runtime configurations -->
    <target name="generate-sdkdoc-all" depends="check-current-build-config">
        <echo message="Generating SDK documentation temporarily disabled." />
        <!--
        <echo message="Generating SDK documentation based on the ${current.build.config} build configuration for all runtime configurations." />
        <if test="${framework::exists('netcf-1.0')}">
            <call target="set-netcf-1.0-runtime-configuration" />
            <call target="generate-sdkdoc" />
        </if>
        <if test="${framework::exists('net-1.0')}">
            <call target="set-net-1.0-runtime-configuration" />
            <call target="generate-sdkdoc" />
        </if>
        <if test="${framework::exists('net-1.1')}">
            <call target="set-net-1.1-runtime-configuration" />
            <call target="generate-sdkdoc" />
        </if>
        -->
        <!-- NAnt doesn't yet come with a version of NDoc that can handle .NET 2.0 assemblies -->
        <!-- Mono 1.0 does not support extracting xml documentation -->
        <!-- SSCLI 1.0 does not support extracting xml documentation -->
    </target>
    <!-- Target for generating docs for build configurations -->
    <target name="generate-sdkdoc" depends="compile, check-htmlhelp-compiler, check-current-sdkdoc-dir, check-current-sdkdoc-debug, clean-current-sdkdoc-dir">
        <ndoc>
            <assemblies basedir="${current.bin.dir}">
                <include name="log4net.dll" />
            </assemblies>
            <documenters>
                <documenter name="MSDN">
                    <property name="OutputDirectory" value="${current.sdkdoc.dir}" />
                    <property name="HtmlHelpName" value="log4net-sdk-${framework::get-target-framework()}" />
                    <property name="HtmlHelpCompilerFilename" value="${htmlhelp.compiler}" />
                    <property name="IncludeFavorites" value="true" />
                    <property name="IncludeHierarchy" value="true" />
                    <property name="Title" value="log4net SDK Documentation - ${framework::get-description(framework::get-target-framework())}" />
                    <property name="SplitTOCs" value="false" />
                    <property name="DefaulTOC" value="" />
                    <property name="ShowVisualBasic" value="true" />
                    <property name="OmitObjectTags" value="false" />
                    <property name="RootPageContainsNamespaces" value="false" />
                    <property name="SortTOCByNamespace" value="true" />
                    <property name="ShowMissingSummaries" value="${current.sdkdoc.debug}" />
                    <property name="ShowMissingRemarks" value="${current.sdkdoc.debug}" />
                    <property name="ShowMissingParams" value="${current.sdkdoc.debug}" />
                    <property name="ShowMissingReturns" value="${current.sdkdoc.debug}" />
                    <property name="ShowMissingValues" value="${current.sdkdoc.debug}" />
                    <property name="DocumentAttributes" value="false" />
                    <property name="DocumentedAttributes" value="" />
                    <property name="DocumentInternals" value="false" />
                    <property name="DocumentPrivates" value="false" />
                    <property name="DocumentProtected" value="true" />
                    <property name="DocumentEmptyNamespaces" value="false" />
                    <property name="SkipNamespacesWithoutSummaries" value="false" />
                    <property name="AutoPropertyBackerSummaries" value="false" />
                    <property name="AutoDocumentConstructors" value="true" />
                    <property name="GetExternalSummaries" value="true" />
                    <property name="IncludeAssemblyVersion" value="false" />
                    <property name="CopyrightText" value="Copyright 2001-2006 The Apache Software Foundation." />
                    <property name="CopyrightHref" value="http://logging.apache.org/log4net" />
                </documenter>
            </documenters>
        </ndoc>
        <!-- Remove everything except the help file itself from the current SDK documentation directory -->
        <delete>
            <fileset basedir="${current.sdkdoc.dir}">
                <include name="**/*" />
                <exclude name="**/*.chm" />
            </fileset>
        </delete>
    </target>
    <target name="package" depends="set-package-configuration" description="Build and Package distribution">
        <!-- set flag to indicating that this is a package build -->
        <property name="project.build.package" value="true" />
        <!-- clean the current package directory -->
        <call target="clean-current-package-dir" />
        <!-- copies the examples to the current package directory -->
        <call target="package-examples" />
        <!-- copies the sources to the current package directory -->
        <call target="package-src" />
        <!-- copies the unit tests sources to the current package directory -->
        <call target="package-tests-src" />
        <!-- copies the extenstions to the current package directory -->
        <call target="package-extensions" />
        <!-- copies the documentation to the current package directory -->
        <call target="package-doc" />
        <!-- copies the release files to the current package directory -->
        <call target="package-release-files" />
        <!-- compile all build configurations for all runtime configurations  -->
        <call target="compile-all" />
        <!-- compile all examples -->
        <call target="compile-examples" />
        <!-- compile all extensions -->
        <call target="compile-extensions" />
        <!-- generate the sdk docs using the release build configuration for all runtime configuration -->
        <call target="set-release-build-configuration" />
        <call target="generate-sdkdoc-all" />
        <!-- create the package distribution zipfile -->
        <call target="create-package-zipfile" />
    </target>
    <target name="package-examples" depends="check-current-package-dir, check-log4net-basedir">
        <mkdir dir="${current.package.dir}/examples" />
        <delete dir="${current.package.dir}/examples" />
        <copy todir="${current.package.dir}/examples">
            <fileset basedir="examples">
                <include name="**/*" />
                <exclude name="**/bin/**" />
                <exclude name="**/build/**" />
                <exclude name="**/doc/**" />
                <exclude name="**/obj/**" />
                <exclude name="**/*.csproj.user" />
                <exclude name="**/*.csdproj.user" />
                <exclude name="**/*.vbproj.user" />
                <exclude name="**/*.vbdproj.user" />
                <exclude name="**/*.suo" />
                <exclude name="**/*.sln.old" />
                <!-- file created by mono compiler -->
                <exclude name="**/gc.log" />
            </fileset>
        </copy>
    </target>
    <target name="package-src" depends="check-current-package-dir, check-log4net-basedir">
        <mkdir dir="${current.package.dir}/src" />
        <delete dir="${current.package.dir}/src" />
        <copy todir="${current.package.dir}/src">
            <fileset basedir="src">
                <include name="**/*" />
                <exclude name="**/obj/**" />
                <exclude name="*.csproj.user" />
                <exclude name="*.suo" />
                <exclude name="log4net.ndoc" />
                <exclude name="log4net*.xml" />
                <exclude name="**/*.sln.old" />
            </fileset>
        </copy>
    </target>
    <target name="package-tests-src" depends="check-current-package-dir, check-log4net-basedir">
        <mkdir dir="${current.package.dir}/tests" />
        <delete dir="${current.package.dir}/tests" />
        <copy todir="${current.package.dir}/tests/src">
            <fileset basedir="tests/src">
                <include name="**/*" />
                <exclude name="**/bin/**" />
                <exclude name="**/obj/**" />
                <exclude name="*.csproj.user" />
                <exclude name="*.suo" />
                <exclude name="log4net.ndoc" />
                <exclude name="log4net*.xml" />
                <exclude name="**/*.sln.old" />
            </fileset>
        </copy>
        <copy todir="${current.package.dir}/tests/lib">
            <fileset basedir="tests/lib">
                <include name="**/*.dll" />
            </fileset>
        </copy>
        <copy todir="${current.package.dir}/tests">
            <fileset basedir="tests">
                <include name="**/nant.*" />
            </fileset>
        </copy>
    </target>
    <target name="package-extensions" depends="check-current-package-dir, check-log4net-basedir">
        <mkdir dir="${current.package.dir}/extensions" />
        <delete dir="${current.package.dir}/extensions" />
        <copy todir="${current.package.dir}/extensions">
            <fileset basedir="extensions">
                <include name="**/*" />
                <exclude name="**/bin/**" />
                <exclude name="**/build/**" />
                <exclude name="**/doc/**" />
                <exclude name="**/obj/**" />
                <exclude name="**/*.csproj.user" />
                <exclude name="**/*.vbproj.user" />
                <exclude name="**/*.suo" />
                <exclude name="**/*.sln.old" />
            </fileset>
        </copy>
    </target>
    <target name="package-doc" depends="check-current-package-dir, check-log4net-basedir">
        <mkdir dir="${current.package.dir}/doc" />
        <copy todir="${current.package.dir}/doc" includeemptydirs="false">
            <fileset basedir="doc">
                <include name="**/*" />
                <exclude name="**/ndoc.log" />
            </fileset>
        </copy>
        <mkdir dir="${current.package.dir}/xdocs" />
        <copy todir="${current.package.dir}/xdocs" includeemptydirs="false">
            <fileset basedir="xdocs">
                <include name="**/*.xml" />
                <include name="**/*.vsl" />
            </fileset>
        </copy>
    </target>
    <target name="package-release-files" depends="check-current-package-dir, check-log4net-basedir">
        <copy todir="${current.package.dir}">
            <fileset basedir=".">
                <!-- <include name="index.html" /> -->
                <include name="build.cmd" />
                <include name="ChangeLog.txt" />
                <include name="log4net.build" />
                <include name="log4net.include" />
                <!-- <include name="releasenotes.html" /> -->
                <include name="LICENSE.txt" />
                <include name="NOTICE.txt" />
                <include name="README.txt" />
                <include name="log4net.snk" />
                <include name="log4net.snk.readme" />
            </fileset>
        </copy>
    </target>
    <target name="create-package-zipfile" depends="check-current-package-dir, check-current-package-zipfile, check-log4net-basedir">
        <!-- delete the specified zipfile if it already exists -->
        <delete>
            <fileset basedir=".">
                <include name="${current.package.zipfile}" />
            </fileset>
        </delete>
        <zip zipfile="${current.package.zipfile}" ziplevel="9">
            <fileset basedir="${current.package.dir}" prefix="${current.package.name}">
                <include name="**/*" />
                <!-- do not include the log4net keyfiles -->
                <exclude name="**/*.snk" />
                <!-- do not include the built examples -->
                <exclude name="examples/**/bin/**" />
                <!-- do not include the docs of examples -->
                <exclude name="examples/**/doc/**" />
                <!-- do not include the built extensions -->
                <exclude name="extensions/**/bin/**" />
                <!-- do not include the docs of extensions -->
                <exclude name="extensions/**/doc/**" />
                <!-- file created by mono compiler -->
                <exclude name="**/gc.log" />
                <!-- do not include the nunit binaries -->
                <exclude name="tests/**/nunit*.dll" />
                <!-- do not include the Visual Studio .NET 2003 project and solution files -->
                <exclude name="**/*vs2003*" />
                <!-- do not include old swp files (there shouldn't be any!) -->
                <exclude name="**/*.swp" />
            </fileset>
        </zip>
    </target>
    <target name="update-version-info">
        <nant buildfile="${log4net.basedir}/examples/nant.build" target="update-version-info" inheritall="false" />
    </target>
    <target name="compile-examples" description="Build all examples">
        <nant buildfile="${log4net.basedir}/examples/nant.build" target="compile" inheritall="false" />
    </target>
    <target name="compile-extensions" description="Build all extensions">
        <nant buildfile="${log4net.basedir}/extensions/nant.build" target="compile" inheritall="false" />
    </target>
</project>
