Changeset 823

Show
Ignore:
Timestamp:
09/02/06 12:52:08 (2 years ago)
Author:
alban
Message:

first build decomposition

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/build.xml

    r818 r823  
    1 <project xmlns:ivy="antlib:fr.jayasoft.ivy.ant" name="freecast" default="test" basedir="."> 
     1<project name="freecast" default="test" basedir="."> 
    22 
    33        <property file="build-user.properties" /> 
    44        <property file="build.properties" /> 
    55 
    6         <macrodef name="docbook"> 
    7                 <attribute name="in" /> 
    8                 <attribute name="out" /> 
    9                 <attribute name="style" /> 
    10                 <element name="arguments" optional="true" /> 
    11                 <sequential> 
    12  
    13                         <java classname="org.apache.xalan.xslt.Process" fork="true" failonerror="true"> 
    14                                 <jvmarg line="-Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration" /> 
    15                                 <jvmarg  
    16 line="-Xbootclasspath/p:lib/build-docbook/xercesImpl.jar;lib/build-docbook/xml-apis.jar" /> 
    17                                 <classpath> 
    18                                         <fileset dir="lib/build-docbook"> 
    19                                                 <include name="xalan.jar"/> 
    20                                         </fileset> 
    21                                         <pathelement path="${track.docbook.dir}/extensions/xalan25.jar" /> 
    22                                 </classpath> 
    23  
    24                                 <arg line="-IN @{in}" /> 
    25                                 <arg line="-OUT @{out}" /> 
    26                                 <arg line="-XSL @{style}" /> 
    27                                 <arg line="-PARAM admon.graphics 1" /> 
    28                                 <arg line="-PARAM use.extensions 1" /> 
    29                                 <arguments /> 
    30                         </java> 
    31  
    32                 </sequential> 
    33         </macrodef> 
    34  
    35         <target name="prepare.version"> 
    36                 <tstamp /> 
    37                 <property name="project.version" value="${DSTAMP}" /> 
    38                 <property name="project.fullname" value="freecast-${project.version}" /> 
    39         </target> 
    40          
    41   <target name="prepare.track"> 
    42         <ivy:configure /> 
    43   </target> 
    44  
    45   <target name="prepare.libraries" depends="prepare.track"> 
    46         <ivy:retrieve pattern="lib/[conf]/[artifact].[ext]" conf="core, runtime, test" /> 
     6  <target name="prepare.libraries"> 
    477        <path id="path.build"> 
    488                <fileset dir="lib/core"/> 
     
    5818  </target> 
    5919   
    60   <target name="prepare.docbook" depends="prepare.track, prepare.docbook.retrieve, prepare.docbook.install"> 
    61         <path id="path.docbook"> 
    62                 <fileset dir="lib/build-docbook"/> 
    63         </path> 
    64                 <property name="track.docbook.dir" location="lib/build-docbook/docbook-xsl" /> 
    65   </target> 
    66    
    67   <target name="prepare.docbook.retrieve"> 
    68         <ivy:retrieve pattern="lib/[conf]/[artifact].[ext]" conf="build-docbook" /> 
    69   </target> 
    70    
    71   <target name="prepare.docbook.install.check"> 
    72         <uptodate property="prepare.docbook.install.notRequired" 
    73             srcfile="lib/build-docbook/docbook-xsl.zip" 
    74             targetfile="lib/build-docbook/docbook-xsl/.touch"/> 
    75   </target> 
    76    
    77   <target name="prepare.docbook.install"  
    78         depends="prepare.docbook.install.check" unless="prepare.docbook.install.notRequired"> 
    79         <tempfile property="prepare.docbook.dir"/> 
    80         <mkdir dir="${prepare.docbook.dir}"/> 
    81         <unzip src="lib/build-docbook/docbook-xsl.zip" dest="${prepare.docbook.dir}"/> 
    82         <move todir="lib/build-docbook/docbook-xsl"> 
    83                 <fileset dir="${prepare.docbook.dir}"/> 
    84                 <regexpmapper from="^docbook-xsl-[0-9\.]+/(.*)$$" to="\1"/> 
    85           </move> 
    86           <delete dir="${prepare.docbook.dir}"/> 
    87           <touch file="lib/build-docbook/docbook-xsl/.touch"/> 
    88   </target> 
    89  
    9020        <target name="clean"> 
    9121                <delete dir="build" /> 
    92                 <delete dir="lib" /> 
    9322                <delete dir="dist" /> 
    94                 <delete dir="export" /> 
    95         </target> 
    96  
    97         <target name="build.validate"> 
    98                 <macrodef name="configvalidate"> 
    99                         <attribute name="file" /> 
    100                         <sequential> 
    101                                 <pathconvert dirsep="/" property="build.validate.xsd.file"> 
    102                                         <path> 
    103                                                 <pathelement location="source/org/kolaka/freecast/config/resources/config.xsd" /> 
    104                                         </path> 
    105                                 </pathconvert> 
    106                                 <xmlvalidate lenient="false" failonerror="true" warn="true" file="@{file}"> 
    107                                         <attribute name="http://apache.org/xml/features/validation/schema" value="true" /> 
    108                                         <attribute name="http://xml.org/sax/features/namespaces" value="true" /> 
    109                                         <property name="http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" value="${build.validate.xsd.file}" /> 
    110                                 </xmlvalidate> 
    111                         </sequential> 
    112                 </macrodef> 
    113  
    114                 <!-- 
    115                 <configvalidate file="source/org/kolaka/freecast/config/resources/defaults-node.xml"/> 
    116                 <configvalidate file="source/org/kolaka/freecast/config/resources/defaults-node-swing.xml"/> 
    117                 --> 
    11823        </target> 
    11924 
    12025        <target name="build.core" depends="prepare.libraries, build.core.classes, build.core.resources" /> 
    12126 
    122         <target name="build.core.classes" depends="build.validate"
     27        <target name="build.core.classes"
    12328                <mkdir dir="${build.core.classes.dir}" /> 
    12429                <javac target="1.4" source="1.4" srcdir="source" destdir="${build.core.classes.dir}" debug="true"> 
     
    12833        </target> 
    12934 
    130         <target name="build.core.resources" depends="prepare.version"
     35        <target name="build.core.resources"
    13136                <copy todir="${build.core.classes.dir}"> 
    13237                        <fileset dir="source"> 
     
    16873        </target> 
    16974 
    170         <target name="build.test" depends="prepare.libraries, build.core, build.etc"> 
     75        <target name="build.test" depends="build.core, build.etc"> 
    17176                <property name="build.test.classes.dir" value="build/test/classes" /> 
    17277                <mkdir dir="${build.test.classes.dir}" /> 
     
    18489 
    18590        <target name="build" depends="build.core" /> 
    186  
    187         <target name="build.changelog"> 
    188         <ivy:retrieve pattern="lib/[conf]/[artifact].[ext]" conf="build-xmlreleasenotes" /> 
    189          
    190         <taskdef classname="org.xrn.ant.XMLReleaseNotes" name="xrn"> 
    191                 <classpath> 
    192                         <fileset dir="lib/build-xmlreleasenotes"/> 
    193                 </classpath> 
    194         </taskdef> 
    195  
    196         <property name="build.changelog.xrn.dir" value="lib/build-xmlreleasenotes/xmlreleasenotes"/> 
    197                 <mkdir dir="${build.changelog.xrn.dir}" /> 
    198                 <xrn destination="${build.changelog.xrn.dir}" deploy="true" /> 
    199  
    200                 <mkdir dir="build/xmlreleasenotes"/> 
    201  
    202                 <style in="source/org/kolaka/freecast/changelog.xml" out="build/xmlreleasenotes/changelog.html" style="${build.changelog.xrn.dir}/XMLReleaseNotes2HTML.xsl" /> 
    203  
    204                 <mkdir dir="build/changelog"/> 
    205  
    206                 <tidy dest="build/changelog" failonerror="false" encoding="latin1"> 
    207                         <filesets> 
    208                                 <fileset dir="build/xmlreleasenotes"/> 
    209                         </filesets> 
    210                 </tidy> 
    211                  
    212                 <copy tofile="build/changelog/stylesheet.css" file="${build.changelog.xrn.dir}/XMLReleaseNotes.css" /> 
    213         </target> 
    214  
    215         <target name="build.docs" depends="build.docs.api, build.docs.xref, build.docs.coverage, build.docs.userguide" /> 
    216  
    217         <target name="build.docs.api.check"> 
    218                 <uptodate property="build.docs.api.notRequired" targetfile="build/docs/api/.touch"> 
    219                         <srcfiles dir="source"> 
    220                                 <include name="**/*.java" /> 
    221                                 <include name="**/package.html" /> 
    222                                 <include name="docfiles/**" /> 
    223                         </srcfiles> 
    224                 </uptodate> 
    225         </target> 
    226  
    227         <target name="build.docs.api" depends="prepare.libraries, build.docs.api.check" unless="build.docs.api.notRequired"> 
    228                 <mkdir dir="build/docs/api" /> 
    229  
    230                 <javadoc packagenames="org.kolaka.freecast.*" sourcepath="source" destdir="build/docs/api" author="true" use="true"> 
    231                         <link href="http://java.sun.com/j2se/1.4.2/docs/api/" /> 
    232                         <classpath refid="path.test" /> 
    233                 </javadoc> 
    234  
    235                 <touch file="build/docs/api/.touch" /> 
    236         </target> 
    237  
    238         <target name="build.docs.userguide" depends="build.docs.userguide.html,build.docs.userguide.pdf" /> 
    239  
    240         <target name="build.docs.userguide.prepare" depends="prepare.docbook, prepare.version"> 
    241                 <mkdir dir="build/docs/userguide" /> 
    242                 <tstamp> 
    243                         <format property="build.docs.userguide.pubdate" pattern="EEEE, MMMM d yyyy" locale="en" /> 
    244                 </tstamp> 
    245                 <copy todir="build/docs/userguide" flatten="true"> 
    246                         <fileset dir="source"> 
    247                                 <include name="org/kolaka/freecast/userguide/userguide.xml" /> 
    248                                 <include name="org/kolaka/freecast/userguide/gpl.xml" /> 
    249                         </fileset> 
    250                         <filterset> 
    251                                 <filter token="pubdate" value="${build.docs.userguide.pubdate}" /> 
    252                                 <filter token="version" value="${project.version}" /> 
    253                         </filterset> 
    254                 </copy> 
    255                 <copy todir="build/docs/userguide" flatten="true"> 
    256                         <fileset dir="source"> 
    257                                 <include name="org/kolaka/freecast/userguide/*.xsl" /> 
    258                         </fileset> 
    259                         <filterset> 
    260                                 <filter token="docbook.xsl.dir" value="${track.docbook.dir}" /> 
    261                         </filterset> 
    262                 </copy> 
    263                 <copy todir="build/docs/userguide"> 
    264                         <fileset dir="source/org/kolaka/freecast/config/resources"> 
    265                                 <include name="defaults-tracker.xml" /> 
    266                         </fileset> 
    267                         <fileset dir="source/org/kolaka/freecast/config"> 
    268                                 <include name="samples/**" /> 
    269                         </fileset> 
    270                         <filterchain> 
    271                                 <!-- 
    272                                 <tokenfilter> 
    273                                         <filetokenizer/> 
    274                                         <replaceregex pattern="(.*)" 
    275                             flags="s" 
    276                             replace="&lt;programlisting&gt;&lt;![CDATA[\1]]&gt;&lt;/programlisting&gt;"/> 
    277                                 </tokenfilter> 
    278                                 --> 
    279                                 <tokenfilter> 
    280                                         <replaceregex pattern="\t" flags="gs" replace="  " /> 
    281                                 </tokenfilter> 
    282                         </filterchain> 
    283                 </copy> 
    284                 <copy todir="build/docs/userguide/images"> 
    285                         <fileset dir="${track.docbook.dir}/images"> 
    286                                 <include name="**/*.png" /> 
    287                                 <present targetdir="source/org/kolaka/freecast/userguide/images" present="srconly" /> 
    288                         </fileset> 
    289                         <fileset dir="source/org/kolaka/freecast/userguide/images" /> 
    290                 </copy> 
    291                 <copy todir="build/docs/userguide/images"> 
    292                         <fileset dir="source/org/kolaka/freecast/node/swing/install"> 
    293                                 <include name="screenshot-linux-20050322*.png" /> 
    294                                 <include name="screenshot-linux-20050911*.png" /> 
    295                         </fileset> 
    296                         <fileset dir="source/org/kolaka/freecast/manager/gui/install"> 
    297                                 <include name="manager*-screenshot-linux-20050911*.png" /> 
    298                                 <include name="manager*-screenshot-linux-20060513*.png" /> 
    299                         </fileset> 
    300                         <mapper type="regexp" from="^(.*)-[0-9]+(.*)" to="\1\2" /> 
    301                 </copy> 
    302                 <copy todir="build/docs/userguide/images" flatten="true"> 
    303                         <fileset dir="source/org/kolaka/freecast/node/swing/install"> 
    304                                 <include name="jws/jws15*" /> 
    305                         </fileset> 
    306                 </copy> 
    307         </target> 
    308  
    309         <target name="build.docs.userguide.html.validate" depends="build.docs.userguide.html.check" unless="build.docs.userguide.html.notRequired"> 
    310                 <xmlvalidate failonerror="yes" lenient="yes" warn="yes" file="build/docs/userguide/userguide.xml"> 
    311                   <!-- 
    312                   <dtd publicId="-//OASIS//DTD DocBook XML V4.1.2//EN" 
    313                            location="${track.docbook.dtd.dir}/docbookx.dtd"/> 
    314                   -->       
    315                 </xmlvalidate> 
    316         </target> 
    317  
    318         <target name="build.docs.userguide.html.check"> 
    319                 <uptodate property="build.docs.userguide.html.notRequired" targetfile="build/docs/userguide/index.html"> 
    320                         <srcfiles dir="build/docs/userguide" /> 
    321                 </uptodate> 
    322         </target> 
    323  
    324         <target name="build.docs.userguide.html" depends="build.docs.userguide.prepare, build.docs.userguide.html.check, build.docs.userguide.html.validate, build.docs.userguide.html.copy" unless="build.docs.userguide.html.notRequired"> 
    325                 <docbook in="build/docs/userguide/userguide.xml" out="build/docs/userguide/index.html" style="build/docs/userguide/userguide-html.xsl"> 
    326                         <arguments> 
    327                                 <arg line="-PARAM hunker.output.encoding UTF-8" /> 
    328                                 <arg line="-PARAM chunk.tocs.and.lots 1" /> 
    329                                 <arg line="-PARAM html.stylesheet css/screen.css" /> 
    330                                 <arg line="-PARAM use.id.as.filename 1" /> 
    331                                 <arg line="-PARAM navig.graphics 1" /> 
    332                                 <arg line="-PARAM navig.graphics.extension .png" /> 
    333                                 <arg line="-PARAM callouts.extension 1" /> 
    334                                 <arg line="-PARAM textinsert.extension 1" /> 
    335                                 <arg line="-PARAM callout.defaultcolumn 40" /> 
    336                                 <arg line="-PARAM callout.graphics 1" /> 
    337                                 <arg line="-PARAM ignore.image.scaling 1"/> 
    338                         </arguments> 
    339                 </docbook> 
    340         </target> 
    341  
    342         <target name="build.docs.userguide.html.copy"> 
    343                 <copy todir="build/docs/userguide"> 
    344                         <fileset dir="source/org/kolaka/freecast/userguide"> 
    345                                 <include name="css/*" /> 
    346                         </fileset> 
    347                 </copy> 
    348         </target> 
    349  
    350         <target name="build.docs.userguide.pdf.check"> 
    351                 <uptodate property="build.docs.userguide.pdf.notRequired" targetfile="build/docs/userguide/userguide.pdf"> 
    352                         <srcfiles dir="build/docs/userguide"> 
    353                                 <include name="**/*.xml" /> 
    354                         </srcfiles> 
    355                 </uptodate> 
    356         </target> 
    357  
    358         <target name="build.docs.userguide.pdf" depends="build.docs.userguide.prepare, build.docs.userguide.pdf.check" unless="build.docs.userguide.pdf.notRequired"> 
    359                 <docbook in="build/docs/userguide/userguide.xml" out="build/docs/userguide/userguide.fo" style="${track.docbook.dir}/fo/docbook.xsl"> 
    360                         <arguments> 
    361                                 <arg line="-PARAM paper.type A4" /> 
    362                                 <arg line="-PARAM fop.extensions 1"/> 
    363                                 <arg line="-PARAM double.sided 1"/> 
    364                         </arguments> 
    365                 </docbook> 
    366  
    367                 <taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop"> 
    368                         <classpath> 
    369                                 <fileset dir="lib/build-docbook" includes="*.jar"/> 
    370                         </classpath> 
    371                 </taskdef> 
    372                 <fop format="application/pdf" fofile="build/docs/userguide/userguide.fo" outfile="build/docs/userguide/userguide.pdf" basedir="build/docs/userguide" /> 
    373         </target> 
    374  
    375         <target name="build.docs.xref.check"> 
    376                 <uptodate property="build.docs.xref.notRequired" targetfile="build/docs/xref/.touch"> 
    377                         <srcfiles dir="source"> 
    378                                 <include name="**/*.java" /> 
    379                         </srcfiles> 
    380                 </uptodate> 
    381         </target> 
    382  
    383         <target name="build.docs.xref" depends="build.docs.xref.check" unless="build.docs.xref.notRequired"> 
    384         <ivy:retrieve pattern="lib/[conf]/[artifact].[ext]" conf="build-antjxr" /> 
    385     <unzip dest="lib/build-antjxr"> 
    386         <fileset dir="lib/build-antjxr" includes="ant-jxr-data*.zip"/> 
    387     </unzip> 
    388     <taskdef name="jxr" classname="org.kolaka.ant.jxr.Jxr"> 
    389                         <classpath> 
    390                                 <fileset dir="lib/build-antjxr"/> 
    391                         </classpath>     
    392     </taskdef> 
    393  
    394                 <mkdir dir="build/docs/xref" /> 
    395  
    396                 <jxr sourcedir="source" destdir="build/docs/xref" templatedir="lib/build-antjxr/templates" windowTitle="Kolaka - FreeCast" docTitle="FreeCast" bottom="Copyright 2004-2006. Alban Peignier" /> 
    397  
    398                 <copy todir="build/docs/xref"> 
    399                         <fileset dir="lib/build-antjxr/resources" /> 
    400                 </copy> 
    401  
    402                 <touch file="build/docs/xref/.touch" /> 
    403         </target> 
    404  
    405         <target name="build.docs.coverage.check"> 
    406                 <uptodate property="build.docs.coverage.notRequired" targetfile="build/docs/coverage/.touch"> 
    407                         <srcfiles dir="source"> 
    408                                 <include name="**/*.java" /> 
    409                         </srcfiles> 
    410                         <srcfiles dir="${build.core.classes.dir}" /> 
    411                 </uptodate> 
    412         </target> 
    413  
    414         <target name="build.docs.coverage" depends="prepare.libraries, build.test, build.docs.coverage.check" unless="build.docs.coverage.notRequired" if="build.docs.coverage.required"> 
    415                 <taskdef resource="tasks.properties"> 
    416                         <classpath refid="path.coverage" /> 
    417                 </taskdef> 
    418  
    419                 <mkdir dir="build/coverage" /> 
    420  
    421                 <instrument todir="build/coverage"> 
    422                         <ignore regex="org.apache.log4j.*" /> 
    423                         <fileset dir="${build.core.classes.dir}"> 
    424                                 <include name="**/*.class" /> 
    425                                 <exclude name="**/test/*.class" /> 
    426                                 <exclude name="**/Main.class" /> 
    427                                 <exclude name="**/swing/*.class" /> 
    428                                 <exclude name="**/*Exception.class" /> 
    429                                 <exclude name="**/RMITracker_*.class" /> 
    430                         </fileset> 
    431                 </instrument> 
    432  
    433                 <mkdir dir="build/docs/coverage" /> 
    434                 <junit printsummary="no" haltonfailure="no" includeantruntime="yes" fork="yes"> 
    435                         <batchtest todir="build/docs/coverage"> 
    436                                 <fileset dir="source"> 
    437                                         <include name="**/test/*Test.java" /> 
    438                                         <include name="**/test/*TestSuite.java" /> 
    439                                         <exclude name="**/test/*BaseTest.java" /> 
    440                                 </fileset> 
    441                         </batchtest> 
    442                         <classpath> 
    443                                 <pathelement path="build/coverage" /> 
    444                                 <pathelement path="${build.core.classes.dir}" /> 
    445                                 <pathelement path="${build.test.classes.dir}" /> 
    446                                 <path refid="path.coverage" /> 
    447                         </classpath> 
    448                 </junit> 
    449  
    450                 <report srcdir="source" destdir="build/docs/coverage" /> 
    451  
    452                 <touch file="build/docs/coverage/.touch" /> 
    453         </target> 
    454  
    455  
    456  
    457         <target name="build.www"> 
    458                 <property name="build.www.dir" location="build/www" /> 
    459                 <mkdir dir="${build.www.dir}" /> 
    460  
    461                 <property name="source.www.dir" location="source/org/kolaka/freecast/www" /> 
    462                 <patternset id="build.www.xml.patternset"> 
    463                         <include name="*.xml" /> 
    464                         <exclude name="start*.xml" /> 
    465                 </patternset> 
    466  
    467                 <xmlvalidate lenient="true" failonerror="true" warn="true"> 
    468                         <fileset dir="${source.www.dir}"> 
    469                                 <include name="*.xml" /> 
    470                         </fileset> 
    471                 </xmlvalidate> 
    472  
    473                 <xslt basedir="${source.www.dir}" destdir="${build.www.dir}" style="${source.www.dir}/template.xsl"> 
    474                         <param name="lang" expression="en" /> 
    475                         <mapper type="glob" from="*.xml" to="*.html.en" /> 
    476                         <patternset refid="build.www.xml.patternset" /> 
    477                 </xslt> 
    478                 <xslt basedir="${source.www.dir}" destdir="${build.www.dir}" style="${source.www.dir}/template.xsl"> 
    479                         <param name="lang" expression="fr" /> 
    480                         <mapper type="glob" from="*.xml" to="*.html.fr" /> 
    481                         <patternset refid="build.www.xml.patternset" /> 
    482                 </xslt> 
    483                 <xslt basedir="${source.www.dir}" destdir="${build.www.dir}" style="${source.www.dir}/template.xsl"> 
    484                         <param name="lang" expression="es" /> 
    485                         <mapper type="glob" from="*.xml" to="*.html.es" /> 
    486                         <patternset refid="build.www.xml.patternset" /> 
    487                 </xslt> 
    488  
    489                 <copy todir="${build.www.dir}"> 
    490                         <fileset dir="${source.www.dir}"> 
    491                                 <include name="robots.txt" /> 
    492                                 <include name="**/*.css" /> 
    493                                 <include name="**/*.png" /> 
    494                                 <include name="**/*.png.*" /> 
    495                                 <include name="**/*.jpg" /> 
    496                                 <include name="**/*.gif" /> 
    497                                 <include name="**/*.ico" /> 
    498                                 <include name="**/start*.*" /> 
    499                                 <include name="**/jnlp.*" /> 
    500                                 <include name="**/reference.php" /> 
    501                                 <include name="js/*" /> 
    502                         </fileset> 
    503                 </copy> 
    504  
    505                 <macrodef name="thumbnails"> 
    506                         <attribute name="dest" /> 
    507                         <element name="filesets" /> 
    508                         <sequential> 
    509                                 <apply executable="convert" dest="@{dest}" failonerror="true" verbose="true"> 
    510                                         <arg line="-geometry 200x200" /> 
    511                                         <srcfile /> 
    512                                         <targetfile /> 
    513                                         <filesets /> 
    514                                         <mapper type="regexp" from="^(.*)\.([^.]*)" to="\1-thumb.\2" /> 
    515                                 </apply> 
    516                         </sequential> 
    517                 </macrodef> 
    518  
    519                 <thumbnails dest="${build.www.dir}"> 
    520                         <filesets> 
    521                                 <fileset dir="${source.www.dir}"> 
    522                                         <include name="images/screenshots/*.png" /> 
    523                                 </fileset> 
    524                         </filesets> 
    525                 </thumbnails> 
    526         </target> 
    527  
    528         <target name="build.win32" depends="build.win32.jre"> 
    529                 <copy todir="build/win32"> 
    530                         <fileset dir="source/org/kolaka/freecast/nsis" /> 
    531                         <filterset> 
    532                                 <filter token="project.version" value="${project.version}" /> 
    533                         </filterset> 
    534                 </copy> 
    535         </target> 
    536  
    537         <target name="build.win32.jre" unless="build.win32.jre.notRequired"> 
    538                 <mkdir dir="build/win32" /> 
    539                 <get dest="build/win32/jre-setup.exe" src="${export.win32.jresetup.url}" usetimestamp="true" /> 
    540         </target> 
    54191 
    54292        <target name="test" depends="build.test" description="Run the unit tests"> 
     
    572122 
    573123        <target name="dist.bin"> 
    574                 <copy tofile="dist/bin/freecast" file="source/org/kolaka/freecast/freecast-template.sh"> 
    575                         <filterset> 
    576                                 <filter token="app.name" value="freecast" /> 
    577                                 <filter token="app.mainclass" value="org.kolaka.freecast.node.cli.Main" /> 
    578                         </filterset> 
    579                 </copy> 
    580  
    581                 <copy tofile="dist/bin/freecast-tracker" file="source/org/kolaka/freecast/freecast-template.sh"> 
    582                         <filterset> 
    583                                 <filter token="app.name" value="freecast-tracker" /> 
    584                                 <filter token="app.mainclass" value="org.kolaka.freecast.tracker.Main" /> 
    585                         </filterset> 
    586                 </copy> 
    587  
    588                 <copy tofile="dist/bin/freecast-swing" file="source/org/kolaka/freecast/freecast-template.sh"> 
    589                         <filterset> 
    590                                 <filter token="app.name" value="freecast-swing" /> 
    591                                 <filter token="app.mainclass" value="org.kolaka.freecast.node.swing.Main" /> 
    592                         </filterset> 
    593                 </copy> 
    594  
    595                 <copy tofile="dist/bin/freecast-keygenerator" file="source/org/kolaka/freecast/freecast-template.sh"> 
    596                         <filterset> 
    597                                 <filter token="app.name" value="freecast-keygenerator" /> 
    598                                 <filter token="app.mainclass" value="org.kolaka.freecast.packet.signer.Main" /> 
    599                         </filterset> 
    600                 </copy> 
    601  
    602                 <copy tofile="dist/bin/freecast-manager" file="source/org/kolaka/freecast/freecast-template.sh"> 
    603                         <filterset> 
    604                                 <filter token="app.name" value="freecast-manager" /> 
    605                                 <filter token="app.mainclass" value="org.kolaka.freecast.manager.gui.Main" /> 
    606                         </filterset> 
    607                 </copy> 
    608  
    609                 <copy tofile="dist/bin/freecast.bat" file="source/org/kolaka/freecast/freecast-template.bat"> 
    610                         <filterset> 
    611                                 <filter token="app.name" value="freecast" /> 
    612                                 <filter token="app.mainclass" value="org.kolaka.freecast.node.cli.Main" /> 
    613                         </filterset> 
    614                 </copy> 
    615  
    616                 <copy tofile="dist/bin/freecast-tracker.bat" file="source/org/kolaka/freecast/freecast-template.bat"> 
    617                         <filterset> 
    618                                 <filter token="app.name" value="freecast-tracker" /> 
    619                                 <filter token="app.mainclass" value="org.kolaka.freecast.tracker.Main" /> 
    620                         </filterset> 
    621                 </copy> 
    622  
    623                 <copy tofile="dist/bin/freecast-keygenerator.bat" file="source/org/kolaka/freecast/freecast-template.bat"> 
    624                         <filterset> 
    625                                 <filter token="app.name" value="freecast-keygenerator" /> 
    626                                 <filter token="app.mainclass" value="org.kolaka.freecast.packet.signer.Main" /> 
    627                         </filterset> 
    628                 </copy> 
    629  
    630                 <copy tofile="dist/bin/freecast-swing.bat" file="source/org/kolaka/freecast/freecast-template.bat"> 
    631                         <filterset> 
    632                                 <filter token="app.name" value="freecast-swing" /> 
    633                                 <filter token="app.mainclass" value="org.kolaka.freecast.node.swing.Main" /> 
    634                         </filterset> 
    635                 </copy> 
    636  
    637                 <copy tofile="dist/bin/freecast-manager.bat" file="source/org/kolaka/freecast/freecast-template.bat"> 
    638                         <filterset> 
    639                                 <filter token="app.name" value="freecast-manager" /> 
    640                                 <filter token="app.mainclass" value="org.kolaka.freecast.manager.gui.Main" /> 
    641                         </filterset> 
    642                 </copy> 
     124                <macrodef name="binscript"> 
     125                        <attribute name="name"/> 
     126                        <attribute name="mainclass"/> 
     127                        <sequential> 
     128                                <filterset id="binscript.@{application}"> 
     129                                        <filter token="app.name" value="@{name}" /> 
     130                                        <filter token="app.mainclass" value="@{mainclass}" /> 
     131                                </filterset> 
     132                                <copy tofile="dist/bin/@{name}" file="source/org/kolaka/freecast/freecast-template.sh"> 
     133                                        <filterset refid="binscript.@{application}"/> 
     134                                </copy> 
     135                                <copy tofile="dist/bin/@{name}.bat" file="source/org/kolaka/freecast/freecast-template.bat"> 
     136                                        <filterset refid="binscript.@{application}"/> 
     137                                </copy> 
     138                        </sequential> 
     139                </macrodef> 
    643140                 
    644                 <copy tofile="dist/bin/freecast-setup" file="source/org/kolaka/freecast/freecast-template.sh"> 
    645                         <filterset> 
    646                                 <filter token="app.name" value="freecast" /> 
    647                                 <filter token="app.mainclass" value="org.kolaka.freecast.setup.Main" /> 
    648                         </filterset> 
    649                 </copy> 
    650                  
    651                 <copy tofile="dist/bin/freecast-setup.bat" file="source/org/kolaka/freecast/freecast-template.bat"> 
    652                         <filterset> 
    653                                 <filter token="app.name" value="freecast" /> 
    654                                 <filter token="app.mainclass" value="org.kolaka.freecast.setup.Main" /> 
    655                         </filterset> 
    656                 </copy> 
     141                <binscript name="freecast" mainclass="org.kolaka.freecast.node.cli.Main"/> 
     142                <binscript name="freecast-tracker" mainclass="org.kolaka.freecast.tracker.Main"/> 
     143                <binscript name="freecast-swing" mainclass="org.kolaka.freecast.node.swing.Main"/> 
     144                <binscript name="freecast-keygenerator" mainclass="org.kolaka.freecast.packet.signer.Main"/> 
     145                <binscript name="freecast-manager" mainclass="org.kolaka.freecast.manager.gui.Main"/> 
     146                <binscript name="freecast-setup" mainclass="org.kolaka.freecast.setup.Main"/> 
    657147 
    658148                <copy todir="dist/bin" file="source/org/kolaka/freecast/classpath.bat" /> 
     
    668158        <target name="dist.etc" depends="build.etc"> 
    669159          <mkdir dir="dist/etc"/> 
    670           <xmltidy dest="dist/etc"
    671                <filesets
     160          <!-- TODO restore tidy processing --
     161          <copy todir="dist/etc"
    672162                  <fileset dir="build/etc/complete" /> 
    673                 </filesets> 
    674           </xmltidy> 
    675         </target> 
    676  
    677         <target name="dist.docs" depends="build.docs, build.changelog"> 
    678                 <copy todir="dist/docs" includeEmptyDirs="false"> 
    679                         <fileset dir="build/docs"> 
    680                                 <exclude name="**/.touch" /> 
    681                                 <exclude name="userguide/**/*.xml" /> 
    682                                 <exclude name="userguide/**/*.xsl" /> 
    683                                 <exclude name="userguide/*.fo" /> 
    684                                 <exclude name="userguide/*.html" /> 
    685                         </fileset> 
    686                         <fileset dir="build/changelog" /> 
    687                 </copy> 
    688                 <tidy dest="dist/docs" failonerror="false"> 
    689                         <filesets> 
    690                                 <fileset dir="build/docs"> 
    691                                         <include name="userguide/*.html" /> 
    692                                 </fileset> 
    693                         </filesets> 
    694                 </tidy> 
    695  
    696                 <!-- TODO find a better way --> 
    697                 <mkdir dir="dist/docs/examples/audio"/> 
    698                 <mkdir dir="dist/docs/examples/video"/> 
    699                 <mkdir dir="dist/docs/examples/tracker"/> 
    700  
    701                 <xmltidy dest="dist/docs/examples"> 
    702                   <filesets> 
    703                         <fileset dir="source/org/kolaka/freecast/config/samples"> 
    704                                 <include name="**/*.xml" /> 
    705                         </fileset> 
    706                   </filesets> 
    707                 </xmltidy> 
    708  
    709                 <mkdir dir="dist/docs/examples/jws"/> 
    710                 <xmltidy dest="dist/docs/examples/jws"> 
    711                   <filesets> 
    712                         <fileset dir="source/org/kolaka/freecast/node/swing"> 
    713                                 <include name="config.xml" /> 
    714                                 <include name="descriptor.xml" /> 
    715                         </fileset> 
    716                   </filesets> 
    717                 </xmltidy> 
     163          </copy> 
    718164        </target> 
    719165 
     
    727173                        </fileset> 
    728174                </copy> 
    729                 <copy todir="dist/lib/linux"> 
    730                         <fileset dir="lib/runtime" includes="jdic-stub-linux.jar"/> 
    731                 </copy> 
    732                 <copy todir="dist/lib/windows"> 
    733                         <fileset dir="lib/runtime" includes="jdic-stub-windows.jar"/> 
    734                 </copy> 
    735                 <copy todir="dist/lib/sunos"> 
    736                         <fileset dir="lib/runtime" includes="jdic-stub-sunos.jar"/> 
    737                 </copy> 
    738                          
    739                 <patternset id="patternset.nometainf"> 
    740                         <exclude name="META-INF/**"/> 
    741                 </patternset> 
    742  
    743                 <unjar dest="dist/lib/linux/x86"> 
    744                         <fileset dir="lib/runtime" includes="*-native-linux-x86.jar"/> 
    745                         <patternset refid="patternset.nometainf"/> 
    746                 </unjar> 
    747                 <unjar dest="dist/lib/windows/x86"> 
    748                         <fileset dir="lib/runtime" includes="*-native-windows-x86.jar"/> 
    749                         <patternset refid="patternset.nometainf"/> 
    750                 </unjar> 
    751                 <unjar dest="dist/lib/sunos/x86"> 
    752                         <fileset dir="lib/runtime" includes="*-native-sunos-x86.jar"/> 
    753                         <patternset refid="patternset.nometainf"/> 
    754                 </unjar> 
    755                 <unjar dest="dist/lib/sunos/sparc"> 
    756                         <fileset dir="lib/runtime" includes="*-native-sunos-sparc.jar"/> 
    757                         <patternset refid="patternset.nometainf"/> 
    758                 </unjar> 
    759                  
    760                 <copy todir="dist/lib/linux/x86"> 
    761                         <fileset dir="${track.tritonus.dir}"> 
    762                                 <include name="*.so" /> 
    763                         </fileset> 
    764                 </copy> 
    765                 <copy todir="dist/lib/windows/x86" flatten="true"> 
    766                         <fileset dir="${track.tritonus.dir}"> 
    767                                 <include name="**/*.dll" /> 
    768                         </fileset> 
    769                 </copy> 
    770         </target> 
    771  
    772         <target name="dist.jws.check"> 
    773                 <available file="${dist.jws.keystore}" property="dist.jws.possible" /> 
    774         </target> 
    775  
    776         <target name="dist.jws.libfreecast" depends="prepare.version, build.etc, dist.jar, dist.lib, dist.jws.check" if="dist.jws.possible"> 
    777                 <property name="dist.jws.libfreecast.dir" value="dist/jws/libfreecast" /> 
    778                 <property name="dist.jws.codebase" value="http://download.freecast.org/jws/libfreecast/"/> 
    779                  
    780                 <copy tofile="${dist.jws.libfreecast.dir}/libfreecast-${project.version}.jnlp" file="source/org/kolaka/freecast/node/swing/libfreecast.jnlp"> 
    781                         <filterset> 
    782                                 <filter token="project.version" value="${project.version}" /> 
    783                                 <filter token="codebase" value="${dist.jws.codebase}" /> 
    784                         </filterset> 
    785                 </copy> 
    786                 <copy tofile="${dist.jws.libfreecast.dir}/freecast-manager.jnlp" file="source/org/kolaka/freecast/manager/gui/freecast-manager.jnlp"> 
    787                         <filterset> 
    788