diff options
| author | Clifford Wolf <clifford@clifford.at> | 2014-10-15 01:20:14 +0200 | 
|---|---|---|
| committer | Clifford Wolf <clifford@clifford.at> | 2014-10-15 01:20:14 +0200 | 
| commit | 8cea352a6aafa80d397d8a6a7d195c1378dcb324 (patch) | |
| tree | cc670a0dadca8f6df7a1d24e1f00fa649d40f29a /kernel | |
| parent | 2873a8444ee5dbd0a3d034fb4a7a877c680be45d (diff) | |
| parent | 1fc6208ec05af672c7c6b7973b0eba1295bca5f4 (diff) | |
| download | yosys-8cea352a6aafa80d397d8a6a7d195c1378dcb324.tar.gz yosys-8cea352a6aafa80d397d8a6a7d195c1378dcb324.tar.bz2 yosys-8cea352a6aafa80d397d8a6a7d195c1378dcb324.zip  | |
Merge branch 'win32'
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/log.cc | 25 | ||||
| -rw-r--r-- | kernel/log.h | 12 | ||||
| -rw-r--r-- | kernel/rtlil.h | 6 | ||||
| -rw-r--r-- | kernel/yosys.cc | 16 | ||||
| -rw-r--r-- | kernel/yosys.h | 11 | 
5 files changed, 44 insertions, 26 deletions
diff --git a/kernel/log.cc b/kernel/log.cc index 87a75410d..2cae6a636 100644 --- a/kernel/log.cc +++ b/kernel/log.cc @@ -21,7 +21,10 @@  #include "libs/sha1/sha1.h"  #include "backends/ilang/ilang_backend.h" -#include <sys/time.h> +#ifndef _WIN32 +#  include <sys/time.h> +#endif +  #include <stdlib.h>  #include <stdio.h>  #include <string.h> @@ -48,6 +51,26 @@ static struct timeval initial_tv = { 0, 0 };  static bool next_print_log = false;  static int log_newline_count = 0; +#ifdef _WIN32 +// this will get time information and return it in timeval, simulating gettimeofday() +int gettimeofday(struct timeval *tv, struct timezone *tz) +{ +	LARGE_INTEGER counter; +	LARGE_INTEGER freq; + +	QueryPerformanceFrequency(&freq); +	QueryPerformanceCounter(&counter); + +	counter.QuadPart *= 1000000; +	counter.QuadPart /= freq.QuadPart; + +	tv->tv_sec = counter.QuadPart / 1000000; +	tv->tv_usec = counter.QuadPart % 1000000; + +	return 0; +} +#endif +  void logv(const char *format, va_list ap)  {  	while (format[0] == '\n' && format[1] != 0) { diff --git a/kernel/log.h b/kernel/log.h index b4182b5f3..904ba4759 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -23,9 +23,9 @@  #define LOG_H  #include <time.h> -#include <sys/time.h>  #ifndef _WIN32 +#  include <sys/time.h>  #  include <sys/resource.h>  #endif @@ -51,12 +51,12 @@ extern int log_verbose_level;  void logv(const char *format, va_list ap);  void logv_header(const char *format, va_list ap); -void logv_error(const char *format, va_list ap) __attribute__ ((noreturn)); -void log(const char *format, ...)  __attribute__ ((format (printf, 1, 2))); -void log_header(const char *format, ...) __attribute__ ((format (printf, 1, 2))); -void log_error(const char *format, ...) __attribute__ ((format (printf, 1, 2))) __attribute__ ((noreturn)); -void log_cmd_error(const char *format, ...) __attribute__ ((format (printf, 1, 2))) __attribute__ ((noreturn)); +void logv_error(const char *format, va_list ap) __attribute__((noreturn)); +void log(const char *format, ...)  __attribute__((format(printf, 1, 2))); +void log_header(const char *format, ...) __attribute__((format(printf, 1, 2))); +void log_error(const char *format, ...) __attribute__((format(printf, 1, 2))) __attribute__((noreturn)); +void log_cmd_error(const char *format, ...) __attribute__((format(printf, 1, 2))) __attribute__((noreturn));  void log_spacer();  void log_push(); diff --git a/kernel/rtlil.h b/kernel/rtlil.h index 8df0bfe19..5629c8652 100644 --- a/kernel/rtlil.h +++ b/kernel/rtlil.h @@ -920,23 +920,25 @@ struct RTLIL::SigBit  	}  }; -struct RTLIL::SigSpecIterator +struct RTLIL::SigSpecIterator : public std::iterator<std::input_iterator_tag, RTLIL::SigSpec>  {  	RTLIL::SigSpec *sig_p;  	int index;  	inline RTLIL::SigBit &operator*() const;  	inline bool operator!=(const RTLIL::SigSpecIterator &other) const { return index != other.index; } +	inline bool operator==(const RTLIL::SigSpecIterator &other) const { return index == other.index; }  	inline void operator++() { index++; }  }; -struct RTLIL::SigSpecConstIterator +struct RTLIL::SigSpecConstIterator : public std::iterator<std::input_iterator_tag, RTLIL::SigSpec>  {  	const RTLIL::SigSpec *sig_p;  	int index;  	inline const RTLIL::SigBit &operator*() const;  	inline bool operator!=(const RTLIL::SigSpecConstIterator &other) const { return index != other.index; } +	inline bool operator==(const RTLIL::SigSpecIterator &other) const { return index == other.index; }  	inline void operator++() { index++; }  }; diff --git a/kernel/yosys.cc b/kernel/yosys.cc index e50bfcbe6..ba3049c53 100644 --- a/kernel/yosys.cc +++ b/kernel/yosys.cc @@ -172,22 +172,6 @@ bool patmatch(const char *pattern, const char *string)  	return false;  } -int readsome(std::istream &f, char *s, int n) -{ -	int rc = f.readsome(s, n); - -	// win32 sometimes returns 0 on a non-empty stream.. -	if (rc == 0) { -		int c = f.get(); -		if (c != EOF) { -			*s = c; -			rc = 1; -		} -	} - -	return rc; -} -  int run_command(const std::string &command, std::function<void(const std::string&)> process_line)  {  	if (!process_line) diff --git a/kernel/yosys.h b/kernel/yosys.h index 5a37dd3c5..239146d77 100644 --- a/kernel/yosys.h +++ b/kernel/yosys.h @@ -58,6 +58,12 @@  #include <string.h>  #include <stdio.h> +#ifndef _YOSYS_ +#  error It looks like you are trying to build Yosys with the config defines set. \ +         When building Yosys with a custom make system, make sure you set all the \ +	 defines the Yosys Makefile would set for your build configuration. +#endif +  #ifdef YOSYS_ENABLE_TCL  #  include <tcl.h>  #endif @@ -77,6 +83,10 @@  #  define FINAL  #endif +#if !defined(__GNUC__) && !defined(__clang__) +#  define __attribute__(...) +#endif +  YOSYS_NAMESPACE_BEGIN  namespace RTLIL { @@ -90,7 +100,6 @@ std::string stringf(const char *fmt, ...) __attribute__ ((format (printf, 1, 2))  std::string vstringf(const char *fmt, va_list ap);  std::string next_token(std::string &text, const char *sep);  bool patmatch(const char *pattern, const char *string); -int readsome(std::istream &f, char *s, int n);  int run_command(const std::string &command, std::function<void(const std::string&)> process_line = std::function<void(const std::string&)>());  std::string make_temp_file(std::string template_str = "/tmp/yosys_XXXXXX");  std::string make_temp_dir(std::string template_str = "/tmp/yosys_XXXXXX");  | 
