LINKER_NAME = libnotmuch.$(LIBRARY_SUFFIX)
SONAME = $(LINKER_NAME).$(LIBNOTMUCH_VERSION_MAJOR)
LIBNAME = $(SONAME).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE)
-LIBRARY_LINK_FLAG = -shared -Wl,--version-script=notmuch.sym,-soname=$(SONAME)
+LIBRARY_LINK_FLAG = -shared -Wl,--version-script=notmuch.sym,-soname=$(SONAME) -Wl,--no-undefined
ifeq ($(LIBDIR_IN_LDCONFIG),1)
ifeq ($(DESTDIR),)
LIBRARY_INSTALL_POST_COMMAND=ldconfig
dir := lib
extra_cflags += -I$(srcdir)/$(dir) -fPIC
+# The (often-reused) $dir works fine within targets/prerequisites,
+# but cannot be used reliably within commands, so copy its value to a
+# variable that is not reused.
+lib := $(dir)
+
libnotmuch_c_srcs = \
$(notmuch_compat_srcs) \
$(dir)/filenames.c \
$(dir)/message-file.c \
$(dir)/messages.c \
$(dir)/sha1.c \
- $(dir)/tags.c \
- $(dir)/xutil.c
+ $(dir)/tags.c
libnotmuch_cxx_srcs = \
$(dir)/database.cc \
$(call quiet,AR) rcs $@ $^
$(dir)/$(LIBNAME): $(libnotmuch_modules) notmuch.sym
- $(call quiet,CXX $(CXXFLAGS)) $(libnotmuch_modules) $(FINAL_LIBNOTMUCH_LDFLAGS) $(LIBRARY_LINK_FLAG) -o $@
+ $(call quiet,CXX $(CXXFLAGS)) $(libnotmuch_modules) $(FINAL_LIBNOTMUCH_LDFLAGS) $(LIBRARY_LINK_FLAG) -o $@ util/libutil.a
-notmuch.sym: lib/notmuch.h $(libnotmuch_modules)
- sh lib/gen-version-script.sh $< $(libnotmuch_modules) > $@
+notmuch.sym: $(srcdir)/$(dir)/notmuch.h $(libnotmuch_modules)
+ sh $(srcdir)/$(lib)/gen-version-script.sh $< $(libnotmuch_modules) > $@
$(dir)/$(SONAME): $(dir)/$(LIBNAME)
ln -sf $(LIBNAME) $@
install: install-$(dir)
-# The (often-reused) $dir works fine within targets/prerequisites,
-# but cannot be used reliably within commands, so copy its value to a
-# variable that is not reused.
-lib := $(dir)
install-$(dir): $(dir)/$(LIBNAME)
mkdir -p "$(DESTDIR)$(libdir)/"
install -m0644 "$(lib)/$(LIBNAME)" "$(DESTDIR)$(libdir)/"