module UHC.Light.Compiler.EHC.Main.Utils
( module UHC.Light.Compiler.EHC.FileSuffMp
, module UHC.Light.Compiler.Opts
, handleImmQuitOption )
where
import UHC.Light.Compiler.EHC.Common
import UHC.Light.Compiler.EHC.FileSuffMp
import qualified UHC.Light.Compiler.Config as Cfg
import UHC.Light.Compiler.Opts
import System.Console.GetOpt
import System.Environment
import UHC.Light.Compiler.Base.Target
import UHC.Light.Compiler.Base.Optimize (allOptimizeMp)
import qualified UHC.Light.Compiler.SourceCodeSig as Sig
handleImmQuitOption :: GetOptCmdLineOpts -> [String] -> ImmediateQuitOption -> EHCOpts -> IO ()
handleImmQuitOption cmdLineOpts inputSuffixes immq opts
= case immq of
ImmediateQuitOption_Help
-> do {
let progName = fpathToStr (ehcProgName opts)
; putStrLn (usageInfo ( "version: " ++ Cfg.verInfo Cfg.version ++ ", aspects: " ++ ehcOptAspects opts
++ "\n\nUsage: " ++ progName ++ " [options] [file[" ++ (concat $ intersperse "|" $ map ('.':) inputSuffixes) ++ "] ...]\n\noptions:"
)
cmdLineOpts)
}
ImmediateQuitOption_Version
-> putStrLn $ Cfg.verInfo Cfg.version
++ ", timestamp " ++ Sig.timestamp
ImmediateQuitOption_Meta_Variant
-> putStrLn Cfg.ehcDefaultVariant
ImmediateQuitOption_Meta_Targets
-> putStr showSupportedTargets
ImmediateQuitOption_Meta_TargetDefault
-> putStr (show defaultTarget)
ImmediateQuitOption_Meta_Optimizations
-> putStr (showStringMapKeys allOptimizeMp " ")
ImmediateQuitOption_VersionDotted
-> putStrLn (Cfg.verFull Cfg.version)
ImmediateQuitOption_VersionAsNumber
-> putStrLn (Cfg.verAsNumber Cfg.version)
ImmediateQuitOption_Meta_Pkgdir_System
-> do { let d = Cfg.mkInstallPkgdirSystem opts
; putStrLn d
}
ImmediateQuitOption_Meta_Pkgdir_User
-> do { let d = Cfg.mkInstallPkgdirUser opts
; putStrLn d
}