activemq/activemq-dotnet/nant.build

301 lines
14 KiB
Plaintext
Raw Normal View History

<?xml version="1.0" ?>
<project name="openwire" default="build">
<!-- set build.date property to current date in format yyyy-MM-dd -->
<tstamp property="build.date" pattern="yyyy-MM-dd" />
<!-- global project settings -->
<property name="project.name" value="activemq-dotnet" />
<property name="project.version" value="4.0" unless="${property::exists('project.version')}" />
<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 == 'release', '', '-' + project.release.type)}" dynamic="true" />
<!--
specifies whether the CommonAssemblyInfo.cs file should be created.
we do not want this for releases (whether they're beta or release) as
this would cause the build number to be updated
-->
<property name="create.assemblyinfo" value="true" />
<!-- global build settings -->
<property name="lib.dir" value="${path::combine(build.dir, 'bin/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" />
<!-- default configuration -->
<property name="project.config" value="debug" /><!-- debug|release -->
<property name="build.defines" value="" />
<property name="build.number"
value="${math::abs(math::floor(timespan::get-total-days(datetime::now() - datetime::parse('01/01/2000'))))}" />
<!-- platform specific properties. These are the defaults -->
<property name="current.build.defines" value="${build.defines}" />
<!-- Named project configurations (used by self-test and self-doc tasks) -->
<target name="debug" description="Perform a 'debug' build">
<property name="project.config" value="debug" />
<property name="build.debug" value="true" />
<property name="build.dir"
value="${project::get-base-directory()}/build/${framework::get-target-framework()}.${platform::get-name()}/${project.name}-${project.version}-${project.config}" />
<property name="site.dir" value="../../activemq-site/nms/ndoc" />
</target>
<target name="release" description="Perform a 'release' build">
<property name="project.config" value="release" />
<property name="build.debug" value="false" />
<property name="build.dir" value="${project::get-base-directory()}/build/${project.name}-${project.version.full}" />
</target>
<!-- Framework support targets -->
<target name="set-framework-configuration">
<if test="${not(target::exists('set-'+framework::get-target-framework()+'-framework-configuration'))}">
<fail message="The '${framework::get-target-framework()}' framework is not supported by this version of ActiveMQ .NET" />
</if>
<call target="set-${framework::get-target-framework()}-framework-configuration" />
</target>
<target name="set-net-1.0-framework-configuration">
<property name="nant.settings.currentframework" value="net-1.0" />
<property name="current.build.defines" value="${build.defines}NET,NET_1_0" dynamic="true" />
<property name="link.sdkdoc.version" value="SDK_v1_0" />
<property name="link.sdkdoc.web" value="true" />
</target>
<target name="set-net-1.1-framework-configuration">
<property name="nant.settings.currentframework" value="net-1.1" />
<property name="current.build.defines" value="${build.defines}NET,NET_1_1" dynamic="true" />
<property name="link.sdkdoc.version" value="SDK_v1_1" />
<property name="link.sdkdoc.web" value="true" />
</target>
<target name="set-net-2.0-framework-configuration">
<property name="nant.settings.currentframework" value="net-2.0" />
<property name="current.build.defines" value="${build.defines}NET,NET_2_0" dynamic="true" />
<property name="link.sdkdoc.version" value="SDK_v1_1" />
<property name="link.sdkdoc.web" value="true" />
</target>
<target name="set-netcf-1.0-framework-configuration">
<property name="nant.settings.currentframework" value="netcf-1.0" />
<property name="current.build.defines" value="${build.defines}NETCF,NETCF_1_0" dynamic="true" />
<property name="link.sdkdoc.version" value="SDK_v1_1" />
<property name="link.sdkdoc.web" value="true" />
</target>
<target name="set-mono-1.0-framework-configuration">
<property name="nant.settings.currentframework" value="mono-1.0" />
<property name="current.build.defines" value="${build.defines}MONO,MONO_1_0" dynamic="true" />
<property name="link.sdkdoc.version" value="SDK_v1_1" />
<property name="link.sdkdoc.web" value="true" />
</target>
<target name="set-mono-2.0-framework-configuration">
<property name="nant.settings.currentframework" value="mono-2.0" />
<property name="current.build.defines" value="${build.defines}MONO,MONO_2_0" dynamic="true" />
<property name="link.sdkdoc.version" value="SDK_v1_1" />
<property name="link.sdkdoc.web" value="true" />
</target>
<target name="set-sscli-1.0-framework-configuration">
<property name="nant.settings.currentframework" value="sscli-1.0" />
<property name="current.build.defines" value="${build.defines}SSCLI,SSCLI_1_0" dynamic="true" />
<property name="link.sdkdoc.version" value="SDK_v1_0" />
<property name="link.sdkdoc.web" value="true" />
</target>
<!-- build tasks -->
<target name="init" description="Initializes build properties">
<call target="${project.config}" />
<call target="set-framework-configuration" />
</target>
<!-- cleans the build -->
<target name="clean" depends="init" description="Deletes build">
<delete dir="build" if="${directory::exists('build')}" />
</target>
<target name="create-common-assemblyinfo" if="${create.assemblyinfo}" depends="init"
description="Generate CommonAssemblyInfo.cs">
<!-- ensure src/main/csharp/CommonAssemblyInfo.cs is writable if it already exists -->
<attrib file="src/main/csharp/CommonAssemblyInfo.cs" readonly="false"
if="${file::exists('src/main/csharp/CommonAssemblyInfo.cs')}" />
<!-- generate the source file holding the common assembly-level attributes -->
<asminfo output="src/main/csharp/CommonAssemblyInfo.cs" 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="true" />
<attribute type="AssemblyTitleAttribute" value="ActiveMQ .NET" />
<attribute type="AssemblyDescriptionAttribute" value="A .NET Library for talking to ActiveMQ" />
<attribute type="AssemblyConfigurationAttribute" value="${project.release.type}" />
<attribute type="AssemblyCompanyAttribute" value="http://activemq.org/" />
<attribute type="AssemblyProductAttribute" value="ActiveMQ" />
<attribute type="AssemblyCopyrightAttribute"
value="Copyright (C) 2005-${datetime::get-year(datetime::now())} Apache Software Foundation" />
<attribute type="AssemblyTrademarkAttribute" value="" />
<attribute type="AssemblyCultureAttribute" value="" />
<attribute type="AssemblyVersionAttribute" value="${project.version}.${build.number}.0" />
<attribute type="AssemblyInformationalVersionAttribute" value="${project.version}" />
</attributes>
</asminfo>
<!-- ensure src/test/csharp/CommonAssemblyInfo.cs is writable if it already exists -->
<attrib file="src/test/csharp/CommonAssemblyInfo.cs" readonly="false"
if="${file::exists('src/test/csharp/CommonAssemblyInfo.cs')}" />
<!-- generate the source file holding the common assembly-level attributes -->
<asminfo output="src/test/csharp/CommonAssemblyInfo.cs" 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="false" />
<attribute type="AssemblyTitleAttribute" value="ActiveMQ .NET Test" />
<attribute type="AssemblyDescriptionAttribute" value="A .NET Library for testing the ActiveMQ .NET Library" />
<attribute type="AssemblyConfigurationAttribute" value="${project.release.type}" />
<attribute type="AssemblyCompanyAttribute" value="http://activemq.org/" />
<attribute type="AssemblyProductAttribute" value="ActiveMQ" />
<attribute type="AssemblyCopyrightAttribute"
value="Copyright (C) 2005-${datetime::get-year(datetime::now())} Apache Software Foundation" />
<attribute type="AssemblyTrademarkAttribute" value="" />
<attribute type="AssemblyCultureAttribute" value="" />
<attribute type="AssemblyVersionAttribute" value="${project.version}.${build.number}.0" />
<attribute type="AssemblyInformationalVersionAttribute" value="${project.version}" />
</attributes>
</asminfo>
</target>
<!-- Compile the main sources -->
<target name="build-main" depends="create-common-assemblyinfo">
<echo message="Build Directory is ${build.dir}" />
<mkdir dir="${build.dir}/bin" />
<csc target="library" define="${current.build.defines}" warnaserror="false" debug="${build.debug}"
output="${build.dir}/bin/${project.name}.dll" doc="${build.dir}/bin/${project.name}.xml">
<nowarn>
<!-- do not report warnings for missing XML comments -->
<warning number="1591" />
<!-- do not report deprecation warnings -->
<warning number="0618" />
</nowarn>
<sources failonempty="true">
<include name="src/main/csharp/**/*.cs" />
<include name="src/main/csharp/CommonAssemblyInfo.cs" />
</sources>
<resources basedir="src/main/resources">
<include name="**/*" />
</resources>
<!--
<references>
<include name="${build.dir}/bin/log4net.dll"/>
<include name="System.Web.dll"/>
</references>
-->
</csc>
</target>
<target name="doc" depends="build-main">
<ndoc failonerror="false">
<assemblies basedir="${build.dir}">
<include name="bin/${project.name}.dll" />
</assemblies>
<summaries basedir="src/main/ndoc">
<include name="NamespaceSummary.xml" />
</summaries>
<documenters>
<documenter name="MSDN">
<property name="OutputDirectory" value="${build.dir}/doc" />
<property name="HtmlHelpName" value="NMS" />
<property name="HtmlHelpCompilerFilename" value="hhc.exe" />
<property name="IncludeFavorites" value="False" />
<property name="Title" value="The NMS Class Library (.Net Messaging Library)" />
<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="False" />
<property name="CopyrightText" value="" />
<property name="CopyrightHref" value="" />
</documenter>
</documenters>
</ndoc>
<echo>Copying documentation to ${site.dir}</echo>
<mkdir dir="${site.dir}" />
<copy todir="${site.dir}">
<fileset basedir="${build.dir}/doc/ndoc_msdn_temp">
<include name="*.*" />
</fileset>
</copy>
</target>
<target name="build-test" depends="create-common-assemblyinfo, build-main">
<csc target="library" define="${current.build.defines}" warnaserror="false" debug="${build.debug}"
output="${build.dir}/bin/${project.name}.test.dll">
<nowarn>
<!-- do not report warnings for missing XML comments -->
<warning number="1591" />
<!-- do not report deprecation warnings -->
<warning number="0618" />
</nowarn>
<sources failonempty="true">
<include name="src/test/csharp/**/*.cs" />
<include name="src/test/csharp/CommonAssemblyInfo.cs" />
</sources>
<resources basedir="src/test/resources">
<include name="**/*" />
</resources>
<references defaultexcludes="true">
<include name="mscorlib.dll" />
<include name="System.dll" />
<include name="nunit.framework.dll" />
<include name="${build.dir}/bin/${project.name}.dll" />
</references>
<!--
<resources failonempty="false" basedir="Resources"
dynamicprefix="true" prefix="XML:">
<include name="**/*.xml" />
</resources>
-->
</csc>
</target>
<target name="build" depends="build-test"></target>
<target name="test" depends="build-test" description="Runs all the NUnit test cases">
<nunit2>
<formatter type="Plain" />
<test assemblyname="${build.dir}/bin/${project.name}.test.dll"></test>
</nunit2>
</target>
<target name="test-case" depends="build-test" description="Run a specific NUnit test case using the 'test' variable">
<nunit2>
<formatter type="Plain" />
<test assemblyname="${build.dir}/bin/${project.name}.test.dll" testname="${test}"></test>
</nunit2>
</target>
</project>