[commit: ghc] wip/nfs-locking: Add support for new configuration flags. (8e74ca7)
git at git.haskell.org
git at git.haskell.org
Thu Oct 26 23:38:07 UTC 2017
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/nfs-locking
Link : http://ghc.haskell.org/trac/ghc/changeset/8e74ca7b158cb0a3fd7413b1b6646fa2cdbcb1a7/ghc
>---------------------------------------------------------------
commit 8e74ca7b158cb0a3fd7413b1b6646fa2cdbcb1a7
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date: Mon Sep 21 01:02:39 2015 +0100
Add support for new configuration flags.
>---------------------------------------------------------------
8e74ca7b158cb0a3fd7413b1b6646fa2cdbcb1a7
src/Oracles/Config/Setting.hs | 55 ++++++++++++++++++++++++++++---------------
1 file changed, 36 insertions(+), 19 deletions(-)
diff --git a/src/Oracles/Config/Setting.hs b/src/Oracles/Config/Setting.hs
index f0f7fb7..a01a7fa 100644
--- a/src/Oracles/Config/Setting.hs
+++ b/src/Oracles/Config/Setting.hs
@@ -3,7 +3,7 @@ module Oracles.Config.Setting (
setting, settingList, getSetting, getSettingList,
targetPlatform, targetPlatforms, targetOs, targetOss, notTargetOs,
targetArchs, windowsHost, notWindowsHost, ghcWithInterpreter,
- ghcEnableTablesNextToCode, cmdLineLengthLimit
+ ghcEnableTablesNextToCode, ghcCanonVersion, cmdLineLengthLimit
) where
import Base
@@ -16,32 +16,42 @@ import Stage
-- SettingList is used for multiple string values separated by spaces, such
-- as 'gmp-include-dirs = a b'.
-- settingList GmpIncludeDirs therefore returns a list of strings ["a", "b"].
-data Setting = TargetOs
+data Setting = DynamicExtension
+ | GhcMajorVersion
+ | GhcMinorVersion
+ | GhcPatchLevel
+ | GhcSourcePath
+ | HostArch
+ | HostOs
+ | ProjectVersion
+ | ProjectVersionInt
| TargetArch
+ | TargetOs
| TargetPlatformFull
- | HostOsCpp
- | DynamicExtension
- | ProjectVersion
- | GhcSourcePath
data SettingList = ConfCcArgs Stage
+ | ConfCppArgs Stage
| ConfGccLinkerArgs Stage
| ConfLdLinkerArgs Stage
- | ConfCppArgs Stage
- | IconvIncludeDirs
- | IconvLibDirs
| GmpIncludeDirs
| GmpLibDirs
+ | IconvIncludeDirs
+ | IconvLibDirs
setting :: Setting -> Action String
setting key = askConfig $ case key of
- TargetOs -> "target-os"
- TargetArch -> "target-arch"
- TargetPlatformFull -> "target-platform-full"
- HostOsCpp -> "host-os-cpp"
DynamicExtension -> "dynamic-extension"
- ProjectVersion -> "project-version"
+ GhcMajorVersion -> "ghc-major-version"
+ GhcMinorVersion -> "ghc-minor-version"
+ GhcPatchLevel -> "ghc-patch-level"
GhcSourcePath -> "ghc-source-path"
+ HostArch -> "host-arch"
+ HostOs -> "host-os"
+ ProjectVersion -> "project-version"
+ ProjectVersionInt -> "project-version-int"
+ TargetArch -> "target-arch"
+ TargetOs -> "target-os"
+ TargetPlatformFull -> "target-platform-full"
settingList :: SettingList -> Action [String]
settingList key = fmap words $ askConfig $ case key of
@@ -49,10 +59,10 @@ settingList key = fmap words $ askConfig $ case key of
ConfCppArgs stage -> "conf-cpp-args-stage" ++ show stage
ConfGccLinkerArgs stage -> "conf-gcc-linker-args-stage" ++ show stage
ConfLdLinkerArgs stage -> "conf-ld-linker-args-stage" ++ show stage
- IconvIncludeDirs -> "iconv-include-dirs"
- IconvLibDirs -> "iconv-lib-dirs"
GmpIncludeDirs -> "gmp-include-dirs"
GmpLibDirs -> "gmp-lib-dirs"
+ IconvIncludeDirs -> "iconv-include-dirs"
+ IconvLibDirs -> "iconv-lib-dirs"
getSetting :: Setting -> ReaderT a Action String
getSetting = lift . setting
@@ -84,9 +94,7 @@ targetArchs :: [String] -> Action Bool
targetArchs = matchSetting TargetArch
windowsHost :: Action Bool
-windowsHost = do
- hostOsCpp <- setting HostOsCpp
- return $ hostOsCpp `elem` ["mingw32", "cygwin32"]
+windowsHost = matchSetting HostOs ["mingw32", "cygwin32"]
notWindowsHost :: Action Bool
notWindowsHost = fmap not windowsHost
@@ -103,6 +111,15 @@ ghcWithInterpreter = do
ghcEnableTablesNextToCode :: Action Bool
ghcEnableTablesNextToCode = targetArchs ["ia64", "powerpc64"]
+-- Canonicalised GHC version number, used for integer version comparisons. We
+-- expand GhcMinorVersion to two digits by adding a leading zero if necessary.
+ghcCanonVersion :: Action String
+ghcCanonVersion = do
+ ghcMajorVersion <- setting GhcMajorVersion
+ ghcMinorVersion <- setting GhcMinorVersion
+ let leadingZero = [ '0' | length ghcMinorVersion == 1 ]
+ return $ ghcMajorVersion ++ leadingZero ++ ghcMinorVersion
+
-- Command lines have limited size on Windows. Since Windows 7 the limit is
-- 32768 characters (theoretically). In practice we use 31000 to leave some
-- breathing space for the builder's path & name, auxiliary flags, and other
More information about the ghc-commits
mailing list