X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/ddc97f65b793547389319d1b528656a76c9fa4c5..5a0925a4e3025c53c7af18c6ba31ebe9193bf413:/Makefile diff --git a/Makefile b/Makefile index 00d06e4..000074c 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ relax = ### 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) @@ -46,8 +46,9 @@ endif 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 @@ -69,7 +70,8 @@ ifneq ($(EMACS),nil) 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; \ @@ -150,7 +152,7 @@ SCRIPTLINKS += update-buildable-branch ## Shells. DOTLINKS += .profile .shell-rc .shell-logout -DOTLINKS += .shrc .rcrc +DOTLINKS += .shrc DOTLINKS += .zprofile .zshrc .zlogout .zshenv DOTLINKS += .bash_profile .bash_completion .bash_logout DOTLINKS += .bashrc .inputrc @@ -159,6 +161,14 @@ DOTLINKS += .bashrc .inputrc .bash_logout_SRC = shell-logout .zlogout_SRC = shell-logout +## 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 +all:: $(HOME)/.rcrc +$(HOME)/.rcrc: dot/rcrc + $(call v_tag,SED)sed 's/; if not/else/' $< >$@.new && mv $@.new $@ + ## Git. DOTSUBST += .gitconfig SCRIPTLINKS += git-copyright-dates @@ -330,6 +340,19 @@ $(relax)### generated by $(HERE)/Makefile; do not edit!" \ ### 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\(#! *\)/\1$(SHEBANG_PREFIX)/" \ + $(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)) @@ -340,6 +363,7 @@ $(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \ ln -s $(call script-source,$*) $@.new && \ mv $@.new $@ $(script-hook/$*) +endif all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))