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