From 038788ff0870713d1906970d51de8ac2fb9626d6 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Mon, 6 Nov 2023 14:44:46 +0100 Subject: Switch from a Makefile to a (better written) GNUmakefile --- GNUmakefile | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 GNUmakefile (limited to 'GNUmakefile') diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..3a63f69 --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,53 @@ +.PHONY: check clean serve watch push-fonts + +# Source- and destination files +srcs := $(shell find src -type f -not -name '*.gsp' -or -name 'index.gsp') +dsts := $(srcs:src/%=out/%) +dsts := $(dsts:%.gsp=%.html) +dsts := $(dsts:%.dot=%.svg) + +# Destination directories +dirs := $(sort $(dir $(dsts))) + +# Files that most *.gsp files will depend on +incs := $(wildcard include/*) + +all: $(dirs) $(dsts) + +$(dirs)&: + @mkdir -p $(dirs) + @printf 'MKDIR\t%s\n' $(dirs) + +out/%: src/% + @cp $< $@ + @printf 'CP\t%s\n' $@ + +out/%.svg: src/%.dot + @dot -Tsvg $< >$@ + @printf 'DOT\t%s\n' $@ + + +# Generate dependencies for GSP pages +gendeps = $(incs) $(wildcard $(dir $(patsubst out/%.html,src/%.gsp,$1))*.gsp) + +.SECONDEXPANSION: +out/%.html: src/%.gsp $$(call gendeps,$$@) + @PATH="$$PATH:./include" \ + m4 -P $(foreach dir,$(^D),-I$(dir)) include/lib.m4 $< | gsp >$@ + @printf 'GSP\t%s\n' "$@" + +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: + rsync -a fonts vps:/var/www/www.thomasvoss.com/out/ -- cgit v1.2.3