test.mk 3.89 KB
Newer Older
1 2 3 4 5 6 7 8 9
# -----------------------------------------------------------------------------
# Examples of use:
#
# 	make		-- run all the tests in the current directory
# 	make verbose	-- as make test, but up the verbosity
# 	make accept	-- run the tests, accepting the current output
#
# The following variables may be set on the make command line:
#
10 11
#	TEST		-- specific test to run
#	TESTS		-- specific tests to run (same as $TEST really)
12 13 14
#	EXTRA_HC_OPTS	-- extra flags to send to the Haskell compiler
#	EXTRA_RUNTEST_OPTS -- extra flags to give the test driver
#	CONFIG		-- use a different configuration file
ross's avatar
ross committed
15
#	COMPILER	-- select a configuration file from config/
ei@vuokko.info's avatar
ei@vuokko.info committed
16
#       THREADS         -- run n tests at once
17 18 19
#
# -----------------------------------------------------------------------------

dons's avatar
dons committed
20 21 22
# export the value of $MAKE for invocation in ghc-regress/driver/
export MAKE

23
RUNTESTS     = $(TOP)/driver/runtests.py
ross's avatar
ross committed
24
COMPILER     = ghc
25 26
CONFIGDIR    = $(TOP)/config
CONFIG       = $(CONFIGDIR)/$(COMPILER)
27

28 29 30 31 32 33 34
RUNTEST_OPTS =

$(eval $(call get-ghc-rts-field,WORDSIZE,Word size))
$(eval $(call get-ghc-rts-field,TARGETPLATFORM,Target platform))
$(eval $(call get-ghc-rts-field,TargetOS_CPP,Target OS))
ifeq "$(filter $(TargetOS_CPP), cygwin32 mingw32)" ""
exeext =
35
else
36
exeext = .exe
37
endif
38

39
$(eval $(call get-ghc-feature-bool,GhcWithNativeCodeGen,Have native code generator))
40
ifeq "$(GhcWithNativeCodeGen)" "YES"
41 42 43
RUNTEST_OPTS += -e ghc_with_native_codegen=1
else
RUNTEST_OPTS += -e ghc_with_native_codegen=0
44 45
endif

46 47 48
HAVE_PROFILING:=$(if $(wildcard $(shell $(GHC_PKG) field haskell98 library-dirs | sed 's/^[^:]*: *//')/libHShaskell98-*_p.a),YES,NO)

ifeq "$(HAVE_PROFILING)" "YES"
49 50 51
RUNTEST_OPTS += -e ghc_with_profiling=1
else
RUNTEST_OPTS += -e ghc_with_profiling=0
52
endif
53

54 55 56 57 58 59 60
ifeq "$(filter thr, $(GhcRTSWays))" "thr"
RUNTEST_OPTS += -e ghc_with_threaded_rts=1
else
RUNTEST_OPTS += -e ghc_with_threaded_rts=0
endif

$(eval $(call get-ghc-feature-bool,GhcWithInterpreter,Have interpreter))
61 62 63 64 65 66
ifeq "$(GhcWithInterpreter)" "YES"
RUNTEST_OPTS += -e ghc_with_interpreter=1
else
RUNTEST_OPTS += -e ghc_with_interpreter=0
endif

67
$(eval $(call get-ghc-feature-bool,GhcUnregisterised,Unregisterised))
68 69 70 71 72 73
ifeq "$(GhcUnregisterised)" "YES"
RUNTEST_OPTS += -e ghc_unregisterised=1
else
RUNTEST_OPTS += -e ghc_unregisterised=0
endif

74
$(eval $(call get-ghc-feature-bool,GhcWithSMP,Support SMP))
75 76 77 78 79 80
ifeq "$(GhcWithSMP)" "YES"
RUNTEST_OPTS += -e ghc_with_smp=1
else
RUNTEST_OPTS += -e ghc_with_smp=0
endif

ei@vuokko.info's avatar
ei@vuokko.info committed
81
ifneq "$(THREADS)" ""
82
RUNTEST_OPTS += --threads=$(THREADS)
ei@vuokko.info's avatar
ei@vuokko.info committed
83 84
endif

85
RUNTEST_OPTS +=  \
86
	--rootdir=. \
87
	--config=$(CONFIG) \
88
	-e config.confdir=\"$(CONFIGDIR)\" \
89 90
	-e config.compiler=\"$(TEST_HC)\" \
	-e config.compiler_always_flags.append"(\"$(EXTRA_HC_OPTS)\")" \
91
	-e config.ghc_pkg=\"$(GHC_PKG)\" \
92
	-e config.hp2ps=\"$(HP2PS_ABS)\" \
93
	-e config.hpc=\"$(HPC)\" \
94
	-e config.gs=\"$(GS)\" \
95
	-e config.platform=\"$(TARGETPLATFORM)\" \
96
	-e config.os=\"$(TargetOS_CPP)\" \
97
	-e config.wordsize=\"$(WORDSIZE)\" \
98
	-e default_testopts.cleanup=\"$(CLEANUP)\" \
99
	-e config.timeout="int($(TIMEOUT)) or config.timeout" \
100
	-e config.timeout_prog=\"$(TIMEOUT_PROGRAM)\" \
Ian Lynagh's avatar
Ian Lynagh committed
101
	-e config.exeext=\"$(exeext)\" \
102
	-e config.top=\"$(TOP_ABS)\" \
103 104
	$(EXTRA_RUNTEST_OPTS)

105 106 107 108 109 110 111 112 113 114 115 116
ifeq "$(fast)" "YES"
setfast = -e config.fast=1
else
setfast = 
endif

ifeq "$(accept)" "YES"
setaccept = -e config.accept=1
else
setaccept = 
endif

117
TESTS	     = 
118
TEST	     = 
119
WAY =
120

121 122 123 124
.PHONY: all boot test verbose accept fast

all: test

125
TIMEOUT_PROGRAM = $(TOP)/timeout/install-inplace/bin/timeout$(exeext)
126

127 128
boot: $(TIMEOUT_PROGRAM)

129
$(TIMEOUT_PROGRAM) :
130
	@echo "Looks like you don't have timeout, building it first..."
Ian Lynagh's avatar
Ian Lynagh committed
131
	$(MAKE) -C $(TOP)/timeout all
132

133
test: $(TIMEOUT_PROGRAM)
134
	$(PYTHON) $(RUNTESTS) $(RUNTEST_OPTS) \
135
		$(patsubst %, --only=%, $(TEST)) \
136
		$(patsubst %, --only=%, $(TESTS)) \
137
		$(patsubst %, --way=%, $(WAY)) \
138
		$(patsubst %, --skipway=%, $(SKIPWAY)) \
139
		$(setfast) \
140
		$(setaccept)
141

142
verbose: test
143 144

accept:
145 146 147
	$(MAKE) accept=YES

fast:
148
	$(MAKE) fast=YES
149