diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 93 |
1 files changed, 3 insertions, 90 deletions
@@ -1,91 +1,4 @@ -SHELL = bash -o pipefail +MAKEFLAGS += -j1 -RUBYLIB := $(realpath .)/lib$(if $(RUBYLIB),:$(RUBYLIB)) -export RUBYLIB - -# Usage: $(call patsubst,PATTERN1 PATTERN2...,REPLACEMENT,TEXT) -# -# Like $(patsubst), but takes multiple patterns that are all replaced -# with the same replacement. -patsubst-all = $(if $1,$(call patsubst-all,$(wordlist 2,$(words $1),$1),$2,$(patsubst $(firstword $1),$2,$3)),$3) - -# Which suffixes can we turn in to HTML? -html.suffixes = md org -# Find all source files with those suffixes -html.src = $(shell find src -type f \( -false $(foreach s,$(html.suffixes), -o -name '*.$s' ) \)) -# Translate the source filenames into output filenames -html.out = $(call patsubst-all,$(addprefix src/%.,$(html.suffixes)),out/%.html,$(html.src)) -html.dirs = $(sort $(patsubst src%,out%, \ - $(patsubst %/,%,$(dir $(html.src))) \ - $(shell find src -name index.yaml -printf '%h\n'))) -html.out += out/index.atom $(addsuffix /index.html,$(html.dirs)) - -all: $(html.out) out/main.css -.PHONY: all out/tags - -bin/page = bin/page bin/util.rb bin/pandoc.rb -bin/index = bin/index bin/util.rb bin/pandoc.rb - -out/%.html: src/%.md $(bin/page) bin/page.html.erb bin/write-atomic - @mkdir -p $(@D) - bin/page html $< | bin/write-atomic $@ -out/%.html: out/%.md $(bin/page) bin/page.html.erb bin/write-atomic - bin/page html $< | bin/write-atomic $@ - -out/%.html: src/%.org $(bin/page) bin/page.html.erb bin/write-atomic - @mkdir -p $(@D) - bin/page html $< | bin/write-atomic $@ -out/%.html: out/%.org $(bin/page) bin/page.html.erb bin/write-atomic - bin/page html $< | bin/write-atomic $@ - -out/%.css: src/%.scss - @mkdir -p $(@D) - scss --stdin < $< > $@ -out/%.css: out/%.scss - scss --stdin < $< > $@ - -index.all = $(filter-out %/ChangeLog.md %/index.md,$(html.src) $(shell find src -type f -name index.yaml)) -index.filter = $(filter-out %/index.yaml,$(filter $(@D)/% $(patsubst out%,src%,$(@D))/%,$1)) -index.cmd = bin/index $(patsubst .%,%,$(suffix $@)) $(@D) $(call index.filter,$^) | bin/write-atomic $@ -index.dep = $(bin/index) bin/index.$1.erb .var.index.all $(index.all) bin/write-atomic Makefile -out/index.md : $(call index.dep,md) - @mkdir -p $(@D) - $(index.cmd) -out/%/index.md : $(call index.dep,md) - @mkdir -p $(@D) - $(index.cmd) -out/index.atom : $(call index.dep,atom) - @mkdir -p $(@D) - $(index.cmd) -out/%/index.atom : $(call index.dep,atom) - @mkdir -p $(@D) - $(index.cmd) - -serve: serve-8000 -serve-%: all - dir=$$(mktemp -d -t) && trap 'fusermount -u "$$dir"; rmdir "$$dir"' EXIT && unionfs -o ro out:src "$$dir" && (cd "$$dir" && python3 -m http.server $*) -.PHONY: serve serve-% - -.var.%: FORCE bin/write-ifchanged - @printf '%s' $(call quote.shell,$($*)) | sed 's/^/#/' | bin/write-ifchanged $@ --include $(wildcard .var.*) - - -irb: - irb -.PHONY: irb - -check: - ./check.rb - -.PHONY: FORCE -.DELETE_ON_ERROR: -.SECONDARY: - -define nl - - -endef -# I put this as the last line in the file because it confuses Emacs syntax -# highlighting and makes the remainder of the file difficult to edit. -quote.shell = $(subst $(nl),'$$'\n'','$(subst ','\'',$1)') +%: + ./make |