commit f68d8060ec2c65e3062007348c0e331ffbe86f37 (tree)
parent 6a56091213a48118c8c61c0683466f0ffadf6b55
Author: Andrew Kelley <andrew@ziglang.org>
Date: Mon, 27 May 2019 19:25:58 -0400
Merge pull request #2526 from LemonBoy/arch-format-osx
Build archives using the K_DARWIN format when targeting osx
Diffstat:
5 files changed, 4 insertions(+), 21 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -6714,8 +6714,6 @@ target_link_libraries(zig0 compiler)
if(WIN32)
set(LIBUSERLAND "${CMAKE_BINARY_DIR}/userland.lib")
-elseif(APPLE)
- set(LIBUSERLAND "${CMAKE_BINARY_DIR}/userland.o")
else()
set(LIBUSERLAND "${CMAKE_BINARY_DIR}/libuserland.a")
endif()
diff --git a/build.zig b/build.zig
@@ -383,17 +383,9 @@ const Context = struct {
};
fn addLibUserlandStep(b: *Builder) void {
- // Sadly macOS requires hacks to work around the buggy MACH-O linker code.
- const artifact = if (builtin.os == .macosx)
- b.addObject("userland", "src-self-hosted/stage1.zig")
- else
- b.addStaticLibrary("userland", "src-self-hosted/stage1.zig");
+ const artifact = b.addStaticLibrary("userland", "src-self-hosted/stage1.zig");
artifact.disable_gen_h = true;
- if (builtin.os == .macosx) {
- artifact.disable_stack_probing = true;
- } else {
- artifact.bundle_compiler_rt = true;
- }
+ artifact.bundle_compiler_rt = true;
artifact.setTarget(builtin.arch, builtin.os, builtin.abi);
artifact.linkSystemLibrary("c");
const libuserland_step = b.step("libuserland", "Build the userland compiler library for use in stage1");
diff --git a/src/link.cpp b/src/link.cpp
@@ -776,14 +776,6 @@ static const char *get_libc_crt_file(CodeGen *parent, const char *file) {
}
static Buf *build_a_raw(CodeGen *parent_gen, const char *aname, Buf *full_path, OutType child_out_type) {
- // The Mach-O LLD code is not well maintained, and trips an assertion
- // when we link compiler_rt and libc.zig as libraries rather than objects.
- // Here we workaround this by having compiler_rt and libc.zig be objects.
- // TODO write our own linker. https://github.com/ziglang/zig/issues/1535
- if (parent_gen->zig_target->os == OsMacOSX) {
- child_out_type = OutTypeObj;
- }
-
CodeGen *child_gen = create_child_codegen(parent_gen, full_path, child_out_type,
parent_gen->libc);
codegen_set_out_name(child_gen, buf_create_from_str(aname));
diff --git a/src/os.cpp b/src/os.cpp
@@ -1350,7 +1350,7 @@ static void init_rand() {
zig_panic("unable to open /dev/urandom");
}
char bytes[sizeof(unsigned)];
- size_t amt_read;
+ ssize_t amt_read;
while ((amt_read = read(fd, bytes, sizeof(unsigned))) == -1) {
if (errno == EINTR) continue;
zig_panic("unable to read /dev/urandom");
diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp
@@ -877,6 +877,7 @@ bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size
case ZigLLVM_Linux:
kind = object::Archive::K_GNU;
break;
+ case ZigLLVM_MacOSX:
case ZigLLVM_Darwin:
case ZigLLVM_IOS:
kind = object::Archive::K_DARWIN;