blob: 5caf29d0b98c3a84546df599a800ad2c77d7016e [file] [log] [blame]
Chris Lattner12d632c2004-11-07 05:05:37 +00001#===- test/Makefile ----------------------------------------*- Makefile -*--===#
2#
3# The LLVM Compiler Infrastructure
4#
5# This file was developed by the LLVM research group and is distributed under
6# the University of Illinois Open Source License. See LICENSE.TXT for details.
7#
8#===------------------------------------------------------------------------===#
9
Vikram S. Adve38b86202001-11-05 00:22:16 +000010LEVEL = ..
Reid Spencereb32ffe2004-09-05 08:18:23 +000011DIRS =
Chris Lattner52a4e852002-01-23 21:36:59 +000012
John Criswell299e15e2003-08-21 15:09:29 +000013#
Tanya Lattner9f97b4c2004-12-04 06:25:08 +000014# Make Dejagnu the default for testing
John Criswellee29d2a2003-09-06 15:12:21 +000015#
Tanya Lattner9f97b4c2004-12-04 06:25:08 +000016all:: check
John Criswellee29d2a2003-09-06 15:12:21 +000017
John Criswelld184c672003-10-27 17:46:42 +000018# Include other test rules
John Criswelld184c672003-10-27 17:46:42 +000019include Makefile.tests
20
John Criswell299e15e2003-08-21 15:09:29 +000021# New QMTest functionality:
22# The test suite is being transitioned over to QMTest. Eventually, it
23# will use QMTest by default.
John Criswell299e15e2003-08-21 15:09:29 +000024
John Criswell299e15e2003-08-21 15:09:29 +000025# QMTest option specifying the location of the QMTest database.
John Criswellf424d742003-10-07 21:13:47 +000026QMDB= -D $(LLVM_SRC_ROOT)/test
27QMCLASSES=$(LLVM_OBJ_ROOT)/test/QMTest
John Criswell299e15e2003-08-21 15:09:29 +000028
29#
John Criswell236c4d42003-11-19 21:13:25 +000030# Determine which expectations file we will use
31#
32QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.unknown.qmr
33ifeq ($(OS),Linux)
34QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.linux.qmr
35endif
36
37ifeq ($(OS),SunOS)
38QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.sunos.qmr
39endif
40
John Criswelld1799612004-03-29 20:23:11 +000041ifeq ($(OS),Darwin)
42QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.darwin.qmr
43endif
44
John Criswell236c4d42003-11-19 21:13:25 +000045#
John Criswell299e15e2003-08-21 15:09:29 +000046# This is configuration information used by the test suite. In QM Test, it's
47# called a 'context.'
48#
Brian Gaekeab9585f2003-10-11 00:10:05 +000049CONTEXT= -c "srcroot=$(LLVM_SRC_ROOT)" \
50 -c "buildroot=$(LLVM_OBJ_ROOT)" \
Brian Gaeke64aeb002004-11-03 17:11:23 +000051 -c "buildtype=$(BuildMode)" \
Brian Gaekeab9585f2003-10-11 00:10:05 +000052 -c "tmpdir=$(LLVM_OBJ_ROOT)/test/tmp" \
53 -c "coresize=0" \
54 -c "cc=$(CC)" \
55 -c "cxx=$(CXX)" \
John Criswellee29d2a2003-09-06 15:12:21 +000056 -c "llvmgcc=$(LLVMGCC)" \
John Criswell28e77672003-09-30 19:04:08 +000057 -c "llvmgxx=$(LLVMGXX)" \
John Criswell955a7422004-08-02 22:29:38 +000058 -c "make=$(MAKE)" \
59 -c "python=$(PYTHON)"
John Criswell299e15e2003-08-21 15:09:29 +000060
61#
62# Location of the QMTest program.
63#
John Criswell1ce5c592003-09-16 02:59:26 +000064QMTEST= QMTEST_CLASS_PATH=$(QMCLASSES) qmtest $(QMDB)
John Criswell299e15e2003-08-21 15:09:29 +000065
66
67#
68# Execute the tests
69#
70qmtest:: $(LLVM_OBJ_ROOT)/test/tmp register
John Criswell236c4d42003-11-19 21:13:25 +000071 -$(QMTEST) run -O $(QMEXPECT) $(CONTEXT)
John Criswell299e15e2003-08-21 15:09:29 +000072
John Criswellf780f772003-09-08 21:25:35 +000073%.t:: $(LLVM_OBJ_ROOT)/test/tmp register
John Criswell236c4d42003-11-19 21:13:25 +000074 -$(QMTEST) run -O $(QMEXPECT) $(CONTEXT) $*
John Criswell299e15e2003-08-21 15:09:29 +000075
76#
77# Create the temporary directory used by the test suite.
78#
79$(LLVM_OBJ_ROOT)/test/tmp::
80 ${MKDIR} $(LLVM_OBJ_ROOT)/test/tmp
81
82#
John Criswell538a3172003-09-15 21:54:49 +000083# Right now, QMTest compiles the python test classes and put them into the
84# source tree. Since Python bytecode is *not* cross-platform compatible (I
85# think), we'll regenerate every time.
John Criswell299e15e2003-08-21 15:09:29 +000086#
John Criswell538a3172003-09-15 21:54:49 +000087# Simultaneous builds won't work, but shared source trees will.
88#
89register:
John Criswell299e15e2003-08-21 15:09:29 +000090 $(QMTEST) register test llvm.TestAsmDisasm
91 $(QMTEST) register test llvm.AssembleTest
92 $(QMTEST) register test llvm.ConvertToCTest
93 $(QMTEST) register test llvm.LLToCTest
94 $(QMTEST) register test llvm.MachineCodeTest
John Criswell299e15e2003-08-21 15:09:29 +000095 $(QMTEST) register test llvm.TestOptimizer
96 $(QMTEST) register test llvm.LLITest
97 $(QMTEST) register test llvm.TestRunner
98 $(QMTEST) register test llvm.VerifierTest
John Criswell299e15e2003-08-21 15:09:29 +000099 $(QMTEST) register test llvm.CTest
John Criswell28e77672003-09-30 19:04:08 +0000100 $(QMTEST) register test llvm.CXXTest
John Criswell0c9efc22003-10-07 21:30:07 +0000101 $(QMTEST) register database llvmdb.llvmdb
John Criswell299e15e2003-08-21 15:09:29 +0000102
John Criswell1ce5c592003-09-16 02:59:26 +0000103# Start up the QMTest GUI
John Criswell1ce5c592003-09-16 02:59:26 +0000104gui::
105 $(QMTEST) gui --no-browser --daemon
106
Brian Gaekeaa741182003-11-21 01:12:47 +0000107# Also get rid of qmtest garbage when we 'make clean' in this directory.
Brian Gaekef19ae4c2003-12-11 04:48:38 +0000108qmtest-clean:
John Criswell9fd50e22003-10-10 19:52:30 +0000109 $(RM) -rf $(LLVM_OBJ_ROOT)/test/tmp
Brian Gaeke34d25f12003-11-20 19:57:17 +0000110 $(RM) -f $(LLVM_SRC_ROOT)/test/QMTest/*.pyo \
111 $(LLVM_OBJ_ROOT)/test/QMTest/*.pyo
Brian Gaekeaa741182003-11-21 01:12:47 +0000112 $(RM) -f $(LLVM_SRC_ROOT)/test/results.qmr \
113 $(LLVM_OBJ_ROOT)/test/results.qmr
John Criswell9fd50e22003-10-10 19:52:30 +0000114
Chris Lattner12d632c2004-11-07 05:05:37 +0000115#===------------------------------------------------------------------------===#
116# DejaGNU testing support
117#===------------------------------------------------------------------------===#
118
Tanya Lattner491e9cd2004-11-07 21:39:41 +0000119ifdef TESTSUITE
Tanya Lattnerd09fbdc2004-11-07 23:26:13 +0000120RUNTESTFLAGS := --tool $(TESTSUITE)
Tanya Lattner491e9cd2004-11-07 21:39:41 +0000121endif
122
Tanya Lattner9f97b4c2004-12-04 06:25:08 +0000123check:: site.exp
Chris Lattnerbaf790e2004-11-22 19:06:22 +0000124 -PATH=$(LLVMToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH) \
Alkis Evlogimenos440add22004-11-08 05:44:05 +0000125 $(RUNTEST) $(RUNTESTFLAGS)
Tanya Lattner491e9cd2004-11-07 21:39:41 +0000126
Tanya Lattner9f97b4c2004-12-04 06:25:08 +0000127clean::
Chris Lattner12d632c2004-11-07 05:05:37 +0000128 $(RM) -rf `find $(LLVM_OBJ_ROOT)/test/Regression -name Output -type d -print`
Tanya Lattner7a7cb4c2004-11-07 04:59:52 +0000129
130site.exp: Makefile $(LLVM_OBJ_ROOT)/Makefile.config
131 @echo 'Making a new site.exp file...'
132 @echo '## these variables are automatically generated by make ##' >site.tmp
133 @echo '# Do not edit here. If you wish to override these values' >>site.tmp
134 @echo '# edit the last section' >>site.tmp
Tanya Lattner491e9cd2004-11-07 21:39:41 +0000135 @echo "set target_triplet $(TARGET_TRIPLE)" >> site.tmp
Tanya Lattner78887f42004-11-30 19:13:06 +0000136 @echo 'set prcontext "$(TCLSH) $(LLVM_SRC_ROOT)/test/Scripts/prcontext.tcl"' >> site.tmp
Tanya Lattner7a7cb4c2004-11-07 04:59:52 +0000137 @echo 'set srcdir $(LLVM_SRC_ROOT)/test' >>site.tmp
138 @echo "set objdir $(LLVM_OBJ_ROOT)/test" >>site.tmp
139 @echo 'set llvmgcc $(LLVMGCCDIR)/bin/gcc' >> site.tmp
140 @echo 'set llvmgxx $(LLVMGCCDIR)/bin/g++' >> site.tmp
141 @echo '## All variables above are generated by configure. Do Not Edit ## ' >>site.tmp
142 @test ! -f site.exp || \
143 sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
144 @-rm -f site.bak
145 @test ! -f site.exp || mv site.exp site.bak
146 @mv site.tmp site.exp
Chris Lattner12d632c2004-11-07 05:05:37 +0000147