From f139bce3aae34b91a470c3742a08fccd871b1982 Mon Sep 17 00:00:00 2001 From: datalus <2110472+datalus@users.noreply.github.com> Date: Tue, 3 Mar 2020 11:49:46 -0600 Subject: [PATCH] Use gnu -o flag for obj out path instead of -Fo when using clang & clang++ on Windows (#483) --- src/lib.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 77c7245..d77611c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -449,11 +449,13 @@ impl Build { let mut cmd = compiler.to_command(); let is_arm = target.contains("aarch64") || target.contains("arm"); + let clang = compiler.family == ToolFamily::Clang; command_add_output_file( &mut cmd, &obj, self.cuda, target.contains("msvc"), + clang, false, is_arm, ); @@ -1144,10 +1146,11 @@ impl Build { let is_asm = obj.src.extension().and_then(|s| s.to_str()) == Some("asm"); let target = self.get_target()?; 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 { self.msvc_macro_assembler()? } else { - let compiler = self.try_get_compiler()?; let mut cmd = compiler.to_command(); for &(ref a, ref b) in self.env.iter() { cmd.env(a, b); @@ -1163,7 +1166,7 @@ impl Build { ) }; 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 if !msvc || !is_asm || !is_arm { cmd.arg("-c"); @@ -2685,10 +2688,11 @@ fn command_add_output_file( dst: &Path, cuda: bool, msvc: bool, + clang: bool, is_asm: 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"); s.push(&dst); cmd.arg(s);