<!--

   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

-->
<!--


              A p a c h e   B a t i k   B u i l d   S y s t e m



Build Tools
..............................................................................

The Batik build system is based on Apache Ant, which is a Java building tool
used in Apache projects.
For more information refer to <http://ant.apache.org/>.

The distribution contains a precompiled version of Ant.

The only thing that you have to make sure, is that the "JAVA_HOME" environment
property should be set to match the JVM you want to use. 

If you are going to be doing development you may want to create a file
called 'build.properties' with the line 'debug=on' in it.  This will 
turn on the generation of debugging information when compiling Batik.

Building Instructions
..............................................................................

First, make sure your current working directory is where this file is located.
Then type:

  [unix]  ant compile
  [win32] .\build.bat compile

This action will compile the sources to the 'classes' directory.

You can now launch the SVG browser by typing:

  [unix]  ant squiggle
  [win32] .\build.bat squiggle


Build Targets
..............................................................................

To display the available targets type:

  [unix]  ant help
  [win32] .\build.bat help

 
 $Id$

-->

<project default="help" name="batik" basedir=".">

  <!-- Configuring the build -->
  <property environment="env"/>
  <property file="${basedir}/build-local.properties"/>
  <property file="${basedir}/build.properties"/>

  <!-- Initializations .................................................... -->
  <target name="init">
    <tstamp>
      <format property="ts" pattern="yyyyMMdd-HHmmss-z"/>
    </tstamp>
    <property name="Project"            value="Apache Batik" />
    <property name="project"            value="batik" />
    <property name="year"               value="2025" />
    <property name="version"            value="1.19" />
    <property name="revisionType"       value="" />
    <property name="revisionNumber"     value="" />
    <property name="completeVersion"    value="${version}${revisionType}${revisionNumber}" />
    <property name="xgcVersion"         value="2.11" />
    <property name="fopVersion"         value="2.11" />
    <property name="vendor"             value="The Apache Software Foundation (http://xmlgraphics.apache.org/batik/)" />
    <property name="debug"              value="on"/>
    <property name="optimize"           value="on"/>
    <property name="deprecation"        value="on"/>
    <property name="javac.source" value="1.8"/>
    <property name="javac.target" value="1.8"/>
    <property name="src"                value="sources"/>
    <property name="src-internal-codec" value="sources-internal-codec"/>
    <property name="resources"          value="resources"/>
    <property name="testsrc"            value="batik-test-old/src/test/java"/>
    <property name="testresources"      value="test-resources"/>
    <property name="dest"               value="classes"/>
    <property name="dest-internal-codec" value="classes-internal-codec"/>
    <property name="build"              value="${project}-${completeVersion}"/>
    <property name="build.id"           value="${ts} (${user.name} [${os.name} ${os.version} ${os.arch}, Java ${java.runtime.version}])"/>
    <property name="docs"               value="${build}/docs"/>
    <property name="forrest-build"      value="${build}/forrest"/>
    <property name="app"                value="${build}/Squiggle.app"/>
    <property name="dmg"                value="${build}/Squiggle-${completeVersion}.dmg"/>
    <property name="lib"                value="lib"/>
    <property name="samples"            value="samples"/>
    <property name="package-prefix"     value="org/apache/${project}"/>
  
    <property name="class-prefix"       value="org.apache.${project}"/>
  
    <property name="dom.javadoc"        value="http://www.w3.org/2003/01/dom2-javadoc/"/>
    <property name="jdk.javadoc"        value="http://docs.oracle.com/javase/7/docs/api/"/>
    <property name="rhino.javadoc"      value="http://www.mozilla.org/rhino/apidocs/"/>
  
    <property name="site"               value="site"/>
  
    <property name="test-reports"       value="test-reports"/>
    <property name="test-references"    value="test-references"/>
    <property name="test-resources"     value="test-resources"/>
  
    <!-- For site deployment -->
    <property name="deploy.svn.url"     value="https://svn.apache.org/repos/asf/xmlgraphics/site/deploy/batik"/>
    <property name="build.site-dir"     value="${site}"/>
    
    <property name="copy.dependencies.arg" value=""/>
    
    <condition property="isWindows">
      <os family="windows" />
    </condition>
    <condition property="isUnix">
      <os family="unix" />
    </condition>    
    
    <path id="source.files">
        <pathelement path="batik-anim/src/main/java"/>
        <pathelement path="batik-awt-util/src/main/java"/>
        <pathelement path="batik-bridge/src/main/java"/>
        <pathelement path="batik-codec/src/main/java"/>
        <pathelement path="batik-constants/src/main/java"/>
        <pathelement path="batik-css/src/main/java"/>
        <pathelement path="batik-dom/src/main/java"/>
        <pathelement path="batik-ext/src/main/java"/>
        <pathelement path="batik-extension/src/main/java"/>
        <pathelement path="batik-gui-util/src/main/java"/>
        <pathelement path="batik-gvt/src/main/java"/>
        <pathelement path="batik-i18n/src/main/java"/>
        <pathelement path="batik-parser/src/main/java"/>
        <pathelement path="batik-rasterizer/src/main/java"/>
        <pathelement path="batik-rasterizer-ext/src/main/java"/>
        <pathelement path="batik-script/src/main/java"/>
        <pathelement path="batik-slideshow/src/main/java"/>
        <pathelement path="batik-squiggle/src/main/java"/>
        <pathelement path="batik-svg-dom/src/main/java"/>
        <pathelement path="batik-svgbrowser/src/main/java"/>
        <pathelement path="batik-svggen/src/main/java"/>
        <pathelement path="batik-svgpp/src/main/java"/>
        <pathelement path="batik-svgrasterizer/src/main/java"/>
        <pathelement path="batik-swing/src/main/java"/>
        <pathelement path="batik-transcoder/src/main/java"/>
        <pathelement path="batik-ttf2svg/src/main/java"/>
        <pathelement path="batik-util/src/main/java"/>
        <pathelement path="batik-xml/src/main/java"/>
    </path>
  
    <pathconvert property="cwd">
      <path path="."/>
    </pathconvert>
  
    <path id="libs-classpath">
      <fileset dir="lib">
        <include name="*.jar"/>
      </fileset>
    </path>
  
    <path id="libs-build-classpath">
      <fileset dir="lib/build">
        <include name="stylebook*.jar"/>
      </fileset>
      <fileset dir="lib">
        <include name="xalan*.jar"/>
        <include name="xerces*.jar"/>
        <include name="xml-apis-1.3.04.jar"/>
        <include name="xml-apis-ext-1.3.04.jar"/>
        <include name="serializer-2.7.2.jar"/>
        <include name="xmlgraphics-commons*.jar"/>
      </fileset>
    </path>
  
    <available property="rhino.present" classname="org.mozilla.javascript.Context">
      <classpath refid="libs-classpath"/>
    </available>
    <available property="jpython.present" classname="org.python.util.PythonInterpreter">
      <classpath refid="libs-classpath"/>
    </available>
    <available property="jacl.present" classname="tcl.lang.Interp">
      <classpath refid="libs-classpath"/>
    </available>
    
    <!-- When compiling Batik under GNU Classpath, the Sun codecs are not available. -->
    <condition property="sun-codecs.present">
      <and>
        <available classname="com.sun.image.codec.jpeg.JPEGCodec" 
                   classpathref="libs-classpath"/>
        <!-- This became quite tricky in JDK 7, as the Sun codecs were "retired"
             (they are available in run-time although the "classes are not located when compiling")
             http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6527962 -->
        <not>
            <and>
                <equals arg1="${java.specification.vendor}" arg2="Oracle Corporation"/>
                <or>
                    <!-- According to Sun issue 6527962, the classes are to be completely removed in JDK 8
                         (so there should be no need to extend this list any longer) -->
                    <equals arg1="${java.specification.version}" arg2="1.7"/>
                    <equals arg1="${java.specification.version}" arg2="1.8"/>
                </or>
            </and>
        </not>
        <not>
          <equals arg1="${sun-codecs.disabled}" arg2="true"/>
        </not>
      </and>
    </condition>

    <condition property="javadoc-exclusion-rhino"
               value="org.apache.batik.script.rhino">
      <not>
        <equals arg1="${rhino.present}" arg2="true"/>
      </not>
    </condition>
    <condition property="javadoc-exclusion-jpython"
               value="org.apache.batik.script.jpython">
      <not>
        <equals arg1="${jpython.present}" arg2="true"/>
      </not>
    </condition>
    <condition property="javadoc-exclusion-jacl"
               value="org.apache.batik.script.jacl">
      <not>
        <equals arg1="${jacl.present}" arg2="true"/>
      </not>
    </condition>
  
    <property name="javadoc-exclusions"
              value="${javadoc-exclusion-rhino},${javadoc-exclusion-jpython},${javadoc-exclusion-jacl}"/>
  
    <uptodate property="IWasLoadedUpToDate" 
     targetfile="${testresources}/org/apache/batik/bridge/IWasLoaded.jar">
     <srcfiles dir="${testresources}/org/apache/batik/bridge"
               includes="IWasLoaded.java"/>
    </uptodate>
  
    <uptodate property="IWasLoadedTooUpToDate" 
     targetfile="${testresources}/org/apache/batik/bridge/IWasLoadedToo.jar">
     <srcfiles dir="${testresources}/org/apache/batik/bridge"
               includes="IWasLoadedToo.java"/>
    </uptodate>
  
    <condition property="forrest.call" value="cmd" else="${env.FORREST_HOME}/bin/forrest">
      <os family="windows"/>
    </condition>
  
    <condition property="forrest.args" value="/c &quot;${env.FORREST_HOME}\bin\forrest.bat&quot;" else="">
      <os family="windows"/>
    </condition>
  
    <!-- Info ............................................................... -->
    <echo message=" == ${Project} ${completeVersion} build file ================================"/>
    <echo message=""/>
    <echo message="    JAVA_HOME: ${env.JAVA_HOME}"/>
    <echo message="    VM:        ${java.vm.version}, ${java.vm.vendor}"/>
  </target>

  <!-- Help ............................................................... -->
  <target name="help" depends="init" description="Displays the usage">
    <echo message=""/>
    <echo message="The following build targets are available:"/>
    <echo message=""/>
    <echo message=" -- Running -------------------------------------------------------"/>
    <echo message=""/>
    <echo message="    squiggle"/>
    <echo message="        Runs the Squiggle SVG browser application."/>
    <echo message=""/>
    <echo message="    svgrasterizer"/>
    <echo message="        Runs the SVG rasterizer application."/>
    <echo message=""/>
    <echo message="    svgpp"/>
    <echo message="        Runs the SVG pretty-printer application."/>
    <echo message=""/>
    <echo message="    ttf2svg"/>
    <echo message="        Runs the TrueType Font to SVG Font convert application."/>
    <echo message=""/>
    <echo message=" -- Building ------------------------------------------------------"/>
    <echo message=""/>
    <echo message="    dist-zip"/>
    <echo message="        Builds the binary, source and documentation distributions"/>
    <echo message="        as ZIP files."/>
    <echo message="        (Creates ${project}-${completeVersion}.zip, ${project}-docs-${completeVersion}.zip"/>
    <echo message="        and ${project}-src-${completeVersion}.zip.)"/>
    <echo message=""/>
    <echo message="    dist-tgz"/>
    <echo message="        Builds the binary, source and documentation distributions"/>
    <echo message="        as .tar.gz files."/>
    <echo message="        (Creates ${project}-${completeVersion}.tar.gz, ${project}-docs-${completeVersion}.tar.gz"/>
    <echo message="        and ${project}-src-${completeVersion}.tar.gz.)"/>
    <echo message=""/>
    <echo message="    appbundle"/>
    <echo message="        Builds the Mac OS X Squiggle application bundle."/>
    <echo message="        (Creates ${app}.)"/>
    <echo message=""/>
    <echo message="    dmg"/>
    <echo message="        Builds the Mac OS X Squiggle application bundle disk image."/>
    <echo message="        (Creates ${dmg}.)"/>
    <echo message=""/>
    <echo message="    compile"/>
    <echo message="        Compiles all of Batik except the test infrastructure."/>
    <echo message="        (Creates class files in classes/ from files in sources/.)"/>
    <echo message=""/>
    <echo message="    compiletest"/>
    <echo message="        Compiles the Batik test infrastructure."/>
    <echo message="        (Creates class files in classes/ from files in"/>
    <echo message="        test-sources/.)"/>
    <echo message=""/>
    <echo message="    jars"/>
    <echo message="        Builds jar files for all Batik libraries and applications."/>
    <echo message="        (Creates ${build}/.)"/>
    <echo message=""/>
    <echo message="    all-jar"/>
    <echo message="        Builds a single jar that contains all Batik libraries."/>
    <echo message="        (Creates ${build}/lib/${project}-all.jar.)"/>
    <echo message=""/>
    <echo message="    javadoc"/>
    <echo message="        Generates the API documentation."/>
    <echo message="        (Creates ${docs}/javadoc/.)"/>
    <echo message=""/>
    <echo message="    site"/>
    <echo message="        Generates the http://xmlgraphics.apache.org/batik/ site,"/>
    <echo message="        including Javadocs."/>
    <echo message="        (Creates ${site}/.)"/>
    <echo message=""/>
    <echo message="    sitedoc"/>
    <echo message="        Generates the http://xmlgraphics.apache.org/batik/ site,"/>
    <echo message="        excluding Javadocs."/>
    <echo message="        (Creates ${site}/.)"/>
    <echo message=""/>
    <echo message="    html"/>
    <echo message="        Generates the HTML documentation, including Javadocs."/>
    <echo message="        (Creates ${docs}/.)"/>
    <echo message=""/>
    <echo message="    htmldoc"/>
    <echo message="        Generates the HTML documentation, excluding Javadocs."/>
    <echo message="        (Creates ${docs}/.)"/>
    <echo message=""/>
    <echo message="    splash"/>
    <echo message="        Regenerates the Squiggle browser splash screen."/>
    <echo message=""/>
    <echo message="    clean"/>
    <echo message="        Removes all output files and directories."/>
    <echo message="    "/>
    <echo message=" -- Testing -------------------------------------------------------"/>
    <echo message=""/>
    <echo message="    regard"/>
    <echo message="        Runs the Regard regression testing tool for all tests that"/>
    <echo message="        need no user interaction."/>
    <echo message="        (Creates HTML test reports in test-reports/.)"/>
    <echo message=""/>
    <echo message="    regard.manual"/>
    <echo message="        Runs the Regard regression testing tool for all test that"/>
    <echo message="        need user interaction."/>
    <echo message="        (Creates HTML test reports in test-reports/.)"/>
    <echo message=""/>
    <echo message="    runtestsuite"/>
    <echo message="        Runs a test suite, given an XML test suite document."/>
    <echo message=""/>
    <echo message="    runtest"/>
    <echo message="        Runs an individual test, given a class name."/>
    <echo message=""/>
    <echo message="    showpainter"/>
    <echo message="        Runs an SVG Generator painter test, given a class name."/>
    <echo message=""/>
    <echo message="See the comments in the build.xml file for more details."/>
  </target>

  <!-- Build .............................................................. -->
  <target name="dist-zip" depends="build-zip"/>
  <target name="build-zip" depends="doc-zip, bin-zip, src-zip"/>

  <target name="doc-zip" depends="init, html">
    <delete dir="${build}/docs/images/BE"/>
    <zip zipfile="${project}-docs-${completeVersion}.zip" basedir="${build}"
         includes="docs/javadoc/**"/>
    <delete dir="${build}/docs/javadoc"/>
  </target>

  <target name="copy-shared-resources">
    <copy todir="${basedir}">
      <fileset dir="${basedir}/batik-shared-resources/src/main/resources">
        <include name="LICENSE"/>
        <include name="NOTICE"/>
      </fileset>
    </copy>
  </target>

  <target name="clean-shared-resources">
    <delete file="${basedir}/LICENSE" failonerror="false"/>
    <delete file="${basedir}/NOTICE" failonerror="false"/>
  </target>

  <target name="bin-zip" depends="init, copy-shared-resources, jars, bundle-script">
    <zip zipfile="${project}-bin-${completeVersion}.zip">
      <zipfileset dir="." prefix="${project}-${completeVersion}">
        <include name="LICENSE"/>
        <include name="NOTICE"/>
        <include name="README"/>
        <include name="CHANGES"/>
      </zipfileset>
      <zipfileset dir="${build}" prefix="${project}-${completeVersion}">
        <include name="*.jar"/>
        <include name="docs/**"/>
        <include name="extensions/**"/>
        <include name="lib/*.jar"/>
        <exclude name="lib/junit*.jar"/>
        <exclude name="lib/hamcrest*.jar"/>
        <include name="lib/make-squiggle-app.sh"/>
      </zipfileset>
      <zipfileset dir="lib" prefix="${project}-${completeVersion}/lib">
        <include name="LICENSE.*.txt"/>
        <include name="README.*.txt"/>
        <include name="NOTICE.*.txt"/>
      </zipfileset>
      <zipfileset dir="batik-extension/src/main/resources/${package-prefix}/extensions"
                  prefix="${project}-${completeVersion}/extensions">
        <include name="README.txt"/>
      </zipfileset>
      <zipfileset dir="${src}" prefix="${project}-${completeVersion}/lib">
        <include name="Squiggle.icns"/>
      </zipfileset>
      <zipfileset dir="." includes="samples/**" prefix="${project}-${completeVersion}"/>
    </zip>
  </target>

  <target name="src-zip" depends="init, copy-shared-resources, record-svn-revision">
    <zip zipfile="${project}-src-${completeVersion}.zip">
      <zipfileset dir="." prefix="${project}-${completeVersion}">
        <include name="LICENSE"/>
        <include name="KEYS"/>
        <include name="MAINTAIN"/>
        <include name="NOTICE"/>
        <include name="README"/>
        <include name="CHANGES"/>
        <include name="build.bat"/>
        <include name="build.sh"/>
        <include name="build.xml"/>
        <include name="**/pom.xml"/>
        <include name="forrest.properties"/>
        <include name="svn-revision"/>
        <include name="contrib/**"/>
        <include name="lib/**"/>
        <exclude name="lib/junit*.jar"/>
        <exclude name="lib/hamcrest*.jar"/>
        <include name="documentation-sources/**"/>
        <include name="resources/**"/>
        <include name="samples/**"/>
        <include name="*/src/**"/>
        <include name="test-resources/**"/>
        <include name="test-sources/**"/>
      </zipfileset>
    </zip>
    <delete file="svn-revision" failonerror="false"/>
  </target>

  <target name="dist-tgz" depends="build-tgz"/>
  <target name="build-tgz" depends="doc-tgz, bin-tgz, src-tgz"/>

  <target name="doc-tgz" depends="init, html">
    <delete dir="${build}/docs/images/BE"/>
    <tar tarfile="${project}-docs-${completeVersion}.tar.gz" compression="gzip"
         basedir="${build}" includes="docs/javadoc/**"/>
    <delete dir="${build}/docs/javadoc"/>
  </target>

  <target name="bin-tgz" depends="init, copy-shared-resources, jars, bundle-script">
    <tar tarfile="${project}-bin-${completeVersion}.tar.gz" compression="gzip">
      <tarfileset dir="." prefix="${project}-${completeVersion}">
        <include name="LICENSE"/>
        <include name="NOTICE"/>
        <include name="README"/>
        <include name="CHANGES"/>
      </tarfileset>
      <tarfileset dir="${build}" prefix="${project}-${completeVersion}">
        <include name="*.jar"/>
        <include name="docs/**"/>
        <include name="extensions/**"/>
        <include name="lib/*.jar"/>
        <exclude name="lib/junit*.jar"/>
        <exclude name="lib/hamcrest*.jar"/>
        <include name="lib/make-squiggle-app.sh"/>
      </tarfileset>
      <tarfileset dir="lib" prefix="${project}-${completeVersion}/lib">
        <include name="LICENSE.*.txt"/>
        <include name="README.*.txt"/>
        <include name="NOTICE.*.txt"/>
      </tarfileset>
      <tarfileset dir="batik-extension/src/main/resources/${package-prefix}/extensions"
                  prefix="${project}-${completeVersion}/extensions">
        <include name="README.txt"/>
      </tarfileset>
      <tarfileset dir="${src}" prefix="${project}-${completeVersion}/lib">
        <include name="Squiggle.icns"/>
      </tarfileset>
      <tarfileset dir="." includes="samples/**" prefix="${project}-${completeVersion}"/>
    </tar>
  </target>

  <target name="src-tgz" depends="init, copy-shared-resources, record-svn-revision">
    <tar tarfile="${project}-src-${completeVersion}.tar.gz" compression="gzip">
      <tarfileset dir="." prefix="${project}-${completeVersion}">
        <include name="LICENSE"/>
        <include name="KEYS"/>
        <include name="MAINTAIN"/>
        <include name="NOTICE"/>
        <include name="README"/>
        <include name="CHANGES"/>
        <include name="build.bat"/>
        <include name="build.sh"/>
        <include name="build.xml"/>
        <include name="**/pom.xml"/>
        <include name="forrest.properties"/>
        <include name="svn-revision"/>
        <include name="contrib/**"/>
        <include name="lib/**"/>
        <exclude name="lib/junit*.jar"/>
        <exclude name="lib/hamcrest*.jar"/>
        <include name="documentation-sources/**"/>
        <include name="resources/**"/>
        <include name="samples/**"/>
        <include name="*/src/**"/>
        <include name="test-resources/**"/>
        <include name="test-sources/**"/>
      </tarfileset>
    </tar>
    <delete file="svn-revision" failonerror="false"/>
  </target>
  
  <target name="release-dist" depends="dist-zip,dist-tgz" description="Generates the distribution package and signs the release">
    <input message="Passphrase for your default private key" addproperty="pwd">
      <handler classname="org.apache.tools.ant.input.SecureInputHandler" />
    </input>
    <antcall target="sha512">
      <param name="sign.archive" value="${project}-docs-${completeVersion}.zip"/>
    </antcall>
    <antcall target="sign-file">
      <param name="sign.archive" value="${project}-docs-${completeVersion}.zip"/>
      <param name="pwd" value="${pwd}"/>
    </antcall>
    <antcall target="sha512">
      <param name="sign.archive" value="${project}-docs-${completeVersion}.tar.gz"/>
    </antcall>
    <antcall target="sign-file">
      <param name="sign.archive" value="${project}-docs-${completeVersion}.tar.gz"/>
      <param name="pwd" value="${pwd}"/>
    </antcall>   
    <antcall target="sha512">
      <param name="sign.archive" value="${project}-bin-${completeVersion}.zip"/>
    </antcall>
    <antcall target="sign-file">
      <param name="sign.archive" value="${project}-bin-${completeVersion}.zip"/>
      <param name="pwd" value="${pwd}"/>
    </antcall>
    <antcall target="sha512">
      <param name="sign.archive" value="${project}-bin-${completeVersion}.tar.gz"/>
    </antcall>
    <antcall target="sign-file">
      <param name="sign.archive" value="${project}-bin-${completeVersion}.tar.gz"/>
      <param name="pwd" value="${pwd}"/>
    </antcall> 
    <antcall target="sha512">
      <param name="sign.archive" value="${project}-src-${completeVersion}.zip"/>
    </antcall>
    <antcall target="sign-file">
      <param name="sign.archive" value="${project}-src-${completeVersion}.zip"/>
      <param name="pwd" value="${pwd}"/>
    </antcall>
    <antcall target="sha512">
      <param name="sign.archive" value="${project}-src-${completeVersion}.tar.gz"/>
    </antcall>
    <antcall target="sign-file">
      <param name="sign.archive" value="${project}-src-${completeVersion}.tar.gz"/>
      <param name="pwd" value="${pwd}"/>
    </antcall>     
  </target>  
  
  <target name="sha512">
    <property name="sha512sum.exec" value="sha512sum"/>
    <property name="sha512sum.options" value=""/>
    <exec executable="${sha512sum.exec}" output="${sign.archive}.sha512">
      <arg line="${sha512sum.options} ${sign.archive}"/>
    </exec>
  </target>
  
  <target name="sign-file">
    <property name="gpg.exec" value="gpg"/>
    <property name="gpg.options" value="--armor --detach-sign --force-v3-sigs --batch --verbose --passphrase-fd 0"/>
    <delete file="${sign.archive}.asc"/>
    <exec executable="${gpg.exec}" inputstring="${pwd}">
      <arg line="${gpg.options} ${sign.archive}"/>
    </exec>
  </target>  

  <target name="src-jar" depends="init, copy-shared-resources, record-svn-revision">
    <jar jarfile="${build}/lib/${project}-src-${completeVersion}.jar">
      <fileset dir=".">
        <include name="LICENSE"/>
        <include name="KEYS"/>
        <include name="MAINTAIN"/>
        <include name="NOTICE"/>
        <include name="README"/>
        <include name="CHANGES"/>
        <include name="build.bat"/>
        <include name="build.sh"/>
        <include name="build.xml"/>
        <include name="forrest.properties"/>
        <include name="svn-revision"/>
        <include name="contrib/**"/>
        <include name="lib/**"/>
        <exclude name="lib/junit*.jar"/>
        <exclude name="lib/hamcrest*.jar"/>
        <include name="documentation-sources/**"/>
        <include name="resources/**"/>
        <include name="samples/**"/>
        <include name="*/src/**"/>
        <include name="test-resources/**"/>
        <include name="test-sources/**"/>
      </fileset>
    </jar>
    <delete file="svn-revision" failonerror="false"/>
  </target>

  <target name="dmg" depends="appbundle">
    <exec executable="hdiutil">
      <arg line="create -srcfolder ${app} ${dmg}"/>
    </exec>
  </target>

  <target name="appbundle" depends="init, jars, determine-svn-revision">
    <mkdir dir="${app}/Contents/MacOS"/>
    <mkdir dir="${app}/Contents/Resources"/>
    <echo file="${app}/Contents/Info.plist"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>CFBundleExecutable</key>
  <string>Squiggle</string>
  <key>CFBundleVersion</key>
  <string>${completeVersion}</string>
  <key>CFBundleShortVersionString</key>
  <string>${completeVersion}</string>
  <key>CFBundleIconFile</key>
  <string>Squiggle.icns</string>
  <key>CFBundleIdentifier</key>
  <string>org.apache.batik</string>
  <key>CFBundleInfoDictionaryVersion</key>
  <string>6.0</string>
  <key>CFBundleName</key>
  <string>Squiggle</string>
  <key>CFBundlePackageType</key>
  <string>APPL</string>
  <key>CFBundleSignature</key>
  <string>????</string>
  <key>NSHumanReadableCopyright</key>
  <string>Copyright © ${year} Apache Software Foundation. All Rights Reserved.</string>
