forked from llvm-mirror/llvm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.tests
155 lines (122 loc) · 4.42 KB
/
Makefile.tests
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
##----------------------------------------------------------*- Makefile -*-===##
##
## Common rules for generating, linking, and compiling via LLVM. This is
## used to implement a robust testing framework for LLVM
##
##-------------------------------------------------------------------------===##
# If the user specified a TEST= option on the command line, we do not want to do
# the default testing type. Instead, we change the default target to be the
# test:: target.
#
ifdef TEST
test::
endif
# We do not want to make .d files for tests!
DISABLE_AUTO_DEPENDENCIES=1
include ${LEVEL}/Makefile.common
# Specify ENABLE_STATS on the command line to enable -stats and -time-passes
# output from gccas and gccld.
ifdef ENABLE_STATS
STATS = -stats -time-passes
endif
.PHONY: clean default
# These files, which might be intermediate results, should not be deleted by
# make
.PRECIOUS: Output/%.bc Output/%.ll
.PRECIOUS: Output/%.tbc Output/%.tll
.PRECIOUS: Output/.dir
.PRECIOUS: Output/%.llvm.bc
.PRECIOUS: Output/%.llvm
TOOLS = $(LLVMTOOLCURRENT)
# LLVM Tool Definitions...
#
LCC = $(LLVMGCC) ## FIXME: remove these definitions, use LLVMGCC directly
LCXX = $(LLVMGXX) ## FIXME: remove these definitions, use LLVMGXX directly
LAS = $(LLVMAS) ## FIXME: remove these definitions, use LLVMAS directly
LLI = $(TOOLS)/lli
LLC = $(TOOLS)/llc
LGCCAS = $(TOOLS)/gccas
LGCCLD = $(TOOLS)/gccld -L$(LLVMGCCDIR)/lib/gcc/$(LLVMGCCARCH) -L$(LLVMGCCDIR)/lib
LGCCLDPROG = $(TOOLS)/gccld
LDIS = $(TOOLS)/llvm-dis
LOPT = $(TOOLS)/opt
LLINK = $(TOOLS)/link
LANALYZE = $(TOOLS)/analyze
LBUGPOINT= $(TOOLS)/bugpoint
LCCFLAGS += -O2 -Wall
LCXXFLAGS += -O2 -Wall
LLCFLAGS =
FAILURE = $(LLVM_SRC_ROOT)/test/Failure.sh
TESTRUNR = @echo Running test: $<; \
PATH=$(LLVMTOOLCURRENT):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH) \
$(LLVM_SRC_ROOT)/test/TestRunner.sh
# Native Tool Definitions
NATGCC = $(CC)
CP = /bin/cp -f
## If TRACE or TRACEM is "yes", set the appropriate llc flag (-trace or -tracem)
## mark that tracing on, and set the TRACELIBS variable.
TRACEFLAGS =
ifeq ($(TRACE), yes)
TRACEFLAGS = -trace
TRACELIBS := -L$(LEVEL)/test/Libraries/Output -linstr.$(ARCH)
endif
ifeq ($(TRACEM), yes)
TRACEFLAGS = -tracem
TRACELIBS := -L$(LEVEL)/test/Libraries/Output -linstr.$(ARCH)
endif
LLCLIBS := $(LLCLIBS) -lm
clean::
$(RM) -f a.out core
$(RM) -rf Output/
# Compile from X.c to Output/X.ll
Output/%.ll: $(SourceDir)/%.c $(LCC1) Output/.dir $(INCLUDES)
$(LCC) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@
Output/%.ll: %.c $(LCC1) Output/.dir $(INCLUDES)
$(LCC) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@
# Compile from X.cpp to Output/X.ll
Output/%.ll: $(SourceDir)/%.cpp $(LCC1XX) Output/.dir $(INCLUDES)
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
Output/%.ll: %.cpp $(LCC1XX) Output/.dir $(INCLUDES)
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
# Compile from X.cc to Output/X.ll
Output/%.ll: $(SourceDir)/%.cc $(LCC1XX) Output/.dir $(INCLUDES)
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
Output/%.ll: %.cc $(LCC1XX) Output/.dir $(INCLUDES)
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
# LLVM Assemble from Output/X.ll to Output/X.bc. Output/X.ll must have come
# from GCC output, so use GCCAS.
#
Output/%.bc: Output/%.ll $(LGCCAS)
$(LGCCAS) $(STATS) $< -o $@
# LLVM Assemble from X.ll to Output/X.bc. Because we are coming directly from
# LLVM source, use the non-transforming assembler.
#
Output/%.bc: $(SourceDir)/%.ll $(LAS) Output/.dir
$(LAS) -f $< -o $@
#
# Testing versions of provided utilities...
#
Output/%.tll: $(SourceDir)/%.c $(LCC1) Output/.dir $(INCLUDES)
@echo "======== Compiling $<"
$(LCC) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
Output/%.tll: %.c $(LCC1) Output/.dir $(INCLUDES)
@echo "======== Compiling $<"
$(LCC) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
Output/%.tll: $(SourceDir)/%.cpp $(LCC1XX) Output/.dir $(INCLUDES)
@echo "======== Compiling $<"
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
Output/%.tll: %.cpp $(LCC1XX) Output/.dir $(INCLUDES)
@echo "======== Compiling $<"
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
Output/%.tbc: Output/%.tll $(LAS)
@echo "======== Assembling $<"
$(LAS) -f $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
## Cancel built-in implicit rules that override above rules
%: %.s
%: %.c
%.o: %.c