From d7dd9295b7b8258a32eee07df273839248dcaa51 Mon Sep 17 00:00:00 2001
From: Bryan Henderson <bryanh@giraffe.netgate.net>
Date: Tue, 12 Nov 1996 11:43:32 +0000
Subject: [PATCH] End of the make file simplifications.

---
 src/interfaces/libpgtcl/Makefile         | 53 ++++++++-----
 src/interfaces/libpq++/Makefile          | 64 +++++++++-------
 src/interfaces/libpq++/examples/Makefile | 72 ++++++------------
 src/interfaces/libpq++/libpq++.H         |  4 +-
 src/interfaces/libpq++/pglobject.cc      |  4 +-
 src/interfaces/libpq/Makefile            |  6 +-
 src/test/Makefile                        | 10 +--
 src/test/bench/Makefile                  | 62 +++++++--------
 src/test/examples/Makefile               | 67 +++-------------
 src/test/regress/Makefile                | 97 +++++++++++++-----------
 src/tools/mkldexport/Makefile            | 13 ++--
 src/tutorial/C-code/Makefile             | 10 +++
 src/tutorial/Makefile                    | 54 ++++++++-----
 13 files changed, 254 insertions(+), 262 deletions(-)
 create mode 100644 src/tutorial/C-code/Makefile

diff --git a/src/interfaces/libpgtcl/Makefile b/src/interfaces/libpgtcl/Makefile
index 2473451d10c..e4c0f158660 100644
--- a/src/interfaces/libpgtcl/Makefile
+++ b/src/interfaces/libpgtcl/Makefile
@@ -7,40 +7,55 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile,v 1.4 1996/11/08 00:58:07 scrappy Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile,v 1.5 1996/11/12 11:42:09 bryanh Exp $
 #
 #-------------------------------------------------------------------------
 
-LIB=	pgtcl
+SRCDIR= ..
+LIBPQDIR= $(SRCDIR)/libpq
+include ../Makefile.global
 
-MKDIR=	../mk
-include $(MKDIR)/postgres.mk
-
-CFLAGS+= -I$(HEADERDIR) \
-	 -I$(srcdir)/backend/include \
-	 -I$(srcdir)/backend \
-	 -I$(CURDIR) \
-	 -I$(TCL_INCDIR) \
-	 -I$(srcdir)/libpq
-
-LIBLDLIBS+= -L$(LIBDIR) -lpq
+INCLUDE_OPT= \
+             -I../backend \
+             -I../include \
+             -I$(LIBPQDIR) \
+             -I$(TCL_INCDIR)
 
+CFLAGS+= $(INCLUDE_OPT)
 ifdef KRBVERS
 CFLAGS+= $(KRBFLAGS)
 endif
 
 ifdef LINUX_ELF
 CFLAGS += -fPIC
-CC += -L $(POSTGRESDIR)/lib -lpq
 endif
 
-LIBSRCS= pgtcl.c pgtclCmds.c pgtclId.c
+OBJS= pgtcl.o pgtclCmds.o pgtclId.o
 
-install-headers:
-	$(INSTALL) $(INSTLOPTS) libpgtcl.h $(HEADERDIR)/libpgtcl.h
+all: libpgtcl.a
+
+libpgtcl.a: $(OBJS)
+ifdef MK_NO_LORDER
+	$(AR) $(AROPT) libpgtcl.a $(OBJS)
+else
+	$(AR) $(AROPT) libpgtcl.a `lorder $(OBJS) | tsort`
+endif
+	$(RANLIB) libpgtcl.a
+
+.PHONY: beforeinstall-headers install-headers
+.PHONY: install install-libpgtcl
 
+install: install-headers install-libpgtcl
+
+install-headers: beforeinstall-headers libpgtcl.h
+	$(INSTALL) $(INSTLOPTS) libpgtcl.h $(HEADERDIR)/libpgtcl.h
 
-install:: install-headers
+beforeinstall-headers:
+	@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
 
