Fix hadrian prof flavour so that it builds a profiled version of GHC
authorMatthew Pickering <matthewtpickering@gmail.com>
Tue, 22 Jan 2019 11:33:18 +0000 (11:33 +0000)
committerBen Gamari <ben@well-typed.com>
Wed, 23 Jan 2019 19:07:28 +0000 (14:07 -0500)
In Alp's refactoring of `getProgramContexts` he removed a call to
`getProgramContext` which was where the logic for this used to be
implemented.

Fixes #16214

hadrian/src/Rules/Program.hs

index c9df6f5..d7bcb48 100644 (file)
@@ -13,6 +13,7 @@ import Settings
 import Settings.Default
 import Target
 import Utilities
+import Flavour
 
 -- | TODO: Drop code duplication
 buildProgramRules :: [(Resource, Int)] -> Rules ()
@@ -44,12 +45,18 @@ getProgramContexts stage = do
     -- make sure that we cover these
     -- "prof-build-under-other-name" cases.
     -- iserv gets its names from Packages.hs:programName
-    let allCtxs = [ vanillaContext stage pkg
+    --
+    profiled <- ghcProfiled <$> flavour
+    let allCtxs =
+          if pkg == ghc && profiled && stage > Stage0
+            then [ Context stage pkg profiling ]
+            else [ vanillaContext stage pkg
                   , Context stage pkg profiling
                   -- TODO Dynamic way has been reverted as the dynamic build is
                   --      broken. See #15837.
                   -- , Context stage pkg dynamic
-                  ]
+                 ]
+
     forM allCtxs $ \ctx -> do
       name <- programName ctx
       return (name <.> exe, ctx)