diff options
author | rowanG077 <goemansrowan@gmail.com> | 2023-02-06 16:08:35 +0100 |
---|---|---|
committer | rowanG077 <goemansrowan@gmail.com> | 2023-02-13 10:52:05 +0100 |
commit | 3608c3eb029daf888000350872d81128c2f296ff (patch) | |
tree | 2c6a58e3a7a833e1c199e86508552a5700767313 /common/kernel/log.cc | |
parent | bfa3e047cee0f941ac58ba7dd2907fdfe2e90fc0 (diff) | |
download | nextpnr-3608c3eb029daf888000350872d81128c2f296ff.tar.gz nextpnr-3608c3eb029daf888000350872d81128c2f296ff.tar.bz2 nextpnr-3608c3eb029daf888000350872d81128c2f296ff.zip |
common: Implement Werror flag
Diffstat (limited to 'common/kernel/log.cc')
-rw-r--r-- | common/kernel/log.cc | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/common/kernel/log.cc b/common/kernel/log.cc index 8b1ad43b..a0bdd64e 100644 --- a/common/kernel/log.cc +++ b/common/kernel/log.cc @@ -41,6 +41,7 @@ void (*log_error_atexit)() = NULL; dict<LogLevel, int, loglevel_hash_ops> message_count_by_level; static int log_newline_count = 0; bool had_nonfatal_error = false; +bool log_warn_as_error = false; std::string stringf(const char *fmt, ...) { @@ -128,6 +129,22 @@ void logv_prefixed(const char *prefix, const char *format, va_list ap, LogLevel log_flush(); } +void logv_nonfatal_error(const char *format, va_list ap) +{ + logv_prefixed("ERROR: ", format, ap, LogLevel::ERROR_MSG); + had_nonfatal_error = true; +} + +void logv_error(const char *format, va_list ap) +{ + logv_prefixed("ERROR: ", format, ap, LogLevel::ERROR_MSG); + + if (log_error_atexit) + log_error_atexit(); + + throw log_execution_error_exception(); +} + void log_always(const char *format, ...) { va_list ap; @@ -156,7 +173,10 @@ void log_warning(const char *format, ...) { va_list ap; va_start(ap, format); - logv_prefixed("Warning: ", format, ap, LogLevel::WARNING_MSG); + if (log_warn_as_error) + logv_nonfatal_error(format, ap); + else + logv_prefixed("Warning: ", format, ap, LogLevel::WARNING_MSG); va_end(ap); } @@ -164,12 +184,7 @@ void log_error(const char *format, ...) { va_list ap; va_start(ap, format); - logv_prefixed("ERROR: ", format, ap, LogLevel::ERROR_MSG); - - if (log_error_atexit) - log_error_atexit(); - - throw log_execution_error_exception(); + logv_error(format, ap); } void log_break() @@ -184,9 +199,8 @@ void log_nonfatal_error(const char *format, ...) { va_list ap; va_start(ap, format); - logv_prefixed("ERROR: ", format, ap, LogLevel::ERROR_MSG); + logv_nonfatal_error(format, ap); va_end(ap); - had_nonfatal_error = true; } void log_flush() |