SysTools

ghc-8.2.2: The GHC API

Safe Haskell | None
Language | Haskell2010

SysTools

Synopsis

- initSysTools :: Maybe String -> IO Settings
- runUnlit :: DynFlags -> [Option] -> IO ()
- runCpp :: DynFlags -> [Option] -> IO ()
- runCc :: DynFlags -> [Option] -> IO ()
- runPp :: DynFlags -> [Option] -> IO ()
- runSplit :: DynFlags -> [Option] -> IO ()
- runAs :: DynFlags -> [Option] -> IO ()
- runLink :: DynFlags -> [Option] -> IO ()
- runLibtool :: DynFlags -> [Option] -> IO ()
- runMkDLL :: DynFlags -> [Option] -> IO ()
- runWindres :: DynFlags -> [Option] -> IO ()
- runLlvmOpt :: DynFlags -> [Option] -> IO ()
- runLlvmLlc :: DynFlags -> [Option] -> IO ()
- runClang :: DynFlags -> [Option] -> IO ()
- figureLlvmVersion :: DynFlags -> IO (Maybe (Int, Int))
- getLinkerInfo :: DynFlags -> IO LinkerInfo
- getCompilerInfo :: DynFlags -> IO CompilerInfo
- linkDynLib :: DynFlags -> [String] -> [InstalledUnitId] -> IO ()
- askLd :: DynFlags -> [Option] -> IO String
- touch :: DynFlags -> String -> String -> IO ()
- copy :: DynFlags -> String -> FilePath -> FilePath -> IO ()
- copyWithHeader :: DynFlags -> String -> Maybe String -> FilePath -> FilePath -> IO ()
- setTmpDir :: FilePath -> DynFlags -> DynFlags
- newTempName :: DynFlags -> Suffix -> IO FilePath
- newTempLibName :: DynFlags -> Suffix -> IO (FilePath, FilePath, String)
- cleanTempDirs :: DynFlags -> IO ()
- cleanTempFiles :: DynFlags -> IO ()
- cleanTempFilesExcept :: DynFlags -> [FilePath] -> IO ()
- addFilesToClean :: DynFlags -> [FilePath] -> IO ()
- data Option
  - = FileOption String String
  - | Option String
- libmLinkOpts :: [Option]
- getPkgFrameworkOpts :: DynFlags -> Platform -> [InstalledUnitId] -> IO [String]
- getFrameworkOpts :: DynFlags -> Platform -> [String]

# Documentation

initSysTools :: Maybe String -> IO Settings Source #

runUnlit :: DynFlags -> [Option] -> IO () Source #

runCpp :: DynFlags -> [Option] -> IO () Source #

runCc :: DynFlags -> [Option] -> IO () Source #

runPp :: DynFlags -> [Option] -> IO () Source #

runSplit :: DynFlags -> [Option] -> IO () Source #

runAs :: DynFlags -> [Option] -> IO () Source #

runLink :: DynFlags -> [Option] -> IO () Source #

runLibtool :: DynFlags -> [Option] -> IO () Source #

runMkDLL :: DynFlags -> [Option] -> IO () Source #

runWindres :: DynFlags -> [Option] -> IO () Source #

runLlvmOpt :: DynFlags -> [Option] -> IO () Source #

Run the LLVM Optimiser

runLlvmLlc :: DynFlags -> [Option] -> IO () Source #

Run the LLVM Compiler

runClang :: DynFlags -> [Option] -> IO () Source #

Run the clang compiler (used as an assembler for the LLVM backend on OS X as LLVM doesn't support the OS X system assembler)

figureLlvmVersion :: DynFlags -> IO (Maybe (Int, Int)) Source #

Figure out which version of LLVM we are running this session

getLinkerInfo :: DynFlags -> IO LinkerInfo Source #

getCompilerInfo :: DynFlags -> IO CompilerInfo Source #

linkDynLib :: DynFlags -> [String] -> [InstalledUnitId] -> IO () Source #

askLd :: DynFlags -> [Option] -> IO String Source #

Run the linker with some arguments and return the output

touch :: DynFlags -> String -> String -> IO () Source #

copy :: DynFlags -> String -> FilePath -> FilePath -> IO () Source #

copyWithHeader :: DynFlags -> String -> Maybe String -> FilePath -> FilePath -> IO () Source #

setTmpDir :: FilePath -> DynFlags -> DynFlags Source #

newTempName :: DynFlags -> Suffix -> IO FilePath Source #

newTempLibName :: DynFlags -> Suffix -> IO (FilePath, FilePath, String) Source #

cleanTempDirs :: DynFlags -> IO () Source #

cleanTempFiles :: DynFlags -> IO () Source #

cleanTempFilesExcept :: DynFlags -> [FilePath] -> IO () Source #

addFilesToClean :: DynFlags -> [FilePath] -> IO () Source #

data Option Source #

When invoking external tools as part of the compilation pipeline, we pass these a sequence of options on the command-line. Rather than just using a list of Strings, we use a type that allows us to distinguish between filepaths and 'other stuff'. The reason for this is that this type gives us a handle on transforming filenames, and filenames only, to whatever format they're expected to be on a particular platform.

Constructors

FileOption String String |
Option String |

Instances

Eq Option # |
Methods (==) :: Option -> Option -> Bool # (/=) :: Option -> Option -> Bool #

libmLinkOpts :: [Option] Source #

Some platforms require that we explicitly link against `libm` if any math-y things are used (which we assume to include all programs). See #14022.

getPkgFrameworkOpts :: DynFlags -> Platform -> [InstalledUnitId] -> IO [String] Source #

getFrameworkOpts :: DynFlags -> Platform -> [String] Source #