-include $(MKDIR)/postgres.lib.mk
+install-libpgtcl: libpgtcl.a
+	$(INSTALL) $(INSTL_LIB_OPTS) libpgtcl.a $(DESTDIR)$(LIBDIR)/libpgtcl.a
 
+.PHONY: clean
+clean: 
+	rm -f $(OBJS)
\ No newline at end of file
diff --git a/src/interfaces/libpq++/Makefile b/src/interfaces/libpq++/Makefile
index e1d58847ee5..3fb1f5d7249 100644
--- a/src/interfaces/libpq++/Makefile
+++ b/src/interfaces/libpq++/Makefile
@@ -7,48 +7,60 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile,v 1.1.1.1 1996/07/09 06:22:18 scrappy Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile,v 1.2 1996/11/12 11:42:24 bryanh Exp $
 #
 #-------------------------------------------------------------------------
 
-CPP_LIB=	true
+SRCDIR= ..
+LIBPQDIR= $(SRCDIR)/libpq
+include ../Makefile.global
 
-LIB=	pq++
+CXXFLAGS= $(CFLAGS)
 
-MKDIR=	../mk
-include $(MKDIR)/postgres.mk
+INCLUDE_OPT= \
+             -I../backend \
+             -I../include \
+             -I$(LIBPQDIR) 
 
-CXXFLAGS = $(CFLAGS)
-
-CXXFLAGS+= -I$(srcdir)/backend/include \
-	-I$(srcdir)/backend \
-	-I$(srcdir)/libpq \
-	-I$(CURDIR) \
+CXXFLAGS+= $(INCLUDE_OPT) -DPOSTPORT='"$(POSTPORT)"'
 
 ifdef KRBVERS
 CXXFLAGS+= $(KRBFLAGS)
 endif
 
+OBJS= pgenv.o pgconnection.o pglobject.o
 
-LIBSRCS =  pgenv.cc pgconnection.cc pglobject.cc
-
-.PHONY: beforeinstall-headers install-headers
+all: libpq++.a examples
 
-ifndef NO_BEFOREINSTL
-beforeinstall-headers:
-	@-if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
+libpq++.a: $(OBJS)
+ifdef MK_NO_LORDER
+	$(AR) $(AROPT) libpq++.a $(OBJS)
 else
-beforeinstall-headers: .dosomething
+	$(AR) $(AROPT) libpq++.a `lorder $(OBJS) | tsort`
 endif
+	$(RANLIB) libpq++.a
+
+.PHONY: examples
+examples:
+	$(MAKE) -C examples all
 
-HEADERFILES = libpq++.H
+.PHONY: beforeinstall-headers install-headers 
+.PHONY: install install-libpq++ doc
+
+install: install-headers install-libpq++ doc
+
+install-headers: beforeinstall-headers libpq++.H
+	$(INSTALL) $(INSTLOPTS) libpq++.H $(HEADERDIR)/libpq++.H
+
+beforeinstall-headers:
+	@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
 
-install-headers: beforeinstall-headers
-	@for i in ${HEADERFILES}; do \
-		echo "Installing $(HEADERDIR)/$$i."; \
-		$(INSTALL) -c -m 444 $$i $(HEADERDIR)/$$i; \
-	done
+install-libpq++: libpq++.a
+	$(INSTALL) $(INSTL_LIB_OPTS) libpq++.a $(DESTDIR)$(LIBDIR)/libpq++.a
 
-install:: install-headers
+doc:
+	$(MAKE) -C man install
 
-include $(MKDIR)/postgres.lib.mk
+clean:
+	rm libpq++.a $(OBJS)
+	$(MAKE) -C examples clean
\ No newline at end of file
diff --git a/src/interfaces/libpq++/examples/Makefile b/src/interfaces/libpq++/examples/Makefile
index 6010ab9faf4..e319a065c3b 100644
--- a/src/interfaces/libpq++/examples/Makefile
+++ b/src/interfaces/libpq++/examples/Makefile
@@ -2,15 +2,21 @@
 # Makefile for example programs
 #
 
