OSDN Git Service

Try to enable show merged file
[tortoisegit/TortoiseGitJp.git] / doc / doc.build
1 <?xml version="1.0"?>\r
2 <!--\r
3 ============================================================ \r
4  $Date: 2008-12-14 09:06:16 +0800 (Sun, 14 Dec 2008) $\r
5  $Author: simonlarge $\r
6  $Rev: 14835 $\r
7 ============================================================ \r
8 \r
9 NAnt build script for the TortoiseGit documentation\r
10 \r
11 All project specific configuration is stored in doc.build.include.\r
12 All user/site specific configuration is stored in doc.build.user.\r
13 \r
14 -->\r
15 \r
16 <project name="Documentation" default="all" basedir=".">\r
17         <description>\r
18                 Builds the Documentation in all languages and all output formats\r
19         </description>\r
20         \r
21         <!-- default: we don't clean first -->\r
22         <property name="cleanup" value="" overwrite="false" />\r
23         <property name="nant.settings.currentframework" value="net-3.5" />\r
24 \r
25         <include buildfile="doc.build.include"/>\r
26 \r
27 <!-- ====================================================================== -->\r
28 <!-- Loop over all languages                                                -->\r
29 <!-- ====================================================================== -->\r
30 \r
31         <target name="all" \r
32                 description="Loop over all languages, output formats and applications and build documentation"\r
33                 depends="prepare" >\r
34 \r
35                 <foreach item="String" in="${languages}" delim="," property="lang.target">\r
36                         <!-- language code for English (US) (default)-->\r
37                         <property name="lang.target.code" value="1033" />\r
38                         <property name="languagebuildfile" value="${path.user.xsl}/${lang.target}/lang.build" />\r
39                         <if test="${file::exists(languagebuildfile)}" >\r
40                                 <include buildfile="${languagebuildfile}" />\r
41                         </if>\r
42                         <call target="doit" failonerror="${critical or lang.base==lang.target}"/>\r
43                 </foreach>\r
44         </target>\r
45         \r
46 <!-- ====================================================================== -->\r
47 <!-- Loop over all applications and output formats                          -->\r
48 <!-- ====================================================================== -->\r
49 \r
50         <target name="doit">\r
51 \r
52                 <foreach item="String" in="${applications}" delim="," property="app">\r
53                         <property name="doc.source.file" value="source/${lang.base}/${app}.xml"/>\r
54                         <property name="doc.base.name" value="${app}_${lang.base}"/>\r
55                         <property name="doc.base.work" value="output/${doc.base.name}"/>\r
56                                         \r
57                         <property name="doc.target.name" value="${app}_${lang.target}"/>\r
58                         <property name="doc.target.work" value="output/${doc.target.name}"/>\r
59                         <property name="doc.target.source" value="source/${lang.target}/${app}/${app}.xml"/>\r
60                         <property name="pofiletotranslate" value="po/${app}_${lang.target}.po" />\r
61 \r
62                         <echo message="------------------------------------------------------------"/>\r
63                         <echo message="Creating '${doc.target.name}' documentation"/>\r
64 \r
65                         <if test="${file::exists(pofiletotranslate)}" >\r
66                                 <call target="translate" unless="${lang.base==lang.target}" />\r
67                         </if>\r
68                         <if test="${lang.base==lang.target or file::exists(pofiletotranslate)}" >\r
69                                 <!-- update version info in version.xml -->\r
70                                 <call target="UpdateVersionInfo"/>\r
71 \r
72                                 <call target="spellcheck" if="${property::exists('spellcheck') and spellcheck=='true'}"/>\r
73                                 <call target="copyimages"/>\r
74 \r
75                                 <property name="xslt.source" value="${doc.target.source}"/>\r
76                                 <foreach item="String" in="${docformats}" delim="," property="docformat">\r
77                                         <call target="${docformat}"/>\r
78                                 </foreach>\r
79                         </if>\r
80                 </foreach>\r
81         </target>\r
82         \r
83 <!-- ====================================================================== -->\r
84 <!-- ====================================================================== -->\r
85 \r
86         <target name="clean" description="remove all generated files">\r
87                 <if test="${cleanup == 'yes'}">\r
88                         <delete dir="output" failonerror="false"/>\r
89                 </if>\r
90         </target>\r
91         \r
92 <!-- ====================================================================== -->\r
93 <!-- ====================================================================== -->\r
94 \r
95         <target name="prepare" description="Create directories" depends="clean">\r
96                 <mkdir dir="output"/>\r
97                 <call target="prepare.custom" if="${target::exists('prepare.custom')}"/>\r
98 \r
99                 <!-- find the path to the fonts -->\r
100                 <script language="C#">                  \r
101                         <code>\r
102                                 <![CDATA[\r
103                                         public static void ScriptMain(Project project)\r
104                                         {\r
105                                                 string systemPath = Environment.GetFolderPath(Environment.SpecialFolder.System);\r
106                                                 string fontsPath = Path.GetDirectoryName(systemPath) + Path.DirectorySeparatorChar + "FONTS";\r
107                                                 fontsPath = fontsPath.Replace('\\','/');\r
108                                                 project.Properties.Add("fontpath", fontsPath );\r
109                                         }\r
110                                 ]]>\r
111                         </code>\r
112                 </script>\r
113 \r
114                 <!-- ensure "Version" translation invariant -->\r
115                 <copy file="source\${lang.base}\version.in" tofile="source\${lang.base}\version.xml" overwrite="true"/>\r
116 \r
117                 <!-- tune path to xsltproc.exe in aspell.bat -->\r
118                 <copy file="Aspell/aspell.in" tofile="Aspell/aspell.bat" overwrite="true">\r
119                         <filterchain>\r
120                                 <replacetokens begintoken="$" endtoken="$">\r
121                                         <token key="XSLTProcPath" value="${path.bin}" />\r
122                                 </replacetokens>\r
123                         </filterchain>\r
124                 </copy>\r
125 \r
126         </target>\r
127 \r
128 <!-- ====================================================================== -->\r
129 <!-- ====================================================================== -->\r
130 \r
131         <target name="copyimages" description="Copy images">\r
132                 <delete dir="${doc.target.work}/images" failonerror="false"/>\r
133                 <mkdir dir="${doc.target.work}/images"/>\r
134                 <copy todir="${doc.target.work}/images">\r
135                         <fileset basedir="images/${lang.base}">\r
136                                 <include name="*"/>\r
137                         </fileset>\r
138                 </copy>\r
139 \r
140                 <copy todir="${doc.target.work}/images" unless="${lang.base==lang.target}" overwrite="true">\r
141                         <fileset basedir="images/${lang.target}">\r
142                                 <include name="*"/>\r
143                         </fileset>\r
144                 </copy>\r
145         </target>\r
146 \r
147 <!-- ====================================================================== -->\r
148 <!-- ====================================================================== -->\r
149 \r
150         <target name="uptodate" description="Check whether the given target is up to date">\r
151 \r
152                 <echo message="Checking if '${file.target}' is up to date"/>\r
153                 <uptodate property="file.target.uptodate">\r
154                         <sourcefiles>\r
155                                 <include name="source/${lang.target}/${app}/**/*.xml"/>\r
156                                 <include name="source/${lang.target}/pubdate.xml"/>\r
157                                 <include name="source/${lang.target}/glossary.xml"/>\r
158                                 <include name="source/${lang.target}/wishlist.xml"/>\r
159                                 <include name="source/${lang.target}/version.in"/>\r
160                         </sourcefiles>\r
161                         <targetfiles>\r
162                                 <include name="${file.target}"/>\r
163                         </targetfiles>\r
164                 </uptodate>\r
165                 <if test="${file.target.uptodate}">\r
166                         <echo message="Up to date"/>\r
167                 </if>\r
168         </target>\r
169 \r
170 <!-- ====================================================================== -->\r
171 <!-- Run xsltproc with the defined parameters                               -->\r
172 <!-- ====================================================================== -->\r
173 \r
174         <target name="xsltproc" description="Run xsltproc with the defined parameters">\r
175                 <echo message="Processing XML Source" />\r
176 \r
177                 <!-- Check whether a language specific xsl file exists and use it -->\r
178                 <!-- if none is found, load XSL file from default location.       -->\r
179                 <property name="xslt.file.lang" value="${path.user.xsl}/${lang.target}/${xslt.file}" />\r
180                 <property name="xslt.file" value="${xslt.file.lang}" if="${file::exists(xslt.file.lang)}"/>\r
181                 <property name="xslt.file" value="${path.user.xsl}/${xslt.file}" unless="${file::exists(xslt.file.lang)}"/>\r
182 \r
183                 <echo message="Stylesheet: ${xslt.file}" />\r
184                 <echo message="Parameters: ${xslt.params}" />\r
185                 <exec program="xsltproc"\r
186                                         commandline="${xslt.params} --output ${xslt.target} ${xslt.file} ${xslt.source}"\r
187                                         basedir="${path.bin}"\r
188                                         verbose="false"/>\r
189         </target>\r
190         \r
191 <!-- ====================================================================== -->\r
192 <!-- Profile source into a single file                                      -->\r
193 <!-- ====================================================================== -->\r
194 \r
195         <target name="profile" description="Profile source into a single file" >\r
196 \r
197                 <call target="uptodate"/>\r
198 \r
199                 <if test="${not file.target.uptodate}">\r
200                         <property name="xslt.params" value="${xsl.profile.params}"/>\r
201                         <property name="xslt.file" value="${xsl.profile.file}"/>\r
202                         <property name="xslt.target" value="${file.target}.tmp"/>\r
203 \r
204                         <echo message="Profiling into: ${file.target}"/>\r
205                         <call target="xsltproc"/>\r
206 \r
207                         <!-- Removes the moreinfo="" attributes added by xsltproc -->\r
208                         <move file="${xslt.target}" tofile="${file.target}" overwrite="true">\r
209                                 <filterchain>\r
210                                         <replacestring from=" moreinfo=&quot;none&quot;" to="" />\r
211                                 </filterchain>\r
212                         </move>\r
213                 </if>\r
214         </target>\r
215 \r
216 <!-- ====================================================================== -->\r
217 <!-- Create po template for each application from sources                   -->\r
218 <!-- ====================================================================== -->\r
219 \r
220         <target name="potfile" description="Create po template from sources">\r
221                 <property name="lang.target" value="${lang.base}"/>\r
222                 \r
223                 <!-- ensure "Version" translation invariant -->\r
224                 <copy file="source\${lang.base}\version.in" tofile="source\${lang.base}\version.xml" overwrite="true"/>\r
225 \r
226                 <foreach item="String" in="${potemplates}" delim="," property="app">\r
227 \r
228                         <property name="potfile" value="po/${app}.pot" />\r
229                         <property name="xslt.source" value="source/${lang.base}/${app}/${app}.xml"/>\r
230                         <property name="file.target" value="source/${app}_${lang.base}.xml"/>\r
231 \r
232                         <echo message="------------------------------------------------------------"/>\r
233                         <echo message="Checking if ${potfile} is up to date"/>\r
234 \r
235                         <call target="profile" />\r
236 \r
237                         <if test="${not file::up-to-date(file.target, potfile)}">\r
238                                 <echo message="Creating po template from sources"/>\r
239                                 <exec program="python"\r
240                                                         commandline="xml2po.py -e -o ${potfile}.tmp ${file.target}"\r
241                                                         verbose="false"/>\r
242 \r
243                                 <!-- Adjust path to source file -->\r
244                                 <move file="${potfile}.tmp" tofile="${potfile}" overwrite="true">\r
245                                         <filterchain>\r
246                                                 <replacestring from="#: ${file.target}" to="#: ../${file.target}" />\r
247                                         </filterchain>\r
248                                 </move>\r
249                         </if>\r
250 \r
251                         <echo message="" />\r
252                 </foreach>\r
253         </target>\r
254 \r
255 <!-- ====================================================================== -->\r
256 <!-- Create translated source files                                         -->\r
257 <!-- ====================================================================== -->\r
258 \r
259         <target name="translate" description="Create translated source file">\r
260                 <property name="lang.pofile" value="po/${app}_${lang.target}.po"/>\r
261 \r
262                 <echo message="Translating: '${app} ${lang.target}' This may take a few minutes"/>\r
263                 \r
264                 <exec program="msgfmt"\r
265                                         commandline="${lang.pofile} -o ${lang.target}.mo"\r
266                                         basedir="${path.gettext}"\r
267                                         verbose="false"/>\r
268 \r
269                 <foreach item="File" property="file.base">\r
270                         <in>\r
271                                 <items>\r
272                                         <include name="source/${lang.base}/${app}/**/*.xml"/>\r
273                                         <include name="source/${lang.base}/pubdate.xml"/>\r
274                                         <include name="source/${lang.base}/glossary.xml"/>\r
275                                         <include name="source/${lang.base}/wishlist.xml"/>\r
276                                         <include name="source/${lang.base}/version.in"/>\r
277                                 </items>\r
278                         </in>\r
279                         <do>\r
280                                 <property name="file.target" value="${string::replace(file.base,'\'+lang.base+'\','\'+lang.target+'\')}"/>\r
281 \r
282                                 <uptodate property="file.target.uptodate">\r
283                                         <sourcefiles>\r
284                                                 <include name="${file.base}"/>\r
285                                                 <include name="${lang.pofile}"/>\r
286                                         </sourcefiles>\r
287                                         <targetfiles>\r
288                                                 <include name="${file.target}"/>\r
289                                         </targetfiles>\r
290                                 </uptodate>\r
291 \r
292                                 <if test="${not file.target.uptodate}">\r
293 \r
294                                         <echo message="Translating: ${path::get-file-name(file.target)}"/>\r
295                                         <property name="dir.target" value="${path::get-directory-name(file.target)}"/>\r
296                                         <mkdir dir="${dir.target}" unless="${directory::exists(dir.target)}"/>\r
297                                         <exec program="python"\r
298                                                                 commandline='xml2po.py -t "${lang.target}.mo" -o "${file.target}" "${file.base}"'\r
299                                                                 verbose="false"/>\r
300                                 </if>\r
301 \r
302                         </do>\r
303                 </foreach>\r
304 \r
305 <!--\r
306                 <foreach item="File" property="file.base">\r
307                         <in>\r
308                                 <items refid="files.exclude" />\r
309                         </in>\r
310                         <do>\r
311                                 <property name="file.target" value="${string::replace(file.base,'\'+lang.base+'\','\'+lang.target+'\')}"/>\r
312                                 <copy file="${file.base}" tofile="${file.target}" overwrite="true"/>\r
313                         </do>\r
314                 </foreach>\r
315 -->\r
316 \r
317                 <delete file="${lang.target}.mo"/>\r
318         </target>\r
319 \r
320 <!-- ====================================================================== -->\r
321 <!-- Try to update version info in the version file                         -->\r
322 <!-- ====================================================================== -->\r
323 \r
324         <target name="UpdateVersionInfo" description="Updates the version file with version info">\r
325 \r
326                 <copy\r
327                         file="source\${lang.target}\version.in" \r
328                         tofile="source\${lang.target}\version.xml"\r
329                         overwrite="true">\r
330 \r
331                         <filterchain>\r
332                                 <replacetokens begintoken="$" endtoken="$">\r
333                                         <token key="MajorVersion" value="${environment::get-variable('MajorVersion')}"/>\r
334                                         <token key="MinorVersion" value="${environment::get-variable('MinorVersion')}"/>\r
335                                         <token key="MicroVersion" value="${environment::get-variable('Microversion')}"/>\r
336 <!--\r
337                                         <token key="WCREV" value="${environment::get-variable('WCREV')}"/>\r
338 -->\r
339                                 </replacetokens>\r
340                         </filterchain>\r
341                 </copy>\r
342 \r
343         </target>\r
344 \r
345 <!-- ====================================================================== -->\r
346 <!-- Run spellchecker on files                                              -->\r
347 <!-- ====================================================================== -->\r
348 \r
349         <target name="spellcheck" description="Run spellchecker on files">\r
350                 <echo message="Spellchecking: '${app} ${lang.target}' This may take a few minutes"/>\r
351                 <property name="spellcheck.log" value="ASpell/${app}_${lang.target}.log"/>\r
352                 <mkdir dir="ASpell/${app}_${lang.target}"/>\r
353                 \r
354                 <echo message="--- Spellchecking: '${lang.target}'"\r
355                         file="${spellcheck.log}"\r
356                         failonerror="false"/>\r
357 \r
358                 <copy file="Aspell/TortoiseGit.tmpl.pws" tofile="Aspell/Temp.pws" overwrite="true">\r
359                         <filterchain>\r
360                                 <replacetokens begintoken="$" endtoken="$">\r
361                                         <token key="LANG" value="${lang.target}" />\r
362                                 </replacetokens>\r
363                         </filterchain>\r
364                 </copy>\r
365 \r
366                 <foreach item="File" property="file.base">\r
367                         <in>\r
368                                 <items>\r
369                                         <include name="source/${lang.base}/${app}/**/*.xml"/>\r
370                                         <include name="source/${lang.base}/glossary.xml"/>\r
371                                         <include name="source/${lang.base}/wishlist.xml"/>\r
372                                 </items>\r
373                         </in>\r
374                         <do>\r
375                                 <property name="file.target" value="${string::replace(file.base,'\'+lang.base+'\','\'+lang.target+'\')}"/>\r
376                                 <property name="file.log" value="ASpell\${app}_${lang.target}\${path::get-file-name(file.target)}.log"/>\r
377 \r
378                                 <uptodate property="file.target.uptodate">\r
379                                         <sourcefiles>\r
380                                                 <include name="${file.target}"/>\r
381                                                 <include name="ASpell/${lang.target}.pws"/>\r
382                                                 <include name="ASpell/TortoiseGit.tmpl.pws"/>\r
383                                         </sourcefiles>\r
384                                         <targetfiles>\r
385                                                 <include name="${file.log}"/>\r
386                                         </targetfiles>\r
387                                 </uptodate>\r
388 \r
389                                 <if test="${not file.target.uptodate}">\r
390                                         <echo message="Checking: ${path::get-file-name(file.target)}"/>\r
391                                         <exec program="Aspell/aspell.bat"\r
392                                                 commandline="${path.spellcheck} ${lang.target} ${file.target} ${file.log}"\r
393                                                 failonerror="false"/>\r
394                                 </if>\r
395                                 <exec program="Aspell/append.bat"\r
396                                         commandline="${file.log} ${spellcheck.log}"/>\r
397                         </do>\r
398                 </foreach>\r
399         </target>\r
400         \r
401 <!-- ====================================================================== -->\r
402 <!-- Create PDF documentation                                               -->\r
403 <!-- ====================================================================== -->\r
404 \r
405         <target name="pdf" description="Create PDF documentation">\r
406                 \r
407                 <property name="file.target" value="output/${app}-${docverstring}-${lang.target}.pdf"/>\r
408                 <call target="uptodate"/>\r
409 \r
410                 <if test="${not file.target.uptodate}">\r
411                         <property name="xslt.params" value="${xsl.pdf.params}"/>\r
412                         <property name="xslt.file" value="${xsl.pdf.file}"/>\r
413                         <property name="xslt.target" value="${doc.target.work}/${doc.target.name}.fo"/>\r
414 \r
415                         <call target="xsltproc" />\r
416 \r
417                         <property name="userconfig.langtemplate" value="${path.user.xsl}/${lang.target}/userconfig.template.xml" />\r
418                         <property name="userconfig.lang" value="${path.user.xsl}/${lang.target}/userconfig.xml" />\r
419 \r
420                         <if test="${file::exists(userconfig.langtemplate)}">\r
421                                 <loadfile file="${userconfig.langtemplate}" property="configfile">\r
422                                         <filterchain>\r
423                                                 <replacetokens begintoken="%" endtoken="%">\r
424                                                         <token key="FONTSDIR" value="${fontpath}" />\r
425                                                 </replacetokens>\r
426                                         </filterchain>\r
427                                 </loadfile>\r
428                                 <echo file="${userconfig.lang}" message="${configfile}" />\r
429                         </if>\r
430                         <property name="commandline" value="-q -fo ${xslt.target} -pdf ${file.target}"/>\r
431                         <property name="commandline" value="-c ${userconfig.lang} ${commandline}" if="${file::exists(userconfig.lang)}"/>\r
432                         \r
433                         <exec program="fop.bat"\r
434                                                 commandline="${commandline}"\r
435                                                 basedir="${path.fop}"\r
436                                                 verbose="false"/>\r
437                 </if>\r
438         </target>\r
439 \r
440 <!-- ====================================================================== -->\r
441 <!-- Create CHM documentation                                               -->\r
442 <!-- ====================================================================== -->\r
443 \r
444         <target name="chm" description="Create CHM documentation">\r
445         \r
446                 <property name="file.target" value="${doc.target.work}.chm"/>\r
447                 <call target="uptodate"/>\r
448 \r
449                 <if test="${not file.target.uptodate}">\r
450                         <property name="xslt.params" value="${xsl.chm.params}"/>\r
451                         <property name="xslt.file" value="${xsl.chm.file}"/>\r
452                         <property name="xslt.target" value="${doc.target.work}/${doc.target.name}"/>\r
453 \r
454                         <call target="xsltproc" />\r
455                         \r
456                         <!-- The CHM helpcontext target resides in an external build file -->\r
457                         <call target="help.prepare" if="${target::exists('help.prepare')}"/>\r
458 \r
459                         <copy file="${path.user.css}/styles_chm.css" todir="${doc.target.work}"/>\r
460 \r
461                         <exec program="SBAppLocale.exe"\r
462                                                 commandline="${lang.target.code} ${path.bin}/hhc.exe ${doc.target.work}/htmlhelp.hhp"\r
463                                                 basedir="${path.bin}"\r
464                                                 resultproperty="result.hhc"\r
465                                                 failonerror="false"\r
466                                                 verbose="false"\r
467                                                 timeout="600000" />\r
468 \r
469                         <copy file="${doc.target.work}/htmlhelp.chm" tofile="${file.target}"/>\r
470                 </if>\r
471                 <!--\r
472                 <delete>\r
473                         <fileset>\r
474                                 <include name="${doc.target.work}/*.*"/>\r
475                         </fileset>\r
476                 </delete>\r
477                 -->\r
478         </target>\r
479 \r
480 <!-- ====================================================================== -->\r
481 <!-- Create HTML multi page documentation                                   -->\r
482 <!-- ====================================================================== -->\r
483         <target name="html" description="Create HTML documentation" depends="">\r
484 \r
485                 <property name="file.target" value="${doc.target.work}/index.html"/>\r
486                 <call target="uptodate"/>\r
487 \r
488                 <if test="${not file.target.uptodate}">\r
489                         <property name="xslt.params" value="${xsl.htmlsingle.params}"/>\r
490                         <property name="xslt.file" value="${xsl.htmlsingle.file}"/>\r
491                         <property name="xslt.target" value="${doc.target.work}/${doc.target.name}"/>\r
492 \r
493                         <copy file="${path.user.css}/styles_chm.css" todir="${doc.target.work}"/>\r
494                         <copy file="${path.user.css}/styles_html.css" todir="${doc.target.work}"/>\r
495 \r
496                         <call target="xsltproc" />\r
497 \r
498                 </if>\r
499         </target>\r
500 \r
501 <!-- ====================================================================== -->\r
502 <!-- Create HTML single page documentation                                  -->\r
503 <!-- ====================================================================== -->\r
504 \r
505         <target name="htmlsingle" description="Create HTML single page documentation" depends="">\r
506 \r
507                 <property name="file.target" value="${doc.target.work}/help-onepage.html"/>\r
508                 <call target="uptodate"/>\r
509 \r
510                 <if test="${not file.target.uptodate}">\r
511                         <property name="xslt.params" value="${xsl.html.params}"/>\r
512                         <property name="xslt.file" value="${xsl.html.file}"/>\r
513                         <property name="xslt.target" value="${file.target}"/>\r
514 \r
515                         <copy file="${path.user.css}/styles_chm.css" todir="${doc.target.work}"/>\r
516                         <copy file="${path.user.css}/styles_html.css" todir="${doc.target.work}"/>\r
517 \r
518                         <call target="xsltproc" />\r
519 \r
520                 </if>\r
521         </target>\r
522 \r
523 <!-- ====================================================================== -->\r
524 <!-- Create the API documentation                                           -->\r
525 <!-- ====================================================================== -->\r
526 \r
527         <target name="apidoc" depends="GitAPIdoc,TortoiseGitAPIdoc" />\r
528 \r
529         <target name="GitAPIdoc">\r
530                 <loadfile file="API\DoxyfileSVN" property="GitDoxyFile" />\r
531                 <echo file="Doxyfile" message="${GitDoxyFile}" />\r
532                 <echo file="Doxyfile" message="HHC_LOCATION=${environment::get-variable('HHLOC')}" append="true" />\r
533                 <mkdir dir="output" />\r
534                 <exec program="doxygen.exe">\r
535                         <arg value="Doxyfile" />\r
536                 </exec>\r
537                 <move file="output\doxygen\html\GitAPI.chm" tofile="output\GitAPI.chm" overwrite="true" />\r
538                 <delete dir="output\doxygen" />\r
539                 <delete file="Doxyfile" />\r
540         </target>\r
541 \r
542         <target name="TortoiseGitAPIdoc">\r
543                 <loadfile file="API\Doxyfile" property="TortoiseGitDoxyFile" />\r
544                 <echo file="Doxyfile" message="${TortoiseGitDoxyFile}" />\r
545                 <echo file="Doxyfile" message="HHC_LOCATION=${environment::get-variable('HHLOC')}" append="true" />\r
546                 <mkdir dir="output" />\r
547                 <exec program="doxygen.exe">\r
548                         <arg value="Doxyfile" />\r
549                 </exec>\r
550                 <move file="output\doxygen\html\TortoiseAPI.chm" tofile="output\TortoiseGitAPI.chm" overwrite="true" />\r
551                 <delete dir="output\doxygen" />\r
552                 <delete file="Doxyfile" />\r
553         </target>\r
554 \r
555 </project>\r
556 \r
557 \r