Tom Willemse
d8aa1d0ed1
The new uninstall functionality tries to remove any "orphan" files. Files that were installed during the last install, but will not be installed this time (because of removal, not necessity).
108 lines
3.2 KiB
Makefile
108 lines
3.2 KiB
Makefile
LOAD_PATH=. /usr/share/emacs/site-lisp $(HOME)/.emacs.d/site-lisp
|
|
EMACS=emacs $(addprefix -L ,$(LOAD_PATH))
|
|
MODE=644
|
|
|
|
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
|
|
|
|
compile = $(EMACS) -Q -batch -eval "(byte-compile-file \"$(1)\")"
|
|
define newer =
|
|
$(shell if [ "$(1)" -nt "$(DESTDIR)/$(1)" ]; then echo "newer"; fi)
|
|
endef
|
|
define older =
|
|
$(shell if [ "$(1)" -ot "$(DESTDIR)/$(1)" ]; then echo "older"; fi)
|
|
endef
|
|
|
|
check-objects=$(addprefix check-,$(objects))
|
|
install-objects=$(addprefix install-,$(objects))
|
|
reverse-objects=$(addprefix reverse-,$(objects))
|
|
uninstall-objects=$(addprefix uninstall-,$(objects))
|
|
|
|
check-modules=$(addprefix check-,$(modules))
|
|
install-modules=$(addprefix install-,$(modules))
|
|
reverse-modules=$(addprefix reverse-,$(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)
|
|
all: $(modules) $(objects)
|
|
|
|
ifeq ($(MAKEROOT),y)
|
|
check: $(check-modules) $(check-objects)
|
|
install: uninstall $(install-modules) $(install-objects) Makefile.old
|
|
reverse: $(reverse-modules) $(reverse-objects)
|
|
ifeq ($(firstword $(MAKEFILE_LIST)),Makefile.old)
|
|
uninstall: $(uninstall-modules) $(uninstall-objects)
|
|
@rmdir --ignore-fail-on-non-empty $(DESTDIR) 2> /dev/null || true
|
|
else
|
|
uninstall: export NEWLIST = $(objects)
|
|
uninstall:
|
|
@$(MAKE) -s -f Makefile.old uninstall
|
|
|
|
Makefile.old: $(firstword $(MAKEFILE_LIST))
|
|
@cp "$^" "$@"
|
|
|
|
ifdef SUBDIR
|
|
DESTDIR:=$(DESTDIR)/$(SUBDIR)
|
|
endif
|
|
endif
|
|
else
|
|
check:
|
|
@$(MAKE) -s -C ../ check
|
|
install:
|
|
@$(MAKE) -s -C ../ install
|
|
reverse:
|
|
@$(MAKE) -s -C ../ reverse
|
|
uninstall:
|
|
@$(MAKE) -s -C ../ uninstall
|
|
endif
|
|
|
|
$(modules): %:
|
|
$(MAKE) -C $*
|
|
|
|
$(install-objects): install-%: %
|
|
@$(if $(call newer,$*), \
|
|
echo -e "$(FG_GRE)+ $(FG_YEL)$(MKDPREFIX)$* $(CLR_RE)to $(DESTDIR) as $(MODE)"; \
|
|
install -pDm $(MODE) "$*" "$(DESTDIR)/$*", \
|
|
$(if $(call older,$*) ,\
|
|
echo -e "$(FG_RED)- $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)"))
|
|
|
|
$(install-modules): install-%:
|
|
@$(MAKE) -s -C $* install MKDPREFIX=$(MKDPREFIX)$*/
|
|
|
|
$(reverse-objects): reverse-%:
|
|
@$(if $(call older,$*), \
|
|
echo -e "$(FG_GRE)+ $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)"; \
|
|
cp -a "$(DESTDIR)/$*" "$*", \
|
|
echo -e "$(FG_RED)- $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)")
|
|
|
|
$(reverse-modules): reverse-%:
|
|
@$(MAKE) -s -C $* reverse MKDPREFIX=$(MKDPREFIX)$*/
|
|
|
|
$(uninstall-objects): uninstall-%:
|
|
@$(if $(findstring $*,$(NEWLIST)),, \
|
|
@$(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)$*/
|
|
|
|
$(check-objects): check-%:
|
|
@$(if $(call newer,$*), \
|
|
echo -e "$(FG_GRE)+ $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)", \
|
|
$(if $(call older,$*), \
|
|
echo -e "$(FG_RED)- $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)", \
|
|
echo -e "$(FG_BLU)= $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)"))
|
|
|
|
$(check-modules): check-%:
|
|
@$(MAKE) -s -C $* check MKDPREFIX=$(MKDPREFIX)$*/
|
|
|
|
$(filter %.elc,$(objects)): %.elc: %.el
|
|
$(call compile,$^)
|