notmuch/lib/Makefile.local
Carl Worth f689c83af4 Compile a static notmuch binary (but only install the shared version)
The idea here is to allow a new user of notmuch to be able to run
notmuch immediately after compiling, (without having to install
the shared library first). This also ensures that the test suite
tests the locally compiled library, and not whatever installled
version of the library the dynamic linker happens to find.
2010-04-01 15:03:40 -07:00

64 lines
2.2 KiB
Text

# 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).
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.
LIBNOTMUCH_VERSION_MINOR = 0
# 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
LINKER_NAME = libnotmuch.so
SONAME = $(LINKER_NAME).$(LIBNOTMUCH_VERSION_MAJOR)
LIBNAME = $(SONAME).$(LIBNOTMUCH_VERSION_MINOR).$(LIBNOTMUCH_VERSION_RELEASE)
dir := lib
extra_cflags += -I$(dir) -fPIC
libnotmuch_c_srcs = \
$(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)
$(call quiet,CXX,$(LDFLAGS)) $^ $(FINAL_LDFLAGS) -shared -Wl,-soname=$(SONAME) -o $@
$(dir)/$(SONAME): $(dir)/$(LIBNAME)
$(call quiet_symlink, $(LIBNAME) $@)
$(dir)/$(LINKER_NAME): $(dir)/$(SONAME)
$(call quiet_symlink, $(LIBNAME) $@)
install: install-$(dir)
install-$(dir):
$(call quiet_mkdir, $(DESTDIR)$(libdir)/)
$(call quiet_install_data, $(dir)/$(LIBNAME) $(DESTDIR)$(libdir)/)
$(call quiet_symlink, $(LIBNAME) $(DESTDIR)$(libdir)/$(SONAME))
$(call quiet_symlink, $(LIBNAME) $(DESTDIR)$(libdir)/$(LINKER_NAME))
$(call quiet_mkdir, $(DESTDIR)$(prefix)/include/)
$(call quiet_install_data, $(dir)/notmuch.h $(DESTDIR)$(prefix)/include/)
SRCS := $(SRCS) $(libnotmuch_c_srcs) $(libnotmuch_cxx_srcs)
CLEAN := $(CLEAN) $(libnotmuch_modules) $(dir)/$(SONAME) $(dir)/$(LINKER_NAME) $(dir)$(LIBNAME) libnotmuch.a