aboutsummaryrefslogtreecommitdiffhomepage
path: root/Makefile.local
diff options
context:
space:
mode:
authorGravatar Carl Worth <cworth@cworth.org>2010-06-04 16:52:56 -0700
committerGravatar Carl Worth <cworth@cworth.org>2010-06-04 16:52:56 -0700
commitd64d0cc8d9f9e9f23fa4432328db2ea4739bae0f (patch)
tree049b68354a6ddee473ea35144d3452680d5dd15f /Makefile.local
parentb3076ed2693c6e32fd70a9ec78e36bc71727356e (diff)
make install: Run ldconfig or install a DT_RUNPATH in binary as appropriate.
Various users were confused as to why they couldn't run notmuch immediately after "make install", (with linker errors saying that libnotmuch.so could not be found). The errors came from two different causes: 1. The user had installed to a system library directory, but had not yet run ldconfig. 2. The user had installed to some non-system directory, and had not set the LD_LIBRARY_PATH variable. With this change we fix both problems (on Linux) without the user having to do anything additional. We first use ldconfig to find the system library directories. If the user is installing to one of these, then we run ldconfig as part of "make install". For case (2) we use the -rpath and --enable-new-dtags linker options to install a DT_RUNPATH entry in the binary. This entry tells the dynamic linker where to find libnotmuch. Without the --enable-new-dtags option only a DT_RPATH option would be installed, (which has the drawback of not allowing any override with the LD_LIBRARY_PATH variable). Distributions (such as Debian and Fedora) don't want to see binaries packaged with a DT_RPATH or DT_RUNPATH entry. This should be avoided automatically as long as the packages install to standard locations, (such as /usr/lib).
Diffstat (limited to 'Makefile.local')
-rw-r--r--Makefile.local5
1 files changed, 5 insertions, 0 deletions
diff --git a/Makefile.local b/Makefile.local
index 59b8d64e..bc61a3c1 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -37,6 +37,11 @@ ifneq ($(LINKER_RESOLVES_LIBRARY_DEPENDENCIES),1)
FINAL_NOTMUCH_LDFLAGS += $(CONFIGURE_LDFLAGS)
FINAL_NOTMUCH_LINKER = CXX
endif
+ifeq ($(PLATFORM),LINUX)
+ifeq ($(LIBDIR_IN_LDCONFIG),0)
+FINAL_NOTMUCH_LDFLAGS += -Wl,--enable-new-dtags -Wl,-rpath,$(libdir)
+endif
+endif
FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(CONFIGURE_LDFLAGS)
.PHONY: all