<?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 name="log4net-samples" default="compile" xmlnds="http://tempuri.org/nant-vs.xsd">
    <!-- Include configuration file -->
    <include buildfile="nant.config" />
    <!-- Include log4net helpers -->
    <include buildfile="${log4net.basedir}/log4net.include" />
    <!-- Targets that should always be executed -->
    <call target="set-build-configuration" />
    <call target="set-${project.runtime.config}-${project.runtime.version}-runtime-configuration" />
    <!-- Target for compiling the example -->
    <target name="compile" description="Builds the example" depends="check-current-bin-dir, clean-current-bin-dir, check-current-build-defines, check-current-build-config, check-current-build-debug, check-log4net-assembly">
        <!-- make sure the log4net key file is available to the compiler in a release build -->
        <if test="${current.build.config.release}">
            <!-- check if the log4net key file is available -->
            <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
                <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." />
                <fail message="The release build could not be built." />
            </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>
        <!-- compile the example -->
        <csc noconfig="true" target="library" warnaserror="true" debug="${current.build.debug}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.Ext.MarshalByRef.dll">
            <sources>
                <include name="src/**/*.cs" />
                <include name="${log4net.basedir}/src/AssemblyVersionInfo.cs" />
            </sources>
            <references basedir="${log4net.output.dir}">
                <include name="log4net.dll" />
            </references>
        </csc>
    </target>
</project>