</dict>
</plist>]]></echo>
    <echo file="${app}/Contents/MacOS/Squiggle"><![CDATA[#!/bin/sh

JAVA=/usr/bin/java
[ -e "$JAVA_HOME/bin/java" ] && JAVA="$JAVA_HOME/bin/java"

"$JAVA" -Dcom.apple.mrj.application.apple.menu.about.name=Squiggle -jar "`dirname \"$0\"`/../Resources/batik-squiggle.jar"
]]></echo>
    <chmod perm="a+x" file="${app}/Contents/MacOS/Squiggle"/>
    <copy todir="${app}/Contents/Resources">
      <fileset dir=".">
        <include name="LICENSE"/>
        <include name="NOTICE"/>
        <include name="README"/>
      </fileset>
      <fileset dir="${build}">
        <include name="*.jar"/>
        <include name="lib/**"/>
        <exclude name="lib/junit*.jar"/>
        <exclude name="lib/hamcrest*.jar"/>
        <include name="extensions/**"/>
      </fileset>
      <fileset dir="${src}">
        <include name="Squiggle.icns"/>
      </fileset>
    </copy>
    <copy todir="${app}/Contents/Resources/lib">
      <fileset dir="${lib}">
        <include name="LICENSE.*.txt"/>
        <include name="README.*.txt"/>
      </fileset>
    </copy>
    <copy todir="${app}/Contents/Resources/extensions">
      <fileset dir="${resources}/${package-prefix}/extensions">
        <include name="README.txt"/>
      </fileset>
    </copy>
  </target>

  <target name="bundle-script" depends="init, determine-svn-revision">
