diff options
author | Thomas Voss <mail@thomasvoss.com> | 2023-11-06 14:44:46 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2023-11-06 14:44:46 +0100 |
commit | 038788ff0870713d1906970d51de8ac2fb9626d6 (patch) | |
tree | f33d39905ba438d7cc87389bd1a9f444decb31d4 /GNUmakefile | |
parent | 64311437ff55ff47c272e531b78116869ffbec34 (diff) |
Switch from a Makefile to a (better written) GNUmakefile
Diffstat (limited to 'GNUmakefile')
-rw-r--r-- | GNUmakefile | 53 |
1 files changed, 53 insertions, 0 deletions
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/ |