summaryrefslogtreecommitdiff
path: root/test/Makefile
blob: 8e4215682f916e31021bd296124e9d8987142c39 (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
145
146
147
148
149
150
151
#===- test/Makefile ----------------------------------------*- Makefile -*--===#
# 
#                     The LLVM Compiler Infrastructure
#
# This file was developed by the LLVM research group and is distributed under
# the University of Illinois Open Source License. See LICENSE.TXT for details.
# 
#===------------------------------------------------------------------------===#

LEVEL  = ..
DIRS   = 

#
# Make QMTest the default for testing features and regressions
# Do this first to force QMTest to run first
#
all:: qmtest

# Include other test rules
include Makefile.tests

# New QMTest functionality:
#	The test suite is being transitioned over to QMTest.  Eventually, it
#	will use QMTest by default.

# QMTest option specifying the location of the QMTest database.
QMDB= -D $(LLVM_SRC_ROOT)/test
QMCLASSES=$(LLVM_OBJ_ROOT)/test/QMTest

#
# Determine which expectations file we will use
#
QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.unknown.qmr
ifeq ($(OS),Linux)
QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.linux.qmr
endif

ifeq ($(OS),SunOS)
QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.sunos.qmr
endif

ifeq ($(OS),Darwin)
QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.darwin.qmr
endif

#
# This is configuration information used by the test suite.  In QM Test, it's
# called a 'context.'
#
CONTEXT= -c "srcroot=$(LLVM_SRC_ROOT)" \
         -c "buildroot=$(LLVM_OBJ_ROOT)" \
         -c "buildtype=$(BuildMode)" \
         -c "tmpdir=$(LLVM_OBJ_ROOT)/test/tmp" \
         -c "coresize=0" \
         -c "cc=$(CC)" \
         -c "cxx=$(CXX)" \
         -c "llvmgcc=$(LLVMGCC)" \
         -c "llvmgxx=$(LLVMGXX)" \
         -c "make=$(MAKE)" \
         -c "python=$(PYTHON)"

#
# Location of the QMTest program.
#
QMTEST= QMTEST_CLASS_PATH=$(QMCLASSES) qmtest $(QMDB)


#
# Execute the tests
#
qmtest:: $(LLVM_OBJ_ROOT)/test/tmp register
	-$(QMTEST) run -O $(QMEXPECT) $(CONTEXT)

%.t:: $(LLVM_OBJ_ROOT)/test/tmp register
	-$(QMTEST) run -O $(QMEXPECT) $(CONTEXT) $*

#
# Create the temporary directory used by the test suite.
#
$(LLVM_OBJ_ROOT)/test/tmp::
	${MKDIR} $(LLVM_OBJ_ROOT)/test/tmp

#
# Right now, QMTest compiles the python test classes and put them into the
# source tree.  Since Python bytecode is *not* cross-platform compatible (I
# think), we'll regenerate every time.
#
# Simultaneous builds won't work, but shared source trees will.
#
register:
	$(QMTEST) register test llvm.TestAsmDisasm
	$(QMTEST) register test llvm.AssembleTest
	$(QMTEST) register test llvm.ConvertToCTest
	$(QMTEST) register test llvm.LLToCTest
	$(QMTEST) register test llvm.MachineCodeTest
	$(QMTEST) register test llvm.TestOptimizer
	$(QMTEST) register test llvm.LLITest
	$(QMTEST) register test llvm.TestRunner
	$(QMTEST) register test llvm.VerifierTest
	$(QMTEST) register test llvm.CTest
	$(QMTEST) register test llvm.CXXTest
	$(QMTEST) register database llvmdb.llvmdb

# Start up the QMTest GUI
gui::
	$(QMTEST) gui --no-browser --daemon

# Also get rid of qmtest garbage when we 'make clean' in this directory.
clean:: qmtest-clean

qmtest-clean:
	$(RM) -rf $(LLVM_OBJ_ROOT)/test/tmp
	$(RM) -f $(LLVM_SRC_ROOT)/test/QMTest/*.pyo \
		$(LLVM_OBJ_ROOT)/test/QMTest/*.pyo
	$(RM) -f $(LLVM_SRC_ROOT)/test/results.qmr \
		$(LLVM_OBJ_ROOT)/test/results.qmr

#===------------------------------------------------------------------------===#
# DejaGNU testing support
#===------------------------------------------------------------------------===#

ifdef TESTSUITE
RUNTESTFLAGS := --tool $(TESTSUITE)
endif

check-dejagnu: site.exp
	PATH=$(LLVMToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH) \
	$(RUNTEST) $(RUNTESTFLAGS)


dejagnu-clean:
	$(RM) -rf `find $(LLVM_OBJ_ROOT)/test/Regression -name Output -type d -print`

site.exp: Makefile $(LLVM_OBJ_ROOT)/Makefile.config
	@echo 'Making a new site.exp file...'
	@echo '## these variables are automatically generated by make ##' >site.tmp
	@echo '# Do not edit here.  If you wish to override these values' >>site.tmp
	@echo '# edit the last section' >>site.tmp
	@echo "set target_triplet $(TARGET_TRIPLE)" >> site.tmp
	@echo 'set prcontext "$(PYTHON) $(LLVM_SRC_ROOT)/test/Scripts/prcontext.py"' >> site.tmp
	@echo 'set srcdir $(LLVM_SRC_ROOT)/test' >>site.tmp
	@echo "set objdir $(LLVM_OBJ_ROOT)/test" >>site.tmp
	@echo 'set llvmgcc $(LLVMGCCDIR)/bin/gcc' >> site.tmp
	@echo 'set llvmgxx $(LLVMGCCDIR)/bin/g++' >> site.tmp
	@echo '## All variables above are generated by configure. Do Not Edit ## ' >>site.tmp
	@test ! -f site.exp || \
	sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
	@-rm -f site.bak
	@test ! -f site.exp || mv site.exp site.bak
	@mv site.tmp site.exp