| <?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-helpers" xmlnds="http://tempuri.org/nant-vs.xsd"> |
| <property name="build.dir" value="${log4net.basedir}/build"/> |
| <property name="generated.src.dir" value="${build.dir}/generated-src"/> |
| |
| <!-- The path to the log4net output directory for current build/runtime --> |
| <property |
| name="log4net.output.dir" |
| value="${log4net.basedir}/bin/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" |
| dynamic="true" /> |
| |
| <!-- ======================================================== |
| Targets that check various proprties and create directories |
| |
| All these targets are invoked as dependencies of the |
| set-*-runtime-configuration targets |
| ========================================================= --> |
| <target name="-check-bin-dir"> |
| <if test="${not property::exists('bin.dir')}"> |
| <property name="bin.dir" value="bin" /> |
| </if> |
| <mkdir dir="${bin.dir}" /> |
| </target> |
| <target name="-check-build-debug"> |
| <if test="${not property::exists('build.debug')}"> |
| <fail message="The build debug setting has not been specified." /> |
| </if> |
| </target> |
| <target name="-check-build-defines"> |
| <if test="${not property::exists('build.defines.csc')}"> |
| <fail message="The build defines for the csc task have not been specified." /> |
| </if> |
| <if test="${not property::exists('build.defines.jsc')}"> |
| <fail message="The build defines for the jsc task have not been specified." /> |
| </if> |
| <if test="${not property::exists('build.defines.vbc')}"> |
| <fail message="The build defines for the vbc task have not been specified." /> |
| </if> |
| <if test="${not property::exists('build.defines.vjc')}"> |
| <fail message="The build defines for the vjc task have not been specified." /> |
| </if> |
| <if test="${not property::exists('build.defines.cl')}"> |
| <fail message="The build defines for the cl task have not been specified." /> |
| </if> |
| </target> |
| <target name="-check-doc-dir"> |
| <if test="${not property::exists('doc.dir')}"> |
| <property name="doc.dir" value="doc" /> |
| </if> |
| <mkdir dir="${doc.dir}" /> |
| </target> |
| <target name="-check-sdkdoc-dir" depends="-check-doc-dir"> |
| <if test="${not property::exists('sdkdoc.dir')}"> |
| <property name="sdkdoc.dir" value="${doc.dir}/sdk" /> |
| </if> |
| <!-- |
| Temporarily disabled SDK generation through NAnt build |
| <mkdir dir="${sdkdoc.dir}" /> |
| --> |
| </target> |
| <target name="-check-sdkdoc-debug"> |
| <if test="${not property::exists('sdkdoc.debug')}"> |
| <fail message="The sdk documentation debug setting has not been specified." /> |
| </if> |
| </target> |
| <target name="-check-current-bin-dir"> |
| <if test="${not property::exists('current.bin.dir')}"> |
| <fail message="The current binaries directory has not been specified." /> |
| </if> |
| <mkdir dir="${current.bin.dir}" /> |
| </target> |
| <target name="-check-current-build-debug"> |
| <if test="${not property::exists('current.build.debug')}"> |
| <fail message="The current build debug setting has not been specified." /> |
| </if> |
| </target> |
| <target name="-check-current-build-defines"> |
| <if test="${not property::exists('current.build.defines.csc')}"> |
| <fail message="The current build defines for the csc task have not been specified." /> |
| </if> |
| <if test="${not property::exists('current.build.defines.jsc')}"> |
| <fail message="The current build defines for the jsc task have not been specified." /> |
| </if> |
| <if test="${not property::exists('current.build.defines.vbc')}"> |
| <fail message="The current build defines for the vbc task have not been specified." /> |
| </if> |
| <if test="${not property::exists('current.build.defines.vjc')}"> |
| <fail message="The current build defines for the vjc task have not been specified." /> |
| </if> |
| <if test="${not property::exists('current.build.defines.cl')}"> |
| <fail message="The current build defines for the cl task have not been specified." /> |
| </if> |
| </target> |
| <target name="check-current-sdkdoc-dir"> |
| <if test="${not property::exists('current.sdkdoc.dir')}"> |
| <fail message="The current sdk document directory has not been specified." /> |
| </if> |
| <!-- |
| Temporarily disabled SDK generation through NAnt build |
| <mkdir dir="${sdkdoc.dir}" /> |
| --> |
| </target> |
| <target name="check-current-sdkdoc-debug"> |
| <if test="${not property::exists('current.sdkdoc.debug')}"> |
| <fail message="The current sdk documentation debug setting has not been specified." /> |
| </if> |
| </target> |
| <target name="check-current-build-config"> |
| <if test="${not property::exists('current.build.config')}"> |
| <if test="${not property::exists('project.build.config')}"> |
| <fail message="The build configuration has not been specified and no default build configuration is available." /> |
| </if> |
| <if test="${property::exists('project.build.config')}"> |
| <property name="current.build.config" value="${project.build.config}" /> |
| </if> |
| </if> |
| </target> |
| <target name="check-log4net-basedir"> |
| <if test="${not property::exists('log4net.basedir')}"> |
| <fail message="The log4net base directory has not been specified." /> |
| </if> |
| </target> |
| <target name="-check-log4net-output-dir"> |
| <if test="${not property::exists('log4net.output.dir')}"> |
| <fail message="The log4net output directory has not been specified." /> |
| </if> |
| </target> |
| <target name="check-log4net-assembly" depends="check-current-build-config, -check-log4net-output-dir"> |
| <if test="${not file::exists(path::combine(log4net.output.dir, 'log4net.dll'))}"> |
| <fail message="The log4net '${current.build.config}' assembly for ${framework::get-description(framework::get-target-framework())} is not available." /> |
| </if> |
| </target> |
| |
| <!-- ======================================================== |
| Targets for cleaning up |
| ======================================================== --> |
| <target name="clean-current-bin-dir" depends="-check-current-bin-dir" description="Cleans the current binaries directory"> |
| <echo message="Cleaning the ${current.bin.dir} binaries directory." /> |
| <delete dir="${current.bin.dir}/../oldkey" if="${directory::exists(current.bin.dir) and current.build.config.release}" /> |
| <delete dir="${current.bin.dir}" if="${directory::exists(current.bin.dir)}" /> |
| <mkdir dir="${current.bin.dir}" /> |
| </target> |
| <target name="clean-current-sdkdoc-dir" depends="check-current-sdkdoc-dir" description="cleaning the current SDK documentation directory"> |
| <echo message="Cleaning the ${current.sdkdoc.dir} SDK documentation directory." /> |
| <!-- |
| Temporarily disabled SDK generation through NAnt build |
| <delete dir="${current.sdkdoc.dir}" if="${directory::exists(current.sdkdoc.dir)}" /> |
| <mkdir dir="${current.sdkdoc.dir}" /> |
| --> |
| </target> |
| |
| |
| <!-- ======================================================== |
| Targets for setting up the environment |
| ======================================================== --> |
| <target name="set-build-configuration" depends="check-current-build-config"> |
| <if test="${not target::exists('set-' + current.build.config + '-build-configuration')}"> |
| <fail message="The ${current.build.config} build configuration is not supported by log4net." /> |
| </if> |
| <call target="set-${current.build.config}-build-configuration" /> |
| </target> |
| <target name="set-debug-build-configuration"> |
| <property name="build.debug" value="true" /> |
| <property name="build.defines.csc" value="DEBUG,TRACE" /> |
| <!-- FIXME: generate them from build.defines.csc --> |
| <property name="build.defines.vbc" value="DEBUG=True,TRACE=True" /> |
| <property name="build.defines.cl" value="/D _DEBUG" /> |
| <property name="current.build.config" value="debug" /> |
| <call target="-set-build-configuration-flags" /> |
| </target> |
| <target name="set-release-build-configuration"> |
| <property name="build.debug" value="false" /> |
| <property name="build.defines.csc" value="TRACE,STRONG" /> |
| <!-- FIXME: generate them from build.defines.csc --> |
| <property name="build.defines.vbc" value="TRACE=True,STRONG=True" /> |
| <property name="build.defines.cl" value="/D STRONG" /> |
| <property name="sdkdoc.debug" value="false" /> |
| <property name="current.build.config" value="release" /> |
| <call target="-set-build-configuration-flags" /> |
| </target> |
| <target name="-set-build-configuration-flags" depends="check-current-build-config"> |
| <property name="build.defines.jsc" value="${build.defines.csc}" /> |
| <property name="build.defines.vjc" value="${build.defines.csc}" /> |
| <property name="sdkdoc.debug" value="false" /> |
| <property name="current.build.config.debug" value="false" /> |
| <property name="current.build.config.release" value="false" /> |
| <property name="current.build.config.${current.build.config}" value="true" /> |
| </target> |
| <target name="set-framework-configuration" depends="check-current-build-config"> |
| <if test="${not target::exists('set-' + framework::get-target-framework() + '-runtime-configuration')}"> |
| <fail message="The current target framework (${framework::get-description(framework::get-target-framework())}) is not supported by log4net." /> |
| </if> |
| <call target="set-${framework::get-target-framework()}-runtime-configuration" /> |
| </target> |
| <target name="set-net-2.0-runtime-configuration"> |
| <property name="nant.settings.currentframework" value="net-2.0" /> |
| <property name="current.build.platform" value="DOTNET"/> |
| <property name="current.build.api" value=""/> |
| <property name="current.build.api.true" value=""/> |
| <property name="current.build.api.slash_d" value=""/> |
| <property name="current.build.has.systemcore" value="false"/> |
| <property name="current.build.has.systemweb" value="true"/> |
| <property name="current.build.has.systemconfiguration" value="true"/> |
| <call target="-set-framework-configuration"/> |
| </target> |
| <!-- uses NET_2_0 defines plus FRAMEWORK_3_5--> |
| <target name="set-net-3.5-runtime-configuration"> |
| <property name="nant.settings.currentframework" value="net-3.5" /> |
| <property name="current.build.platform" value="DOTNET"/> |
| <property name="current.build.api" value=",FRAMEWORK_3_5_OR_ABOVE"/> |
| <property name="current.build.api.true" value=",FRAMEWORK_3_5_OR_ABOVE=True"/> |
| <property name="current.build.api.slash_d" value=" /D FRAMEWORK_3_5_OR_ABOVE"/> |
| <property name="current.build.has.systemcore" value="true"/> |
| <property name="current.build.has.systemweb" value="true"/> |
| <property name="current.build.has.systemconfiguration" value="true"/> |
| <call target="-set-framework-configuration"/> |
| </target> |
| <!-- uses NET_2_0 defines plus FRAMEWORK_3_5 and CLIENT_PROFILE--> |
| <target name="set-net-3.5-cp-runtime-configuration"> |
| <property name="nant.settings.currentframework" value="net-3.5" /> |
| <property name="current.build.platform" value="DOTNET"/> |
| <property name="current.build.api" value=",FRAMEWORK_3_5_OR_ABOVE,CLIENT_PROFILE"/> |
| <property name="current.build.api.true" value=",FRAMEWORK_3_5_OR_ABOVE=True,CLIENT_PROFILE=True"/> |
| <property name="current.build.api.slash_d" value=" /D FRAMEWORK_3_5_OR_ABOVE /D CLIENT_PROFILE"/> |
| <property name="current.build.has.systemcore" value="true"/> |
| <property name="current.build.has.systemweb" value="false"/> |
| <property name="current.build.has.systemconfiguration" value="true"/> |
| <call target="-set-framework-configuration"/> |
| </target> |
| <!-- uses NET_3_5 plus FRAMEWORK_4_0_OR_ABOVE defines --> |
| <target name="set-net-4.0-runtime-configuration"> |
| <property name="nant.settings.currentframework" value="net-4.0" /> |
| <property name="current.build.platform" value="DOTNET"/> |
| <property name="current.build.api" value=",FRAMEWORK_3_5_OR_ABOVE,FRAMEWORK_4_0_OR_ABOVE"/> |
| <property name="current.build.api.true" value=",FRAMEWORK_3_5_OR_ABOVE=True,FRAMEWORK_4_0_OR_ABOVE=True"/> |
| <property name="current.build.api.slash_d" value=" /D FRAMEWORK_3_5_OR_ABOVE /D FRAMEWORK_4_0_OR_ABOVE"/> |
| <property name="current.build.has.systemcore" value="true"/> |
| <property name="current.build.has.systemweb" value="true"/> |
| <property name="current.build.has.systemconfiguration" value="true"/> |
| <call target="-set-framework-configuration"/> |
| </target> |
| <!-- uses NET_3_5 plus FRAMEWORK_4_0_OR_ABOVE and CLIENT_PROFILE defines --> |
| <target name="set-net-4.0-cp-runtime-configuration"> |
| <property name="nant.settings.currentframework" value="net-4.0" /> |
| <property name="current.build.platform" value="DOTNET"/> |
| <property name="current.build.api" value=",FRAMEWORK_3_5_OR_ABOVE,FRAMEWORK_4_0_OR_ABOVE,CLIENT_PROFILE"/> |
| <property name="current.build.api.true" value=",FRAMEWORK_3_5_OR_ABOVE=True,FRAMEWORK_4_0_OR_ABOVE=True,CLIENT_PROFILE=True"/> |
| <property name="current.build.api.slash_d" value=" /D FRAMEWORK_3_5_OR_ABOVE /D FRAMEWORK_4_0_OR_ABOVE /D CLIENT_PROFILE"/> |
| <property name="current.build.has.systemcore" value="true"/> |
| <property name="current.build.has.systemweb" value="false"/> |
| <property name="current.build.has.systemconfiguration" value="true"/> |
| <call target="-set-framework-configuration"/> |
| </target> |
| <target name="set-netcf-2.0-runtime-configuration"> |
| <property name="nant.settings.currentframework" value="netcf-2.0" /> |
| <property name="current.build.platform" value="NETCF"/> |
| <property name="current.build.api" value=""/> |
| <property name="current.build.api.true" value=""/> |
| <property name="current.build.api.slash_d" value=""/> |
| <property name="current.build.has.systemcore" value="false"/> |
| <property name="current.build.has.systemweb" value="false"/> |
| <property name="current.build.has.systemconfiguration" value="false"/> |
| <call target="-set-framework-configuration"/> |
| </target> |
| <target name="set-mono-2.0-runtime-configuration"> |
| <property name="nant.settings.currentframework" value="mono-2.0" /> |
| <property name="current.build.platform" value="MONO"/> |
| <property name="current.build.api" value=""/> |
| <property name="current.build.api.true" value=""/> |
| <property name="current.build.api.slash_d" value=""/> |
| <property name="current.build.has.systemcore" value="false"/> |
| <property name="current.build.has.systemweb" value="true"/> |
| <property name="current.build.has.systemconfiguration" value="true"/> |
| <call target="-set-framework-configuration"/> |
| </target> |
| <target name="-set-framework-configuration" depends="-check-bin-dir, -check-sdkdoc-dir, -check-sdkdoc-debug, check-current-build-config, -check-build-debug, -check-build-defines"> |
| <property name="current.build.debug" value="${build.debug}" dynamic="true" /> |
| <property name="current.bin.dir" value="${bin.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" /> |
| <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" /> |
| <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" /> |
| <property name="current.build.defines.csc" value="${build.defines.csc},${current.build.platform}${current.build.api}" dynamic="true" /> |
| <property name="current.build.defines.jsc" value="${build.defines.jsc},${current.build.platform}${current.build.api}" dynamic="true" /> |
| <property name="current.build.defines.vjc" value="${build.defines.vjc},${current.build.platform}${current.build.api}" dynamic="true" /> |
| <!-- FIXME: generate them from current.build.api --> |
| <property name="current.build.defines.vbc" value="${build.defines.vbc},${current.build.platform}=True${current.build.api.true}" dynamic="true" /> |
| <property name="current.build.defines.cl" value="${build.defines.cl} /D ${current.build.platform}${current.build.api.slash_d}" dynamic="true" /> |
| </target> |
| </project> |