From: | Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-hackers(at)lists(dot)postgresql(dot)org, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com> |
Subject: | Re: LD_LIBRARY_PATH_RPATH |
Date: | 2019-02-01 15:36:51 |
Message-ID: | 87k1ij8quh.fsf@news-spur.riddles.org.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
>>>>> "Tom" == Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> writes:
>> Is there some reason why ld_library_path_var is defined using a
>> bunch of $(if) constructs rather than putting the value (if not
>> LD_LIBRARY_PATH) in the individual port makefiles?
Tom> I might be wrong, but I think that code is Peter's. I agree that
Tom> having the per-port makefiles set it seems simpler (or maybe move
Tom> it to the template files, and have the configure script define the
Tom> variable?)
Tom> However, does that help any with this requirement?
No, it just happened to be adjacent.
I'm basically thinking along these lines:
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 6852853041..6e602dde48 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -413,13 +413,15 @@ $(1)="$(if $($(1)),$(2):$$$(1),$(2))"
endef
# platform-specific environment variable to set shared library path
-define ld_library_path_var
-$(if $(filter $(PORTNAME),darwin),DYLD_LIBRARY_PATH,$(if $(filter $(PORTNAME),aix),LIBPATH,$(if $(filter $(PORTNAME),hpux),SHLIB_PATH,LD_LIBRARY_PATH)))
-endef
-
-define with_temp_install
-PATH="$(abs_top_builddir)/tmp_install$(bindir):$$PATH" $(call add_to_path,$(ld_library_path_var),$(abs_top_builddir)/tmp_install$(libdir))
-endef
+# individual ports can override this later, this is the default name
+ld_library_path_var = LD_LIBRARY_PATH
+
+# with_temp_install_extra is for individual ports to define if they
+# need something more here. If not defined then the call does nothing.
+with_temp_install = \
+ PATH="$(abs_top_builddir)/tmp_install$(bindir):$$PATH" \
+ $(call add_to_path,$(strip $(ld_library_path_var)),$(abs_top_builddir)/tmp_install$(libdir)) \
+ $(call with_temp_install_extra,$(abs_top_builddir)/tmp_install)
ifeq ($(enable_tap_tests),yes)
diff --git a/src/makefiles/Makefile.aix b/src/makefiles/Makefile.aix
index 0f6c028938..ba3695dd57 100644
--- a/src/makefiles/Makefile.aix
+++ b/src/makefiles/Makefile.aix
@@ -23,6 +23,9 @@ else
LDFLAGS_SL += -Wl,-bnoentry -Wl,-H512 -Wl,-bM:SRE
endif
+# env var name to use in place of LD_LIBRARY_PATH
+ld_library_path_var = LIBPATH
+
POSTGRES_IMP= postgres.imp
diff --git a/src/makefiles/Makefile.darwin b/src/makefiles/Makefile.darwin
index e2b1d44959..b17598f058 100644
--- a/src/makefiles/Makefile.darwin
+++ b/src/makefiles/Makefile.darwin
@@ -2,6 +2,9 @@ AROPT = crs
DLSUFFIX = .so
+# env var name to use in place of LD_LIBRARY_PATH
+ld_library_path_var = DYLD_LIBRARY_PATH
+
ifdef PGXS
BE_DLLLIBS = -bundle_loader $(bindir)/postgres
else
diff --git a/src/makefiles/Makefile.freebsd b/src/makefiles/Makefile.freebsd
index ce03c8dcd2..98a6f50615 100644
--- a/src/makefiles/Makefile.freebsd
+++ b/src/makefiles/Makefile.freebsd
@@ -9,6 +9,14 @@ DLSUFFIX = .so
CFLAGS_SL = -fPIC -DPIC
+# extra stuff for $(with_temp_install)
+# we need this to get LD_LIBRARY_PATH searched ahead of the compiled-in
+# rpath, if no DT_RUNPATH is present in the executable. The conditions
+# under which DT_RUNPATH are added seem unpredictable, so be safe.
+
+define with_temp_install_extra
+LD_LIBRARY_PATH_RPATH=1
+endef
# Rule for building a shared library from a single .o file
%.so: %.o
diff --git a/src/makefiles/Makefile.hpux b/src/makefiles/Makefile.hpux
index 30dd3eb77e..c871fb0c7e 100644
--- a/src/makefiles/Makefile.hpux
+++ b/src/makefiles/Makefile.hpux
@@ -36,6 +36,9 @@ else
CFLAGS_SL = +Z
endif
+# env var name to use in place of LD_LIBRARY_PATH
+ld_library_path_var = SHLIB_PATH
+
# Rule for building a shared library from a single .o file
%$(DLSUFFIX): %.o
ifeq ($(GCC), yes)
--
Andrew (irc:RhodiumToad)
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Munro | 2019-02-01 15:46:52 | Re: Shared Memory: How to use SYSV rather than MMAP ? |
Previous Message | Peter Eisentraut | 2019-02-01 15:27:37 | Re: Reorganize collation lookup time and place |