diff options
| author | Pietro Albini <pietro.albini@ferrous-systems.com> | 2023-03-09 14:52:45 +0100 |
|---|---|---|
| committer | Pietro Albini <pietro.albini@ferrous-systems.com> | 2023-04-03 09:24:14 +0200 |
| commit | ef2bf6d5053f55057aecd0f0cb35c13ef332d72a (patch) | |
| tree | 2dfa4f45e2300390f6378cb5d43f45335b12d31a /compiler/rustc_driver_impl/src | |
| parent | e592aaa70596741af5969a91f6054a0b16b60352 (diff) | |
| download | rust-ef2bf6d5053f55057aecd0f0cb35c13ef332d72a.tar.gz rust-ef2bf6d5053f55057aecd0f0cb35c13ef332d72a.zip | |
implement --print=all-target-specs-json
Diffstat (limited to 'compiler/rustc_driver_impl/src')
| -rw-r--r-- | compiler/rustc_driver_impl/src/lib.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs index b96b356f551..730d41ab962 100644 --- a/compiler/rustc_driver_impl/src/lib.rs +++ b/compiler/rustc_driver_impl/src/lib.rs @@ -44,8 +44,10 @@ use rustc_session::{early_error, early_error_no_abort, early_warn}; use rustc_span::source_map::{FileLoader, FileName}; use rustc_span::symbol::sym; use rustc_target::json::ToJson; +use rustc_target::spec::{Target, TargetTriple}; use std::cmp::max; +use std::collections::BTreeMap; use std::env; use std::ffi::OsString; use std::fs; @@ -648,6 +650,15 @@ fn print_crate_info( TargetSpec => { println!("{}", serde_json::to_string_pretty(&sess.target.to_json()).unwrap()); } + AllTargetSpecs => { + let mut targets = BTreeMap::new(); + for name in rustc_target::spec::TARGETS { + let triple = TargetTriple::from_triple(name); + let target = Target::expect_builtin(&triple); + targets.insert(name, target.to_json()); + } + println!("{}", serde_json::to_string_pretty(&targets).unwrap()); + } FileNames | CrateName => { let Some(attrs) = attrs.as_ref() else { // no crate attributes, print out an error and exit |
