Open
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>
.