1<?xml version="1.0" ?>
2
3<project name="FigTree" default="dist" basedir=".">
4    <description>
5        Build file for FigTree
6        $Id:$
7    </description>
8
9    <!-- set global properties for this build -->
10    <property name="src" location="src"/>
11    <property name="build" location="build"/>
12
13    <property name="lib" location="lib"/>
14    <property name="dist" location="dist"/>
15    <property name="packaging_tools" value="packaging_tools" />
16
17    <property environment="env"/>
18
19    <target name="clean">
20        <mkdir dir="${build}"/>
21        <delete includeEmptyDirs="true">
22            <fileset dir="${build}" includes="**/*"/>
23        </delete>
24
25    </target>
26
27    <target name="init">
28        <!-- Create the time stamp -->
29        <tstamp/>
30        <!-- Create the build directory structure used by compile -->
31        <mkdir dir="${build}"/>
32        <mkdir dir="${dist}"/>
33        <mkdir dir="${lib}"/>
34    </target>
35
36    <target name="compile" depends="init">
37        <!-- Compile the java code from ${src} into ${build} -->
38        <javac source="1.6" target="1.6" srcdir="${src}" destdir="${build}"
39               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">
40            <include name="figtree/**"/>
41        </javac>
42        <copy todir="${build}" verbose="true">
43            <fileset dir="${src}" includes="figtree/**/*.png,figtree/**/*.gif"/>
44        </copy>
45    </target>
46
47    <target name="dist" depends="compile" description="generate the distribution">
48        <!-- Create the distribution directory -->
49        <mkdir dir="${dist}"/>
50
51        <jar jarfile="${dist}/figtree.jar">
52            <zipgroupfileset dir="${lib}" includes="jebl.jar"/>
53            <zipgroupfileset dir="${lib}" includes="jam.jar"/>
54            <zipgroupfileset dir="${lib}" includes="batik*.jar"/>
55            <zipgroupfileset dir="${lib}" includes="xml-apis.jar"/>
56            <zipgroupfileset dir="${lib}" includes="iText.jar"/>
57            <fileset dir="${build}" includes="**/*.class,**/*.properties,**/*.png,**/*.gif"/>
58            <manifest>
59                <attribute name="Built-By" value="${user.name}"/>
60                <attribute name="Main-Class" value="figtree.application.FigTreeApplication"/>
61            </manifest>
62        </jar>
63
64        <jar jarfile="${dist}/figtreepanel.jar">
65            <fileset dir="${build}"
66                     includes="figtree/panel/**/*.class,figtree/treeviewer/**/*.class,**/*.properties,**/*.png,**/*.gif"
67                    />
68
69            <manifest>
70                <attribute name="Built-By" value="${user.name}"/>
71            </manifest>
72        </jar>
73
74        <jar jarfile="${dist}/figtree-pdf.jar">
75            <fileset dir="${build}"
76                     includes="figtree/panel/**/*.class,figtree/treeviewer/**/*.class,**/*.properties,**/*.png,**/*.gif"
77                    />
78
79            <manifest>
80                <attribute name="Built-By" value="${user.name}"/>
81            </manifest>
82        </jar>
83
84
85        <war destfile="${dist}/figtree.war"
86             webxml="WebRoot/WEB-INF/web.xml">
87            <fileset dir="WebRoot"/>
88            <lib dir="${lib}/jwt">
89                <include name="commons-fileupload-1.2.1.jar" />
90                <include name="commons-io-1.4.jar" />
91                <include name="jwt-3.1.6.jar" />
92            </lib>
93            <lib dir="${lib}">
94                <include name="iText.jar" />
95                <include name="jam.jar" />
96                <include name="jdom.jar" />
97                <include name="jebl.jar" />
98            </lib>
99            <classes dir="${build}"/>
100        </war>
101
102
103    </target>
104
105    <property name="version" value="1.4.4" />
106    <property name="version_number" value="1.4.4" />
107    <property name="release_dir" value="release" />
108    <property name="name" value="FigTree" />
109
110    <property name="common_dir" value="${release_dir}/common" />
111
112    <property name="Mac_dir" value="${release_dir}/Mac" />
113    <property name="Linux_dir" value="${release_dir}/Linux" />
114    <property name="Windows_dir" value="${release_dir}/Windows" />
115
116    <property name="Mac_package_dir" value="${Mac_dir}/${name} v${version}" />
117    <property name="Linux_package_dir" value="${Linux_dir}/${name}_v${version}" />
118    <property name="Windows_package_dir" value="${Windows_dir}/${name} v${version}" />
119
120    <!-- Need to either install Launch4j under {BEAST workspace}/${release}
121                 or install it in the default directory and change the location of launch4j.dir -->
122    <target name="windows_Release" depends="dist"
123            description="release Windows version of FigTree">
124
125        <delete dir="${Windows_package_dir}" />
126        <!-- Create the release directory -->
127        <mkdir dir="${Windows_package_dir}" />
128
129        <property name="launch4j.dir" location="${packaging_tools}/windows/launch4j" />
130        <taskdef name="launch4j" classname="net.sf.launch4j.ant.Launch4jTask"
131                 classpath="${launch4j.dir}/launch4j.jar :${launch4j.dir}/lib/xstream.jar"/>
132
133        <copy file="${dist}/figtree.jar" todir="${Windows_package_dir}/lib"/>
134        <copy todir="${Windows_package_dir}/lib">
135            <fileset dir="${Windows_dir}/lib"/>
136        </copy>
137
138        <copy todir="${Windows_package_dir}">
139            <fileset dir="${common_dir}/"/>
140        </copy>
141
142        <launch4j configFile="${Windows_dir}/FigTree_launch4j.xml"
143                  outfile="${Windows_package_dir}/${name} v${version}.exe"
144                  fileVersion="${version_number}.0"
145                  txtFileVersion="${version}"
146                  productVersion="${version_number}.0"
147                  txtProductVersion="${version}"/>
148
149        <zip destfile="${release_dir}/${name} v${version}.zip">
150            <zipfileset dir="${Windows_package_dir}" prefix="${name} v${version}"/>
151        </zip>
152
153        <echo message="Windows version release is finished." />
154    </target>
155
156    <target name="linux_unix_Release" depends="dist"
157            description="release Linux/Unix version of FigTree">
158        <delete dir="${Linux_package_dir}" />
159        <!-- Create the release directory -->
160        <mkdir dir="${Linux_package_dir}" />
161
162        <copy todir="${Linux_package_dir}/bin">
163            <fileset dir="${Linux_dir}/scripts"/>
164        </copy>
165
166        <copy file="${Linux_dir}/icons/figtree.png" todir="${Linux_package_dir}/images"/>
167        <copy file="${dist}/figtree.jar" todir="${Linux_package_dir}/lib"/>
168        <!--
169        <copy todir="${Linux_package_dir}/lib">
170            <fileset dir="${Linux_dir}/lib"/>
171        </copy>
172        -->
173        <copy todir="${Linux_package_dir}">
174            <fileset dir="${common_dir}/"/>
175        </copy>
176
177        <tar destfile="${release_dir}/${name}_v${version}.tgz" compression="gzip">
178            <tarfileset dir="${Linux_package_dir}" prefix="${name}_v${version}"/>
179        </tar>
180
181        <echo message="Linux/Unix version release is finished." />
182    </target>
183
184    <property name="AppleSigner" value="Developer ID Application: Andrew Rambaut (9E4WXAQ6SE)" />
185
186    <target name="mac_release" depends="dist"
187            description="release Mac version of FigTree">
188        <delete dir="${Mac_package_dir}" />
189        <!-- Create the release directory -->
190        <mkdir dir="${Mac_package_dir}" />
191
192        <copy file="${dist}/figtree.jar" todir="${Mac_package_dir}/lib"/>
193        <copy file="${dist}/figtree-pdf.jar" todir="${Mac_package_dir}/QuickLook Plugin/FigTreeQuickLookPlugin.qlgenerator/Contents/Resources"/>
194        <copy todir="${Mac_package_dir}">
195            <fileset dir="${common_dir}/"/>
196        </copy>
197        <copy todir="${Mac_package_dir}/QuickLook Plugin">
198            <fileset dir="${Mac_dir}/QuickLook Plugin"/>
199        </copy>
200
201        <taskdef name="jarbundler" classname="com.ultramixer.jarbundler.JarBundler"/>
202
203        <!-- create a jar bundle for the mac -->
204        <jarbundler dir="${Mac_package_dir}"
205                    name="${name} v${version}"
206                    mainclass="figtree.application.FigTreeApplication"
207                    icon="${Mac_dir}/icons/FigTree.icns"
208                    stubfile="${packaging_tools}/mac/universalJavaApplicationStub"
209					useJavaXKey="true"
210                    jvmversion="1.6+"
211                    vmoptions="-Xmx4096M"
212                    highresolutioncapable="true"
213                    arguments=""
214                    version="${version}"
215                    build="1"
216                    copyright="${name} v${version}, Copyright 2006-2018, Andrew Rambaut"
217                    bundleid="figtree" >
218            <javaproperty name="apple.laf.useScreenMenuBar" value="true"/>
219            <jarfileset dir="${dist}">
220                <include name="**/figtree.jar"/>
221            </jarfileset>
222            <jarfileset dir="${Mac_dir}/lib">
223                <include name="**/quaqua.jar"/>
224            </jarfileset>
225            <jarfileset dir="${Mac_dir}/lib">
226                <include name="libquaqua*.jnilib"/>
227            </jarfileset>
228            <documenttype name="FigTree tree file"
229                          extensions="tree tre trees ntf tf"
230                          iconFile="${Mac_dir}/icons/FigTreeDocIcon.icns"
231                          role="Editor"/>
232        </jarbundler>
233
234        <!-- code signing -->
235        <exec executable="codesign">
236            <arg value="--deep"/>
237            <arg value="-s"/>
238            <arg value="${AppleSigner}"/>
239            <arg value="-v"/>
240            <arg value="${Mac_package_dir}/${name} v${version}.app"/>
241        </exec>
242
243        <!-- checking code signing -->
244        <exec executable="spctl">
245            <arg value="--assess"/>
246            <arg value="--verbose=4"/>
247            <arg value="${Mac_package_dir}/${name} v${version}.app"/>
248        </exec>
249
250        <!-- create disk image -->
251        <exec executable="/usr/bin/hdiutil">
252            <arg value="create"/>
253            <arg value="-ov"/>
254            <arg value="-srcfolder"/>
255            <arg value="${Mac_package_dir}"/>
256            <arg value="-volname"/>
257            <arg value="${name} v${version}"/>
258            <arg value="-imagekey"/>
259            <arg value="zlib-level=6"/>
260            <arg value="${release_dir}/${name} v${version}.dmg"/>
261        </exec>
262
263        <exec executable="codesign">
264            <arg value="-s"/>
265            <arg value="${AppleSigner}"/>
266            <arg value="-v"/>
267            <arg value="${release_dir}/${name} v${version}.dmg"/>
268        </exec>
269
270        <echo message="Mac version release is finished." />
271    </target>
272
273    <!--
274    <taskdef name="bundleapp"
275             classname="com.oracle.appbundler.AppBundlerTask"
276             classpath="release/Mac/appbundler-1.0.jar"
277            />
278
279    <property environment="env" />
280
281    <target name="mac_release"
282            description="release Mac version of FigTree for Mountain Lion">
283        <delete dir="${Mac_package_dir}" />
284
285        <mkdir dir="${Mac_package_dir}" />
286
287        <copy file="${dist}/figtree.jar" todir="${Mac_package_dir}/lib"/>
288        <copy file="${dist}/figtree-pdf.jar" todir="${Mac_package_dir}/QuickLook Plugin/FigTreeQuickLookPlugin.qlgenerator/Contents/Resources"/>
289        <copy todir="${Mac_package_dir}">
290            <fileset dir="${common_dir}/"/>
291        </copy>
292        <copy todir="${Mac_package_dir}/QuickLook Plugin">
293            <fileset dir="${Mac_dir}/QuickLook Plugin"/>
294        </copy>
295
296        <bundleapp
297                outputdirectory="${Mac_package_dir}"
298                name="${name} v${version}"
299                displayname="${name} v${version}"
300                identifier="uk.ac.ed.bio.figtree"
301                shortversion="1.4.1"
302                copyright="${name} v${version}, Copyright 2006-2013, Andrew Rambaut"
303                applicationCategory="public.app-category.medical"
304                mainclassname="figtree/application/FigTreeApplication"
305                icon="${Mac_dir}/icons/FigTree.icns"
306                >
307            <runtime dir="${env.JAVA_HOME}"/>
308            <classpath file="./dist/figtree.jar"/>
309            <classpath file="./release/Mac/lib/quaqua.jar"/>
310            <option value="-Dapple.laf.useScreenMenuBar=true"/>
311            <option value="-Xmx1024M"/>
312        </bundleapp>
313
314        <echo message="Bundle is created." />
315
316        <copy verbose="true" overwrite="true" file="${Mac_dir}/lib/Info.plist" todir="${Mac_package_dir}/${name} v${version}.app"/>
317
318        <echo message="Mac version release is finished." />
319    </target>
320            -->
321</project>
322