Chris Lattner | 12d632c | 2004-11-07 05:05:37 +0000 | [diff] [blame] | 1 | #===- 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. Adve | 38b8620 | 2001-11-05 00:22:16 +0000 | [diff] [blame] | 10 | LEVEL = .. |
Reid Spencer | eb32ffe | 2004-09-05 08:18:23 +0000 | [diff] [blame] | 11 | DIRS = |
Chris Lattner | 52a4e85 | 2002-01-23 21:36:59 +0000 | [diff] [blame] | 12 | |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 13 | # |
John Criswell | ee29d2a | 2003-09-06 15:12:21 +0000 | [diff] [blame] | 14 | # Make QMTest the default for testing features and regressions |
John Criswell | d184c67 | 2003-10-27 17:46:42 +0000 | [diff] [blame] | 15 | # Do this first to force QMTest to run first |
John Criswell | ee29d2a | 2003-09-06 15:12:21 +0000 | [diff] [blame] | 16 | # |
Chris Lattner | 5b0a4ff | 2004-11-30 17:45:08 +0000 | [diff] [blame] | 17 | ifdef TESTSUITE |
| 18 | all:: check-dejagnu |
| 19 | else |
John Criswell | ee29d2a | 2003-09-06 15:12:21 +0000 | [diff] [blame] | 20 | all:: qmtest |
Chris Lattner | 5b0a4ff | 2004-11-30 17:45:08 +0000 | [diff] [blame] | 21 | endif |
John Criswell | ee29d2a | 2003-09-06 15:12:21 +0000 | [diff] [blame] | 22 | |
John Criswell | d184c67 | 2003-10-27 17:46:42 +0000 | [diff] [blame] | 23 | # Include other test rules |
John Criswell | d184c67 | 2003-10-27 17:46:42 +0000 | [diff] [blame] | 24 | include Makefile.tests |
| 25 | |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 26 | # New QMTest functionality: |
| 27 | # The test suite is being transitioned over to QMTest. Eventually, it |
| 28 | # will use QMTest by default. |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 29 | |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 30 | # QMTest option specifying the location of the QMTest database. |
John Criswell | f424d74 | 2003-10-07 21:13:47 +0000 | [diff] [blame] | 31 | QMDB= -D $(LLVM_SRC_ROOT)/test |
| 32 | QMCLASSES=$(LLVM_OBJ_ROOT)/test/QMTest |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 33 | |
| 34 | # |
John Criswell | 236c4d4 | 2003-11-19 21:13:25 +0000 | [diff] [blame] | 35 | # Determine which expectations file we will use |
| 36 | # |
| 37 | QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.unknown.qmr |
| 38 | ifeq ($(OS),Linux) |
| 39 | QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.linux.qmr |
| 40 | endif |
| 41 | |
| 42 | ifeq ($(OS),SunOS) |
| 43 | QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.sunos.qmr |
| 44 | endif |
| 45 | |
John Criswell | d179961 | 2004-03-29 20:23:11 +0000 | [diff] [blame] | 46 | ifeq ($(OS),Darwin) |
| 47 | QMEXPECT:=$(LLVM_SRC_ROOT)/test/QMTest/expectations.darwin.qmr |
| 48 | endif |
| 49 | |
John Criswell | 236c4d4 | 2003-11-19 21:13:25 +0000 | [diff] [blame] | 50 | # |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 51 | # This is configuration information used by the test suite. In QM Test, it's |
| 52 | # called a 'context.' |
| 53 | # |
Brian Gaeke | ab9585f | 2003-10-11 00:10:05 +0000 | [diff] [blame] | 54 | CONTEXT= -c "srcroot=$(LLVM_SRC_ROOT)" \ |
| 55 | -c "buildroot=$(LLVM_OBJ_ROOT)" \ |
Brian Gaeke | 64aeb00 | 2004-11-03 17:11:23 +0000 | [diff] [blame] | 56 | -c "buildtype=$(BuildMode)" \ |
Brian Gaeke | ab9585f | 2003-10-11 00:10:05 +0000 | [diff] [blame] | 57 | -c "tmpdir=$(LLVM_OBJ_ROOT)/test/tmp" \ |
| 58 | -c "coresize=0" \ |
| 59 | -c "cc=$(CC)" \ |
| 60 | -c "cxx=$(CXX)" \ |
John Criswell | ee29d2a | 2003-09-06 15:12:21 +0000 | [diff] [blame] | 61 | -c "llvmgcc=$(LLVMGCC)" \ |
John Criswell | 28e7767 | 2003-09-30 19:04:08 +0000 | [diff] [blame] | 62 | -c "llvmgxx=$(LLVMGXX)" \ |
John Criswell | 955a742 | 2004-08-02 22:29:38 +0000 | [diff] [blame] | 63 | -c "make=$(MAKE)" \ |
| 64 | -c "python=$(PYTHON)" |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 65 | |
| 66 | # |
| 67 | # Location of the QMTest program. |
| 68 | # |
John Criswell | 1ce5c59 | 2003-09-16 02:59:26 +0000 | [diff] [blame] | 69 | QMTEST= QMTEST_CLASS_PATH=$(QMCLASSES) qmtest $(QMDB) |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 70 | |
| 71 | |
| 72 | # |
| 73 | # Execute the tests |
| 74 | # |
| 75 | qmtest:: $(LLVM_OBJ_ROOT)/test/tmp register |
John Criswell | 236c4d4 | 2003-11-19 21:13:25 +0000 | [diff] [blame] | 76 | -$(QMTEST) run -O $(QMEXPECT) $(CONTEXT) |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 77 | |
John Criswell | f780f77 | 2003-09-08 21:25:35 +0000 | [diff] [blame] | 78 | %.t:: $(LLVM_OBJ_ROOT)/test/tmp register |
John Criswell | 236c4d4 | 2003-11-19 21:13:25 +0000 | [diff] [blame] | 79 | -$(QMTEST) run -O $(QMEXPECT) $(CONTEXT) $* |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 80 | |
| 81 | # |
| 82 | # Create the temporary directory used by the test suite. |
| 83 | # |
| 84 | $(LLVM_OBJ_ROOT)/test/tmp:: |
| 85 | ${MKDIR} $(LLVM_OBJ_ROOT)/test/tmp |
| 86 | |
| 87 | # |
John Criswell | 538a317 | 2003-09-15 21:54:49 +0000 | [diff] [blame] | 88 | # Right now, QMTest compiles the python test classes and put them into the |
| 89 | # source tree. Since Python bytecode is *not* cross-platform compatible (I |
| 90 | # think), we'll regenerate every time. |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 91 | # |
John Criswell | 538a317 | 2003-09-15 21:54:49 +0000 | [diff] [blame] | 92 | # Simultaneous builds won't work, but shared source trees will. |
| 93 | # |
| 94 | register: |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 95 | $(QMTEST) register test llvm.TestAsmDisasm |
| 96 | $(QMTEST) register test llvm.AssembleTest |
| 97 | $(QMTEST) register test llvm.ConvertToCTest |
| 98 | $(QMTEST) register test llvm.LLToCTest |
| 99 | $(QMTEST) register test llvm.MachineCodeTest |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 100 | $(QMTEST) register test llvm.TestOptimizer |
| 101 | $(QMTEST) register test llvm.LLITest |
| 102 | $(QMTEST) register test llvm.TestRunner |
| 103 | $(QMTEST) register test llvm.VerifierTest |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 104 | $(QMTEST) register test llvm.CTest |
John Criswell | 28e7767 | 2003-09-30 19:04:08 +0000 | [diff] [blame] | 105 | $(QMTEST) register test llvm.CXXTest |
John Criswell | 0c9efc2 | 2003-10-07 21:30:07 +0000 | [diff] [blame] | 106 | $(QMTEST) register database llvmdb.llvmdb |
John Criswell | 299e15e | 2003-08-21 15:09:29 +0000 | [diff] [blame] | 107 | |
John Criswell | 1ce5c59 | 2003-09-16 02:59:26 +0000 | [diff] [blame] | 108 | # Start up the QMTest GUI |
John Criswell | 1ce5c59 | 2003-09-16 02:59:26 +0000 | [diff] [blame] | 109 | gui:: |
| 110 | $(QMTEST) gui --no-browser --daemon |
| 111 | |
Brian Gaeke | aa74118 | 2003-11-21 01:12:47 +0000 | [diff] [blame] | 112 | # Also get rid of qmtest garbage when we 'make clean' in this directory. |
Brian Gaeke | f19ae4c | 2003-12-11 04:48:38 +0000 | [diff] [blame] | 113 | clean:: qmtest-clean |
| 114 | |
| 115 | qmtest-clean: |
John Criswell | 9fd50e2 | 2003-10-10 19:52:30 +0000 | [diff] [blame] | 116 | $(RM) -rf $(LLVM_OBJ_ROOT)/test/tmp |
Brian Gaeke | 34d25f1 | 2003-11-20 19:57:17 +0000 | [diff] [blame] | 117 | $(RM) -f $(LLVM_SRC_ROOT)/test/QMTest/*.pyo \ |
| 118 | $(LLVM_OBJ_ROOT)/test/QMTest/*.pyo |
Brian Gaeke | aa74118 | 2003-11-21 01:12:47 +0000 | [diff] [blame] | 119 | $(RM) -f $(LLVM_SRC_ROOT)/test/results.qmr \ |
| 120 | $(LLVM_OBJ_ROOT)/test/results.qmr |
John Criswell | 9fd50e2 | 2003-10-10 19:52:30 +0000 | [diff] [blame] | 121 | |
Chris Lattner | 12d632c | 2004-11-07 05:05:37 +0000 | [diff] [blame] | 122 | #===------------------------------------------------------------------------===# |
| 123 | # DejaGNU testing support |
| 124 | #===------------------------------------------------------------------------===# |
| 125 | |
Tanya Lattner | 491e9cd | 2004-11-07 21:39:41 +0000 | [diff] [blame] | 126 | ifdef TESTSUITE |
Tanya Lattner | d09fbdc | 2004-11-07 23:26:13 +0000 | [diff] [blame] | 127 | RUNTESTFLAGS := --tool $(TESTSUITE) |
Tanya Lattner | 491e9cd | 2004-11-07 21:39:41 +0000 | [diff] [blame] | 128 | endif |
| 129 | |
Tanya Lattner | 7a7cb4c | 2004-11-07 04:59:52 +0000 | [diff] [blame] | 130 | check-dejagnu: site.exp |
Chris Lattner | baf790e | 2004-11-22 19:06:22 +0000 | [diff] [blame] | 131 | -PATH=$(LLVMToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH) \ |
Alkis Evlogimenos | 440add2 | 2004-11-08 05:44:05 +0000 | [diff] [blame] | 132 | $(RUNTEST) $(RUNTESTFLAGS) |
Tanya Lattner | 491e9cd | 2004-11-07 21:39:41 +0000 | [diff] [blame] | 133 | |
Tanya Lattner | 7a7cb4c | 2004-11-07 04:59:52 +0000 | [diff] [blame] | 134 | |
| 135 | dejagnu-clean: |
Chris Lattner | 12d632c | 2004-11-07 05:05:37 +0000 | [diff] [blame] | 136 | $(RM) -rf `find $(LLVM_OBJ_ROOT)/test/Regression -name Output -type d -print` |
Tanya Lattner | 7a7cb4c | 2004-11-07 04:59:52 +0000 | [diff] [blame] | 137 | |
| 138 | site.exp: Makefile $(LLVM_OBJ_ROOT)/Makefile.config |
| 139 | @echo 'Making a new site.exp file...' |
| 140 | @echo '## these variables are automatically generated by make ##' >site.tmp |
| 141 | @echo '# Do not edit here. If you wish to override these values' >>site.tmp |
| 142 | @echo '# edit the last section' >>site.tmp |
Tanya Lattner | 491e9cd | 2004-11-07 21:39:41 +0000 | [diff] [blame] | 143 | @echo "set target_triplet $(TARGET_TRIPLE)" >> site.tmp |
Tanya Lattner | 78887f4 | 2004-11-30 19:13:06 +0000 | [diff] [blame^] | 144 | @echo 'set prcontext "$(TCLSH) $(LLVM_SRC_ROOT)/test/Scripts/prcontext.tcl"' >> site.tmp |
Tanya Lattner | 7a7cb4c | 2004-11-07 04:59:52 +0000 | [diff] [blame] | 145 | @echo 'set srcdir $(LLVM_SRC_ROOT)/test' >>site.tmp |
| 146 | @echo "set objdir $(LLVM_OBJ_ROOT)/test" >>site.tmp |
| 147 | @echo 'set llvmgcc $(LLVMGCCDIR)/bin/gcc' >> site.tmp |
| 148 | @echo 'set llvmgxx $(LLVMGCCDIR)/bin/g++' >> site.tmp |
| 149 | @echo '## All variables above are generated by configure. Do Not Edit ## ' >>site.tmp |
| 150 | @test ! -f site.exp || \ |
| 151 | sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp |
| 152 | @-rm -f site.bak |
| 153 | @test ! -f site.exp || mv site.exp site.bak |
| 154 | @mv site.tmp site.exp |
Chris Lattner | 12d632c | 2004-11-07 05:05:37 +0000 | [diff] [blame] | 155 | |
Reid Spencer | 8db573e1 | 2004-11-09 06:32:58 +0000 | [diff] [blame] | 156 | #===------------------------------------------------------------------------===# |
| 157 | # quick-test utility. Just runs TestRunner.sh on all the *.ll files in a |
| 158 | # directory. Use like this: |
| 159 | # cd llvm/test ; make quick-test QUICKTEST=Regression/Bytecode |
| 160 | # where QUICKTEST specifies the directory you want to run the tests on. |
| 161 | #===------------------------------------------------------------------------===# |
Reid Spencer | ed8c089 | 2004-11-09 06:28:32 +0000 | [diff] [blame] | 162 | quick-test: |
| 163 | @if test -d "${QUICKTEST}" ; then \ |
| 164 | cd $(LLVM_SRC_ROOT)/test/$(QUICKTEST) ; \ |
| 165 | find . -name \*.ll -print -exec $(LLVM_SRC_ROOT)/test/TestRunner.sh {} \; ; \ |
| 166 | else \ |
| 167 | echo "Set QUICKTEST=<some directory with TestRunner.sh .ll files in it" ; \ |
| 168 | fi |