OSDN Git Service

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