-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Open
Labels
A-configurationArea: cargo config files and env varsArea: cargo config files and env varsA-cross-compilingArea: using --target flag for other platformsArea: using --target flag for other platformsC-feature-requestCategory: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`Category: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`S-needs-designStatus: Needs someone to work further on the design for the feature or fix. NOT YET accepted.Status: Needs someone to work further on the design for the feature or fix. NOT YET accepted.
Description
Problem
Cargo defaults to compiling for the host's target triple, which is appropriate for most cases, particularly because this is the only (default) way to build tests that can be run. However, once the target
has been overridden by configuration, there is no way to explicitly request on the command line that it be the host.
Proposed Solution
Wherever a target triple is accepted, accept the special string host
as an alias for the host platform's target triple.
Notes
Use cases:
- Any build automation that wishes to work with different target triples can unconditionally pass a string without needing a special “absent” case.
- Library code that supports
no_std
, or is concerned with other platform limitations such as pointer width and atomics, could have an accompanying configuration file which automatically builds for the host, for testing, and another target, as a compatibility check; e.g.build.target = ["host", "thumbv7em-none-eabihf"]
. - This could be used as
cargo test --target=host
to run some platform-independent tests in a package otherwise devoted to being cross-compiled (such that itsconfig.toml
has atarget
specified to enable IDE support and better default behaviors). --target=host
will not be identical to the behavior with no options specified, due to the behavior differences triggered by using--target
at all. This feature will introduce a way to trigger that intentionally without also needing to specify a particular target. This could be considered an alternative totarget-applies-to-host = false
, but specifically does not introduce any new semantics that are not currently obtainable by--target=<whatever the host triple is>
.
Qix-, bravely-beep, Tudyx and BlueGreenMagick
Metadata
Metadata
Assignees
Labels
A-configurationArea: cargo config files and env varsArea: cargo config files and env varsA-cross-compilingArea: using --target flag for other platformsArea: using --target flag for other platformsC-feature-requestCategory: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`Category: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`S-needs-designStatus: Needs someone to work further on the design for the feature or fix. NOT YET accepted.Status: Needs someone to work further on the design for the feature or fix. NOT YET accepted.