Go back to using -no-user-package-conf for a while
[ghc.git] / testsuite / mk / test.mk
index e8d5c63..e6873cb 100644 (file)
@@ -1,23 +1,23 @@
 # -----------------------------------------------------------------------------
 # 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
+#  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:
 #
-#      TEST            -- specific test to run
-#      TESTS           -- specific tests to run (same as $TEST really)
-#      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
-#      COMPILER        -- select a configuration file from config/
-#       THREADS         -- run n tests at once
+#  TEST      -- specific test to run
+#  TESTS     -- specific tests to run (same as $TEST really)
+#  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
+#  COMPILER  -- select a configuration file from config/
+#  THREADS   -- run n tests at once
 #
 # -----------------------------------------------------------------------------
 
-# export the value of $MAKE for invocation in ghc-regress/driver/
+# export the value of $MAKE for invocation in tests/driver/
 export MAKE
 
 RUNTESTS     = $(TOP)/driver/runtests.py
@@ -25,25 +25,28 @@ COMPILER     = ghc
 CONFIGDIR    = $(TOP)/config
 CONFIG       = $(CONFIGDIR)/$(COMPILER)
 
+# TEST_HC_OPTS is passed to every invocation of TEST_HC 
+# in nested Makefiles
+TEST_HC_OPTS = -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-conf -rtsopts $(EXTRA_HC_OPTS)
+
 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 =
 else
 exeext = .exe
 endif
 
-$(eval $(call get-ghc-feature-bool,GhcWithNativeCodeGen,Have native code generator))
+RUNTEST_OPTS += -e ghc_compiler_always_flags="'$(TEST_HC_OPTS)'"
+
 ifeq "$(GhcWithNativeCodeGen)" "YES"
 RUNTEST_OPTS += -e ghc_with_native_codegen=1
 else
 RUNTEST_OPTS += -e ghc_with_native_codegen=0
 endif
 
-HAVE_PROFILING:=$(if $(wildcard $(shell $(GHC_PKG) field haskell98 library-dirs | sed 's/^[^:]*: *//')/libHShaskell98-*_p.a),YES,NO)
+HASKELL98_LIBDIR := $(shell "$(GHC_PKG)" field haskell98 library-dirs | sed 's/^[^:]*: *//')
+HAVE_PROFILING := $(shell if [ -f $(subst \,/,$(HASKELL98_LIBDIR))/libHShaskell98-*_p.a ]; then echo YES; else echo NO; fi)
 
 ifeq "$(HAVE_PROFILING)" "YES"
 RUNTEST_OPTS += -e ghc_with_profiling=1
@@ -57,49 +60,96 @@ else
 RUNTEST_OPTS += -e ghc_with_threaded_rts=0
 endif
 
-$(eval $(call get-ghc-feature-bool,GhcWithInterpreter,Have interpreter))
-ifeq "$(GhcWithInterpreter)" "YES"
-RUNTEST_OPTS += -e ghc_with_interpreter=1
+ifeq "$(filter dyn, $(GhcRTSWays))" "dyn"
+RUNTEST_OPTS += -e ghc_with_dynamic_rts=1
 else
+RUNTEST_OPTS += -e ghc_with_dynamic_rts=0
+endif
+
+ifeq "$(GhcWithInterpreter)" "NO"
+RUNTEST_OPTS += -e ghc_with_interpreter=0
+else ifeq "$(GhcStage)" "1"
 RUNTEST_OPTS += -e ghc_with_interpreter=0
+else
+RUNTEST_OPTS += -e ghc_with_interpreter=1
 endif
 
-$(eval $(call get-ghc-feature-bool,GhcUnregisterised,Unregisterised))
 ifeq "$(GhcUnregisterised)" "YES"
 RUNTEST_OPTS += -e ghc_unregisterised=1
 else
 RUNTEST_OPTS += -e ghc_unregisterised=0
 endif
 
-$(eval $(call get-ghc-feature-bool,GhcWithSMP,Support SMP))
 ifeq "$(GhcWithSMP)" "YES"
 RUNTEST_OPTS += -e ghc_with_smp=1
 else
 RUNTEST_OPTS += -e ghc_with_smp=0
 endif
 
