12905e463SZihao Yuimport mill._, scalalib._ 22905e463SZihao Yuimport coursier.maven.MavenRepository 32905e463SZihao Yu 42905e463SZihao Yuobject CustomZincWorkerModule extends ZincWorkerModule { 52905e463SZihao Yu def repositories() = super.repositories ++ Seq( 62905e463SZihao Yu MavenRepository("https://oss.sonatype.org/content/repositories/releases"), 72905e463SZihao Yu MavenRepository("https://oss.sonatype.org/content/repositories/snapshots") 82905e463SZihao Yu ) 92905e463SZihao Yu} 102905e463SZihao Yu 112905e463SZihao Yu/** 122905e463SZihao Yu * Scala 2.12 module that is source-compatible with 2.11. 132905e463SZihao Yu * This is due to Chisel's use of structural types. See 142905e463SZihao Yu * https://github.com/freechipsproject/chisel3/issues/606 152905e463SZihao Yu */ 162905e463SZihao Yutrait HasXsource211 extends ScalaModule { 172905e463SZihao Yu override def scalacOptions = T { 182905e463SZihao Yu super.scalacOptions() ++ Seq( 192905e463SZihao Yu "-deprecation", 202905e463SZihao Yu "-unchecked", 212905e463SZihao Yu "-Xsource:2.11" 222905e463SZihao Yu ) 232905e463SZihao Yu } 242905e463SZihao Yu} 252905e463SZihao Yu 262905e463SZihao Yutrait HasChisel3 extends ScalaModule { 272905e463SZihao Yu override def ivyDeps = Agg( 28dba2f661SLinJiawei ivy"edu.berkeley.cs::chisel3:3.3.1" 292905e463SZihao Yu ) 302905e463SZihao Yu} 312905e463SZihao Yu 322905e463SZihao Yutrait HasChiselTests extends CrossSbtModule { 332905e463SZihao Yu object test extends Tests { 346aea7ec5SLinJiawei override def ivyDeps = Agg( 356aea7ec5SLinJiawei ivy"org.scalatest::scalatest:3.0.4", 362209d540SLinJiawei ivy"edu.berkeley.cs::chisel-iotesters:1.2+", 372209d540SLinJiawei ivy"edu.berkeley.cs::chiseltest:0.2.1" 386aea7ec5SLinJiawei ) 392905e463SZihao Yu def testFrameworks = Seq("org.scalatest.tools.Framework") 40*fc85214eSLinJiawei def testOnly(args: String*) = T.command { 41*fc85214eSLinJiawei super.runMain("org.scalatest.tools.Runner", args: _*) 42*fc85214eSLinJiawei } 432905e463SZihao Yu } 442905e463SZihao Yu} 452905e463SZihao Yu 462905e463SZihao Yutrait HasMacroParadise extends ScalaModule { 472905e463SZihao Yu // Enable macro paradise for @chiselName et al 482905e463SZihao Yu val macroPlugins = Agg(ivy"org.scalamacros:::paradise:2.1.0") 492905e463SZihao Yu def scalacPluginIvyDeps = macroPlugins 502905e463SZihao Yu def compileIvyDeps = macroPlugins 512905e463SZihao Yu} 522905e463SZihao Yu 532905e463SZihao Yuobject chiselModule extends CrossSbtModule with HasChisel3 with HasChiselTests with HasXsource211 with HasMacroParadise { 542905e463SZihao Yu def zincWorker = CustomZincWorkerModule 552905e463SZihao Yu def crossScalaVersion = "2.11.12" 56ac13cc4cSLinJiawei def forkArgs = Seq("-Xmx3G") 572905e463SZihao Yu} 582905e463SZihao Yu 59