Various win32 / vs build fixes
authorClifford Wolf <clifford@clifford.at>
Fri, 17 Oct 2014 12:01:47 +0000 (14:01 +0200)
committerClifford Wolf <clifford@clifford.at>
Fri, 17 Oct 2014 12:01:47 +0000 (14:01 +0200)
Makefile
kernel/log.h
kernel/rtlil.cc
kernel/yosys.cc
kernel/yosys.h
libs/ezsat/ezsat.h
passes/cmds/select.cc
passes/hierarchy/hierarchy.cc

index 2d80c70273f5941d3407d6271dbdb214428c97cb..e1c91eaf7524d401a82ec94466878993b12c27b2 100644 (file)
--- 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
index 10250cb9d68e0062bd74f6bfdb07ab2114c3d737..81d01ace7fcd74fd263b19364bd606dd208e4a41 100644 (file)
@@ -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();
index 5a94008d83023b4ae342377204275f4917366cf6..36443c5ac81944dffec0f9e06556badf180136b5 100644 (file)
@@ -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
 {
index ed90a6f3303898d2f3f71f32e14ac223ee3aba05..26665e5b22642b89f2e0d94df83a5c401382f8a7 100644 (file)
@@ -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");
 }
index 562cec12166d446f4193ebe3d27bd1080c8bdfb9..a0a42be9be6fe94d36463adf6421a8adb2e449f6 100644 (file)
@@ -56,6 +56,7 @@
 #include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdint.h>
 #include <stdio.h>
 
 #ifndef _YOSYS_
 #  include <tcl.h>
 #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 <windows.h>
-#  include <stdint.h> // takes care of a number of typedefs
 #  include <io.h>
 #  include <direct.h>
 
-// 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<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");
-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<typename T> int GetSize(const T &obj) { return obj.size(); }
index cac6ff0f70e2395f71f8c3bdafab2847ffef6e14..5c8c1ed0c4aef6df892afc0c334f82d42e3c777e 100644 (file)
@@ -25,6 +25,7 @@
 #include <vector>
 #include <string>
 #include <stdio.h>
+#include <stdint.h>
 
 class ezSAT
 {
index af0df07b357484dc9f3f37eb60613df0c81ccc22..8e42fe15f073a0856ae8510ddd92d1c199220d27 100644 (file)
@@ -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)
index 2a7e96346fe59c7f19ce7d44c36a07f62a24ddd9..0ea26eb9e9f6100766de50bff4a782727d783a3d 100644 (file)
@@ -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<std::string> 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<std::string> args;
                                        args.push_back(filename);
                                        Frontend::frontend_call(design, NULL, filename, "ilang");