AppleCommander/build/build.xml
T. Joseph Carter 160c888e0f Mac build ... builds and zips
Okay, the Mac build at this point finishes and has all the pieces
correctly where they ought to be.  However there is something wrong with
swt.  I can't get any version of it I've tried to work.  I can get the
app to start but the GUI doesn't work once you load a file.  And the
only way it starts like that from the app bundle is if the line adding
SWT to the classpath of the bundle is removed.

However it's not SWT's jar itself since if you run the jarfile by hand
and add the same SWT to the classpath, it doesn't immediately crash.  It
runs with the same GUI problem as if yu didn't specify it in the
classpath at all.

Something fishy is going on here.  But it builds, so perhaps others can
assist in figuring out the nature of the problem.  That's enough for me
to move on to the Linux build.
2017-11-01 12:45:56 -07:00

226 lines
8.0 KiB
XML

<project name="AppleCommander" default="all" basedir="..">
<description>
This script builds the distribution components.
</description>
<property name="work" value="work"/>
<property name="classes" value="${work}/classes"/>
<property name="dist" value="${work}/dist"/>
<property name="source" value="src"/>
<property name="testsrc" value="test"/>
<property name="build" value="build"/>
<property name="doc" value="documentation"/>
<property name="web" value="web"/>
<property name="javadoc" value="${work}/javadoc"/>
<property name="builddir" value="${basedir}/build" />
<property name="mac.dir" value="${basedir}/mac"/>
<property name="mac.work" value="${work}/mac/AppleCommander-mac" />
<property file="${builddir}/ACBuild.properties"/>
<property file="${builddir}/ACBuild-default.properties"/>
<condition property="swtjar"
value="${swtJarPathWin}"
else="${swtJarPathMac}">
<os family="windows"/>
</condition>
<condition property="junitjar"
value="${junitPathWin}"
else="${junitPathMac}">
<os family="windows"/>
</condition>
<condition property="signing-needed">
<available file="${keyconf}" property="keyconf-exists" />
</condition>
<taskdef name="jarbundler"
classname="com.ultramixer.jarbundler.JarBundler"
classpath="mac/jarbundler-core-3.3.0.jar" />
<target name="version" description="Get version from source.">
<property name="main.path" value="src/com/webcodepro/applecommander/ui"/>
<loadfile srcfile="${main.path}/AppleCommander.java" property="acVersion">
<filterchain>
<linecontainsregexp>
<regexp pattern='^.*String VERSION = ".*";.*$'/>
</linecontainsregexp>
<tokenfilter>
<replaceregex pattern='^.*String VERSION = "(.*)";.*$' replace='\1'/>
</tokenfilter>
<striplinebreaks/>
</filterchain>
</loadfile>
<echo>Building version ${acVersion}...</echo>
</target>
<target name="init" depends="version" description="Ensure work directory is present">
<mkdir dir="${work}"/>
<mkdir dir="${classes}"/>
<mkdir dir="${dist}"/>
<mkdir dir="${javadoc}"/>
<property name="guijar" value="${dist}/AppleCommander-${acVersion}.jar"/>
<property name="cmdjar" value="${dist}/AppleCommander-${acVersion}-ac.jar"/>
<property name="maczip" value="${dist}/AppleCommander-${acVersion}-mac.zip"/>
<property name="srczip" value="${dist}/AppleCommander-${acVersion}-src.zip"/>
<property name="webzip" value="${dist}/AppleCommander-${acVersion}-web.zip"/>
</target>
<target name="clean" depends="init" description="Wipes out work contents">
<delete dir="${classes}"/>
<delete dir="${dist}"/>
<delete dir="${javadoc}"/>
</target>
<target name="all" depends="init,jars,macBundle,sourceZip,javadoc,websiteZip" description="Everything">
<!-- Nothing else to do - depends handles it all. -->
</target>
<target name="jars" depends="init,executableGuiJar,executableCmdJar,signJars" description="Build executable jars">
<!-- Nothing else to do - depends handles it all. -->
</target>
<target name="signJars" depends="init" if="signing-needed" description="Signs the jars">
<!-- In ACBuild.properties => keyconf=${user.home}/.secret alias=name -->
<!-- See man keytool, http://java.sun.com/j2se/1.5.0/docs/tooldocs/ -->
<loadfile srcfile="${keyconf}" property="password"/>
<signjar alias="${alias}" storepass="${password}">
<fileset dir="${basedir}">
<include name="${cmdjar}"/>
<include name="${guijar}"/>
</fileset>
</signjar>
</target>
<target name="executableGuiJar" depends="init" description="Build GUI executable JAR">
<javac srcdir="${source}" destdir="${classes}" classpath="${swtjar}">
<include name="**/*.java"/>
<exclude name="**/*Test.java"/>
</javac>
<jar jarfile="${guijar}" manifest="build/manifest.mf">
<fileset dir="${classes}"/>
<fileset dir="${source}">
<include name="**/*.dump"/>
<include name="**/*.properties"/>
<include name="**/*.gif"/>
</fileset>
<fileset dir=".">
<include name="LICENSE"/>
<include name="TODO"/>
<include name="VERSIONS"/>
</fileset>
</jar>
</target>
<target name="executableCmdJar" depends="init" description="Build command-line only executable JAR">
<javac srcdir="${source}" destdir="${classes}" >
<include name="**/*.java"/>
<exclude name="**/*Test.java"/>
<compilerarg value="-XDignore.symbol.file"/>
</javac>
<jar jarfile="${cmdjar}" manifest="build/ac.mf">
<fileset dir="${classes}">
<exclude name="com/webcodepro/applecommander/ui/swt/**"/>
<exclude name="com/webcodepro/applecommander/ui/images/**"/>
</fileset>
<fileset dir="${source}">
<include name="**/*.dump"/>
<include name="**/*.properties"/>
</fileset>
<fileset dir=".">
<include name="LICENSE"/>
<include name="TODO"/>
<include name="VERSIONS"/>
</fileset>
</jar>
</target>
<target name="macBundle" depends="init,jars" description="Build Mac application bundle.">
<property name="mac.app" value="${dist}/AppleCommander.app"/>
<!--
NB: This seems like the only obvious way to turn ${swtjar}
into something we can install using jarbundler to both
copy and add to classpath. If you have a better way… :)
-->
<copy file="${swtjar}" todir="${mac.dir}/swt" />
<mkdir dir="${mac.work}" />
<jarbundler dir="${mac.work}"
name="AppleCommander" version="${acVersion}"
verbose="true" showPlist="true"
mainclass="com.webcodepro.applecommander.ui.AppleCommander"
bundleid="com.webcodepro.applecommander"
stubfile="${mac.dir}/universalJavaApplicationStub"
icon="${mac.dir}/AppleCommander.icns"
jvmversion="1.6+" useJavaXKey="true" developmentregion="English"
copyright="Copyright 2002-2008 Rob Greene and John B. Matthews.">
<jarfilelist dir="${dist}" files="AppleCommander-${acVersion}.jar" />
<jarfileset dir="${mac.dir}/swt" />
</jarbundler>
<zip destfile="${maczip}">
<zipfileset dir="${mac.work}" prefix="AppleCommander-${acVersion}-mac" />
<zipfileset dir="${dist}" prefix="AppleCommander-${acVersion}-mac">
<include name="AppleCommander-${acVersion}-ac.jar" />
</zipfileset>
</zip>
</target>
<target name="sourceZip" depends="init" description="Build source ZIP archive">
<zip zipfile="${srczip}">
<zipfileset dir=".">
<include name="ECLIPSE-CONFIG"/>
<include name="HEADER"/>
<include name="LICENSE"/>
<include name="NATIVE-COMPILE"/>
<include name="TODO"/>
<include name="VERSIONS"/>
</zipfileset>
<zipfileset dir="${source}" prefix="${source}">
<include name="**/*.java"/>
<include name="**/*.dump"/>
<include name="**/*.properties"/>
<include name="**/*.gif"/>
</zipfileset>
<zipfileset dir="${testsrc}" prefix="${testsrc}">
<include name="**/*.java"/>
<include name="**/*.dump"/>
<include name="**/*.properties"/>
<include name="**/*.gif"/>
</zipfileset>
<zipfileset dir="${build}" prefix="${build}"/>
<zipfileset dir="${doc}" prefix="${doc}">
<include name="**/*.txt"/>
</zipfileset>
<zipfileset dir="${web}" prefix="${web}">
<include name="**/*.html"/>
<include name="**/*.gif"/>
<include name="**/*.png"/>
</zipfileset>
</zip>
</target>
<target name="javadoc" depends="init" description="Build javadoc">
<javadoc destdir="${javadoc}" author="true" windowtitle="AppleCommander ${acVersion} JavaDoc"
classpath="${swtjar};${junitjar}">
<fileset dir="${source}">
<exclude name="**/*gif"/>
<exclude name="**/*dump"/>
<exclude name="**/*properties"/>
</fileset>
<fileset dir="${testsrc}">
<exclude name="**/*properties"/>
</fileset>
</javadoc>
</target>
<target name="websiteZip" depends="javadoc" description="Build website ZIP archive">
<zip zipfile="${webzip}">
<zipfileset dir="${web}">
<include name="**/*.html"/>
<include name="**/*.gif"/>
<include name="**/*.png"/>
</zipfileset>
<zipfileset dir="${javadoc}" prefix="javadoc"/>
</zip>
</target>
</project>