-CPP_PROG = true
+SRCDIR= ../..
+LIBPQDIR= $(SRCDIR)/libpq
+include ../../Makefile.global
 
-MKDIR=	../../mk
-include $(MKDIR)/postgres.mk
+CXXFLAGS= $(CFLAGS)
 
-CXXFLAGS+= -I$(HEADERDIR) -I$(srcdir)/libpq -I$(srcdir)/backend \
- 	 -I$(srcdir)/backend/include
+INCLUDE_OPT= \
+             -I.. \
+             -I../../backend \
+             -I../../include \
+             -I$(LIBPQDIR) 
 
-LD_ADD+=-L$(LIBDIR) -lpq++ -lpq
+CXXFLAGS+= $(INCLUDE_OPT)
+
+LD_ADD+= -L.. -lpq++ -L$(LIBPQDIR) -lpq 
 
 #
 # And where libpq goes, so goes the authentication stuff...
@@ -20,51 +26,19 @@ LD_ADD+= $(KRBLIBS)
 CXXFLAGS+= $(KRBFLAGS)
 endif
 
-P0_PROG:= testlibpq0
-P0_OBJS:= testlibpq0.o
-
-$(P0_PROG):  $(addprefix $(objdir)/,$(P0_OBJS))
-	$(CXX) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
-
-P1_PROG:= testlibpq1
-P1_OBJS:= testlibpq1.o
-
-$(P1_PROG):  $(addprefix $(objdir)/,$(P1_OBJS))
-	$(CXX) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
-
-P2_PROG:= testlibpq2
-P2_OBJS:= testlibpq2.o
-
-$(P2_PROG):  $(addprefix $(objdir)/,$(P2_OBJS))
-	$(CXX) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
-
-P3_PROG:= testlibpq3
-P3_OBJS:= testlibpq3.o
-
-$(P3_PROG):  $(addprefix $(objdir)/,$(P3_OBJS))
-	$(CXX) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
-
-P4_PROG:= testlibpq4
-P4_OBJS:= testlibpq4.o
-
-$(P4_PROG):  $(addprefix $(objdir)/,$(P4_OBJS))
-	$(CXX) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
-
-P5_PROG:= testlo
-P5_OBJS:= testlo.o
+PROGS= testlibpq0 testlibpq1 testlibpq2 testlibpq3 testlibpq4 testlo
 
-$(P5_PROG):  $(addprefix $(objdir)/,$(P5_OBJS))
-	$(CXX) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
+all: submake $(PROGS)
 
-OBJS:= $(P0_OBJS) $(P1_OBJS) $(P2_OBJS) $(P3_OBJS) $(P4_OBJS) $(P5_OBJS)
-PROGS:= $(P0_PROG) $(P1_PROG) $(P2_PROG) $(P3_PROG) $(P4_PROG) $(P5_PROG)
+$(PROGS): % : %.cc ../libpq++.a
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $@.cc $(LD_ADD)
 
-CLEANFILES+= $(OBJS) $(PROGS)
+.PHONY: submake
+submake: 
+	$(MAKE) -C.. libpq++.a
 
-all:: $(PROGS)
+../libpq++.a:
+	$(MAKE) -C.. libpq++.a
 
-install:: $(PROGS)
-	@for i in ${PROGS}; do \
-		echo "Installing $$i"; \
-		$(INSTALL) $(objdir)/$$i $(DESTDIR)$(BINDIR)/$$i;\
-	done
+clean: 
+	rm -f $(PROGS)
diff --git a/src/interfaces/libpq++/libpq++.H b/src/interfaces/libpq++/libpq++.H
index 24482570f50..98581e7709e 100644
--- a/src/interfaces/libpq++/libpq++.H
+++ b/src/interfaces/libpq++/libpq++.H
@@ -14,7 +14,7 @@
  *
  *   IDENTIFICATION
  *
