aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Makefile.local5
-rwxr-xr-xconfigure22
-rw-r--r--lib/Makefile.local4
3 files changed, 31 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
diff --git a/configure b/configure
index 07bac08b..c86a227c 100755
--- a/configure
+++ b/configure
@@ -167,6 +167,12 @@ for option; do
fi
done
+# We set this value early, (rather than just while printing the
+# Makefile.config file later like most values), because we need to
+# actually investigate this value compared to the ldconfig_paths value
+# below.
+libdir_expanded=${LIBDIR:-${PREFIX}/lib}
+
cat <<EOF
Welcome to Notmuch, a system for indexing, searching and tagging your email.
@@ -266,6 +272,8 @@ else
have_emacs=0
fi
+libdir_in_ldconfig=0
+
printf "Checking which platform we are on... "
if [ `uname` = "Darwin" ] ; then
printf "Mac OS X.\n"
@@ -279,6 +287,13 @@ elif [ `uname` = "Linux" ] ; then
printf "Linux\n"
platform=LINUX
linker_resolves_library_dependencies=1
+ ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
+ for path in $ldconfig_paths; do
+ echo "Checking $path compared to $libdir_expanded"
+ if [ "$path" = "$libdir_expanded" ]; then
+ libdir_in_ldconfig=1
+ fi
+ done
else
printf "Unknown.\n"
cat <<EOF
@@ -419,11 +434,18 @@ WARN_CXXFLAGS=-Wall -Wextra -Wwrite-strings -Wswitch-enum
WARN_CFLAGS=\$(WARN_CXXFLAGS) -Wmissing-declarations
# The prefix to which notmuch should be installed
+# Note: If you change this value here, be sure to ensure that the
+# LIBDIR_IN_LDCONFIG value below is still set correctly.
prefix = ${PREFIX}
# The directory to which libraries should be installed
+# Note: If you change this value here, be sure to ensure that the
+# LIBDIR_IN_LDCONFIG value below is still set correctly.
libdir = ${LIBDIR:=\$(prefix)/lib}
+# Whether libdir is in a path configured into ldconfig
+LIBDIR_IN_LDCONFIG = ${libdir_in_ldconfig}
+
# The directory to which header files should be installed
includedir = ${INCLUDEDIR:=\$(prefix)/include}
diff --git a/lib/Makefile.local b/lib/Makefile.local
index 62f23169..9c0facce 100644
--- a/lib/Makefile.local
+++ b/lib/Makefile.local
@@ -35,6 +35,9 @@ LINKER_NAME = libnotmuch.$(LIBRARY_SUFFIX)
SONAME = $(LINKER_NAME).$(LIBNOTMUCH_VERSION_MAJOR)
LIBNAME = $(SONAME).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE)
LIBRARY_LINK_FLAG = -shared -Wl,-soname=$(SONAME)
+ifeq ($(LIBDIR_IN_LDCONFIG),1)
+LIBRARY_INSTALL_POST_COMMAND=ldconfig
+endif
endif
dir := lib
@@ -80,6 +83,7 @@ install-$(dir):
ln -sf $(LIBNAME) $(DESTDIR)$(libdir)/$(LINKER_NAME)
mkdir -p $(DESTDIR)$(includedir)
install -m0644 $(dir)/notmuch.h $(DESTDIR)$(includedir)/
+ $(LIBRARY_INSTALL_POST_COMMAND)
SRCS := $(SRCS) $(libnotmuch_c_srcs) $(libnotmuch_cxx_srcs)
CLEAN := $(CLEAN) $(libnotmuch_modules) $(dir)/$(SONAME) $(dir)/$(LINKER_NAME) $(dir)$(LIBNAME) libnotmuch.a