From 58eeb82cf8a9ed61a08574c863abb9637cd0badb Mon Sep 17 00:00:00 2001
From: Dave Cramer <davec@fastcrypt.com>
Date: Wed, 11 Dec 2002 12:29:13 +0000
Subject: [PATCH] Mike Beachy's build patch to allow ant builds without make

---
 src/interfaces/jdbc/Makefile  | 32 +++++++++++++++++---------------
 src/interfaces/jdbc/README    |  4 ++++
 src/interfaces/jdbc/build.xml | 21 +++++++++++++++++++--
 3 files changed, 40 insertions(+), 17 deletions(-)

diff --git a/src/interfaces/jdbc/Makefile b/src/interfaces/jdbc/Makefile
index 3fbafe54ce8..3e41fc9eb84 100644
--- a/src/interfaces/jdbc/Makefile
+++ b/src/interfaces/jdbc/Makefile
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 2001, PostgreSQL Global Development Group
 #
-# $Header: /cvsroot/pgsql/src/interfaces/jdbc/Attic/Makefile,v 1.36 2002/10/20 02:55:50 barry Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/jdbc/Attic/Makefile,v 1.37 2002/12/11 12:27:47 davec Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -12,21 +12,23 @@ subdir = src/interfaces/jdbc
 top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
-majorversion := $(shell echo $(VERSION) | sed 's/^\([0-9][0-9]*\)\..*$$/\1/')
-minorversion := $(shell echo $(VERSION) | sed 's/^[0-9][0-9]*\.\([0-9][0-9]*\).*$$/\1/')
+majorversion:= $(shell echo $(VERSION) | sed 's/^\([0-9][0-9]*\)\..*$$/\1/')
+minorversion:= $(shell echo $(VERSION) | sed 's/^[0-9][0-9]*\.\([0-9][0-9]*\).*$$/\1/')
 
-properties := -Dmajor=$(majorversion) -Dminor=$(minorversion) \
-		-Dfullversion=$(VERSION) \
-		-Ddef_pgport=$(DEF_PGPORT) \
-		-Denable_debug=$(enable_debug)
+build.properties: $(top_builddir)/src/Makefile.global
+	echo "# This file was created by 'make build.properties'." > build.properties
+	echo major=$(majorversion) >> build.properties
+	echo minor=$(minorversion) >> build.properties
+	echo fullversion=$(VERSION) >> build.properties
+	echo def_pgport=$(DEF_PGPORT) >> build.properties
+	echo enable_debug=$(enable_debug) >> build.properties
 
-all:
-	$(ANT) -buildfile $(srcdir)/build.xml all \
-	  $(properties)
+all: build.properties
+	$(ANT) -buildfile $(srcdir)/build.xml all
 
-install: installdirs
+install: installdirs build.properties
 	$(ANT) -buildfile $(srcdir)/build.xml install \
-	  -Dinstall.directory=$(javadir) $(properties)
+	  -Dinstall.directory=$(javadir)
 
 installdirs:
 	$(mkinstalldirs) $(javadir) 
@@ -36,7 +38,7 @@ uninstall:
 	  -Dinstall.directory=$(javadir)
 
 clean distclean maintainer-clean:
-	$(ANT) -buildfile $(srcdir)/build.xml clean
+	$(ANT) -buildfile $(srcdir)/build.xml clean_all
 
-check: all
-	$(ANT) -buildfile $(srcdir)/build.xml test $(properties)
+check: build.properties
+	$(ANT) -buildfile $(srcdir)/build.xml test
diff --git a/src/interfaces/jdbc/README b/src/interfaces/jdbc/README
index e4f364f6800..0c8555165ac 100644
--- a/src/interfaces/jdbc/README
+++ b/src/interfaces/jdbc/README
@@ -32,6 +32,10 @@ the directory PREFIX/share/java.
 
 That jar file will contain the driver for _your_ version of the JDK.
 
+If you would like to use ANT directly, first invoke 'make build.properties'
+after running the configure script with the java option. This will create a
+needed Java properties file from the configured information.
+
 REMEMBER: Once you have compiled the driver, it will work on ALL platforms
 that support that version of the API. You don't need to build it for each
 platform.
diff --git a/src/interfaces/jdbc/build.xml b/src/interfaces/jdbc/build.xml
index 3e6a61dd198..1e104a1bd55 100644
--- a/src/interfaces/jdbc/build.xml
+++ b/src/interfaces/jdbc/build.xml
@@ -6,7 +6,7 @@
 
   This file now requires Ant 1.4.1.  2002-04-18
 
-  $Header: /cvsroot/pgsql/src/interfaces/jdbc/Attic/build.xml,v 1.30 2002/10/20 00:10:55 barry Exp $
+  $Header: /cvsroot/pgsql/src/interfaces/jdbc/Attic/build.xml,v 1.31 2002/12/11 12:27:47 davec Exp $
 
 -->
 
@@ -23,6 +23,8 @@
   <property name="package" value="org/postgresql" />
   <property name="debug" value="on" />
 
+  <property file="build.properties"/>
+
   <!--
     This is a simpler method than utils.CheckVersion
     It defaults to jdbc1, but builds jdbc2 if the java.lang.Byte class is
@@ -115,12 +117,21 @@
     </javac>
   </target>
 
+  <target name="check_driver">
+    <uptodate targetfile="${package}/Driver.java" property="driver.uptodate">
+      <srcfiles dir=".">
+      <include name="${package}/Driver.java.in"/>
+      <include name="build.properties"/>
+      </srcfiles>
+    </uptodate>
+  </target>
 
   <!--
     This generates Driver.java from Driver.java.in
     It's required for importing the driver version properties
   -->
-  <target name="driver" depends="prepare,check_versions">
+  <target name="driver" depends="prepare,check_versions,check_driver"
+          unless="driver.uptodate">
     <!-- determine the edition text -->
     <condition property="edition" value="JDBC1">
         <equals arg1="${jdbc1}" arg2="true"/>
@@ -158,6 +169,9 @@
 
      <fail unless="major" message="'major' undefined. Please follow the directions in README."/>
      <fail unless="minor" message="'minor' undefined. Please follow the directions in README."/>
+     <fail unless="fullversion" message="'fullversion' undefined. Please follow the directions in README."/>
+     <fail unless="def_pgport" message="'def_pgport' undefined. Please follow the directions in README."/>
+     <fail unless="enable_debug" message="'enable_debug' undefined. Please follow the directions in README."/>
  
     <!-- Put a check for the current version here -->
 
@@ -231,6 +245,9 @@
     <delete quiet="true" file="${package}/Driver.java" />
   </target>
 
+  <target name="clean_all" depends="clean">
+    <delete quiet="true" file="build.properties" />
+  </target>
 
 
   <!-- This compiles and executes the JUnit tests -->
-- 
GitLab