From c600a6ac4724ac24cfcbf852837dad4ff772bc47 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sun, 10 Nov 2002 00:37:28 +0000
Subject: [PATCH] I am attaching a patch file that will replace the previous
 one.  It only contains the patches to Makefile.global.in and
 Makefile.unixware.  The Makefile.unixware patch has been updated to include
 the contents of LD_LIBRARY_PATH, if present, to the -rpath (-R) option.  This
 change will  simplify configuring and building PostgreSQL on systems that
 support  LD_LIBRARY_PATH.  You can set LD_LIBRARY_PATH to include all the
 directorys  you want to have searched for additional libraries, run
 configure, then run  make.  The paths in LD_LIBRARY_PATH will then be
 embedded in the executables  via the -rpath (-R) option to the linker, and so
 will not require  LD_LIBRARY_PATH in order to run.

Billy G. Allie
---
 src/Makefile.global.in          |  5 ++++-
 src/makefiles/Makefile.unixware | 18 ++++++++++++++++--
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index e0fd91dc92d..fb4592ec985 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -1,5 +1,5 @@
 # -*-makefile-*-
-# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.155 2002/09/04 22:54:18 petere Exp $
+# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.156 2002/11/10 00:37:28 momjian Exp $
 
 #------------------------------------------------------------------------------
 # All PostgreSQL makefiles include this file and use the variables it sets,
@@ -189,6 +189,9 @@ LIBS = @LIBS@
 LD = @LD@
 with_gnu_ld = @with_gnu_ld@
 ld_R_works = @ld_R_works@
+# Set trpath to a list of library paths included in LDFLAGS
+# These paths can be added to rpath in the port specific makefiles if needed.
+trpath = $(filter -L%,@LDFLAGS@)
 LDFLAGS = @LDFLAGS@
 LDREL = -r
 LDOUT = -o
diff --git a/src/makefiles/Makefile.unixware b/src/makefiles/Makefile.unixware
index 9e4d715932a..76b52a5cd88 100644
--- a/src/makefiles/Makefile.unixware
+++ b/src/makefiles/Makefile.unixware
@@ -7,9 +7,23 @@ endif
 
 ifeq ($(ld_R_works), yes)
 ifeq ($(with_gnu_ld), yes)
-	rpath = -Wl,-rpath,$(libdir)
+	# Convert the list of library search paths into -rpath options
+	# (i.e. "-LpathA -LpathB" -> ",-rpath,pathA,-rpath,pathB"), adding
+	# the contents of LD_LIBRARY_PATH if it exists.
+	tpath1=$(shell echo $(trpath) | sed -e 's/ *-L/,-rpath,/g')
+ifdef LD_LIBRARY_PATH
+	tpath2 = ,-rpath,tpath+=$(shell echo $(LD_LIBRARY_PATH) | sed -e 's/:/,-rpath,/g')
+endif
+	rpath = -Wl,-rpath,$(libdir)$(tpath)$(tpath2)
 else
-	rpath = -Wl,-R$(libdir)
+	# Convert the list of library search paths into a -R option path
+	# (i.e. "-LpathA -LpathB" -> ":pathA:pathB"), adding the contents of
+	# LD_LIBRARY_PATH if it exists.
+	tpath1 = $(shell echo $(trpath) | sed -e 's/ *-L/:/g')
+ifdef LD_LIBRARY_PATH
+	tpath2 = :$(LD_LIBRARY_PATH)
+endif
+	rpath = -Wl,-R$(libdir)$(tpath1)$(tpath2)
 endif
 endif
 shlib_symbolic = -Wl,-Bsymbolic
-- 
GitLab