summaryrefslogtreecommitdiffhomepage
path: root/GNUmakefile
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2023-11-06 14:44:46 +0100
committerThomas Voss <mail@thomasvoss.com> 2023-11-06 14:44:46 +0100
commit038788ff0870713d1906970d51de8ac2fb9626d6 (patch)
treef33d39905ba438d7cc87389bd1a9f444decb31d4 /GNUmakefile
parent64311437ff55ff47c272e531b78116869ffbec34 (diff)
Switch from a Makefile to a (better written) GNUmakefile
Diffstat (limited to 'GNUmakefile')
-rw-r--r--GNUmakefile53
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/