From d7d83de898533becaa57622cd06e012fe7d17f5d Mon Sep 17 00:00:00 2001 From: Julie Schwartz Date: Sat, 24 Feb 2024 23:51:42 +1300 Subject: [PATCH] Fix Bluetcl use of GHC macros, for older GHC The __GLASGOW_HASKELL_FULL_VERSION__ CPP macro was introduced in 9.0, so for earlier versions, we need to construct it from other macros that have existed since at least 7.10. --- src/comp/bluetcl.hs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/comp/bluetcl.hs b/src/comp/bluetcl.hs index 08dd1815..7353ebcb 100644 --- a/src/comp/bluetcl.hs +++ b/src/comp/bluetcl.hs @@ -415,9 +415,24 @@ versionGrammar = (tclcmd "version" namespace helpStr longHelpStr) .+. versionNum :: [String] -> IO HTclObj versionNum [] = versionNum ["bsc"] versionNum ["bsc"] = return $ TLst [TStr versionname, TStr buildVersion] -versionNum ["ghc"] = return $ TStr __GLASGOW_HASKELL_FULL_VERSION__ +versionNum ["ghc"] = return $ TStr ghcVersionStr versionNum xs = internalError $ "versionNum: grammar mismatch: " ++ (show xs) +ghcVersionStr :: String +#if defined(__GLASGOW_HASKELL_FULL_VERSION__) +ghcVersionStr = __GLASGOW_HASKELL_FULL_VERSION__ +#else +ghcVersionStr = + let version_raw :: Int = __GLASGOW_HASKELL__ + (major, minor) :: (Int, Int) = version_raw `divMod` 100 +#if defined(__GLASGOW_HASKELL_PATCHLEVEL1__) + patch1 :: Int = __GLASGOW_HASKELL_PATCHLEVEL1__ + in show major ++ "." ++ show minor ++ "." ++ show patch1 +#else + in show major ++ "." ++ show minor +#endif +#endif + -------------------------------------------------------------------------------- -- flags