- * $Id: libpq++.H,v 1.2 1996/08/21 04:32:09 scrappy Exp $
+ * $Id: libpq++.H,v 1.3 1996/11/12 11:42:27 bryanh Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -26,6 +26,8 @@
 #include <strings.h>
 
 extern "C" {
+#include "config.h"
+#include "postgres.h"
 #include "libpq-fe.h"
 #include "fe-auth.h"
 }
diff --git a/src/interfaces/libpq++/pglobject.cc b/src/interfaces/libpq++/pglobject.cc
index 20c7ad5e22d..4de4a1f0d9e 100644
--- a/src/interfaces/libpq++/pglobject.cc
+++ b/src/interfaces/libpq++/pglobject.cc
@@ -11,13 +11,15 @@
  * Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/pglobject.cc,v 1.1.1.1 1996/07/09 06:22:18 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/pglobject.cc,v 1.2 1996/11/12 11:42:31 bryanh Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "libpq++.H"
 
 extern "C" {
+#include <unistd.h>
+#include <fcntl.h>
 #include "libpq/libpq-fs.h"
 }
 
diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile
index 624c2fb7d43..5648ebb313a 100644
--- a/src/interfaces/libpq/Makefile
+++ b/src/interfaces/libpq/Makefile
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v 1.15 1996/11/09 06:24:51 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v 1.16 1996/11/12 11:42:21 bryanh Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -127,10 +127,10 @@ else
 install-shlib-dep :=
 endif
 
-install-libpq:
+install-libpq: libpq.a
 	$(INSTALL) $(INSTL_LIB_OPTS) libpq.a $(DESTDIR)$(LIBDIR)/libpq.a
 
-install-shlib:
+install-shlib: libpq.so.1
 	$(INSTALL) $(INSTL_LIB_OPTS) libpq.so.1 $(DESTDIR)$(LIBDIR)/libpq.so.1
 
 depend dep:
diff --git a/src/test/Makefile b/src/test/Makefile
index ed0bfd12cf7..fc3fb084717 100644
--- a/src/test/Makefile
+++ b/src/test/Makefile
@@ -7,12 +7,10 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/test/Makefile,v 1.1.1.1 1996/07/09 06:22:20 scrappy Exp $
+#    $Header: /cvsroot/pgsql/src/test/Makefile,v 1.2 1996/11/12 11:42:41 bryanh Exp $
 #
 #-------------------------------------------------------------------------
 
-SUBDIR= bench regress
-
-include ../mk/postgres.subdir.mk
-
-
+.DEFAULT all:
+	$(MAKE) -C bench $@
+	$(MAKE) -C regress $@
diff --git a/src/test/bench/Makefile b/src/test/bench/Makefile
index 65e612b73d2..7e6375f2bd7 100644
--- a/src/test/bench/Makefile
+++ b/src/test/bench/Makefile
@@ -7,56 +7,52 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/test/bench/Attic/Makefile,v 1.1.1.1 1996/07/09 06:22:21 scrappy Exp $
+#    $Header: /cvsroot/pgsql/src/test/bench/Attic/Makefile,v 1.2 1996/11/12 11:42:49 bryanh Exp $
 #
 #-------------------------------------------------------------------------
 
-MKDIR=	../../mk
-include $(MKDIR)/postgres.mk
-
+SRCDIR= ../..
+LIBPQDIR= $(SRCDIR)/libpq
+include ../../Makefile.global
 
 CREATEFILES= create.sql bench.sql
+OUTFILES= bench.out bench.out.perquery
 
-include $(MKDIR)/postgres.user.mk
+CFLAGS+= -I$(LIBPQDIR) $(CFLAGS_SL)
 
+all: $(CREATEFILES)
+	rm -f $(OUTFILES)
 
