diff options
author | William Speirs <bill.speirs@gmail.com> | 2014-10-14 17:07:30 -0400 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2014-10-15 00:48:59 +0200 |
commit | 0352dbfd65072f42824852b2f5b925e7d9865a90 (patch) | |
tree | 6de3dfc255ce82f624eadca9206cb1e760784896 /kernel | |
parent | fad0b0c506f2d7cb1158a3dac53139b8dec7a04e (diff) | |
download | yosys-0352dbfd65072f42824852b2f5b925e7d9865a90.tar.gz yosys-0352dbfd65072f42824852b2f5b925e7d9865a90.tar.bz2 yosys-0352dbfd65072f42824852b2f5b925e7d9865a90.zip |
Fixed log so it will compile under Visual Studio
- Included an implementation of gettimeofday
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/log.cc | 25 | ||||
-rw-r--r-- | kernel/log.h | 22 |
2 files changed, 39 insertions, 8 deletions
diff --git a/kernel/log.cc b/kernel/log.cc index 87a75410d..4585e7eff 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..d4b21110c 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -23,10 +23,10 @@ #define LOG_H #include <time.h> -#include <sys/time.h> #ifndef _WIN32 -# include <sys/resource.h> + #include <sys/time.h> + #include <sys/resource.h> #endif // from libs/sha1/sha1.h @@ -51,12 +51,20 @@ 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)); +#if !defined(__GNUC__) && !defined(__clang__) + void logv_error(const char *format, va_list ap); + void log(const char *format, ...); + void log_header(const char *format, ...); + void log_error(const char *format, ...); + void log_cmd_error(const char *format, ...); +#else + 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)); +#endif void log_spacer(); void log_push(); |