2 <project name="GitSharp" default="run-tests">
4 <property name="build.config" value="debug" overwrite="false" />
5 <property name="build.platform" value="${nant.settings.currentframework}" />
6 <property name="build.defines" value="TRACE;LINQ;DEBUG" />
8 <property name="build.runs.on.mono" value="${(framework::get-family(framework::get-runtime-framework()) == 'mono')}" />
10 <property name="path.base" value="${project::get-base-directory()}"/>
11 <property name="path.build" value="${path.base}/build"/>
12 <property name="path.lib" value="${path.base}/lib"/>
13 <property name="path.dist" value="${path.base}/dist"/>
14 <property name="path.tools" value="${path.base}/tools"/>
15 <property name="path.tools.nunit" value="${path.tools}/nunit"/>
17 <!-- Revision version detection. If build.vcs.number hasn't been passed through command line argument, version revision is set to 'local-build' -->
18 <property name="build.vcs.number.1" value="" overwrite="false"/>
19 <property name="version.revision" value="local-build" />
21 <if test="${(string::get-length(build.vcs.number.1) != 0)}">
22 <property name="version.revision" value="${build.vcs.number.1}" />
25 <property name="version.major" value="${version::get-major(version::parse(version))}" dynamic="true"/>
26 <property name="version.minor" value="${version::get-minor(version::parse(version))}" dynamic="true"/>
27 <property name="version.build" value="${version::get-build(version::parse(version))}" dynamic="true"/>
28 <property name="build.version" value="${version.major}.${version.minor}.${version.build}.${version.revision}" dynamic="true"/>
30 <target name="rebuild" depends="clean, run-tests"/>
33 <delete dir="${path.build}" if="${directory::exists(path.build)}"/>
34 <delete dir="${path.dist}" if="${directory::exists(path.dist)}"/>
37 <target name="dist" depends="run-tests, package"/>
39 <!-- ********************************************** -->
40 <!-- GitSharp.Core.dll -->
41 <!-- ********************************************** -->
42 <target name="compile-core" depends="init">
43 <property name="assembly.name" value="GitSharp.Core" />
44 <property name="assembly.type" value="library" />
45 <property name="project.directory" value="${assembly.name}" />
47 <property name="assembly.namespace" value="${assembly.name}" />
49 <fileset id="project.references" >
50 <include name="System.dll" />
51 <include name="System.Core.dll" />
52 <include name="System.Xml.dll" />
53 <include name="${path.lib}/ICSharpCode.SharpZipLib.dll" />
54 <include name="${path.lib}/Winterdom.IO.FileMap.dll" />
55 <include name="${path.lib}/Tamir.SharpSSH.dll" />
58 <call target="compile-dll" />
61 <!-- ********************************************** -->
63 <!-- ********************************************** -->
64 <target name="compile-cli" depends="compile-gitsharp">
65 <property name="assembly.name" value="GitSharp.Git" />
66 <property name="assembly.type" value="exe" />
67 <property name="project.directory" value="Git" />
69 <property name="assembly.namespace" value="GitSharp.CLI" />
71 <fileset id="project.references" basedir="${path.build.output}" >
72 <include name="GitSharp.dll" />
73 <include name="GitSharp.Core.dll" />
76 <copy todir="${path.build.output}">
77 <fileset basedir="${path.base}/Git">
78 <include name="Commands.xml" />
82 <call target="compile-dll" />
85 <!-- ********************************************** -->
87 <!-- ********************************************** -->
88 <target name="compile-gitsharp" depends="compile-core">
89 <property name="assembly.name" value="GitSharp" />
90 <property name="assembly.type" value="library" />
91 <property name="project.directory" value="${assembly.name}" />
93 <property name="assembly.namespace" value="${assembly.name}" />
95 <fileset id="project.references" basedir="${path.build.output}" >
96 <include name="System.dll" />
97 <include name="System.Core.dll" />
98 <include name="GitSharp.Core.dll" />
99 <include name="${path.lib}/Tamir.SharpSSH.dll" />
102 <call target="compile-dll" />
105 <!-- ********************************************** -->
106 <!-- GitSharp.Tests.dll -->
107 <!-- ********************************************** -->
108 <target name="compile-tests" depends="compile-cli">
109 <property name="assembly.name" value="GitSharp.Tests" />
110 <property name="assembly.type" value="library" />
111 <property name="project.directory" value="${assembly.name}" />
113 <property name="assembly.namespace" value="${assembly.name}" />
115 <fileset id="project.references" >
116 <include name="${path.build.output}/GitSharp.dll" />
117 <include name="${path.build.output}/GitSharp.Core.dll" />
118 <include name="${path.build.output}/GitSharp.Git.exe" />
119 <include name="${path.tools.nunit}/nunit.framework.dll" />
122 <call target="compile-dll" />
125 <!-- ********************************************** -->
127 <!-- ********************************************** -->
128 <target name="run-tests" depends="compile-tests">
129 <property name="path.testresults" value="${path.build}/${build.platform}-${build.config}/test-results" />
131 <mkdir dir="${path.testresults}" if="${not(directory::exists(path.testresults))}"/>
132 <echo message="path.testresults = ${path.testresults}"/>
134 <copy todir="${path.testresults}">
135 <fileset basedir="${path.base}/GitSharp.Tests/Resources">
136 <include name="${path.build.output}/*.dll" />
137 <include name="${path.build.output}/GitSharp.Git.exe" />
141 <copy todir="${path.testresults}/Resources">
142 <fileset basedir="${path.base}/GitSharp.Tests/Resources">
143 <include name="**" />
147 <property name="nunit.consolerunner" value="${path.tools.nunit}/nunit-console.exe" />
148 <property name="nunit.commandline" value="GitSharp.Tests.dll /xml:GitSharp.Tests.dll-results.xml /noshadow " />
149 <if test="${build.runs.on.mono}">
150 <property name="nunit.consolerunner" value="nunit-console2" />
151 <property name="nunit.commandline" value="GitSharp.Tests.dll -xml:GitSharp.Tests.dll-results.xml -noshadow " />
155 program="${nunit.consolerunner}"
156 workingdir="${path.testresults}"
157 commandline="${nunit.commandline}"
162 <property name="debugger.file.path.before" value="${path.build.output}/GitSharp.Git.pdb" />
163 <property name="debugger.file.path.after" value="${path.build.output}/Git.pdb" />
165 <property name="debugger.file.path.before" value="${path.build.output}/GitSharp.Git.exe.mdb" if="${build.runs.on.mono}" />
166 <property name="debugger.file.path.after" value="${path.build.output}/Git.exe.mdb" if="${build.runs.on.mono}" />
169 <move file="${path.build.output}/GitSharp.Git.exe" tofile="${path.build.output}/Git.exe" />
170 <move file="${debugger.file.path.before}" tofile="${debugger.file.path.after}" />
171 <move file="${path.build.output}/GitSharp.Git.xml" tofile="${path.build.output}/Git.xml" />
175 <loadfile file="version.txt" property="version" />
177 <mkdir dir="${path.build}" if="${not(directory::exists(path.build))}"/>
179 <property name="path.build.output" value="${path.build}/${build.platform}-${build.config}/bin"/>
181 <echo message="build.version = ${build.version}"/>
182 <echo message="path.build.output = ${path.build.output}"/>
184 <mkdir dir="${path.build.output}" if="${not(directory::exists(path.build.output))}"/>
186 <call target="set-${build.config}-project-configuration" />
189 <target name="package">
190 <mkdir dir="${path.dist}" if="${not(directory::exists(path.dist))}"/>
192 <copy todir="${path.build.output}">
194 <include name="${path.base}/*.txt" />
195 <exclude name="${path.base}/version.txt" />
199 <zip zipfile="${path.dist}/GitSharp-${build.version}-${build.config}-${build.platform}.zip" ziplevel="9">
200 <fileset basedir="${path.build.output}">
201 <include name="*.*"/>
206 <target name="set-debug-project-configuration" >
207 <property name="build.optimize" value="false" />
210 <target name="set-release-project-configuration" >
211 <property name="build.optimize" value="true" />
212 <property name="build.defines" value="LINQ;TRACE" />
215 <target name="compile-dll">
216 <call target="copy-references"/>
218 <property name="project.sources.path" value="${path.base}/${project.directory}"/>
220 <call target="create-assembly-info"/>
222 <fileset id="project.sources" failonempty="true">
223 <include name="${project.sources.path}/**/*.cs" />
226 <property name="assembly.extension" value="dll" />
227 <property name="assembly.extension" value="exe" if="${assembly.type == 'exe'}" />
229 <csc target="${assembly.type}"
231 define="${build.defines}"
232 optimize="${build.optimize}"
233 output="${path.build.output}/${assembly.name}.${assembly.extension}"
234 doc="${path.build.output}/${assembly.name}.xml" >
235 <sources refid="project.sources" />
236 <references refid="project.references" />
237 <resources prefix="${assembly.namespace}.Resources.">
238 <include name="${project.sources.path}/Resources/*.*"/>
241 <!-- No warning when public members lack XML comments -->
242 <warning number="1591" />
246 <call target="cleanup-assembly-info"/>
249 <target name="cleanup-assembly-info">
250 <delete file="${project.sources.path}/SharedAssemblyInfo.cs" />
251 <delete file="${project.sources.path}/VersionAssemblyInfo.cs" />
254 <target name="create-assembly-info">
255 <copy todir="${project.sources.path}">
257 <include name="${path.base}/SharedAssemblyInfo.cs" />
261 <asminfo output="${project.sources.path}/VersionAssemblyInfo.cs" language="CSharp">
263 <import namespace="System"/>
264 <import namespace="System.Reflection"/>
265 <import namespace="System.Runtime.InteropServices"/>
268 <attribute type="AssemblyVersionAttribute" value="${version}"/>
269 <attribute type="AssemblyProductAttribute" value="GitSharp [${version.revision}]"/>
274 <target name="copy-references">
275 <foreach item="File" property="reference">
277 <items refid="project.references" />
280 <echo message="reference = ${reference}"/>
281 <copy file="${reference}" todir="${path.build.output}" />