-OUTFILES= bench.out bench.out.perquery
-CLEANFILES+= $(CREATEFILES) $(OUTFILES)
+create.sql: create.source
+	if [ -z "$$USER" ]; then USER=$$LOGNAME; fi; \
+	if [ -z "$$USER" ]; then USER=`whoami`; fi; \
+	if [ -z "$$USER" ]; then echo 'Cannot deduce $$USER.'; exit 1; fi; \
+	rm -f $@; \
+	C=`pwd`; \
+	sed -e "s:_CWD_:$$C:g" \
+	    -e "s:_OBJWD_:$$C:g" \
+	    -e "s:_SLSUFF_:$(SLSUFF):g" \
+	    -e "s/_USER_/$$USER/g" < $< > $@
 
 bench.sql: 
-	cat > $(objdir)/$@ < /dev/null
 	x=1; \
 	for i in `ls query[0-9][0-9]`; do \
-		echo "select $$x as x" >> $(objdir)/$@; \
-		cat $$i >> $(objdir)/$@; \
-		x=`expr $$x + 1`; \
+	  echo "select $$x as x" >> bench.sql; \
+	  cat $$i >> bench.sql; \
+	  x=`expr $$x + 1`; \
 	done
 
-bench2.pq: 
-	cat > ${.TARGET} < /dev/null
-	C=`pwd`; cd ${.CURDIR}; \
-	for i in 1 2 3 4 5 6; do \
-		echo "select timeofday();" >> $$C/${.TARGET}; \
-	done; \
-	x=1; \
-	for i in `ls query[0-9][0-9]`; do \
-		echo "select $$x as x;" >> $$C/${.TARGET}; \
-		echo "select timeofday();" >> $$C/${.TARGET}; \
-		cat $$i >> $$C/${.TARGET}; \
-		echo "select timeofday();" >> $$C/${.TARGET}; \
-		x=`expr $$x + 1`; \
-	done
+runtest: $(OUTFILES)
 
 bench.out: $(CREATEFILES)
 	$(SHELL) ./create.sh && \
-	$(SHELL) ./runwisc.sh > $(objdir)/$@ 2>&1
-	@echo "RESULTS OF BENCHMARK ARE SAVED IN ${MAKEOBJDIR}/bench.out";
+	$(SHELL) ./runwisc.sh >bench.out 2>&1
+	@echo "RESULTS OF BENCHMARK ARE SAVED IN FILE bench.out";
 
 bench.out.perquery: bench.out
-	$(SHELL) ./perquery < $(objdir)/bench.out 2>&1 > $@
-	@echo "BREAKDOWN OF BENCHMARK IS SAVED IN ${MAKEOBJDIR}/bench.out.perquery";
-
-all:: $(CREATEFILES)
-	rm -f $(OUTFILES)
+	$(SHELL) ./perquery <bench.out 2>&1 > $@
+	@echo "BREAKDOWN OF BENCHMARK IS SAVED IN FILE" \
+	  "bench.out.perquery";
 
-runtest: ${OUTFILES}
+clean:
+	rm -f $(OUTFILES) $(CREATEFILES)
diff --git a/src/test/examples/Makefile b/src/test/examples/Makefile
index 65b30647558..f01885ba030 100644
--- a/src/test/examples/Makefile
+++ b/src/test/examples/Makefile
@@ -2,14 +2,13 @@
 # Makefile for example programs
 #
 
-MKDIR=	../../mk
-include $(MKDIR)/postgres.mk
+SRCDIR= ../..
+LIBPQDIR= $(SRCDIR)/libpq
+include ../../Makefile.global
 
-CFLAGS+= -I$(HEADERDIR) -I$(srcdir)/backend -I$(srcdir)/backend/include
+CFLAGS+= -I$(LIBPQDIR)
 
-LIBPQ:=  -L$(LIBDIR) -lpq
-
-LD_ADD+=$(LIBPQ)
+LD_ADD+= -L$(LIBPQDIR) -lpq 
 
 #
 # And where libpq goes, so goes the authentication stuff...
@@ -19,56 +18,12 @@ LD_ADD+= $(KRBLIBS)
 CFLAGS+= $(KRBFLAGS)
 endif
 
