uhc-light-1.1.9.3: src/UHC/Light/Compiler/Config.hs
module UHC.Light.Compiler.Config
( module UHC.Light.Compiler.ConfigInstall
, Version (..)
, version
, verInfo
, module UHC.Light.Compiler.ConfigDefines
, installRoot
, installVariant
, mkInstallFilePrefix
, mkInstallBindirPrefix
, mkInstalledRts
, shellCmdGcc
, libnamesGcc
, libnamesRts
, ehcGccOptsStatic, ehcGccOptsStatic'
, libnamesGccEhcExtraExternalLibs
, mbSuffixExec, linkerSymbolPrefix
, suffixDotlessBinaryCoreRun, suffixDotlessInputOutputBinaryCoreRun, suffixDotlessOutputTextualCoreRun, suffixDotlessInputOutputTextualCoreRun
, suffixDotlessBinaryCore, suffixDotlessInputOutputBinaryCore, suffixDotlessOutputTextualCore, suffixDotlessInputOutputTextualCore, suffixDotlessOutputTextualCoreAST
, suffixDotlessOutputTextualEh, suffixDotlessOutputTextualEhAST
, suffixDotlessInputOutputCoreRun
, mkInstallPkgdirSystem
, mkInstallPkgdirUser
, shellCmdOverride
, shellCmdCpp
, shellCmdAr
, shellCmdRanlib
, shellCmdLibtoolStatic
, shellCmdLibtoolStaticOpts
, mkShellCmdLibtool )
where
import UHC.Light.Compiler.ConfigInstall
import Data.Maybe
import Data.List
import UHC.Util.Utils
import UHC.Util.FPath
import qualified Data.Map as Map
import UHC.Light.Compiler.Opts.CommandLine
import UHC.Light.Compiler.ConfigDefines
import UHC.Light.Compiler.Opts.Base
import UHC.Light.Compiler.EHC.Environment
{-# LINE 34 "src/ehc/Config.chs" #-}
data Version
= Version
{ verSvnRevision :: !String
, verMajor :: !String
, verMinor :: !String
, verMinorMinor :: !String
, verMinorMinorMinor :: !String
, verQuality :: !String
, verShort :: !String
, verMedium :: !String
, verFull :: !String
, verAsNumber :: !String
, verProg :: !String
}
{-# LINE 55 "src/ehc/Config.chs" #-}
version :: Version
version
= Version
{ verSvnRevision = ehcSvnRevision
, verMajor = "1"
, verMinor = "1"
, verMinorMinor = "9"
, verMinorMinorMinor = "3"
, verQuality = "alpha"
, verShort = "1.1"
, verMedium = "1.1.9"
, verFull = "1.1.9.3"
, verAsNumber = "1010903"
, verProg = "ehc"
}
{-# LINE 77 "src/ehc/Config.chs" #-}
verInfo :: Version -> String
verInfo v =
verProg v ++ "-" ++ verFull v ++ ", revision " ++ verSvnRevision v
{-# LINE 90 "src/ehc/Config.chs" #-}
installRoot :: EHCOpts -> String
installRoot opts
= maybe envroot id (ehcOptCfgInstallRoot opts)
where envroot = ehcenvInstallRoot $ ehcOptEnvironment opts
{-# LINE 101 "src/ehc/Config.chs" #-}
installVariant :: EHCOpts -> String
installVariant opts
= maybe envvariant id (ehcOptCfgInstallVariant opts)
where envvariant = ehcenvVariant $ ehcOptEnvironment opts
{-# LINE 116 "src/ehc/Config.chs" #-}
mkInstallFilePrefix :: EHCOpts -> WhatInstallFile -> String -> String -> String
mkInstallFilePrefix opts whatfile variant pkg
= mkDirbasedInstallPrefix (installRoot opts) whatfile variant (show $ ehcOptTarget opts) pkg
{-# LINE 122 "src/ehc/Config.chs" #-}
mkInstallBindirPrefix :: EHCOpts -> String -> String
mkInstallBindirPrefix opts variant
= mkDirbasedInstallPrefix (installRoot opts) INST_BIN variant "" ""
{-# LINE 128 "src/ehc/Config.chs" #-}
mkInstallPkgdirSystem :: EHCOpts -> String
mkInstallPkgdirSystem opts
= filePathUnPrefix $ mkInstallFilePrefix opts INST_LIB_PKG2 (installVariant opts) ""
{-# LINE 134 "src/ehc/Config.chs" #-}
mkInstallPkgdirUser :: EHCOpts -> String
mkInstallPkgdirUser opts
= filePathCoalesceSeparator $ filePathUnPrefix $ mkDirbasedInstallPrefix (ehcOptUserDir opts) INST_LIB_PKG2 "" (show $ ehcOptTarget opts) ""
{-# LINE 140 "src/ehc/Config.chs" #-}
-- | construct path for RTS
mkInstalledRts :: EHCOpts -> (String -> String -> String) -> WhatInstallFile -> String -> String -> String
mkInstalledRts opts mkLib how variant rts = mkLib (mkInstallFilePrefix opts how variant rts) rts
{-# LINE 150 "src/ehc/Config.chs" #-}
shellCmdOverride'' :: (cmd -> Maybe FilePath) -> FilePath -> cmd -> FilePath
shellCmdOverride'' override base cmd = maybe base id $ override cmd
shellCmdOverride' :: Ord cmd => Map.Map cmd FilePath -> FilePath -> cmd -> FilePath
shellCmdOverride' override = shellCmdOverride'' (flip Map.lookup override)
shellCmdOverride :: EHCOpts -> FilePath -> PgmExec -> FilePath
shellCmdOverride opts = shellCmdOverride' (ehcOptPgmExecMp opts)
{-# LINE 161 "src/ehc/Config.chs" #-}
shellCmdGcc :: String
shellCmdGcc = "/usr/bin/gcc"
{-# LINE 186 "src/ehc/Config.chs" #-}
shellCmdCpp :: String
shellCmdCpp = "/usr/bin/cpp"
{-# LINE 191 "src/ehc/Config.chs" #-}
shellCmdAr :: String
shellCmdAr = "/usr/bin/ar"
{-# LINE 196 "src/ehc/Config.chs" #-}
shellCmdRanlib :: String
shellCmdRanlib = "/usr/bin/ranlib -c"
{-# LINE 201 "src/ehc/Config.chs" #-}
shellCmdLibtoolStatic :: String
shellCmdLibtoolStatic = "/usr/bin/libtool"
{-# LINE 206 "src/ehc/Config.chs" #-}
shellCmdLibtoolStaticOpts :: String
shellCmdLibtoolStaticOpts = "-static -o"
{-# LINE 211 "src/ehc/Config.chs" #-}
mkShellCmdLibtool :: String -> [String] -> [[String]]
mkShellCmdLibtool archive files
= if True -- "/usr/bin/libtool" == "no"
then [ [shellCmdAr,"-r","-s",archive] ++ files
-- , [shellCmdRanlib,archive]
]
else [ [shellCmdLibtoolStatic,shellCmdLibtoolStaticOpts,archive] ++ files
]
{-# LINE 226 "src/ehc/Config.chs" #-}
libnamesGcc :: EHCOpts -> [String]
libnamesGcc opts
= [ ]
++ (if useBoehmGC opts
then [ "gc" ]
else []
)
++ (if mpLib == MPLib_GMP
then [ "gmp" ]
else []
)
{-# LINE 244 "src/ehc/Config.chs" #-}
libnamesRts :: [String]
libnamesRts
= [ prefixLib ++ "EH-RTS"]
{-# LINE 250 "src/ehc/Config.chs" #-}
ehcGccOptsStatic' :: CmdLineOpts
ehcGccOptsStatic' = fst $ parseCmdLineOpts Cmd_C ""
ehcGccOptsStatic :: [String]
ehcGccOptsStatic = map show ehcGccOptsStatic'
{-# LINE 271 "src/ehc/Config.chs" #-}
libnamesGccEhcExtraExternalLibs :: [String]
libnamesGccEhcExtraExternalLibs
= words
( ""
++ " m"
)
{-# LINE 286 "src/ehc/Config.chs" #-}
prefixLib :: String
prefixLib = ""
{-# LINE 291 "src/ehc/Config.chs" #-}
suffixExec :: String
suffixExec = ""
mbSuffixExec :: Maybe String
mbSuffixExec
= case suffixExec of
('.':s) -> Just s
"" -> Nothing
s -> Just s
linkerSymbolPrefix :: String
linkerSymbolPrefix = "_"
{-# LINE 307 "src/ehc/Config.chs" #-}
-- | Suffix (dotless) for binary corerun files, to be read in as part of the compilation process
suffixDotlessBinaryCoreRun :: String
suffixDotlessBinaryCoreRun = "crr"
-- | Suffix (dotless) for binary dumped/output corerun files
suffixDotlessInputOutputBinaryCoreRun :: String
suffixDotlessInputOutputBinaryCoreRun = "bcrr"
-- | Suffix (dotless) for textually dumped/output corerun files
suffixDotlessOutputTextualCoreRun :: String
suffixDotlessOutputTextualCoreRun = "tcrr"
-- | Suffix (dotless) for textually read corerun files
suffixDotlessInputOutputTextualCoreRun :: String
suffixDotlessInputOutputTextualCoreRun = suffixDotlessOutputTextualCoreRun
{-# LINE 325 "src/ehc/Config.chs" #-}
-- | Suffix (dotless) for binary core files, to be read in as part of the compilation process
suffixDotlessBinaryCore :: String
suffixDotlessBinaryCore = "cr"
-- | Suffix (dotless) for binary dumped/output core files
suffixDotlessInputOutputBinaryCore :: String
suffixDotlessInputOutputBinaryCore = "bcr"
-- | Suffix (dotless) for textually dumped/output core files
suffixDotlessOutputTextualCore :: String
suffixDotlessOutputTextualCore = "tcr"
-- | Suffix (dotless) for textually read core files
suffixDotlessInputOutputTextualCore :: String
suffixDotlessInputOutputTextualCore = suffixDotlessOutputTextualCore
-- | Suffix (dotless) for textually dumped/output Core AST files
suffixDotlessOutputTextualCoreAST :: String
suffixDotlessOutputTextualCoreAST = "astcr"
{-# LINE 348 "src/ehc/Config.chs" #-}
-- | Suffix (dotless) for textually dumped/output EH files
suffixDotlessOutputTextualEh :: String
suffixDotlessOutputTextualEh = "teh"
-- | Suffix (dotless) for textually dumped/output EH AST files
suffixDotlessOutputTextualEhAST :: String
suffixDotlessOutputTextualEhAST = "asteh"
{-# LINE 358 "src/ehc/Config.chs" #-}
-- | Suffix (dotless) for CoreRun files
suffixDotlessInputOutputCoreRun :: String
suffixDotlessInputOutputCoreRun = "rcr"