xref: /XiangShan/build.sc (revision 0332e41a0dc16a255af760785f16ed0f812c6aeb)
12102afb5SLinJiaweiimport os.Path
22102afb5SLinJiaweiimport mill._
32102afb5SLinJiaweiimport mill.modules.Util
42102afb5SLinJiaweiimport scalalib._
52905e463SZihao Yuimport coursier.maven.MavenRepository
62905e463SZihao Yu
72905e463SZihao Yuobject CustomZincWorkerModule extends ZincWorkerModule {
8*0332e41aSlinjiawei  def repositories() = Seq(
9*0332e41aSlinjiawei    MavenRepository("https://maven.aliyun.com/repository/public"),
10*0332e41aSlinjiawei    MavenRepository("https://maven.aliyun.com/repository/apache-snapshots")
112905e463SZihao Yu  )
122905e463SZihao Yu}
132905e463SZihao Yu
14*0332e41aSlinjiaweitrait CommonModule extends ScalaModule {
152102afb5SLinJiawei  override def scalaVersion = "2.12.10"
16*0332e41aSlinjiawei
172102afb5SLinJiawei  override def scalacOptions = Seq("-Xsource:2.11")
18*0332e41aSlinjiawei
192102afb5SLinJiawei  override def zincWorker = CustomZincWorkerModule
20*0332e41aSlinjiawei
212102afb5SLinJiawei  private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0"
22*0332e41aSlinjiawei
232102afb5SLinJiawei  override def compileIvyDeps = Agg(macroParadise)
24*0332e41aSlinjiawei
252102afb5SLinJiawei  override def scalacPluginIvyDeps = Agg(macroParadise)
262905e463SZihao Yu}
272905e463SZihao Yu
282102afb5SLinJiaweiobject `rocket-chip` extends SbtModule with CommonModule {
292102afb5SLinJiawei
30*0332e41aSlinjiawei  val rocketChisel = Agg(
31*0332e41aSlinjiawei    ivy"edu.berkeley.cs::chisel3:3.3.1"
32*0332e41aSlinjiawei  )
33*0332e41aSlinjiawei
342102afb5SLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
352102afb5SLinJiawei    ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}",
362102afb5SLinJiawei    ivy"org.json4s::json4s-jackson:3.6.1"
37*0332e41aSlinjiawei  ) ++ rocketChisel
382102afb5SLinJiawei
392102afb5SLinJiawei
402102afb5SLinJiawei  object `api-config-chipsalliance` extends CommonModule {
412102afb5SLinJiawei    override def millSourcePath = super.millSourcePath / 'design / 'craft
422102afb5SLinJiawei  }
432102afb5SLinJiawei
442102afb5SLinJiawei  object macros extends SbtModule with CommonModule
452102afb5SLinJiawei
462102afb5SLinJiawei  object hardfloat extends SbtModule with CommonModule {
47*0332e41aSlinjiawei    override def ivyDeps = super.ivyDeps() ++ rocketChisel
482102afb5SLinJiawei  }
492102afb5SLinJiawei
502102afb5SLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(
51*0332e41aSlinjiawei    `api-config-chipsalliance`, macros, hardfloat
522102afb5SLinJiawei  )
532102afb5SLinJiawei
542102afb5SLinJiawei}
552102afb5SLinJiawei
562102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule {
572102afb5SLinJiawei  override def millSourcePath = millOuterCtx.millSourcePath
58*0332e41aSlinjiawei
592102afb5SLinJiawei  override def forkArgs = Seq("-Xmx10G")
60*0332e41aSlinjiawei
612102afb5SLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
62ee54eb88SZihao Yu    ivy"edu.berkeley.cs::chisel3:3.3.2"
632905e463SZihao Yu  )
64*0332e41aSlinjiawei
652102afb5SLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
662905e463SZihao Yu
672905e463SZihao Yu  object test extends Tests {
682102afb5SLinJiawei    override def ivyDeps = super.ivyDeps() ++ Agg(
696aea7ec5SLinJiawei      ivy"org.scalatest::scalatest:3.0.4",
702209d540SLinJiawei      ivy"edu.berkeley.cs::chisel-iotesters:1.2+",
712209d540SLinJiawei      ivy"edu.berkeley.cs::chiseltest:0.2.1"
726aea7ec5SLinJiawei    )
732102afb5SLinJiawei
742102afb5SLinJiawei    def testFrameworks = Seq(
752102afb5SLinJiawei      "org.scalatest.tools.Framework"
762102afb5SLinJiawei    )
772102afb5SLinJiawei
78fc85214eSLinJiawei    def testOnly(args: String*) = T.command {
79fc85214eSLinJiawei      super.runMain("org.scalatest.tools.Runner", args: _*)
80fc85214eSLinJiawei    }
812905e463SZihao Yu  }
822905e463SZihao Yu
832905e463SZihao Yu}
842905e463SZihao Yu
85