summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoyougnu <jeffrey.young@iohk.io>2022-11-02 21:03:22 -0400
committerSylvain Henry <sylvain@haskus.fr>2022-11-07 12:00:41 +0100
commit83752133f4c7dc76f7b01079ac7d9f9b55e2ef77 (patch)
tree6b8cf2faf678da409298a5dee0c99d8e044a70f6
parent0b5078c660c7a0b9ada34c18f56beb6509c8ebbf (diff)
downloadhaskell-83752133f4c7dc76f7b01079ac7d9f9b55e2ef77.tar.gz
Hadrian: add Flavours.JavaScript
Better Cohesion.
-rw-r--r--hadrian/hadrian.cabal1
-rwxr-xr-xhadrian/src/Settings.hs3
-rw-r--r--hadrian/src/Settings/Flavours/JavaScript.hs57
-rw-r--r--hadrian/src/Settings/Flavours/Release.hs8
-rw-r--r--hadrian/src/Way/Type.hs3
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)