diff options
Diffstat (limited to 'dotfiles.mk')
-rw-r--r-- | dotfiles.mk | 66 |
1 files changed, 54 insertions, 12 deletions
diff --git a/dotfiles.mk b/dotfiles.mk index 892c5b5..4132992 100644 --- a/dotfiles.mk +++ b/dotfiles.mk @@ -2,11 +2,19 @@ LOAD_PATH=. /usr/share/emacs/site-lisp $(HOME)/.emacs.d/site-lisp EMACS=emacs $(addprefix -L ,$(LOAD_PATH)) MODE=644 +ifeq ($(shell if [ "`tput colors`" -gt 0 ]; then echo -n "y"; fi),y) FG_BLU=\033[0;34m FG_YEL=\033[0;33m FG_GRE=\033[0;32m FG_RED=\033[0;31m CLR_RE=\033[0;00m +else +FG_BLU= +FG_YEL= +FG_GRE= +FG_RED= +CLR_RE= +endif compile = $(EMACS) -Q -batch -eval "(byte-compile-file \"$(1)\")" define newer = @@ -19,24 +27,44 @@ endef check-objects=$(addprefix check-,$(objects)) install-objects=$(addprefix install-,$(objects)) reverse-objects=$(addprefix reverse-,$(objects)) +cleanup-objects=$(addprefix cleanup-,$(objects)) uninstall-objects=$(addprefix uninstall-,$(objects)) check-modules=$(addprefix check-,$(modules)) install-modules=$(addprefix install-,$(modules)) reverse-modules=$(addprefix reverse-,$(modules)) +cleanup-modules=$(addprefix cleanup-,$(modules)) uninstall-modules=$(addprefix uninstall-,$(modules)) -.PHONY: all install uninstall check uninstall $(modules) \ - $(install-objects) $(uninstall-objects) $(check-objects) \ - $(install-modules) $(uninstall-modules) $(check-modules) \ - $(reverse) $(reverse-objects) $(reverse-modules) +.PHONY: all install cleanup check cleanup $(modules) \ + $(install-objects) $(cleanup-objects) $(check-objects) \ + $(install-modules) $(cleanup-modules) $(check-modules) \ + $(reverse) $(reverse-objects) $(reverse-modules) \ + $(uninstall-objects) $(uninstall-modules) all: $(modules) $(objects) ifeq ($(MAKEROOT),y) check: $(check-modules) $(check-objects) -install: $(install-modules) $(install-objects) +install: cleanup $(install-modules) $(install-objects) Makefile.old reverse: $(reverse-modules) $(reverse-objects) uninstall: $(uninstall-modules) $(uninstall-objects) + @rmdir --ignore-fail-on-non-empty $(DESTDIR) 2> /dev/null || true +ifeq ($(firstword $(MAKEFILE_LIST)),Makefile.old) +cleanup: $(cleanup-modules) $(cleanup-objects) + @rmdir --ignore-fail-on-non-empty $(DESTDIR) 2> /dev/null || true +else +cleanup: export NEWOBJS = $(objects) +cleanup: export NEWMODS = $(modules) +cleanup: + @$(MAKE) -s -f Makefile.old cleanup + +Makefile.old: $(firstword $(MAKEFILE_LIST)) + @cp "$^" "$@" + +ifdef SUBDIR +DESTDIR:=$(DESTDIR)/$(SUBDIR) +endif +endif else check: @$(MAKE) -s -C ../ check @@ -44,6 +72,8 @@ install: @$(MAKE) -s -C ../ install reverse: @$(MAKE) -s -C ../ reverse +cleanup: + @$(MAKE) -s -C ../ cleanup uninstall: @$(MAKE) -s -C ../ uninstall endif @@ -70,14 +100,17 @@ $(reverse-objects): reverse-%: $(reverse-modules): reverse-%: @$(MAKE) -s -C $* reverse MKDPREFIX=$(MKDPREFIX)$*/ -$(uninstall-objects): uninstall-%: - @$(if $(call older,$*), \ - echo -e "$(FG_RED)+ $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)", \ - echo -e "$(FG_GRE)- $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)"; \ - rm -f "$(DESTDIR)/$*") +$(cleanup-objects): cleanup-%: + @$(if $(findstring $*,$(NEWOBJS)),, \ + @$(if $(call older,$*), \ + echo -e "$(FG_RED)+ $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)", \ + echo -e "$(FG_GRE)- $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)"; \ + unlink "$(DESTDIR)/$*" || true)) -$(uninstall-modules): uninstall-%: - @$(MAKE) -C $* uninstall MKDPREFIX=$(MKDPREFIX)$*/ +$(cleanup-modules): cleanup-%: + @$(if $(findstring $*,$(NEWMODS)), \ + @$(MAKE) -C $* cleanup MKDPREFIX=$(MKDPREFIX)$*/, \ + @$(MAKE) -C $* uninstall MKDPREFIX=$(MKDPREFIX)$*/) $(check-objects): check-%: @$(if $(call newer,$*), \ @@ -89,5 +122,14 @@ $(check-objects): check-%: $(check-modules): check-%: @$(MAKE) -s -C $* check MKDPREFIX=$(MKDPREFIX)$*/ +$(uninstall-objects): uninstall-%: + @$(if $(call older,$*), \ + echo -e "$(FG_RED)+ $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)", \ + echo -e "$(FG_GRE)- $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)"; \ + unlink "$(DESTDIR)/$*" || true) + +$(uninstall-modules): uninstall-%: + @$(MAKE) -s -C $* uninstall MKDPREFIX=$(MKDPREFIX)$*/ + $(filter %.elc,$(objects)): %.elc: %.el $(call compile,$^) |