#===- 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 Dejagnu the default for testing # all:: check-local # 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. 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-local:: site.exp PATH=$(LLVMToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH) \ $(RUNTEST) $(RUNTESTFLAGS) clean:: $(RM) -rf `find $(LLVM_OBJ_ROOT)/test/Regression -name Output -type d -print` $(RM) -rf `find $(LLVM_OBJ_ROOT)/test/Feature -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 "$(TCLSH) $(LLVM_SRC_ROOT)/test/Scripts/prcontext.tcl"' >> 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