----------------------------------------------------------------------------- -- | -- Module : System.Info -- Copyright : (c) The University of Glasgow 2001 -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org -- Stability : experimental -- Portability : portable -- -- Information about the characteristics of the host -- system lucky enough to run your program. -- ----------------------------------------------------------------------------- module System.Info ( os, -- :: String arch, -- :: String compilerName, -- :: String compilerVersion -- :: Version ) where import Prelude import Data.Version -- | 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 -- | The operating system on which the program is running. os :: String -- | The machine architecture on which the program is running. arch :: String -- | The Haskell implementation with which the program was compiled -- or is being interpreted. compilerName :: String compilerVersionRaw :: Int #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