Use explicit language extensions & remove extension fields from base.cabal
[ghc-base.git] / System / Info.hs
index dfb3018..92da1a6 100644 (file)
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  System.Info
@@ -8,8 +10,8 @@
 -- Stability   :  experimental
 -- Portability :  portable
 --
--- Misc information about the characteristics of the host 
--- architecture\/machine lucky enough to run your program.
+-- Information about the characteristics of the host 
+-- system lucky enough to run your program.
 --
 -----------------------------------------------------------------------------
 
@@ -24,34 +26,43 @@ module System.Info
 import Prelude
 import Data.Version
 
-#ifndef __NHC__
+-- | The version of 'compilerName' with which the program was compiled
+-- or is being interpreted.
+compilerVersion :: Version
+compilerVersion = Version {versionBranch=[major, minor], versionTags=[]}
+  where (major, minor) = compilerVersionRaw `divMod` 100
 
-#include "ghcplatform.h"
+-- | The operating system on which the program is running.
+os :: String
 
+-- | The machine architecture on which the program is running.
 arch :: String
-arch = HOST_ARCH
 
-os :: String
-os = HOST_OS
+-- | The Haskell implementation with which the program was compiled
+-- or is being interpreted.
+compilerName :: String
 
-#else
-os,arch ::String
-#include "OSInfo.hs"
-#endif
+compilerVersionRaw :: Int
 
-compilerName :: String
 #if defined(__NHC__)
+#include "OSInfo.hs"
 compilerName = "nhc98"
+compilerVersionRaw = __NHC__
+
 #elif defined(__GLASGOW_HASKELL__)
+#include "ghcplatform.h"
+os = HOST_OS
+arch = HOST_ARCH
 compilerName = "ghc"
+compilerVersionRaw = __GLASGOW_HASKELL__
+
 #elif defined(__HUGS__)
+#include "platform.h"
+os = HOST_OS
+arch = HOST_ARCH
 compilerName = "hugs"
+compilerVersionRaw = 0  -- ToDo
+
 #else
 #error Unknown compiler name
 #endif
-
-compilerVersion :: Version
-#ifdef __GLASGOW_HASKELL__
-compilerVersion = Version {versionBranch=[maj,min], versionTags=[]}
-  where (maj,min) = __GLASGOW_HASKELL__ `divMod` 100
-#endif