#===- 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

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

ifdef TESTSUITE
CLEANED_TESTSUITE := $(patsubst %/,%,$(TESTSUITE))
CLEANED_TESTSUITE := $(patsubst test/%,%,$(CLEANED_TESTSUITE))
RUNTESTFLAGS := --tool $(CLEANED_TESTSUITE)
endif

ifndef RUNLLVM2CPP
RUNTESTFLAGS += --ignore llvm2cpp.exp
endif

ifneq ($(RUNTEST),)
check-local:: site.exp
	( ulimit -t 600 ; ulimit -d 512000 ; \
	  PATH="$(LLVMToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH)" \
	  $(RUNTEST) $(RUNTESTFLAGS) )
else
check-local:: site.exp
	@echo "*** dejagnu not found.  Make sure runtest is in your PATH, then reconfigure llvm."
endif

clean::
	$(RM) -rf `find $(LLVM_OBJ_ROOT)/test -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 llvmgcc_version "$(LLVMGCC_VERSION)"' >> site.tmp
	@echo 'set prcontext "$(TCLSH) $(LLVM_SRC_ROOT)/test/Scripts/prcontext.tcl"' >> site.tmp
	@echo 'set llvmtoolsdir "$(ToolDir)"' >>site.tmp
	@echo 'set llvmlibsdir "$(LibDir)"' >>site.tmp
	@echo 'set srcroot "$(LLVM_SRC_ROOT)"' >>site.tmp
	@echo 'set objroot "$(LLVM_OBJ_ROOT)"' >>site.tmp
	@echo 'set srcdir "$(LLVM_SRC_ROOT)/test"' >>site.tmp
	@echo 'set objdir "$(LLVM_OBJ_ROOT)/test"' >>site.tmp
	@echo 'set llvmgcc "PATH=\"$(LLVMToolDir):$(PATH)\" \"$(LLVMGCC)\""' >> site.tmp
	@echo 'set llvmgxx "PATH=\"$(LLVMToolDir):$(PATH)\" \"$(LLVMGCC)\""' >> site.tmp
	@echo 'set llvmgccmajvers "$(LLVMGCC_MAJVERS)"' >> site.tmp
	@echo 'set gxxcmd "$(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts)"' >> 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
