Compile a static notmuch binary (but only install the shared version)
authorCarl Worth <cworth@cworth.org>
Thu, 1 Apr 2010 22:03:40 +0000 (15:03 -0700)
committerCarl Worth <cworth@cworth.org>
Thu, 1 Apr 2010 22:03:40 +0000 (15:03 -0700)
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.

Makefile.local
lib/Makefile.local

index 32b8f4a8ec09dc3d61278087bb631541ab30b071..c7f4719a7e110e74891b3bf8834dd47e8a209cb8 100644 (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_LDFLAGS = $(LDFLAGS) $(CONFIGURE_LDFLAGS)
 
 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:"
 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)
        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
        $(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_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 ""
        $(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)
        $(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
index 85b010e6f12de1848e22f63dfb6eb541a88aaddf..f5d61883a41afd02a0fea4bc3ff5a871beb0ab37 100644 (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 $@
 
 $(dir)/$(SONAME): $(dir)/$(LIBNAME)
        $(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)
        $(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