printf " %-8s %s\n" "$1" $(call quote,$(patsubst $(HOME)/%,~/%,$2));
v_tag = $(V_AT)$(call v_print_$V,$1,$@)
+## Making directories.
+%/:; $(call v_tag,MKDIR)mkdir -p $@
+
## Hack.
relax =
$(addsuffix .el, $(ELISP)))
$(foreach e, $(LOCAL_ELISP), \
$(eval DEP_$(basename $e) = $(EMACSLIB)/$(e:.el=.elc)))
-$(addprefix $(EMACSLIB)/, $(LOCAL_ELISP)): $(EMACSLIB)/%: el/%
- $(call v_tag,SYMINK)mkdir -p $(EMACSLIB) && \
+$(addprefix $(EMACSLIB)/, $(LOCAL_ELISP)): $(EMACSLIB)/%: el/% | $(EMACSLIB)/
+ $(call v_tag,SYMINK) \
rm -f $@.new && \
ln -s $(HERE)/$< $@.new && \
mv $@.new $@
(error 1))))'; then \
echo t; \
fi),, $(EMACSLIB)/$(e:.el=.elc))))
-$(addprefix $(EMACSLIB)/, $(REMOTE_ELISP)): $(EMACSLIB)/%:
- $(call v_tag,FETCH)mkdir -p $(EMACSLIB) && \
+$(addprefix $(EMACSLIB)/, $(REMOTE_ELISP)): $(EMACSLIB)/%: | $(EMACSLIB)/
+ $(call v_tag,FETCH) \
$(call get-url,$@.new,$(REPO)/$*) && \
mv $@.new $@
## The `nocss' machinery.
SCRIPTLINKS += nocss
all: $(HOME)/lib/hacks/nocss/libdvdcss.so.2
-$(HOME)/lib/hacks/nocss/libdvdcss.so.2:
- $(V_AT)mkdir -p $(dir $@)
+$(HOME)/lib/hacks/nocss/libdvdcss.so.2: | $$(dir $$@)
$(call v_tag,TOUCH)touch $@
+## GnuPG.
+all: $(HOME)/.gnupg/gpg.conf
+$(HOME)/.gnupg/gpg.conf: \
+ dot/gpg.conf.m4 $(wildcard $(HOME)/.gnupg/gpg.local.conf) \
+ $(HOME)/.mdw.conf \
+ | $$(dir $$@)
+ $(call v_tag,M4)cd $(dir $@) && \
+ args= && \
+ key=$$(mdw-conf default-gpg-key nil) && \
+ case $$key in \
+ nil) ;; \
+ *) args=$${args+$$args }-DDEFAULT_KEY=$$key ;; \
+ esac && \
+ cd $(dir $@) && m4 -P $$args $(HERE)/$< >$@.new && \
+ mv $@.new $@
+DOTLINKS += .gnupg/gpg-agent.conf
+.gnupg/gpg-agent.conf_SRC = gpg-agent.conf
+
## Random scripts.
SCRIPTLINKS += mdw-editor mdw-pager
SCRIPTLINKS += mdw-conf
SCRIPTLINKS += check-debsyms
SCRIPTLINKS += check-blkdev-size
SCRIPTLINKS += xremote
-SCRIPTLINKS += remote-disorder
+SCRIPTLINKS += disorder-play-on-demand remote-disorder
SCRIPTLINKS += remote-slideshow
## Random odds and ends.
ifeq ($(FIREFOX),t)
-out/:
- $(call v_tag,MKDIR)mkdir $@
-
-out/firefox/: | out/
- $(call v_tag,MKDIR)mkdir $@
-
clean::; rm -rf out/
all: out/firefox/smartup-gestures.config
misclink-ok-p = \
$(call symlink-ok-p,$(HOME)/$1,$(call misclink-source,$1))
$(addprefix $(HOME)/, $(subst %,\%,$(MISCLINKS))): $(HOME)/%: \
- $$(if $$(call misclink-ok-p,$$*),,_force)
- $(call v_tag,SYMLINK)mkdir -p $(dir $@) && \
+ $$(if $$(call misclink-ok-p,$$*),,_force) | $$(dir $$@)
+ $(call v_tag,SYMLINK) \
rm -f $@.new && \
ln -s $(call misclink-source,$*) $@.new && \
mv $@.new $@
$(call symlink-ok-p,$(HOME)/$1,$(call dotfile-source,$1))
all: $(addprefix $(HOME)/, $(DOTLINKS))
$(addprefix $(HOME)/, $(subst %,\%,$(DOTLINKS))): $(HOME)/%: \
- $$(if $$(call dotlink-ok-p,$$*),,_force)
- $(call v_tag,SYMLINK)mkdir -p $(dir $@) && \
+ $$(if $$(call dotlink-ok-p,$$*),,_force) | $$(dir $$@)
+ $(call v_tag,SYMLINK) \
rm -f $@.new && \
ln -s $(call dotfile-source,$*) $@.new && \
mv $@.new $@
## Hack with the C preprocessor.
all: $(addprefix $(HOME)/, $(DOTCPP))
$(addprefix $(HOME)/, $(subst %,\%,$(DOTCPP))): $(HOME)/%: \
- $$(call dotfile-source,$$*) Makefile
- $(call v_tag,CPP)mkdir -p $(dir $@) && \
+ $$(call dotfile-source,$$*) Makefile | $$(dir $$@)
+ $(call v_tag,CPP) \
rm -f $@.new && \
cpp -P -o$@.new $($*_DEFS) $< && \
mv $@.new $@
SUBSTS += $(call substvar,profile,$(HERE))
all: $(addprefix $(HOME)/, $(DOTSUBST))
$(addprefix $(HOME)/, $(subst %,\%,$(DOTSUBST))): $(HOME)/%: \
- $$(call dotfile-source,$$*,.in) Makefile
- $(call v_tag,SUBST)mkdir -p $(dir $@) && \
+ $$(call dotfile-source,$$*,.in) Makefile | $$(dir $$@)
+ $(call v_tag,SUBST) \
rm -f $@.new && \
sed -e "1i\
$(relax)### generated by $(HERE)/Makefile; do not edit!" \
ifeq ($(prefix-shebang-p),t)
all: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
$(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \
- $$(call script-source,$$*) Makefile
- $(call v_tag,SHEBANG)mkdir -p $(dir $@) && \
+ $$(call script-source,$$*) Makefile | $$(dir $$@)
+ $(call v_tag,SHEBANG) \
rm -f $@.new && \
sed "1s\a\(#! *\)/\a\1$(SHEBANG_PREFIX)/\a" \
$(call script-source,$*) >$@.new && \
$(call symlink-ok-p,$(HOME)/bin/$1,$(call script-source,$1))
all: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
$(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \
- $$(if $$(call scriptlink-ok-p,$$*),,_force)
- $(call v_tag,SYMLINK)mkdir -p $(dir $@) && \
+ $$(if $$(call scriptlink-ok-p,$$*),,_force) | $$(dir $$@)
+ $(call v_tag,SYMLINK) \
rm -f $@.new && \
ln -s $(call script-source,$*) $@.new && \
mv $@.new $@
if $($p_CHECK) >/dev/null 2>&1 --version; then echo t; fi),, \
$(call pkg-stamp,$p,install))))
-$(PACKAGES:%=$(SRCDIR)/%.tar.gz): $(SRCDIR)/%.tar.gz:
- $(call v_tag,FETCH)mkdir -p $(SRCDIR) && \
+$(PACKAGES:%=$(SRCDIR)/%.tar.gz): $(SRCDIR)/%.tar.gz: | $(SRCDIR)/
+ $(call v_tag,FETCH) \
rm -f $@.new && \
$(call get-url,$@.new,$(REPO)/$*.tar.gz) && \
mv $@.new $@