-P1_PROG:= testlibpq
-P1_OBJS:= testlibpq.o
-
-$(P1_PROG):  $(addprefix $(objdir)/,$(P1_OBJS))
-	$(CC) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
-
-P2_PROG:= testlibpq2
-P2_OBJS:= testlibpq2.o
-
-$(P2_PROG):  $(addprefix $(objdir)/,$(P2_OBJS))
-	$(CC) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
-
-
-P3_PROG:= testlibpq3
-P3_OBJS:= testlibpq3.o
-
-$(P3_PROG):  $(addprefix $(objdir)/,$(P3_OBJS))
-	$(CC) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
-
-P4_PROG:= testlo
-P4_OBJS:= testlo.o
-
-$(P4_PROG):  $(addprefix $(objdir)/,$(P4_OBJS))
-	$(CC) $(CFLAGS) -o $(objdir)/$(@F) $< $(LD_ADD)
-
-OBJS:= $(P1_OBJS) $(P2_OBJS) $(P3_OBJS) $(P4_OBJS)
-PROGS:= $(P1_PROG) $(P2_PROG) $(P3_PROG) $(P4_PROG)
-
-CLEANFILES+= $(OBJS) $(PROGS)
-
-all:: $(PROGS)
-
-install:: $(PROGS)
-	@for i in ${PROGS}; do \
-		echo "Installing $$i"; \
-		$(INSTALL) $(objdir)/$$i $(DESTDIR)$(BINDIR)/$$i;\
-	done
-	
-
-
-
-
-
-
-
-
-
-
-
-
+PROGS= testlibpq0 testlibpq1 testlibpq2 testlibpq3 testlibpq4 testlo
 
+all: $(PROGS)
 
+$(PROGS): % : %.c 
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.c $(LD_ADD)
 
+clean: 
+	rm -f $(PROGS)
diff --git a/src/test/regress/Makefile b/src/test/regress/Makefile
index 6c2a480796e..6a115abd060 100644
--- a/src/test/regress/Makefile
+++ b/src/test/regress/Makefile
@@ -7,74 +7,85 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/test/regress/Makefile,v 1.7 1996/11/12 11:16:44 scrappy Exp $
+#    $Header: /cvsroot/pgsql/src/test/regress/Makefile,v 1.8 1996/11/12 11:43:05 bryanh Exp $
 #
 #-------------------------------------------------------------------------
 
-MKDIR=	../../mk
-include $(MKDIR)/postgres.mk
-include $(MKDIR)/postgres.user.mk
+SRCDIR= ../..
+LIBPQDIR= $(SRCDIR)/libpq
+include ../../Makefile.global
 
-CFLAGS+=-I../../include
+CFLAGS+= -I$(LIBPQDIR) -I../../include
 
+LDADD+= -L$(LIBPQDIR) -lpq
+        
 #
-# try locating libpq.a in the following places
-#
-LIBPQ:=  -L$(srcdir)/libpq/$(objdir) -L$(LIBDIR) -lpq
-
-LDADD+= $(LIBPQ)
-
-
-#
-# build dynamically-loaded object files
+# DLOBJS is the dynamically-loaded object file.  The regression test uses 
+# this when it does a CREATE FUNCTION ... LANGUAGE 'C').
 #
 DLOBJS= regress$(SLSUFF)
 
 #
 # ... plus test query inputs
 #
-CREATEFILES= $(DLOBJS:%=$(objdir)/%) \
-	create.sql queries.sql errors.sql destroy.sql security.sql expected.out
-
+# INFILES is the files the regression test uses for input.
+INFILES= $(DLOBJS) \
+         create.sql queries.sql errors.sql destroy.sql security.sql \
+         expected.out
+#
+# plus exports files
+#
+ifdef EXPSUFF
+INFILES+= $(DLOBJS:.o=$(EXPSUFF))
+endif
 
+# OUTFILES is the files that get created by running the regression test.
 OUTFILES= stud_emp.data onek.data regress.out aportal.out
 
