summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-06-09 00:07:26 +0200
committerClifford Wolf <clifford@clifford.at>2013-06-09 00:07:26 +0200
commitbf59a28f80fc321b139772804d52e441194040f7 (patch)
treec1b2c871be22a499c55af13ca4d6b7068b5e63bc /kernel
parent6c8a424872ff2925c4c87fce6d9a9c9fc74a0800 (diff)
Look for yosys-abc and yosys-svgviewer where the main exe is
Diffstat (limited to 'kernel')
-rw-r--r--kernel/driver.cc17
-rw-r--r--kernel/register.h5
2 files changed, 21 insertions, 1 deletions
diff --git a/kernel/driver.cc b/kernel/driver.cc
index b43df868..c24b293f 100644
--- a/kernel/driver.cc
+++ b/kernel/driver.cc
@@ -22,6 +22,7 @@
#include <readline/history.h>
#include <string.h>
#include <unistd.h>
+#include <libgen.h>
#include <dlfcn.h>
#include "kernel/rtlil.h"
@@ -343,6 +344,22 @@ struct TclPass : public Pass {
} TclPass;
#endif
+std::string rewrite_yosys_exe(std::string exe)
+{
+ char buffer[1024];
+ ssize_t buflen = readlink("/proc/self/exe", buffer, sizeof(buffer)-1);
+
+ if (buflen < 0)
+ return exe;
+
+ buffer[buflen] = 0;
+ std::string newexe = stringf("%s/%s", dirname(buffer), exe.c_str());
+ if (access(newexe.c_str(), X_OK) == 0)
+ return newexe;
+
+ return exe;
+}
+
int main(int argc, char **argv)
{
std::string frontend_command = "auto";
diff --git a/kernel/register.h b/kernel/register.h
index 5bd8216c..849549ac 100644
--- a/kernel/register.h
+++ b/kernel/register.h
@@ -32,6 +32,9 @@ extern Tcl_Interp *yosys_get_tcl_interp();
extern RTLIL::Design *yosys_get_tcl_design();
#endif
+// implemented in driver.cc
+std::string rewrite_yosys_exe(std::string exe);
+
struct Pass
{
std::string pass_name, short_help;
@@ -83,7 +86,7 @@ struct Backend : Pass
static void backend_call(RTLIL::Design *design, FILE *f, std::string filename, std::vector<std::string> args);
};
-// implemented in kernel/select.cc
+// implemented in passes/cmds/select.cc
extern void handle_extra_select_args(Pass *pass, std::vector<std::string> args, size_t argidx, size_t args_size, RTLIL::Design *design);
namespace REGISTER_INTERN {