From 3d7af74ce512f4eed451ac86da3890397999d321 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Wed, 14 Apr 2010 16:29:50 -0700 Subject: [PATCH] Makefile: Fix final linking of notmuch binary for OS X. Apparently the OS X linker can't resolve symbols when linking a program (notmuch) against a library (libnotmuch) when the library depends on another library (libgmime) that the program doesn't depend on directly. For this case, we need to link the program directly against both libraries, but we don't want to do this on Linux, where the linker can do this on its own and the explicit, unneeded link would cause problems. --- Makefile.local | 3 +++ configure | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/Makefile.local b/Makefile.local index 79ac50d4..4a8142f0 100644 --- a/Makefile.local +++ b/Makefile.local @@ -23,6 +23,9 @@ GPG_FILE=$(SHA1_FILE).asc FINAL_CFLAGS = -DNOTMUCH_VERSION=$(VERSION) $(CFLAGS) $(WARN_CFLAGS) $(CONFIGURE_CFLAGS) $(extra_cflags) FINAL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(CONFIGURE_CXXFLAGS) $(extra_cflags) $(extra_cxxflags) FINAL_NOTMUCH_LDFLAGS = $(LDFLAGS) -Llib -lnotmuch +ifneq ($(LINKER_RESOLVES_LIBRARY_DEPENDENCIES),1) +FINAL_NOTMUCH_LDFLAGS += $(CONFIGURE_LDFLAGS) +endif FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(CONFIGURE_LDFLAGS) .PHONY: all diff --git a/configure b/configure index 8af3dc9e..eebe0751 100755 --- a/configure +++ b/configure @@ -238,9 +238,11 @@ printf "Checking for Mac OS X (for shared library)... " if [ `uname` = "Darwin" ] ; then printf "Yes.\n" mac_os_x=1 + linker_resolves_library_dependencies = 0 else printf "No.\n" mac_os_x=0 + linker_resolves_library_dependencies = 1 fi if [ $errors -gt 0 ]; then @@ -412,6 +414,11 @@ HAVE_STRCASESTR = ${have_strcasestr} # shared library. MAC_OS_X = ${mac_os_x} +# Whether the linker will automatically resolve the dependency of one +# library on another (if not, then linking a binary requires linking +# directly against both) +LINKER_RESOLVES_LIBRARY_DEPENDENCIES = ${linker_resolves_library_dependencies} + # Flags needed to compile and link against Xapian XAPIAN_CXXFLAGS = ${xapian_cxxflags} XAPIAN_LDFLAGS = ${xapian_ldflags}