diff --git a/macho/cmdline.cc b/macho/cmdline.cc index 2d993b35..4c51eaeb 100644 --- a/macho/cmdline.cc +++ b/macho/cmdline.cc @@ -75,7 +75,9 @@ Options: -uexported_symbol Export all but a given symbol -unexported_symbols_list Read a list of unexported symbols from a given file - -v Report version information)"; + -v Report version information + -weak-framework [,] + Search for a given framework)"; template static i64 parse_platform(Context &ctx, std::string_view arg) { @@ -327,7 +329,7 @@ std::vector parse_nonpositional_args(Context &ctx) { } else if (read_arg("-needed_framework")) { remaining.push_back("-needed_framework"); remaining.push_back(std::string(arg)); - } else if (read_flag("-no_deduplicate")) { + } else if (read_flag("-no_deduplicate")) { } else if (read_flag("-no_uuid")) { ctx.arg.uuid = UUID_NONE; } else if (read_arg("-o")) { @@ -373,7 +375,10 @@ std::vector parse_nonpositional_args(Context &ctx) { append(ctx.arg.unexported_symbols_list, read_lines(ctx, arg)); } else if (read_flag("-v")) { SyncOut(ctx) << mold_version; - } else { + } else if (read_arg("-weak_framework")) { + remaining.push_back("-weak_framework"); + remaining.push_back(std::string(arg)); + } else { if (args[i][0] == '-') Fatal(ctx) << "unknown command line option: " << args[i]; remaining.push_back(std::string(args[i])); diff --git a/macho/main.cc b/macho/main.cc index 4169cc30..aa082f54 100644 --- a/macho/main.cc +++ b/macho/main.cc @@ -603,7 +603,7 @@ static void read_input_files(Context &ctx, std::span args) { read_file(ctx, MappedFile>::must_open(ctx, args[0])); ctx.all_load = orig; args = args.subspan(1); - } else if (arg == "-framework") { + } else if (arg == "-framework" || arg == "-weak_framework") { read_file(ctx, find_framework(ctx, args[0])); args = args.subspan(1); } else if (arg == "-needed_framework") {