From e1942f5b9e1c71e3f5e912ab9ffeb1e34339845d Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sun, 18 Oct 1998 19:41:00 +0000
Subject: [PATCH] Clean up shared makefile install procedures. Get the
 permissions right, don't overwrite real files with symlinks, etc. plpgsql and
 odbc still aren't fully up to speed, but at least they don't crash and
 burn...

---
 src/interfaces/ecpg/lib/Makefile.in    |  44 ++++---
 src/interfaces/libpgtcl/Makefile.in    |  22 ++--
 src/interfaces/libpq++/Makefile.in     | 153 ++++++++++++++++---------
 src/interfaces/libpq/Makefile.in       |  25 ++--
 src/interfaces/odbc/GNUmakefile.in     |  36 ++++--
 src/interfaces/odbc/Makefile.global.in |   3 +-
 src/interfaces/odbc/configure.in       |  19 ++-
 src/pl/plpgsql/src/Makefile.in         |   4 +-
 src/pl/tcl/Makefile                    |   4 +-
 9 files changed, 201 insertions(+), 109 deletions(-)

diff --git a/src/interfaces/ecpg/lib/Makefile.in b/src/interfaces/ecpg/lib/Makefile.in
index d9f7d7c763a..b04a1e7cb65 100644
--- a/src/interfaces/ecpg/lib/Makefile.in
+++ b/src/interfaces/ecpg/lib/Makefile.in
@@ -72,24 +72,43 @@ ifeq ($(PORTNAME), unixware)
   CFLAGS += $(CFLAGS_SL)
 endif
 
+ifeq ($(PORTNAME), hpux)
+  install-shlib-dep	:= install-shlib
+  shlib				:= lib$(NAME).sl
+  LDFLAGS_SL		:= -b
+  CFLAGS			+= $(CFLAGS_SL)
+endif
+
 all: lib$(NAME).a $(shlib)
 
-$(shlib): ecpglib.sho.o typename.sho.o
-	$(LD) $(LDFLAGS_SL) -o $@ ecpglib.sho.o typename.sho.o
+$(shlib): ecpglib.o typename.o
+	$(LD) $(LDFLAGS_SL) -o $@ ecpglib.o typename.o
 
 clean:
-	rm -f *.o *.sho *.a core a.out *~ $(shlib) lib$(NAME)$(DLSUFFIX)
+	rm -f *.o *.a core a.out *~ $(shlib) lib$(NAME)$(DLSUFFIX)
 
 dep depend:
 
-install: lib$(NAME).a $(shlib) $(install-shlib-dep)
-	$(INSTALL) $(INSTLOPTS) lib$(NAME).a $(LIBDIR)
+.PHONY: install install-libecpg install-shlib
+
+install: install-libecpg $(install-shlib-dep)
+
+install-libecpg: lib$(NAME).a
+	$(INSTALL) $(INSTL_LIB_OPTS) lib$(NAME).a $(LIBDIR)/lib$(NAME).a
+
+install-shlib: $(shlib)
+	$(INSTALL) $(INSTL_SHLIB_OPTS) $(shlib) $(LIBDIR)/$(shlib)
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+	fi
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX); \
+	fi
 
-install-shlib:
-	$(INSTALL) $(INSTLOPTS) $(shlib) $(LIBDIR)
-	cd $(LIBDIR) && $(LN_S) -f $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
-	cd $(LIBDIR) && $(LN_S) -f $(shlib) lib$(NAME)$(DLSUFFIX)
- 
 
 uninstall::
 	rm -f $(LIBDIR)/lib$(NAME).a $(LIBDIR)/$(shlib)
@@ -103,8 +122,3 @@ ecpglib.o : ecpglib.c ../include/ecpglib.h ../include/ecpgtype.h
 	$(CC) $(CFLAGS) -I../include $(PQ_INCLUDE) -c $< -o $@
 typename.o : typename.c ../include/ecpgtype.h
 	$(CC) $(CFLAGS) -I../include $(PQ_INCLUDE) -c $< -o $@
