| [5bb06bb] | 1 | <project name="CIVL" basedir="." default="compile" xmlns:jacoco="antlib:org.jacoco.ant">
|
|---|
| 2 |
|
|---|
| 3 | <import file="common.xml" />
|
|---|
| 4 |
|
|---|
| 5 | <!-- Create VERSION file from data in Version.java -->
|
|---|
| 6 |
|
|---|
| 7 | <property name="version.java" location="${mc.src.dir}/dev/civl/mc/config/IF/Version.java" />
|
|---|
| 8 | <property name="version.file" location="${root.dir}/VERSION" />
|
|---|
| 9 |
|
|---|
| 10 | <target name="version-check">
|
|---|
| 11 | <uptodate property="version.is.current" targetfile="${version.file}" srcfile="${version.java}" />
|
|---|
| 12 | </target>
|
|---|
| 13 |
|
|---|
| 14 | <target name="version" depends="version-check" unless="version.is.current">
|
|---|
| 15 | <echo message="Generating VERSION." />
|
|---|
| 16 | <loadfile property="extracted.version" srcFile="${version.java}">
|
|---|
| 17 | <filterchain>
|
|---|
| 18 | <linecontainsregexp>
|
|---|
| 19 | <regexp pattern="version\s*=" />
|
|---|
| 20 | </linecontainsregexp>
|
|---|
| 21 | <tokenfilter>
|
|---|
| 22 | <replaceregex pattern=".*version\s*=\s*"([^"]+)".*" replace="\1" />
|
|---|
| 23 | </tokenfilter>
|
|---|
| 24 | <striplinebreaks />
|
|---|
| 25 | </filterchain>
|
|---|
| 26 | </loadfile>
|
|---|
| 27 | <loadfile property="extracted.date" srcFile="${version.java}">
|
|---|
| 28 | <filterchain>
|
|---|
| 29 | <linecontainsregexp>
|
|---|
| 30 | <regexp pattern="date\s*=" />
|
|---|
| 31 | </linecontainsregexp>
|
|---|
| 32 | <tokenfilter>
|
|---|
| 33 | <replaceregex pattern=".*date\s*=\s*"([^"]+)".*" replace="\1" />
|
|---|
| 34 | </tokenfilter>
|
|---|
| 35 | <striplinebreaks />
|
|---|
| 36 | </filterchain>
|
|---|
| 37 | </loadfile>
|
|---|
| 38 | <echo file="${root.dir}/VERSION" message="${extracted.version} ${extracted.date} " />
|
|---|
| 39 | </target>
|
|---|
| 40 |
|
|---|
| 41 | <!-- Compile -->
|
|---|
| 42 | <target name="compile" depends="version">
|
|---|
| 43 | <ant dir="${mc.dir}" target="compile" inheritAll="false" />
|
|---|
| 44 | </target>
|
|---|
| 45 |
|
|---|
| 46 | <!-- Test -->
|
|---|
| 47 | <target name="test">
|
|---|
| 48 | <ant dir="${sarl.dir}" target="test" inheritAll="false" />
|
|---|
| 49 | <ant dir="${abc.dir}" target="test" inheritAll="false" />
|
|---|
| 50 | <ant dir="${gmc.dir}" target="test" inheritAll="false" />
|
|---|
| 51 | <ant dir="${mc.dir}" target="test" inheritAll="false" />
|
|---|
| 52 | </target>
|
|---|
| 53 |
|
|---|
| 54 | <!-- Javadocs -->
|
|---|
| 55 | <target name="javadoc">
|
|---|
| 56 | <ant dir="${sarl.dir}" target="javadoc" inheritAll="false" />
|
|---|
| 57 | <ant dir="${abc.dir}" target="javadoc" inheritAll="false" />
|
|---|
| 58 | <ant dir="${gmc.dir}" target="javadoc" inheritAll="false" />
|
|---|
| 59 | <ant dir="${mc.dir}" target="javadoc" inheritAll="false" />
|
|---|
| 60 | </target>
|
|---|
| 61 |
|
|---|
| 62 | <!-- Clean -->
|
|---|
| 63 | <target name="clean" depends="clean-default">
|
|---|
| 64 | <ant dir="${sarl.dir}" target="clean" inheritAll="false" />
|
|---|
| 65 | <ant dir="${abc.dir}" target="clean" inheritAll="false" />
|
|---|
| 66 | <ant dir="${gmc.dir}" target="clean" inheritAll="false" />
|
|---|
| 67 | <ant dir="${mc.dir}" target="clean" inheritAll="false" />
|
|---|
| 68 | <delete dir="${lib.dir}" />
|
|---|
| 69 | <delete dir="${app.dir}" />
|
|---|
| 70 | </target>
|
|---|
| 71 |
|
|---|
| 72 |
|
|---|
| 73 | <!-- Single non-modular JAR creation -->
|
|---|
| 74 |
|
|---|
| 75 | <!-- everything in one JAR, including all dependencies -->
|
|---|
| 76 |
|
|---|
| 77 | <target name="check.uptodate.complete.jar">
|
|---|
| 78 | <uptodate property="uptodate.complete.jar" targetfile="${civl.complete.jar}">
|
|---|
| 79 | <srcfiles dir="${sarl.bin.dir}" />
|
|---|
| 80 | <srcfiles dir="${gmc.bin.dir}" />
|
|---|
| 81 | <srcfiles dir="${abc.bin.dir}" />
|
|---|
| 82 | <srcfiles dir="${mc.bin.dir}" />
|
|---|
| 83 | <srcfiles file="${antlr3.runtime.jar}" />
|
|---|
| 84 | <srcfiles file="${antlr4.runtime.jar}" />
|
|---|
| 85 | </uptodate>
|
|---|
| 86 | </target>
|
|---|
| 87 |
|
|---|
| 88 | <target name="civl.complete.jar" depends="compile,check.uptodate.complete.jar" unless="uptodate.complete.jar" description="Create single non-modular JAR">
|
|---|
| 89 | <jar destfile="${civl.complete.jar}">
|
|---|
| 90 | <fileset dir="${root.dir}" includes="include/" />
|
|---|
| 91 | <fileset dir="${sarl.bin.dir}" excludes="module-info.class" />
|
|---|
| 92 | <fileset dir="${gmc.bin.dir}" excludes="module-info.class" />
|
|---|
| 93 | <fileset dir="${abc.bin.dir}" excludes="module-info.class" />
|
|---|
| 94 | <fileset dir="${mc.bin.dir}" excludes="module-info.class" />
|
|---|
| 95 | <zipfileset includes="**/*.class" excludes="module-info.class" src="${antlr3.runtime.jar}" />
|
|---|
| 96 | <zipfileset includes="**/*.class" excludes="module-info.class" src="${antlr4.runtime.jar}" />
|
|---|
| 97 | <manifest>
|
|---|
| 98 | <attribute name="Build-By" value="${user.name}" />
|
|---|
| 99 | <attribute name="Main-Class" value="${main.class}" />
|
|---|
| 100 | </manifest>
|
|---|
| 101 | </jar>
|
|---|
| 102 | </target>
|
|---|
| 103 |
|
|---|
| 104 |
|
|---|
| 105 | <!-- Modular JAR creation -->
|
|---|
| 106 |
|
|---|
| 107 | <!-- These modular jars contain only the code in the module, not
|
|---|
| [d5cb19a] | 108 | code used by that code. So, e.g., ANTLR runtime code is not
|
|---|
| 109 | included. -->
|
|---|
| 110 |
|
|---|
| [5bb06bb] | 111 | <target name="jar.sarl" depends="compile">
|
|---|
| 112 | <mkdir dir="${lib.dir}" />
|
|---|
| 113 | <jar destfile="${lib.dir}/${mod.sarl}.jar" basedir="${sarl.bin.dir}" />
|
|---|
| 114 | </target>
|
|---|
| 115 |
|
|---|
| 116 | <target name="jar.gmc" depends="compile">
|
|---|
| 117 | <mkdir dir="${lib.dir}" />
|
|---|
| 118 | <jar destfile="${lib.dir}/${mod.gmc}.jar" basedir="${gmc.bin.dir}" />
|
|---|
| 119 | </target>
|
|---|
| 120 |
|
|---|
| 121 | <target name="jar.abc" depends="compile">
|
|---|
| 122 | <mkdir dir="${lib.dir}" />
|
|---|
| 123 | <jar destfile="${lib.dir}/${mod.abc}.jar" basedir="${abc.bin.dir}" />
|
|---|
| 124 | </target>
|
|---|
| 125 |
|
|---|
| 126 | <target name="jar.mc" depends="compile">
|
|---|
| 127 | <mkdir dir="${lib.dir}" />
|
|---|
| 128 | <jar destfile="${lib.dir}/${mod.mc}.jar" basedir="${mc.bin.dir}" />
|
|---|
| 129 | </target>
|
|---|
| 130 |
|
|---|
| 131 | <target name="lib" depends="jar.sarl,jar.gmc,jar.abc,jar.mc">
|
|---|
| 132 | <copy file="${antlr3.runtime.mod.jar.path}" todir="${lib.dir}" />
|
|---|
| 133 | <copy file="${antlr4.runtime.mod.jar.path}" todir="${lib.dir}" />
|
|---|
| 134 | </target>
|
|---|
| 135 |
|
|---|
| 136 | <!-- Stand-alone app with custom JVM -->
|
|---|
| 137 |
|
|---|
| 138 | <!-- for reasons I don't understand, the app doesn't get updated
|
|---|
| [cb4d4f4] | 139 | even after it and the lib are deleted and ant app is re-run.
|
|---|
| 140 | Where is it getting the old code from? Is it cached somewhere?
|
|---|
| 141 | -->
|
|---|
| [5bb06bb] | 142 |
|
|---|
| 143 | <target name="app" depends="lib">
|
|---|
| 144 | <link destdir="${app.dir}" modulepath="${lib.dir}" launchers="civl=${mod.mc}/${main.class}">
|
|---|
| 145 | <module name="${mod.sarl}" />
|
|---|
| 146 | <module name="${mod.gmc}" />
|
|---|
| 147 | <module name="${mod.abc}" />
|
|---|
| 148 | <module name="${mod.mc}" />
|
|---|
| 149 | <module name="${mod.antlr3}" />
|
|---|
| 150 | <module name="${mod.antlr4}" />
|
|---|
| 151 | <module name="java.base" />
|
|---|
| 152 | </link>
|
|---|
| 153 | </target>
|
|---|
| 154 |
|
|---|
| 155 | <target name="run" depends="app" description="Run the civl app">
|
|---|
| 156 | <exec executable="${app.dir}/bin/civl" />
|
|---|
| 157 | </target>
|
|---|
| 158 |
|
|---|
| 159 | <target name="all" depends="civl.complete.jar,app,test,javadoc" />
|
|---|
| [d5cb19a] | 160 |
|
|---|
| 161 | </project>
|
|---|