[commit: ghc] wip/nfs-locking: Generate includes/ghcversion.h (66f18be)
git at git.haskell.org
git at git.haskell.org
Thu Oct 26 23:48:13 UTC 2017
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/nfs-locking
Link : http://ghc.haskell.org/trac/ghc/changeset/66f18bec2737a73fc1b2387726e22a35ef6edd8a/ghc
>---------------------------------------------------------------
commit 66f18bec2737a73fc1b2387726e22a35ef6edd8a
Author: Moritz Angermann <moritz.angermann at gmail.com>
Date: Sun Dec 27 14:27:55 2015 +0800
Generate includes/ghcversion.h
This should be the final commit to fix #39.
>---------------------------------------------------------------
66f18bec2737a73fc1b2387726e22a35ef6edd8a
shaking-up-ghc.cabal | 1 +
src/Rules/Generate.hs | 2 ++
src/Rules/Generators/GhcVersionH.hs | 33 +++++++++++++++++++++++++++++++++
3 files changed, 36 insertions(+)
diff --git a/shaking-up-ghc.cabal b/shaking-up-ghc.cabal
index 941651b..0e60637 100644
--- a/shaking-up-ghc.cabal
+++ b/shaking-up-ghc.cabal
@@ -46,6 +46,7 @@ executable ghc-shake
, Rules.Generators.GhcAutoconfH
, Rules.Generators.GhcBootPlatformH
, Rules.Generators.GhcPlatformH
+ , Rules.Generators.GhcVersionH
, Rules.Generators.VersionHs
, Rules.Install
, Rules.Library
diff --git a/src/Rules/Generate.hs b/src/Rules/Generate.hs
index ccd059f..bc0089c 100644
--- a/src/Rules/Generate.hs
+++ b/src/Rules/Generate.hs
@@ -9,6 +9,7 @@ import Rules.Generators.ConfigHs
import Rules.Generators.GhcAutoconfH
import Rules.Generators.GhcBootPlatformH
import Rules.Generators.GhcPlatformH
+import Rules.Generators.GhcVersionH
import Rules.Generators.VersionHs
import Oracles.ModuleFiles
import Rules.Actions
@@ -107,6 +108,7 @@ generateRules :: Rules ()
generateRules = do
"includes/ghcautoconf.h" <~ generateGhcAutoconfH
"includes/ghcplatform.h" <~ generateGhcPlatformH
+ "includes/ghcversion.h" <~ generateGhcVersionH
where
file <~ gen = file %> \out -> generate out emptyTarget gen
diff --git a/src/Rules/Generators/GhcVersionH.hs b/src/Rules/Generators/GhcVersionH.hs
new file mode 100644
index 0000000..a45df55
--- /dev/null
+++ b/src/Rules/Generators/GhcVersionH.hs
@@ -0,0 +1,33 @@
+module Rules.Generators.GhcVersionH (generateGhcVersionH) where
+
+import Expression
+import Oracles
+
+generateGhcVersionH :: Expr String
+generateGhcVersionH = do
+ version <- getSetting ProjectVersionInt
+ patchLevel1 <- getSetting ProjectPatchLevel1
+ patchLevel2 <- getSetting ProjectPatchLevel2
+ return . unlines $
+ [ "#ifndef __GHCVERSION_H__"
+ , "#define __GHCVERSION_H__"
+ , ""
+ , "#ifndef __GLASGOW_HASKELL__"
+ , "# define __GLASGOW_HASKELL__ " ++ version
+ , "#endif"
+ , ""]
+ ++
+ [ "#define __GLASGOW_HASKELL_PATCHLEVEL1__ " ++ patchLevel1 | patchLevel1 /= "" ]
+ ++
+ [ "#define __GLASGOW_HASKELL_PATCHLEVEL2__ " ++ patchLevel2 | patchLevel2 /= "" ]
+ ++
+ [ ""
+ , "#define MIN_VERSION_GLASGOW_HASKELL(ma,mi,pl1,pl2) (\\"
+ , " ((ma)*100+(mi)) < __GLASGOW_HASKELL__ || \\"
+ , " ((ma)*100+(mi)) == __GLASGOW_HASKELL__ \\"
+ , " && (pl1) < __GLASGOW_HASKELL_PATCHLEVEL1__ || \\"
+ , " ((ma)*100+(mi)) == __GLASGOW_HASKELL__ \\"
+ , " && (pl1) == __GLASGOW_HASKELL_PATCHLEVEL1__ \\"
+ , " && (pl2) <= __GLASGOW_HASKELL_PATCHLEVEL2__ )"
+ , ""
+ , "#endif /* __GHCVERSION_H__ */" ]
More information about the ghc-commits
mailing list