-
-ecpglib.sho : ecpglib.c ../include/ecpglib.h ../include/ecpgtype.h
-	$(CC) $(CFLAGS) $(CFLAGS_SL) -I../include $(PQ_INCLUDE) -c $< -o $@
-typename.sho : typename.c ../include/ecpgtype.h
-	$(CC) $(CFLAGS) $(CFLAGS_SL) -I../include $(PQ_INCLUDE) -c $< -o $@
diff --git a/src/interfaces/libpgtcl/Makefile.in b/src/interfaces/libpgtcl/Makefile.in
index 9df0dc0d3cd..c072f136628 100644
--- a/src/interfaces/libpgtcl/Makefile.in
+++ b/src/interfaces/libpgtcl/Makefile.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile.in,v 1.31 1998/10/14 16:12:54 thomas Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile.in,v 1.32 1998/10/18 19:40:54 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -130,7 +130,7 @@ $(shlib): $(OBJS)
 	$(LD) $(LDFLAGS_SL) -o $@ $(OBJS) $(LIBPQ)
 
 .PHONY: beforeinstall-headers install-headers
-.PHONY: install install-libpgtcl
+.PHONY: install install-libpgtcl install-shlib
 
 install: install-headers install-libpgtcl $(install-shlib-dep)
 
@@ -144,14 +144,20 @@ install-libpgtcl: lib$(NAME).a
 	$(INSTALL) $(INSTL_LIB_OPTS) lib$(NAME).a $(LIBDIR)/lib$(NAME).a
 
 install-shlib: $(shlib)
-	$(INSTALL) $(INSTL_SHLIB_OPTS) $(shlib) \
-		$(LIBDIR)/$(shlib)
-	rm -f $(LIBDIR)/lib$(NAME)$(DLSUFFIX)
-	cd $(LIBDIR) && $(LN_S) -f $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
-	cd $(LIBDIR) && $(LN_S) -f $(shlib) lib$(NAME)$(DLSUFFIX)
+	$(INSTALL) $(INSTL_SHLIB_OPTS) $(shlib) $(LIBDIR)/$(shlib)
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+	fi
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX); \
+	fi
 
 .PHONY: clean
 clean: 
-	rm -f $(OBJS) $(shlib) lib$(NAME).a lib$(NAME)$(DLSUFFIX)
+	rm -f $(OBJS) $(shlib) lib$(NAME).a
 
 dep depend:
diff --git a/src/interfaces/libpq++/Makefile.in b/src/interfaces/libpq++/Makefile.in
index dcd50fbd2ab..f3a8eaead98 100644
--- a/src/interfaces/libpq++/Makefile.in
+++ b/src/interfaces/libpq++/Makefile.in
@@ -7,20 +7,23 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile.in,v 1.8 1998/10/13 14:12:22 scrappy Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile.in,v 1.9 1998/10/18 19:40:55 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
-SRCDIR= ../..
+NAME= pq++
+SO_MAJOR_VERSION= 2
+SO_MINOR_VERSION= 0
+
+SRCDIR= @top_srcdir@
 include $(SRCDIR)/Makefile.global
-SRCHEADERDIR = $(SRCDIR)/include
-LIBPQHEADERDIR = $(SRCHEADERDIR)/libpq
 
-LIBNAME= libpq++
+PORTNAME=@PORTNAME@
 
 CXX=@CXX@
 
-PORTNAME=@PORTNAME@
+SRCHEADERDIR = $(SRCDIR)/include
+LIBPQHEADERDIR = $(SRCHEADERDIR)/libpq
 
 # We have to override -Werror, which makes warnings, fatal, because we
 # inevitably get the warning, "abstract declarator used as declaration"
@@ -48,41 +51,69 @@ endif
 OBJS = pgenv.o pgconnection.o pgtransdb.o pgcursordb.o pglobject.o
 
 # Shared library stuff
-SHLIB := 
-INSTALL-SHLIB-DEP :=
+shlib := 
+install-shlib-dep :=
+
 ifeq ($(PORTNAME), linux)
-  INSTALL-SHLIB-DEP := install-shlib
-  SHLIB := libpq++.so.1
-  LDFLAGS_SL = -shared -soname $(SHLIB)
-  CFLAGS += $(CFLAGS_SL)
+  install-shlib-dep	:= install-shlib
+  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  LDFLAGS_SL		:= -shared -soname lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  CFLAGS			+= $(CFLAGS_SL)
+endif
+
+ifeq ($(PORTNAME), bsd)
+  ifdef BSD_SHLIB
+    install-shlib-dep	:= install-shlib
+    shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+    LDFLAGS_SL			:= -x -Bshareable -Bforcearchive
+    CFLAGS				+= $(CFLAGS_SL)
+  endif
+endif
+
+ifeq ($(PORTNAME), bsdi)
+  ifdef BSD_SHLIB
+    ifeq ($(DLSUFFIX), .so)
+      install-shlib-dep := install-shlib
+      shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+      LDFLAGS_SL		+= -shared
+      CFLAGS			+= $(CFLAGS_SL)
+    endif
+    ifeq ($(DLSUFFIX), .o)
+      install-shlib-dep	:= install-shlib
+      shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+      LD				:= shlicc
+      LDFLAGS_SL	 	+= -O -r
+      CFLAGS			+= $(CFLAGS_SL)
+    endif
+  endif
 endif
 
 ifeq ($(PORTNAME), solaris_sparc)
