Mercurial > cgi-bin > hgweb.cgi > JpegWasher
diff build.xml @ 0:db63d01a23c6
JNI calls and test case (finally!) seem to work.
author | David Barts <n5jrn@me.com> |
---|---|
date | Tue, 31 Mar 2020 13:24:48 -0700 |
parents | |
children | dc1f4359659d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build.xml Tue Mar 31 13:24:48 2020 -0700 @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="ExifWasher" default="help" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant"> + <!-- import all environment variables as env.* --> + <property environment="env"/> + + <!-- ensure required environment variables are set --> + <macrodef name="env-require"> + <attribute name="name"/> + <sequential> + <fail message="Environment variable @{name} not set!"> + <condition> + <not><isset property="env.@{name}"/></not> + </condition> + </fail> + </sequential> + </macrodef> + <env-require name="JRE_HOME"/> + <env-require name="KOTLIN_HOME"/> + + <!-- define the kotlin task --> + <property name="kotlin.lib" value="${env.KOTLIN_HOME}/libexec/lib"/> + <typedef resource="org/jetbrains/kotlin/ant/antlib.xml" + classpath="${kotlin.lib}/kotlin-ant.jar"/> + + <!-- define the package-building tasks --> + <taskdef resource="com/sun/javafx/tools/ant/antlib.xml" + uri="javafx:com.sun.javafx.tools.ant" + classpath="${env.JRE_HOME}/lib/ant-javafx.jar"/> + + <!-- cribbed from https://stackoverflow.com/questions/7129672/uppercase-lowercase-capitalize-an-ant-property --> + <scriptdef language="javascript" name="toLowerCase"> + <attribute name="value" /> + <attribute name="target" /> + <![CDATA[ + project.setProperty( attributes.get( "target" ), + attributes.get( "value" ).toLowerCase() ); + ]]> + </scriptdef> + + <!-- Define the properties used by the build --> + <property name="app.name" value="${ant.project.name}"/> + <property name="app.entry" value="name.blackcap.exifwasher.MainKt"/> + <toLowerCase target="lc.app.name" value="${app.name}"/> + <property name="jar.name" value="${basedir}/${lc.app.name}.jar"/> + <property name="work.jar" value="${basedir}/work.jar"/> + <property name="lib.home" value="${basedir}/lib"/> + <property name="src.home" value="${basedir}/src"/> + <property name="nat.dir" value="${src.home}/name/blackcap/exifwasher/exiv2"/> + <property name="bin.dir" value="${src.home}/name/blackcap/exifwasher/binaries"/> + + <!-- help message --> + <target name="help"> + <echo>You can use the following targets:</echo> + <echo> </echo> + <echo> help : (default) Prints this message </echo> + <echo> all : Cleans, compiles, and stages application</echo> + <echo> clean : Deletes work directories</echo> + <echo> compile : Compiles servlets into class files</echo> + <echo> jar : Make JAR file.</echo> + <echo> </echo> + <echo>For example, to clean, compile, and package all at once, run:</echo> + <echo>prompt> ant all </echo> + </target> + + <!-- Define the CLASSPATH --> + <target name="classpath"> + <path id="std.classpath"> + <fileset dir="${lib.home}"> + <include name="*.jar"/> + </fileset> + </path> + <path id="compile.classpath"> + <path refid="std.classpath"/> + <pathelement location="${src.home}"/> + </path> + <path id="test.classpath"> + <path refid="std.classpath"/> + <pathelement location="${work.home}"/> + </path> + </target> + + <!-- do everything but install --> + <target name="all" depends="jar" + description="Clean work dirs, compile, make JAR."/> + + <!-- compile *.kt to *.class --> + <target name="compile" depends="classpath" + description="Compile Java sources to ${work.home}"> + <kotlinc src="${src.home}" output="${work.jar}" + classpathref="compile.classpath"/> + </target> + + <!-- make .jar file --> + <target name="jar" depends="compile" description="Create JAR file."> + <jar destfile="${jar.name}"> + <manifest> + <attribute name="Main-Class" value="${app.entry}"/> + </manifest> + <zipgroupfileset dir="${lib.home}" includes="*.jar"/> + <zipfileset src="${work.jar}"/> + <zipfileset dir="${src.home}" includes="**/*.properties,**/*.dll,**/*.so,**/*.dylib"/> + </jar> + </target> + + <!-- for making bundled apps --> + <macrodef name="bundle"> + <attribute name="type"/> + <element name="args"/> + <sequential> + <fx:deploy nativeBundles="@{type}" outdir="${basedir}" outfile="${app.name}" + signBundle="false"> + <fx:application mainClass="${app.entry}" name="${app.name}" toolkit="swing" + version="1.0"/> + <fx:info description="ExifWasher" title="${app.name}" + vendor="David Barts <n5jrn@me.com>" + copyright="© MMXX, David W. Barts"/> + <fx:resources> + <fx:fileset dir="${basedir}" includes="${lc.app.name}.jar"/> + </fx:resources> + <fx:bundleArgument arg="runtime" value="${env.JRE_HOME}"/> + <args/> + </fx:deploy> + </sequential> + </macrodef> + + <target name="macapp" depends="jar" description="Create MacOS app bundle."> + <bundle type="image"> + <args> + <fx:bundleArgument arg="jvmOptions" value="-Xdock:name=${app.name}"/> + </args> + </bundle> + </target> + + <target name="app" depends="jar" description="Create app bundle."> + <bundle type="image"/> + </target> + + <target name="rpm" depends="jar" description="Create RPM package."> + <bundle type="rpm"/> + </target> + + <target name="deb" depends="jar" description="Create Debian package."> + <bundle type="deb"/> + </target> + +</project>