Alas, double-colon rules inhibit parallelism in an annoying way.
DOTLINKS += .emacs .emacs-calc .vm .gnus.el .ercrc.el
DOTLINKS += .emacs .emacs-calc .vm .gnus.el .ercrc.el
-all:: $(foreach e, $(ELISP), $(DEP_$e))
+all: $(foreach e, $(ELISP), $(DEP_$e))
$(foreach e, $(ELISP), $(eval _emacs.$e: $(EMACSLIB)/$e.elc))
endif
$(foreach e, $(ELISP), $(eval _emacs.$e: $(EMACSLIB)/$e.elc))
endif
.bash_logout_SRC = shell-logout
.zlogout_SRC = shell-logout
.bash_logout_SRC = shell-logout
.zlogout_SRC = shell-logout
+all: zap-stale-zcompdump
+zap-stale-zcompdump:
$(V_AT)if [ $(HOME)/.zcompdump -ot dot/zshrc ]; then \
$(call v_print,ZAP,$(HOME)/.zcompdump)rm -f $(HOME)/.zcompdump; \
fi
$(V_AT)if [ $(HOME)/.zcompdump -ot dot/zshrc ]; then \
$(call v_print,ZAP,$(HOME)/.zcompdump)rm -f $(HOME)/.zcompdump; \
fi
+.PHONY: zap-stale-zcompdump
## The Plan 9 `rc' shell. This needs special hacking, because the Linux port
## and Plan 9 From User Space have incompatible syntax.
DOTLINKS += lib/profile
lib/profile_SRC = rcrc
## The Plan 9 `rc' shell. This needs special hacking, because the Linux port
## and Plan 9 From User Space have incompatible syntax.
DOTLINKS += lib/profile
lib/profile_SRC = rcrc
$(HOME)/.rcrc: dot/rcrc
$(call v_tag,SED)sed 's/; if not/else/' $< >$@.new && mv $@.new $@
$(HOME)/.rcrc: dot/rcrc
$(call v_tag,SED)sed 's/; if not/else/' $< >$@.new && mv $@.new $@
.parallel/config_SRC = parallel-config
.parallel/sshloginfile_SRC = parallel-hosts
.parallel/config_SRC = parallel-config
.parallel/sshloginfile_SRC = parallel-hosts
$(HOME)/.less: dot/lesskey
$(V_AT)rm -f $(HOME)/.lesskey
$(call v_tag,LESSKEY)lesskey -o$@ $<
$(HOME)/.less: dot/lesskey
$(V_AT)rm -f $(HOME)/.lesskey
$(call v_tag,LESSKEY)lesskey -o$@ $<
-all:: out/firefox/smartup-gestures.config
+all: out/firefox/smartup-gestures.config
out/firefox/smartup-gestures.config: firefox/smartup-gestures.json | out/firefox/
$(call v_tag,BLOB)\
jq -c . $< | bincode base64 >$@.new && mv $@.new $@
out/firefox/smartup-gestures.config: firefox/smartup-gestures.json | out/firefox/
$(call v_tag,BLOB)\
jq -c . $< | bincode base64 >$@.new && mv $@.new $@
-all:: out/firefox/stylus.json
+all: out/firefox/stylus.json
out/firefox/stylus.json: firefox/stylus/ firefox/stylus/*.css | out/firefox/
$(call v_tag,IMPLODE)\
firefox/implode-stylus firefox/stylus/ >$@.new && \
out/firefox/stylus.json: firefox/stylus/ firefox/stylus/*.css | out/firefox/
$(call v_tag,IMPLODE)\
firefox/implode-stylus firefox/stylus/ >$@.new && \
misclink-source = $(HERE)/$(or $($1_SRC), $1)
misclink-source = $(HERE)/$(or $($1_SRC), $1)
-all:: $(addprefix $(HOME)/, $(MISCLINKS))
+all: $(addprefix $(HOME)/, $(MISCLINKS))
misclink-ok-p = \
$(call symlink-ok-p,$(HOME)/$1,$(call misclink-source,$1))
$(addprefix $(HOME)/, $(subst %,\%,$(MISCLINKS))): $(HOME)/%: \
misclink-ok-p = \
$(call symlink-ok-p,$(HOME)/$1,$(call misclink-source,$1))
$(addprefix $(HOME)/, $(subst %,\%,$(MISCLINKS))): $(HOME)/%: \
## Easiest: just make symlinks.
dotlink-ok-p = \
$(call symlink-ok-p,$(HOME)/$1,$(call dotfile-source,$1))
## Easiest: just make symlinks.
dotlink-ok-p = \
$(call symlink-ok-p,$(HOME)/$1,$(call dotfile-source,$1))
-all:: $(addprefix $(HOME)/, $(DOTLINKS))
+all: $(addprefix $(HOME)/, $(DOTLINKS))
$(addprefix $(HOME)/, $(subst %,\%,$(DOTLINKS))): $(HOME)/%: \
$$(if $$(call dotlink-ok-p,$$*),,_force)
$(call v_tag,SYMLINK)mkdir -p $(dir $@) && \
$(addprefix $(HOME)/, $(subst %,\%,$(DOTLINKS))): $(HOME)/%: \
$$(if $$(call dotlink-ok-p,$$*),,_force)
$(call v_tag,SYMLINK)mkdir -p $(dir $@) && \
$(dotfile-hook/$*)
## Hack with the C preprocessor.
$(dotfile-hook/$*)
## Hack with the C preprocessor.
-all:: $(addprefix $(HOME)/, $(DOTCPP))
+all: $(addprefix $(HOME)/, $(DOTCPP))
$(addprefix $(HOME)/, $(subst %,\%,$(DOTCPP))): $(HOME)/%: \
$$(call dotfile-source,$$*) Makefile
$(call v_tag,CPP)mkdir -p $(dir $@) && \
$(addprefix $(HOME)/, $(subst %,\%,$(DOTCPP))): $(HOME)/%: \
$$(call dotfile-source,$$*) Makefile
$(call v_tag,CPP)mkdir -p $(dir $@) && \
substvar = -e $(call quote,s\a@$1@\a$2\ag)
SUBSTS += $(call substvar,home,$(HOME))
SUBSTS += $(call substvar,profile,$(HERE))
substvar = -e $(call quote,s\a@$1@\a$2\ag)
SUBSTS += $(call substvar,home,$(HOME))
SUBSTS += $(call substvar,profile,$(HERE))
-all:: $(addprefix $(HOME)/, $(DOTSUBST))
+all: $(addprefix $(HOME)/, $(DOTSUBST))
$(addprefix $(HOME)/, $(subst %,\%,$(DOTSUBST))): $(HOME)/%: \
$$(call dotfile-source,$$*,.in) Makefile
$(call v_tag,SUBST)mkdir -p $(dir $@) && \
$(addprefix $(HOME)/, $(subst %,\%,$(DOTSUBST))): $(HOME)/%: \
$$(call dotfile-source,$$*,.in) Makefile
$(call v_tag,SUBST)mkdir -p $(dir $@) && \
script-source = $(HERE)/bin/$(or $($1_SRC), $1)
ifeq ($(prefix-shebang-p),t)
script-source = $(HERE)/bin/$(or $($1_SRC), $1)
ifeq ($(prefix-shebang-p),t)
-all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
+all: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
$(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \
$$(call script-source,$$*) Makefile
$(call v_tag,SHEBANG)mkdir -p $(dir $@) && \
$(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \
$$(call script-source,$$*) Makefile
$(call v_tag,SHEBANG)mkdir -p $(dir $@) && \
else
scriptlink-ok-p = \
$(call symlink-ok-p,$(HOME)/bin/$1,$(call script-source,$1))
else
scriptlink-ok-p = \
$(call symlink-ok-p,$(HOME)/bin/$1,$(call script-source,$1))
-all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
+all: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
$(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \
$$(if $$(call scriptlink-ok-p,$$*),,_force)
$(call v_tag,SYMLINK)mkdir -p $(dir $@) && \
$(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \
$$(if $$(call scriptlink-ok-p,$$*),,_force)
$(call v_tag,SYMLINK)mkdir -p $(dir $@) && \
-all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
+all: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
###--------------------------------------------------------------------------
### Building packages from source tarballs.
###--------------------------------------------------------------------------
### Building packages from source tarballs.
touch install-stamp
$(package-hook/$*)
touch install-stamp
$(package-hook/$*)
-all:: $(foreach p, $(PACKAGES), $(DEP_$p))
+all: $(foreach p, $(PACKAGES), $(DEP_$p))
$(foreach p, $(PACKAGES), $(eval _pkg.$p: $(call pkg-stamp,$p,install)))
###----- That's all, folks --------------------------------------------------
$(foreach p, $(PACKAGES), $(eval _pkg.$p: $(call pkg-stamp,$p,install)))
###----- That's all, folks --------------------------------------------------