comparison build_jre21.xml @ 899:cccaeb65a5d6

Extend Makefile with target: jre21jars Note this requires that your OS has jdk21 installed and be the default jvm.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 30 May 2024 13:08:03 +0200 (10 months ago)
parents
children 4c716a3030e3
comparison
equal deleted inserted replaced
898:281b56c61693 899:cccaeb65a5d6
1 <?xml version="1.0"?><!-- vim:set ts=2 sw=2 expandtab: -->
2
3 <!--
4 SPDX-License-Identifier: MPL-2.0
5
6 This Source Code Form is subject to the terms of the Mozilla Public
7 License, v. 2.0. If a copy of the MPL was not distributed with this
8 file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
10 Copyright 2024 MonetDB Foundation;
11 Copyright August 2008 - 2023 MonetDB B.V.;
12 Copyright 1997 - July 2008 CWI.
13 -->
14
15 <!--
16 Build file to allow ant (http://ant.apache.org/) to be used
17 to build the MonetDB Java packages, such as the JDBC driver.
18 -->
19
20 <project name="MonetDB_Java_Drivers" default="default" basedir=".">
21
22
23 <!-- set global properties for this build -->
24 <property name="srcdir" value="src/main/java" />
25 <property name="libdir" value="lib" />
26 <property name="jardir" value="jars" />
27 <property name="builddir" value="build" />
28 <property name="docdir" value="doc" />
29 <property name="jdbc-package" value="org/monetdb/jdbc" />
30 <property name="mcl-package" value="org/monetdb/mcl" />
31 <property name="client-package" value="org/monetdb/client" />
32 <property name="util-package" value="org/monetdb/util" />
33 <property name="mero-control-package" value="org/monetdb/merovingian" />
34
35 <property file="build.local.properties" />
36 <property file="build.properties" />
37
38 <!--
39 Update: cross-compile for JVM 8 (=1.8), profile compact2
40 2020-02-12, martin.van.dinther@monetdbsolutions.com
41
42 Update: cross-compile for JVM 17, profile compact2
43 2023-03-08, martin.van.dinther@monetdbsolutions.com
44
45 Update: cross-compile for JVM 21, profile compact2
46 2024-05-30, martin.van.dinther@monetdbsolutions.com
47 -->
48
49 <property name="jvm.version" value="21" />
50 <property name="jre.version" value="jre21" />
51 <property name="javac.flags" value="-source 8" />
52 <property name="javac.flags" value="-target 21" />
53 <property name="javac.flags" value="-profile compact2" />
54 <property name="javac.flags" value="-Xlint" />
55
56 <property name="jdbc-jar"
57 value="${jardir}/monetdb-jdbc-${JDBC_MAJOR}.${JDBC_MINOR}.${jre.version}.jar" />
58 <property name="jdbcclient-jar"
59 value="${jardir}/jdbcclient.${jre.version}.jar" />
60 <property name="jmonetdb-jar"
61 value="${jardir}/jmonetdb.${jre.version}.jar" />
62 <property name="mero-control-jar"
63 value="${jardir}/merocontrol.${jre.version}.jar" />
64
65 <!-- full target -->
66 <target name="all">
67 <antcall target="distjdbc" />
68 <antcall target="distmerocontrol" />
69 <antcall target="doc" />
70 </target>
71
72 <target name="distall">
73 <antcall target="distjdbc" />
74 <antcall target="distmerocontrol" />
75 </target>
76
77 <target name="default">
78 <antcall target="jar_jdbcclient" />
79 <antcall target="jar_jmonetdb" />
80 </target>
81
82 <target name="distjdbc">
83 <antcall target="jar_jdbc" />
84 <antcall target="jar_jdbcclient" />
85 </target>
86
87 <target name="distmerocontrol">
88 <antcall target="jar_mero_control" />
89 </target>
90
91 <!-- jar targets -->
92 <target name="jar_jdbc" depends="compile_mcl,compile_jdbc"
93 unless="uptodate.jdbc-jar">
94 <echo file="${builddir}/META-INF/services/java.sql.Driver" append="false">org.monetdb.jdbc.MonetDriver</echo>
95 <jar jarfile="${jdbc-jar}">
96 <fileset dir="${builddir}">
97 <include name="META-INF/services/java.sql.Driver" />
98 <include name="${jdbc-package}/**/*.class" />
99 <include name="${mcl-package}/**/*.class" />
100 <include name="${util-package}/FileTransferHandler.class" />
101 </fileset>
102 </jar>
103 </target>
104
105 <target name="jar_client" depends="compile_util,compile_client">
106 <jar jarfile="${jardir}/monetdb-clients.jar">
107 <fileset dir="${builddir}">
108 <include name="${client-package}/**/*.class" />
109 <include name="${util-package}/**/*.class" />
110 </fileset>
111 </jar>
112 </target>
113
114 <!-- a convenience jar of jdbcclient command line program plus JDBC driver -->
115 <target name="jar_jdbcclient"
116 depends="compile_mcl,compile_jdbc,compile_util,compile_client"
117 unless="uptodate.jdbcclient-jar">
118 <echo message="Building jdbcclient + JDBC driver convenience jar" />
119 <jar jarfile="${jdbcclient-jar}">
120 <fileset dir="${builddir}">
121 <include name="${client-package}/**/*.class" />
122 <include name="${util-package}/**/*.class" />
123 <include name="META-INF/services/java.sql.Driver" />
124 <include name="${jdbc-package}/**/*.class" />
125 <include name="${mcl-package}/**/*.class" />
126 </fileset>
127 <manifest>
128 <attribute name="Built-By" value="${user.name}" />
129 <attribute name="Main-Class" value="org.monetdb.client.JdbcClient" />
130 </manifest>
131 </jar>
132 </target>
133
134 <!-- a convenience jar of MeroControl plus the JMonetDB utility -->
135 <target name="jar_jmonetdb"
136 depends="compile_mcl,compile_util,compile_mero_control,compile_client"
137 unless="uptodate.jmonetdb-jar">
138 <echo message="Building MeroControl + JmonetDB convenience jar" />
139 <jar jarfile="${jmonetdb-jar}">
140 <fileset dir="${builddir}">
141 <include name="${mero-control-package}/**/*.class" />
142 <include name="${mcl-package}/**/*.class" />
143 <include name="${client-package}/JMonetDB.class" />
144 <include name="${util-package}/**/*.class" />
145 </fileset>
146 <manifest>
147 <attribute name="Built-By" value="${user.name}" />
148 <attribute name="Main-Class" value="org.monetdb.client.JMonetDB" />
149 </manifest>
150 </jar>
151 </target>
152
153 <target name="jar_mero_control"
154 depends="compile_mcl,compile_mero_control">
155 <jar jarfile="${mero-control-jar}">
156 <fileset dir="${builddir}">
157 <include name="${mero-control-package}/**/*.class" />
158 </fileset>
159 <manifest>
160 <attribute name="Built-By" value="${user.name}" />
161 </manifest>
162 </jar>
163 </target>
164
165 <!-- compile targets -->
166 <target name="compile_jdbc" depends="prepare,driver">
167 <echo message="Compiling JDBC driver" />
168 <javac
169 classpath="${srcdir}"
170 destdir="${builddir}"
171 debug="${debug}"
172 optimize="${optimize}"
173 includeantruntime="false"
174 source="${jvm.version}"
175 target="${jvm.version}"
176 >
177 <src path="${srcdir}" />
178 <include name="${jdbc-package}/**/*.java" />
179 <include name="${util-package}/FileTransferHandler.java" />
180 <compilerarg line="${javac.flags}" />
181 </javac>
182 </target>
183
184 <target name="compile_mcl" depends="prepare">
185 <echo message="Compiling MCL" />
186 <javac
187 classpath="${srcdir}"
188 srcdir="${srcdir}"
189 destdir="${builddir}"
190 debug="${debug}"
191 optimize="${optimize}"
192 includeantruntime="false"
193 source="${jvm.version}"
194 target="${jvm.version}"
195 >
196 <include name="${mcl-package}/**/*.java" />
197 <compilerarg line="${javac.flags}" />
198 </javac>
199 </target>
200
201 <target name="compile_client" depends="prepare">
202 <echo message="Compiling Clients" />
203 <javac
204 classpath="${srcdir}"
205 srcdir="${srcdir}"
206 destdir="${builddir}"
207 debug="${debug}"
208 optimize="${optimize}"
209 includeantruntime="false"
210 source="${jvm.version}"
211 target="${jvm.version}"
212 >
213 <include name="${client-package}/**/*.java" />
214 <compilerarg line="${javac.flags}" />
215 </javac>
216 </target>
217
218 <target name="compile_util" depends="prepare">
219 <echo message="Compiling Utilities" />
220 <javac
221 classpath="${srcdir}"
222 srcdir="${srcdir}"
223 destdir="${builddir}"
224 debug="${debug}"
225 optimize="${optimize}"
226 includeantruntime="false"
227 source="${jvm.version}"
228 target="${jvm.version}"
229 >
230 <include name="${util-package}/**/*.java" />
231 <compilerarg line="${javac.flags}" />
232 </javac>
233 </target>
234
235 <target name="compile_mero_control" depends="prepare">
236 <echo message="Compiling Merovingian Control library" />
237 <javac
238 classpath="${srcdir}"
239 srcdir="${srcdir}"
240 destdir="${builddir}"
241 debug="${debug}"
242 optimize="${optimize}"
243 includeantruntime="false"
244 source="${jvm.version}"
245 target="${jvm.version}"
246 >
247 <include name="${mero-control-package}/**/*.java" />
248 <compilerarg line="${javac.flags}" />
249 </javac>
250 </target>
251
252 <!--
253 This generates MonetVersion.java from its ".java.in" equivalent.
254 It's required for importing the driver version properties.
255 -->
256 <target name="driver" depends="prepare" unless="uptodate.drivers">
257 <tstamp>
258 <format property="TODAY" pattern="yyyyMMdd" />
259 </tstamp>
260
261 <!-- Some defaults -->
262 <filter token="JDBC_MAJOR" value="${JDBC_MAJOR}" />
263 <filter token="JDBC_MINOR" value="${JDBC_MINOR}" />
264 <filter token="JDBC_VER_SUFFIX" value="${JDBC_VER_SUFFIX} ${TODAY}" />
265
266 <fail unless="JDBC_MAJOR" message="'JDBC_MAJOR' undefined. Please follow the directions in build.properties."/>
267 <fail unless="JDBC_MINOR" message="'JDBC_MINOR' undefined. Please follow the directions in build.properties."/>
268 <fail unless="JDBC_VER_SUFFIX" message="'JDBC_VER_SUFFIX' undefined. Please follow the directions in build.properties."/>
269
270 <!-- now copy and filter the file -->
271 <copy file="${srcdir}/${jdbc-package}/MonetVersion.java.in"
272 overwrite="true"
273 tofile="${srcdir}/${jdbc-package}/MonetVersion.java"
274 filtering="yes" />
275
276 <echo message="Configured build for the ${JDBC_MAJOR}.${JDBC_MINOR} (${JDBC_VER_SUFFIX}) edition driver" />
277 </target>
278
279 <!-- Prepares the build directory and sets some variables -->
280 <!-- checks whether regeneration of files is necessary -->
281 <target name="prepare">
282 <condition property="debug" value="true">
283 <equals arg1="${enable_debug}" arg2="true" casesensitive="false" trim="true" />
284 </condition>
285 <condition property="debug" value="false">
286 <not>
287 <equals arg1="${enable_debug}" arg2="true" casesensitive="false" trim="true" />
288 </not>
289 </condition>
290 <condition property="optimize" value="true">
291 <equals arg1="${enable_optimize}" arg2="true" casesensitive="false" trim="true" />
292 </condition>
293 <condition property="optimize" value="false">
294 <not>
295 <equals arg1="${enable_optimize}" arg2="true" casesensitive="false" trim="true" />
296 </not>
297 </condition>
298
299 <uptodate targetfile="${jdbc-jar}" property="uptodate.jdbc-jar">
300 <srcfiles dir="${srcdir}">
301 <include name="${jdbc-package}/**/*.java" />
302 <include name="${mcl-package}/**/*.java" />
303 </srcfiles>
304 </uptodate>
305 <uptodate targetfile="${jdbcclient-jar}" property="uptodate.jdbcclient-jar">
306 <srcfiles dir="${srcdir}">
307 <include name="${client-package}/**/*.java" />
308 <include name="${jdbc-package}/**/*.java" />
309 <include name="${mcl-package}/**/*.java" />
310 </srcfiles>
311 </uptodate>
312 <uptodate targetfile="${jmonetdb-jar}" property="uptodate.jmonetdb-jar">
313 <srcfiles dir="${srcdir}">
314 <include name="${client-package}/**/*.java" />
315 <include name="${mero-control-package}/**/*.java" />
316 <include name="${mcl-package}/**/*.java" />
317 </srcfiles>
318 </uptodate>
319 <condition property="uptodate.drivers">
320 <and>
321 <uptodate targetfile="${builddir}/src/${jdbc-package}/MonetVersion.java">
322 <srcfiles dir="${srcdir}">
323 <include name="build.properties" />
324 <include name="build.local.properties" />
325 <include name="${jdbc-package}/MonetVersion.java.in" />
326 <include name="${jdbc-package}/**/*.java" />
327 </srcfiles>
328 </uptodate>
329 </and>
330 </condition>
331
332 <mkdir dir="${builddir}" />
333 <mkdir dir="${jardir}" />
334 <echo message="Debug is ${debug}, optimise is ${optimize}" />
335 </target>
336
337 <!-- This target removes the build, jar and doc directories -->
338 <target name="clean">
339 <delete quiet="true" dir="${builddir}" />
340 <delete quiet="true" dir="${jardir}" />
341 <delete quiet="true" dir="${docdir}" />
342 </target>
343
344
345 <!-- documentation target -->
346 <target name="doc"
347 depends="driver">
348 <javadoc
349 destdir="${docdir}"
350 author="false"
351 version="false"
352 use="true"
353 windowtitle="MonetDB Java APIs">
354
355 <fileset dir="${srcdir}" defaultexcludes="yes">
356 <include name="${jdbc-package}/**/*.java" />
357 <include name="${mcl-package}/**/*.java" />
358 <include name="${client-package}/**/*.java" />
359 <include name="${util-package}/**/*.java" />
360 <include name="${mero-control-package}/**/*.java" />
361 </fileset>
362 </javadoc>
363 </target>
364
365 </project>