<?xml version="1.0" ?>
<project name="FigTree" default="dist" basedir=".">
<description>
Build file for FigTree
$Id:$
</description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="lib" location="lib"/>
<property name="dist" location="dist"/>
<property name="packaging_tools" value="packaging_tools" />
<property environment="env"/>
<target name="clean">
<mkdir dir="${build}"/>
<delete includeEmptyDirs="true">
<fileset dir="${build}" includes="**/*"/>
</delete>
</target>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
<mkdir dir="${dist}"/>
<mkdir dir="${lib}"/>
</target>
<target name="compile" depends="init">
<!-- Compile the java code from ${src} into ${build} -->
<javac source="1.6" target="1.6" srcdir="${src}" destdir="${build}"
classpath="${lib}/jebl.jar:${lib}/jam.jar:${lib}/batik-awt-util.jar:${lib}/batik-dom.jar:${lib}/batik-ext.jar:${lib}/batik-svggen.jar:${lib}/batik-util.jar:${lib}/batik-xml.jar:${lib}/xml-apis.jar:${lib}/iText.jar:${lib}/quaqua.jar:${lib}/jwt/servlet-api-2.5-6.0.2.jar:${lib}/jwt/jwt-3.1.7pre1.jar">
<include name="figtree/**"/>
</javac>
<copy todir="${build}" verbose="true">
<fileset dir="${src}" includes="figtree/**/*.png,figtree/**/*.gif"/>
</copy>
</target>
<target name="dist" depends="compile" description="generate the distribution">
<!-- Create the distribution directory -->
<mkdir dir="${dist}"/>
<jar jarfile="${dist}/figtree.jar">
<zipgroupfileset dir="${lib}" includes="jebl.jar"/>
<zipgroupfileset dir="${lib}" includes="jam.jar"/>
<zipgroupfileset dir="${lib}" includes="batik*.jar"/>
<zipgroupfileset dir="${lib}" includes="xml-apis.jar"/>
<zipgroupfileset dir="${lib}" includes="iText.jar"/>
<fileset dir="${build}" includes="**/*.class,**/*.properties,**/*.png,**/*.gif"/>
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="figtree.application.FigTreeApplication"/>
</manifest>
</jar>
<jar jarfile="${dist}/figtreepanel.jar">
<fileset dir="${build}"
includes="figtree/panel/**/*.class,figtree/treeviewer/**/*.class,**/*.properties,**/*.png,**/*.gif"
/>
<manifest>
<attribute name="Built-By" value="${user.name}"/>
</manifest>
</jar>
<jar jarfile="${dist}/figtree-pdf.jar">
<fileset dir="${build}"
includes="figtree/panel/**/*.class,figtree/treeviewer/**/*.class,**/*.properties,**/*.png,**/*.gif"
/>
<manifest>
<attribute name="Built-By" value="${user.name}"/>
</manifest>
</jar>
<war destfile="${dist}/figtree.war"
webxml="WebRoot/WEB-INF/web.xml">
<fileset dir="WebRoot"/>
<lib dir="${lib}/jwt">
<include name="commons-fileupload-1.2.1.jar" />
<include name="commons-io-1.4.jar" />
<include name="jwt-3.1.6.jar" />
</lib>
<lib dir="${lib}">
<include name="iText.jar" />
<include name="jam.jar" />
<include name="jdom.jar" />
<include name="jebl.jar" />
</lib>
<classes dir="${build}"/>
</war>
</target>
<property name="version" value="1.4.4" />
<property name="version_number" value="1.4.4" />
<property name="release_dir" value="release" />
<property name="name" value="FigTree" />
<property name="common_dir" value="${release_dir}/common" />
<property name="Mac_dir" value="${release_dir}/Mac" />
<property name="Linux_dir" value="${release_dir}/Linux" />
<property name="Windows_dir" value="${release_dir}/Windows" />
<property name="Mac_package_dir" value="${Mac_dir}/${name} v${version}" />
<property name="Linux_package_dir" value="${Linux_dir}/${name}_v${version}" />
<property name="Windows_package_dir" value="${Windows_dir}/${name} v${version}" />
<!-- Need to either install Launch4j under {BEAST workspace}/${release}
or install it in the default directory and change the location of launch4j.dir -->
<target name="windows_Release" depends="dist"
description="release Windows version of FigTree">
<delete dir="${Windows_package_dir}" />
<!-- Create the release directory -->
<mkdir dir="${Windows_package_dir}" />
<property name="launch4j.dir" location="${packaging_tools}/windows/launch4j" />
<taskdef name="launch4j" classname="net.sf.launch4j.ant.Launch4jTask"
classpath="${launch4j.dir}/launch4j.jar :${launch4j.dir}/lib/xstream.jar"/>
<copy file="${dist}/figtree.jar" todir="${Windows_package_dir}/lib"/>
<copy todir="${Windows_package_dir}/lib">
<fileset dir="${Windows_dir}/lib"/>
</copy>
<copy todir="${Windows_package_dir}">
<fileset dir="${common_dir}/"/>
</copy>
<launch4j configFile="${Windows_dir}/FigTree_launch4j.xml"
outfile="${Windows_package_dir}/${name} v${version}.exe"
fileVersion="${version_number}.0"
txtFileVersion="${version}"
productVersion="${version_number}.0"
txtProductVersion="${version}"/>
<zip destfile="${release_dir}/${name} v${version}.zip">
<zipfileset dir="${Windows_package_dir}" prefix="${name} v${version}"/>
</zip>
<echo message="Windows version release is finished." />
</target>
<target name="linux_unix_Release" depends="dist"
description="release Linux/Unix version of FigTree">
<delete dir="${Linux_package_dir}" />
<!-- Create the release directory -->
<mkdir dir="${Linux_package_dir}" />
<copy todir="${Linux_package_dir}/bin">
<fileset dir="${Linux_dir}/scripts"/>
</copy>
<copy file="${Linux_dir}/icons/figtree.png" todir="${Linux_package_dir}/images"/>
<copy file="${dist}/figtree.jar" todir="${Linux_package_dir}/lib"/>
<!--
<copy todir="${Linux_package_dir}/lib">
<fileset dir="${Linux_dir}/lib"/>
</copy>
-->
<copy todir="${Linux_package_dir}">
<fileset dir="${common_dir}/"/>
</copy>
<tar destfile="${release_dir}/${name}_v${version}.tgz" compression="gzip">
<tarfileset dir="${Linux_package_dir}" prefix="${name}_v${version}"/>
</tar>
<echo message="Linux/Unix version release is finished." />
</target>
<property name="AppleSigner" value="Developer ID Application: Andrew Rambaut (9E4WXAQ6SE)" />
<target name="mac_release" depends="dist"
description="release Mac version of FigTree">
<delete dir="${Mac_package_dir}" />
<!-- Create the release directory -->
<mkdir dir="${Mac_package_dir}" />
<copy file="${dist}/figtree.jar" todir="${Mac_package_dir}/lib"/>
<copy file="${dist}/figtree-pdf.jar" todir="${Mac_package_dir}/QuickLook Plugin/FigTreeQuickLookPlugin.qlgenerator/Contents/Resources"/>
<copy todir="${Mac_package_dir}">
<fileset dir="${common_dir}/"/>
</copy>
<copy todir="${Mac_package_dir}/QuickLook Plugin">
<fileset dir="${Mac_dir}/QuickLook Plugin"/>
</copy>
<taskdef name="jarbundler" classname="com.ultramixer.jarbundler.JarBundler"/>
<!-- create a jar bundle for the mac -->
<jarbundler dir="${Mac_package_dir}"
name="${name} v${version}"
mainclass="figtree.application.FigTreeApplication"
icon="${Mac_dir}/icons/FigTree.icns"
stubfile="${packaging_tools}/mac/universalJavaApplicationStub"
useJavaXKey="true"
jvmversion="1.6+"
vmoptions="-Xmx4096M"
highresolutioncapable="true"
arguments=""
version="${version}"
build="1"
copyright="${name} v${version}, Copyright 2006-2018, Andrew Rambaut"
bundleid="figtree" >
<javaproperty name="apple.laf.useScreenMenuBar" value="true"/>
<jarfileset dir="${dist}">
<include name="**/figtree.jar"/>
</jarfileset>
<jarfileset dir="${Mac_dir}/lib">
<include name="**/quaqua.jar"/>
</jarfileset>
<jarfileset dir="${Mac_dir}/lib">
<include name="libquaqua*.jnilib"/>
</jarfileset>
<documenttype name="FigTree tree file"
extensions="tree tre trees ntf tf"
iconFile="${Mac_dir}/icons/FigTreeDocIcon.icns"
role="Editor"/>
</jarbundler>
<!-- code signing -->
<exec executable="codesign">
<arg value="--deep"/>
<arg value="-s"/>
<arg value="${AppleSigner}"/>
<arg value="-v"/>
<arg value="${Mac_package_dir}/${name} v${version}.app"/>
</exec>
<!-- checking code signing -->
<exec executable="spctl">
<arg value="--assess"/>
<arg value="--verbose=4"/>
<arg value="${Mac_package_dir}/${name} v${version}.app"/>
</exec>
<!-- create disk image -->
<exec executable="/usr/bin/hdiutil">
<arg value="create"/>
<arg value="-ov"/>
<arg value="-srcfolder"/>
<arg value="${Mac_package_dir}"/>
<arg value="-volname"/>
<arg value="${name} v${version}"/>
<arg value="-imagekey"/>
<arg value="zlib-level=6"/>
<arg value="${release_dir}/${name} v${version}.dmg"/>
</exec>
<exec executable="codesign">
<arg value="-s"/>
<arg value="${AppleSigner}"/>
<arg value="-v"/>
<arg value="${release_dir}/${name} v${version}.dmg"/>
</exec>
<echo message="Mac version release is finished." />
</target>
<!--
<taskdef name="bundleapp"
classname="com.oracle.appbundler.AppBundlerTask"
classpath="release/Mac/appbundler-1.0.jar"
/>
<property environment="env" />
<target name="mac_release"
description="release Mac version of FigTree for Mountain Lion">
<delete dir="${Mac_package_dir}" />
<mkdir dir="${Mac_package_dir}" />
<copy file="${dist}/figtree.jar" todir="${Mac_package_dir}/lib"/>
<copy file="${dist}/figtree-pdf.jar" todir="${Mac_package_dir}/QuickLook Plugin/FigTreeQuickLookPlugin.qlgenerator/Contents/Resources"/>
<copy todir="${Mac_package_dir}">
<fileset dir="${common_dir}/"/>
</copy>
<copy todir="${Mac_package_dir}/QuickLook Plugin">
<fileset dir="${Mac_dir}/QuickLook Plugin"/>
</copy>
<bundleapp
outputdirectory="${Mac_package_dir}"
name="${name} v${version}"
displayname="${name} v${version}"
identifier="uk.ac.ed.bio.figtree"
shortversion="1.4.1"
copyright="${name} v${version}, Copyright 2006-2013, Andrew Rambaut"
applicationCategory="public.app-category.medical"
mainclassname="figtree/application/FigTreeApplication"
icon="${Mac_dir}/icons/FigTree.icns"
>
<runtime dir="${env.JAVA_HOME}"/>
<classpath file="./dist/figtree.jar"/>
<classpath file="./release/Mac/lib/quaqua.jar"/>
<option value="-Dapple.laf.useScreenMenuBar=true"/>
<option value="-Xmx1024M"/>
</bundleapp>
<echo message="Bundle is created." />
<copy verbose="true" overwrite="true" file="${Mac_dir}/lib/Info.plist" todir="${Mac_package_dir}/${name} v${version}.app"/>
<echo message="Mac version release is finished." />
</target>
-->
</project>