mirror of
https://github.com/AppleCommander/AppleCommander.git
synced 2024-10-31 16:04:51 +00:00
564c6cef7b
According to https://stackoverflow.com/questions/5103384, ant 1.8 introduced a "misfeature" of providing the ant runtime by default in the java classpath. This causes some problems with reproducible builds, which is why later versions have a warning not to do it. The solution is to make the inclusion of ant.jar in the classpath explicit. That's been done now.
242 lines
8.4 KiB
XML
Executable File
242 lines
8.4 KiB
XML
Executable File
<project name="AppleCommander" default="all" basedir="..">
|
|
<description>
|
|
This script builds the distribution components.
|
|
</description>
|
|
|
|
<!-- Fix ant warning (explained: https://stackoverflow.com/questions/5103384) -->
|
|
<presetdef name="javac">
|
|
<javac includeantruntime="false" />
|
|
</presetdef>
|
|
|
|
<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 file="${builddir}/ACBuild.properties"/>
|
|
<property file="${builddir}/ACBuild-default.properties"/>
|
|
|
|
<!-- If you want to add a platform, create a conditional property for it here -->
|
|
<condition property="isWin" value="true">
|
|
<os family="windows" />
|
|
</condition>
|
|
<condition property="isMac" value="true">
|
|
<and>
|
|
<os family="mac" />
|
|
<os family="unix" />
|
|
</and>
|
|
</condition>
|
|
<condition property="isUnix" value="true">
|
|
<!-- macOS also provides unix, so we must explicitly exclude it here -->
|
|
<and>
|
|
<os family="unix" />
|
|
<not>
|
|
<os family="mac" />
|
|
</not>
|
|
</and>
|
|
</condition>
|
|
|
|
<condition property="signing-needed">
|
|
<available file="${keyconf}" property="keyconf-exists" />
|
|
</condition>
|
|
|
|
<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-win" if="isWin">
|
|
<property name="antjar" value="${antJarPathWin}" />
|
|
<property name="swtjar" value="${swtJarPathWin}" />
|
|
<property name="juintjar" value="${junitPathWin}" />
|
|
</target>
|
|
|
|
<target name="init-mac" if="isMac">
|
|
<property name="antjar" value="${antJarPathMac}" />
|
|
<property name="swtjar" value="${swtJarPathMac}" />
|
|
<property name="juintjar" value="${junitPathMac}" />
|
|
</target>
|
|
|
|
<target name="init-unix" if="isUnix">
|
|
<property name="antjar" value="${antJarPathUnix}" />
|
|
<property name="swtjar" value="${swtJarPathUnix}" />
|
|
<property name="juintjar" value="${junitPathUnix}" />
|
|
</target>
|
|
|
|
<target name="init" depends="version,init-win,init-mac,init-unix"
|
|
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="${antjar}:${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}" classpath="${antjar}">
|
|
<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.dir" value="mac"/>
|
|
<property name="mac.app" value="${mac.dir}/AppleCommander.app"/>
|
|
<property name="mac.Contents" value="${mac.app}/Contents"/>
|
|
<property name="mac.Java" value="${mac.Contents}/Resources/Java"/>
|
|
<copy file="${mac.dir}/Info.plist" todir="${mac.Contents}" overwrite="true">
|
|
<filterset>
|
|
<filter token="version" value="${acVersion}"/>
|
|
</filterset>
|
|
</copy>
|
|
<copy file="${guijar}" tofile="${mac.Java}/AppleCommander.jar"/>
|
|
<copy file="${cmdjar}" tofile="${user.home}/bin/ac.jar"/>
|
|
<zip destfile="${maczip}">
|
|
<zipfileset dir="${mac.app}" prefix="AppleCommander.app"/>
|
|
<zipfileset dir="${mac.app}" prefix="AppleCommander.app"
|
|
includes="Contents/MacOS/JavaApplicationStub" filemode="755"/>
|
|
</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>
|