mirror of
https://github.com/ziglang/zig.git
synced 2026-01-10 17:35:12 +00:00
macho: we no longer need to resolve framework dirs against sysroot
This commit is contained in:
parent
020105d0dd
commit
e687c87d69
@ -870,48 +870,6 @@ fn resolveLibSystemInDirs(arena: Allocator, dirs: []const []const u8, out_libs:
|
||||
return false;
|
||||
}
|
||||
|
||||
pub fn resolveSearchDir(
|
||||
arena: Allocator,
|
||||
dir: []const u8,
|
||||
syslibroot: ?[]const u8,
|
||||
) !?[]const u8 {
|
||||
var candidates = std.ArrayList([]const u8).init(arena);
|
||||
|
||||
if (fs.path.isAbsolute(dir)) {
|
||||
if (syslibroot) |root| {
|
||||
const common_dir = if (builtin.os.tag == .windows) blk: {
|
||||
// We need to check for disk designator and strip it out from dir path so
|
||||
// that we can concat dir with syslibroot.
|
||||
// TODO we should backport this mechanism to 'MachO.Dylib.parseDependentLibs()'
|
||||
const disk_designator = fs.path.diskDesignatorWindows(dir);
|
||||
|
||||
if (mem.indexOf(u8, dir, disk_designator)) |where| {
|
||||
break :blk dir[where + disk_designator.len ..];
|
||||
}
|
||||
|
||||
break :blk dir;
|
||||
} else dir;
|
||||
const full_path = try fs.path.join(arena, &[_][]const u8{ root, common_dir });
|
||||
try candidates.append(full_path);
|
||||
}
|
||||
}
|
||||
|
||||
try candidates.append(dir);
|
||||
|
||||
for (candidates.items) |candidate| {
|
||||
// Verify that search path actually exists
|
||||
var tmp = fs.cwd().openDir(candidate, .{}) catch |err| switch (err) {
|
||||
error.FileNotFound => continue,
|
||||
else => |e| return e,
|
||||
};
|
||||
defer tmp.close();
|
||||
|
||||
return candidate;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
pub fn resolveLib(
|
||||
arena: Allocator,
|
||||
search_dir: []const u8,
|
||||
|
||||
@ -3560,17 +3560,8 @@ pub fn linkWithZld(macho_file: *MachO, comp: *Compilation, prog_node: *std.Progr
|
||||
try MachO.resolveLibSystem(arena, comp, options.sysroot, target, options.lib_dirs, &libs);
|
||||
|
||||
// frameworks
|
||||
var framework_dirs = std.ArrayList([]const u8).init(arena);
|
||||
for (options.framework_dirs) |dir| {
|
||||
if (try MachO.resolveSearchDir(arena, dir, options.sysroot)) |search_dir| {
|
||||
try framework_dirs.append(search_dir);
|
||||
} else {
|
||||
log.warn("directory not found for '-F{s}'", .{dir});
|
||||
}
|
||||
}
|
||||
|
||||
outer: for (options.frameworks.keys()) |f_name| {
|
||||
for (framework_dirs.items) |dir| {
|
||||
for (options.framework_dirs) |dir| {
|
||||
for (&[_][]const u8{ ".tbd", ".dylib", "" }) |ext| {
|
||||
if (try MachO.resolveFramework(arena, dir, f_name, ext)) |full_path| {
|
||||
const info = options.frameworks.get(f_name).?;
|
||||
@ -3590,7 +3581,7 @@ pub fn linkWithZld(macho_file: *MachO, comp: *Compilation, prog_node: *std.Progr
|
||||
|
||||
if (framework_not_found) {
|
||||
log.warn("Framework search paths:", .{});
|
||||
for (framework_dirs.items) |dir| {
|
||||
for (options.framework_dirs) |dir| {
|
||||
log.warn(" {s}", .{dir});
|
||||
}
|
||||
}
|
||||
|
||||
@ -2566,7 +2566,7 @@ fn buildOutputType(
|
||||
want_native_include_dirs = true;
|
||||
}
|
||||
|
||||
// Resolve the library path arguments with respect to sysroot.
|
||||
// Resolve the library and framework path arguments with respect to sysroot.
|
||||
var lib_dirs = std.ArrayList([]const u8).init(arena);
|
||||
if (sysroot) |root| {
|
||||
for (lib_dir_args.items) |dir| {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user