Mercurial > cgi-bin > hgweb.cgi > JpegWasher
diff lib/mod/build_mod.xml @ 33:3d86f0391168
Work on improving the build system.
author | David Barts <davidb@stashtea.com> |
---|---|
date | Fri, 24 Apr 2020 19:45:57 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/mod/build_mod.xml Fri Apr 24 19:45:57 2020 -0700 @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="mod" default="help" basedir="."> + <!-- 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"/> + + <!-- load launch4j (Windows app builder) --> + <!-- load m-o-d (Linux Gnome app builder) --> + + <!-- 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}"/> + <toLowerCase target="lc.app.name" value="${app.name}"/> + <property name="jar.name" value="${basedir}/${lc.app.name}.jar"/> + <property name="src.home" value="${basedir}/src"/> + <property name="work.home" value="${basedir}/work"/> + + <!-- help message --> + <target name="help"> + <echo>You can use the following targets:</echo> + <echo> </echo> + <echo> help : (default) Prints this message </echo> + <echo> clean : Deletes work directories</echo> + <echo> compile : Compiles source 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 -f build_mod.xml all </echo> + </target> + + <!-- do everything --> + <target name="all" depends="clean,jar" + description="Clean work dirs, compile, make JAR."/> + + <!-- clean old cruft out of our way --> + <target name="clean" + description="Delete old work and dist directories."> + <delete dir="${work.home}"/> + </target> + + <!-- make new dist and work trees --> + <target name="mkdirs" description="Create working dirs"> + <mkdir dir="${work.home}"/> + </target> + + <!-- compile *.java to *.class --> + <target name="compile" depends="mkdirs" + description="Compile Java sources to ${work.home}"> + <javac srcdir="${src.home}" destdir="${work.home}" debug="true" + includeAntRuntime="true"> + </javac> + </target> + + <!-- make .jar file --> + <target name="jar" depends="compile" description="Create JAR file."> + <jar destfile="${jar.name}"> + <fileset dir="${work.home}"/> + </jar> + </target> + +</project>