Safe Haskell | None |
---|---|
Language | Haskell98 |
- 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.
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.
= ToolChain | Toolchain |
-> BuildFlags | Compiler flags |
-> FilePath | Input source file |
-> FilePath | Output object file |
-> Action () |
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.
= ToolChain | Toolchain |
-> BuildFlags | Archiver flags |
-> [FilePath] | Input object files |
-> FilePath | Output object archive (static library) |
-> Action () |
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.
= ToolChain | Toolchain |
-> BuildFlags | Linker flags |
-> [FilePath] | Input object files |
-> FilePath | Output link product |
-> Action () |
Action
type for linking object files into an executable or a library.
data LinkResult Source #
Link result type
Executable | Executable |
SharedLibrary | Shared (dynamically linked) library |
LoadableLibrary | Dynamically loadable library |
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
C
compiler. LD
- Path to linker.
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 theC
compiler 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
.