summaryrefslogtreecommitdiffhomepage
path: root/GNUmakefile
diff options
context:
space:
mode:
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/