3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-09-10 19:51:27 +00:00

Maintain logging ABI compatiblity with YosysHQ Verific Extensions

The YosysHQ Verific Extensions are compiled separately using their own
stripped-down version of the Yosys headers. To maintain ABI
compatibility with older extension builds post C++-ification of Yosys's
logging APIs, which are backwards compatible on the API but not ABI
level, this commit adds ABI compatible versions of a subset of the old
logging API used by the extensions.
This commit is contained in:
Jannis Harder 2025-09-09 10:23:15 +02:00
parent dc22ec7e79
commit 38e2cf7d48
2 changed files with 89 additions and 0 deletions

View file

@ -633,6 +633,9 @@ $(eval $(call add_include_file,backends/rtlil/rtlil_backend.h))
OBJS += kernel/driver.o kernel/register.o kernel/rtlil.o kernel/log.o kernel/calc.o kernel/yosys.o kernel/io.o kernel/gzip.o
OBJS += kernel/log_help.o
ifeq ($(ENABLE_VERIFIC_YOSYSHQ_EXTENSIONS),1)
OBJS += kernel/log_compat.o
endif
OBJS += kernel/binding.o kernel/tclapi.o
OBJS += kernel/cellaigs.o kernel/celledges.o kernel/cost.o kernel/satgen.o kernel/scopeinfo.o kernel/qcsat.o kernel/mem.o kernel/ffmerge.o kernel/ff.o kernel/yw.o kernel/json.o kernel/fmt.o kernel/sexpr.o
OBJS += kernel/drivertools.o kernel/functional.o

86
kernel/log_compat.cc Normal file
View file

@ -0,0 +1,86 @@
/*
* yosys -- Yosys Open SYnthesis Suite
*
* Copyright (C) 2012 Claire Xenia Wolf <claire@yosyshq.com>
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
*/
#include "kernel/log.h"
YOSYS_NAMESPACE_BEGIN
// ABI compatibility for the YosysHQ Verific Extensions
// The YosysHQ Verific Extensions are compiled separately using their own
// stripped-down version of the Yosys headers. To maintain ABI compatibility
// with older extension builds post C++-ification of Yosys's logging APIs,
// which are backwards compatible on the API but not ABI level, this file
// provides ABI compatible versions of a subset of the old logging API used by
// the extensions.
void log_cmd_error(const char *format, ...)
{
va_list ap;
va_start(ap, format);
std::string formatted = vstringf(format, ap);
va_end(ap);
log_formatted_cmd_error(formatted);
}
void log_warning(const char *format, ...)
{
va_list ap;
va_start(ap, format);
std::string formatted = vstringf(format, ap);
va_end(ap);
log_formatted_warning("Warning: ", formatted);
}
void log_warning_noprefix(const char *format, ...)
{
va_list ap;
va_start(ap, format);
std::string formatted = vstringf(format, ap);
va_end(ap);
log_formatted_warning("", formatted);
}
void log_error(const char *format, ...)
{
va_list ap;
va_start(ap, format);
std::string formatted = vstringf(format, ap);
va_end(ap);
log_formatted_error(formatted);
}
static inline void log_formatted(std::string const &str)
{
// We use this inline wrapper as the following becomes ambiguous as soon as
// the `log` function below is declared.
return log("%s", str);
}
void log(const char *format, ...)
{
va_list ap;
va_start(ap, format);
std::string formatted = vstringf(format, ap);
va_end(ap);
log_formatted(formatted);
}
YOSYS_NAMESPACE_END