diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-08-20 10:43:20 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-08-20 10:43:20 +0200 |
| commit | 4793dafa0433d758b126f2f97d1de031b99e0fa1 (patch) | |
| tree | db8757b4acee55a28e1d6b5b6616fc2c3626eb7d /src/Compilation.zig | |
| parent | e687c87d691518d63414aed4f355dabbd8565dc3 (diff) | |
| download | zig-4793dafa0433d758b126f2f97d1de031b99e0fa1.tar.gz zig-4793dafa0433d758b126f2f97d1de031b99e0fa1.zip | |
frontend: move framework path resolution from the linker to frontend
Diffstat (limited to 'src/Compilation.zig')
| -rw-r--r-- | src/Compilation.zig | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig index 726862f231..80231c91d0 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -507,7 +507,8 @@ pub const InitOptions = struct { c_source_files: []const CSourceFile = &[0]CSourceFile{}, link_objects: []LinkObject = &[0]LinkObject{}, framework_dirs: []const []const u8 = &[0][]const u8{}, - frameworks: std.StringArrayHashMapUnmanaged(Framework) = .{}, + framework_names: []const []const u8 = &.{}, + framework_infos: []const Framework = &.{}, system_lib_names: []const []const u8 = &.{}, system_lib_infos: []const SystemLib = &.{}, /// These correspond to the WASI libc emulated subcomponents including: @@ -830,7 +831,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation { // Our linker can't handle objects or most advanced options yet. if (options.link_objects.len != 0 or options.c_source_files.len != 0 or - options.frameworks.count() != 0 or + options.framework_names.len != 0 or options.system_lib_names.len != 0 or options.link_libc or options.link_libcpp or link_eh_frame_hdr or @@ -1446,6 +1447,13 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation { system_libs.putAssumeCapacity(lib_name, options.system_lib_infos[i]); } + var frameworks: std.StringArrayHashMapUnmanaged(Framework) = .{}; + errdefer frameworks.deinit(gpa); + try frameworks.ensureTotalCapacity(gpa, options.framework_names.len); + for (options.framework_names, options.framework_infos) |framework_name, info| { + frameworks.putAssumeCapacity(framework_name, info); + } + const bin_file = try link.File.openPath(gpa, .{ .emit = bin_file_emit, .implib_emit = implib_emit, @@ -1465,7 +1473,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation { .link_libcpp = link_libcpp, .link_libunwind = link_libunwind, .objects = options.link_objects, - .frameworks = options.frameworks, + .frameworks = frameworks, .framework_dirs = options.framework_dirs, .system_libs = system_libs, .wasi_emulated_libs = options.wasi_emulated_libs, |
