From: Carl Worth <cworth@cworth.org>
Date: Wed, 14 Apr 2010 23:29:50 +0000 (-0700)
Subject: Makefile: Fix final linking of notmuch binary for OS X.
X-Git-Tag: 0.2~46
X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=3d7af74ce512f4eed451ac86da3890397999d321;p=notmuch

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.
---

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}