Revert "Merge remote-tracking branch 'origin/eddie/shregmap_improve' into xc7mux"
[yosys.git] / kernel / log.cc
index 400a549dd90486e6dad9cb9c9876b864ae04c78f..a7820950c9dcdc3f4ea45b240931af5c3d7b02b6 100644 (file)
@@ -56,6 +56,10 @@ int log_verbose_level;
 string log_last_error;
 void (*log_error_atexit)() = NULL;
 
+int log_make_debug = 0;
+int log_force_debug = 0;
+int log_debug_suppressed = 0;
+
 vector<int> header_count;
 pool<RTLIL::IdString> log_id_cache;
 vector<shared_str> string_buf;
@@ -92,6 +96,9 @@ void logv(const char *format, va_list ap)
                format++;
        }
 
+       if (log_make_debug && !ys_debug(1))
+               return;
+
        std::string str = vstringf(format, ap);
 
        if (str.empty())
@@ -223,6 +230,9 @@ static void logv_warning_with_prefix(const char *prefix,
        }
        else
        {
+               int bak_log_make_debug = log_make_debug;
+               log_make_debug = 0;
+
                for (auto &re : log_werror_regexes)
                        if (std::regex_search(message, re))
                                log_error("%s",  message.c_str());
@@ -247,6 +257,7 @@ static void logv_warning_with_prefix(const char *prefix,
                }
 
                log_warnings_count++;
+               log_make_debug = bak_log_make_debug;
        }
 }
 
@@ -266,11 +277,22 @@ void log_file_warning(const std::string &filename, int lineno,
        va_list ap;
        va_start(ap, format);
        std::string prefix = stringf("%s:%d: Warning: ",
-                                    filename.c_str(), lineno);
+                       filename.c_str(), lineno);
        logv_warning_with_prefix(prefix.c_str(), format, ap);
        va_end(ap);
 }
 
+void log_file_info(const std::string &filename, int lineno,
+                      const char *format, ...)
+{
+       va_list ap;
+       va_start(ap, format);
+       std::string fmt = stringf("%s:%d: Info: %s",
+                       filename.c_str(), lineno, format);
+       logv(fmt.c_str(), ap);
+       va_end(ap);
+}
+
 YS_ATTRIBUTE(noreturn)
 static void logv_error_with_prefix(const char *prefix,
                                    const char *format, va_list ap)
@@ -278,6 +300,9 @@ static void logv_error_with_prefix(const char *prefix,
 #ifdef EMSCRIPTEN
        auto backup_log_files = log_files;
 #endif
+       int bak_log_make_debug = log_make_debug;
+       log_make_debug = 0;
+       log_suppressed();
 
        if (log_errfile != NULL)
                log_files.push_back(log_errfile);
@@ -291,6 +316,8 @@ static void logv_error_with_prefix(const char *prefix,
        log("%s%s", prefix, log_last_error.c_str());
        log_flush();
 
+       log_make_debug = bak_log_make_debug;
+
        if (log_error_atexit)
                log_error_atexit();