]> git.proxmox.com Git - rustc.git/blame - src/test/run-make-fulldeps/issue-19371/foo.rs
Merge tag 'debian/1.52.1+dfsg1-1_exp2' into proxmox/buster
[rustc.git] / src / test / run-make-fulldeps / issue-19371 / foo.rs
CommitLineData
b039eaaf 1#![feature(rustc_private)]
c34b1796 2
532ac7d7 3extern crate rustc_interface;
60c5eb7d 4extern crate rustc_driver;
ba9703b0 5extern crate rustc_session;
dfeec247 6extern crate rustc_span;
1a4d82fc 7
ba9703b0
XL
8use rustc_session::DiagnosticOutput;
9use rustc_session::config::{Input, Options, OutputType, OutputTypes};
532ac7d7 10use rustc_interface::interface;
dfeec247 11use rustc_span::source_map::FileName;
1a4d82fc 12
c34b1796
AL
13use std::path::PathBuf;
14
1a4d82fc
JJ
15fn main() {
16 let src = r#"
17 fn main() {}
18 "#;
19
85aaf69f 20 let args: Vec<String> = std::env::args().collect();
1a4d82fc
JJ
21
22 if args.len() < 4 {
23 panic!("expected rustc path");
24 }
25
c34b1796 26 let tmpdir = PathBuf::from(&args[1]);
1a4d82fc 27
c34b1796 28 let mut sysroot = PathBuf::from(&args[3]);
1a4d82fc
JJ
29 sysroot.pop();
30 sysroot.pop();
31
32 compile(src.to_string(), tmpdir.join("out"), sysroot.clone());
33
34 compile(src.to_string(), tmpdir.join("out"), sysroot.clone());
35}
36
c34b1796 37fn compile(code: String, output: PathBuf, sysroot: PathBuf) {
532ac7d7
XL
38 let mut opts = Options::default();
39 opts.output_types = OutputTypes::new(&[(OutputType::Exe, None)]);
40 opts.maybe_sysroot = Some(sysroot);
41
42 if let Ok(linker) = std::env::var("RUSTC_LINKER") {
43 opts.cg.linker = Some(linker.into());
44 }
45
46 let name = FileName::anon_source_code(&code);
47 let input = Input::Str { name, input: code };
48
49 let config = interface::Config {
50 opts,
51 crate_cfg: Default::default(),
52 input,
53 input_path: None,
54 output_file: Some(output),
55 output_dir: None,
56 file_loader: None,
57 diagnostic_output: DiagnosticOutput::Default,
58 stderr: None,
532ac7d7 59 lint_caps: Default::default(),
6a06907d 60 parse_sess_created: None,
e74abb32 61 register_lints: None,
60c5eb7d 62 override_queries: None,
1b1a35ee 63 make_codegen_backend: None,
60c5eb7d 64 registry: rustc_driver::diagnostics_registry(),
532ac7d7
XL
65 };
66
67 interface::run_compiler(config, |compiler| {
e74abb32 68 // This runs all the passes prior to linking, too.
60c5eb7d
XL
69 let linker = compiler.enter(|queries| {
70 queries.linker()
71 });
72 if let Ok(linker) = linker {
73 linker.link();
74 }
0531ce1d 75 });
1a4d82fc 76}