#===- 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 #===------------------------------------------------------------------------===# # quick-test utility. Just runs TestRunner.sh on all the *.ll files in a # directory. Use like this: # cd llvm/test ; make quick-test QUICKTEST=Regression/Bytecode # where QUICKTEST specifies the directory you want to run the tests on. #===------------------------------------------------------------------------===# quick-test: @if test -d "${QUICKTEST}" ; then \ cd $(LLVM_SRC_ROOT)/test/$(QUICKTEST) ; \ find . -name \*.ll -print -exec $(LLVM_SRC_ROOT)/test/TestRunner.sh {} \; ; \ else \ echo "Set QUICKTEST=