// See README.md for license details. ThisBuild / scalaVersion := "2.13.10" ThisBuild / version := "0.1.0" ThisBuild / organization := "%ORGANIZATION%" val chiselVersion = "3.5.6" lazy val commonSettings = Seq( // organization := "edu.berkeley.cs", // version := "1.6", assembly / assemblyMergeStrategy := { _ match { case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard case _ => MergeStrategy.first}}, scalacOptions ++= Seq( "-deprecation", "-unchecked", "-Ymacro-annotations"), // fix hierarchy API ) lazy val chiselSettings = Seq( libraryDependencies ++= Seq("edu.berkeley.cs" %% "chisel3" % chiselVersion, "org.apache.commons" % "commons-lang3" % "3.12.0", "org.apache.commons" % "commons-text" % "1.9"), addCompilerPlugin("edu.berkeley.cs" % "chisel3-plugin" % chiselVersion cross CrossVersion.full)) /** * It has been a struggle for us to override settings in subprojects. * An example would be adding a dependency to rocketchip on midas's targetutils library, * or replacing dsptools's maven dependency on chisel with the local chisel project. * * This function works around this by specifying the project's root at src/ and overriding * scalaSource and resourceDirectory. */ def freshProject(name: String, dir: File): Project = { Project(id = name, base = dir / "src") .settings( Compile / scalaSource := baseDirectory.value / "main" / "scala", Compile / resourceDirectory := baseDirectory.value / "main" / "resources" ) } // Rocket-chip dependencies (subsumes making RC a RootProject) lazy val hardfloat = (project in file("./rocket-chip/hardfloat")) .settings(chiselSettings) .settings(commonSettings) .settings(name := "hardfloat", organization := "edu.berkeley.cs") .settings( libraryDependencies ++= Seq( "org.scala-lang" % "scala-reflect" % scalaVersion.value, "org.json4s" %% "json4s-jackson" % "3.6.6", "org.scalatest" %% "scalatest" % "3.2.0" % "test" ) ) lazy val rocketMacros = (project in file("./rocket-chip/macros")) .settings(chiselSettings) .settings(commonSettings) .settings(name := "rocketMacros", organization := "org.chipsalliance") .settings( libraryDependencies ++= Seq( "org.scala-lang" % "scala-reflect" % scalaVersion.value, "org.json4s" %% "json4s-jackson" % "3.6.6", "org.scalatest" %% "scalatest" % "3.2.0" % "test" ) ) lazy val rocketConfig = (project in file("./rocket-chip/cde/cde/src/chipsalliance/rocketchip")) .settings(chiselSettings) .settings(commonSettings) .settings(name := "rocketConfig", organization := "org.chipsalliance") .settings(commonSettings) .settings( libraryDependencies ++= Seq( "org.scala-lang" % "scala-reflect" % scalaVersion.value, "org.json4s" %% "json4s-jackson" % "3.6.6", "org.scalatest" %% "scalatest" % "3.2.0" % "test" ) ) lazy val rocketchip = freshProject("rocketchip", file("./rocket-chip")) .dependsOn(hardfloat, rocketMacros, rocketConfig) .settings(commonSettings) .settings(chiselSettings) .settings(name := "rocketchip", organization := "org.chipsalliance", version := "1.6") .settings( libraryDependencies ++= Seq( "org.scala-lang" % "scala-reflect" % scalaVersion.value, "org.json4s" %% "json4s-jackson" % "3.6.6", "org.scalatest" %% "scalatest" % "3.2.0" % "test" ) ) .settings( // Settings for scalafix semanticdbEnabled := true, semanticdbVersion := "4.7.6", scalacOptions += "-Ywarn-unused" ) lazy val rocketLibDeps = (rocketchip / Keys.libraryDependencies) lazy val blocks = (project in file("./rocket-chip-blocks")) .dependsOn(rocketchip) .settings(chiselSettings) .settings(commonSettings) .settings(name := "blocks", organization := "org.chipsalliance") .settings( libraryDependencies ++= Seq( "org.scala-lang" % "scala-reflect" % scalaVersion.value, "org.json4s" %% "json4s-jackson" % "3.6.6", "org.scalatest" %% "scalatest" % "3.2.0" % "test" ) ) lazy val root = (project in file(".")) .dependsOn(rocketchip) .dependsOn(blocks) .settings( name := "%NAME%", libraryDependencies ++= Seq( "edu.berkeley.cs" %% "chisel3" % chiselVersion, "edu.berkeley.cs" %% "chiseltest" % "0.5.4" % "test" ), scalacOptions ++= Seq( "-language:reflectiveCalls", "-deprecation", "-feature", "-Xcheckinit", "-P:chiselplugin:genBundleElements", ), addCompilerPlugin("edu.berkeley.cs" % "chisel3-plugin" % chiselVersion cross CrossVersion.full), )