mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
Set up libc/rtld paths for FreeBSD
This commit is contained in:
parent
a983a0a59b
commit
831bb66895
@ -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"),
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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.");
|
||||
}
|
||||
|
||||
@ -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",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user