summaryrefslogtreecommitdiff
path: root/qpid/dotnet/default.build
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/dotnet/default.build')
-rw-r--r--qpid/dotnet/default.build255
1 files changed, 255 insertions, 0 deletions
diff --git a/qpid/dotnet/default.build b/qpid/dotnet/default.build
new file mode 100644
index 0000000000..b038307623
--- /dev/null
+++ b/qpid/dotnet/default.build
@@ -0,0 +1,255 @@
+<?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="Qpid.NET" default="build">
+
+ <!-- Determines the formatter to use to format output of test results. -->
+ <property name="nant.formatter" value="Plain" />
+
+ <!-- Determines whether a 'debug' or 'release' build is to be done. Defaults to 'debug' -->
+ <property name="build.config" value="debug" />
+
+ <!-- Sets build properties consistently accross all assemblies in the project. -->
+ <property name="build.version.major" value="0"/>
+ <property name="build.version.minor" value="5"/>
+ <property name="build.version.build" value="0"/>
+ <property name="build.version.revision" value="0"/>
+ <property name="build.company" value="Apache Software Foundation"/>
+ <property name="build.copyright" value="Apache Software Foundation"/>
+ <property name="build.description" value="Built from svn revision number: "/>
+
+ <!-- Fileset with build files for each 'core' assembly. -->
+ <fileset id="src.builds">
+ <include name="Qpid.Buffer/default.build" />
+ <include name="Qpid.Sasl/default.build" />
+ <include name="Qpid.Messaging/default.build" />
+ <include name="Qpid.Codec/default.build" />
+ <include name="Qpid.Common/default.build" />
+ <include name="Qpid.Client/default.build" />
+ </fileset>
+
+ <!-- Fileset with build files for 'pure unit' test assemblies. -->
+ <fileset id="tests.pure.builds">
+ <include name="Qpid.Buffer.Tests/default.build" />
+ <include name="Qpid.Sasl.Tests/default.build" />
+ <include name="Qpid.Common.Tests/default.build" />
+ <include name="Qpid.Client.Tests/default.build" />
+ </fileset>
+
+ <!-- Fileset with build files for 'integration' test assemblies. -->
+ <fileset id="tests.integration.builds">
+ <include name="Qpid.Integration.Tests/default.build" />
+ </fileset>
+
+ <!-- Other test or utility assemblies. -->
+ <fileset id='other.builds'>
+ <include name="TestClient/default.build" />
+ <!-- Examples -->
+ <include name="TopicListener/default.build" />
+ <include name="TopicPublisher/default.build" />
+ <include name="Consumer/default.build" />
+ <include name="Producer/default.build" />
+ </fileset>
+
+ <!-- Prepare environment for a debug build. -->
+ <target name="debug">
+ <property name="build.debug" value="true" />
+ <property name="build.defines" value="DEBUG;TRACE"/>
+ </target>
+
+ <!-- Prepare environment for a release build. -->
+ <target name="release">
+ <property name="build.debug" value="false" />
+ <property name="build.defines" value=""/>
+ </target>
+
+ <!-- Prepare environment for build. -->
+ <target name="init">
+ <property name="base.dir" value="${project::get-base-directory()}" />
+ <property name="build.dir" value="${base.dir}/bin/${framework::get-target-framework()}/${build.config}" />
+ <call target="${build.config}" />
+ </target>
+
+ <!-- Cleans up the build output directory. -->
+ <target name="clean" depends="init">
+ <delete dir="${build.dir}" failonerror="false" />
+ </target>
+
+ <!-- Runs 'svnversion' to get the repository revision into the build property 'build.svnversion'. -->
+ <target name="svnversion" description="Runs svnversion to get the current repository version into a build script property.">
+ <exec program="svnversion" output="svnversion_tmp.txt">
+ <arg value="-n"/>
+ </exec>
+
+ <loadfile file="svnversion_tmp.txt" property="build.svnversion"/>
+ <delete file="svnversion_tmp.txt"/>
+
+ <!-- For some competely retarted reason the '-n' parameter to svnversion doesn't really work under windows...
+ Here is some code to strip the unwanted newlines. -->
+ <script language="C#">
+ <code><![CDATA[
+ public static void ScriptMain(Project project)
+ {
+ project.Properties["build.svnversion"] = project.Properties["build.svnversion"].Trim("\n\r".ToCharArray());
+ }
+ ]]>
+ </code>
+ </script>
+
+ </target>
+
+ <!-- Performs a regex find-and-replace on assembly info files, substituting fields defined as build properties. -->
+ <target name="setversion" description="Stamp the version info onto assemblyinfo.cs files" depends="svnversion">
+
+ <echo>build.svnversion = ${build.svnversion}</echo>
+
+ <foreach item="File" property="filename">
+ <in>
+ <items basedir=".">
+ <include name="**\AssemblyInfo.cs"></include>
+ </items>
+ </in>
+ <do>
+ <script language="C#">
+ <code><![CDATA[
+ public static void ScriptMain(Project project)
+ {
+ // Read in the entire file to perform the substitution in.
+ StreamReader reader = new StreamReader(project.Properties["filename"]);
+ string contents = reader.ReadToEnd();
+ reader.Close();
+
+ // Substitute the version numbers.
+ string replacement = string.Format("[assembly: AssemblyVersion(\"{0}.{1}.{2}.{3}\")]",
+ project.Properties["build.version.major"],
+ project.Properties["build.version.minor"],
+ project.Properties["build.version.build"],
+ project.Properties["build.version.revision"]);
+ contents = System.Text.RegularExpressions.Regex.Replace(contents, @"\[assembly: AssemblyVersion\("".*""\)\]", replacement);
+
+ // Substitute the company name and copyright.
+ replacement = string.Format("[assembly: AssemblyCompany(\"{0}\")]",
+ project.Properties["build.company"]);
+ contents = System.Text.RegularExpressions.Regex.Replace(contents, @"\[assembly: AssemblyCompany\("".*""\)\]", replacement);
+
+ replacement = string.Format("[assembly: AssemblyCopyright(\"{0}\")]",
+ project.Properties["build.copyright"]);
+ contents = System.Text.RegularExpressions.Regex.Replace(contents, @"\[assembly: AssemblyCopyright\("".*""\)\]", replacement);
+
+ // Update the description.
+ //replacement = string.Format("[assembly: AssemblyDescription(\"{0} {1}\")]",
+ // project.Properties["build.description"],
+ // project.Properties["build.svnversion"]);
+ replacement = string.Format("[assembly: AssemblyDescription(\"{0}\")]",
+ project.Properties["build.description"]);
+ contents = System.Text.RegularExpressions.Regex.Replace(contents, @"\[assembly: AssemblyDescription\("".*""\)\]", replacement);
+
+ // Write out the file with the substituted version.
+ StreamWriter writer = new StreamWriter(project.Properties["filename"], false);
+ writer.Write(contents);
+ writer.Close();
+ }
+ ]]>
+ </code>
+ </script>
+ </do>
+ </foreach>
+ </target>
+
+ <!-- Do the build. -->
+ <target name="build" depends="init, setversion">
+ <echo message="Building all modules including tests."/>
+
+ <!-- Make sure output folder exists. -->
+ <mkdir dir="${build.dir}" />
+
+ <!-- copy reference assemblies over to the output dir -->
+ <copy todir="${build.dir}" file="Qpid.Common/lib/seclib-1.0.0/Org.Mentalis.Security.dll"/>
+ <copy todir="${build.dir}" file="Qpid.Common/lib/log4net/log4net.dll"/>
+ <copy todir="${build.dir}" file="Qpid.Client.Tests/lib/nunit/nunit.framework.dll"/>
+
+ <!-- Compile assemblies. -->
+ <nant target="build">
+ <buildfiles refid="src.builds" />
+ </nant>
+
+ <!-- Compile test assemblies. -->
+ <nant target="build">
+ <buildfiles refid="tests.pure.builds" />
+ </nant>
+ <nant target="build">
+ <buildfiles refid="tests.integration.builds" />
+ </nant>
+
+ <!-- Compile test assemblies. -->
+ <nant target="build">
+ <buildfiles refid="other.builds" />
+ </nant>
+ </target>
+
+ <!-- Runs all 'pure unit' tests. -->
+ <target name="test" depends="build">
+ <echo message="Running all pure unit tests."/>
+ <nant target="test">
+ <buildfiles refid="tests.pure.builds" />
+ </nant>
+ </target>
+
+ <!-- Runs all 'integration' tests. -->
+ <target name="integrationtest" depends="build">
+ <echo message="Running all integration tests."/>
+ <nant target="test">
+ <buildfiles refid="tests.integration.builds" />
+ </nant>
+ </target>
+
+ <!-- Creates a release package. -->
+ <target name="release-pkg">
+ <echo message="Building and packaging a release."/>
+
+ <call target="clean"/>
+ <call target="build"/>
+
+ <property name="build.date" value="${datetime::now()}"/>
+ <property name="build.timestamp" value="${framework::get-target-framework()}-${datetime::get-year(build.date)}${datetime::get-month(build.date)}${datetime::get-day(build.date)}"/>
+
+ <zip zipfile="${build.dir}/Qpid.NET-${build.timestamp}.zip">
+ <fileset basedir="${build.dir}" prefix="Qpid.NET-${build.timestamp}">
+ <include name="**/*.*"/>
+ <exclude name="**/*.Tests.*"/>
+ <exclude name="**/nunit.framework.dll"/>
+ <exclude name="**/*.exe"/>
+ </fileset>
+
+ <fileset basedir="${base.dir}" prefix="Qpid.NET-${build.timestamp}">
+ <include name="LICENSE.txt"/>
+ <include name="NOTICE.txt"/>
+ <include name="README.txt"/>
+ <include name="RELEASE_NOTES.txt"/>
+ <include name="DISCLAIMER"/>
+ </fileset>
+ </zip>
+ </target>
+
+</project>
+
+