1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
module Rules.Test (testRules) where
import Base
import Expression
import Flavour
import Oracles.Flag
import Oracles.Setting
import Settings
import Target
import Utilities
-- TODO: clean up after testing
testRules :: Rules ()
testRules = do
"validate" ~> do
need inplaceLibCopyTargets
needBuilder $ Ghc CompileHs Stage2
needBuilder $ GhcPkg Update Stage1
needBuilder Hpc
-- TODO: Figure out why @needBuilder Hsc2Hs@ doesn't work.
-- TODO: Eliminate explicit filepaths.
-- See https://github.com/snowleopard/hadrian/issues/376.
need ["inplace/bin/hp2ps", "inplace/bin/hsc2hs"]
build $ target (vanillaContext Stage2 compiler) (Make "testsuite/tests") [] []
"test" ~> do
pkgs <- stagePackages Stage1
tests <- filterM doesDirectoryExist $ concat
[ [ pkgPath pkg -/- "tests", pkgPath pkg -/- "tests-ghc" ]
| pkg <- pkgs, isLibrary pkg, pkg /= rts, pkg /= libffi ]
windows <- windowsHost
top <- topDirectory
compiler <- builderPath $ Ghc CompileHs Stage2
ghcPkg <- builderPath $ GhcPkg Update Stage1
haddock <- builderPath (Haddock BuildPackage)
threads <- shakeThreads <$> getShakeOptions
debugged <- ghcDebugged <$> flavour
ghcWithNativeCodeGenInt <- fromEnum <$> ghcWithNativeCodeGen
ghcWithInterpreterInt <- fromEnum <$> ghcWithInterpreter
ghcUnregisterisedInt <- fromEnum <$> flag GhcUnregisterised
quietly . cmd "python2" $
[ "testsuite/driver/runtests.py" ]
++ map ("--rootdir="++) tests ++
[ "-e", "windows=" ++ show windows
, "-e", "config.speed=2"
, "-e", "ghc_compiler_always_flags=" ++ show "-fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-db -rtsopts"
, "-e", "ghc_with_native_codegen=" ++ show ghcWithNativeCodeGenInt
, "-e", "ghc_debugged=" ++ show (yesNo debugged)
, "-e", "ghc_with_vanilla=1" -- TODO: do we always build vanilla?
, "-e", "ghc_with_dynamic=0" -- TODO: support dynamic
, "-e", "ghc_with_profiling=0" -- TODO: support profiling
, "-e", "ghc_with_interpreter=" ++ show ghcWithInterpreterInt
, "-e", "ghc_unregisterised=" ++ show ghcUnregisterisedInt
, "-e", "ghc_with_threaded_rts=0" -- TODO: support threaded
, "-e", "ghc_with_dynamic_rts=0" -- TODO: support dynamic
, "-e", "ghc_dynamic_by_default=False" -- TODO: support dynamic
, "-e", "ghc_dynamic=0" -- TODO: support dynamic
, "-e", "ghc_with_llvm=0" -- TODO: support LLVM
, "-e", "in_tree_compiler=True" -- TODO: when is it equal to False?
, "-e", "clean_only=False" -- TODO: do we need to support True?
, "--configfile=testsuite/config/ghc"
, "--config", "compiler=" ++ show (top -/- compiler)
, "--config", "ghc_pkg=" ++ show (top -/- ghcPkg)
, "--config", "haddock=" ++ show (top -/- haddock)
, "--summary-file", "testsuite_summary.txt"
, "--threads=" ++ show threads
]
-- , "--config", "hp2ps=" ++ quote ("hp2ps")
-- , "--config", "hpc=" ++ quote ("hpc")
-- , "--config", "gs=$(call quote_path,$(GS))"
-- , "--config", "timeout_prog=$(call quote_path,$(TIMEOUT_PROGRAM))"
|