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

ifdef TESTONE
CLEANED_TESTONE := $(patsubst %/,%,$(TESTONE))
CLEANED_TESTONE := $(patsubst test/%,%,$(CLEANED_TESTONE))
SUBDIR := $(shell dirname $(CLEANED_TESTONE))
TESTPATH := $(LLVM_SRC_ROOT)/test/$(CLEANED_TESTONE)
check-one: site.exp $(TCLSH)
	$(Verb)( echo "source $(LLVM_OBJ_ROOT)/test/site.exp" ; \
	  echo "set subdir $(SUBDIR)" ; \
	  echo "proc pass  { msg } { puts \"PASS: \$$msg\" } "; \
	  echo "proc fail  { msg } { puts \"FAIL: \$$msg\" }" ; \
	  echo "proc xfail { msg } { puts \"XFAIL: \$$msg\" }" ; \
	  echo "proc xpass { msg } { puts \"XPASS: \$$msg\" }" ; \
	  echo "source $(LLVM_SRC_ROOT)/test/lib/llvm.exp" ; \
	  echo "RunLLVMTests $(TESTPATH)" ) | \
	( ulimit -t 600 ; ulimit -d 512000 ; \
	  PATH="$(LLVMToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH)" \
	  $(TCLSH) )
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 TARGETS_TO_BUILD "$(TARGETS_TO_BUILD)"' >> site.tmp
	@echo 'set llvmgcc_langs "$(LLVMGCC_LANGS)"' >> 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 gccpath "$(CC)"' >>site.tmp
	@echo 'set gxxpath "$(CXX)"' >>site.tmp
	@echo 'set compile_c "$(CC) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts) -c "' >>site.tmp
	@echo 'set compile_cxx "$(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) - c"' >> site.tmp
	@echo 'set link "$(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) $(LD.Flags)"' >>site.tmp
	@echo 'set llvmgcc "$(LLVMGCC)"' >> site.tmp
	@echo 'set llvmgxx "$(LLVMGCC)"' >> site.tmp
	@echo 'set llvmgccmajvers "$(LLVMGCC_MAJVERS)"' >> site.tmp
	@echo 'set shlibext "$(SHLIBEXT)"' >> 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
