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.
This commit is contained in:
Carl Worth 2010-04-01 15:03:40 -07:00
parent 685cfcc9e8
commit f689c83af4
2 changed files with 13 additions and 6 deletions

View file

@ -22,7 +22,7 @@ FINAL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(CONFIGURE_CFLAGS) $(extra_cflags)
FINAL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(CONFIGURE_CXXFLAGS) $(extra_cflags) $(extra_cxxflags) FINAL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(CONFIGURE_CXXFLAGS) $(extra_cflags) $(extra_cxxflags)
FINAL_LDFLAGS = $(LDFLAGS) $(CONFIGURE_LDFLAGS) FINAL_LDFLAGS = $(LDFLAGS) $(CONFIGURE_LDFLAGS)
all: notmuch notmuch.1.gz all: notmuch notmuch-shared notmuch.1.gz
ifeq ($(MAKECMDGOALS),) ifeq ($(MAKECMDGOALS),)
@echo "" @echo ""
@echo "Compilation of notmuch is now complete. You can install notmuch with:" @echo "Compilation of notmuch is now complete. You can install notmuch with:"
@ -106,7 +106,11 @@ notmuch_client_srcs = \
json.c json.c
notmuch_client_modules = $(notmuch_client_srcs:.c=.o) notmuch_client_modules = $(notmuch_client_srcs:.c=.o)
notmuch: $(notmuch_client_modules) lib/libnotmuch.so
notmuch: $(notmuch_client_modules) lib/libnotmuch.a
$(call quiet,CC,$(LDFLAGS)) $^ $(FINAL_LDFLAGS) -o $@
notmuch-shared: $(notmuch_client_modules) lib/libnotmuch.so
$(call quiet,CC,$(LDFLAGS)) -Llib -lnotmuch $(notmuch_client_modules) $(FINAL_LDFLAGS) -o $@ $(call quiet,CC,$(LDFLAGS)) -Llib -lnotmuch $(notmuch_client_modules) $(FINAL_LDFLAGS) -o $@
notmuch.1.gz: notmuch.1 notmuch.1.gz: notmuch.1
@ -117,7 +121,7 @@ install: all notmuch.1.gz
$(call quiet_mkdir, $(DESTDIR)$(libdir)/) $(call quiet_mkdir, $(DESTDIR)$(libdir)/)
$(call quiet_mkdir, $(DESTDIR)$(prefix)/include/) $(call quiet_mkdir, $(DESTDIR)$(prefix)/include/)
$(call quiet_mkdir, $(DESTDIR)$(prefix)/share/man/man1) $(call quiet_mkdir, $(DESTDIR)$(prefix)/share/man/man1)
$(call quiet_install_bin, notmuch $(DESTDIR)$(prefix)/bin/) $(call quiet_install_bin, notmuch-shared $(DESTDIR)$(prefix)/bin/notmuch)
$(call quiet_install_data, notmuch.1.gz $(DESTDIR)$(prefix)/share/man/man1/) $(call quiet_install_data, notmuch.1.gz $(DESTDIR)$(prefix)/share/man/man1/)
ifeq ($(MAKECMDGOALS), install) ifeq ($(MAKECMDGOALS), install)
@echo "" @echo ""
@ -145,4 +149,4 @@ install-zsh:
$(call quiet_install_data, contrib/notmuch-completion.zsh $(DESTDIR)$(zsh_completion_dir)/notmuch) $(call quiet_install_data, contrib/notmuch-completion.zsh $(DESTDIR)$(zsh_completion_dir)/notmuch)
SRCS := $(SRCS) $(notmuch_client_srcs) SRCS := $(SRCS) $(notmuch_client_srcs)
CLEAN := $(CLEAN) notmuch $(notmuch_client_modules) notmuch.elc notmuch.1.gz CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) notmuch.elc notmuch.1.gz

View file

@ -38,7 +38,10 @@ libnotmuch_cxx_srcs = \
libnotmuch_modules = $(libnotmuch_c_srcs:.c=.o) $(libnotmuch_cxx_srcs:.cc=.o) libnotmuch_modules = $(libnotmuch_c_srcs:.c=.o) $(libnotmuch_cxx_srcs:.cc=.o)
$(dir)/$(LIBNAME) : $(libnotmuch_modules) $(dir)/libnotmuch.a: $(libnotmuch_modules)
$(call quiet,AR) rcs $@ $^
$(dir)/$(LIBNAME): $(libnotmuch_modules)
$(call quiet,CXX,$(LDFLAGS)) $^ $(FINAL_LDFLAGS) -shared -Wl,-soname=$(SONAME) -o $@ $(call quiet,CXX,$(LDFLAGS)) $^ $(FINAL_LDFLAGS) -shared -Wl,-soname=$(SONAME) -o $@
$(dir)/$(SONAME): $(dir)/$(LIBNAME) $(dir)/$(SONAME): $(dir)/$(LIBNAME)
@ -58,4 +61,4 @@ install-$(dir):
$(call quiet_install_data, $(dir)/notmuch.h $(DESTDIR)$(prefix)/include/) $(call quiet_install_data, $(dir)/notmuch.h $(DESTDIR)$(prefix)/include/)
SRCS := $(SRCS) $(libnotmuch_c_srcs) $(libnotmuch_cxx_srcs) SRCS := $(SRCS) $(libnotmuch_c_srcs) $(libnotmuch_cxx_srcs)
CLEAN := $(CLEAN) $(libnotmuch_modules) $(dir)/$(SONAME) $(dir)/$(LINKER_NAME) $(dir)$(LIBNAME) CLEAN := $(CLEAN) $(libnotmuch_modules) $(dir)/$(SONAME) $(dir)/$(LINKER_NAME) $(dir)$(LIBNAME) libnotmuch.a