@@ -449,11 +449,13 @@ impl Build {
449
449
450
450
let mut cmd = compiler. to_command ( ) ;
451
451
let is_arm = target. contains ( "aarch64" ) || target. contains ( "arm" ) ;
452
+ let clang = compiler. family == ToolFamily :: Clang ;
452
453
command_add_output_file (
453
454
& mut cmd,
454
455
& obj,
455
456
self . cuda ,
456
457
target. contains ( "msvc" ) ,
458
+ clang,
457
459
false ,
458
460
is_arm,
459
461
) ;
@@ -1144,10 +1146,11 @@ impl Build {
1144
1146
let is_asm = obj. src . extension ( ) . and_then ( |s| s. to_str ( ) ) == Some ( "asm" ) ;
1145
1147
let target = self . get_target ( ) ?;
1146
1148
let msvc = target. contains ( "msvc" ) ;
1149
+ let compiler = self . try_get_compiler ( ) ?;
1150
+ let clang = compiler. family == ToolFamily :: Clang ;
1147
1151
let ( mut cmd, name) = if msvc && is_asm {
1148
1152
self . msvc_macro_assembler ( ) ?
1149
1153
} else {
1150
- let compiler = self . try_get_compiler ( ) ?;
1151
1154
let mut cmd = compiler. to_command ( ) ;
1152
1155
for & ( ref a, ref b) in self . env . iter ( ) {
1153
1156
cmd. env ( a, b) ;
@@ -1163,7 +1166,7 @@ impl Build {
1163
1166
)
1164
1167
} ;
1165
1168
let is_arm = target. contains ( "aarch64" ) || target. contains ( "arm" ) ;
1166
- command_add_output_file ( & mut cmd, & obj. dst , self . cuda , msvc, is_asm, is_arm) ;
1169
+ command_add_output_file ( & mut cmd, & obj. dst , self . cuda , msvc, clang , is_asm, is_arm) ;
1167
1170
// armasm and armasm64 don't requrie -c option
1168
1171
if !msvc || !is_asm || !is_arm {
1169
1172
cmd. arg ( "-c" ) ;
@@ -2685,10 +2688,11 @@ fn command_add_output_file(
2685
2688
dst : & Path ,
2686
2689
cuda : bool ,
2687
2690
msvc : bool ,
2691
+ clang : bool ,
2688
2692
is_asm : bool ,
2689
2693
is_arm : bool ,
2690
2694
) {
2691
- if msvc && !cuda && !( is_asm && is_arm) {
2695
+ if msvc && !clang && ! cuda && !( is_asm && is_arm) {
2692
2696
let mut s = OsString :: from ( "-Fo" ) ;
2693
2697
s. push ( & dst) ;
2694
2698
cmd. arg ( s) ;
0 commit comments