Commit 831bb66895
Changed files (4)
src-self-hosted
src/analyze.cpp
@@ -4606,7 +4606,7 @@ void find_libc_include_path(CodeGen *g) {
}
} else if (g->zig_target.os == OsLinux) {
g->libc_include_dir = get_linux_libc_include_path();
- } else if (g->zig_target.os == OsMacOSX) {
+ } else if (g->zig_target.os == OsMacOSX || g->zig_target.os == OsFreeBSD) {
g->libc_include_dir = buf_create_from_str("/usr/include");
} else {
// TODO find libc at runtime for other operating systems
@@ -4652,6 +4652,8 @@ void find_libc_lib_path(CodeGen *g) {
} else if (g->zig_target.os == OsLinux) {
g->libc_lib_dir = get_linux_libc_lib_path("crt1.o");
+ } else if (g->zig_target.os == OsFreeBSD) {
+ g->libc_lib_dir = buf_create_from_str("/usr/lib");
} else {
zig_panic("Unable to determine libc lib path.");
}
@@ -4664,6 +4666,8 @@ void find_libc_lib_path(CodeGen *g) {
return;
} else if (g->zig_target.os == OsLinux) {
g->libc_static_lib_dir = get_linux_libc_lib_path("crtbegin.o");
+ } else if (g->zig_target.os == OsFreeBSD) {
+ g->libc_static_lib_dir = buf_create_from_str("/usr/lib");
} else {
zig_panic("Unable to determine libc static lib path.");
}
src/link.cpp
@@ -195,6 +195,9 @@ static Buf *try_dynamic_linker_path(const char *ld_name) {
}
static Buf *get_dynamic_linker_path(CodeGen *g) {
+ if (g->zig_target.os == OsFreeBSD) {
+ return buf_create_from_str("/libexec/ld-elf.so.1");
+ }
if (g->is_native_target && g->zig_target.arch.arch == ZigLLVM_x86_64) {
static const char *ld_names[] = {
"ld-linux-x86-64.so.2",
src-self-hosted/libc_installation.zig
@@ -172,7 +172,7 @@ pub const LibCInstallation = struct.{
try group.call(findNativeStaticLibDir, self, loop);
try group.call(findNativeDynamicLinker, self, loop);
},
- builtin.Os.macosx => {
+ builtin.Os.macosx, builtin.Os.freebsd => {
self.include_dir = try std.mem.dupe(loop.allocator, u8, "/usr/include");
},
else => @compileError("unimplemented: find libc for this OS"),
src-self-hosted/target.zig
@@ -299,6 +299,13 @@ pub const Target = union(enum).{
pub fn getDynamicLinkerPath(self: Target) ?[]const u8 {
const env = self.getEnviron();
const arch = self.getArch();
+ const os = self.getOs();
+ switch (os) {
+ builtin.Os.freebsd => {
+ return "/libexec/ld-elf.so.1";
+ },
+ else => {},
+ }
switch (env) {
builtin.Environ.android => {
if (self.is64bit()) {
@@ -493,6 +500,7 @@ pub const Target = union(enum).{
builtin.Os.linux,
builtin.Os.macosx,
+ builtin.Os.freebsd,
builtin.Os.openbsd,
builtin.Os.zen,
=> switch (id) {
@@ -527,7 +535,6 @@ pub const Target = union(enum).{
builtin.Os.ananas,
builtin.Os.cloudabi,
builtin.Os.dragonfly,
- builtin.Os.freebsd,
builtin.Os.fuchsia,
builtin.Os.ios,
builtin.Os.kfreebsd,