From f64ebc82689605fe443368fe798ea34be9c8d028 Mon Sep 17 00:00:00 2001 From: Adam Izraelevitz Date: Thu, 31 Aug 2017 23:28:49 -0700 Subject: Added option to emit final annotations (#649) * Added option to emit final annotations * Removed extra > from output-anno-file * Removed other extra > from input-anno-file --- src/main/scala/firrtl/Driver.scala | 12 ++++++++++++ src/main/scala/firrtl/ExecutionOptionsManager.scala | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala index 1f0741fd..76a2e4f8 100644 --- a/src/main/scala/firrtl/Driver.scala +++ b/src/main/scala/firrtl/Driver.scala @@ -202,6 +202,18 @@ object Driver { "" // Should we return something different here? } + // If set, emit final annotations to a file + optionsManager.firrtlOptions.outputAnnotationFileName match { + case "" => + case file => + val filename = optionsManager.getBuildFileName("anno", file) + val outputFile = new java.io.PrintWriter(filename) + finalState.annotations.map { + case annos => outputFile.write(annos.annotations.mkString("\n")) + } + outputFile.close() + } + FirrtlExecutionSuccess(firrtlConfig.compilerName, emittedRes) } } diff --git a/src/main/scala/firrtl/ExecutionOptionsManager.scala b/src/main/scala/firrtl/ExecutionOptionsManager.scala index 8aa23f70..e0bd1975 100644 --- a/src/main/scala/firrtl/ExecutionOptionsManager.scala +++ b/src/main/scala/firrtl/ExecutionOptionsManager.scala @@ -155,6 +155,7 @@ case class FirrtlExecutionOptions( customTransforms: Seq[Transform] = List.empty, annotations: List[Annotation] = List.empty, annotationFileNameOverride: String = "", + outputAnnotationFileName: String = "", forceAppendAnnoFile: Boolean = false, emitOneFilePerModule: Boolean = false, dontCheckCombLoops: Boolean = false, @@ -283,8 +284,8 @@ trait HasFirrtlOptions { parser.opt[String]("annotation-file") .abbr("faf") - .valueName (""). - foreach { x => + .valueName ("") + .foreach { x => firrtlOptions = firrtlOptions.copy(annotationFileNameOverride = x) }.text { "use this to override the default annotation file name, default is empty" @@ -298,6 +299,15 @@ trait HasFirrtlOptions { "use this to force appending annotation file to annotations being passed in through optionsManager" } + parser.opt[String]("output-annotation-file") + .abbr("foaf") + .valueName ("") + .foreach { x => + firrtlOptions = firrtlOptions.copy(outputAnnotationFileName = x) + }.text { + "use this to set the annotation output file" + } + parser.opt[String]("compiler") .abbr("X") .valueName ("") -- cgit v1.2.3