.PHONY: check clean serve gendeps = ${filter-out %/index.gsp,${wildcard ${1}/*}} 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} ${outputs} 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/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/