Bump Cabal upper bound (#651)
[hadrian.git] / src / UserSettings.hs
index a0a5d49..e52ed68 100644 (file)
@@ -3,63 +3,55 @@
 -- If you don't copy the file your changes will be tracked by git and you can
 -- accidentally commit them.
 module UserSettings (
-    buildRootPath, userFlavours, userKnownPackages, integerLibrary, validating,
-    turnWarningsIntoErrors, verboseCommands, putBuild, putSuccess
+    userFlavours, userPackages, verboseCommand,
+    buildProgressColour, successColour, stage1Only
     ) where
 
-import System.Console.ANSI
-
-import Base
 import Flavour
-import GHC
-import Predicate
+import Expression
+import {-# SOURCE #-} Settings.Default
 
--- TODO: Update the docs.
 -- See doc/user-settings.md for instructions.
+-- Please update doc/user-settings.md when committing changes to this file.
 
--- | All build results are put into 'buildRootPath' directory.
-buildRootPath :: FilePath
-buildRootPath = "_build"
-
--- | User defined build flavours. See 'defaultFlavour' as an example.
+-- | User-defined build flavours. See 'userFlavour' as an example.
 userFlavours :: [Flavour]
-userFlavours = []
+userFlavours = [userFlavour] -- Add more build flavours if need be.
+
+-- | This is an example user-defined build flavour. Feel free to modify it and
+-- use by passing @--flavour=user@ from the command line.
+userFlavour :: Flavour
+userFlavour = defaultFlavour { name = "user" } -- Modify other settings here.
 
--- | Add user defined packages. Note, this only let's Hadrian know about the
+-- | Add user-defined packages. Note, this only lets Hadrian know about the
 -- existence of a new package; to actually build it you need to create a new
 -- build flavour, modifying the list of packages that are built by default.
-userKnownPackages :: [Package]
-userKnownPackages = []
-
--- | Choose the integer library: 'integerGmp' or 'integerSimple'.
-integerLibrary :: Package
-integerLibrary = integerGmp
-
--- | User defined flags. Note the following type semantics:
--- * @Bool@: a plain Boolean flag whose value is known at compile time.
--- * @Action Bool@: a flag whose value can depend on the build environment.
--- * @Predicate@: a flag whose value can depend on the build environment and
--- on the current build target.
-
--- TODO: This should be set automatically when validating.
-validating :: Bool
-validating = False
-
--- TODO: Replace with stage2 ? arg "-Werror"? Also see #251.
--- | To enable -Werror in Stage2 set turnWarningsIntoErrors = stage2.
-turnWarningsIntoErrors :: Predicate
-turnWarningsIntoErrors = return False
-
--- | Set to True to print full command lines during the build process. Note,
--- this is a Predicate, hence you can enable verbose output only for certain
--- targets, e.g.: @verboseCommands = package ghcPrim@.
-verboseCommands :: Predicate
-verboseCommands = return False
-
--- | Customise build progress messages (e.g. executing a build command).
-putBuild :: String -> Action ()
-putBuild = putColoured Dull Magenta
-
--- | Customise build success messages (e.g. a package is built successfully).
-putSuccess :: String -> Action ()
-putSuccess = putColoured Dull Green
+userPackages :: [Package]
+userPackages = []
+
+-- | Set to 'True' to print full command lines during the build process. Note:
+-- this is a 'Predicate', hence you can enable verbose output only for certain
+-- targets, e.g.: @verboseCommand = package ghcPrim@.
+verboseCommand :: Predicate
+verboseCommand = do
+    verbosity <- expr getVerbosity
+    return $ verbosity >= Loud
+
+-- | Set colour for build progress messages (e.g. executing a build command).
+buildProgressColour :: BuildProgressColour
+buildProgressColour = mkBuildProgressColour (Dull Magenta)
+
+-- | Set colour for success messages (e.g. a package is built successfully).
+successColour :: SuccessColour
+successColour = mkSuccessColour (Dull Green)
+
+-- TODO: Set this flag from the command line.
+-- | Set this flag to 'True' to disable building Stage2 GHC (i.e. the @ghc-stage2@
+-- executable) and Stage2 utilities (such as @haddock@). Note that all Stage0
+-- and Stage1 libraries (including 'compiler') will still be built. Enabling
+-- this flag during installation leads to installing @ghc-stage1@ instead of
+-- @ghc-stage2@, and @ghc-pkg@ that was build with the Stage0 compiler.
+-- Also see Note [No stage2 packages when CrossCompiling or Stage1Only] in the
+-- top-level @ghc.mk@.
+stage1Only :: Bool
+stage1Only = False