diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-08-21 08:07:42 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-08-21 08:07:44 +0200 |
| commit | b73ef342895f00bdb31ea5f947ee83764f235d43 (patch) | |
| tree | 1aed709d194cdcfd203c2df5b88a1ac02a31d04c /src/link.zig | |
| parent | 4793dafa0433d758b126f2f97d1de031b99e0fa1 (diff) | |
| download | zig-b73ef342895f00bdb31ea5f947ee83764f235d43.tar.gz zig-b73ef342895f00bdb31ea5f947ee83764f235d43.zip | |
frontend: directly pass resolved frameworks container to the linker
We can infer the framework name from the included resolved framework
path.
Fix hash implementation, and bump linker hash value from 9 to 10.
Diffstat (limited to 'src/link.zig')
| -rw-r--r-- | src/link.zig | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/link.zig b/src/link.zig index 90a09f8e11..48ad78364c 100644 --- a/src/link.zig +++ b/src/link.zig @@ -57,15 +57,11 @@ pub fn hashAddSystemLibs( } } -pub fn hashAddFrameworks( - hh: *Cache.HashHelper, - hm: std.StringArrayHashMapUnmanaged(Framework), -) void { - const keys = hm.keys(); - hh.addListOfBytes(keys); - for (hm.values()) |value| { - hh.add(value.needed); - hh.add(value.weak); +pub fn hashAddFrameworks(man: *Cache.Manifest, hm: []const Framework) !void { + for (hm) |value| { + man.hash.add(value.needed); + man.hash.add(value.weak); + _ = try man.addFile(value.path, null); } } @@ -209,7 +205,7 @@ pub const Options = struct { objects: []Compilation.LinkObject, framework_dirs: []const []const u8, - frameworks: std.StringArrayHashMapUnmanaged(Framework), + frameworks: []const Framework, /// These are *always* dynamically linked. Static libraries will be /// provided as positional arguments. system_libs: std.StringArrayHashMapUnmanaged(SystemLib), @@ -277,7 +273,6 @@ pub const Options = struct { pub fn move(self: *Options) Options { const copied_state = self.*; - self.frameworks = .{}; self.system_libs = .{}; self.force_undefined_symbols = .{}; return copied_state; @@ -643,7 +638,6 @@ pub const File = struct { base.releaseLock(); if (base.file) |f| f.close(); if (base.intermediary_basename) |sub_path| base.allocator.free(sub_path); - base.options.frameworks.deinit(base.allocator); base.options.system_libs.deinit(base.allocator); base.options.force_undefined_symbols.deinit(base.allocator); switch (base.tag) { |
