Disabled cover() for non-linux builds
authorClifford Wolf <clifford@clifford.at>
Fri, 25 Jul 2014 10:22:37 +0000 (12:22 +0200)
committerClifford Wolf <clifford@clifford.at>
Fri, 25 Jul 2014 10:27:36 +0000 (12:27 +0200)
kernel/driver.cc
kernel/log.h
passes/cmds/cover.cc

index a4556fb1b162305dbe00a3f1419f1e4f6023fb55..3c185e44bd04b50449995c9aed278079422ff58c 100644 (file)
@@ -749,7 +749,7 @@ int main(int argc, char **argv)
        delete yosys_design;
        yosys_design = NULL;
 
-#ifndef NDEBUG
+#ifdef COVER_ACTIVE
        if (getenv("YOSYS_COVER_DIR") || getenv("YOSYS_COVER_FILE"))
        {
                char filename_buffer[4096];
index 18ea528a0f61bbc92e3445f9668cbf4ff60bb3e5..1658800dd700c82baa909b69484d7121e508843f 100644 (file)
@@ -75,7 +75,8 @@ void log_cell(RTLIL::Cell *cell, std::string indent = "");
 // This is the magic behind the code coverage counters
 // ---------------------------------------------------
 
-#ifndef NDEBUG
+#if defined(__linux__) && !defined(NDEBUG)
+#define COVER_ACTIVE
 
 #define cover(_id) do { \
     static CoverData __d __attribute__((section("yosys_cover_list"), aligned(1))) = { __FILE__, __FUNCTION__, _id, __LINE__, 0 }; \
index 0a96c0b23c9e9141de6e9d0bd6ef37f9fa6aaaf1..ac72ba53a0494985c5c62bbbc17013c58c0acc36 100644 (file)
@@ -71,6 +71,9 @@ struct CoverPass : public Pass {
                log("    gawk '{ p[$3] = $1; c[$3] += $2; } END { for (i in p)\n");
                log("      printf \"%%-60s %%10d %%s\\n\", p[i], c[i], i; }' {files} | sort -k3\n");
                log("\n");
+               log("\n");
+               log("Coverage counters are only available in debug builds of Yosys for Linux.\n");
+               log("\n");
        }
        virtual void execute(std::vector<std::string> args, RTLIL::Design *design)
        {
@@ -113,7 +116,7 @@ struct CoverPass : public Pass {
                        log("\n");
                }
 
-#ifndef NDEBUG
+#ifdef COVER_ACTIVE
                for (auto &it : get_coverage_data()) {
                        if (!patterns.empty()) {
                                for (auto &p : patterns)
@@ -131,7 +134,7 @@ struct CoverPass : public Pass {
                for (auto f : out_files)
                        fclose(f);
 
-               log_cmd_error("Coverage counters are only available in debug builds of Yosys.");
+               log_cmd_error("Coverage counters are only available in debug builds of Yosys for Linux.\n");
 #endif
 
                for (auto f : out_files)