summaryrefslogtreecommitdiff
path: root/test/Makefile.tests
blob: 1c08aec6c184c68e0e22a4dbf7241475fa405005 (plain)
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
##----------------------------------------------------------*- 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

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      = $(LLVMGCCDIR)/bin/gcc
LCC1     = $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1
LCXX     = $(LLVMGCCDIR)/bin/g++
LCC1XX   = $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1plus
LLI      = $(TOOLS)/lli
LLC      = $(TOOLS)/llc
LAS      = $(TOOLS)/as
LGCCAS   = $(TOOLS)/gccas
LGCCLD   = $(TOOLS)/gccld -L$(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH) -L$(LLVMGCCDIR)/lib
LGCCLDPROG = $(TOOLS)/gccld
LDIS     = $(TOOLS)/dis 
LOPT     = $(TOOLS)/opt
LLINK    = $(TOOLS)/link
LANALYZE = $(TOOLS)/analyze
LBUGPOINT= $(TOOLS)/bugpoint

LCCFLAGS  += -O2 -Wall
LCXXFLAGS += -O2 -Wall
LLCFLAGS =
FAILURE  = $(LEVEL)/test/Failure.sh
TESTRUNR = @echo Running test: $<; \
             PATH=$(LLVMTOOLCURRENT):$(LEVEL)/test/Scripts:$(PATH) \
                  $(LEVEL)/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

POOLFLAGS =
DOPOOLALLOC =
## If POOLALLOC is "yes", set the opt flag and the POOLLIBS varoab;e
ifeq ($(POOLALLOC), yes)
    POOLFLAGS += -poolalloc
    DOPOOLALLOC = yes
    POOLLIBS := -L$(LEVEL)/test/Libraries/Output
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 $@

# Compile from X.cpp to Output/X.ll
Output/%.ll: $(SourceDir)%.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 $@

# 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: %.ll $(LAS) Output/.dir
	$(LAS) -f $< -o $@

#
# Testing versions of provided utilities...
#
Output/%.tll: %.c $(LCC1) Output/.dir $(INCLUDES)
	@echo "======== Compiling $<"
	$(LCC) $(CPPFLAGS) $(LCCFLAGS) -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