<!--     <copy file="${src}/make-squiggle-app.sh.template"
          tofile="${build}/lib/make-squiggle-app.sh">
      <filterset>
        <filter token="VERSION" value="${completeVersion}"/>
        <filter token="YEAR" value="${year}"/>
      </filterset>
    </copy>
    <chmod perm="a+x" file="${build}/lib/make-squiggle-app.sh"/> -->
  </target>

  <!-- Compilation ........................................................ -->
  <target name="compiletest" depends="init, compile"
          description="Compiles the tests infrastructure source files">
    <mkdir dir="${dest}"/>

    <echo message="debug ${debug}, optimize ${optimize}, deprecation ${deprecation}"/>

    <javac source="${javac.source}" target="${javac.target}" destdir="${dest}"  deprecation="${deprecation}" 
           debug="${debug}" optimize="${optimize}" encoding="UTF-8">
      <src path="${testsrc}"/>
      <src path="batik-test/src/main/java"/>
      <src path="batik-test-svg/src/main/java"/>
      <src path="batik-test-swing/src/main/java"/>
      <src path="batik-util/src/test/java"/>
      <exclude name="org/apache/batik/util/*TestCases.java"/>
      <exclude name="org/apache/batik/util/*TestSuite.java"/>
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <path refid="libs-build-classpath"/>
      </classpath>
    </javac>
  </target>

  <!-- Builds Jar Files needed for test purposes. Note that compilation of jars is done -->
  <!-- in a different directory than the usual 'classes' directory ({$dest}).           -->
  <!-- Note that this is needed to avoid having the class files in the classes          -->
  <!-- subdirectory, which interferes with the tests, because classes in that directory -->
  <!-- are loaded first in the development version.                                     -->
  <target name="testjars" depends="security2.jar, IWasLoaded.jar, IWasLoadedToo.jar, JarCheckPermissionsGranted.jar, JarCheckPermissionsDenied.jar, java-binding.jar"/>

  <target name="compiletestjars" depends="init, compile"
          description="Compiles the source files for the samples scripts and the test-resources">
    <mkdir dir="${testresources}/classes"/>
    <mkdir dir="${samples}/tests/resources/java/classes"/>

    <echo message="debug ${debug}, optimize ${optimize}, deprecation ${deprecation}"/>

    <javac source="${javac.source}" target="${javac.target}" srcdir="${samples}/tests/resources/java/sources" destdir="${samples}/tests/resources/java/classes"  deprecation="${deprecation}" 
           debug="${debug}" optimize="${optimize}" encoding="UTF-8">
      <classpath>
        <pathelement location="${dest}"/>
        <pathelement location="${samples}/tests/resources/java/classes"/>
        <path refid="libs-classpath"/>
        <path refid="libs-build-classpath"/>
      </classpath>
    </javac>

    <javac source="${javac.source}" target="${javac.target}" srcdir="${testresources}" destdir="${testresources}/classes"  deprecation="${deprecation}" 
           debug="${debug}" optimize="${optimize}" encoding="UTF-8">
      <classpath>
        <pathelement location="${dest}"/>
        <pathelement location="${testresources}/classes"/>
        <path refid="libs-classpath"/>
        <path refid="libs-build-classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="security2.jar" depends="init, compiletestjars">
    <jar manifest="${samples}/tests/resources/java/resources/com/untrusted/script/security2.mf"
         jarfile="samples/tests/spec/scripting/security2.jar">
      <fileset dir="${samples}/tests/resources/java/classes">
        <include name="com/untrusted/script/**/*.class"/>
      </fileset>
    </jar>
  </target>

  <target name="IWasLoaded.jar" depends="init, compiletestjars" 
          unless="IWasLoadedUpToDate">
    <jar manifest="${testresources}/org/apache/batik/bridge/IWasLoaded.mf"
         jarfile="${testresources}/org/apache/batik/bridge/IWasLoaded.jar">
      <fileset dir="${testresources}/classes">
        <include name="org/apache/batik/bridge/IWasLoaded.class"/>
        <include name="org/apache/batik/bridge/IWasLoaded$*.class"/>
      </fileset>
    </jar>
  </target>

  <target name="IWasLoadedToo.jar" depends="init, compiletestjars" 
          unless="IWasLoadedTooUpToDate">
    <jar manifest="${testresources}/org/apache/batik/bridge/IWasLoadedToo.mf"
         jarfile="${testresources}/org/apache/batik/bridge/IWasLoadedToo.jar">
      <fileset dir="${testresources}/classes">
        <include name="org/apache/batik/bridge/IWasLoadedToo.class"/>
        <include name="org/apache/batik/bridge/IWasLoadedToo$*.class"/>
      </fileset>
    </jar>
  </target>

  <target name="JarCheckPermissionsDenied.jar" depends="init, compiletestjars">
    <jar manifest="${testresources}/org/apache/batik/bridge/JarCheckPermissionsDenied.mf"
         jarfile="${testresources}/org/apache/batik/bridge/JarCheckPermissionsDenied.jar">
      <fileset dir="${testresources}/classes">
        <include name="org/apache/batik/bridge/JarCheckPermissionsDenied*.class"/>
      </fileset>
    </jar>
  </target>

  <target name="JarCheckPermissionsGranted.jar" depends="init, compiletestjars">
    <jar manifest="${testresources}/org/apache/batik/bridge/JarCheckPermissionsGranted.mf"
         jarfile="${testresources}/org/apache/batik/bridge/JarCheckPermissionsGranted.jar">
      <fileset dir="${testresources}/classes">
        <include name="org/apache/batik/bridge/JarCheckPermissionsGranted*.class"/>
      </fileset>
    </jar>
  </target>

  <target name="java-binding.jar" depends="init, compiletestjars">
    <jar manifest="${samples}/tests/resources/java/resources/com/test/script/java-binding.mf"
         jarfile="${samples}/tests/spec/scripting/java-binding.jar">
      <fileset dir="${samples}/tests/resources/java/classes">
        <include name="com/test/script/EventListenerInitializerImpl*.class"/>
      </fileset>
    </jar>
  </target>

  <target name="record-svn-revision" depends="determine-svn-revision"
          if="svn-revision-determined">
    <echo message="${svn-revision-number}" file="svn-revision"/>
  </target>

  <target name="determine-svn-revision"
          depends="determine-svn-revision-svn-info,
                   determine-svn-revision-transform,
                   determine-svn-revision-from-file,
                   determine-svn-revision-set"/>

  <target name="determine-svn-revision-svn-info" depends="init">
    <dirset id="dirs" dir="${basedir}">
      <include name="batik-anim/src/main/java/${package-prefix}/**"/>
      <include name="batik-awt-util/src/main/java/${package-prefix}/**"/>
      <include name="batik-bridge/src/main/java/${package-prefix}/**"/>
      <include name="batik-codec/src/main/java/${package-prefix}/**"/>
      <include name="batik-constants/src/main/java/${package-prefix}/**"/>
      <include name="batik-css/src/main/java/${package-prefix}/**"/>
      <include name="batik-dom/src/main/java/${package-prefix}/**"/>
      <include name="batik-ext/src/main/java/${package-prefix}/**"/>
      <include name="batik-extension/src/main/java/${package-prefix}/**"/>
      <include name="batik-gui-util/src/main/java/${package-prefix}/**"/>
      <include name="batik-gvt/src/main/java/${package-prefix}/**"/>
      <include name="batik-i18n/src/main/java/${package-prefix}/**"/>
      <include name="batik-parser/src/main/java/${package-prefix}/**"/>
      <include name="batik-rasterizer/src/main/java/${package-prefix}/**"/>
      <include name="batik-rasterizer-ext/src/main/java/${package-prefix}/**"/>
      <include name="batik-script/src/main/java/${package-prefix}/**"/>
      <include name="batik-slideshow/src/main/java/${package-prefix}/**"/>
      <include name="batik-squiggle/src/main/java/${package-prefix}/**"/>
      <include name="batik-svg-dom/src/main/java/${package-prefix}/**"/>
      <include name="batik-svgbrowser/src/main/java/${package-prefix}/**"/>
      <include name="batik-svggen/src/main/java/${package-prefix}/**"/>
      <include name="batik-svgpp/src/main/java/${package-prefix}/**"/>
      <include name="batik-svgrasterizer/src/main/java/${package-prefix}/**"/>
      <include name="batik-swing/src/main/java/${package-prefix}/**"/>
      <include name="batik-transcoder/src/main/java/${package-prefix}/**"/>
      <include name="batik-ttf2svg/src/main/java/${package-prefix}/**"/>
      <include name="batik-util/src/main/java/${package-prefix}/**"/>
      <include name="batik-xml/src/main/java/${package-prefix}/**"/>
    </dirset>
    <pathconvert refid="dirs" pathsep=" " property="svn-info-dirs"/>
    <exec executable="svn" output="svn-info.xml"
          resultproperty="svn-info-result" failifexecutionfails="false">
      <arg line="info --xml . ${svn-info-dirs}"/>
    </exec>
    <condition property="should-transform-svn-info">
      <equals arg1="${svn-info-result}" arg2="0"/>
    </condition>
  </target>

  <target name="determine-svn-revision-transform" depends="init"
          if="should-transform-svn-info">
    <java fork="yes" classname="org.apache.xalan.xslt.Process"
          outputproperty="svn-revision-number"
          errorproperty="svn-revision-transform-error"
          resultproperty="svn-revision-transform-result">
      <classpath>
        <path refid="libs-build-classpath"/>
      </classpath>
      <arg line="-in svn-info.xml -xsl ${lib}/build/svn-info-revision.xsl"/>
    </java>
    <condition property="svn-revision-determined">
      <equals arg1="${svn-revision-transform-result}" arg2="0"/>
    </condition>
  </target>

  <target name="determine-svn-revision-from-file"
          unless="svn-revision-determined">
    <loadfile property="svn-revision-number" srcFile="svn-revision"
              failonerror="false"/>
    <condition property="svn-revision-determined">
      <not>
        <equals arg1="${svn-revision-suffix-string}" arg2=""/>
      </not>
    </condition>
  </target>

  <target name="determine-svn-revision-set"
          if="svn-revision-determined">
    <property name="svn-revision-suffix" value="+r${svn-revision-number}"/>
    <delete file="svn-info.xml" failonerror="false"/>
  </target>


  <target name="compile-prepare" depends="init" unless="compile-prepare.done">
    <mkdir dir="${dest}"/>
    <echo message="debug ${debug}, optimize ${optimize}, deprecation ${deprecation}"/>
    <property name="compile-prepare.done" value="true"/>
  </target>

  <target name="compile-copy-resources" depends="init, compile-prepare" unless="compile-copy-resources.done">
    <property name="compile-copy-resources.done" value="true"/>
    <copy todir="${dest}">
      <fileset dir="batik-anim/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-awt-util/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-bridge/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-codec/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-css/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-dom/src/main/resources">
        <include name="**"/>
      </fileset>
