aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-08-20 08:37:44 +0200
committerJakub Konka <kubkon@jakubkonka.com>2023-08-20 08:37:44 +0200
commite687c87d691518d63414aed4f355dabbd8565dc3 (patch)
tree244d77229edd3ebabd3a89582cc309256b45e26c /src
parent020105d0dde614538a5839ede697e63a43bf6aa6 (diff)
downloadzig-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.zig42
-rw-r--r--src/link/MachO/zld.zig13
-rw-r--r--src/main.zig2
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| {