[commit: ghc] wip/nfs-locking: Add Quickest build flavour (d7c80c8)
git at git.haskell.org
git at git.haskell.org
Fri Oct 27 00:35:17 UTC 2017
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/nfs-locking
Link : http://ghc.haskell.org/trac/ghc/changeset/d7c80c8303b7bc4596c9d04b569c365128cfd958/ghc
>---------------------------------------------------------------
commit d7c80c8303b7bc4596c9d04b569c365128cfd958
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date: Mon Jun 20 03:07:24 2016 +0100
Add Quickest build flavour
See #259, #268.
>---------------------------------------------------------------
d7c80c8303b7bc4596c9d04b569c365128cfd958
hadrian.cabal | 1 +
src/CmdLineFlag.hs | 11 ++++++-----
src/Settings/Args.hs | 7 +++++--
src/Settings/Flavours/Quickest.hs | 16 ++++++++++++++++
src/Settings/Ways.hs | 7 +++++--
5 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/hadrian.cabal b/hadrian.cabal
index 5ffcb65..2b773ee 100644
--- a/hadrian.cabal
+++ b/hadrian.cabal
@@ -88,6 +88,7 @@ executable hadrian
, Settings.Builders.Tar
, Settings.Default
, Settings.Flavours.Quick
+ , Settings.Flavours.Quickest
, Settings.Packages
, Settings.Packages.Base
, Settings.Packages.Compiler
diff --git a/src/CmdLineFlag.hs b/src/CmdLineFlag.hs
index 10c39f2..df3af5b 100644
--- a/src/CmdLineFlag.hs
+++ b/src/CmdLineFlag.hs
@@ -21,7 +21,7 @@ data Untracked = Untracked
, splitObjects :: Bool }
deriving (Eq, Show)
-data Flavour = Default | Quick deriving (Eq, Show)
+data Flavour = Default | Quick | Quickest deriving (Eq, Show)
data ProgressColour = Never | Auto | Always deriving (Eq, Show)
data ProgressInfo = None | Brief | Normal | Unicorn deriving (Eq, Show)
@@ -43,9 +43,10 @@ readFlavour ms =
maybe (Left "Cannot parse flavour") (Right . set) (go =<< lower <$> ms)
where
go :: String -> Maybe Flavour
- go "default" = Just Default
- go "quick" = Just Quick
- go _ = Nothing
+ go "default" = Just Default
+ go "quick" = Just Quick
+ go "quickest" = Just Quickest
+ go _ = Nothing
set :: Flavour -> Untracked -> Untracked
set flag flags = flags { flavour = flag }
@@ -83,7 +84,7 @@ readSplitObjects = Right $ \flags -> flags { splitObjects = True }
cmdFlags :: [OptDescr (Either String (Untracked -> Untracked))]
cmdFlags =
[ Option [] ["flavour"] (OptArg readFlavour "FLAVOUR")
- "Build flavour (Default or Quick)."
+ "Build flavour (Default, Quick or Quickest)."
, Option [] ["haddock"] (NoArg readBuildHaddock)
"Generate Haddock documentation."
, Option [] ["progress-colour"] (OptArg readProgressColour "MODE")
diff --git a/src/Settings/Args.hs b/src/Settings/Args.hs
index 18079a2..2ff071a 100644
--- a/src/Settings/Args.hs
+++ b/src/Settings/Args.hs
@@ -20,6 +20,7 @@ import Settings.Builders.Ld
import Settings.Builders.Make
import Settings.Builders.Tar
import Settings.Flavours.Quick
+import Settings.Flavours.Quickest
import Settings.Packages.Base
import Settings.Packages.Compiler
import Settings.Packages.Directory
@@ -88,5 +89,7 @@ defaultPackageArgs = mconcat
, unlitPackageArgs ]
flavourArgs :: Args
-flavourArgs = mconcat
- [ cmdFlavour == Quick ? quickFlavourArgs ]
+flavourArgs = case cmdFlavour of
+ Default -> mempty
+ Quick -> quickFlavourArgs
+ Quickest -> quickestFlavourArgs
diff --git a/src/Settings/Flavours/Quickest.hs b/src/Settings/Flavours/Quickest.hs
new file mode 100644
index 0000000..cc1de6b
--- /dev/null
+++ b/src/Settings/Flavours/Quickest.hs
@@ -0,0 +1,16 @@
+module Settings.Flavours.Quickest (quickestFlavourArgs, quickestFlavourWays) where
+
+import Context
+import GHC
+import Predicate
+
+optimise :: Context -> Bool
+optimise Context {..} = stage == Stage0 && package `elem` [compiler, ghc]
+
+quickestFlavourArgs :: Args
+quickestFlavourArgs = builder Ghc ? do
+ context <- getContext
+ if optimise context then arg "-O" else arg "-O0"
+
+quickestFlavourWays :: Ways
+quickestFlavourWays = remove [profiling]
diff --git a/src/Settings/Ways.hs b/src/Settings/Ways.hs
index 79dd164..95301e1 100644
--- a/src/Settings/Ways.hs
+++ b/src/Settings/Ways.hs
@@ -5,6 +5,7 @@ import CmdLineFlag
import Oracles.Config.Flag
import Predicate
import Settings.Flavours.Quick
+import Settings.Flavours.Quickest
import UserSettings
-- | Combine default library ways with user modifications.
@@ -29,8 +30,10 @@ defaultLibraryWays = mconcat
, notStage0 ? platformSupportsSharedLibs ? append [dynamic] ]
flavourLibraryWays :: Ways
-flavourLibraryWays = mconcat
- [ cmdFlavour == Quick ? quickFlavourWays ]
+flavourLibraryWays = case cmdFlavour of
+ Default -> mempty
+ Quick -> quickFlavourWays
+ Quickest -> quickestFlavourWays
defaultRtsWays :: Ways
defaultRtsWays = do
More information about the ghc-commits
mailing list