<?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=""..\..\" to=""${sandcastle.dir}\" /> | |
<replacestring from=""..\" to=""${sandcastle.dir}\Examples\" /> | |
<replacestring from="".\comments.xml" to=""${documentation.dir}\${project.name}.xml" /> | |
<replacestring from=""%DXROOT%\Presentation\${sandcastle.style}\content\feedback_content.xml"" to=""${basedir}/src/main/sandcastle/feedback_content.xml"" /> | |
</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:"${sandcastle.productiontransforms.dir}\ApplyVSDocModel.xsl"" if="${sandcastle.style != 'prototype'}" /> | |
<arg value="/xsl:"${sandcastle.productiontransforms.dir}\ApplyPrototypeDocModel.xsl"" if="${sandcastle.style == 'prototype'}" /> | |
<arg value="/xsl:"${sandcastle.productiontransforms.dir}\AddFriendlyFilenames.xsl"" /> <!-- if="${sandcastle.style != 'prototype'}" /> --> | |
<arg value="/xsl:"${sandcastle.productiontransforms.dir}\AddGuidFilenames.xsl"" 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:"${sandcastle.productiontransforms.dir}\ReflectionToManifest.xsl"" /> | |
<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> |