aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/Driver.scala17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala
index fb897936..0fdfa768 100644
--- a/src/main/scala/firrtl/Driver.scala
+++ b/src/main/scala/firrtl/Driver.scala
@@ -4,6 +4,7 @@ package firrtl
import scala.collection._
import scala.io.Source
+import scala.sys.process.{BasicIO,stringSeqToProcess}
import java.io.{File, FileNotFoundException}
import net.jcazevedo.moultingyaml._
@@ -257,4 +258,20 @@ object FileUtils {
result
}
}
+
+ /** Indicate if an external command (executable) is available.
+ *
+ * @param cmd the command/executable
+ * @return true if ```cmd``` is found in PATH.
+ */
+ def isCommandAvailable(cmd: String): Boolean = {
+ // Eat any output.
+ val sb = new StringBuffer
+ val ioToDevNull = BasicIO(false, sb, None)
+
+ Seq("bash", "-c", "which %s".format(cmd)).run(ioToDevNull).exitValue == 0
+ }
+
+ /** isVCSAvailable - flag indicating vcs is available (for Verilog compilation and testing. */
+ lazy val isVCSAvailable: Boolean = isCommandAvailable("vcs")
}