summaryrefslogtreecommitdiff
path: root/test/GNUmakefile
diff options
context:
space:
mode:
Diffstat (limited to 'test/GNUmakefile')
-rw-r--r--test/GNUmakefile30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/GNUmakefile b/test/GNUmakefile
new file mode 100644
index 0000000..10e3b34
--- /dev/null
+++ b/test/GNUmakefile
@@ -0,0 +1,30 @@
+
+TESTS = $(basename $(shell find . -type f -name '*.cpp'))
+CXX = g++ -std=gnu++20 -I ../content/ -O2 -Wall -Wextra -Wshadow -Werror
+
+test: $(TESTS:=.ok)
+
+missing:
+ @find ../content -name '*.cpp' | sed 's|^../content/||' \
+ | while read -r f ; do [ -e "$$f" ] || echo "$$f" ; done \
+ | sort > missing.tmp
+ @sort missing.ignore | comm -23 missing.tmp -
+ @rm missing.tmp
+
+clean:
+ rm -f $(TESTS:=.test) $(TESTS:=.ok) $(TESTS:=.d)
+
+%.ok: %.test
+ timeout --foreground --verbose 60 prlimit -s$$((1<<32)) ./$<
+ @touch $@
+
+%.test: %.cpp
+ $(CXX) -o $@ $<
+
+%.d: %.cpp
+ $(CXX) -M -MT '$*.test $*.d' -MF $@ $<
+
+.PHONY: test clean
+.SECONDARY: $(TESTS:=.test)
+
+include $(TESTS:=.d)