diff --git a/src/interfaces/Makefile b/src/interfaces/Makefile index 94f0969d34..3283f550db 100644 --- a/src/interfaces/Makefile +++ b/src/interfaces/Makefile @@ -1,283 +1,65 @@ #------------------------------------------------------------------------- # -# Makefile -# Makefile for Java JDBC interface +# Makefile.inc-- +# Makefile for src/bin (utility programs) +# +# Copyright (c) 1994, Regents of the University of California +# # # IDENTIFICATION -# $Id: Makefile,v 1.37 2000/04/26 05:50:18 peter Exp $ +# $Header: /cvsroot/pgsql/src/interfaces/Makefile,v 1.38 2000/04/26 09:03:10 wieck Exp $ # #------------------------------------------------------------------------- -FIND = find -IDL2JAVA = idltojava -fno-cpp -fno-tie -JAR = jar -JAVA = java -JAVAC = javac -g -JAVADOC = javadoc -RM = rm -f -TOUCH = touch +SRCDIR= .. +include $(SRCDIR)/Makefile.global -# This defines how to compile a java class -.java.class: - $(JAVAC) $< -.SUFFIXES: .class .java -.PHONY: all clean doc examples msg +# Note: the klugery for perl5 is to ensure that the perl5 shared lib +# gets built with the correct path to the installed location of libpq +# during "make install", but is built against the local tree during +# ordinary building and testing. During install, we must also guard +# against the likelihood that we don't have permissions to install into +# the Perl module library. -# This is the base directory of the driver. In 7.0, this changed from -# postgresql to org/postgresql -PGBASE = org/postgresql +.DEFAULT all install clean dep depend distclean: + $(MAKE) -C libpq $@ + $(MAKE) -C ecpg $@ +ifeq ($(HAVE_Cplusplus), true) + $(MAKE) -C libpq++ $@ +else + echo $(HAVE_Cplusplus): No C++ +endif + $(MAKE) -C libpgeasy $@ +ifeq ($(USE_TCL), true) + $(MAKE) -C libpgtcl $@ +endif +ifeq ($(USE_PERL), true) + if [ "$@" = "install" ]; then \ + $(MAKE) $(MFLAGS) install-perl5; \ + else \ + $(MAKE) $(MFLAGS) perl5/Makefile; \ + $(MAKE) $(MFLAGS) -C perl5 $@; \ + fi +endif +ifeq ($(USE_ODBC), true) + $(MAKE) -C odbc $@ +endif -# In 6.5, the all rule builds the makeVersion class which then calls make using -# the jdbc1 or jdbc2 rules -all: - @echo ------------------------------------------------------------ - @echo Due to problems with some JVMs that dont return a meaningful - @echo version number, we have had to make the choice of what jdbc - @echo version is built as a compile time option. - @echo - @echo If you are using JDK1.1.x, you will need the JDBC1.2 driver. - @echo To compile, type: - @echo " make jdbc1 jar" - @echo - @echo "If you are using JDK1.2 (aka Java2) you need the JDBC2." - @echo To compile, type: - @echo " make jdbc2 jar" - @echo - @echo Once you have done this, a postgresql.jar file will be - @echo produced. This file will only work with that particular - @echo JVM. - @echo - @echo ------------------------------------------------------------ +perl5/Makefile: perl5/Makefile.PL + cd perl5 && $(PERL) Makefile.PL POLLUTE=1 -msg: - @echo ------------------------------------------------------------ - @echo The JDBC driver has now been built. To make it available to - @echo other applications, copy the postgresql.jar file to a public - @echo "place (under unix this could be /usr/local/lib) and add it" - @echo to the class path. - @echo - @echo Then either add -Djdbc.drivers=postgresql.Driver to the - @echo commandline when running your application, or edit the - @echo "properties file for your application (~/.hotjava/properties" - @echo "under unix for HotJava), and add a line containing" - @echo jdbc.drivers=postgresql.Driver - @echo - @echo More details are in the README file and in the main postgresql - @echo documentation. - @echo - @echo ------------------------------------------------------------ - @echo To build the examples, type: - @echo " make examples" - @echo - @echo "To build the CORBA example (requires Java2):" - @echo " make corba" - @echo ------------------------------------------------------------ - @echo +install-perl5: perl5/Makefile + $(MAKE) -C perl5 clean + cd perl5 && POSTGRES_HOME="$(POSTGRESDIR)" $(PERL) Makefile.PL POLLUTE=1 + $(MAKE) -C perl5 all + -@if [ -w `$(MAKE) --quiet -C perl5 echo-installdir` ]; then \ + $(MAKE) $(MFLAGS) -C perl5 install; \ + rm -f perl5/Makefile; \ + else \ + echo "Skipping install of Perl module for lack of permissions."; \ + echo "To install it, cd into interfaces/perl5, su to become the"; \ + echo "appropriate user, and do '$(MAKE) install'."; \ + fi -dep depend: - -# This rule builds the javadoc documentation -doc: - export CLASSPATH=.;\ - $(JAVADOC) -public \ - org.postgresql \ - org.postgresql.fastpath \ - org.postgresql.largeobject - -# These classes form the driver. These, and only these are placed into -# the jar file. -OBJ_COMMON= $(PGBASE)/Connection.class \ - $(PGBASE)/Driver.class \ - $(PGBASE)/Field.class \ - $(PGBASE)/PG_Stream.class \ - $(PGBASE)/ResultSet.class \ - $(PGBASE)/errors.properties \ - $(PGBASE)/errors_fr.properties \ - $(PGBASE)/fastpath/Fastpath.class \ - $(PGBASE)/fastpath/FastpathArg.class \ - $(PGBASE)/geometric/PGbox.class \ - $(PGBASE)/geometric/PGcircle.class \ - $(PGBASE)/geometric/PGline.class \ - $(PGBASE)/geometric/PGlseg.class \ - $(PGBASE)/geometric/PGpath.class \ - $(PGBASE)/geometric/PGpoint.class \ - $(PGBASE)/geometric/PGpolygon.class \ - $(PGBASE)/largeobject/LargeObject.class \ - $(PGBASE)/largeobject/LargeObjectManager.class \ - $(PGBASE)/util/PGmoney.class \ - $(PGBASE)/util/PGobject.class \ - $(PGBASE)/util/PGtokenizer.class \ - $(PGBASE)/util/PSQLException.class \ - $(PGBASE)/util/Serialize.class \ - $(PGBASE)/util/UnixCrypt.class - -# These files are unique to the JDBC 1 (JDK 1.1) driver -OBJ_JDBC1= $(PGBASE)/jdbc1/CallableStatement.class \ - $(PGBASE)/jdbc1/Connection.class \ - $(PGBASE)/jdbc1/DatabaseMetaData.class \ - $(PGBASE)/jdbc1/PreparedStatement.class \ - $(PGBASE)/jdbc1/ResultSet.class \ - $(PGBASE)/jdbc1/ResultSetMetaData.class \ - $(PGBASE)/jdbc1/Statement.class - -# These files are unique to the JDBC 2 (JDK 2 nee 1.2) driver -OBJ_JDBC2= $(PGBASE)/jdbc2/ResultSet.class \ - $(PGBASE)/jdbc2/PreparedStatement.class \ - $(PGBASE)/jdbc2/CallableStatement.class \ - $(PGBASE)/jdbc2/Connection.class \ - $(PGBASE)/jdbc2/DatabaseMetaData.class \ - $(PGBASE)/jdbc2/ResultSetMetaData.class \ - $(PGBASE)/jdbc2/Statement.class \ - $(PGBASE)/largeobject/PGblob.class - -# This rule builds the JDBC1 compliant driver -jdbc1: - (echo "package org.postgresql;" ;\ - echo "public class DriverClass {" ;\ - echo "public static String connectClass=\"org.postgresql.jdbc1.Connection\";" ;\ - echo "}" \ - ) >$(PGBASE)/DriverClass.java - @$(MAKE) jdbc1real - -jdbc1real: $(PGBASE)/DriverClass.class \ - $(OBJ_COMMON) $(OBJ_JDBC1) postgresql.jar msg - -# This rule builds the JDBC2 compliant driver -jdbc2: - (echo "package org.postgresql;" ;\ - echo "public class DriverClass {" ;\ - echo "public static String connectClass=\"org.postgresql.jdbc2.Connection\";" ;\ - echo "}" \ - ) >$(PGBASE)/DriverClass.java - @$(MAKE) jdbc2real - -jdbc2real: $(PGBASE)/DriverClass.class \ - $(OBJ_COMMON) $(OBJ_JDBC2) postgresql.jar msg - -# If you have problems with this rule, replace the $( ) with ` ` as some -# shells (mainly sh under Solaris) doesn't recognise $( ) -# -# Note: This works by storing all compiled classes under the $(PGBASE) -# directory. We use this later for compiling the dual-mode driver. -# -postgresql.jar: $(OBJ) $(OBJ_COMMON) - $(JAR) -c0f $@ `$(FIND) $(PGBASE) -name "*.class" -print` \ - $(wildcard $(PGBASE)/*.properties) - -# This rule removes any temporary and compiled files from the source tree. -clean: - $(FIND) . -name "*~" -exec $(RM) {} \; - $(FIND) . -name "*.class" -exec $(RM) {} \; - $(FIND) . -name "*.html" -exec $(RM) {} \; - -$(RM) -rf stock example/corba/stock.built - -$(RM) postgresql.jar - -$(RM) -rf Package-postgresql *output - -####################################################################### -# This helps make workout what classes are from what source files -# -# Java is unlike C in that one source file can generate several -# _Different_ file names -# -$(PGBASE)/Connection.class: $(PGBASE)/Connection.java -$(PGBASE)/DatabaseMetaData.class: $(PGBASE)/DatabaseMetaData.java -$(PGBASE)/Driver.class: $(PGBASE)/Driver.java -$(PGBASE)/Field.class: $(PGBASE)/Field.java -$(PGBASE)/PG_Stream.class: $(PGBASE)/PG_Stream.java -$(PGBASE)/PreparedStatement.class: $(PGBASE)/PreparedStatement.java -$(PGBASE)/ResultSet.class: $(PGBASE)/ResultSet.java -$(PGBASE)/ResultSetMetaData.class: $(PGBASE)/ResultSetMetaData.java -$(PGBASE)/Statement.class: $(PGBASE)/Statement.java -$(PGBASE)/fastpath/Fastpath.class: $(PGBASE)/fastpath/Fastpath.java -$(PGBASE)/fastpath/FastpathArg.class: $(PGBASE)/fastpath/FastpathArg.java -$(PGBASE)/geometric/PGbox.class: $(PGBASE)/geometric/PGbox.java -$(PGBASE)/geometric/PGcircle.class: $(PGBASE)/geometric/PGcircle.java -$(PGBASE)/geometric/PGlseg.class: $(PGBASE)/geometric/PGlseg.java -$(PGBASE)/geometric/PGpath.class: $(PGBASE)/geometric/PGpath.java -$(PGBASE)/geometric/PGpoint.class: $(PGBASE)/geometric/PGpoint.java -$(PGBASE)/geometric/PGpolygon.class: $(PGBASE)/geometric/PGpolygon.java -$(PGBASE)/largeobject/LargeObject.class: $(PGBASE)/largeobject/LargeObject.java -$(PGBASE)/largeobject/LargeObjectManager.class: $(PGBASE)/largeobject/LargeObjectManager.java -$(PGBASE)/util/PGmoney.class: $(PGBASE)/util/PGmoney.java -$(PGBASE)/util/PGobject.class: $(PGBASE)/util/PGobject.java -$(PGBASE)/util/PGtokenizer.class: $(PGBASE)/util/PGtokenizer.java -$(PGBASE)/util/Serialize.class: $(PGBASE)/util/Serialize.java -$(PGBASE)/util/UnixCrypt.class: $(PGBASE)/util/UnixCrypt.java - -####################################################################### -# These classes are in the example directory, and form the examples -EX= example/basic.class \ - example/blobtest.class \ - example/datestyle.class \ - example/psql.class \ - example/ImageViewer.class \ - example/metadata.class \ - example/threadsafe.class -# example/Objects.class - -# This rule builds the examples -examples: postgresql.jar $(EX) - @echo ------------------------------------------------------------ - @echo The examples have been built. - @echo - @echo For instructions on how to use them, simply run them. For example: - @echo - @echo " java example.blobtest" - @echo - @echo This would display instructions on how to run the example. - @echo ------------------------------------------------------------ - @echo Available examples: - @echo - @echo " example.basic Basic JDBC useage" - @echo " example.blobtest Binary Large Object tests" - @echo " example.datestyle Shows how datestyles are handled" - @echo " example.ImageViewer Example application storing images" - @echo " example.psql Simple java implementation of psql" - @echo " example.Objects Demonstrates Object Serialisation" - @echo " " - @echo These are not really examples, but tests various parts of the driver - @echo " example.metadata Tests various metadata methods" - @echo " example.threadsafe Tests the driver's thread safety" - @echo ------------------------------------------------------------ - @echo - -example/basic.class: example/basic.java -example/blobtest.class: example/blobtest.java -example/datestyle.class: example/datestyle.java -example/psql.class: example/psql.java -example/ImageViewer.class: example/ImageViewer.java -example/threadsafe.class: example/threadsafe.java -example/metadata.class: example/metadata.java - -####################################################################### -# -# CORBA This extensive example shows how to integrate PostgreSQL -# JDBC & CORBA. - -CORBASRC = $(wildcard example/corba/*.java) -CORBAOBJ = $(subst .java,.class,$(CORBASRC)) - -corba: jdbc2 example/corba/stock.built $(CORBAOBJ) - @echo ------------------------------------------------------- - @echo The corba example has been built. Before running, you - @echo will need to read the example/corba/readme file on how - @echo to run the example. - @echo - -# -# This compiles our idl file and the stubs -# -# Note: The idl file is in example/corba, but it builds a directory under -# the current one. For safety, we delete that directory before running -# idltojava -# -example/corba/stock.built: example/corba/stock.idl - -rm -rf stock - $(IDL2JAVA) $< - $(JAVAC) stock/*.java - $(TOUCH) $@ - -# tip: we cant use $(wildcard stock/*.java) in the above rule as a race -# condition occurs, where javac is passed no arguments -####################################################################### +.PHONY: install-perl5