+ifneq "$(shell $(SHELL) -c 'llc --version | grep version' 2> /dev/null)" ""
+RUNTEST_OPTS += -e ghc_with_llvm=1
+else
+RUNTEST_OPTS += -e ghc_with_llvm=0
+endif
+
+ifeq "$(WINDOWS)" "YES"
+RUNTEST_OPTS += -e windows=True
+else
+RUNTEST_OPTS += -e windows=False
+endif
+
+ifeq "$(DARWIN)" "YES"
+RUNTEST_OPTS += -e darwin=True
+else
+RUNTEST_OPTS += -e darwin=False
+endif
+
+ifeq "$(IN_TREE_COMPILER)" "YES"
+RUNTEST_OPTS += -e in_tree_compiler=True
+else
+RUNTEST_OPTS += -e in_tree_compiler=False
+endif
+
 ifneq "$(THREADS)" ""
 RUNTEST_OPTS += --threads=$(THREADS)
 endif
 
+ifneq "$(CLEAN_ONLY)" ""
+RUNTEST_OPTS += -e clean_only=True
+else
+RUNTEST_OPTS += -e clean_only=False
+endif
+
+ifneq "$(CHECK_FILES_WRITTEN)" ""
+RUNTEST_OPTS += --check-files-written
+endif
+
 RUNTEST_OPTS +=  \
        --rootdir=. \
        --config=$(CONFIG) \
-       -e config.confdir=\"$(CONFIGDIR)\" \
-       -e config.compiler=\"$(TEST_HC)\" \
-       -e config.compiler_always_flags.append"(\"$(EXTRA_HC_OPTS)\")" \
-       -e config.ghc_pkg=\"$(GHC_PKG)\" \
-       -e config.hp2ps=\"$(HP2PS_ABS)\" \
-       -e config.hpc=\"$(HPC)\" \
-       -e config.gs=\"$(GS)\" \
-       -e config.platform=\"$(TARGETPLATFORM)\" \
-       -e config.os=\"$(TargetOS_CPP)\" \
-       -e config.wordsize=\"$(WORDSIZE)\" \
-       -e default_testopts.cleanup=\"$(CLEANUP)\" \
-       -e config.timeout="int($(TIMEOUT)) or config.timeout" \
-       -e config.timeout_prog=\"$(TIMEOUT_PROGRAM)\" \
-       -e config.exeext=\"$(exeext)\" \
-       -e config.top=\"$(TOP_ABS)\" \
+       -e 'config.confdir="$(CONFIGDIR)"' \
+       -e 'config.compiler="$(TEST_HC)"' \
+       -e 'config.compiler_always_flags.append("$(EXTRA_HC_OPTS)")' \
+       -e 'config.ghc_pkg="$(GHC_PKG)"' \
+       -e 'config.hp2ps="$(HP2PS_ABS)"' \
+       -e 'config.hpc="$(HPC)"' \
+       -e 'config.gs="$(GS)"' \
+       -e 'config.platform="$(TARGETPLATFORM)"' \
+       -e 'config.os="$(TargetOS_CPP)"' \
+       -e 'config.arch="$(TargetARCH_CPP)"' \
+       -e 'config.wordsize="$(WORDSIZE)"' \
+       -e 'default_testopts.cleanup="$(CLEANUP)"' \
+       -e 'config.timeout=int($(TIMEOUT)) or config.timeout' \
+       -e 'config.timeout_prog="$(TIMEOUT_PROGRAM)"' \
+       -e 'config.exeext="$(exeext)"' \
+       -e 'config.top="$(TOP_ABS)"'
+
+ifneq "$(OUTPUT_SUMMARY)" ""
+RUNTEST_OPTS +=  \
+       --output-summary "$(OUTPUT_SUMMARY)"
+endif
+
+RUNTEST_OPTS +=  \
        $(EXTRA_RUNTEST_OPTS)
 
 ifeq "$(fast)" "YES"