From a96c775a7301645b27486a5e663c75fca460f577 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 7 Jan 2018 16:36:13 +0100 Subject: Add support for "yosys -E" Signed-off-by: Clifford Wolf --- passes/cmds/qwp.cc | 1 + passes/cmds/select.cc | 2 ++ passes/cmds/show.cc | 5 +++++ passes/cmds/stat.cc | 1 + passes/cmds/tee.cc | 1 + passes/cmds/write_file.cc | 1 + 6 files changed, 11 insertions(+) (limited to 'passes/cmds') diff --git a/passes/cmds/qwp.cc b/passes/cmds/qwp.cc index 1b800b6df..f2dfa760e 100644 --- a/passes/cmds/qwp.cc +++ b/passes/cmds/qwp.cc @@ -835,6 +835,7 @@ struct QwpPass : public Pass { } if (args[argidx] == "-dump" && argidx+1 < args.size()) { config.dump_file.open(args[++argidx], std::ofstream::trunc); + yosys_output_files.insert(args[argidx]); continue; } break; diff --git a/passes/cmds/select.cc b/passes/cmds/select.cc index 7d2f4262b..ae301040a 100644 --- a/passes/cmds/select.cc +++ b/passes/cmds/select.cc @@ -1263,6 +1263,7 @@ struct SelectPass : public Pass { log_cmd_error("Option -read can not be combined with a selection expression.\n"); std::ifstream f(read_file); + yosys_input_files.insert(read_file); if (f.fail()) log_error("Can't open '%s' for reading: %s\n", read_file.c_str(), strerror(errno)); @@ -1331,6 +1332,7 @@ struct SelectPass : public Pass { FILE *f = NULL; if (!write_file.empty()) { f = fopen(write_file.c_str(), "w"); + yosys_output_files.insert(write_file); if (f == NULL) log_error("Can't open '%s' for writing: %s\n", write_file.c_str(), strerror(errno)); } diff --git a/passes/cmds/show.cc b/passes/cmds/show.cc index 02624cf30..56e1122bf 100644 --- a/passes/cmds/show.cc +++ b/passes/cmds/show.cc @@ -681,6 +681,7 @@ struct ShowPass : public Pass { bool flag_enum = false; bool flag_abbreviate = true; bool flag_notitle = false; + bool custom_prefix = false; RTLIL::IdString colorattr; size_t argidx; @@ -697,6 +698,7 @@ struct ShowPass : public Pass { } if (arg == "-prefix" && argidx+1 < args.size()) { prefix = args[++argidx]; + custom_prefix = true; continue; } if (arg == "-color" && argidx+2 < args.size()) { @@ -782,6 +784,7 @@ struct ShowPass : public Pass { for (auto filename : libfiles) { std::ifstream f; f.open(filename.c_str()); + yosys_input_files.insert(filename); if (f.fail()) log_error("Can't open lib file `%s'.\n", filename.c_str()); RTLIL::Design *lib = new RTLIL::Design; @@ -797,6 +800,8 @@ struct ShowPass : public Pass { log("Writing dot description to `%s'.\n", dot_file.c_str()); FILE *f = fopen(dot_file.c_str(), "w"); + if (custom_prefix) + yosys_output_files.insert(dot_file); if (f == NULL) { for (auto lib : libs) delete lib; diff --git a/passes/cmds/stat.cc b/passes/cmds/stat.cc index a887fbb6a..e52a192db 100644 --- a/passes/cmds/stat.cc +++ b/passes/cmds/stat.cc @@ -190,6 +190,7 @@ void read_liberty_cellarea(dict &cell_area, string liberty_fil { std::ifstream f; f.open(liberty_file.c_str()); + yosys_input_files.insert(liberty_file); if (f.fail()) log_cmd_error("Can't open liberty file `%s': %s\n", liberty_file.c_str(), strerror(errno)); LibertyParser libparser(f); diff --git a/passes/cmds/tee.cc b/passes/cmds/tee.cc index 3db2dbf0e..b68c089e9 100644 --- a/passes/cmds/tee.cc +++ b/passes/cmds/tee.cc @@ -65,6 +65,7 @@ struct TeePass : public Pass { if ((args[argidx] == "-o" || args[argidx] == "-a") && argidx+1 < args.size()) { const char *open_mode = args[argidx] == "-o" ? "w" : "a+"; FILE *f = fopen(args[++argidx].c_str(), open_mode); + yosys_input_files.insert(args[argidx]); if (f == NULL) { for (auto cf : files_to_close) fclose(cf); diff --git a/passes/cmds/write_file.cc b/passes/cmds/write_file.cc index b78265933..70892a945 100644 --- a/passes/cmds/write_file.cc +++ b/passes/cmds/write_file.cc @@ -67,6 +67,7 @@ struct WriteFileFrontend : public Frontend { extra_args(f, filename, args, argidx); FILE *of = fopen(output_filename.c_str(), append_mode ? "a" : "w"); + yosys_output_files.insert(output_filename); char buffer[64 * 1024]; int bytes; -- cgit v1.2.3