Makefile
2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Makefile for building all tests of isolated FPU/SWAR operations
SRCDIR=src
DSTDIR=_build
CC=clang
LC=llc
LDIS=llvm-dis
TOOLCHAIN=sparc-daiteq-elf
AS=$(TOOLCHAIN)-as
LD=$(TOOLCHAIN)-ld
OBJDUMP=$(TOOLCHAIN)-objdump
#LCFLAGS=-debug-pass=Structure -debug --asm-verbose
#LCFLAGS=-debug --print-machineinstrs -view-dag-combine1-dags
TESTBASE = $(basename $(notdir $(SOURCE)))
OUTDIR = $(DSTDIR)/$(SUBDIR)/$(basename $(SOURCE))
OUTFILES = $(OUTDIR)/$(TESTBASE)
PATHSOURCE = $(SRCDIR)/$(SUBDIR)/$(SOURCE)
DEFS = $(shell ./scripts/get_defines $(PATHSOURCE) D)
ASMALLFLAGS = $(shell ./scripts/get_defines $(PATHSOURCE) A)
ASFLAGS = $(ASMALLFLAGS:%=-Xassembler %)
ALLSRCDIRS:=$(sort $(notdir $(wildcard $(SRCDIR)/*)))
ALLSOURCES=$(sort $(notdir $(wildcard $(SRCDIR)/$(SRCSUBDIR)/*.c)))
.PHONY: all clean build_one build_dir $(OUTDIR)
# process all test directory
all: $(DSTDIR)
@for i in $(ALLSRCDIRS); do \
echo "Build for $$i \n"; \
mkdir -p $(DSTDIR)/$$i; \
make -C $(PWD) -f Makefile build_dir SRCSUBDIR=$$i PHASE=zero; \
done
@echo "All tests done\n"
test:
@echo "Srcs : $(ALLSOURCES)"
clean:
rm -fr $(ALLSOURCES:%=$(DSTDIR)/%/*)
# rm -fr $(DSTDIR)/*
build_dir:
@for i in $(ALLSOURCES); do \
echo " Build $(SRCDIR)/$(SRCSUBDIR)/$$i \n"; \
make -C $(PWD) -f Makefile build_one SUBDIR=$(SRCSUBDIR) SOURCE=$$i PHASE=one; \
done
@echo "Done in subdirectory $(SRCSUBDIR)"
build_one: $(OUTDIR)/done
@echo " ... done in '$(OUTDIR)'"
$(DSTDIR):
@echo "Create build directory"
@mkdir -p $(DSTDIR)
$(OUTDIR):
@mkdir -p $(OUTDIR)
$(OUTFILES).ast: $(PATHSOURCE)
@echo "Parse $(PATHSOURCE) to $(OUTFILES).ast"
@$(CC) -Xclang -ast-dump -fno-color-diagnostics -S $(TEST_CFLAGS) $(DEFS) $(CFLGS) $(PATHSOURCE) >$(OUTFILES).ast 2>$(OUTFILES).ast_err
$(OUTFILES).ll: $(PATHSOURCE)
@echo "Create IR $(OUTFILES).ll from $(PATHSOURCE)"
@$(CC) -emit-llvm $(TEST_CFLAGS) $(DEFS) $(CFLGS) $(PATHSOURCE) -S -o $(OUTFILES).ll 2>$(OUTFILES).ll_err
$(OUTFILES).bc: $(PATHSOURCE)
@echo "Create binary IR $(OUTFILES).bc from $(PATHSOURCE)"
@$(CC) -emit-llvm $(TEST_CFLAGS) $(DEFS) $(CFLGS) $(PATHSOURCE) -c -o $(OUTFILES).bc 2>$(OUTFILES).bc_err
$(OUTFILES)-dis.ll: $(OUTFILES).bc
@echo "Disassembly IR $(OUTFILES).bc to $(OUTFILES)-dis.ll"
@$(LDIS) < $(OUTFILES).bc 1>$(OUTFILES)-dis.ll 2>$(OUTFILES)-dis.ll_err
$(OUTFILES).S: $(OUTFILES).bc
@echo "Compile IR $(OUTFILES).bc to target ASM $(OUTFILES).S"
@$(LC) $(OUTFILES).bc $(LCFLAGS) -o $(OUTFILES).S 2>$(OUTFILES).S_err
$(OUTFILES).o: $(OUTFILES).S
@echo "Compile IR $(OUTFILES).bc to target ASM $(OUTFILES).S"
@$(CC) -target $(TOOLCHAIN) $(TEST_CFLAGS) $(DEFS) $(CFLGS) $(ASFLAGS) -c $(PATHSOURCE) -o $(OUTFILES).o 2>$(OUTFILES).obj_err
$(OUTFILES).dis: $(OUTFILES).o
@echo "Disassembly object $(OUTFILES).o to $(OUTFILES).dis"
@$(OBJDUMP) -Sdt $(OUTFILES).o >$(OUTFILES).dis 2>$(OUTFILES).dis_err
$(OUTDIR)/done: $(OUTDIR) $(OUTFILES).ast $(OUTFILES).ll $(OUTFILES)-dis.ll $(OUTFILES).dis
@touch $(OUTDIR)/done