xref: /XiangShan/build.sc (revision 3136ee6a0600eb77c23effda5389fe3f858a813c)
1import os.Path
2import mill._
3import mill.modules.Util
4import scalalib._
5import coursier.maven.MavenRepository
6
7object CustomZincWorkerModule extends ZincWorkerModule {
8  def repositories() = super.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 chisel = Agg(
29  ivy"edu.berkeley.cs::chisel3:3.4.0"
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  ) ++ chisel
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() ++ chisel
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() ++ chisel
58
59  override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache
60
61  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
62}
63
64object chiseltest extends CommonModule with SbtModule {
65  override def ivyDeps = super.ivyDeps() ++ Agg(
66	ivy"edu.berkeley.cs::treadle:1.3.0",
67	ivy"org.scalatest::scalatest:3.0.8",
68	ivy"com.lihaoyi::utest:0.7.4"
69  ) ++ chisel
70  object test extends Tests {
71	def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3")
72	def testFrameworks = Seq("org.scalatest.tools.Framework")
73  }
74}
75
76
77object XiangShan extends CommonModule with SbtModule {
78  override def millSourcePath = millOuterCtx.millSourcePath
79
80  override def forkArgs = Seq("-Xmx10G")
81
82  override def ivyDeps = super.ivyDeps() ++ chisel
83  override def moduleDeps = super.moduleDeps ++ Seq(
84    `rocket-chip`,
85	`block-inclusivecache-sifive`,
86	chiseltest
87  )
88
89  object test extends Tests {
90    override def ivyDeps = super.ivyDeps() ++ Agg(
91      ivy"org.scalatest::scalatest:3.0.4",
92      ivy"edu.berkeley.cs::chisel-iotesters:1.2+",
93    )
94
95    def testFrameworks = Seq(
96      "org.scalatest.tools.Framework"
97    )
98
99    def testOnly(args: String*) = T.command {
100      super.runMain("org.scalatest.tools.Runner", args: _*)
101    }
102  }
103
104}
105
106