1 <?xml version="1.0"?>
\r
2 <project name="Castle" xmlns="http://nant.sf.net/release/0.85/nant.xsd">
\r
4 Use this to determine if the key file CastleKey.snk should be used to
\r
5 sign the assemblies. Defaults to true since private key is present
\r
8 <property name="sign" value="true" overwrite="false" />
\r
9 <property name="key.file" value="${path::get-full-path(root.dir)}/CastleKey.snk" />
\r
11 <!-- Controls whether tests are run. Setting this is as input to the build disables *all* tests. -->
\r
12 <property name="common.run-tests" value="true" overwrite="false" />
\r
13 <property name="common.testrunner.enabled" value="${common.run-tests}" overwrite="false" />
\r
14 <property name="common.testrunner.failonerror" value="true" overwrite="false" /> <!-- Whether to keep building when tests are failing -->
\r
16 <!-- Check which nant version we're using - fail if it's not the minium -->
\r
17 <property name="current.nant-version" value="${assemblyname::get-version(assembly::get-name(nant::get-assembly()))}" />
\r
18 <property name="required.nant-version" value="0.85.2478.0" /> <!-- Nant 0.85 release version -->
\r
20 <!-- properties used to connect to database for testing -->
\r
21 <property name="ar.dialect" value="NHibernate.Dialect.MsSql2000Dialect" overwrite="false" />
\r
22 <property name="ar.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" overwrite="false" />
\r
23 <property name="ar.connection.connection_string.1" value="Server=(local);initial catalog=test;Integrated Security=SSPI" overwrite="false" />
\r
24 <property name="ar.connection.connection_string.2" value="Server=(local);initial catalog=test2;Integrated Security=SSPI" overwrite="false" />
\r
27 Path to the folder that contain the external assemblies. For net-2.0 the values will
\r
28 be lib, lib/net, and lib/net/2.0 respectively.
\r
30 <property name="lib.dir" value="SharedLibs" dynamic="true" />
\r
31 <property name="lib.family.dir" value="${path::combine(lib.dir, framework::get-family(framework::get-target-framework()))}" dynamic="true" />
\r
32 <property name="lib.framework.dir" value="${path::combine(lib.family.dir, version::to-string(framework::get-version(framework::get-target-framework())))}" dynamic="true" />
\r
37 <property name="project.version" value="1.1.0.0" overwrite="false" />
\r
38 <property name="project.major" value="${version::get-major(version::parse(project.version))}" dynamic="true" />
\r
39 <property name="project.minor" value="${version::get-minor(version::parse(project.version))}" dynamic="true" />
\r
40 <property name="project.build" value="${version::get-build(version::parse(project.version))}" dynamic="true" />
\r
41 <property name="project.revision" value="${svn.revision}" dynamic="true" />
\r
43 <property name="assembly.major" value="${version::get-major(version::parse(assembly.version))}" dynamic="true" />
\r
44 <property name="assembly.minor" value="${version::get-minor(version::parse(assembly.version))}" dynamic="true" />
\r
45 <property name="assembly.build" value="${version::get-build(version::parse(assembly.version))}" dynamic="true" />
\r
46 <property name="assembly.revision" value="${version::get-revision(version::parse(assembly.version))}" dynamic="true" />
\r
48 <property name="svn.revision" value="0" overwrite="false" />
\r
51 These are used to set the correct attributes in AssemblyInfo.cs.
\r
53 <property name="project.company" value="Castle Project" />
\r
55 <!-- debug|release -->
\r
56 <property name="build.defines" value="TRACE" />
\r
57 <property name="build.defines" value="${build.defines},STRONG" if="${sign}" />
\r
59 <!-- platform specific properties. These are the defaults -->
\r
60 <property name="current.build.defines" value="${build.defines}" />
\r
62 <!-- named project configurations -->
\r
63 <target name="set-debug-project-configuration" description="Perform a 'debug' build">
\r
64 <property name="build.debug" value="true" />
\r
65 <property name="build.optimize" value="false" overwrite="false" />
\r
68 <target name="set-release-project-configuration" description="Perform a 'release' build">
\r
69 <property name="build.debug" value="false" />
\r
70 <property name="build.optimize" value="true" overwrite="false" />
\r
73 <target name="set-project-configuration">
\r
74 <property name="project.config" value="debug" overwrite="false" />
\r
75 <if test="${not(target::exists('set-' + project.config + '-project-configuration'))}">
\r
76 <fail message="Unknown configuration: '${project.config}'" />
\r
78 <property name="build.warnaserrors" value="true" overwrite="false" />
\r
79 <property name="build.warnmissingdocs" value="false" overwrite="false" />
\r
80 <call target="set-${project.config}-project-configuration" />
\r
82 <property name="src.dir" value="${path::get-full-path(project::get-base-directory())}" />
\r
83 <property name="build.base.dir" value="${root.dir}/build" />
\r
84 <property name="build.family.dir" value="${build.base.dir}/${nant.settings.currentframework}" />
\r
85 <property name="build.dir" value="${path::get-full-path(path::combine(build.family.dir,project.config))}" dynamic="true" />
\r
86 <property name="testresults.dir" value="${build.dir}/test-results" />
\r
87 <property name="releasenotes.dir" value="${build.dir}/ReleaseNotes" />
\r
88 <property name="build.rebuild" value="false" overwrite="false" />
\r
91 <target name="set-framework-configuration">
\r
92 <if test="${not(target::exists('set-'+framework::get-target-framework()+'-framework-configuration'))}">
\r
93 <fail message="The '${framework::get-target-framework()}' framework is not supported by this version of Cast;e." />
\r
95 <property name="csc.keyfile" value="" />
\r
96 <property name="csc.args" value="" />
\r
97 <call target="set-${framework::get-target-framework()}-framework-configuration" />
\r
99 <property name="build.msbuild" value="false" overwrite="false" />
\r
101 <!-- Where is MbUnit.Cons.exe ? -->
\r
102 <property name="mbunit-console" value="MbUnit.Cons.exe" overwrite="false" />
\r
104 <!-- Where is nunit-console executable(win/mono) ? -->
\r
105 <property name="nunit-console2" value="nunit-console2" overwrite="false" />
\r
106 <property name="nunit-console" value="nunit-console" overwrite="false" />
\r
108 <property name="testrunner" value="NUnit" />
\r
110 <!-- Where is WiX? -->
\r
111 <property name="wix.dir" value="%ProgramFiles%\wix" overwrite="false" />
\r
114 <target name="set-net-2.0-framework-configuration">
\r
115 <property name="nant.settings.currentframework" value="net-2.0" />
\r
116 <property name="current.build.defines" value="${build.defines},NET,DOTNET2" />
\r
117 <property name="link.sdkdoc.version" value="SDK_v2_0" />
\r
118 <property name="merge.targetplatform" value="v2" />
\r
119 <property name="csc.keyfile" value="/keyfile:${key.file}" />
\r
120 <!-- If DevEnvDir exists, we grab it, otherwise we try if the default location (if it exists) -->
\r
121 <if test="${environment::variable-exists('DevEnvDir')}">
\r
122 <property name="dev.env.dir" value="${environment::get-variable('DevEnvDir')}" />
\r
124 <if test="${not environment::variable-exists('DevEnvDir')}">
\r
125 <property name="default.dev.env.dir" value="%ProgramFiles%\Microsoft Visual Studio 8\Common7\IDE" />
\r
126 <if test="${directory::exists(default.dev.env.dir)}">
\r
127 <property name="dev.env.dir" value="${default.dev.env.dir}" />
\r
130 <property name="build.msbuild" value="false" overwrite="false" />
\r
131 <property name="project.vsproj" value="${project::get-name()}-vs2005.csproj" />
\r
134 <target name="set-mono-1.0-framework-configuration">
\r
135 <property name="nant.settings.currentframework" value="mono-1.0" />
\r
136 <property name="current.build.defines" value="${build.defines},MONO,MONO1" />
\r
137 <property name="link.sdkdoc.version" value="MsdnOnline" />
\r
138 <!-- mono puts gacutil on PATH -->
\r
139 <property name="gacutil.file" value="gacutil" />
\r
140 <property name="build.warnaserrors" value="false" />
\r
143 <target name="set-mono-2.0-framework-configuration">
\r
144 <property name="nant.settings.currentframework" value="mono-2.0" />
\r
145 <property name="current.build.defines" value="${build.defines},MONO,MONO2,DOTNET2" />
\r
146 <property name="link.sdkdoc.version" value="MsdnOnline" />
\r
147 <!-- mono puts gacutil on PATH -->
\r
148 <property name="gacutil.file" value="gacutil" />
\r
149 <property name="build.warnaserrors" value="false" />
\r
152 <target name="display-current-runtime">
\r
153 <echo message="" />
\r
154 <echo message="----------------------------------------------------------" />
\r
155 <echo message=" ${framework::get-description(framework::get-target-framework())}" />
\r
156 <echo message="----------------------------------------------------------" />
\r
157 <echo message="" />
\r
158 <echo message="framework : ${framework::get-target-framework()}" />
\r
159 <echo message="description : ${framework::get-description(framework::get-target-framework())}" />
\r
160 <echo message="sdk directory : ${framework::get-sdk-directory(framework::get-target-framework())}" />
\r
161 <echo message="framework directory : ${framework::get-framework-directory(framework::get-target-framework())}" />
\r
162 <echo message="assembly directory : ${framework::get-assembly-directory(framework::get-target-framework())}" />
\r
163 <echo message="runtime engine : ${framework::get-runtime-engine(framework::get-target-framework())}" />
\r
164 <echo message="" />
\r
167 <target name="common.init"
\r
168 depends="set-framework-configuration set-project-configuration common.check-nant-version"
\r
169 description="Initializes build properties">
\r
171 <fileset id="project.sources" failonempty="true">
\r
172 <include name="${src.dir}/**/*.cs" />
\r
174 <resourcefileset id="project.resources" />
\r
177 <target name="common.find-svninfo">
\r
178 <!-- For adding SVN revision to builds -->
\r
179 <property name="svn.revision" value="0" overwrite="false" />
\r
180 <!-- try to update the revision -->
\r
183 commandline='info "${project::get-base-directory()}" --xml'
\r
184 output="_revision.xml"
\r
185 failonerror="false"/>
\r
187 file="_revision.xml"
\r
188 xpath="/info/entry/commit/@revision"
\r
189 property="svn.revision"
\r
190 failonerror="false"/>
\r
191 <delete file="_revision.xml" failonerror="false" />
\r
192 <echo message="INFO: Using Subversion revision number: ${svn.revision}"/>
\r
195 <target name="common.find-nunit">
\r
196 <if test="${not property::exists('nunit.found')}">
\r
198 program="${mbunit-console}"
\r
199 resultproperty="mbunit.found"
\r
200 failonerror="false" />
\r
202 <property name="mbunit.found" value="${mbunit.found == '0' and string::to-lower(testrunner)=='mbunit'}" readonly="true" />
\r
204 <property name="nunit.found" value="-1" />
\r
206 unless="${mbunit.found}"
\r
207 program="${nunit-console2}"
\r
208 resultproperty="nunit.found"
\r
209 failonerror="false" />
\r
211 <property name="nunit-console" value="${nunit-console2}" if="${nunit.found == '0'}" />
\r
213 <exec unless="${mbunit.found or nunit.found == '0'}"
\r
214 program="${nunit-console}"
\r
215 resultproperty="nunit.found"
\r
216 failonerror="false" />
\r
218 <property name="nunit.found" value="${nunit.found == '0'}" readonly="true" />
\r
220 <echo message="INFO: Using MBUnit for running unit tests" if="${mbunit.found}"/>
\r
221 <echo message="INFO: Using NUnit for running unit tests" if="${nunit.found}"/>
\r
222 <echo message="WARNING: MBUnit or NUnit not found, using less predictable NAnt <nunit2> task" unless="${nunit.found or mbunit.found}"/>
\r
226 <target name="common.check-nant-version">
\r
227 <fail if="${current.nant-version<required.nant-version}" message="Not using minimum required Nant version: ${required.nant-version} (current version: ${current.nant-version}). Please upgrade your copy of nant." />
\r