### Configuration.
## Figure out where I am.
-HERE = $(shell pwd)
+HERE := $(shell pwd)
## Decide on how to fetch things from URLs.
ifeq ($(shell (curl >/dev/null 2>&1 --version || [ $$? -eq 2 ]) && echo t),t)
EMACS := $(shell \
emacs=nil; \
for i in emacs24 emacs23 emacs22 emacs21 emacs; do \
- if type >/dev/null 2>&1 $$i; then echo $$i; break; fi; \
- done)
+ if type >/dev/null 2>&1 $$i; then emacs=$$i; break; fi; \
+ done; \
+ echo $$emacs)
## Whence to obtain externally hosted stuff.
REPO = https://ftp.distorted.org.uk/u/mdw/profile
EMACSLIB = $(HOME)/lib/emacs
EMACS_VERSION := $(shell $(EMACS) 2>&1 -Q --batch --eval \
- '(message "%s %s" emacs-major-version emacs-minor-version)')
+ '(message "%s %s" emacs-major-version emacs-minor-version)' | \
+ tail -n1)
emacs-version-p = $(shell set -- $(EMACS_VERSION); \
if [ $$1 -gt $1 ] || ([ $$1 -eq $1 ] && [ $$2 -ge $2 ]); then \
echo t; \
### Processing script links.
script-source = $(HERE)/bin/$(or $($1_SRC), $1)
+
+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 $@) && \
+ rm -f $@.new && \
+ sed "1s\a\(#! *\)/\a\1$(SHEBANG_PREFIX)/\a" \
+ $(call script-source,$*) >$@.new && \
+ chmod --reference=$(call script-source,$*) $@.new && \
+ mv $@.new $@
+ $(script-hook/$*)
+else
scriptlink-ok-p = \
$(call symlink-ok-p,$(HOME)/bin/$1,$(call script-source,$1))
all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
ln -s $(call script-source,$*) $@.new && \
mv $@.new $@
$(script-hook/$*)
+endif
all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))