xref: /XiangShan/build.sc (revision 7b2bea82c44dd9822bc8bcc9a697a03e1d97779f)
1import os.Path
2import mill._
3import mill.modules.Util
4import scalalib._
5import coursier.maven.MavenRepository
6
7object CustomZincWorkerModule extends ZincWorkerModule {
8  def repositories() = Seq(
9    MavenRepository("https://maven.aliyun.com/repository/public"),
10    MavenRepository("https://maven.aliyun.com/repository/apache-snapshots")
11  )
12}
13
14trait CommonModule extends ScalaModule {
15  override def scalaVersion = "2.12.10"
16
17  override def scalacOptions = Seq("-Xsource:2.11")
18
19  override def zincWorker = CustomZincWorkerModule
20
21  private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0"
22
23  override def compileIvyDeps = Agg(macroParadise)
24
25  override def scalacPluginIvyDeps = Agg(macroParadise)
26}
27
28val rocketChisel = Agg(
29  ivy"edu.berkeley.cs::chisel3:3.3.1"
30)
31
32object `rocket-chip` extends SbtModule with CommonModule {
33
34  override def ivyDeps = super.ivyDeps() ++ Agg(
35    ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}",
36    ivy"org.json4s::json4s-jackson:3.6.1"
37  ) ++ rocketChisel
38
39
40  object `api-config-chipsalliance` extends CommonModule {
41    override def millSourcePath = super.millSourcePath / 'design / 'craft
42  }
43
44  object macros extends SbtModule with CommonModule
45
46  object hardfloat extends SbtModule with CommonModule {
47    override def ivyDeps = super.ivyDeps() ++ rocketChisel
48  }
49
50  override def moduleDeps = super.moduleDeps ++ Seq(
51    `api-config-chipsalliance`, macros, hardfloat
52  )
53
54}
55
56object `block-inclusivecache-sifive` extends CommonModule {
57  override def ivyDeps = super.ivyDeps() ++ rocketChisel
58
59  override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache
60
61  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
62}
63
64
65object XiangShan extends CommonModule with SbtModule {
66  override def millSourcePath = millOuterCtx.millSourcePath
67
68  override def forkArgs = Seq("-Xmx10G")
69
70  override def ivyDeps = super.ivyDeps() ++ Agg(
71    ivy"edu.berkeley.cs::chisel3:3.3.2"
72  )
73
74  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`, `block-inclusivecache-sifive`)
75
76  object test extends Tests {
77    override def ivyDeps = super.ivyDeps() ++ Agg(
78      ivy"org.scalatest::scalatest:3.0.4",
79      ivy"edu.berkeley.cs::chisel-iotesters:1.2+",
80      ivy"edu.berkeley.cs::chiseltest:0.2.1"
81    )
82
83    def testFrameworks = Seq(
84      "org.scalatest.tools.Framework"
85    )
86
87    def testOnly(args: String*) = T.command {
88      super.runMain("org.scalatest.tools.Runner", args: _*)
89    }
90  }
91
92}
93
94