Browse Source

Don't compile assembly on x86_64 Windows

They've all got the wrong ABI...
Alex Crichton 7 years ago
parent
commit
b42d267065
2 changed files with 15 additions and 11 deletions
  1. 14 10
      build.rs
  2. 1 1
      src/float/conv.rs

+ 14 - 10
build.rs

@@ -4142,16 +4142,20 @@ mod c {
                 sources.extend(&["gcc_personality_v0.c"]);
             }
 
-            if target_arch == "x86_64" {
-                sources.extend(
-                    &[
-                        "x86_64/floatdisf.c",
-                        "x86_64/floatdixf.c",
-                        "x86_64/floatundidf.S",
-                        "x86_64/floatundisf.S",
-                        "x86_64/floatundixf.S",
-                    ],
-                );
+            // None of these seem to be used on x86_64 windows, and they've all
+            // got the wrong ABI anyway, so we want to avoid them.
+            if target_os != "windows" {
+                if target_arch == "x86_64" {
+                    sources.extend(
+                        &[
+                            "x86_64/floatdisf.c",
+                            "x86_64/floatdixf.c",
+                            "x86_64/floatundidf.S",
+                            "x86_64/floatundisf.S",
+                            "x86_64/floatundixf.S",
+                        ],
+                    );
+                }
             }
 
             if target_arch == "x86" {

+ 1 - 1
src/float/conv.rs

@@ -113,7 +113,7 @@ intrinsics! {
     }
 
     #[use_c_shim_if(all(any(target_arch = "x86", target_arch = "x86_64"),
-                        not(target_env = "msvc")))]
+                        not(windows)))]
     #[arm_aeabi_alias = __aeabi_ul2d]
     pub extern "C" fn __floatundidf(i: u64) -> f64 {
         int_to_float!(i, u64, f64)