From a84814432b3e6402295e03e7d264e1e146f53067 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Tue, 28 Jun 2022 21:16:19 +0200 Subject: [PATCH] clang: update cmdline options to include weak libs and frameworks Clang accepts `-weak-lx`, `-weak_library x` and `-weak_framework x`. --- src/clang_options_data.zig | 27 ++++++++++++++++++++++++--- src/main.zig | 4 ++++ tools/update_clang_options.zig | 12 ++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/clang_options_data.zig b/src/clang_options_data.zig index 25cdd04f828a..b4bef06c9eaf 100644 --- a/src/clang_options_data.zig +++ b/src/clang_options_data.zig @@ -4867,8 +4867,22 @@ flagpd1("version"), .psl = false, }, flagpd1("w"), -sepd1("weak_framework"), -sepd1("weak_library"), +.{ + .name = "weak_framework", + .syntax = .separate, + .zig_equivalent = .weak_framework, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "weak_library", + .syntax = .separate, + .zig_equivalent = .weak_library, + .pd1 = true, + .pd2 = false, + .psl = false, +}, sepd1("weak_reference_mismatches"), flagpd1("whatsloaded"), flagpd1("why_load"), @@ -6200,7 +6214,14 @@ jspd1("iquote"), .pd2 = true, .psl = false, }, -joinpd1("weak-l"), +.{ + .name = "weak-l", + .syntax = .joined, + .zig_equivalent = .weak_library, + .pd1 = true, + .pd2 = false, + .psl = false, +}, .{ .name = "Ofast", .syntax = .flag, diff --git a/src/main.zig b/src/main.zig index ae1b95a4aa0f..f13fe342ca05 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1625,6 +1625,8 @@ fn buildOutputType( .entry => { entry = it.only_arg; }, + .weak_library => try system_libs.put(it.only_arg, .{ .weak = true }), + .weak_framework => try frameworks.put(gpa, it.only_arg, .{ .weak = true }), } } // Parse linker args. @@ -4577,6 +4579,8 @@ pub const ClangArgIterator = struct { emit_llvm, sysroot, entry, + weak_library, + weak_framework, }; const Args = struct { diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig index 0a8b00537c18..b003a1bbb9c6 100644 --- a/tools/update_clang_options.zig +++ b/tools/update_clang_options.zig @@ -432,6 +432,18 @@ const known_options = [_]KnownOpt{ .name = "e", .ident = "entry", }, + .{ + .name = "weak-l", + .ident = "weak_library", + }, + .{ + .name = "weak_library", + .ident = "weak_library", + }, + .{ + .name = "weak_framework", + .ident = "weak_framework", + }, }; const blacklisted_options = [_][]const u8{};