diff options
Diffstat (limited to 'hadrian/src')
-rw-r--r-- | hadrian/src/Settings/Builders/Ghc.hs | 3 | ||||
-rw-r--r-- | hadrian/src/Target.hs | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/hadrian/src/Settings/Builders/Ghc.hs b/hadrian/src/Settings/Builders/Ghc.hs index 26ebffc326..8b3074752e 100644 --- a/hadrian/src/Settings/Builders/Ghc.hs +++ b/hadrian/src/Settings/Builders/Ghc.hs @@ -35,6 +35,9 @@ compileAndLinkHs = (builder (Ghc CompileHs) ||^ builder (Ghc LinkHs)) ? do hasDynamic = elem dynamic ways mconcat [ arg "-Wall" , not useColor ? builder (Ghc CompileHs) ? + -- N.B. Target.trackArgument ignores this argument from the + -- input hash to avoid superfluous recompilation, avoiding + -- #18672. arg "-fdiagnostics-color=never" , (hasVanilla && hasDynamic) ? builder (Ghc CompileHs) ? platformSupportsSharedLibs ? way vanilla ? diff --git a/hadrian/src/Target.hs b/hadrian/src/Target.hs index 2fb12f8c7c..07a31fc464 100644 --- a/hadrian/src/Target.hs +++ b/hadrian/src/Target.hs @@ -21,11 +21,12 @@ type Target = H.Target Context Builder trackArgument :: Target -> String -> Bool trackArgument target arg = case builder target of Make _ -> not $ threadArg arg - Ghc _ _ -> not $ verbosityArg arg + Ghc _ _ -> not $ verbosityArg arg || diagnosticsColorArg arg Cabal _ _ -> not $ verbosityArg arg || cabal_configure_ignore arg _ -> True where threadArg s = dropWhileEnd isDigit s `elem` ["-j", "MAKEFLAGS=-j", "THREADS="] verbosityArg s = dropWhileEnd isDigit s == "-v" + diagnosticsColorArg s = "-fdiagnostics-color=" `isPrefixOf` s -- N.B. #18672 cabal_configure_ignore s = s `elem` [ "--configure-option=--quiet", "--configure-option=--disable-option-checking" ] |