<project name="Jmol" default="main" basedir=".">
<property file="${user.home}/.jmol.build.properties" />
<property name="version" value="4" />
<property name="source.dir" value="src" />
<property name="tests.source.dir" value="source-tests" />
<property name="build.dir" value="build" />
<property name="generatedSource.dir" value="${build.dir}/generatedSource" />
<property name="lib.dir" value="jars" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="tests.classes.dir" value="${build.dir}/classes-tests" />
<property name="applet.classes.dir" value="${build.dir}/applet-classes" />
<property name="tests.dir" value="${build.dir}/unit.tests" />
<property name="dist.dir" value="${build.dir}/dist" />
<property name="sourcedist.dir" value="${build.dir}/sourcedist" />
<property name="doc.dir" value="doc" />
<property name="javadoc.dir" value="javadoc" />
<property name="manifest" value="${source.dir}/manifest"/>
<property name="docbook.dir" value="Must be set by user." />
<property name="keystore.name" value="Must be set by user." />
<property file="proxy.properties" />
<path id="project.class.path">
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</path>
<target name="main" depends="init,jar,applet-jar"/>
<target name="init" depends="check.docbook,check.xsl" />
<target name="initFailure">
<fail message="Init failed. See messages above." />
</target>
<target name="setup" >
<uptodate property="jmolGuide.uptodate" targetfile="${generatedSource.dir}/org/openscience/jmol/Data/guide/index.html">
<srcfiles dir="${doc.dir}/source" includes="JmolGuide.docbook.xml" />
</uptodate>
<uptodate property="jmolHistory.uptodate" targetfile="${generatedSource.dir}/org/openscience/jmol/Data/ChangeLog.html">
<srcfiles dir="${doc.dir}/source" includes="JmolHistory.xml,JmolHistoryToHtml.xsl" />
</uptodate>
<uptodate property="jmolDevelopersGuide.uptodate"
targetfile="${doc.dir}/JmolDevelopersGuide.html">
<srcfiles dir="${doc.dir}/source" includes="JmolDevelopersGuide.docbook.xml" />
</uptodate>
<available file="${docbook.dir}" property="docbook.dir.present"/>
<available classname="com.icl.saxon.StyleSheet"
classpath="${lib.dir}/saxon.jar"
property="xsl.available"/>
<uptodate property="javadoc.uptodate" targetfile="${javadoc.dir}/index.html">
<srcfiles dir="${source.dir}" includes="**/*.java" />
</uptodate>
<available file="${keystore.name}" property="keystore.present" />
<!-- Optional proxy settings (if defined) -->
<condition property="proxyHost"
value="-Dhttp.proxyHost=${http.proxyHost}" >
<not>
<equals arg1="http.proxyHost" arg2="" />
</not>
</condition>
<condition property="proxyPort"
value="-Dhttp.proxyPort=${http.proxyPort}" >
<not>
<equals arg1="http.proxyPort" arg2="" />
</not>
</condition>
</target>
<target name="check.docbook" depends="setup" unless="docbook.dir.present" >
<echo message="Docbook directory '${docbook.dir}' not found." />
<echo message="Please set with the argument '-Ddocbook.dir=directory'." />
<antcall target="initFailure" />
</target>
<target name="check.xsl" depends="setup" unless="xsl.available" >
<echo message="XSLT class 'com.icl.saxon.StyleSheet' not found." />
<antcall target="initFailure" />
</target>
<target name="jmolGuide" depends="init" unless="jmolGuide.uptodate" >
<echo message="Generating user's guide" />
<mkdir dir="${generatedSource.dir}/org/openscience/jmol/Data/guide" />
<java fork="true" dir="${generatedSource.dir}/org/openscience/jmol/Data/guide"
classname="com.icl.saxon.StyleSheet"
classpath="${lib.dir}/saxon.jar" >
<jvmarg value="${proxyHost}" />
<jvmarg value="${proxyPort}" />
<arg value="${user.dir}/${doc.dir}/source/JmolGuide.docbook.xml" />
<arg value="${docbook.dir}/html/chunk.xsl" />
</java>
</target>
<target name="jmolHistory" depends="init" unless="jmolHistory.uptodate" >
<echo message="Generating history of changes" />
<mkdir dir="${generatedSource.dir}/org/openscience/jmol/Data" />
<java fork="true" dir="${generatedSource.dir}/org/openscience/jmol/Data"
classname="com.icl.saxon.StyleSheet"
classpath="${lib.dir}/saxon.jar" >
<arg value="-o" />
<arg value="ChangeLog.html" />
<arg value="${user.dir}/${doc.dir}/source/JmolHistory.xml" />
<arg value="${user.dir}/${doc.dir}/source/JmolHistoryToHtml.xsl" />
</java>
</target>
<target name="doc" depends="jmolDevelopersGuide,javadoc" />
<target name="jmolDevelopersGuide" depends="init" unless="jmolDevelopersGuide.uptodate" >
<echo message="Generating developer's guide" />
<java fork="true" dir="${doc.dir}"
classname="com.icl.saxon.StyleSheet"
classpath="${lib.dir}/saxon.jar" >
<arg value="-o" />
<arg value="${user.dir}/${doc.dir}/JmolDevelopersGuide.html" />
<arg value="${user.dir}/${doc.dir}/source/JmolDevelopersGuide.docbook.xml" />
<arg value="${docbook.dir}/html/docbook.xsl" />
</java>
</target>
<target name="classes" depends="init,jmolGuide,jmolHistory">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${source.dir}" destdir="${classes.dir}"
debug="on" deprecation="on">
<classpath refid="project.class.path" />
</javac>
<copy todir="${classes.dir}" >
<fileset dir="${source.dir}">
<include name="**/*.jpg" />
<include name="**/*.gif" />
<include name="**/*.html" />
<include name="**/*.dtd" />
<include name="**/Properties/*" />
<include name="**/Data/*" />
<include name="**/*.txt" />
</fileset>
</copy>
<copy todir="${classes.dir}" >
<fileset dir="${generatedSource.dir}">
<include name="**/*.jpg" />
<include name="**/*.gif" />
<include name="**/*.html" />
</fileset>
</copy>
</target>
<target name="compile.tests" depends="classes">
<mkdir dir="${tests.classes.dir}"/>
<javac srcdir="${tests.source.dir}" destdir="${tests.classes.dir}"
debug="on" deprecation="on">
<classpath location="${classes.dir}" />
<classpath refid="project.class.path" />
</javac>
<copy todir="${tests.classes.dir}" >
<fileset dir="${tests.source.dir}">
<include name="**/Test-*" />
</fileset>
</copy>
</target>
<target name="applet-classes" >
<mkdir dir="${applet.classes.dir}"/>
<javac srcdir="${source.dir}" destdir="${applet.classes.dir}"
debug="on" deprecation="on" target="1.1"
includesfile="applet.classes">
<classpath refid="project.class.path" />
</javac>
<copy todir="${applet.classes.dir}" >
<fileset dir="${source.dir}">
<include name="**/applet/Data/*" />
<include name="**/*.dtd" />
<include name="**/*.txt" />
</fileset>
</copy>
</target>
<target name="jar" depends="init,classes">
<jar jarfile="${lib.dir}/jmol.jar" manifest="${manifest}" >
<fileset dir="${classes.dir}" >
<exclude name="**/.*" />
<exclude name="**/Test*.class" />
<exclude name="**/jmol/applet/*" />
<include name="**/jmol/**" />
<include name="com/**" />
<include name="freeware/**" />
</fileset>
</jar>
</target>
<target name="applet-jar" depends="applet-classes">
<jar jarfile="${lib.dir}/jmol-applet.jar" >
<fileset dir="${applet.classes.dir}" >
<exclude name="**/.*" />
<include name="**/jmol/**" />
</fileset>
</jar>
</target>
<target name="dist" depends="jar,applet-jar">
<mkdir dir="${dist.dir}/jmol-${version}"/>
<copy todir="${dist.dir}/jmol-${version}/${lib.dir}" >
<fileset dir="${lib.dir}">
<exclude name="jmol-applet.jar" />
<exclude name="swing.jar" />
<exclude name="junit.jar" />
<exclude name="saxon.jar" />
<exclude name="gnujaxp-saxonly.jar" />
<exclude name="baysmith-io.jar" />
</fileset>
</copy>
<copy todir="${dist.dir}/jmol-${version}" >
<fileset dir=".">
<include name="jmol" />
<include name="jmol.mac" />
<include name="jmol.bat" />
<include name="*.txt" />
</fileset>
</copy>
<chmod perm="+x">
<fileset dir="${dist.dir}/jmol-${version}">
<include name="jmol"/>
<include name="jmol.bat"/>
</fileset>
</chmod>
<copy todir="${dist.dir}/jmol-${version}/samples" >
<fileset dir="samples" />
</copy>
<mkdir dir="${dist.dir}/jmol-applet-${version}"/>
<copy todir="${dist.dir}/jmol-applet-${version}/${lib.dir}" >
<fileset dir="${lib.dir}">
<exclude name="jmol.jar" />
<exclude name="jas.jar" />
<exclude name="Acme.jar" />
<exclude name="swing.jar" />
<exclude name="junit.jar" />
<exclude name="multi.jar" />
<exclude name="saxon.jar" />
<exclude name="gnujaxp.jar" />
<exclude name="baysmith-io.jar" />
<exclude name="itext-0.94.jar" />
</fileset>
</copy>
<copy todir="${dist.dir}/jmol-applet-${version}" >
<fileset dir=".">
<include name="*.txt" />
</fileset>
</copy>
</target>
<target name="check.jws" depends="setup" unless="keystore.present" >
<echo message="Keystore '${keystore.name}' not found." />
<echo message="Please set with the argument '-Dkeystore.name=file'." />
<antcall target="initFailure" />
</target>
<target name="dist-jws" depends="check.jws,dist" >
<copy todir="${dist.dir}/jmol-jws-${version}" >
<fileset dir="${source.dir}">
<include name="jmol.jnlp" />
</fileset>
</copy>
<mkdir dir="${dist.dir}/jmol-jws-${version}/${lib.dir}" />
<copy todir="${dist.dir}/jmol-jws-${version}/${lib.dir}" >
<fileset dir="${lib.dir}">
<include name="*.jar" />
<exclude name="jmol-applet.jar" />
<exclude name="gnujaxp-saxonly.jar" />
<exclude name="swing.jar" />
<exclude name="junit.jar" />
<exclude name="saxon.jar" />
<exclude name="baysmith-io.jar" />
</fileset>
</copy>
<mkdir dir="${dist.dir}/jmol-jws-${version}/images" />
<copy todir="${dist.dir}/jmol-jws-${version}/images" flatten="yes" >
<fileset dir="${source.dir}">
<include name="**/icon.jpg" />
</fileset>
</copy>
<ant antfile="../../../build.xml" dir="${dist.dir}/jmol-jws-${version}"
target="internal-dist-jws-sign" />
</target>
<!--
This target should be only used internally within the build.xml. It is a
workaround for a bugs in the fileset feature of the signjar task. See bugs
5230 and 6988.
-->
<target name="internal-dist-jws-sign" >
<signjar alias="${keystore.alias}"
storepass="${keystore.password}"
keystore="${keystore.name}" >
<fileset dir="../jmol-jws-${version}">
<include name="**/*.jar" />
<exclude name="**/.AppleDouble/**" />
</fileset>
</signjar>
</target>
<target name="dist.zip" depends="dist">
<zip zipfile="${build.dir}/jmol-${version}.zip" basedir="${dist.dir}"
includes="jmol-${version}/**" />
<zip zipfile="${build.dir}/jmol-applet-${version}.zip" basedir="${dist.dir}"
includes="jmol-applet-${version}/**" />
</target>
<target name="dist.tar.gz" depends="dist">
<tar tarfile="${build.dir}/jmol-${version}.tar" basedir="${dist.dir}"
excludes="**">
<!-- The excludes="**" attribute in the tag above is a workaround
for a problem in Ant 1.3 -->
<tarfileset dir="${dist.dir}" mode="755">
<include name="jmol-${version}/jmol"/>
<include name="jmol-${version}/jmol.bat"/>
</tarfileset>
<tarfileset dir="${dist.dir}">
<include name="jmol-${version}/**"/>
<exclude name="jmol-${version}/jmol"/>
<exclude name="jmol-${version}/jmol.bat"/>
</tarfileset>
</tar>
<gzip zipfile="${build.dir}/jmol-${version}.tar.gz"
src="${build.dir}/jmol-${version}.tar"/>
<delete file="${build.dir}/jmol-${version}.tar" />
<tar tarfile="${build.dir}/jmol-applet-${version}.tar" basedir="${dist.dir}"
includes="jmol-applet-${version}/**"/>
<gzip zipfile="${build.dir}/jmol-applet-${version}.tar.gz"
src="${build.dir}/jmol-applet-${version}.tar"/>
<delete file="${build.dir}/jmol-applet-${version}.tar" />
</target>
<target name="sourcedist">
<mkdir dir="${sourcedist.dir}/jmol-${version}"/>
<copy todir="${sourcedist.dir}/jmol-${version}/${lib.dir}" >
<fileset dir="${lib.dir}">
<exclude name="jmol*.jar" />
</fileset>
</copy>
<copy todir="${sourcedist.dir}/jmol-${version}" >
<fileset dir=".">
<include name="*" />
<exclude name="${build.dir}" />
</fileset>
</copy>
<copy todir="${sourcedist.dir}/jmol-${version}/${source.dir}" >
<fileset dir="${source.dir}" />
</copy>
<copy todir="${sourcedist.dir}/jmol-${version}/${tests.source.dir}" >
<fileset dir="${tests.source.dir}" />
</copy>
<copy todir="${sourcedist.dir}/jmol-${version}/${doc.dir}" >
<fileset dir="${doc.dir}" />
</copy>
<copy todir="${sourcedist.dir}/jmol-${version}/samples" >
<fileset dir="samples" />
</copy>
<copy todir="${sourcedist.dir}/jmol-${version}/packaging" >
<fileset dir="packaging" />
</copy>
</target>
<target name="sourcedist.zip" depends="sourcedist">
<zip zipfile="${build.dir}/jmol-${version}.source.zip"
basedir="${sourcedist.dir}" includes="**" />
</target>
<target name="sourcedist.tar.gz" depends="sourcedist">
<tar tarfile="${build.dir}/jmol-${version}.source.tar"
basedir="${sourcedist.dir}" excludes="**">
<!-- The excludes="**" attribute in the tag above is a workaround
for a problem in Ant 1.3 -->
<tarfileset dir="${sourcedist.dir}" mode="755">
<include name="jmol-${version}/jmol"/>
<include name="jmol-${version}/jmol.bat"/>
</tarfileset>
<tarfileset dir="${sourcedist.dir}">
<include name="jmol-${version}/**"/>
<exclude name="jmol-${version}/jmol"/>
<exclude name="jmol-${version}/jmol.bat"/>
</tarfileset>
</tar>
<gzip zipfile="${build.dir}/jmol-${version}.source.tar.gz"
src="${build.dir}/jmol-${version}.source.tar"/>
<delete file="${build.dir}/jmol-${version}.source.tar" />
</target>
<target name="main-dists" description="Builds primary distributions."
depends="dist.zip,dist.tar.gz,sourcedist.zip,sourcedist.tar.gz"/>
<target name="clean">
<delete dir="${classes.dir}"/>
<delete dir="${applet.classes.dir}"/>
<delete dir="${tests.classes.dir}"/>
<delete>
<fileset dir="${lib.dir}">
<include name="jmol.jar" />
<include name="jmol-applet.jar" />
</fileset>
</delete>
</target>
<target name="spotless" depends="clean">
<delete dir="${build.dir}"/>
<delete dir="${javadoc.dir}"/>
</target>
<target name="run" depends="classes">
<java fork="true" classname="org.openscience.jmol.Jmol">
<classpath location="classes" />
<classpath refid="project.class.path" />
</java>
</target>
<property name="testName" value="org.openscience.jmol.JmolTests" />
<target name="test" depends="compile.tests" description="Tests Jmol.">
<mkdir dir="${tests.dir}" />
<junit fork="yes" dir="${tests.dir}" printsummary="yes" haltonfailure="yes">
<formatter type="plain" useFile="no" />
<classpath path="${classes.dir}" />
<classpath path="${tests.classes.dir}" />
<classpath refid="project.class.path" />
<test name="${testName}" />
</junit>
</target>
<target name="javadoc" depends="init" unless="javadoc.uptodate">
<mkdir dir="${javadoc.dir}"/>
<javadoc destdir="${javadoc.dir}" sourcepath="src"
private="true" packagenames="org.openscience.*">
<classpath refid="project.class.path" />
</javadoc>
</target>
</project>