Add prof flavour
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Fri, 6 Jan 2017 02:00:02 +0000 (02:00 +0000)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Fri, 6 Jan 2017 02:00:02 +0000 (02:00 +0000)
hadrian.cabal
src/Settings.hs
src/Settings/Flavours/Prof.hs [new file with mode: 0644]

index 4f3c2f6..712d4c6 100644 (file)
@@ -86,6 +86,7 @@ executable hadrian
                        , Settings.Builders.Tar
                        , Settings.Default
                        , Settings.Flavours.Perf
+                       , Settings.Flavours.Prof
                        , Settings.Flavours.Quick
                        , Settings.Flavours.Quickest
                        , Settings.Packages.Base
index 18dd15b..8f94e5b 100644 (file)
@@ -15,6 +15,7 @@ import Oracles.PackageData
 import Oracles.Path
 import {-# SOURCE #-} Settings.Default
 import Settings.Flavours.Perf
+import Settings.Flavours.Prof
 import Settings.Flavours.Quick
 import Settings.Flavours.Quickest
 import Settings.Path
@@ -51,7 +52,8 @@ getPkgDataList :: (FilePath -> PackageDataList) -> Expr [String]
 getPkgDataList key = lift . pkgDataList . key =<< getBuildPath
 
 hadrianFlavours :: [Flavour]
-hadrianFlavours = [defaultFlavour, perfFlavour, quickFlavour, quickestFlavour]
+hadrianFlavours = [ defaultFlavour, perfFlavour, profFlavour, quickFlavour
+                  , quickestFlavour ]
 
 flavour :: Flavour
 flavour = fromMaybe unknownFlavour $ find ((== flavourName) . name) flavours
diff --git a/src/Settings/Flavours/Prof.hs b/src/Settings/Flavours/Prof.hs
new file mode 100644 (file)
index 0000000..4dee8fc
--- /dev/null
@@ -0,0 +1,21 @@
+module Settings.Flavours.Prof (profFlavour) where
+
+import Context
+import Flavour
+import GHC
+import Predicate
+import {-# SOURCE #-} Settings.Default
+
+profFlavour :: Flavour
+profFlavour = defaultFlavour
+    { name        = "prof"
+    , args        = defaultArgs <> profArgs
+    , ghcProfiled = True }
+
+optimise :: Context -> Bool
+optimise Context {..} = package `elem` [compiler, ghc] || isLibrary package
+
+profArgs :: Args
+profArgs = builder Ghc ? do
+    context <- getContext
+    if optimise context then arg "-O" else arg "-O0"