diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-08-20 08:37:44 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-08-20 08:37:44 +0200 |
| commit | e687c87d691518d63414aed4f355dabbd8565dc3 (patch) | |
| tree | 244d77229edd3ebabd3a89582cc309256b45e26c /src | |
| parent | 020105d0dde614538a5839ede697e63a43bf6aa6 (diff) | |
| download | zig-e687c87d691518d63414aed4f355dabbd8565dc3.tar.gz zig-e687c87d691518d63414aed4f355dabbd8565dc3.zip | |
macho: we no longer need to resolve framework dirs against sysroot
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/MachO.zig | 42 | ||||
| -rw-r--r-- | src/link/MachO/zld.zig | 13 | ||||
| -rw-r--r-- | src/main.zig | 2 |
3 files changed, 3 insertions, 54 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 4369e3b18a..0f6859e32a 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -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, diff --git a/src/link/MachO/zld.zig b/src/link/MachO/zld.zig index 56eee2b546..9de287e3e8 100644 --- a/src/link/MachO/zld.zig +++ b/src/link/MachO/zld.zig @@ -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}); } } diff --git a/src/main.zig b/src/main.zig index fd220bf172..01ef0d87be 100644 --- a/src/main.zig +++ b/src/main.zig @@ -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| { |
