Rules for defining toolchains

Rules

get_cc_toolchain

name

A unique name for this target.


get_haskell_toolchain

name

A unique name for this target.


get_nodejs_toolchain

name

A unique name for this target.


get_posix_toolchain

name

A unique name for this target.


Macros and Functions

get_cc_toolchain_impl

ctx


get_haskell_toolchain_impl

ctx


get_nodejs_toolchain_impl

ctx


get_posix_toolchain_impl

ctx


haskell_toolchain

Declare a compiler toolchain.

You need at least one of these declared somewhere in your BUILD files for the other rules to work. Once declared, you then need to register the toolchain using register_toolchains in your WORKSPACE file (see example below).

Examples

In a BUILD file:

haskell_toolchain(
    name = "ghc",
    version = "1.2.3",
    static_runtime = static_runtime,
    fully_static_link = fully_static_link,
    tools = ["@sys_ghc//:bin"],
    ghcopts = ["-Wall"],
)

where @sys_ghc is an external repository defined in the WORKSPACE, e.g. using:

nixpkgs_package(
    name = 'sys_ghc',
    attribute_path = 'haskell.compiler.ghc822',
)

register_toolchains("//:ghc")

name

A unique name for this toolchain.

version

Version of your GHC compiler. It has to match the version reported by the GHC used by bazel.

static_runtime

Whether GHC was linked with a static runtime.

Whether GHC should build fully-statically-linked binaries.

tools

GHC and executables that come with it. First item takes precedence.

libraries

The set of libraries that come with GHC. Requires haskell_import targets.

asterius_binaries

An optional filegroup containing asterius binaries. If present the toolchain will target WebAssembly and only use binaries from tools if needed to complete the toolchain.

compiler_flags

DEPRECATED. Use new name ghcopts.

ghcopts

A collection of flags that will be passed to GHC on every invocation.

repl_ghci_args

A collection of flags that will be passed to GHCI on repl invocation. It extends the ghcopts collection.
Flags set here have precedance over ghcopts.

haddock_flags

A collection of flags that will be passed to haddock.

cabalopts

Additional flags to pass to Setup.hs configure for all Cabal rules.
Note, Cabal rules do not read the toolchain attributes ghcopts, compiler_flags or haddock_flags.
Use --ghc-option=OPT to configure additional compiler flags.
Use --haddock-option=OPT to configure additional haddock flags.
Use --haddock-option=--optghc=OPT if haddock generation requires additional compiler flags.

locale_archive

Label pointing to the locale archive file to use.
Linux-specific and mostly useful on NixOS.

kwargs

Common rule attributes. See Bazel documentation.


rules_haskell_toolchains

Register GHC binary distributions for all platforms as toolchains.

Toolchains can be used to compile Haskell code. This function registers one toolchain for each known binary distribution on all platforms of the given GHC version. During the build, one toolchain will be selected based on the host and target platforms (See toolchain resolution).

version

The desired GHC version

compiler_flags

DEPRECATED. Use new name ghcopts.

ghcopts

A collection of flags that will be passed to GHC on every invocation.

haddock_flags

repl_ghci_args

cabalopts

locale

Locale that will be set during compiler invocations. Default: C.UTF-8 (en_US.UTF-8 on MacOS)