Hadrian: don't accept p_dyn for executables, to fix --flavour=prof
authorAlp Mestanogullari <alpmestan@gmail.com>
Wed, 10 Apr 2019 13:09:17 +0000 (15:09 +0200)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Sun, 14 Apr 2019 13:01:38 +0000 (09:01 -0400)
hadrian/src/Settings.hs
hadrian/src/Settings/Flavours/Profiled.hs

index 721152c..d3096e7 100755 (executable)
@@ -60,10 +60,14 @@ programContext :: Stage -> Package -> Action Context
 programContext stage pkg = do
     profiled <- ghcProfiled <$> flavour
     dynGhcProgs <- dynamicGhcPrograms =<< flavour
-    return . Context stage pkg . wayFromUnits . concat $
-        [ [ Profiling  | pkg == ghc && profiled && stage > Stage0 ]
-        , [ Dynamic    | dynGhcProgs && stage > Stage0 ]
-        ]
+    return $ Context stage pkg (wayFor profiled dynGhcProgs)
+
+    where wayFor prof dyn
+            | prof && dyn                          =
+                error "programContext: profiling+dynamic not supported"
+            | pkg == ghc && prof && stage > Stage0 = profiling
+            | dyn && stage > Stage0                = dynamic
+            | otherwise                            = vanilla
 
 -- TODO: switch to Set Package as the order of packages should not matter?
 -- Otherwise we have to keep remembering to sort packages from time to time.
index 4634a5a..7f222bf 100644 (file)
@@ -10,7 +10,8 @@ profiledFlavour :: Flavour
 profiledFlavour = defaultFlavour
     { name        = "prof"
     , args        = defaultBuilderArgs <> profiledArgs <> defaultPackageArgs
-    , ghcProfiled = True }
+    , ghcProfiled = True
+    , dynamicGhcPrograms = pure False }
 
 profiledArgs :: Args
 profiledArgs = sourceArgs SourceArgs