diff options
author | doyougnu <jeffrey.young@iohk.io> | 2022-11-02 21:03:22 -0400 |
---|---|---|
committer | Sylvain Henry <sylvain@haskus.fr> | 2022-11-07 12:00:41 +0100 |
commit | 83752133f4c7dc76f7b01079ac7d9f9b55e2ef77 (patch) | |
tree | 6b8cf2faf678da409298a5dee0c99d8e044a70f6 | |
parent | 0b5078c660c7a0b9ada34c18f56beb6509c8ebbf (diff) | |
download | haskell-83752133f4c7dc76f7b01079ac7d9f9b55e2ef77.tar.gz |
Hadrian: add Flavours.JavaScript
Better Cohesion.
-rw-r--r-- | hadrian/hadrian.cabal | 1 | ||||
-rwxr-xr-x | hadrian/src/Settings.hs | 3 | ||||
-rw-r--r-- | hadrian/src/Settings/Flavours/JavaScript.hs | 57 | ||||
-rw-r--r-- | hadrian/src/Settings/Flavours/Release.hs | 8 | ||||
-rw-r--r-- | hadrian/src/Way/Type.hs | 3 |
5 files changed, 62 insertions, 10 deletions
diff --git a/hadrian/hadrian.cabal b/hadrian/hadrian.cabal index 5db97ba41e..2c79969d0b 100644 --- a/hadrian/hadrian.cabal +++ b/hadrian/hadrian.cabal @@ -125,6 +125,7 @@ executable hadrian , Settings.Flavours.Quickest , Settings.Flavours.Validate , Settings.Flavours.Release + , Settings.Flavours.JavaScript , Settings.Packages , Settings.Parser , Settings.Program diff --git a/hadrian/src/Settings.hs b/hadrian/src/Settings.hs index 3c39ac01b9..ce76eefe80 100755 --- a/hadrian/src/Settings.hs +++ b/hadrian/src/Settings.hs @@ -23,6 +23,7 @@ import Settings.Flavours.Quickest import Settings.Flavours.QuickCross import Settings.Flavours.Validate import Settings.Flavours.Release +import Settings.Flavours.JavaScript getArgs :: Args @@ -53,7 +54,7 @@ hadrianFlavours :: [Flavour] hadrianFlavours = [ benchmarkFlavour, defaultFlavour, developmentFlavour Stage1 , developmentFlavour Stage2, performanceFlavour - , releaseFlavour + , releaseFlavour, releaseJsFlavour , quickFlavour, quickValidateFlavour, quickDebugFlavour , quickestFlavour , quickCrossFlavour diff --git a/hadrian/src/Settings/Flavours/JavaScript.hs b/hadrian/src/Settings/Flavours/JavaScript.hs new file mode 100644 index 0000000000..b1539c63de --- /dev/null +++ b/hadrian/src/Settings/Flavours/JavaScript.hs @@ -0,0 +1,57 @@ +module Settings.Flavours.JavaScript + ( quickJsFlavour + , perfJsFlavour + , releaseJsFlavour + ) where + +import qualified Data.Set as Set + +import Flavour +import Expression +import Settings.Flavours.Performance +import {-# SOURCE #-} Settings.Default + +releaseJsFlavour :: Flavour +releaseJsFlavour = disableDynamicLibs + . disableDynamicGhcPrograms + . disableProfiledLibs + . enableO2Stage0 + . useNativeBignum + $ performanceFlavour { name = "release-js" } + +quickJsFlavour :: Flavour +quickJsFlavour = defaultFlavour + { name = "quick-js" + , args = defaultBuilderArgs <> quickJsArgs <> defaultPackageArgs + , dynamicGhcPrograms = pure False + , libraryWays = pure $ Set.singleton vanilla + , rtsWays = pure $ Set.singleton vanilla + } + +perfJsFlavour :: Flavour +perfJsFlavour = defaultFlavour + { name = "perf-js" + , args = defaultBuilderArgs <> perfJsArgs <> defaultPackageArgs + , dynamicGhcPrograms = pure False + , libraryWays = pure $ Set.singleton vanilla + , rtsWays = pure $ Set.singleton vanilla + } + +quickJsArgs :: Args +quickJsArgs = sourceArgs SourceArgs + { hsDefault = mconcat $ + [ pure ["-O0", "-H64m"] + ] + , hsLibrary = notStage0 ? mconcat [ arg "-O" ] + , hsCompiler = stage0 ? arg "-O2" + , hsGhc = mconcat + [ stage0 ? arg "-O" + , stage1 ? mconcat [ arg "-O0" ] ] } + +perfJsArgs :: Args +perfJsArgs = sourceArgs SourceArgs + { hsDefault = mconcat [ arg "-O2", arg "-H64m"] + , hsLibrary = arg "-O2" + , hsCompiler = arg "-O2" + , hsGhc = arg "-O2" + } diff --git a/hadrian/src/Settings/Flavours/Release.hs b/hadrian/src/Settings/Flavours/Release.hs index 67d9fc4506..2f3daadae1 100644 --- a/hadrian/src/Settings/Flavours/Release.hs +++ b/hadrian/src/Settings/Flavours/Release.hs @@ -5,11 +5,3 @@ import Flavour releaseFlavour :: Flavour releaseFlavour = enableHaddock performanceFlavour { name = "release" } - -releaseJsFlavour :: Flavour -releaseJsFlavour = disableDynamicLibs - . disableDynamicGhcPrograms - . disableProfiledLibs - . enableO2Stage0 - . useNativeBignum - $ performanceFlavour { name = "release-js" } diff --git a/hadrian/src/Way/Type.hs b/hadrian/src/Way/Type.hs index b205390d37..8a93ceddb3 100644 --- a/hadrian/src/Way/Type.hs +++ b/hadrian/src/Way/Type.hs @@ -1,5 +1,6 @@ +{-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE LambdaCase #-} module Way.Type where import Data.IntSet (IntSet) |