view build.xml @ 969:0fce9f209457 default tip

Correcting typo
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 20 Mar 2025 19:41:27 +0100 (12 days ago)
parents 203c4cc8d94d
children
line wrap: on
line source
<?xml version="1.0"?><!-- vim:set ts=2 sw=2 expandtab: -->

<!--
SPDX-License-Identifier: MPL-2.0

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 2024, 2025 MonetDB Foundation;
Copyright August 2008 - 2023 MonetDB B.V.;
Copyright 1997 - July 2008 CWI.
-->

<!--
  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" />

  <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
  -->

  <property name="jvm.version" value="8" />
  <property name="jre.version" value="jre${jvm.version}" />
  <property name="javac.flags" value="-source 8" />
  <property name="javac.flags" value="-target ${jvm.version}" />
  <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="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="distjdbc" />
    <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,compile_util,compile_client"
    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="${mcl-package}/**/*.class" />
        <!-- JdbcClient is now included in the JDBC jar -->
        <include name="${client-package}/**/*.class" />
        <include name="${util-package}/**/*.class" />
      </fileset>
      <manifest>
        <attribute name="Built-By" value="${user.name}" />
        <attribute name="Main-Class" value="org.monetdb.client.JdbcClient" />
      </manifest>
    </jar>
  </target>

  <!-- JdbcClient is now included in the JDBC jar but we also provide it by its old name for backward compatibility -->
  <target name="jar_jdbcclient" depends="jar_jdbc">
    <echo message="Copying ${jdbc-jar} to ${jdbcclient-jar}" />
    <copy file="${jdbc-jar}" tofile="${jdbcclient-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="${util-package}/FileTransferHandler.java" />
      <compilerarg line="${javac.flags}" />
    </javac>
  </target>

  <target name="compile_mcl" depends="prepare,driver">
    <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" />
      <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" />
      <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 MonetVersion.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}" />

    <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."/>

    <!-- now copy and filter the file -->
  	<copy file="${srcdir}/${jdbc-package}/MonetVersion.java.in"
  	  overwrite="true"
  	  tofile="${srcdir}/${jdbc-package}/MonetVersion.java"
  	  filtering="yes" />

    <echo message="Configured build for the ${JDBC_MAJOR}.${JDBC_MINOR} 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="META-INF/services/java.sql.Driver" />
        <include name="${jdbc-package}/**/*.java" />
        <include name="${mcl-package}/**/*.java" />
        <include name="${client-package}/**/*.java" />
        <include name="${util-package}/**/*.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}/MonetVersion.java">
          <srcfiles dir="${srcdir}">
            <include name="build.properties" />
            <include name="build.local.properties" />
            <include name="${jdbc-package}/MonetVersion.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="false"
      version="false"
      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>