diff options
Diffstat (limited to 'qpid/dotnet/default.build')
-rw-r--r-- | qpid/dotnet/default.build | 255 |
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> + + |