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