diff options
-rw-r--r-- | Makefile.local | 5 | ||||
-rwxr-xr-x | configure | 22 | ||||
-rw-r--r-- | lib/Makefile.local | 4 |
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 @@ -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 |