Browse Source

Use gnu -o flag for obj out path instead of -Fo when using clang & clang++ on Windows (#483)

master
datalus 5 years ago
committed by GitHub
parent
commit
f139bce3aa
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      src/lib.rs

10
src/lib.rs

@ -449,11 +449,13 @@ impl Build {
let mut cmd = compiler.to_command(); let mut cmd = compiler.to_command();
let is_arm = target.contains("aarch64") || target.contains("arm"); let is_arm = target.contains("aarch64") || target.contains("arm");
let clang = compiler.family == ToolFamily::Clang;
command_add_output_file( command_add_output_file(
&mut cmd, &mut cmd,
&obj, &obj,
self.cuda, self.cuda,
target.contains("msvc"), target.contains("msvc"),
clang,
false, false,
is_arm, is_arm,
); );
@ -1144,10 +1146,11 @@ impl Build {
let is_asm = obj.src.extension().and_then(|s| s.to_str()) == Some("asm"); let is_asm = obj.src.extension().and_then(|s| s.to_str()) == Some("asm");
let target = self.get_target()?; let target = self.get_target()?;
let msvc = target.contains("msvc"); let msvc = target.contains("msvc");
let compiler = self.try_get_compiler()?;
let clang = compiler.family == ToolFamily::Clang;
let (mut cmd, name) = if msvc && is_asm { let (mut cmd, name) = if msvc && is_asm {
self.msvc_macro_assembler()? self.msvc_macro_assembler()?
} else { } else {
let compiler = self.try_get_compiler()?;
let mut cmd = compiler.to_command(); let mut cmd = compiler.to_command();
for &(ref a, ref b) in self.env.iter() { for &(ref a, ref b) in self.env.iter() {
cmd.env(a, b); cmd.env(a, b);
@ -1163,7 +1166,7 @@ impl Build {
) )
}; };
let is_arm = target.contains("aarch64") || target.contains("arm"); let is_arm = target.contains("aarch64") || target.contains("arm");
command_add_output_file(&mut cmd, &obj.dst, self.cuda, msvc, is_asm, is_arm); command_add_output_file(&mut cmd, &obj.dst, self.cuda, msvc, clang, is_asm, is_arm);
// armasm and armasm64 don't requrie -c option // armasm and armasm64 don't requrie -c option
if !msvc || !is_asm || !is_arm { if !msvc || !is_asm || !is_arm {
cmd.arg("-c"); cmd.arg("-c");
@ -2685,10 +2688,11 @@ fn command_add_output_file(
dst: &Path, dst: &Path,
cuda: bool, cuda: bool,
msvc: bool, msvc: bool,
clang: bool,
is_asm: bool, is_asm: bool,
is_arm: bool, is_arm: bool,
) { ) {
if msvc && !cuda && !(is_asm && is_arm) { if msvc && !clang && !cuda && !(is_asm && is_arm) {
let mut s = OsString::from("-Fo"); let mut s = OsString::from("-Fo");
s.push(&dst); s.push(&dst);
cmd.arg(s); cmd.arg(s);

Loading…
Cancel
Save