mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-29 18:52:30 +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:
		
							parent
							
								
									a137d03c32
								
							
						
					
					
						commit
						75a97241fa
					
				
					 2 changed files with 89 additions and 0 deletions
				
			
		
							
								
								
									
										3
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -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/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 | 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/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/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 | OBJS += kernel/drivertools.o kernel/functional.o | ||||||
|  |  | ||||||
							
								
								
									
										86
									
								
								kernel/log_compat.cc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								kernel/log_compat.cc
									
										
									
									
									
										Normal 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 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue