mirror of
https://github.com/rui314/mold.git
synced 2024-09-20 09:27:45 +03:00
[Mach-O] wip
This commit is contained in:
parent
3b357976df
commit
95ae34887c
@ -16,6 +16,7 @@ Options:
|
||||
-demangle Demangle C++ symbols in log messages (default)
|
||||
-dynamic Link against dylibs (default)
|
||||
-help Report usage information
|
||||
-l<LIB> Search for a given library
|
||||
-lto_library <FILE> Ignored
|
||||
-o FILE Set output filename
|
||||
-platform_version <PLATFORM> <MIN_VERSION> <SDK_VERSION>
|
||||
@ -61,7 +62,7 @@ static i64 parse_version(Context &ctx, std::string_view arg) {
|
||||
}
|
||||
|
||||
void parse_nonpositional_args(Context &ctx,
|
||||
std::vector<std::string_view> &remaining) {
|
||||
std::vector<std::string> &remaining) {
|
||||
std::span<std::string_view> args = ctx.cmdline_args;
|
||||
args = args.subspan(1);
|
||||
|
||||
@ -96,6 +97,17 @@ void parse_nonpositional_args(Context &ctx,
|
||||
return false;
|
||||
};
|
||||
|
||||
auto read_joined = [&](std::string name) {
|
||||
if (read_arg(name))
|
||||
return true;
|
||||
if (args[0].starts_with(name)) {
|
||||
arg = args[0].substr(2);
|
||||
args = args.subspan(1);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
auto read_flag = [&](std::string name) {
|
||||
if (args[0] == name) {
|
||||
args = args.subspan(1);
|
||||
@ -110,11 +122,8 @@ void parse_nonpositional_args(Context &ctx,
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (read_arg("-L")) {
|
||||
if (read_joined("-L")) {
|
||||
ctx.arg.library_paths.push_back(std::string(arg));
|
||||
} else if (args[0].starts_with("-L")) {
|
||||
ctx.arg.library_paths.push_back(std::string(args[0].substr(2)));
|
||||
args = args.subspan(1);
|
||||
} else if (read_arg("-arch")) {
|
||||
if (arg != "x86_64")
|
||||
Fatal(ctx) << "unknown -arch: " << arg;
|
||||
@ -122,6 +131,8 @@ void parse_nonpositional_args(Context &ctx,
|
||||
ctx.arg.demangle = true;
|
||||
} else if (read_flag("-dynamic")) {
|
||||
ctx.arg.dynamic = true;
|
||||
} else if (read_joined("-l")) {
|
||||
remaining.push_back("-l" + std::string(arg));
|
||||
} else if (read_flag("-lto_library")) {
|
||||
} else if (read_arg("-o")) {
|
||||
ctx.arg.output = arg;
|
||||
@ -136,7 +147,7 @@ void parse_nonpositional_args(Context &ctx,
|
||||
} else {
|
||||
if (args[0][0] == '-')
|
||||
Fatal(ctx) << "unknown command line option: " << args[0];
|
||||
remaining.push_back(args[0]);
|
||||
remaining.push_back(std::string(args[0]));
|
||||
args = args.subspan(1);
|
||||
}
|
||||
}
|
||||
|
@ -153,7 +153,7 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
|
||||
ctx.cmdline_args = expand_response_files(ctx, argv);
|
||||
std::vector<std::string_view> file_args;
|
||||
std::vector<std::string> file_args;
|
||||
parse_nonpositional_args(ctx, file_args);
|
||||
|
||||
for (std::string_view arg : file_args)
|
||||
|
@ -470,7 +470,7 @@ std::vector<TextDylib> parse_tbd(Context &ctx, MappedFile<Context> *mf);
|
||||
//
|
||||
|
||||
void parse_nonpositional_args(Context &ctx,
|
||||
std::vector<std::string_view> &remaining);
|
||||
std::vector<std::string> &remaining);
|
||||
|
||||
//
|
||||
// main.cc
|
||||
|
Loading…
Reference in New Issue
Block a user