shake-language-c-0.8.2: Utilities for cross-compiling with Shake

Safe HaskellNone
LanguageHaskell98

Development.Shake.Language.C.ToolChain

Description

Documentation

data Linkage Source

Linkage type, static or shared.

Constructors

Instances

Working with toolchains

data ToolChain Source

data ToolChainVariant Source

Toolchain variant.

Constructors

Generic

Unspecified toolchain

GCC

GNU Compiler Collection (gcc) toolchain

LLVM

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.

type Compiler Source

Arguments

= 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 :: forall cat. ArrowApply cat => Lens cat ToolChain Compiler Source

Compiler action for this ToolChain .

archiverCommand :: forall cat. ArrowApply cat => Lens cat ToolChain FilePath Source

Archiver command, usually used in the archiver action.

type Archiver Source

Arguments

= 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 :: forall cat. ArrowApply cat => Lens cat ToolChain Archiver Source

Archiver action for this ToolChain .

linkerCommand :: forall cat. ArrowApply cat => Lens cat ToolChain FilePath Source

Linker command, usually used in the linker action.

type Linker Source

Arguments

= 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

Constructors

Executable

Executable

SharedLibrary

Shared (dynamically linked) library

LoadableLibrary

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 C compiler.
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 the C 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.

toolFromString Source

Arguments

:: ToolChain

Toolchain

-> String

Command name

-> FilePath

Full command path

Given a tool chain command name, construct the command's full path, taking into account the toolchain's toolPrefix .

tool Source

Arguments

:: ToolChain

Toolchain

-> (ToolChain :-> String)

Toolchain accessor

-> FilePath

Full command path

Construct the full path of a predefined tool given a ToolChain accessor.

AltStyle によって変換されたページ (->オリジナル) /