clang: update cmdline options to include weak libs and frameworks

Clang accepts `-weak-lx`, `-weak_library x` and `-weak_framework x`.
This commit is contained in:
Jakub Konka 2022-06-28 21:16:19 +02:00
parent c02dc17618
commit c2c1998269
3 changed files with 40 additions and 3 deletions

View file

@ -4867,8 +4867,22 @@ flagpd1("version"),
.psl = false, .psl = false,
}, },
flagpd1("w"), 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"), sepd1("weak_reference_mismatches"),
flagpd1("whatsloaded"), flagpd1("whatsloaded"),
flagpd1("why_load"), flagpd1("why_load"),
@ -6200,7 +6214,14 @@ jspd1("iquote"),
.pd2 = true, .pd2 = true,
.psl = false, .psl = false,
}, },
joinpd1("weak-l"), .{
.name = "weak-l",
.syntax = .joined,
.zig_equivalent = .weak_library,
.pd1 = true,
.pd2 = false,
.psl = false,
},
.{ .{
.name = "Ofast", .name = "Ofast",
.syntax = .flag, .syntax = .flag,

View file

@ -1625,6 +1625,8 @@ fn buildOutputType(
.entry => { .entry => {
entry = it.only_arg; 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. // Parse linker args.
@ -4577,6 +4579,8 @@ pub const ClangArgIterator = struct {
emit_llvm, emit_llvm,
sysroot, sysroot,
entry, entry,
weak_library,
weak_framework,
}; };
const Args = struct { const Args = struct {

View file

@ -432,6 +432,18 @@ const known_options = [_]KnownOpt{
.name = "e", .name = "e",
.ident = "entry", .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{}; const blacklisted_options = [_][]const u8{};