| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Development.Shake.Language.C.ToolChain
Contents
Description
Synopsis
- data Linkage
- data ToolChain
- data ToolChainVariant
- toolDirectory :: forall cat. ArrowApply cat => Lens cat ToolChain (Maybe FilePath)
- toolPrefix :: forall cat. ArrowApply cat => Lens cat ToolChain String
- variant :: forall cat. ArrowApply cat => Lens cat ToolChain ToolChainVariant
- compilerCommand :: forall cat. ArrowApply cat => Lens cat ToolChain FilePath
- type Compiler = ToolChain -> BuildFlags -> FilePath -> FilePath -> Action ()
- compiler :: forall cat. ArrowApply cat => Lens cat ToolChain Compiler
- archiverCommand :: forall cat. ArrowApply cat => Lens cat ToolChain FilePath
- type Archiver = ToolChain -> BuildFlags -> [FilePath] -> FilePath -> Action ()
- archiver :: forall cat. ArrowApply cat => Lens cat ToolChain Archiver
- linkerCommand :: forall cat. ArrowApply cat => Lens cat ToolChain FilePath
- type Linker = ToolChain -> BuildFlags -> [FilePath] -> FilePath -> Action ()
- data LinkResult
- linker :: forall cat. ArrowApply cat => Lens cat ToolChain (LinkResult -> Linker)
- defaultBuildFlags :: forall cat. ArrowApply cat => Lens cat ToolChain (Action (BuildFlags -> BuildFlags))
- applyEnv :: ToolChain -> Action ToolChain
- toEnv :: ToolChain -> Action [(String, String)]
- defaultToolChain :: ToolChain
- defaultCompiler :: Compiler
- defaultArchiver :: Archiver
- defaultLinker :: Linker
- toolFromString :: ToolChain -> String -> FilePath
- tool :: ToolChain -> (ToolChain :-> String) -> FilePath
Documentation
Linkage type, static or shared.
Working with toolchains
data ToolChainVariant Source
Toolchain variant.
Constructors
Unspecified toolchain
GNU Compiler Collection (gcc) toolchain
Low-Level Virtual Machine (LLVM) toolchain
Instances
toolDirectory :: forall cat. ArrowApply cat => Lens cat ToolChain (Maybe FilePath) Source
Directory prefix for tools in a ToolChain , e.g. /usr/local/linux-armv5-eabi/bin.
toolPrefix :: forall cat. ArrowApply cat => Lens cat ToolChain String Source
Prefix string for tools in a ToolChain , e.g. "linux-armv5-eabi-".
variant :: forall cat. ArrowApply cat => Lens cat ToolChain ToolChainVariant Source
Toolchain variant.
compilerCommand :: forall cat. ArrowApply cat => Lens cat ToolChain FilePath Source
Compiler command, usually used in the compiler action.
Arguments
Toolchain
Compiler flags
Input source file
Output object file
Action type for producing an object file from a source file.
Compiler action for this ToolChain .
archiverCommand :: forall cat. ArrowApply cat => Lens cat ToolChain FilePath Source
Archiver command, usually used in the archiver action.
Arguments
Toolchain
Archiver flags
Input object files
Output object archive (static library)
Action type for archiving object files into a static library.
Archiver action for this ToolChain .
linkerCommand :: forall cat. ArrowApply cat => Lens cat ToolChain FilePath Source
Linker command, usually used in the linker action.
Arguments
Toolchain
Linker flags
Input object files
Output link product
Action type for linking object files into an executable or a library.
data LinkResult Source
Link result type
Constructors
Executable
Shared (dynamically linked) library
Dynamically loadable library
Instances
linker :: forall cat. ArrowApply cat => Lens cat ToolChain (LinkResult -> Linker) Source
Linker action for this ToolChain .
defaultBuildFlags :: forall cat. ArrowApply cat => Lens cat ToolChain (Action (BuildFlags -> BuildFlags)) Source
Action returning the default BuildFlags for this ToolChain .
Interfacing with other build systems
applyEnv :: ToolChain -> Action ToolChain Source
Apply the current environment and return a modified toolchain.
This function is experimental and subject to change!
Currently recognised environment variables are
CC- Path to
Ccompiler. SHAKE_TOOLCHAIN_VARIANT- One of the values of
ToolChainVariant(case insensitive). If this variable is not present, an attempt is made to determine the toolchain variant from theCcompiler command.
toEnv :: ToolChain -> Action [(String, String)] Source
Export a ToolChain definition to a list of environment variable mappings, suitable e.g. for calling third-party configure scripts in cross-compilation mode.
Needs some fleshing out; currently only works for "standard" binutil toolchains.
Utilities for toolchain writers
defaultToolChain :: ToolChain Source
Default toolchain.
Probably not useful without modification.
defaultCompiler :: Compiler Source
Default compiler action.
defaultArchiver :: Archiver Source
Default archiver action.
defaultLinker :: Linker Source
Default linker action.
Given a tool chain command name, construct the command's full path, taking into account the toolchain's toolPrefix .