From a9ddd649df46afde8f26dd9f85f05292e8da1f4b Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Fri, 19 Nov 2004 00:41:39 +0000
Subject: [PATCH] Modify the platform-specific makefiles so that macro 'rpath'
 is defined in terms of macro 'rpathdir', as I proposed a few weeks ago.  In
 itself this commit shouldn't change the behavior at all, but it opens the
 door to using special rpaths for the PL shared libraries, as seems to be
 needed for plperl in particular.

---
 src/Makefile.global.in          |  6 +++++-
 src/makefiles/Makefile.bsdi     |  2 +-
 src/makefiles/Makefile.freebsd  |  2 +-
 src/makefiles/Makefile.hpux     | 10 ++++------
 src/makefiles/Makefile.irix     |  2 +-
 src/makefiles/Makefile.linux    |  2 +-
 src/makefiles/Makefile.netbsd   |  4 ++--
 src/makefiles/Makefile.openbsd  |  2 +-
 src/makefiles/Makefile.osf      |  2 +-
 src/makefiles/Makefile.solaris  |  6 +++---
 src/makefiles/Makefile.unixware |  4 ++--
 11 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 02c32de3a0f..2c8f38f1e71 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -1,5 +1,5 @@
 # -*-makefile-*-
-# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.204 2004/10/20 02:12:07 neilc Exp $
+# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.205 2004/11/19 00:41:38 tgl Exp $
 
 #------------------------------------------------------------------------------
 # All PostgreSQL makefiles include this file and use the variables it sets,
@@ -284,6 +284,10 @@ ELF_SYSTEM= @ELF_SYS@
 # Pull in platform-specific magic
 include $(top_builddir)/src/Makefile.port
 
+# Set up rpath if enabled.  By default it will point to our libdir,
+# but individual Makefiles can force other rpath paths if needed.
+rpathdir = $(libdir)
+
 ifeq ($(enable_rpath), yes)
 LDFLAGS += $(rpath)
 endif
diff --git a/src/makefiles/Makefile.bsdi b/src/makefiles/Makefile.bsdi
index 99be3eebb10..0257f6367a4 100644
--- a/src/makefiles/Makefile.bsdi
+++ b/src/makefiles/Makefile.bsdi
@@ -14,7 +14,7 @@ endif
 
 ifeq ($(DLSUFFIX), .so)
 CFLAGS_SL = -fpic
-rpath = -Wl,-rpath,$(libdir)
+rpath = -Wl,-rpath,$(rpathdir)
 export_dynamic = -export-dynamic
 shlib_symbolic = -Wl,-Bsymbolic
 else
diff --git a/src/makefiles/Makefile.freebsd b/src/makefiles/Makefile.freebsd
index a9e59604d5a..8f41ea4d867 100644
--- a/src/makefiles/Makefile.freebsd
+++ b/src/makefiles/Makefile.freebsd
@@ -2,7 +2,7 @@ AROPT = cr
 
 ifdef ELF_SYSTEM
 export_dynamic = -export-dynamic
-rpath = -R$(libdir)
+rpath = -R$(rpathdir)
 shlib_symbolic = -Wl,-Bsymbolic -lc
 endif
 
diff --git a/src/makefiles/Makefile.hpux b/src/makefiles/Makefile.hpux
index 2ffd791e401..4a1e551ec14 100644
--- a/src/makefiles/Makefile.hpux
+++ b/src/makefiles/Makefile.hpux
@@ -16,14 +16,12 @@ endif
 # correctly in the LP64 data model.
 LIBS := -lxnet $(LIBS)
 
-# Embed 'libdir' as the shared library search path so that the executables
-# don't need SHLIB_PATH to be set.  (We do not observe the --enable-rpath
-# switch here because you'd get rather bizarre behavior if you leave this
-# option off.)
+# Set up rpath so that the executables don't need SHLIB_PATH to be set.
+# (Note: --disable-rpath is a really bad idea on this platform...)
 ifeq ($(with_gnu_ld), yes)
-   LDFLAGS += -Wl,-rpath -Wl,$(libdir)
+   rpath = -Wl,-rpath,$(rpathdir)
 else
-   LDFLAGS += -Wl,+b -Wl,$(libdir)
+   rpath = -Wl,+b,$(rpathdir)
 endif
 
 # catch null pointer dereferences
diff --git a/src/makefiles/Makefile.irix b/src/makefiles/Makefile.irix
index 4062161d9ef..4486ed05e09 100644
--- a/src/makefiles/Makefile.irix
+++ b/src/makefiles/Makefile.irix
@@ -1,6 +1,6 @@
 MK_NO_LORDER= true
 AROPT = crs
