# Function cargo::core::compiler::build_context::target_info::extra_args

source ·

    fn extra_args(
        gctx: &GlobalContext,
        requested_kinds: &[CompileKind],
        host_triple: &str,
        target_cfg: Option<&[Cfg]>,
        kind: CompileKind,
        flags: Flags
    ) -> CargoResult<Vec<String>>

Expand description

Acquire extra flags to pass to the compiler from various locations.

The locations are:

- the `CARGO_ENCODED_RUSTFLAGS` environment variable
- the `RUSTFLAGS` environment variable

then if none of those were found

- `target.*.rustflags` from the config (.cargo/config)
- `target.cfg(..).rustflags` from the config
- `host.*.rustflags` from the config if compiling a host artifact or without `--target` (requires `-Zhost-config`)

then if none of those were found

- `build.rustflags` from the config

The behavior differs slightly when cross-compiling (or, specifically, when `--target` is provided) for artifacts that are always built for the host (plugins, build scripts, …). For those artifacts, only `host.*.rustflags` is respected, and no other configuration sources, regardless of the value of `target-applies-to-host`. This is counterintuitive, but necessary to retain backwards compatibility with older versions of Cargo.

Rules above also applies to rustdoc. Just the key would be `rustdocflags`/`RUSTDOCFLAGS`.