-  INSTALL-SHLIB-DEP := install-shlib
-  SHLIB := libpq++.so.1
-  LDFLAGS_SL = -G -shared 
-  CFLAGS += $(CFLAGS_SL)
+  install-shlib-dep	:= install-shlib
+  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  LDFLAGS_SL		:= -G
+  CFLAGS			+= $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), solaris_i386)
-  INSTALL-SHLIB-DEP := install-shlib
-  SHLIB := libpq++.so.1
-  LDFLAGS_SL = -G -shared 
-  CFLAGS += $(CFLAGS_SL)
+  install-shlib-dep	:= install-shlib
+  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  LDFLAGS_SL		:= -G
+  CFLAGS			+= $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), svr4)
-  INSTALL-SHLIB-DEP := install-shlib
-  SHLIB := libpq++.so.1
-  LDFLAGS_SL = -G -shared -soname $(SHLIB)
-  CFLAGS += $(CFLAGS_SL)
+  install-shlib-dep	:= install-shlib
+  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  LDFLAGS_SL		:= -G
+  CFLAGS			+= $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), unixware)
-  install-shlib-dep := install-shlib
-  shlib := libpq.so.1
-  LDFLAGS_SL = -G -z text
-  CFLAGS += $(CFLAGS_SL)
+  install-shlib-dep	:= install-shlib
+  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  LDFLAGS_SL		:= -G -z text
+  CFLAGS			+= $(CFLAGS_SL)
   ifeq ($(CXX), CC)
     CXXFLAGS += -Xw
     COMPILE.cc = $(CXX) $(CXXFLAGS:ll,alloca=ll) $(CPPFLAGS) $(TARGET_ARCH) -c
@@ -90,10 +121,10 @@ ifeq ($(PORTNAME), unixware)
 endif
 
 ifeq ($(PORTNAME), univel)
-  install-shlib-dep := install-shlib
-  shlib := libpq.so.1
-  LDFLAGS_SL = -G -z text
-  CFLAGS += $(CFLAGS_SL)
+  install-shlib-dep	:= install-shlib
+  shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+  LDFLAGS_SL		:= -G -z text
+  CFLAGS			+= $(CFLAGS_SL)
   ifeq ($(CXX), CC)
     CXXFLAGS += -Xw
     COMPILE.cc = $(CXX) $(CXXFLAGS:ll,alloca=ll) $(CPPFLAGS) $(TARGET_ARCH) -c
@@ -101,37 +132,38 @@ ifeq ($(PORTNAME), univel)
 endif
 
 ifeq ($(PORTNAME), hpux)
-  install-shlib-dep := install-shlib
-  shlib := libpq.sl
-  LDFLAGS_SL = -b
-  CFLAGS += $(CFLAGS_SL)
+  install-shlib-dep	:= install-shlib
+  shlib				:= lib$(NAME).sl
+  LDFLAGS_SL		:= -b
+  CFLAGS			+= $(CFLAGS_SL)
 endif
 
-all: $(LIBNAME).a $(SHLIB)
 
-$(LIBNAME).a: $(OBJS)
+all: libpq++.a $(shlib)
+
+libpq++.a: $(OBJS)
 ifdef MK_NO_LORDER
-	$(AR) $(AROPT) $(LIBNAME).a $(OBJS)
+	$(AR) $(AROPT) libpq++.a $(OBJS)
 else
-	$(AR) $(AROPT) $(LIBNAME).a `lorder $(OBJS) | tsort`
+	$(AR) $(AROPT) libpq++.a `lorder $(OBJS) | tsort`
 endif
-	$(RANLIB) $(LIBNAME).a
+	$(RANLIB) libpq++.a
 
-$(SHLIB): $(OBJS)
-	$(LD) $(LDFLAGS) $(LDFLAGS_SL) -o $@ $(OBJS)
+$(shlib): $(OBJS)
+	$(LD) $(LDFLAGS_SL) -o $@ $(OBJS)
 
 .PHONY: examples
 examples:
 	$(MAKE) -C examples all
 
 .PHONY: beforeinstall-headers install-headers 
