diff options
| author | grischka <grischka> | 2017-07-14 19:26:01 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2017-07-14 19:26:01 +0200 |
| commit | 69a137ff889f552b3ce58b861f3f0601c1818d6b (patch) | |
| tree | 8e2f2e4a2274e48a9e7bbafd37c4f06d8389b723 /tests/tests2/Makefile | |
| parent | 04418c7addb757e80b09c94eb3553b131bcf4de8 (diff) | |
| download | tinycc-69a137ff889f552b3ce58b861f3f0601c1818d6b.tar.gz tinycc-69a137ff889f552b3ce58b861f3f0601c1818d6b.tar.bz2 | |
#pragma comment(option,"-..."), bitfields test, etc...
tccpp.c:
* #pragma comment(option,"-some-option")
to set commandline option from C code. May work only
for some options.
libtcc.c:
* option "-d1..9": sets a 'g_debug' global variable.
(for development)
tests2/Makefile:
* new make targets: tests2.37 / tests2.37+
run single test from tests2, optionally update .expect
* new variable GEN-ALWAYS to always generate certain .expects
* bitfields test
tccgen.c:
* bitfields: fix a bug and improve slightly more
* _Generic: ignore "type match twice"
Diffstat (limited to 'tests/tests2/Makefile')
| -rw-r--r-- | tests/tests2/Makefile | 56 |
1 files changed, 44 insertions, 12 deletions
diff --git a/tests/tests2/Makefile b/tests/tests2/Makefile index e921f57..44f20f7 100644 --- a/tests/tests2/Makefile +++ b/tests/tests2/Makefile @@ -18,6 +18,9 @@ NORUN = FLAGS = 76_dollars_in_identifiers.test : FLAGS += -fdollars-in-identifiers +# Always generate certain .expects (don't put these in the GIT), +GEN-ALWAYS = 95_bitfields.expect + # Filter source directory in warnings/errors (out-of-tree builds) FILTER = 2>&1 | sed 's,$(SRC)/,,g' # Filter some always-warning @@ -40,26 +43,55 @@ endif ifeq (,$(filter i386 x86_64,$(ARCH))) SKIP += 85_asm-outside-function.test endif +ifeq (-$(findstring gcc,$(CC)-)-,--) + SKIP += $(patsubst %.expect,%.test,$(GEN-ALWAYS)) +endif +ifeq (-$(CONFIG_WIN32)-$(CONFIG_i386)$(CONFIG_arm)-,--yes-) + SKIP += 95_bitfields_ms.test # type_align is differnt on 32bit-non-windows +endif -all test: $(filter-out $(SKIP),$(TESTS)) +all test tests2.all: $(filter-out $(SKIP),$(TESTS)) ; %.test: %.c %.expect @echo Test: $*... -# test -run - @if test -z "$(NORUN)"; then \ - $(TCC) $(FLAGS) -run $< $(ARGS) $(FILTER) >$*.output 2>&1 || true; \ - else \ - $(TCC) $(FLAGS) $< -o ./$*.exe $(FILTER) >$*.output 2>&1; \ - ./$*.exe $(ARGS) >>$*.output 2>&1 || true; \ - fi - @diff -Nbu $(SRC)/$*.expect $*.output && rm -f $*.output $*.exe + @$(if $(NORUN),\ + ($(TCC) $(FLAGS) $< -o a.exe && ./a.exe $(ARGS)),\ + $(TCC) $(FLAGS) -run $< $(ARGS)\ + ) $(FILTER) >$*.output 2>&1 || true + @diff -Nbu $(filter %.expect,$^) $*.output \ + && rm -f $*.output $(filter $*.expect,$(GEN-ALWAYS)) + +F1 = $(or $(filter $1_%,$(TESTS)),$1_???.test) +F2 = $1 UPDATE="$(patsubst %.test,%.expect,$1)" + +# run single test and update .expect file, e.g. "make tests2.37+" +tests2.%+: + @$(MAKE) $(call F2,$(call F1,$*)) --no-print-directory + +# run single test, e.g. "make tests2.37" +tests2.%: + @$(MAKE) $(call F1,$*) --no-print-directory # automatically generate .expect files with gcc: -%.expect : # %.c - (gcc -w $*.c -o a.exe && ./a.exe $(ARGS)) $(FILTER) >$*.expect 2>&1; rm -f a.exe +%.expect : + @echo Generating: $@ + @$(CC) -w -std=gnu99 $(FLAGS) $(SRC)/$*.c -o a.exe + @./a.exe $(ARGS) $(FILTER) >$@ 2>&1 + @rm -f a.exe + +# using the ms compiler for the really ms-compatible bitfields +MS-CC = cl +95_bitfields_ms.expect : + @echo Generating: $@ + @$(MS-CC) $(basename $@).c + @./$(basename $@).exe >$@ 2>&1 + @rm -f *.exe *.obj *.pdb # tell make not to delete .PRECIOUS: %.expect +$(sort $(GEN-ALWAYS) $(UPDATE)) : force +force: + clean: - rm -f fred.txt *.output a.exe + rm -f fred.txt *.output a.exe $(GEN-ALWAYS) |
