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