<!--       <fileset dir="batik-ext/src/main/resources">
        <include name="**"/>
      </fileset> -->
      <fileset dir="batik-extension/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-gui-util/src/main/resources">
        <include name="**"/>
      </fileset>
<!--       <fileset dir="batik-gvt/src/main/resources">
        <include name="**"/>
      </fileset> -->
      <fileset dir="batik-parser/src/main/resources">
        <include name="**"/>
      </fileset>
<!--       <fileset dir="batik-rasterizer/src/main/resources">
        <include name="**"/>
      </fileset> -->
<!--       <fileset dir="batik-rasterizer-ext/src/main/resources">
        <include name="**"/>
      </fileset> -->
      <fileset dir="batik-script/src/main/resources">
        <include name="**"/>
      </fileset>
<!--       <fileset dir="batik-slideshow/src/main/resources">
        <include name="**"/>
      </fileset> -->
<!--       <fileset dir="batik-squiggle/src/main/resources">
        <include name="**"/>
      </fileset> -->
      <fileset dir="batik-svg-dom/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-svgbrowser/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-svggen/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-svgpp/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-svgrasterizer/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-swing/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-transcoder/src/main/resources">
        <include name="**"/>
      </fileset>
<!--       <fileset dir="batik-ttf2svg/src/main/resources">
        <include name="**"/>
      </fileset> -->
      <fileset dir="batik-util/src/main/resources">
        <include name="**"/>
      </fileset>
      <fileset dir="batik-xml/src/main/resources">
        <include name="**"/>
      </fileset>
    </copy>
  </target>

  <target name="compile" depends="init, compile-prepare, compile-copy-resources" unless="compile.done">
    <javac source="${javac.source}" target="${javac.target}" destdir="${dest}" deprecation="${deprecation}" 
           debug="${debug}" optimize="${optimize}" encoding="UTF-8"
           includeAntRuntime="true">
      <src path="batik-anim/src/main/java"/>
      <src path="batik-awt-util/src/main/java"/>
      <src path="batik-bridge/src/main/java"/>
      <src path="batik-codec/src/main/java"/>
      <src path="batik-constants/src/main/java"/>
      <src path="batik-css/src/main/java"/>
      <src path="batik-dom/src/main/java"/>
      <src path="batik-ext/src/main/java"/>
      <src path="batik-extension/src/main/java"/>
      <src path="batik-gui-util/src/main/java"/>
      <src path="batik-gvt/src/main/java"/>
      <src path="batik-i18n/src/main/java"/>
      <src path="batik-parser/src/main/java"/>
      <!-- <src path="batik-rasterizer/src/main/java"/> -->
      <!-- <src path="batik-rasterizer-ext/src/main/java"/> -->
      <src path="batik-script/src/main/java"/>
      <src path="batik-slideshow/src/main/java"/>
      <!-- <src path="batik-squiggle/src/main/java"/> -->
      <src path="batik-svg-dom/src/main/java"/>
      <src path="batik-svgbrowser/src/main/java"/>
      <src path="batik-svggen/src/main/java"/>
      <src path="batik-svgpp/src/main/java"/>
      <src path="batik-svgrasterizer/src/main/java"/>
      <src path="batik-swing/src/main/java"/>
      <src path="batik-transcoder/src/main/java"/>
      <src path="batik-ttf2svg/src/main/java"/>
      <src path="batik-util/src/main/java"/>
      <src path="batik-xml/src/main/java"/>
      <classpath refid="libs-classpath"/>
      <exclude name="**/*.html"/>
      <exclude name="**/rhino/*"   unless="rhino.present"/>      
      <exclude name="**/jpython/*" unless="jpython.present"/>
      <exclude name="**/jacl/*"    unless="jacl.present"/>
      <exclude name="${package-prefix}/ext/awt/image/codec/jpeg/*"
               unless="sun-codecs.present"/>
      <exclude name="${package-prefix}/ext/awt/image/codec/tiff/*"
               unless="sun-codecs.present"/>
    </javac>
    <property name="compile.done" value="true"/>
  </target>

  <target name="clean-compile" depends="init"
          description="Cleans the files generated by compile">
    <delete dir="${dest}"/>
  </target>

  <target name="clean-apache" depends="init"
          description="Cleans the Apache files generated by compile">
    <delete dir="${dest}/org/apache"/>
  </target>

  <target name="clean-test" depends="init"
          description="Cleans files generated by running tests">
    <delete file="${samples}/tests/spec/scripting/security2.jar"/>
    <delete file="${samples}/tests/spec/scripting/java-binding.jar"/>
    <delete file="${samples}/anne.pdf"/>
    <delete file="${samples}/anne.png"/>
    <delete dir="${test-references}" includes="**/candidate-reference/**" includeemptydirs="true"/>
    <delete dir="${test-references}" includes="**/candidate-reference" includeemptydirs="true"/>
    <delete dir="${test-references}" includes="**/candidate-variation/**" includeemptydirs="true"/>
    <delete dir="${test-references}" includes="**/candidate-variation" includeemptydirs="true"/>
    <delete dir="${test-references}" includes="${package-prefix}/ext/awt/geom/candidate" includeemptydirs="true"/>
    <delete dir="${test-references}" includes="${package-prefix}/ext/awt/geom/variation" includeemptydirs="true"/>
    <delete dir="${test-references}" includes="${package-prefix}/gvt/candidate" includeemptydirs="true"/>
    <delete dir="${test-references}" includes="${package-prefix}/gvt/variation" includeemptydirs="true"/>
    <delete dir="${test-references}" includes="${package-prefix}/svggen/candidate-ref/**" includeemptydirs="true"/>
    <delete dir="${test-references}" includes="${package-prefix}/transcoder/wmf/candidate/**" includeemptydirs="true"/>
    <delete dir="${test-resources}" includes="**/JarCheckPermissions*.jar"/>
    <delete file="${test-resources}/${package-prefix}/apps/rasterizer/invalidSVG.png"/>
    <delete file="${test-resources}/${package-prefix}/bridge/IWasLoaded.jar"/>
    <delete file="${test-resources}/${package-prefix}/bridge/IWasLoadedToo.jar"/>
    <delete dir="${test-resources}/classes"/>
    <delete dir="${samples}/tests/resources/java/classes"/>
    <delete dir="${test-reports}"/>
  </target>


  <!-- Jars ............................................................... -->
  <target name="prepare-build" depends="init, determine-svn-revision">
    <mkdir dir="${build}"/>
    <mkdir dir="${build}/docs"/>
    <mkdir dir="${build}/lib"/>
  </target>

  <!-- Generates all the jars except all-jar -->
  <target name="jars" depends="init">
    <copy todir="${build}/lib">
      <fileset dir="${lib}">
        <include name="*.jar"/>
      </fileset>
    </copy>
    <available file="batik-all/target/batik-all-${version}.jar" property="batik-all.exists" />
    <fail message="Run 'mvn clean install' first" unless="batik-all.exists" />
    <copy todir="${build}/lib" flatten="true">
      <fileset dir=".">
        <include name="*/target/*.jar"/>
        <exclude name="*/target/batik-rasterizer-*.jar"/>
        <exclude name="*/target/batik-slideshow-*.jar"/>
        <exclude name="*/target/batik-squiggle-*.jar"/>
        <exclude name="*/target/batik-svgpp-*.jar"/>
        <exclude name="*/target/batik-ttf2svg-*.jar"/>
      </fileset>
    </copy>
    <copy todir="${build}/extensions" flatten="true">
      <fileset dir=".">
        <include name="*/target/batik-rasterizer-ext-*.jar"/>
        <include name="*/target/batik-squiggle-ext-*.jar"/>
      </fileset>
    </copy>
    <copy todir="${build}" flatten="true">
      <fileset dir=".">
        <include name="*/target/batik-rasterizer-${version}.jar"/>
        <include name="*/target/batik-slideshow-${version}.jar"/>
        <include name="*/target/batik-squiggle-${version}.jar"/>
        <include name="*/target/batik-svgpp-${version}.jar"/>
        <include name="*/target/batik-ttf2svg-${version}.jar"/>
      </fileset>
    </copy>    
  </target>


  <!-- All batik in a single jar (dependencies: none) -->
  <target name="all-jar" depends="mvn-jars,init, copy-shared-resources, compile, prepare-build"
          description="Creates a combined JAR file of the Batik libraries in ${build}/lib">
    <jar jarfile="${build}/lib/${project}-all-${completeVersion}.jar">
      <manifest>
        <attribute name="Implementation-Title" value="Batik all-in-one JAR"/>
        <attribute name="Implementation-Version" value="${completeVersion}"/>
        <attribute name="Implementation-Vendor" value="${vendor}"/>
        <attribute name="Build-Id" value="${build.id}"/>
        <attribute name="Main-Class" value="${class-prefix}.apps.svgbrowser.Main"/>
      </manifest>
      <metainf dir="${basedir}" includes="LICENSE,NOTICE"/>
      <fileset dir="${dest}" excludes="**/.svn/">
        <include name="**"/>
      </fileset>
    </jar>
  </target>
  
  <target name="mvn-jars" depends="mvn-jars-unix,mvn-jars-windows" unless="dev">
    <delete failonerror="false">
      <fileset dir="${basedir}/lib">
        <include name="fop-transcoder*.jar"/>
        <include name="rhino*.jar"/>
        <include name="xml*.jar"/>
        <include name="junit*.jar"/>
        <include name="hamcrest*.jar"/>
      </fileset>
    </delete>
    <copy todir="${basedir}/lib">
      <fileset dir="${basedir}/batik-test-old/target/dependency">
        <include name="fop-transcoder*.jar"/>
        <include name="rhino*.jar"/>
        <include name="xml*.jar"/>
        <include name="junit*.jar"/>
        <include name="hamcrest*.jar"/>
      </fileset>
    </copy>
  </target>
  <target name="mvn-jars-unix" if="isUnix" unless="dev">
    <exec executable="mvn" dir="${basedir}" failonerror="true">
      <arg value="clean"/>
      <arg line="${copy.dependencies.arg} dependency:copy-dependencies -DskipTests -B"/>
    </exec>
  </target>
  <target name="mvn-jars-windows" if="isWindows" unless="dev">
    <exec executable="cmd" dir="${basedir}" failonerror="true">
	  <arg value="/c"/>
	  <arg value="mvn"/>    
      <arg value="clean"/>
      <arg line="${copy.dependencies.arg} dependency:copy-dependencies -DskipTests -B"/>
    </exec>
  </target>  

  <!-- Applications ....................................................... -->
  <target name="squiggle" depends="init, compile"
          description="Runs Squiggle - the SVG browser">
    <condition property="squiggle-suffix" value="osx" else="others">
      <os name="Mac OS X"/>
    </condition>
    <antcall target="squiggle-${squiggle-suffix}" inheritRefs="true"/>
  </target>

  <target name="squiggle-osx" depends="appbundle">
    <exec executable="open">
      <arg value="${app}"/>
    </exec>
  </target>

  <target name="squiggle-others">
    <java fork="yes" 
          classname="${class-prefix}.apps.svgbrowser.Main">
