Makefile: Eliminate the "make install-emacs" target.

Instead, simply byte-compile the emacs source files as part of "make"
and install them as part of "make install". The byte compilation is
made conditional on the configure script finding the emacs binary.
That way, "make; make install" will still work for someone that doesn't
have emacs installed, (which was the only reason we had made a separate
"make install-emacs" target in the first place).
This commit is contained in:
Carl Worth 2010-04-06 10:35:20 -07:00
parent f89b3d16db
commit a5ed8c68f6
3 changed files with 32 additions and 18 deletions

View file

@ -118,9 +118,6 @@ quiet ?= $($(shell echo $1 | sed -e s'/ .*//'))
%.o: %.c $(global_deps) %.o: %.c $(global_deps)
$(call quiet,CC $(CFLAGS)) -c $(FINAL_CFLAGS) $< -o $@ $(call quiet,CC $(CFLAGS)) -c $(FINAL_CFLAGS) $< -o $@
%.elc: %.el
$(call quiet,EMACS) --directory emacs -batch -f batch-byte-compile $<
.deps/%.d: %.c $(global_deps) .deps/%.d: %.c $(global_deps)
@set -e; rm -f $@; mkdir -p $$(dirname $@) ; \ @set -e; rm -f $@; mkdir -p $$(dirname $@) ; \
$(CC) -M $(CPPFLAGS) $(FINAL_CFLAGS) $< > $@.$$$$ 2>/dev/null ; \ $(CC) -M $(CPPFLAGS) $(FINAL_CFLAGS) $< > $@.$$$$ 2>/dev/null ; \
@ -183,12 +180,17 @@ install: all notmuch.1.gz
install -m0644 notmuch.1.gz $(DESTDIR)$(prefix)/share/man/man1/ install -m0644 notmuch.1.gz $(DESTDIR)$(prefix)/share/man/man1/
ifeq ($(MAKECMDGOALS), install) ifeq ($(MAKECMDGOALS), install)
@echo "" @echo ""
@echo "Notmuch is now installed." @echo "Notmuch is now installed to $(DESTDIR)$(prefix)"
@echo ""
@echo "To run notmuch from emacs, each user should add the following line to ~/.emacs:"
@echo ""
@echo " (require 'notmuch)"
@echo ""
@echo "And should then run \"M-x notmuch\" from within emacs or run \"emacs -f notmuch\""
@echo "" @echo ""
@echo "You may now want to install additional components to support using notmuch" @echo "You may now want to install additional components to support using notmuch"
@echo "together with other software packages:" @echo "together with other software packages:"
@echo "" @echo ""
@echo " make install-emacs"
@echo " make install-bash" @echo " make install-bash"
@echo " make install-zsh" @echo " make install-zsh"
@echo "" @echo ""

12
configure vendored
View file

@ -175,6 +175,15 @@ else
emacs_lispdir='$(prefix)/share/emacs/site-lisp' emacs_lispdir='$(prefix)/share/emacs/site-lisp'
fi fi
printf "Checking if emacs is available... "
if emacs --quick --batch > /dev/null 2>&1; then
printf "Yes.\n"
have_emacs=1
else
printf "No (so will not byte-compile emacs code)\n"
have_emacs=0
fi
if [ $errors -gt 0 ]; then if [ $errors -gt 0 ]; then
cat <<EOF cat <<EOF
@ -300,6 +309,9 @@ libdir = ${LIBDIR:=\$(prefix)/lib}
# The directory to which emacs lisp files should be installed # The directory to which emacs lisp files should be installed
emacs_lispdir=${emacs_lispdir} emacs_lispdir=${emacs_lispdir}
# Whether there's an emacs binary available for byte-compiling
HAVE_EMACS = ${have_emacs}
# The directory to which desktop files should be installed # The directory to which desktop files should be installed
desktop_dir = \$(prefix)/share/applications desktop_dir = \$(prefix)/share/applications

View file

@ -9,21 +9,21 @@ emacs_sources := \
emacs_bytecode := $(subst .el,.elc,$(emacs_sources)) emacs_bytecode := $(subst .el,.elc,$(emacs_sources))
.PHONY: emacs %.elc: %.el
emacs: $(emacs_bytecode) $(call quiet,EMACS) --directory emacs -batch -f batch-byte-compile $<
ifeq ($(HAVE_EMACS),1)
all: $(emacs_bytecode)
endif
install: install-emacs
.PHONY: install-emacs .PHONY: install-emacs
install-emacs: install emacs install-emacs:
mkdir -p $(DESTDIR)/$(emacs_lispdir) mkdir -p $(DESTDIR)/$(emacs_lispdir)
install -m0644 $(emacs_sources) $(emacs_bytecode) $(DESTDIR)$(emacs_lispdir) install -m0644 $(emacs_sources) $(DESTDIR)$(emacs_lispdir)
@echo "" ifeq ($(HAVE_EMACS),1)
@echo "The notmuch emacs client is now installed." install -m0644 $(emacs_bytecode) $(DESTDIR)$(emacs_lispdir)
@echo "" endif
@echo "To run this, each user should add the following line to the ~/.emacs file:"
@echo ""
@echo " (require 'notmuch)"
@echo ""
@echo "And should then run \"M-x notmuch\" from within emacs or run \"emacs -f notmuch\""
@echo ""
CLEAN := $(CLEAN) $(emacs_bytecode) CLEAN := $(CLEAN) $(emacs_bytecode)