mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-05 14:37:37 +00:00

Support `--print KIND=PATH` command line syntax As is already done for `--emit KIND=PATH` and `-L KIND=PATH`. In the discussion of #110785, it was pointed out that `--print KIND=PATH` is nicer than trying to apply the single global `-o` path to `--print`'s output, because in general there can be multiple print requests within a single rustc invocation, and anyway `-o` would already be used for a different meaning in the case of `link-args` and `native-static-libs`. I am interested in using `--print cfg=PATH` in Buck2. Currently Buck2 works around the lack of support for `--print KIND=PATH` by [indirecting through a Python wrapper script](d43cf3a51a/prelude/rust/tools/get_rustc_cfg.py
) to redirect rustc's stdout into the location dictated by the build system. From skimming Cargo's usages of `--print`, it definitely seems like it would benefit from `--print KIND=PATH` too. Currently it is working around the lack of this by inserting `--crate-name=___ --print=crate-name` so that it can look for a line containing `___` as a delimiter between the 2 other `--print` informations it actually cares about. This is commented as a "HACK" and "abuse".31eda6f7c3/src/cargo/core/compiler/build_context/target_info.rs (L242)
(FYI `@weihanglo` as you dealt with this recently in https://github.com/rust-lang/cargo/pull/11633.) Mentioning reviewers active in #110785: `@fee1-dead` `@jyn514` `@bjorn3`
82 lines
1.8 KiB
Rust
82 lines
1.8 KiB
Rust
use rustc_macros::{Diagnostic, Subdiagnostic};
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_rlink_unable_to_read)]
|
|
pub(crate) struct RlinkUnableToRead {
|
|
pub err: std::io::Error,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_rlink_wrong_file_type)]
|
|
pub(crate) struct RLinkWrongFileType;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_rlink_empty_version_number)]
|
|
pub(crate) struct RLinkEmptyVersionNumber;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_rlink_encoding_version_mismatch)]
|
|
pub(crate) struct RLinkEncodingVersionMismatch {
|
|
pub version_array: String,
|
|
pub rlink_version: u32,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_rlink_rustc_version_mismatch)]
|
|
pub(crate) struct RLinkRustcVersionMismatch<'a> {
|
|
pub rustc_version: String,
|
|
pub current_version: &'a str,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_rlink_no_a_file)]
|
|
pub(crate) struct RlinkNotAFile;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_ice)]
|
|
pub(crate) struct Ice;
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_ice_bug_report)]
|
|
pub(crate) struct IceBugReport<'a> {
|
|
pub bug_report_url: &'a str,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_ice_version)]
|
|
pub(crate) struct IceVersion<'a> {
|
|
pub version: &'a str,
|
|
pub triple: &'a str,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_ice_path)]
|
|
pub(crate) struct IcePath {
|
|
pub path: String,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_ice_path_error)]
|
|
pub(crate) struct IcePathError {
|
|
pub path: String,
|
|
pub error: String,
|
|
#[subdiagnostic]
|
|
pub env_var: Option<IcePathErrorEnv>,
|
|
}
|
|
|
|
#[derive(Subdiagnostic)]
|
|
#[note(driver_impl_ice_path_error_env)]
|
|
pub(crate) struct IcePathErrorEnv {
|
|
pub env_var: String,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_ice_flags)]
|
|
pub(crate) struct IceFlags {
|
|
pub flags: String,
|
|
}
|
|
|
|
#[derive(Diagnostic)]
|
|
#[diag(driver_impl_ice_exclude_cargo_defaults)]
|
|
pub(crate) struct IceExcludeCargoDefaults;
|