From 9dc8753a1485d9481cbcc12f662ed4de3496bd3d Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Tue, 9 Nov 2021 22:52:26 +0100 Subject: [PATCH] [timings-export] Improve help messages Also make `clang` happy as concerns the build settings switch/case. --- src/main.cpp | 147 +++++++++++++++++++++++++++------------------------ 1 file changed, 78 insertions(+), 69 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 617be5b02..64077e300 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1256,87 +1256,88 @@ bool parse_build_flags(Array args) { break; } - case BuildFlag_Debug: + case BuildFlag_Debug: { build_context.ODIN_DEBUG = true; break; - - case BuildFlag_DisableAssert: + } + case BuildFlag_DisableAssert: { build_context.ODIN_DISABLE_ASSERT = true; break; - - case BuildFlag_NoBoundsCheck: + } + case BuildFlag_NoBoundsCheck: { build_context.no_bounds_check = true; break; - - case BuildFlag_NoDynamicLiterals: + } + case BuildFlag_NoDynamicLiterals: { build_context.no_dynamic_literals = true; break; - - case BuildFlag_NoCRT: + } + case BuildFlag_NoCRT: { build_context.no_crt = true; break; - - case BuildFlag_NoEntryPoint: + } + case BuildFlag_NoEntryPoint: { build_context.no_entry_point = true; break; - - case BuildFlag_UseLLD: + } + case BuildFlag_UseLLD: { build_context.use_lld = true; break; - - case BuildFlag_UseSeparateModules: + } + case BuildFlag_UseSeparateModules: { build_context.use_separate_modules = true; break; - - case BuildFlag_ThreadedChecker: + } + case BuildFlag_ThreadedChecker: { #if defined(DEFAULT_TO_THREADED_CHECKER) gb_printf_err("-threaded-checker is the default on this platform\n"); bad_flags = true; #endif build_context.threaded_checker = true; break; - - case BuildFlag_NoThreadedChecker: + } + case BuildFlag_NoThreadedChecker: { #if !defined(DEFAULT_TO_THREADED_CHECKER) gb_printf_err("-no-threaded-checker is the default on this platform\n"); bad_flags = true; #endif build_context.threaded_checker = false; break; - - case BuildFlag_ShowDebugMessages: + } + case BuildFlag_ShowDebugMessages: { build_context.show_debug_messages = true; break; - - case BuildFlag_Vet: + } + case BuildFlag_Vet: { build_context.vet = true; break; - case BuildFlag_VetExtra: + } + case BuildFlag_VetExtra: { build_context.vet = true; build_context.vet_extra = true; break; - - case BuildFlag_UseLLVMApi: + } + case BuildFlag_UseLLVMApi: { gb_printf_err("-llvm-api flag is not required any more\n"); bad_flags = true; break; - - case BuildFlag_IgnoreUnknownAttributes: + } + case BuildFlag_IgnoreUnknownAttributes: { build_context.ignore_unknown_attributes = true; break; - - case BuildFlag_ExtraLinkerFlags: + } + case BuildFlag_ExtraLinkerFlags: { GB_ASSERT(value.kind == ExactValue_String); build_context.extra_linker_flags = value.value_string; break; - - case BuildFlag_Microarch: + } + case BuildFlag_Microarch: { GB_ASSERT(value.kind == ExactValue_String); build_context.microarch = value.value_string; string_to_lower(&build_context.microarch); break; - - case BuildFlag_TestName: + } + case BuildFlag_TestName: { GB_ASSERT(value.kind == ExactValue_String); { String name = value.value_string; @@ -1350,35 +1351,35 @@ bool parse_build_flags(Array args) { // NOTE(bill): Allow for multiple -test-name continue; } - - case BuildFlag_DisallowDo: + } + case BuildFlag_DisallowDo: { build_context.disallow_do = true; break; - - case BuildFlag_DefaultToNilAllocator: + } + case BuildFlag_DefaultToNilAllocator: { build_context.ODIN_DEFAULT_TO_NIL_ALLOCATOR = true; break; - - case BuildFlag_InsertSemicolon: + } + case BuildFlag_InsertSemicolon: { gb_printf_err("-insert-semicolon flag is not required any more\n"); bad_flags = true; break; - - case BuildFlag_StrictStyle: + } + case BuildFlag_StrictStyle: { if (build_context.strict_style_init_only) { gb_printf_err("-strict-style and -strict-style-init-only cannot be used together\n"); } build_context.strict_style = true; break; - case BuildFlag_StrictStyleInitOnly: + } + case BuildFlag_StrictStyleInitOnly: { if (build_context.strict_style) { gb_printf_err("-strict-style and -strict-style-init-only cannot be used together\n"); } build_context.strict_style_init_only = true; break; - - - case BuildFlag_Compact: + } + case BuildFlag_Compact: { if (!build_context.query_data_set_settings.ok) { gb_printf_err("Invalid use of -compact flag, only allowed with 'odin query'\n"); bad_flags = true; @@ -1386,8 +1387,8 @@ bool parse_build_flags(Array args) { build_context.query_data_set_settings.compact = true; } break; - - case BuildFlag_GlobalDefinitions: + } + case BuildFlag_GlobalDefinitions: { if (!build_context.query_data_set_settings.ok) { gb_printf_err("Invalid use of -global-definitions flag, only allowed with 'odin query'\n"); bad_flags = true; @@ -1398,7 +1399,8 @@ bool parse_build_flags(Array args) { build_context.query_data_set_settings.kind = QueryDataSet_GlobalDefinitions; } break; - case BuildFlag_GoToDefinitions: + } + case BuildFlag_GoToDefinitions: { if (!build_context.query_data_set_settings.ok) { gb_printf_err("Invalid use of -go-to-definitions flag, only allowed with 'odin query'\n"); bad_flags = true; @@ -1409,17 +1411,20 @@ bool parse_build_flags(Array args) { build_context.query_data_set_settings.kind = QueryDataSet_GoToDefinitions; } break; - - case BuildFlag_Short: + } + case BuildFlag_Short: { build_context.cmd_doc_flags |= CmdDocFlag_Short; break; - case BuildFlag_AllPackages: + } + case BuildFlag_AllPackages: { build_context.cmd_doc_flags |= CmdDocFlag_AllPackages; break; - case BuildFlag_DocFormat: + } + case BuildFlag_DocFormat: { build_context.cmd_doc_flags |= CmdDocFlag_DocFormat; break; - case BuildFlag_IgnoreWarnings: + } + case BuildFlag_IgnoreWarnings: { if (build_context.warnings_as_errors) { gb_printf_err("-ignore-warnings cannot be used with -warnings-as-errors\n"); bad_flags = true; @@ -1427,7 +1432,8 @@ bool parse_build_flags(Array args) { build_context.ignore_warnings = true; } break; - case BuildFlag_WarningsAsErrors: + } + case BuildFlag_WarningsAsErrors: { if (build_context.ignore_warnings) { gb_printf_err("-warnings-as-errors cannot be used with -ignore-warnings\n"); bad_flags = true; @@ -1435,21 +1441,21 @@ bool parse_build_flags(Array args) { build_context.warnings_as_errors = true; } break; - - case BuildFlag_VerboseErrors: + } + case BuildFlag_VerboseErrors: { build_context.show_error_line = true; break; - - case BuildFlag_InternalIgnoreLazy: + } + case BuildFlag_InternalIgnoreLazy: { build_context.ignore_lazy = true; break; - + } #if defined(GB_SYSTEM_WINDOWS) - case BuildFlag_IgnoreVsSearch: + case BuildFlag_IgnoreVsSearch: { GB_ASSERT(value.kind == ExactValue_Invalid); build_context.ignore_microsoft_magic = true; break; - + } case BuildFlag_ResourceFile: { GB_ASSERT(value.kind == ExactValue_String); String path = value.value_string; @@ -1537,15 +1543,15 @@ bool parse_build_flags(Array args) { } if ((!(build_context.export_timings_format == TimingsExportUnspecified)) && (build_context.export_timings_file.len == 0)) { - gb_printf_err("`-export-timings:format` requires `-export-timings-file:filename` to be specified as well\n"); + gb_printf_err("`-export-timings:` requires `-export-timings-file:` to be specified as well\n"); bad_flags = true; } else if ((build_context.export_timings_format == TimingsExportUnspecified) && (build_context.export_timings_file.len > 0)) { - gb_printf_err("`-export-timings-file:filename` requires `-export-timings:format` to be specified as well\n"); + gb_printf_err("`-export-timings-file:` requires `-export-timings:` to be specified as well\n"); bad_flags = true; } if (build_context.export_timings_format && !(build_context.show_timings || build_context.show_more_timings)) { - gb_printf_err("`-export-timings:format` requires `-show-timings` or `-show-more-timings` to be present\n"); + gb_printf_err("`-export-timings:` requires `-show-timings` or `-show-more-timings` to be present\n"); bad_flags = true; } @@ -1898,13 +1904,16 @@ void print_show_help(String const arg0, String const &command) { print_usage_line(2, "Shows an advanced overview of the timings of different stages within the compiler in milliseconds"); print_usage_line(0, ""); - print_usage_line(1, "-export-timings"); + print_usage_line(1, "-export-timings:"); print_usage_line(2, "Export timings to one of a few formats. Requires `-show-timings` or `-show-more-timings`"); - print_usage_line(2, "Accepted values: json, csv"); + print_usage_line(2, "Available options:"); + print_usage_line(3, "-export-timings:json Export compile time stats to JSON"); + print_usage_line(3, "-export-timings:csv Export compile time stats to CSV"); print_usage_line(0, ""); - print_usage_line(1, "-export-timings-file:filename"); - print_usage_line(2, "Specify the filename for `-export-timings`."); + print_usage_line(1, "-export-timings-file:"); + print_usage_line(2, "Specify the filename for `-export-timings`"); + print_usage_line(2, "Example: -export-timings-file:timings.json"); print_usage_line(0, ""); print_usage_line(1, "-thread-count:");