From: Clifford Wolf Date: Fri, 17 Oct 2014 12:01:47 +0000 (+0200) Subject: Various win32 / vs build fixes X-Git-Tag: yosys-0.4~38 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=468ae923748a01b2763bafa3cf5fba883fe06479;p=yosys.git Various win32 / vs build fixes --- diff --git a/Makefile b/Makefile index 2d80c7027..e1c91eaf7 100644 --- a/Makefile +++ b/Makefile @@ -324,8 +324,11 @@ ifeq ($(ENABLE_ABC),1) endif echo -en 'This is Yosys $(YOSYS_VER) for Win32.\r\n' > yosys-win32-$(YOSYS_VER)/readme.txt echo -en 'Documentation at http://www.clifford.at/yosys/.\r\n' >> yosys-win32-$(YOSYS_VER)/readme.txt - zip yosys-win32-$(YOSYS_VER)/genfiles.zip $(GENFILES) + find backends frontends kernel libs passes techlibs -name '*.d' | xargs sed -e 's,^[^ ]*:,,; s, ,\n,g; s, *\\,,;' \ + -e 's,/[^/]*/\.\./,/,g; s,'"$PWD/"',,' | sort -u | sed '/^[^/]/ ! d; s,$,\r,;' > srcfiles.txt + zip yosys-win32-$(YOSYS_VER)/genfiles.zip $(GENFILES) srcfiles.txt zip -r yosys-win32-$(YOSYS_VER).zip yosys-win32-$(YOSYS_VER)/ + rm -f srcfiles.txt endif config-clean: clean diff --git a/kernel/log.h b/kernel/log.h index 10250cb9d..81d01ace7 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -55,8 +55,8 @@ 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)); +_NORETURN_ void log_error(const char *format, ...) __attribute__((format(printf, 1, 2))) __attribute__((noreturn)); +_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.cc b/kernel/rtlil.cc index 5a94008d8..36443c5ac 100644 --- a/kernel/rtlil.cc +++ b/kernel/rtlil.cc @@ -2204,7 +2204,7 @@ void RTLIL::SigSpec::unpack() const that->hash_ = 0; } -#define DJB2(_hash, _value) do { (_hash) = (((_hash) << 5) + (_hash)) + (_value); } while (0) +#define DJB2(_hash, _value) (_hash) = (((_hash) << 5) + (_hash)) + (_value) void RTLIL::SigSpec::hash() const { diff --git a/kernel/yosys.cc b/kernel/yosys.cc index ed90a6f33..26665e5b2 100644 --- a/kernel/yosys.cc +++ b/kernel/yosys.cc @@ -269,12 +269,12 @@ std::string make_temp_dir(std::string template_str) #ifdef _WIN32 bool check_file_exists(std::string filename, bool) { - return _access(filename.c_str(), 0); + return _access(filename.c_str(), 0) == 0; } #else bool check_file_exists(std::string filename, bool is_exec) { - return access(filename.c_str(), is_exec ? X_OK : F_OK); + return access(filename.c_str(), is_exec ? X_OK : F_OK) == 0; } #endif @@ -497,10 +497,10 @@ std::string proc_share_dirname() { std::string proc_self_path = proc_self_dirname(); std::string proc_share_path = proc_self_path + "share/"; - if (check_file_exists(proc_share_path, true) == 0) + if (check_file_exists(proc_share_path, true)) return proc_share_path; proc_share_path = proc_self_path + "../share/yosys/"; - if (check_file_exists(proc_share_path, true) == 0) + if (check_file_exists(proc_share_path, true)) return proc_share_path; log_error("proc_share_dirname: unable to determine share/ directory!\n"); } diff --git a/kernel/yosys.h b/kernel/yosys.h index 562cec121..a0a42be9b 100644 --- a/kernel/yosys.h +++ b/kernel/yosys.h @@ -56,6 +56,7 @@ #include #include #include +#include #include #ifndef _YOSYS_ @@ -68,17 +69,18 @@ # include #endif -// a few platform specific things #ifdef _WIN32 -# ifndef NOMINMAX -# define NOMINMAX 1 -# endif +# undef NOMINMAX +# define NOMINMAX 1 +# undef YY_NO_UNISTD_H +# define YY_NO_UNISTD_H 1 +# undef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS 1 + # include -# include // takes care of a number of typedefs # include # include -// these are always a bit dangerous :-) # define strtok_r strtok_s # define strdup _strdup # define snprintf _snprintf @@ -89,7 +91,6 @@ # define PATH_MAX MAX_PATH #endif - #define PRIVATE_NAMESPACE_BEGIN namespace { #define PRIVATE_NAMESPACE_END } #define YOSYS_NAMESPACE_BEGIN namespace Yosys { @@ -128,7 +129,7 @@ bool patmatch(const char *pattern, const char *string); int run_command(const std::string &command, std::function process_line = std::function()); std::string make_temp_file(std::string template_str = "/tmp/yosys_XXXXXX"); std::string make_temp_dir(std::string template_str = "/tmp/yosys_XXXXXX"); -bool check_file(std::string filename, bool is_exec = false); +bool check_file_exists(std::string filename, bool is_exec = false); void remove_directory(std::string dirname); template int GetSize(const T &obj) { return obj.size(); } diff --git a/libs/ezsat/ezsat.h b/libs/ezsat/ezsat.h index cac6ff0f7..5c8c1ed0c 100644 --- a/libs/ezsat/ezsat.h +++ b/libs/ezsat/ezsat.h @@ -25,6 +25,7 @@ #include #include #include +#include class ezSAT { diff --git a/passes/cmds/select.cc b/passes/cmds/select.cc index af0df07b3..8e42fe15f 100644 --- a/passes/cmds/select.cc +++ b/passes/cmds/select.cc @@ -1142,7 +1142,7 @@ struct SelectPass : public Pass { if (list_mode || count_mode || !write_file.empty()) { - #define LOG_OBJECT(...) do { if (list_mode) log(__VA_ARGS__); if (f != NULL) fprintf(f, __VA_ARGS__); total_count++; } while (0) + #define LOG_OBJECT(...) { if (list_mode) log(__VA_ARGS__); if (f != NULL) fprintf(f, __VA_ARGS__); total_count++; } int total_count = 0; FILE *f = NULL; if (!write_file.empty()) { @@ -1161,16 +1161,16 @@ struct SelectPass : public Pass { if (sel->selected_module(mod_it.first)) { for (auto &it : mod_it.second->wires_) if (sel->selected_member(mod_it.first, it.first)) - LOG_OBJECT("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)); + LOG_OBJECT("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)) for (auto &it : mod_it.second->memories) if (sel->selected_member(mod_it.first, it.first)) - LOG_OBJECT("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)); + LOG_OBJECT("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)) for (auto &it : mod_it.second->cells_) if (sel->selected_member(mod_it.first, it.first)) - LOG_OBJECT("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)); + LOG_OBJECT("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)) for (auto &it : mod_it.second->processes) if (sel->selected_member(mod_it.first, it.first)) - LOG_OBJECT("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)); + LOG_OBJECT("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)) } } if (count_mode) diff --git a/passes/hierarchy/hierarchy.cc b/passes/hierarchy/hierarchy.cc index 2a7e96346..0ea26eb9e 100644 --- a/passes/hierarchy/hierarchy.cc +++ b/passes/hierarchy/hierarchy.cc @@ -174,7 +174,7 @@ bool expand_module(RTLIL::Design *design, RTLIL::Module *module, bool flag_check for (auto &dir : libdirs) { filename = dir + "/" + RTLIL::unescape_id(cell->type) + ".v"; - if (access(filename.c_str(), F_OK) == 0) { + if (check_file_exists(filename)) { std::vector args; args.push_back(filename); Frontend::frontend_call(design, NULL, filename, "verilog"); @@ -182,7 +182,7 @@ bool expand_module(RTLIL::Design *design, RTLIL::Module *module, bool flag_check } filename = dir + "/" + RTLIL::unescape_id(cell->type) + ".il"; - if (access(filename.c_str(), F_OK) == 0) { + if (check_file_exists(filename)) { std::vector args; args.push_back(filename); Frontend::frontend_call(design, NULL, filename, "ilang");