-.PHONY: install beforeinstall-lib install-$(LIBNAME)
+.PHONY: install beforeinstall-lib install-libpq++ install-shlib
 
-install: install-headers install-$(LIBNAME) $(INSTALL-SHLIB-DEP)
+install: install-headers install-libpq++ $(install-shlib-dep)
 
-LIBPGXXDIR = $(LIBNAME)
+LIBPGXXDIR = libpq++
 LIBPGXXHEADERDIR = $(HEADERDIR)/$(LIBPGXXDIR)
-MAINHEADER = $(LIBNAME).h
+MAINHEADER = libpq++.h
 LIBPGXXHEADERS = pgenv.h \
 		 pgconnection.h \
 		 pgdatabase.h \
@@ -153,16 +185,25 @@ beforeinstall-headers:
 beforeinstall-lib:
 	@if [ ! -d $(LIBDIR) ] ; then mkdir $(LIBDIR); fi
 
-install-$(LIBNAME): $(LIBNAME).a beforeinstall-lib
-	$(INSTALL) $(INSTL_LIB_OPTS) $(LIBNAME).a $(LIBDIR)/$(LIBNAME).a
-
-install-shlib: $(SHLIBNAME) beforeinstall-lib
-	$(INSTALL) $(INSTL_SHLIB_OPTS) $(SHLIB) $(LIBDIR)/$(SHLIB)
-	rm -f $(LIBDIR)/libpq++.so
-	$(LN_S) -f $(SHLIB) $(LIBDIR)/libpq++.so
-
+install-libpq++: libpq++.a beforeinstall-lib
+	$(INSTALL) $(INSTL_LIB_OPTS) libpq++.a $(LIBDIR)/libpq++.a
+
+install-shlib: $(shlib)
+	$(INSTALL) $(INSTL_SHLIB_OPTS) $(shlib) $(LIBDIR)/$(shlib)
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+	fi
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX); \
+	fi
+
+.PHONY: clean
 clean:
-	rm -f $(LIBNAME).a $(OBJS)
+	rm -f libpq++.a $(shlib) $(OBJS)
 	$(MAKE) -C examples clean
 
 dep depend:
diff --git a/src/interfaces/libpq/Makefile.in b/src/interfaces/libpq/Makefile.in
index ed2a5610908..7d9d8b57417 100644
--- a/src/interfaces/libpq/Makefile.in
+++ b/src/interfaces/libpq/Makefile.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.38 1998/10/14 16:13:03 thomas Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.39 1998/10/18 19:40:55 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -117,6 +117,7 @@ ifeq ($(PORTNAME), hpux)
   CFLAGS			+= $(CFLAGS_SL)
 endif
 
+
 all: libpq.a $(shlib)
 
 libpq.a: $(OBJS)
@@ -158,7 +159,7 @@ $(shlib): $(OBJS)
 
 
 .PHONY: beforeinstall-headers install-headers
-.PHONY: install install-libpq install-shlib-dep 
+.PHONY: install install-libpq install-shlib
 
 install: install-headers install-libpq $(install-shlib-dep)
 
@@ -228,20 +229,26 @@ install-libpq: libpq.a
 
 install-shlib: $(shlib)
 	$(INSTALL) $(INSTL_SHLIB_OPTS) $(shlib) $(LIBDIR)/$(shlib)
-	rm -f $(LIBDIR)/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
-	rm -f $(LIBDIR)/lib$(NAME)$(DLSUFFIX)
-	cd $(LIBDIR) && $(LN_S) -f $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
-	cd $(LIBDIR) && $(LN_S) -f $(shlib) lib$(NAME)$(DLSUFFIX)
-
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+	fi
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX); \
+	fi
 
-depend dep:
-	$(CC) -MM $(CFLAGS) *.c >depend
 
 .PHONY: clean
 clean:
 	rm -f libpq.a $(shlib) $(OBJS)
 	rm -f dllist.c common.c wchar.c conv.c
 
+depend dep:
+	$(CC) -MM $(CFLAGS) *.c >depend
+
 ifeq (depend,$(wildcard depend))
 include depend
 endif
diff --git a/src/interfaces/odbc/GNUmakefile.in b/src/interfaces/odbc/GNUmakefile.in
index 4597ed3ca6c..bb97b0b15d6 100644
--- a/src/interfaces/odbc/GNUmakefile.in
+++ b/src/interfaces/odbc/GNUmakefile.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile.in,v 1.5 1998/10/14 16:09:32 thomas Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile.in,v 1.6 1998/10/18 19:40:56 tgl Exp $
 #
 #-------------------------------------------------------------------------
 @SET_MAKE@
@@ -25,17 +25,24 @@ FIND= @find@
 TAR= @tar@
 SPLIT= @split@
 
-install-shlib-dep := install-shlib
-shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+# Shared library stuff
+shlib := 
+install-shlib-dep :=
 
 ifeq ($(PORTNAME), linux)
+  install-shlib-dep := install-shlib
+  shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   LDFLAGS_SL = -shared -soname lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
   LDFLAGS_SL += -Bsymbolic $(LDFLAGS) -lc -lm
+  CFLAGS += $(CFLAGS_SL)
 endif
 
 ifeq ($(PORTNAME), bsd)
   ifdef BSD_SHLIB
+    install-shlib-dep := install-shlib
+    shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
     LDFLAGS_SL = -x -Bshareable -Bforcearchive $(LDFLAGS)
+    CFLAGS += $(CFLAGS_SL)
   endif
 endif
 
@@ -55,16 +62,15 @@ CFLAGS += -I. @DEFS@
 all: libpsqlodbc.a $(shlib)
 
 libpsqlodbc.a: $(OBJECTS)
-	$(AR) $(AROPT) libpsqlodbc.a $(OBJS)
+	$(AR) $(AROPT) libpsqlodbc.a $(OBJECTS)
 	$(RANLIB) libpsqlodbc.a
 
 $(shlib): $(OBJECTS)
 	$(LD) $(LDFLAGS_SL) $(OBJECTS) \
 	-o $(shlib) $(LIBS)
 
-.PHONY: beforeinstall-headers
-
-.PHONY: install
+.PHONY: beforeinstall-headers install-headers
+.PHONY: install install-libpsqlodbc install-ini install-shlib
 
 install: $(HEADERDIR) $(LIBDIR) $(ODBCINST) install-headers \
 	install-libpsqlodbc install-ini $(install-shlib-dep)
@@ -84,11 +90,17 @@ install-libpsqlodbc: libpsqlodbc.a
 	$(INSTALL) $(INSTL_LIB_OPTS) libpsqlodbc.a $(LIBDIR)/lib$(NAME).a
 
 install-shlib: $(shlib)
-	$(INSTALL) $(INSTL_LIB_OPTS) $(shlib) $(LIBDIR)/$(shlib)
-	rm -f $(LIBDIR)/lib$(NAME)$(DLSUFFIX)
-	rm -f $(LIBDIR)/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
-	cd $(LIBDIR) && $(LN_S) -f $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
-	cd $(LIBDIR) && $(LN_S) -f $(shlib) lib$(NAME)$(DLSUFFIX)
+	$(INSTALL) $(INSTL_SHLIB_OPTS) $(shlib) $(LIBDIR)/$(shlib)
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
+	fi
+	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX)" ]; then \
+		cd $(LIBDIR); \
+		rm -f lib$(NAME)$(DLSUFFIX); \
+		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX); \
+	fi
 
 install-ini: odbcinst.ini
 	$(INSTALL) $(INSTL_LIB_OPTS) odbcinst.ini $(ODBCINST)
diff --git a/src/interfaces/odbc/Makefile.global.in b/src/interfaces/odbc/Makefile.global.in
index d5edb32a0de..c1374167ef7 100644
--- a/src/interfaces/odbc/Makefile.global.in
+++ b/src/interfaces/odbc/Makefile.global.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/Makefile.global.in,v 1.2 1998/10/09 07:04:50 thomas Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/Makefile.global.in,v 1.3 1998/10/18 19:40:56 tgl Exp $
 #
 # NOTES
 #    This is derived from the main Postgres makefile.
@@ -102,6 +102,7 @@ RANLIB= @RANLIB@
 INSTLOPTS= @INSTLOPTS@
 INSTL_EXE_OPTS= @INSTL_EXE_OPTS@
 INSTL_LIB_OPTS= @INSTL_LIB_OPTS@
+INSTL_SHLIB_OPTS= @INSTL_SHLIB_OPTS@
 
 ##############################################################################
 #