<!--          jvm="C:\Documents and Settings\<user>\.netbeans\4.0\modules\profiler-ea-vm\jre\bin\java"> -->
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <pathelement location="resources"/>
      </classpath>
      <arg line="${args}"/> 
      <!-- <jvmarg value="-Xmx512m"/>  <jvmarg value="-Xms64m"/> -->
      <!-- <jvmarg value="-Djava.security.debug=all"/>  
           <jvmarg value="-verbose"/> -->
     <!-- 
      <jvmarg value="-Djava.security.debug=access failure"/> 
      <jvmarg value="-Djava.security.debug=policy"/> 
      <jvmarg value="-Djava.security.manager"/> 
      <jvmarg value="-Djava.security.policy=resources/org/apache/batik/apps/svgbrowser/resources/svgbrowser.policy"/> 
      -->
    </java>
  </target>

  <target name="svgbrowser" depends="squiggle"
          description="Runs Squiggle - the SVG browser"/>

  <target name="svgrasterizer" depends="init, compile"
          description="Runs the SVG rasterizer">
    <java fork="yes"
          classname="${class-prefix}.apps.rasterizer.Main">
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <pathelement location="resources"/>
      </classpath>
<!--      <jvmarg value="-Xmx512m"/>  <jvmarg value="-Xms64m"/>  -->
<!--      <jvmarg value="-Djava.awt.headless=true"/>  -->
      <arg line="${args}"/>
    </java>
  </target>

  <target name="svgpp" depends="init, compile"
          description="Runs the SVG pretty-printer">
    <java fork="yes"
          classname="${class-prefix}.apps.svgpp.Main">
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <pathelement location="resources"/>
      </classpath>
      <arg line="${args}"/>
    </java>
  </target>

  <target name="testdirs" depends="init"
          description="Created directories needed for test suite">

    <mkdir dir="${test-reports}"/>
    <mkdir dir="${test-reports}/style"/>
    <mkdir dir="${test-reports}/images"/>
    <copy todir="${test-reports}/style">
      <fileset dir="${test-resources}/org/apache/batik/test/svg/resources/style"/>
    </copy>
    <copy todir="${test-reports}/images">
      <fileset dir="${test-resources}/org/apache/batik/test/svg/resources/images"/>
    </copy>

    <mkdir dir="${test-references}/samples/candidate-variation"/>
    <mkdir dir="${test-references}/samples/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/coordinates/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/coordinates/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/fonts/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/fonts/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/masking/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/masking/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/paints/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/paints/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/shapes/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/shapes/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/styling/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/styling/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/color/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/color/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/filters/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/filters/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/linking/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/linking/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/painting/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/painting/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/rendering/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/rendering/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/structure/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/structure/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/text/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/text/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/interactivity/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/interactivity/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec/scripting/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec/scripting/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec12/filters/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec12/filters/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec12/paints/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec12/paints/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec12/structure/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec12/structure/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec12/structure/opera/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec12/structure/opera/candidate-reference"/>
    <mkdir dir="${test-references}/samples/tests/spec12/text/candidate-variation"/>
    <mkdir dir="${test-references}/samples/tests/spec12/text/candidate-reference"/>
    <mkdir dir="${test-references}/samples/extensions/candidate-variation"/>
    <mkdir dir="${test-references}/samples/extensions/candidate-reference"/>
    <mkdir dir="${test-references}/samples/extensions/opera/candidate-variation"/>
    <mkdir dir="${test-references}/samples/extensions/opera/candidate-reference"/>
    <mkdir dir="${test-references}/svgbe/candidate-variation"/>
    <mkdir dir="${test-references}/svgbe/candidate-reference"/>
    <mkdir dir="${test-references}/org/apache/batik/transcoder/wmf/candidate"/>
    <mkdir dir="${test-references}/org/apache/batik/svggen/candidate-ref"/>
    <mkdir dir="${test-references}/org/apache/batik/svggen/rendering/candidate-variation"/>
    <mkdir dir="${test-references}/org/apache/batik/svggen/rendering/candidate-reference"/>
    <mkdir dir="${test-references}/org/apache/batik/gvt/candidate"/>
    <mkdir dir="${test-references}/org/apache/batik/gvt/variation"/>
    <mkdir dir="${test-references}/org/apache/batik/ext/awt/geom/candidate"/>
    <mkdir dir="${test-references}/org/apache/batik/ext/awt/geom/variation"/>
    <mkdir dir="${test-references}/org/apache/batik/transcoder/image/candidate-reference"/>
    <mkdir dir="${test-references}/org/apache/batik/transcoder/image/candidate-variation"/>
    <mkdir dir="${test-references}/test-resources/org/apache/batik/test/svg/candidate-variation"/>
    <mkdir dir="${test-references}/test-resources/org/apache/batik/test/svg/candidate-reference"/>

  </target>

  <target name="ttf2svg" depends="init, compile, testdirs"
          description="converts selected glyphs from a True Type Font file to the SVG Font format">
    <java fork="yes"
          classname="${class-prefix}.apps.ttf2svg.Main">
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <pathelement location="resources"/>
      </classpath>
      <arg line="${args}"/>
    </java>
  </target>

  <target name="regard" depends="init, compiletest, testdirs, testjars"
          description="Runs test suite whose file or uri is passed as an input">
    <java fork="yes"
          classname="${class-prefix}.test.xml.XMLTestSuiteRunner">
