.PHONY: check clean serve gendeps = $(filter-out %/index.gsp,$(wildcard $1/*)) fonts := $(wildcard fonts/*) includes := $(wildcard include/*) srcdirs := $(shell find src -type d) outdirs := $(srcdirs:src%=out%) sources := $(shell find src -type f -regextype egrep -regex '.*/(index\.gsp|.*\.(css|svg|png|dot))') outputs := $(sources:src/%=out/%) outputs := $(outputs:%.gsp=%.html) outputs := $(outputs:%.dot=%.svg) all: $(outdirs) out/fonts $(outputs) out/fonts: $(fonts) @cp -r fonts out @printf 'CP\tfonts\n' $(outdirs): @mkdir -p $@ @printf 'MKDIR\t%s\n' "$@" out/%: src/% @cp $< $@ @printf 'CP\t%s\n' "$@" out/%.svg: src/%.dot @dot -Tsvg $< >$@ @printf 'DOT\t%s\n' "$@" out/%.html: src/%.gsp $(includes) src/style.css @PATH="$$PATH:./include" \ m4 -P $(foreach dir,$(^D),-I$(dir)) include/lib.m4 $< | gsp >$@ @printf 'GSP\t%s\n' "$@" src/srp/fw-ec/index.gsp: $(call gendeps,src/srp/fw-ec) @touch $@ src/srp/gsp/index.gsp: $(call gendeps,src/srp/gsp) @touch $@ src/prj/mmv/index.gsp: $(call gendeps,src/prj/mmv) @touch $@ src/prj/mkpass/index.gsp: $(call gendeps,src/prj/mkpass) @touch $@ src/prj/totp/index.gsp: $(call gendeps,src/prj/totp) @touch $@ check: LANG=en_US.UTF-8 find src -name 'index.gsp' -exec \ aspell --home-dir=./ --ignore-case check {} \; clean: rm -rf out serve: darkhttpd out --daemon watch: git ls-files | entr make push-fonts: ./gen-fonts rsync -a fonts vps:/var/www/www.thomasvoss.com/out/