summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-04-14 16:29:50 -0700
committerCarl Worth <cworth@cworth.org>2010-04-14 16:29:50 -0700
commit3d7af74ce512f4eed451ac86da3890397999d321 (patch)
tree79597146650f9bd3f50d011715f1d7d4e69d82df
parent72ea1b71c6b65965e3b205271d51c66ff66e13bf (diff)
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.
-rw-r--r--Makefile.local3
-rwxr-xr-xconfigure7
2 files changed, 10 insertions, 0 deletions
diff --git a/Makefile.local b/Makefile.local
index 79ac50d..4a8142f 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 8af3dc9..eebe075 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}