Skip to content

Commit dcfe94a

Browse files
committed
Implement printing to file for link-args and native-static-libs
1 parent 815a114 commit dcfe94a

File tree

1 file changed

+22
-10
lines changed
  • compiler/rustc_codegen_ssa/src/back

1 file changed

+22
-10
lines changed

compiler/rustc_codegen_ssa/src/back/link.rs

+22-10
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use rustc_metadata::fs::{copy_to_stdout, emit_wrapper_file, METADATA_FILENAME};
1212
use rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile;
1313
use rustc_middle::middle::dependency_format::Linkage;
1414
use rustc_middle::middle::exported_symbols::SymbolExportKind;
15-
use rustc_session::config::{self, CFGuard, CrateType, DebugInfo, Strip};
15+
use rustc_session::config::{self, CFGuard, CrateType, DebugInfo, OutFileName, Strip};
1616
use rustc_session::config::{OutputFilenames, OutputType, PrintKind, SplitDwarfKind};
1717
use rustc_session::cstore::DllImport;
1818
use rustc_session::output::{check_file_is_writeable, invalid_output_for_target, out_filename};
@@ -596,8 +596,10 @@ fn link_staticlib<'a>(
596596

597597
all_native_libs.extend_from_slice(&codegen_results.crate_info.used_libraries);
598598

599-
if sess.opts.prints.iter().any(|print| print.kind == PrintKind::NativeStaticLibs) {
600-
print_native_static_libs(sess, &all_native_libs, &all_rust_dylibs);
599+
for print in &sess.opts.prints {
600+
if print.kind == PrintKind::NativeStaticLibs {
601+
print_native_static_libs(sess, &print.out, &all_native_libs, &all_rust_dylibs);
602+
}
601603
}
602604

603605
Ok(())
@@ -744,8 +746,11 @@ fn link_natively<'a>(
744746
cmd.env_remove(k.as_ref());
745747
}
746748

747-
if sess.opts.prints.iter().any(|print| print.kind == PrintKind::LinkArgs) {
748-
println!("{:?}", &cmd);
749+
for print in &sess.opts.prints {
750+
if print.kind == PrintKind::LinkArgs {
751+
let content = format!("{:?}", cmd);
752+
print.out.overwrite(&content, sess);
753+
}
749754
}
750755

751756
// May have not found libraries in the right formats.
@@ -1386,6 +1391,7 @@ enum RlibFlavor {
13861391

13871392
fn print_native_static_libs(
13881393
sess: &Session,
1394+
out: &OutFileName,
13891395
all_native_libs: &[NativeLib],
13901396
all_rust_dylibs: &[&Path],
13911397
) {
@@ -1459,11 +1465,17 @@ fn print_native_static_libs(
14591465
lib_args.push(format!("-l{}", lib));
14601466
}
14611467
}
1462-
if !lib_args.is_empty() {
1463-
sess.emit_note(errors::StaticLibraryNativeArtifacts);
1464-
// Prefix for greppability
1465-
// Note: This must not be translated as tools are allowed to depend on this exact string.
1466-
sess.note_without_error(format!("native-static-libs: {}", &lib_args.join(" ")));
1468+
1469+
match out {
1470+
OutFileName::Real(_) => out.overwrite(&lib_args.join(" "), sess),
1471+
OutFileName::Stdout => {
1472+
if !lib_args.is_empty() {
1473+
sess.emit_note(errors::StaticLibraryNativeArtifacts);
1474+
// Prefix for greppability
1475+
// Note: This must not be translated as tools are allowed to depend on this exact string.
1476+
sess.note_without_error(format!("native-static-libs: {}", &lib_args.join(" ")));
1477+
}
1478+
}
14671479
}
14681480
}
14691481

0 commit comments

Comments
 (0)