aboutsummaryrefslogtreecommitdiff
path: root/tinycc/tests/pp/Makefile
diff options
context:
space:
mode:
authorUneven Prankster <unevenprankster@protonmail.com>2023-07-12 13:22:29 -0300
committerUneven Prankster <unevenprankster@protonmail.com>2023-07-12 13:22:29 -0300
commitfa2bdd711212ba6b7a94a20971e8bfa281e73296 (patch)
tree6713b3c0379507d49558287b71dd360ce188a2f0 /tinycc/tests/pp/Makefile
lol
Diffstat (limited to 'tinycc/tests/pp/Makefile')
-rw-r--r--tinycc/tests/pp/Makefile51
1 files changed, 51 insertions, 0 deletions
diff --git a/tinycc/tests/pp/Makefile b/tinycc/tests/pp/Makefile
new file mode 100644
index 0000000..224c866
--- /dev/null
+++ b/tinycc/tests/pp/Makefile
@@ -0,0 +1,51 @@
+#
+# credits: 01..13.c from the pcc cpp-tests suite
+#
+
+TOP = ../..
+include $(TOP)/Makefile
+SRC = $(TOPSRC)/tests/pp
+VPATH = $(SRC)
+
+files = $(patsubst %.$1,%.test,$(notdir $(wildcard $(SRC)/*.$1)))
+TESTS = $(call files,c) $(call files,S)
+
+all test testspp.all: $(sort $(TESTS))
+
+DIFF_OPTS = -Nu -b
+
+# Filter source directory in warnings/errors (out-of-tree builds)
+FILTER = 2>&1 | sed 's,$(SRC)/,,g'
+
+%.test: %.c %.expect
+ @echo PPTest $* ...
+ -@$(TCC) -E -P $< $(FILTER) >$*.output 2>&1 ; \
+ diff $(DIFF_OPTS) $(SRC)/$*.expect $*.output \
+ && rm -f $*.output
+
+%.test: %.S %.expect
+ @echo PPTest $* ...
+ -@$(TCC) -E -P $< $(FILTER) >$*.output 2>&1 ; \
+ diff $(DIFF_OPTS) $(SRC)/$*.expect $*.output \
+ && rm -f $*.output
+
+testspp.%: %.test ;
+
+# automatically generate .expect files with gcc:
+%.expect: # %.c
+ gcc -E -P $*.[cS] >$*.expect 2>&1
+
+# tell make not to delete
+.PRECIOUS: %.expect
+
+clean:
+ rm -f *.output
+
+02.test : DIFF_OPTS += -w
+# 15.test : DIFF_OPTS += -I"^XXX:"
+
+# diff options:
+# -b ighore space changes
+# -w ighore all whitespace
+# -B ignore blank lines
+# -I <RE> ignore lines matching RE