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 = "5" , verQuality = "alpha" , verShort = "1.1" , verMedium = "1.1.9" , verFull = "1.1.9.5" , verAsNumber = "1010905" , 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"