source: CIVL/build.xml@ 8ae32f6

1.23 2.0 main
Last change on this file since 8ae32f6 was 5bb06bb, checked in by Stephen Siegel <siegel@…>, 2 weeks ago

Generating VERSION from the new Java source file Version.java.

  • Property mode set to 100644
File size: 5.6 KB
RevLine 
[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*&quot;([^&quot;]+)&quot;.*" 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*&quot;([^&quot;]+)&quot;.*" replace="\1" />
34 </tokenfilter>
35 <striplinebreaks />
36 </filterchain>
37 </loadfile>
38 <echo file="${root.dir}/VERSION" message="${extracted.version} ${extracted.date}&#10;" />
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>
Note: See TracBrowser for help on using the repository browser.