aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-08-20 10:43:20 +0200
committerJakub Konka <kubkon@jakubkonka.com>2023-08-20 10:43:20 +0200
commit4793dafa0433d758b126f2f97d1de031b99e0fa1 (patch)
treedb8757b4acee55a28e1d6b5b6616fc2c3626eb7d /src/Compilation.zig
parente687c87d691518d63414aed4f355dabbd8565dc3 (diff)
downloadzig-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.zig14
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,