-CLEANFILES+= $(notdir $(CREATEFILES)) $(OUTFILES)
-
-$(OUTFILES): $(CREATEFILES)
-	$(SHELL) ./regress.sh 2>&1 | tee $(objdir)/regress.out
-	@echo "RESULTS OF REGRESSION ARE SAVED IN $(objdir)/regress.out"
-
 #
-# expected results file -- expand macros for user and location
+# prepare to run the test (including clean-up after the last run)
 #
-# the expected.input file is make by hand from 'regress.out' when the
-# regression test has been updated and a successful output obtained
+all: $(INFILES)
+	rm -f $(OUTFILES)
+
+#
+# run the test
 #
+runtest: $(INFILES) expected.out 
+	$(SHELL) ./regress.sh 2>&1 | tee regress.out
+	@echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILE regress.out"
+
+# The expected.input file is part of the distribution.  It was made by hand
+# from 'regress.out' from a reference run of the regression test, replacing
+# installation-dependent things with names like _CWD_.  The following rule
+# turns those names back into real values for the instant installation to
+# create a standard (expected.out) against which to compare regress.out 
+# from the experimental run.
+
 expected.out: expected.input
 	if [ -z "$$USER" ]; then USER=$$LOGNAME; fi; \
 	if [ -z "$$USER" ]; then USER=`whoami`; fi; \
 	if [ -z "$$USER" ]; then echo 'Cannot deduce $USER.'; exit 1; fi; \
-	rm -f $(objdir)/expected.out; \
+	rm -f expected.out; \
 	C="`pwd`"; \
 	sed -e "s:_CWD_:$$C:g" \
-	    -e "s:_OBJWD_:$$C/$(objdir):g" \
+	    -e "s:_OBJWD_:$$C:g" \
             -e "s:_SLSUFF_:$(SLSUFF):g" \
-	    -e "s/_USER_/$$USER/g" < expected.input > $(objdir)/expected.out
+	    -e "s/_USER_/$$USER/g" < expected.input > expected.out
+	@echo "YOUR EXPECTED RESULTS ARE NOW IN FILE expected.out."
 
-#
-# prepare to run the test (including clean-up after the last run)
-#
-all:: $(CREATEFILES)
-	cd $(objdir); rm -f $(OUTFILES)
-
-#
-# run the test
-#
-runtest: expected.out regress.out
+%.sql: %.source
+	if [ -z "$$USER" ]; then USER=$$LOGNAME; fi; \
+	if [ -z "$$USER" ]; then USER=`whoami`; fi; \
+	if [ -z "$$USER" ]; then echo 'Cannot deduce $$USER.'; exit 1; fi; \
+	rm -f $@; \
+	C=`pwd`; \
+	sed -e "s:_CWD_:$$C:g" \
+	    -e "s:_OBJWD_:$$C:g" \
+	    -e "s:_SLSUFF_:$(SLSUFF):g" \
+	    -e "s/_USER_/$$USER/g" < $< > $@
 
-#
-# installation
-#
-install: localobj all
+clean:
+	rm -f $(INFILES)
+	rm -f $(OUTFILES)
 
diff --git a/src/tools/mkldexport/Makefile b/src/tools/mkldexport/Makefile
index 70275cc3b85..e92c26ca489 100644
--- a/src/tools/mkldexport/Makefile
+++ b/src/tools/mkldexport/Makefile
@@ -7,14 +7,15 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/tools/mkldexport/Attic/Makefile,v 1.1.1.1 1996/07/09 06:22:32 scrappy Exp $
+#    $Header: /cvsroot/pgsql/src/tools/mkldexport/Attic/Makefile,v 1.2 1996/11/12 11:43:12 bryanh Exp $
 #
 #-------------------------------------------------------------------------
 
-SHPROG=mkldexport
+all: mkldexport
 
-MKDIR=	../../mk
-include ../../Makefile.global
-include $(MKDIR)/postgres.mk
+mkldexport: mkldexport.sh
+	cp mkldexport.sh mkldexport
+	chmod a+x mkldexport
 
