mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Merged a few fixes for non-posix systems from github.com/Siesh1oo/yosys
(see https://github.com/cliffordwolf/yosys/pull/28)
This commit is contained in:
		
							parent
							
								
									9992026a8d
								
							
						
					
					
						commit
						91704a7853
					
				
					 11 changed files with 52 additions and 13 deletions
				
			
		
							
								
								
									
										2
									
								
								README
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								README
									
										
									
									
									
								
							|  | @ -292,7 +292,7 @@ a recent version of gcc: | ||||||
| This is a bug in the minisat header. It can be fixed by adding spaces before | This is a bug in the minisat header. It can be fixed by adding spaces before | ||||||
| and after each occurrence of PRIi64 in the header file: | and after each occurrence of PRIi64 in the header file: | ||||||
| 
 | 
 | ||||||
| 	 sudo sed -i 's/PRIi64/ & /' /usr/include/minisat/utils/Options.h | 	 sudo sed -i -e 's/PRIi64/ & /' /usr/include/minisat/utils/Options.h | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Roadmap / Large-scale TODOs | Roadmap / Large-scale TODOs | ||||||
|  |  | ||||||
|  | @ -26,6 +26,8 @@ | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
| #include <dirent.h> | #include <dirent.h> | ||||||
|  | #include <errno.h> | ||||||
|  | #include <limits.h> | ||||||
| 
 | 
 | ||||||
| struct Vhdl2verilogPass : public Pass { | struct Vhdl2verilogPass : public Pass { | ||||||
| 	Vhdl2verilogPass() : Pass("vhdl2verilog", "importing VHDL designs using vhdl2verilog") { } | 	Vhdl2verilogPass() : Pass("vhdl2verilog", "importing VHDL designs using vhdl2verilog") { } | ||||||
|  | @ -93,9 +95,12 @@ struct Vhdl2verilogPass : public Pass { | ||||||
| 			log_error("For some reason mkdtemp() failed!\n"); | 			log_error("For some reason mkdtemp() failed!\n"); | ||||||
| 
 | 
 | ||||||
| 		if (!out_file.empty() && out_file[0] != '/') { | 		if (!out_file.empty() && out_file[0] != '/') { | ||||||
| 			char *pwd = get_current_dir_name(); | 			char pwd [PATH_MAX]; | ||||||
|  | 			if (!getcwd(pwd, sizeof(pwd))) { | ||||||
|  | 				log_cmd_error("getcwd failed: %s", strerror(errno)); | ||||||
|  | 				log_abort(); | ||||||
|  | 			} | ||||||
| 			out_file = pwd + ("/" + out_file); | 			out_file = pwd + ("/" + out_file); | ||||||
| 			free(pwd); |  | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		FILE *f = fopen(stringf("%s/files.list", tempdir_name).c_str(), "wt"); | 		FILE *f = fopen(stringf("%s/files.list", tempdir_name).c_str(), "wt"); | ||||||
|  | @ -104,9 +109,12 @@ struct Vhdl2verilogPass : public Pass { | ||||||
| 			if (file.empty()) | 			if (file.empty()) | ||||||
| 				continue; | 				continue; | ||||||
| 			if (file[0] != '/') { | 			if (file[0] != '/') { | ||||||
| 				char *pwd = get_current_dir_name(); | 				char pwd [PATH_MAX]; | ||||||
|  | 				if (!getcwd(pwd, sizeof(pwd))) { | ||||||
|  | 					log_cmd_error("getcwd failed: %s", strerror(errno)); | ||||||
|  | 					log_abort(); | ||||||
|  | 				} | ||||||
| 				file = pwd + ("/" + file); | 				file = pwd + ("/" + file); | ||||||
| 				free(pwd); |  | ||||||
| 			} | 			} | ||||||
| 			fprintf(f, "%s\n", file.c_str()); | 			fprintf(f, "%s\n", file.c_str()); | ||||||
| 			log("Adding '%s' to the file list.\n", file.c_str()); | 			log("Adding '%s' to the file list.\n", file.c_str()); | ||||||
|  |  | ||||||
|  | @ -24,6 +24,7 @@ | ||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
| #include <libgen.h> | #include <libgen.h> | ||||||
| #include <dlfcn.h> | #include <dlfcn.h> | ||||||
|  | #include <errno.h> | ||||||
| 
 | 
 | ||||||
| #include <algorithm> | #include <algorithm> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										16
									
								
								kernel/log.h
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								kernel/log.h
									
										
									
									
									
								
							|  | @ -23,6 +23,8 @@ | ||||||
| #include "kernel/rtlil.h" | #include "kernel/rtlil.h" | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <time.h> | #include <time.h> | ||||||
|  | #include <sys/time.h> | ||||||
|  | #include <sys/resource.h> | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
| extern std::vector<FILE*> log_files; | extern std::vector<FILE*> log_files; | ||||||
|  | @ -65,9 +67,23 @@ struct PerformanceTimer | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	static int64_t query() { | 	static int64_t query() { | ||||||
|  | #if defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0) | ||||||
| 		struct timespec ts; | 		struct timespec ts; | ||||||
| 		clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts); | 		clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts); | ||||||
| 		return int64_t(ts.tv_sec)*1000000000 + ts.tv_nsec; | 		return int64_t(ts.tv_sec)*1000000000 + ts.tv_nsec; | ||||||
|  | #elif defined(RUSAGE_SELF) | ||||||
|  | 		struct rusage rusage; | ||||||
|  | 		int64_t t; | ||||||
|  | 		if (getrusage(RUSAGE_SELF, &rusage) == -1) { | ||||||
|  | 			log_cmd_error("getrusage failed!\n"); | ||||||
|  | 			log_abort(); | ||||||
|  | 		} | ||||||
|  | 		t = 1000000000ULL * (int64_t) rusage.ru_utime.tv_sec + (int64_t) rusage.ru_utime.tv_usec * 1000ULL; | ||||||
|  | 		t += 1000000000ULL * (int64_t) rusage.ru_stime.tv_sec + (int64_t) rusage.ru_stime.tv_usec * 1000ULL; | ||||||
|  | 		return t; | ||||||
|  | #else | ||||||
|  | 	#error Dont know how to measure per-process CPU time. Need alternative method (times()/clocks()/gettimeofday()?). | ||||||
|  | #endif | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	void reset() { | 	void reset() { | ||||||
|  |  | ||||||
|  | @ -23,6 +23,7 @@ | ||||||
| #include <string.h> | #include <string.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|  | #include <errno.h> | ||||||
| 
 | 
 | ||||||
| using namespace REGISTER_INTERN; | using namespace REGISTER_INTERN; | ||||||
| #define MAX_REG_COUNT 1000 | #define MAX_REG_COUNT 1000 | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ | ||||||
| 
 | 
 | ||||||
| #include <limits.h> | #include <limits.h> | ||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
| #include <signal.h> | #include <csignal> | ||||||
| #include <cinttypes> | #include <cinttypes> | ||||||
| 
 | 
 | ||||||
| #include <minisat/core/Solver.h> | #include <minisat/core/Solver.h> | ||||||
|  | @ -170,14 +170,18 @@ contradiction: | ||||||
| #endif | #endif | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	sighandler_t old_alarm_sighandler = NULL; | 	struct sigaction sig_action; | ||||||
|  | 	struct sigaction old_sig_action; | ||||||
| 	int old_alarm_timeout = 0; | 	int old_alarm_timeout = 0; | ||||||
| 
 | 
 | ||||||
| 	if (solverTimeout > 0) { | 	if (solverTimeout > 0) { | ||||||
|  | 		sig_action.sa_handler = alarmHandler; | ||||||
|  | 		sigemptyset(&sig_action.sa_mask); | ||||||
|  | 		sig_action.sa_flags = SA_RESTART; | ||||||
| 		alarmHandlerThis = this; | 		alarmHandlerThis = this; | ||||||
| 		alarmHandlerTimeout = clock() + solverTimeout*CLOCKS_PER_SEC; | 		alarmHandlerTimeout = clock() + solverTimeout*CLOCKS_PER_SEC; | ||||||
| 		old_alarm_timeout = alarm(0); | 		old_alarm_timeout = alarm(0); | ||||||
| 		old_alarm_sighandler = signal(SIGALRM, alarmHandler); | 		sigaction(SIGALRM, &sig_action, &old_sig_action); | ||||||
| 		alarm(1); | 		alarm(1); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -187,7 +191,7 @@ contradiction: | ||||||
| 		if (alarmHandlerTimeout == 0) | 		if (alarmHandlerTimeout == 0) | ||||||
| 			solverTimoutStatus = true; | 			solverTimoutStatus = true; | ||||||
| 		alarm(0); | 		alarm(0); | ||||||
| 		signal(SIGALRM, old_alarm_sighandler); | 		sigaction(SIGALRM, &old_sig_action, NULL); | ||||||
| 		alarm(old_alarm_timeout); | 		alarm(old_alarm_timeout); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -19,10 +19,11 @@ | ||||||
| 
 | 
 | ||||||
| #include "ezsat.h" | #include "ezsat.h" | ||||||
| 
 | 
 | ||||||
|  | #include <cmath> | ||||||
| #include <algorithm> | #include <algorithm> | ||||||
|  | #include <cassert> | ||||||
| 
 | 
 | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <assert.h> |  | ||||||
| 
 | 
 | ||||||
| const int ezSAT::TRUE = 1; | const int ezSAT::TRUE = 1; | ||||||
| const int ezSAT::FALSE = 2; | const int ezSAT::FALSE = 2; | ||||||
|  |  | ||||||
|  | @ -43,7 +43,9 @@ | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
| #include <dirent.h> | #include <dirent.h> | ||||||
|  | #include <cerrno> | ||||||
| #include <sstream> | #include <sstream> | ||||||
|  | #include <climits> | ||||||
| 
 | 
 | ||||||
| #include "blifparse.h" | #include "blifparse.h" | ||||||
| 
 | 
 | ||||||
|  | @ -973,7 +975,11 @@ struct AbcPass : public Pass { | ||||||
| 		int lut_mode = 0; | 		int lut_mode = 0; | ||||||
| 
 | 
 | ||||||
| 		size_t argidx; | 		size_t argidx; | ||||||
| 		char *pwd = get_current_dir_name(); | 		char pwd [PATH_MAX]; | ||||||
|  | 		if (!getcwd(pwd, sizeof(pwd))) { | ||||||
|  | 			log_cmd_error("getcwd failed: %s\n", strerror(errno)); | ||||||
|  | 			log_abort(); | ||||||
|  | 		} | ||||||
| 		for (argidx = 1; argidx < args.size(); argidx++) { | 		for (argidx = 1; argidx < args.size(); argidx++) { | ||||||
| 			std::string arg = args[argidx]; | 			std::string arg = args[argidx]; | ||||||
| 			if (arg == "-exe" && argidx+1 < args.size()) { | 			if (arg == "-exe" && argidx+1 < args.size()) { | ||||||
|  | @ -1020,7 +1026,6 @@ struct AbcPass : public Pass { | ||||||
| 			} | 			} | ||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
| 		free(pwd); |  | ||||||
| 		extra_args(args, argidx, design); | 		extra_args(args, argidx, design); | ||||||
| 
 | 
 | ||||||
| 		if (lut_mode != 0 && !liberty_file.empty()) | 		if (lut_mode != 0 && !liberty_file.empty()) | ||||||
|  |  | ||||||
|  | @ -23,6 +23,7 @@ | ||||||
| #include "kernel/log.h" | #include "kernel/log.h" | ||||||
| #include <string.h> | #include <string.h> | ||||||
| #include <fnmatch.h> | #include <fnmatch.h> | ||||||
|  | #include <errno.h> | ||||||
| 
 | 
 | ||||||
| using RTLIL::id2cstr; | using RTLIL::id2cstr; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -23,8 +23,9 @@ | ||||||
| #include "kernel/consteval.h" | #include "kernel/consteval.h" | ||||||
| #include "kernel/celltypes.h" | #include "kernel/celltypes.h" | ||||||
| #include "fsmdata.h" | #include "fsmdata.h" | ||||||
| #include "math.h" | #include <math.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
|  | #include <errno.h> | ||||||
| 
 | 
 | ||||||
| static void fm_set_fsm_print(RTLIL::Cell *cell, RTLIL::Module *module, FsmData &fsm_data, const char *prefix, FILE *f) | static void fm_set_fsm_print(RTLIL::Cell *cell, RTLIL::Module *module, FsmData &fsm_data, const char *prefix, FILE *f) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -21,6 +21,7 @@ | ||||||
| #include "kernel/log.h" | #include "kernel/log.h" | ||||||
| #include "libparse.h" | #include "libparse.h" | ||||||
| #include <string.h> | #include <string.h> | ||||||
|  | #include <errno.h> | ||||||
| 
 | 
 | ||||||
| using namespace PASS_DFFLIBMAP; | using namespace PASS_DFFLIBMAP; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue