diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2023-11-22 14:13:57 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-22 14:13:57 +0100 |
| commit | 8a56bb3b5f185b5d08b5fee3daac7be796fefdcc (patch) | |
| tree | 4d4c42c8ee736f3d074060c5556841dc62d3e4c0 /src/main.cpp | |
| parent | 37e79f9cca3e8331876de59ba724f05bf8c79139 (diff) | |
| parent | 0ca39c70a51b6f8236c30e010af045303739dbeb (diff) | |
Merge pull request #2944 from Kelimion/microarch-help
Add -microarch:?
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp index 79c2b3561..b8abe94f4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1876,6 +1876,7 @@ gb_internal void print_show_help(String const arg0, String const &command) { print_usage_line(2, "Examples:"); print_usage_line(3, "-microarch:sandybridge"); print_usage_line(3, "-microarch:native"); + print_usage_line(3, "-microarch:? for a list"); print_usage_line(0, ""); print_usage_line(1, "-reloc-mode:<string>"); @@ -2518,6 +2519,49 @@ int main(int arg_count, char const **arg_ptr) { // return 1; // } + // Check chosen microarchitecture. If not found or ?, print list. + bool print_microarch_list = true; + if (build_context.microarch.len == 0) { + // Autodetect, no need to print list. + print_microarch_list = false; + } else { + String march_list = target_microarch_list[build_context.metrics.arch]; + String_Iterator it = {march_list, 0}; + for (;;) { + String str = string_split_iterator(&it, ','); + if (str == "") break; + if (str == build_context.microarch) { + // Found matching microarch + print_microarch_list = false; + break; + } + } + } + + if (print_microarch_list) { + if (build_context.microarch != "?") { + gb_printf("Unknown microarchitecture '%.*s'.\n", LIT(build_context.microarch)); + } + gb_printf("Possible -microarch values for target %.*s are:\n", LIT(target_arch_names[build_context.metrics.arch])); + gb_printf("\n"); + + String march_list = target_microarch_list[build_context.metrics.arch]; + String_Iterator it = {march_list, 0}; + + String default_march = make_string_c(get_default_microarchitecture()); + + for (;;) { + String str = string_split_iterator(&it, ','); + if (str == "") break; + if (str == default_march) { + gb_printf("\t%.*s (default)\n", LIT(str)); + } else { + gb_printf("\t%.*s\n", LIT(str)); + } + } + return 0; + } + // Set and check build paths... if (!init_build_paths(init_filename)) { return 1; |