<!-- Using -Xincgc makes the memory leak tests _much_ more accurate but
     Also slows down the regard run by 3-4x,  In general I suggest running
     just the memory leak tests with -Xincgc, I might also experiment with
     a higher -Xms setting. -->
<!--      <jvmarg value="-Xincgc"/> -->
<!--      <jvmarg value="-Xrunhprof:format=b"/> -->
<!--      <jvmarg value="-Xrunhprof:net=localhost:1234,format=b"/> -->
      <jvmarg value="-Xmx1024m"/>  <jvmarg value="-Xms64m"/>
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <path refid="libs-build-classpath"/>
        <pathelement location="resources"/>
        <pathelement location="test-resources"/>
      </classpath>
      <arg line="test-resources/org/apache/batik/test/regard.xml ${args}"/>
    </java>
  </target>

  <target name="regard.manual" depends="init, compiletest, testdirs, testjars"
          description="Runs test suite whose file or uri is passed as an input">
    <java fork="yes"
          classname="${class-prefix}.test.xml.XMLTestSuiteRunner">
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <path refid="libs-build-classpath"/>
        <pathelement location="resources"/>
        <pathelement location="test-resources"/>
      </classpath>
      <arg line="test-resources/org/apache/batik/test/regardManual.xml ${args}"/>
    </java>
  </target>

  <target name="showpainter" depends="init, compiletest, testdirs"
          description="Runs test suite whose file or uri is passed as an input">
    <java fork="yes"
          classname="${class-prefix}.svggen.JPainterCompare">
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <path refid="libs-build-classpath"/>
        <pathelement location="resources"/>
        <pathelement location="test-resources"/>
      </classpath>
      <arg line="${args}"/>
    </java>
  </target>

  <target name="runtestsuite" depends="init, compiletest, testdirs"
          description="Runs test suite whose file or uri is passed as an input">
    <mkdir dir="${test-reports}"/>
    <java fork="yes"
          classname="${class-prefix}.test.xml.XMLTestSuiteRunner">
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <path refid="libs-build-classpath"/>
        <pathelement location="resources"/>
        <pathelement location="test-resources"/>
      </classpath>
      <arg line="${args}"/>
    </java>
  </target>

  <target name="runtest" depends="init, compiletest, testdirs"
          description="Runs test whose class name is passed as an input">
    <java fork="yes"
          classname="${args}">
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <path refid="libs-build-classpath"/>
        <pathelement location="resources"/>
        <pathelement location="test-resources"/>
      </classpath>
    </java>
  </target>

  <!-- Documentation ...................................................... -->
  <target name="html" depends="javadoc"
          description="Generates the HTML documentation, including javadocs, in ${build}/docs/"/>
  <target name="htmldoc" depends="init"
          description="Generates HTML documentation">
    <mkdir dir="${docs}"/>
    <copy todir="${docs}">
      <fileset dir="${forrest-build}/site" excludes="doap.rdf, download.cgi"/>
    </copy>
  </target>

  <target name="site" depends="site-javadoc, sitedoc"/>
  <target name="sitedoc" depends="init"
          description="Generates the http://xmlgraphics.apache.org/batik/ site">
    <mkdir dir="${site}"/>
    <copy todir="${site}">
      <fileset dir="${forrest-build}/site"/>
    </copy>
  </target>

  <target name="site-javadoc" depends="init, javadoc">
    <mkdir dir="${site}/javadoc"/>
    <copy todir="${site}/javadoc">
      <fileset dir="${docs}/javadoc"/>
    </copy>
  </target>

  <target name="forrest" depends="init">
    <property name="forrest-build.dir" value="${cwd}${file.separator}${forrest-build}"/>
    <exec executable="${forrest.call}">
      <arg line="${forrest.args}"/>
      <arg value="-Dproject.build-dir=${forrest-build.dir}"/>
      <arg value="-Dproject.temp-dir=${forrest-build.dir}${file.separator}tmp"/>
      <arg value="-Dproject.webapp=${forrest-build.dir}${file.separator}webapp"/>
    </exec>
    <delete dir="${forrest-build}/tmp"/>
    <!-- Ideally Forrest would put its log files in ${forrest-build}, but it
         insists on creating a directory called 'build' for these. -->
    <delete dir="build"/>
  </target>

  <target name="javadocs" depends="javadoc"/>
  <target name="javadoc" depends="init">
    <mkdir dir="${docs}/javadoc"/>
    <javadoc packagenames="${class-prefix}.*,
                           org.xml.*,
                           org.w3c.css.*,
                           org.w3c.dom.*"
             excludepackagenames="${javadoc-exclusions}"
             maxmemory="512m"
             failonerror="yes"
             destdir="${docs}/javadoc"
             encoding="UTF-8"
             docencoding="UTF-8"
             author="false"
             version="false"
             use="true"
             splitindex="true"
             windowtitle="${Project} Javadoc"
             doctitle="${Project} API Specification ${completeVersion}"
             bottom="Copyright &#169; ${year} &lt;a href='http://www.apache.org/'&gt;Apache Software Foundation&lt;/a&gt;. All Rights Reserved."
             sourcepathref="source.files">
      <arg value="-notimestamp"/>
      <sourcepath path="${src}"/>
      <classpath refid="libs-classpath"/>
      <link href="${dom.javadoc}"/>
      <link href="${jdk.javadoc}"/>
      <link href="${rhino.javadoc}"/>
    </javadoc>
  </target>

  <target name="prepare-publish" depends="init">
    <mkdir dir="${site}"/>
    <mkdir dir="${forrest-build}"/>
    <exec executable="svn" dir="${site}" output="${forrest-build}/publish.info"
          failonerror="false">
      <arg value="info"/>
    </exec>
    <loadfile srcfile="${forrest-build}/publish.info" property="publish.info">
      <filterchain>
        <linecontains>
          <contains value="URL:"/>
        </linecontains>
        <tokenfilter>
          <replacestring from="URL: " to=""/>
        </tokenfilter>
        <striplinebreaks/>
      </filterchain>
    </loadfile>
    <delete file="${forrest-build}/publish.info"/>
    <condition property="publish-checkout-task" value="prepare-publish-up" else="prepare-publish-co">
      <equals arg1="${publish.info}" arg2="${deploy.svn.url}"/>
    </condition>
    <antcall target="${publish-checkout-task}"/>
  </target>

  <target name="prepare-publish-up">
    <exec executable="svn" dir="${site}" failonerror="true">
      <arg value="update"/>
    </exec>
  </target>

  <target name="prepare-publish-co">
    <exec executable="svn" dir="." failonerror="true">
      <arg value="checkout"/>
      <arg value="${deploy.svn.url}"/>
      <arg value="${site}"/>
    </exec>
  </target>

  <target name="do-publish" depends="init">
    <property name="deploy.svn.svn-filestoadd" location="${forrest-build}/publish.toadd"/>
    <exec executable="svn" dir="${site}" output="${deploy.svn.svn-filestoadd}"
          failonerror="true">
      <arg value="status"/>
    </exec>
    <replace file="${deploy.svn.svn-filestoadd}" token="?      " value=""/>
    <replace file="${deploy.svn.svn-filestoadd}" token="M      " value=""/>
    <exec executable="svn" dir="${site}" failonerror="true">
      <arg value="add"/>
      <arg value="--targets"/>
      <arg value="${deploy.svn.svn-filestoadd}"/>
    </exec>
    <exec executable="svn" dir="${site}" failonerror="true">
      <arg value="commit"/>
      <arg value="-m"/>
      <arg value="Automatic publish"/>
    </exec>
    <delete file="${forrest-build}/publish.toadd}"/>
    <echo message=""/>
    <echo message="Site has been committed to .../repos/asf/xmlgraphics/site/deploy/batik/."/>
    <echo message=""/>
    <echo message="Don't forget to run 'svn up' from /www/xmlgraphics.apache.org/batik on"/>
    <echo message="people.apache.org now."/>
  </target>

  <target name="publishdoc" depends="prepare-publish,sitedoc,do-publish"
          description="Generates the http://xmlgraphics.apache.org/batik/ site without the javadocs and commits it to SVN"/>

  <target name="publish" depends="prepare-publish,site,do-publish"
          description="Generates the http://xmlgraphics.apache.org/batik/ site including the javadocs and commits it to SVN"/>

  <target name="clean-docs" depends="init">
    <delete dir="${forrest-build}"/>
    <delete dir="${docs}"/>
    <delete dir="${site}"/>
    <delete dir="build"/>  <!-- In case it's left behind by Forrest. -->
  </target>

  <!-- Generates splash screens for the browser ........................... -->

  <target name="splash" depends="init, compile" 
          description="Updates browser splash screen">
    <java fork="yes"
          classname="${class-prefix}.apps.rasterizer.Main">
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <pathelement location="resources"/>
      </classpath>
      <arg line="${resources}/org/apache/batik/apps/svgbrowser/resources/squiggle.svg"/>
    </java>
  </target>

  <target name="jarDependImg" depends="init, compile"
          description="Updates jarDependImg PNG">
    <java fork="yes"
          classname="${class-prefix}.apps.rasterizer.Main">
      <classpath>
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <pathelement location="resources"/>
      </classpath>
      <arg line="documentation-sources/resources/images/jarDependImg.source.svg -d documentation-sources/resources/images/jarDependImg.png"/>
    </java>
  </target>

  <!-- Cleans everything .................................................. -->
  <target name="clean"
          depends="init, clean-compile, clean-docs, clean-test, clean-shared-resources"
          description="Cleans everything">
    <delete dir="${build}"/>
    <delete file="${project}-bin-${completeVersion}.zip"/>
    <delete file="${project}-docs-${completeVersion}.zip"/>
    <delete file="${project}-src-${completeVersion}.zip"/>
    <delete file="${project}-bin-${completeVersion}.tar.gz"/>
    <delete file="${project}-docs-${completeVersion}.tar.gz"/>
    <delete file="${project}-src-${completeVersion}.tar.gz"/>
  </target>

  <target name="junit" depends="init, compiletest, testdirs">
    <property name="junit.reports.dir" value="${build}/test-reports"/>   
    <path id="standard-junit-classpath">
        <pathelement location="${dest}"/>
        <path refid="libs-classpath"/>
        <path refid="libs-build-classpath"/>
        <pathelement location="resources"/>
        <pathelement location="test-resources"/>
    </path>               
    <mkdir dir="${junit.reports.dir}"/>
    <junit dir="${basedir}" haltonfailure="yes" fork="true" forkmode="once" printsummary="yes" showoutput="true">
      <sysproperty key="jawa.awt.headless" value="true"/>
      <formatter type="brief" usefile="false"/>
      <formatter type="plain" usefile="true"/>
      <formatter type="xml" usefile="true"/>
      <classpath>
        <path refid="standard-junit-classpath"/>
      </classpath>
      <assertions>
        <enable/>
      </assertions>
      <batchtest todir="${junit.reports.dir}">
        <fileset dir="classes" includes="**/*TestCase.class"/>
      </batchtest>
    </junit>
  </target>

  <target name="checkstyle" depends="init" description="Runs Checkstyle for a code quality report">
    <property name="checkstyle.location" value="lib/checkstyle-5.6-all.jar" />
    <property name="checkstyle.config" value="checkstyle.xml" />
    <path id="checkstyle-classpath">
      <pathelement location="${checkstyle.location}"/>
    </path>
    <taskdef name="checkstyle" classname="com.puppycrawl.tools.checkstyle.CheckStyleTask" classpathref="checkstyle-classpath"/>
    <mkdir dir="${build}"/>
    <checkstyle config="${checkstyle.config}" failonviolation="true" maxWarnings="0">
      <classpath>
        <path refid="checkstyle-classpath"/>
      </classpath>
      <fileset dir="." includes="**/*.java"/>
      <formatter type="xml" toFile="${build}/report_checkstyle.xml"/>
      <formatter type="plain"/>
    </checkstyle>
  </target>  
</project>
