Commit e3ea0b652c

Andrew Kelley <superjoe30@gmail.com>
2017-10-02 03:19:06
still build compiler-rt when linking msvc CRT
because it's missing some things
1 parent 756d5c5
Changed files (2)
src
std
special
compiler_rt
src/link.cpp
@@ -435,10 +435,13 @@ static void construct_linker_job_coff(LinkJob *lj) {
         lj->args.append((const char *)buf_ptr(g->link_objects.at(i)));
     }
 
-    if (g->libc_link_lib == nullptr && (g->out_type == OutTypeExe || g->out_type == OutTypeLib)) {
-        Buf *builtin_o_path = build_o(g, "builtin");
-        lj->args.append(buf_ptr(builtin_o_path));
+    if (g->out_type == OutTypeExe || g->out_type == OutTypeLib) {
+        if (g->libc_link_lib == nullptr) {
+            Buf *builtin_o_path = build_o(g, "builtin");
+            lj->args.append(buf_ptr(builtin_o_path));
+        }
 
+        // msvc compiler_rt is missing some stuff, so we still build it and rely on LinkOnce
         Buf *compiler_rt_o_path = build_compiler_rt(g);
         lj->args.append(buf_ptr(compiler_rt_o_path));
     }
std/special/compiler_rt/comparetf2.zig
@@ -117,6 +117,7 @@ export fn __unordtf2(a: f128, b: f128) -> c_int {
 }
 
 // The following are alternative names for the preceding routines.
+// TODO use aliases https://github.com/zig-lang/zig/issues/462
 
 export fn __eqtf2(a: f128, b: f128) -> c_int {
     @setGlobalLinkage(__eqtf2, builtin.GlobalLinkage.LinkOnce);