942be40e1dd2f45194c5f8d566369e35700f49d1
[libfirm] / ir / be / test / Makefile
1 # Configuration section
2 EDG=edg
3 GCC=gcc
4
5 GCC_CFLAGS=-O3 -g
6 EDG_CFLAGS=-f win32 -b ra-chordal-spill=morgan --c -Ic:\\devstudio\\include
7
8 EXCLUDE=bf_localinit.c bf_store.c calls.c compress95.c convtest.c \
9         fe_bug.c gnu_def.c harness.c if.c psi_test.c
10 SOURCES=$(filter-out $(EXCLUDE), $(wildcard *.c))
11 GCCEXES=$(addprefix gcc/, $(addsuffix .exe, $(basename $(SOURCES))))
12 FIRMEXES=$(addprefix firm/, $(addsuffix .exe, $(basename $(SOURCES))))
13 FIRMASSEMBLERS=$(addprefix firm/, $(addsuffix .s, $(basename $(SOURCES))))
14 DONTCOMPARE = XXEndless.c
15 COMPARES = $(addprefix compare_, $(filter-out $(DONTCOMPARE), $(SOURCES)))
16
17 .PHONY: all clean firm gcc compare
18
19 help:
20         @echo "Targets:"
21         @echo ""
22         @echo " gcc     Build files with gcc"
23         @echo " firm    Build files with firm/edg"
24         @echo " compare Compare results from firm with gcc executables"
25
26 all: compare
27
28 gcc: $(GCCEXES)
29
30 firm: $(FIRMEXES) $(FIRMASSEMBLERS)
31
32 compare: $(COMPARES)
33
34 gcc/%.result: gcc/%.exe
35         @test -z gcc || mkdir -p gcc
36         gcc/$*.exe >& $@ || true
37
38 firm/%.result: firm/%.exe
39         @test -z firm || mkdir -p firm
40         firm/$*.exe >& $@ || echo "$*.c" >> doesntrun.txt
41
42 compare_%.c: gcc/%.exe firm/%.exe gcc/%.result firm/%.result
43         diff -u gcc/$*.result firm/$*.result || echo "$*.c" >> broken.txt
44
45 gcc/%.exe: %.c
46         @test -z gcc || mkdir -p gcc
47         $(GCC) $(GCC_CFLAGS) $*.c -o $@
48
49 firm/%.s: %.c
50         @test -z firm || mkdir -p firm
51         cd firm ; $(EDG) $(EDG_CFLAGS) ../$*.c || echo "$*.c" >> ../compile_failed.txt
52         mv $*.s firm || echo "" > firm/$*.s
53
54 firm/%.exe: firm/%.s
55         $(GCC) firm/$*.s -o $@ || echo "$*.c" >> link_failed.txt
56
57 clean:
58         rm -f gcc/*
59         rm -f firm/*