| <?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="TopicListener/default.build" /> |
| <include name="TopicPublisher/default.build" /> |
| <include name="TestClient/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> |
| |
| |