X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/b2f6f1104d51d0d80567c2f0066983cef96c84c1..be2322dfd6a5b7c34e9dfe8faf821c0a0162fda3:/Makefile diff --git a/Makefile b/Makefile index 4df8c56..e9dc3b7 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,11 @@ ## -*-makefile-*- -all:: +all: +.PHONY: all + +clean:: +.PHONY: clean + .SECONDEXPANSION: #sorry ###-------------------------------------------------------------------------- @@ -21,10 +26,12 @@ symlink-ok-p = $(shell \ ## Silent rules machinery. V = 0 -v_tag = $(call v_tag_$V,$1,$2) -v_tag_0 = @printf " %-8s %s\n" "$1" $(call quote,$@); V_AT = $(V_AT_$V) V_AT_0 = @ +v_print = $(call v_print_$V,$1,$2) +v_print_0 = \ + printf " %-8s %s\n" "$1" $(call quote,$(patsubst $(HOME)/%,~/%,$2)); +v_tag = $(V_AT)$(call v_print_$V,$1,$@) ## Hack. relax = @@ -33,7 +40,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 +53,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 @@ -89,7 +97,7 @@ ELISP += dot-emacs dot-emacs_DEPS = make-regexp SCRIPTLINKS += emacsclient-hack movemail-hack sendmail-hack -SCRIPTLINKS += aspell-hack emerge-hack +SCRIPTLINKS += aspell-hack emerge-hack wakey.sh %.elc: %.el $$(foreach e, $$($$*_DEPS), $$(DEP_$$e)) $(call v_tag,EMACS)if ! $(EMACS) >$*.build-log 2>&1 \ @@ -128,7 +136,7 @@ $(addprefix $(EMACSLIB)/, $(REMOTE_ELISP)): $(EMACSLIB)/%: 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 @@ -148,6 +156,8 @@ checkpath_DEPS = mlib ## Packaging machinery. SCRIPTLINKS += mdw-build mdw-sbuild mdw-sbuild-server SCRIPTLINKS += update-buildable-branch +DOTLINKS += .config/mdw-build.conf +.config/mdw-build.conf_SRC = mdw-build.conf ## Shells. DOTLINKS += .profile .shell-rc .shell-logout @@ -160,11 +170,18 @@ DOTLINKS += .bashrc .inputrc .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 +.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 -all:: $(HOME)/.rcrc +all: $(HOME)/.rcrc $(HOME)/.rcrc: dot/rcrc $(call v_tag,SED)sed 's/; if not/else/' $< >$@.new && mv $@.new $@ @@ -173,7 +190,8 @@ DOTSUBST += .gitconfig SCRIPTLINKS += git-copyright-dates DOTLINKS += .cgrc .tigrc .gitconfig_SUBSTS = \ - $(call substvar,releasekey,$(call mdw-conf,release-key,481334C2)) + $(call substvar,releasekey,$(call mdw-conf,releasekey,481334C2)) \ + $(call substvar,email,$(call mdw-conf,email,mdw@distorted.org.uk)) $(HOME)/.gitconfig: $(HOME)/.mdw.conf ## PulseAudio. @@ -189,11 +207,14 @@ DOTLINKS += .vimrc .mg .zile DOTLINKS += .mailrc .signature .muttrc ## Lisp. -DOTLINKS += .cmucl-init.lisp .sbclrc .clisprc.lisp .eclrc +DOTLINKS += .cmucl-init.lisp .sbclrc .clisprc.lisp +DOTLINKS += .eclrc .ccl-init.lisp .abclrc .cmucl-init.lisp_SRC = lisp-init.lisp .sbclrc_SRC = lisp-init.lisp .clisprc.lisp_SRC = lisp-init.lisp .eclrc_SRC = lisp-init.lisp +.ccl-init.lisp_SRC = lisp-init.lisp +.abclrc_SRC = lisp-init.lisp DOTLINKS += .swank.lisp ## IPython. @@ -208,20 +229,37 @@ DOTLINKS += .tclshrc .wishrc .tclshrc_SRC = tclshrc .wishrc_SRC = tclshrc +## 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 $@) + $(call v_tag,TOUCH)touch $@ + ## Random scripts. SCRIPTLINKS += mdw-editor mdw-pager SCRIPTLINKS += mdw-conf SCRIPTLINKS += svnwrap SCRIPTLINKS += guest-console SCRIPTLINKS += hyperspec +SCRIPTLINKS += bdl +SCRIPTLINKS += datasyms +SCRIPTLINKS += fixsub +SCRIPTLINKS += check-debsyms +SCRIPTLINKS += check-blkdev-size +SCRIPTLINKS += xremote +SCRIPTLINKS += remote-disorder +SCRIPTLINKS += remote-slideshow ## Random odds and ends. -DOTLINKS += .lesskey .infokey .sqliterc +DOTLINKS += .infokey .sqliterc DOTLINKS += .gdbinit .toprc .aspell.conf DOTLINKS += .dircolors .colordiffrc .screenrc .tmux.conf DOTLINKS += .cvsrc .indent.pro .ditz-config DOTLINKS += .lftp/rc .lftp/rc_SRC = lftp-rc +DOTLINKS += .a2ps/a2psrc +.a2ps/a2psrc_SRC = a2psrc DOTSUBST += .mykermrc SCRIPTLINKS += lesspipe.sh @@ -239,8 +277,14 @@ DOTLINKS += .mc/ini .mc/panels.ini .mc/ini_SRC = mc-ini .mc/panels.ini_SRC = mc-panels.ini -DOTLINKS += .parallel/config +DOTLINKS += .parallel/config .parallel/sshloginfile .parallel/config_SRC = parallel-config +.parallel/sshloginfile_SRC = parallel-hosts + +all: $(HOME)/.less +$(HOME)/.less: dot/lesskey + $(V_AT)rm -f $(HOME)/.lesskey + $(call v_tag,LESSKEY)lesskey -o$@ $< ###-------------------------------------------------------------------------- ### X11 configuration. @@ -252,12 +296,10 @@ xtoys_CHECK = xatom xtoys_DEPS = mlib DOTLINKS += .xinitrc .xsession .xmodmap .vncrc .vncsession -DOTLINKS += .fonts.conf +DOTLINKS += .config/fontconfig/fonts.conf +.config/fontconfig/fonts.conf_SRC = fonts.conf DOTLINKS += .stalonetrayrc -DOTLINKS += .putty/sessions/Default%20Settings -.putty/sessions/Default%20Settings_SRC = putty-defaults - DOTLINKS += .config/gnome-session/sessions/mdw.session .config/gnome-session/sessions/mdw.session_SRC = mdw.session @@ -276,23 +318,71 @@ DOTLINKS += .config/gtk-3.0/settings.ini .config/gtk-3.0/gtk.css_SRC = gtk3.css .config/gtk-3.0/settings.ini_SRC = gtk3-settings.ini +DOTLINKS += .config/user-dirs.dirs .config/user-dirs.locale +.config/user-dirs.dirs_SRC = user-dirs.dirs +.config/user-dirs.locale_SRC = user-dirs.locale + SCRIPTLINKS += xinitcmd lock-screen xshutdown SCRIPTLINKS += un-backslashify-selection SCRIPTLINKS += xpra-start-xdummy SCRIPTLINKS += play-rawk +SCRIPTLINKS += x2x-privsep +SCRIPTLINKS += xduplic-terminal +SCRIPTLINKS += xzoomscr DOTCPP += .Xdefaults Xdefaults_DEFS = -DEMACSWD=$(call mdw-conf,emacs-width,77) -$(HOME)/.Xdefaults: $(HOME)/.mdw.conf +$(HOME)/.Xdefaults: $(HOME)/.mdw.conf dot/Xdefaults.pterm ifeq ($(shell case $${DISPLAY-nil} in (:[0-9]*) echo t ;; (*) echo nil ;; esac),t) dotfile-hook/.Xdefaults = \ - $(call v_tag,XRDB)xrdb -override $< + $(call v_tag,XRDB)xrdb -load $< +endif + endif +###-------------------------------------------------------------------------- +### Firefox things. + +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 +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 +out/firefox/stylus.json: firefox/stylus/ firefox/stylus/*.css | out/firefox/ + $(call v_tag,IMPLODE)\ + firefox/implode-stylus firefox/stylus/ >$@.new && \ + mv $@.new $@ endif ###-------------------------------------------------------------------------- +### General symlinking. + +misclink-source = $(HERE)/$(or $($1_SRC), $1) + +all: $(addprefix $(HOME)/, $(MISCLINKS)) +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 $@) && \ + rm -f $@.new && \ + ln -s $(call misclink-source,$*) $@.new && \ + mv $@.new $@ + $(symlink-hook/$*) + +###-------------------------------------------------------------------------- ### Processing dotfiles. dotfile-source = $(HERE)/dot/$(or $($1_SRC), $(1:.%=%)$2) @@ -300,7 +390,7 @@ dotfile-source = $(HERE)/dot/$(or $($1_SRC), $(1:.%=%)$2) ## 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 $@) && \ @@ -310,7 +400,7 @@ $(addprefix $(HOME)/, $(subst %,\%,$(DOTLINKS))): $(HOME)/%: \ $(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 $@) && \ @@ -323,7 +413,7 @@ $(addprefix $(HOME)/, $(subst %,\%,$(DOTCPP))): $(HOME)/%: \ substvar = -e $(call quote,s@$1@$2g) 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 $@) && \ @@ -341,7 +431,7 @@ $(relax)### generated by $(HERE)/Makefile; do not edit!" \ 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 $@) && \ @@ -354,7 +444,7 @@ $(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \ 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 $@) && \ @@ -364,7 +454,7 @@ $(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \ $(script-hook/$*) endif -all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS)) +all: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS)) ###-------------------------------------------------------------------------- ### Building packages from source tarballs. @@ -421,7 +511,7 @@ $(foreach p, $(PACKAGES), $(call pkg-stamp,$p,install)): \ 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 --------------------------------------------------