-rpath = -Wl,-rpath,$(libdir)
+rpath = -Wl,-rpath,$(rpathdir)
 shlib_symbolic = -Wl,-B,symbolic
 
 DLSUFFIX = .so
diff --git a/src/makefiles/Makefile.linux b/src/makefiles/Makefile.linux
index e48ad5a6b10..c473214466e 100644
--- a/src/makefiles/Makefile.linux
+++ b/src/makefiles/Makefile.linux
@@ -1,6 +1,6 @@
 AROPT = crs
 export_dynamic = -Wl,-E
-rpath = -Wl,-rpath,$(libdir)
+rpath = -Wl,-rpath,$(rpathdir)
 shlib_symbolic = -Wl,-Bsymbolic
 allow_nonpic_in_shlib = yes
 DLSUFFIX = .so
diff --git a/src/makefiles/Makefile.netbsd b/src/makefiles/Makefile.netbsd
index 531fc1356b5..2b6a1e13fd2 100644
--- a/src/makefiles/Makefile.netbsd
+++ b/src/makefiles/Makefile.netbsd
@@ -2,10 +2,10 @@ AROPT = cr
 
 ifdef ELF_SYSTEM
 export_dynamic = -Wl,-E
-rpath = -Wl,-R$(libdir)
+rpath = -Wl,-R$(rpathdir)
 shlib_symbolic = -Wl,-Bsymbolic -lc
 else
-rpath = -R$(libdir)
+rpath = -R$(rpathdir)
 endif
 
 DLSUFFIX = .so
diff --git a/src/makefiles/Makefile.openbsd b/src/makefiles/Makefile.openbsd
index 66671e675fb..e35739573cd 100644
--- a/src/makefiles/Makefile.openbsd
+++ b/src/makefiles/Makefile.openbsd
@@ -2,7 +2,7 @@ AROPT = cr
 
 ifdef ELF_SYSTEM
 export_dynamic = -Wl,-E
-rpath = -R$(libdir)
+rpath = -R$(rpathdir)
 shlib_symbolic = -Wl,-Bsymbolic
 endif
 
diff --git a/src/makefiles/Makefile.osf b/src/makefiles/Makefile.osf
index 4ee46ccd756..ebd6c30149b 100644
--- a/src/makefiles/Makefile.osf
+++ b/src/makefiles/Makefile.osf
@@ -1,7 +1,7 @@
 AROPT = crs
 DLSUFFIX = .so
 CFLAGS_SL =
-rpath = -rpath $(libdir)
+rpath = -rpath $(rpathdir)
 
 %.so: %.o
 	$(LD) -shared -expect_unresolved '*' -o $@ $<
diff --git a/src/makefiles/Makefile.solaris b/src/makefiles/Makefile.solaris
index d6fb7d8a7e7..2ff7e28c907 100644
--- a/src/makefiles/Makefile.solaris
+++ b/src/makefiles/Makefile.solaris
@@ -1,12 +1,12 @@
-# $PostgreSQL: pgsql/src/makefiles/Makefile.solaris,v 1.10 2003/11/29 19:52:12 pgsql Exp $
+# $PostgreSQL: pgsql/src/makefiles/Makefile.solaris,v 1.11 2004/11/19 00:41:39 tgl Exp $
 
 AROPT = crs
 
 ifeq ($(with_gnu_ld), yes)
 export_dynamic = -Wl,-E
-rpath = -Wl,-rpath,$(libdir)
+rpath = -Wl,-rpath,$(rpathdir)
 else
-rpath = -R$(libdir)
+rpath = -R$(rpathdir)
 endif
 shlib_symbolic = -Wl,-Bsymbolic
 
diff --git a/src/makefiles/Makefile.unixware b/src/makefiles/Makefile.unixware
index 3372a8e5747..e8953756a67 100644
--- a/src/makefiles/Makefile.unixware
+++ b/src/makefiles/Makefile.unixware
@@ -7,9 +7,9 @@ endif
 
 ifeq ($(ld_R_works), yes)
 ifeq ($(with_gnu_ld), yes)
-	rpath = -Wl,-rpath,$(libdir)
+	rpath = -Wl,-rpath,$(rpathdir)
 else
-	rpath = -Wl,-R$(libdir)
+	rpath = -Wl,-R$(rpathdir)
 endif
 endif
 shlib_symbolic = -Wl,-Bsymbolic
-- 
GitLab