diff --git a/src/interfaces/odbc/configure.in b/src/interfaces/odbc/configure.in
index 893f6963008..ded19b9b3d5 100644
--- a/src/interfaces/odbc/configure.in
+++ b/src/interfaces/odbc/configure.in
@@ -250,8 +250,8 @@ AC_SUBST(CFLAGS)
 AC_SUBST(DLSUFFIX)
 AC_SUBST(DL_LIB)
 
-INSTALLPATH="/usr/ucb:$PATH"
-AC_PATH_PROGS(INSTALL, ginstall installbsd bsdinst scoinst install, NONE, $INSTALLPATH)
+INSTALLPATH="`echo /usr/ucb:$PATH | sed 's/:/ /g'`"
+AC_PATH_PROGS(INSTALL, ginstall installbsd bsdinst scoinst install, NONE, $INSTALLPATH )
 if test $INSTALL = "NONE"
 then
    echo "- No Install Script found - aborting."
@@ -261,18 +261,29 @@ fi
 INSTLOPTS="-m 444"
 INSTL_EXE_OPTS="-m 555"
 INSTL_LIB_OPTS="-m 644"
+INSTL_SHLIB_OPTS="-m 644"
 
+dnl HPUX wants shared libs to be mode 555.
+case "$host_os" in
+ hpux*)
+	INSTL_SHLIB_OPTS="-m 555" ;;
+esac
+
+dnl These flavors of install need -c to install by copy rather than move.
+dnl install by move is fatal because it removes stuff from the source tree!
 case "`basename $INSTALL`" in
- install|installbsd|scoinst)
+ install|installbsd|scoinst|install-sh)
 	INSTLOPTS="-c $INSTLOPTS"
 	INSTL_EXE_OPTS="-c $INSTL_EXE_OPTS"
-	INSTL_LIB_OPTS="-c $INSTL_LIB_OPTS";;
+	INSTL_LIB_OPTS="-c $INSTL_LIB_OPTS"
+	INSTL_SHLIB_OPTS="-c $INSTL_SHLIB_OPTS";;
 esac
 
 echo "- Using $INSTALL"
 AC_SUBST(INSTALL)
 AC_SUBST(INSTLOPTS)
 AC_SUBST(INSTL_LIB_OPTS)
+AC_SUBST(INSTL_SHLIB_OPTS)
 AC_SUBST(INSTL_EXE_OPTS)
 
 dnl Check the option to echo to inhibit newlines.
diff --git a/src/pl/plpgsql/src/Makefile.in b/src/pl/plpgsql/src/Makefile.in
index a4092278ead..eeb8271b26f 100644
--- a/src/pl/plpgsql/src/Makefile.in
+++ b/src/pl/plpgsql/src/Makefile.in
@@ -4,7 +4,7 @@
 #    Makefile for the plpgsql shared object
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/Makefile.in,v 1.8 1998/10/12 01:23:29 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/Makefile.in,v 1.9 1998/10/18 19:40:58 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -113,7 +113,7 @@ clean:
 	rm -f *.o y.tab.h pl.tab.h pl_gram.c gram.c pl_scan.c scan.c
 
 install: all
-	$(INSTALL) $(INSTL_LIB_OPTS) $(DLOBJ) $(DESTDIR)$(LIBDIR)/$(DLOBJ)
+	$(INSTALL) $(INSTL_SHLIB_OPTS) $(DLOBJ) $(DESTDIR)$(LIBDIR)/$(DLOBJ)
 
 $(DLOBJ):	$(OBJS)
 	$(LD) $(LDFLAGS_SL) -o $@ $(OBJS)
diff --git a/src/pl/tcl/Makefile b/src/pl/tcl/Makefile
index d21164c009b..6ffe172ca01 100644
--- a/src/pl/tcl/Makefile
+++ b/src/pl/tcl/Makefile
@@ -4,7 +4,7 @@
 #    Makefile for the pltcl shared object
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/pl/tcl/Makefile,v 1.8 1998/10/17 23:33:23 tgl Exp $
+#    $Header: /cvsroot/pgsql/src/pl/tcl/Makefile,v 1.9 1998/10/18 19:41:00 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -89,7 +89,7 @@ ifeq ($(TCL_SHARED_BUILD),1)
 all: $(INFILES)
 
 install: all
-	$(INSTALL) $(INSTL_LIB_OPTS) $(DLOBJS) $(LIBDIR)/$(DLOBJS)
+	$(INSTALL) $(INSTL_SHLIB_OPTS) $(DLOBJS) $(LIBDIR)/$(DLOBJS)
 
 else
 
-- 
GitLab