summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2014-02-13 18:56:36 +0100
committerClifford Wolf <clifford@clifford.at>2014-02-13 18:56:36 +0100
commita1239416185aebca03d131dc3ebe3e3d45c5a9f3 (patch)
tree62840db7b318c90f175acfda0e365202aa040165
parentcd9e8741a71502c303c6f25d02bb2259a7dd7ff3 (diff)
Updated ABC
-rw-r--r--Makefile2
-rw-r--r--passes/abc/abc.cc23
2 files changed, 24 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 72bd6d1e..89e4a915 100644
--- a/Makefile
+++ b/Makefile
@@ -37,7 +37,7 @@ OBJS = kernel/version_$(GIT_REV).o
# is just a symlink to your actual ABC working directory, as 'make mrproper'
# will remove the 'abc' directory and you do not want to accidentally
# delete your work on ABC..
-ABCREV = d7d412483aa9
+ABCREV = 2058c8ccea68
ABCPULL = 1
-include Makefile.conf
diff --git a/passes/abc/abc.cc b/passes/abc/abc.cc
index dae3a22f..eaecb791 100644
--- a/passes/abc/abc.cc
+++ b/passes/abc/abc.cc
@@ -640,9 +640,32 @@ static void abc_module(RTLIL::Design *design, RTLIL::Module *current_module, std
f = popen(buffer.c_str(), "r");
if (f == NULL)
log_error("Opening pipe to `%s' for reading failed: %s\n", buffer.c_str(), strerror(errno));
+#if 0
char logbuf[1024];
while (fgets(logbuf, 1024, f) != NULL)
log("ABC: %s", logbuf);
+#else
+ bool got_cr = false;
+ std::string linebuf;
+ char logbuf[1024];
+ while (fgets(logbuf, 1024, f) != NULL)
+ for (char *p = logbuf; *p; p++) {
+ if (*p == '\r') {
+ got_cr = true;
+ continue;
+ }
+ if (*p == '\n') {
+ log("ABC: %s\n", linebuf.c_str());
+ got_cr = false, linebuf.clear();
+ continue;
+ }
+ if (got_cr)
+ got_cr = false, linebuf.clear();
+ linebuf += *p;
+ }
+ if (!linebuf.empty())
+ log("ABC: %s\n", linebuf.c_str());
+#endif
errno = 0;
int ret = pclose(f);
if (ret < 0)