Mercurial > hg > monetdb-java
changeset 747:342fc48c95cd
Extend makefile with targets: jre17jars and testsjar
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Wed, 08 Mar 2023 19:59:10 +0100 (2023-03-08) |
parents | fa425d36a0b1 |
children | 50b8cc8200cd |
files | Makefile build.xml build_jre17.xml |
diffstat | 3 files changed, 399 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile +++ b/Makefile @@ -2,9 +2,17 @@ all: src/main/java/org/monetdb/jdbc/Mone ant -f build.xml distjdbc distmerocontrol cd tests; ant -f build.xml jar_jdbctests +jre17jars: src/main/java/org/monetdb/jdbc/MonetDriver.java + rm -rf build + ant -f build_jre17.xml distjdbc + rm -rf build + src/main/java/org/monetdb/jdbc/MonetDriver.java: build.properties src/main/java/org/monetdb/jdbc/MonetDriver.java.in . ./build.properties; sed -e "s/@JDBC_MAJOR@/$$JDBC_MAJOR/g;s/@JDBC_MINOR@/$$JDBC_MINOR/g;s/@JDBC_VER_SUFFIX@/$$JDBC_VER_SUFFIX $$buildno/g;s/@JDBC_DEF_PORT@/$$JDBC_DEF_PORT/g" src/main/java/org/monetdb/jdbc/MonetDriver.java.in > src/main/java/org/monetdb/jdbc/MonetDriver.java +testsjar: + cd tests; ant -f build.xml jar_jdbctests + doc: ant -f build.xml doc
--- a/build.xml +++ b/build.xml @@ -36,21 +36,11 @@ Copyright 1997 - July 2008 CWI, August 2 <property file="build.local.properties" /> <property file="build.properties" /> - <!-- - - Cross-compile for JVM 1.5 ("Java 5"). This allows the driver to work with older java installations. - see also https://blogs.oracle.com/darcy/entry/bootclasspath_older_source for details on the error message w.r.t rt.jar - to get around this issue, the -Xlint:-options compiler option has also been addded. - 2013-04-17, hannes@cwi.nl - - Update: cross-compile for JVM 1.7 since 1.5 and 1.6 are both long - since EOL. - 2015-07-16, sjoerd@acm.org - + <!-- Update: cross-compile for JVM 8 (=1.8), profile compact2 2020-02-12, martin.van.dinther@monetdbsolutions.com + --> - --> <property name="jvm.version" value="8" /> <property name="jre.version" value="jre8" /> <property name="javac.flags" value="-source 8" />
new file mode 100644 --- /dev/null +++ b/build_jre17.xml @@ -0,0 +1,389 @@ +<?xml version="1.0"?><!-- vim:set ts=2 sw=2 expandtab: --> + +<!-- +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at http://mozilla.org/MPL/2.0/. + +Copyright 1997 - July 2008 CWI, August 2008 - 2023 MonetDB B.V. +--> + +<!-- + Build file to allow ant (http://ant.apache.org/) to be used + to build the MonetDB Java packages, such as the JDBC driver. +--> + +<project name="MonetDB_Java_Drivers" default="default" basedir="."> + + + <!-- set global properties for this build --> + <property name="srcdir" value="src/main/java" /> + <property name="libdir" value="lib" /> + <property name="jardir" value="jars" /> + <property name="builddir" value="build" /> + <property name="docdir" value="doc" /> + <property name="jdbc-package" value="org/monetdb/jdbc" /> + <property name="mcl-package" value="org/monetdb/mcl" /> + <property name="client-package" value="org/monetdb/client" /> + <property name="util-package" value="org/monetdb/util" /> + <property name="mero-control-package" value="org/monetdb/merovingian" /> + + <!-- old nl/cwi/monetdb packages for some deprecated classes as of nov2020 --> + <property name="nl-cwi-jdbc-package" value="nl/cwi/monetdb/jdbc" /> + <property name="nl-cwi-mcl-package" value="nl/cwi/monetdb/mcl" /> + <property name="nl-cwi-client-package" value="nl/cwi/monetdb/client" /> + + <property file="build.local.properties" /> + <property file="build.properties" /> + + <!-- + Update: cross-compile for JVM 8 (=1.8), profile compact2 + 2020-02-12, martin.van.dinther@monetdbsolutions.com + + Update: cross-compile for JVM 17, profile compact2 + 2023-03-08, martin.van.dinther@monetdbsolutions.com + --> + + <property name="jvm.version" value="17" /> + <property name="jre.version" value="jre17" /> + <property name="javac.flags" value="-source 17" /> + <property name="javac.flags" value="-target 17" /> + <property name="javac.flags" value="-profile compact2" /> + <property name="javac.flags" value="-Xlint" /> + + <property name="jdbc-jar" + value="${jardir}/monetdb-jdbc-${JDBC_MAJOR}.${JDBC_MINOR}.${jre.version}.jar" /> + <property name="jdbcclient-jar" + value="${jardir}/jdbcclient.${jre.version}.jar" /> + <property name="jmonetdb-jar" + value="${jardir}/jmonetdb.${jre.version}.jar" /> + <property name="mcl-jar" + value="${jardir}/monetdb-mcl-${MCL_MAJOR}.${MCL_MINOR}.${jre.version}.jar" /> + <property name="mero-control-jar" + value="${jardir}/merocontrol.${jre.version}.jar" /> + + <!-- full target --> + <target name="all"> + <antcall target="distjdbc" /> + <antcall target="distmerocontrol" /> + <antcall target="doc" /> + </target> + + <target name="distall"> + <antcall target="distjdbc" /> + <antcall target="distmerocontrol" /> + </target> + + <target name="default"> + <antcall target="jar_jdbcclient" /> + <antcall target="jar_jmonetdb" /> + </target> + + <target name="distjdbc"> + <antcall target="jar_jdbc" /> + <antcall target="jar_jdbcclient" /> + </target> + + <target name="distmerocontrol"> + <antcall target="jar_mero_control" /> + </target> + + <!-- jar targets --> + <target name="jar_jdbc" depends="compile_mcl,compile_jdbc" + unless="uptodate.jdbc-jar"> + <echo file="${builddir}/META-INF/services/java.sql.Driver" append="false">org.monetdb.jdbc.MonetDriver</echo> + <jar jarfile="${jdbc-jar}"> + <fileset dir="${builddir}"> + <include name="META-INF/services/java.sql.Driver" /> + <include name="${jdbc-package}/**/*.class" /> + <include name="${nl-cwi-jdbc-package}/MonetDriver.class" /> + <include name="${nl-cwi-jdbc-package}/types/*.class" /> + <include name="${mcl-package}/**/*.class" /> + <include name="${nl-cwi-mcl-package}/net/MapiSocket.class" /> + <include name="${util-package}/FileTransferHandler.class" /> + </fileset> + </jar> + </target> + + <target name="jar_client" depends="compile_util,compile_client"> + <jar jarfile="${jardir}/monetdb-clients.jar"> + <fileset dir="${builddir}"> + <include name="${client-package}/**/*.class" /> + <include name="${nl-cwi-client-package}/JdbcClient.class" /> + <include name="${util-package}/**/*.class" /> + </fileset> + </jar> + </target> + + <!-- a convenience jar of jdbcclient command line program plus JDBC driver --> + <target name="jar_jdbcclient" + depends="compile_mcl,compile_jdbc,compile_util,compile_client" + unless="uptodate.jdbcclient-jar"> + <echo message="Building jdbcclient + JDBC driver convenience jar" /> + <jar jarfile="${jdbcclient-jar}"> + <fileset dir="${builddir}"> + <include name="${client-package}/**/*.class" /> + <include name="${nl-cwi-client-package}/JdbcClient.class" /> + <include name="${util-package}/**/*.class" /> + <include name="META-INF/services/java.sql.Driver" /> + <include name="${jdbc-package}/**/*.class" /> + <include name="${nl-cwi-jdbc-package}/MonetDriver.class" /> + <include name="${nl-cwi-jdbc-package}/types/*.class" /> + <include name="${mcl-package}/**/*.class" /> + <include name="${nl-cwi-mcl-package}/net/MapiSocket.class" /> + </fileset> + <manifest> + <attribute name="Built-By" value="${user.name}" /> + <attribute name="Main-Class" value="org.monetdb.client.JdbcClient" /> + </manifest> + </jar> + </target> + + <!-- a convenience jar of MeroControl plus the JMonetDB utility --> + <target name="jar_jmonetdb" + depends="compile_mcl,compile_util,compile_mero_control,compile_client" + unless="uptodate.jmonetdb-jar"> + <echo message="Building MeroControl + JmonetDB convenience jar" /> + <jar jarfile="${jmonetdb-jar}"> + <fileset dir="${builddir}"> + <include name="${mero-control-package}/**/*.class" /> + <include name="${mcl-package}/**/*.class" /> + <include name="${client-package}/JMonetDB.class" /> + <include name="${util-package}/**/*.class" /> + </fileset> + <manifest> + <attribute name="Built-By" value="${user.name}" /> + <attribute name="Main-Class" value="org.monetdb.client.JMonetDB" /> + </manifest> + </jar> + </target> + + <target name="jar_mero_control" + depends="compile_mcl,compile_mero_control"> + <jar jarfile="${mero-control-jar}"> + <fileset dir="${builddir}"> + <include name="${mero-control-package}/**/*.class" /> + </fileset> + <manifest> + <attribute name="Built-By" value="${user.name}" /> + </manifest> + </jar> + </target> + + <!-- compile targets --> + <target name="compile_jdbc" depends="prepare,driver"> + <echo message="Compiling JDBC driver" /> + <javac + classpath="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <src path="${srcdir}" /> + <include name="${jdbc-package}/**/*.java" /> + <include name="${nl-cwi-jdbc-package}/MonetDriver.java" /> + <include name="${nl-cwi-jdbc-package}/types/*.java" /> + <include name="${nl-cwi-mcl-package}/net/MapiSocket.java" /> + <include name="${util-package}/FileTransferHandler.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <target name="compile_mcl" depends="prepare"> + <echo message="Compiling MCL" /> + <javac + classpath="${srcdir}" + srcdir="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <include name="${mcl-package}/**/*.java" /> + <include name="${nl-cwi-mcl-package}/net/MapiSocket.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <target name="compile_client" depends="prepare"> + <echo message="Compiling Clients" /> + <javac + classpath="${srcdir}" + srcdir="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <include name="${client-package}/**/*.java" /> + <include name="${nl-cwi-client-package}/JdbcClient.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <target name="compile_util" depends="prepare"> + <echo message="Compiling Utilities" /> + <javac + classpath="${srcdir}" + srcdir="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <include name="${util-package}/**/*.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <target name="compile_mero_control" depends="prepare"> + <echo message="Compiling Merovingian Control library" /> + <javac + classpath="${srcdir}" + srcdir="${srcdir}" + destdir="${builddir}" + debug="${debug}" + optimize="${optimize}" + includeantruntime="false" + source="${jvm.version}" + target="${jvm.version}" + > + <include name="${mero-control-package}/**/*.java" /> + <compilerarg line="${javac.flags}" /> + </javac> + </target> + + <!-- + This generates MonetDriver.java from its ".java.in" equivalent. + It's required for importing the driver version properties. + --> + <target name="driver" depends="prepare" unless="uptodate.drivers"> + <tstamp> + <format property="TODAY" pattern="yyyyMMdd" /> + </tstamp> + + <!-- Some defaults --> + <filter token="JDBC_MAJOR" value="${JDBC_MAJOR}" /> + <filter token="JDBC_MINOR" value="${JDBC_MINOR}" /> + <filter token="MCL_MAJOR" value="${MCL_MAJOR}" /> + <filter token="MCL_MINOR" value="${MCL_MINOR}" /> + <filter token="JDBC_DEF_PORT" value="${JDBC_DEF_PORT}" /> + <filter token="JDBC_VER_SUFFIX" value="${JDBC_VER_SUFFIX} ${TODAY}" /> + + <fail unless="JDBC_MAJOR" message="'JDBC_MAJOR' undefined. Please follow the directions in build.properties."/> + <fail unless="JDBC_MINOR" message="'JDBC_MINOR' undefined. Please follow the directions in build.properties."/> + <fail unless="JDBC_DEF_PORT" message="'JDBC_DEF_PORT' undefined. Please follow the directions in build.properties."/> + <fail unless="JDBC_VER_SUFFIX" message="'JDBC_VER_SUFFIX' undefined. Please follow the directions in build.properties."/> + + <!-- now copy and filter the file --> + <copy file="${srcdir}/${jdbc-package}/MonetDriver.java.in" + overwrite="true" + tofile="${srcdir}/${jdbc-package}/MonetDriver.java" + filtering="yes" /> + + <echo message="Configured build for the ${JDBC_MAJOR}.${JDBC_MINOR} (${JDBC_VER_SUFFIX}) edition driver" /> + </target> + + <!-- Prepares the build directory and sets some variables --> + <!-- checks whether regeneration of files is necessary --> + <target name="prepare"> + <condition property="debug" value="true"> + <equals arg1="${enable_debug}" arg2="true" casesensitive="false" trim="true" /> + </condition> + <condition property="debug" value="false"> + <not> + <equals arg1="${enable_debug}" arg2="true" casesensitive="false" trim="true" /> + </not> + </condition> + <condition property="optimize" value="true"> + <equals arg1="${enable_optimize}" arg2="true" casesensitive="false" trim="true" /> + </condition> + <condition property="optimize" value="false"> + <not> + <equals arg1="${enable_optimize}" arg2="true" casesensitive="false" trim="true" /> + </not> + </condition> + + <uptodate targetfile="${jdbc-jar}" property="uptodate.jdbc-jar"> + <srcfiles dir="${srcdir}"> + <include name="${jdbc-package}/**/*.java" /> + <include name="${nl-cwi-jdbc-package}/MonetDriver.java" /> + <include name="${nl-cwi-jdbc-package}/types/*.java" /> + <include name="${mcl-package}/**/*.java" /> + <include name="${nl-cwi-mcl-package}/net/MapiSocket.java" /> + </srcfiles> + </uptodate> + <uptodate targetfile="${jdbcclient-jar}" property="uptodate.jdbcclient-jar"> + <srcfiles dir="${srcdir}"> + <include name="${client-package}/**/*.java" /> + <include name="${nl-cwi-client-package}/JdbcClient.java" /> + <include name="${jdbc-package}/**/*.java" /> + <include name="${nl-cwi-jdbc-package}/MonetDriver.java" /> + <include name="${nl-cwi-jdbc-package}/types/*.java" /> + <include name="${mcl-package}/**/*.java" /> + <include name="${nl-cwi-mcl-package}/net/MapiSocket.java" /> + </srcfiles> + </uptodate> + <uptodate targetfile="${jmonetdb-jar}" property="uptodate.jmonetdb-jar"> + <srcfiles dir="${srcdir}"> + <include name="${client-package}/**/*.java" /> + <include name="${mero-control-package}/**/*.java" /> + <include name="${mcl-package}/**/*.java" /> + </srcfiles> + </uptodate> + <condition property="uptodate.drivers"> + <and> + <uptodate targetfile="${builddir}/src/${jdbc-package}/MonetDriver.java"> + <srcfiles dir="${srcdir}"> + <include name="build.properties" /> + <include name="build.local.properties" /> + <include name="${jdbc-package}/MonetDriver.java.in" /> + <include name="${jdbc-package}/**/*.java" /> + </srcfiles> + </uptodate> + </and> + </condition> + + <mkdir dir="${builddir}" /> + <mkdir dir="${jardir}" /> + <echo message="Debug is ${debug}, optimise is ${optimize}" /> + </target> + + <!-- This target removes the build, jar and doc directories --> + <target name="clean"> + <delete quiet="true" dir="${builddir}" /> + <delete quiet="true" dir="${jardir}" /> + <delete quiet="true" dir="${docdir}" /> + </target> + + + <!-- documentation target --> + <target name="doc" + depends="driver"> + <javadoc + destdir="${docdir}" + author="true" + version="true" + use="true" + windowtitle="MonetDB Java APIs"> + + <fileset dir="${srcdir}" defaultexcludes="yes"> + <include name="${jdbc-package}/**/*.java" /> + <include name="${mcl-package}/**/*.java" /> + <include name="${client-package}/**/*.java" /> + <include name="${util-package}/**/*.java" /> + <include name="${mero-control-package}/**/*.java" /> + </fileset> + </javadoc> + </target> + +</project>