-include $(MKDIR)/postgres.shell.mk
+clean:
+	rm -f mkldexport
diff --git a/src/tutorial/C-code/Makefile b/src/tutorial/C-code/Makefile
new file mode 100644
index 00000000000..22ba97158ad
--- /dev/null
+++ b/src/tutorial/C-code/Makefile
@@ -0,0 +1,10 @@
+SRCDIR= ../..
+LIBPQDIR= $(SRCDIR)/libpq
+include ../../Makefile.global
+
+CFLAGS+= -I../../include -I$(LIBPQDIR)
+
+all: complex$(SLSUFF) funcs$(SLSUFF)
+
+clean: 
+	rm -f complex$(SLSUFF) funcs$(SLSUFF)
\ No newline at end of file
diff --git a/src/tutorial/Makefile b/src/tutorial/Makefile
index 5a29b1468d8..b0b7861a765 100644
--- a/src/tutorial/Makefile
+++ b/src/tutorial/Makefile
@@ -1,39 +1,55 @@
 #-------------------------------------------------------------------------
 #
 # Makefile--
-#    Makefile for tutorial/C-code
-#
-# Copyright (c) 1994, Regents of the University of California
-#
+#    Makefile for tutorial
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/tutorial/Makefile,v 1.1.1.1 1996/07/09 06:22:33 scrappy Exp $
+#    $Header: /cvsroot/pgsql/src/tutorial/Makefile,v 1.2 1996/11/12 11:43:20 bryanh Exp $
 #
 #-------------------------------------------------------------------------
 
-MKDIR=	../mk
-include $(MKDIR)/postgres.mk
+SRCDIR= ..
+LIBPQDIR= $(SRCDIR)/libpq
+include ../Makefile.global
 
-VPATH:= $(VPATH):C-code
+CFLAGS+= -I$(LIBPQDIR) -I../../include
 
+LDADD+= -L$(LIBPQDIR) -lpq
+        
 #
-# build dynamically-loaded object files
+# DLOBJS is the dynamically-loaded object files.  The "funcs" queries
+# include CREATE FUNCTIONs that load routines from these files.
 #
-DLOBJS= complex$(SLSUFF) funcs$(SLSUFF) 
+DLOBJS= complex$(SLSUFF) funcs$(SLSUFF)
 
+QUERIES= advanced.sql basics.sql complex.sql funcs.sql syscat.sql
 #
-# ... plus test query inputs
+# plus exports files
 #
-CREATEFILES= $(DLOBJS:%=$(objdir)/%) \
-	advanced.sql basics.sql complex.sql funcs.sql syscat.sql
-
-include $(MKDIR)/postgres.user.mk
-
-CFLAGS+= -I$(srcdir)/backend
+ifdef EXPSUFF
+DLOBJS+= $(DLOBJS:.o=$(EXPSUFF))
+endif
 
-CLEANFILES+= $(notdir $(CREATEFILES))
+all: $(QUERIES)
 
-all:: $(CREATEFILES)
+%.sql: %.source
+	if [ -z "$$USER" ]; then USER=$$LOGNAME; fi; \
+	if [ -z "$$USER" ]; then USER=`whoami`; fi; \
+	if [ -z "$$USER" ]; then echo 'Cannot deduce $$USER.'; exit 1; fi; \
+	rm -f $@; \
+	C=`pwd`; \
+	sed -e "s:_CWD_:$$C:g" \
+	    -e "s:_OBJWD_:$$C:g" \
+	    -e "s:_SLSUFF_:$(SLSUFF):g" \
+	    -e "s/_USER_/$$USER/g" < $< > $@
 
+funcs.sql:: $(DLOBJS)
 
+$(DLOBJS): 
+	$(MAKE) -C C-code $@
+	cp C-code/$@ .
 
+clean:
+	$(MAKE) -C C-code clean
+	rm -f $(QUERIES)
+	rm -f $(DLOBJS)
-- 
GitLab