mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 12:28:09 +01:00
feb22fef2e
The lack of such exporting seems to cause problems catching exceptions, as suggested by http://gcc.gnu.org/wiki/Visibility This manifested in the symbol-hiding test failing when notmuch was compile with gcc 4.4.5. On i386, this further manifested as notmuch new failing to run (crashing with an uncaught exception on first run).
103 lines
3.8 KiB
Makefile
103 lines
3.8 KiB
Makefile
# -*- makefile -*-
|
|
|
|
# The major version of the library interface. This will control the soname.
|
|
# As such, this number must be incremented for any incompatible change to
|
|
# the library interface, (such as the deletion of an API or a major
|
|
# semantic change that breaks formerly functioning code).
|
|
#
|
|
# Note: We don't currently have plans to increment this at this time.
|
|
# If we *do* want to make an incompatible change to the library
|
|
# interface, we'll have to decide whether to increment this (creating
|
|
# a new soname) or to introduce symbol versioning to be able to
|
|
# provide support for both old and new interfaces without having to
|
|
# increment this.
|
|
LIBNOTMUCH_VERSION_MAJOR = 1
|
|
|
|
# The minor version of the library interface. This should be incremented at
|
|
# the time of release for any additions to the library interface,
|
|
# (and when it is incremented, the release version of the library should
|
|
# be reset to 0).
|
|
LIBNOTMUCH_VERSION_MINOR = 3
|
|
|
|
# The release version the library interface. This should be incremented at
|
|
# the time of release if there have been no changes to the interface, (but
|
|
# simply compatible changes to the implementation).
|
|
LIBNOTMUCH_VERSION_RELEASE = 0
|
|
|
|
ifeq ($(PLATFORM),MACOSX)
|
|
LIBRARY_SUFFIX = dylib
|
|
# On OS X, library version numbers go before suffix.
|
|
LINKER_NAME = libnotmuch.$(LIBRARY_SUFFIX)
|
|
SONAME = libnotmuch.$(LIBNOTMUCH_VERSION_MAJOR).$(LIBRARY_SUFFIX)
|
|
LIBNAME = libnotmuch.$(LIBNOTMUCH_VERSION_MAJOR).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE).$(LIBRARY_SUFFIX)
|
|
LIBRARY_LINK_FLAG = -dynamiclib -install_name $(SONAME) -compatibility_version $(LIBNOTMUCH_VERSION_MAJOR).$(LIBNOTMUCH_VERSION_MINOR) -current_version $(LIBNOTMUCH_VERSION_MAJOR).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE)
|
|
else
|
|
LIBRARY_SUFFIX = so
|
|
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)
|
|
ifeq ($(LIBDIR_IN_LDCONFIG),1)
|
|
ifeq ($(DESTDIR),)
|
|
LIBRARY_INSTALL_POST_COMMAND=ldconfig
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
dir := lib
|
|
extra_cflags += -I$(srcdir)/$(dir) -fPIC
|
|
|
|
libnotmuch_c_srcs = \
|
|
$(notmuch_compat_srcs) \
|
|
$(dir)/filenames.c \
|
|
$(dir)/string-list.c \
|
|
$(dir)/libsha1.c \
|
|
$(dir)/message-file.c \
|
|
$(dir)/messages.c \
|
|
$(dir)/sha1.c \
|
|
$(dir)/tags.c \
|
|
$(dir)/xutil.c
|
|
|
|
libnotmuch_cxx_srcs = \
|
|
$(dir)/database.cc \
|
|
$(dir)/directory.cc \
|
|
$(dir)/index.cc \
|
|
$(dir)/message.cc \
|
|
$(dir)/query.cc \
|
|
$(dir)/thread.cc
|
|
|
|
libnotmuch_modules := $(libnotmuch_c_srcs:.c=.o) $(libnotmuch_cxx_srcs:.cc=.o)
|
|
|
|
$(dir)/libnotmuch.a: $(libnotmuch_modules)
|
|
$(call quiet,AR) rcs $@ $^
|
|
|
|
$(dir)/$(LIBNAME): $(libnotmuch_modules) notmuch.sym
|
|
echo $(libnotmuch_modules)
|
|
$(call quiet,CXX $(CXXFLAGS)) $(libnotmuch_modules) $(FINAL_LIBNOTMUCH_LDFLAGS) $(LIBRARY_LINK_FLAG) -o $@
|
|
|
|
notmuch.sym: lib/notmuch.h
|
|
sh lib/gen-version-script.sh $< $(libnotmuch_modules) > $@
|
|
|
|
$(dir)/$(SONAME): $(dir)/$(LIBNAME)
|
|
ln -sf $(LIBNAME) $@
|
|
|
|
$(dir)/$(LINKER_NAME): $(dir)/$(SONAME)
|
|
ln -sf $(LIBNAME) $@
|
|
|
|
install: install-$(dir)
|
|
|
|
# The (often-reused) $dir works fine within targets/pre-requisites,
|
|
# 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)/"
|
|
ln -sf $(LIBNAME) "$(DESTDIR)$(libdir)/$(SONAME)"
|
|
ln -sf $(LIBNAME) "$(DESTDIR)$(libdir)/$(LINKER_NAME)"
|
|
mkdir -p "$(DESTDIR)$(includedir)"
|
|
install -m0644 "$(srcdir)/$(lib)/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 notmuch.sym
|