xref: /XiangShan/build.sc (revision fc85214e1a8a2e66291520ba161ee2e1edb69b6d)
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