summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-04-01 15:03:40 -0700
committerCarl Worth <cworth@cworth.org>2010-04-01 15:03:40 -0700
commitf689c83af4e1d271d056b24da9e46e7b679ff978 (patch)
treebcb695dd85745b97807e3e201686c4924928d40e
parent685cfcc9e876e9c611d2cb03e8ebd417a7f165b7 (diff)
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.
-rw-r--r--Makefile.local12
-rw-r--r--lib/Makefile.local7
2 files changed, 13 insertions, 6 deletions
diff --git a/Makefile.local b/Makefile.local
index 32b8f4a..c7f4719 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -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_LDFLAGS = $(LDFLAGS) $(CONFIGURE_LDFLAGS)
-all: notmuch notmuch.1.gz
+all: notmuch notmuch-shared notmuch.1.gz
ifeq ($(MAKECMDGOALS),)
@echo ""
@echo "Compilation of notmuch is now complete. You can install notmuch with:"
@@ -106,7 +106,11 @@ notmuch_client_srcs = \
json.c
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 $@
notmuch.1.gz: notmuch.1
@@ -117,7 +121,7 @@ install: all notmuch.1.gz
$(call quiet_mkdir, $(DESTDIR)$(libdir)/)
$(call quiet_mkdir, $(DESTDIR)$(prefix)/include/)
$(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/)
ifeq ($(MAKECMDGOALS), install)
@echo ""
@@ -145,4 +149,4 @@ install-zsh:
$(call quiet_install_data, contrib/notmuch-completion.zsh $(DESTDIR)$(zsh_completion_dir)/notmuch)
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
diff --git a/lib/Makefile.local b/lib/Makefile.local
index 85b010e..f5d6188 100644
--- a/lib/Makefile.local
+++ b/lib/Makefile.local
@@ -38,7 +38,10 @@ libnotmuch_cxx_srcs = \
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 $@
$(dir)/$(SONAME): $(dir)/$(LIBNAME)
@@ -58,4 +61,4 @@ install-$(dir):
$(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)
+CLEAN := $(CLEAN) $(libnotmuch_modules) $(dir)/$(SONAME) $(dir)/$(LINKER_NAME) $(dir)$(LIBNAME) libnotmuch.a