xref: /XiangShan/build.sc (revision 5c7674fe439b80ea3bb6c6207b7d169ed6183be5)
1import os.Path
2import mill._
3import scalalib._
4
5trait CommonModule extends ScalaModule {
6  override def scalaVersion = "2.12.10"
7
8  override def scalacOptions = Seq("-Xsource:2.11")
9
10  private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0"
11
12  override def compileIvyDeps = Agg(macroParadise)
13
14  override def scalacPluginIvyDeps = Agg(macroParadise)
15}
16
17val chisel = Agg(
18  ivy"edu.berkeley.cs::chisel3:3.4.3"
19)
20
21object `api-config-chipsalliance` extends CommonModule {
22  override def millSourcePath = super.millSourcePath / "design" / "craft"
23}
24
25object hardfloat extends SbtModule with CommonModule {
26  override def millSourcePath = os.pwd / "berkeley-hardfloat"
27  override def ivyDeps = super.ivyDeps() ++ chisel
28}
29
30object `rocket-chip` extends SbtModule with CommonModule {
31
32  override def ivyDeps = super.ivyDeps() ++ Agg(
33    ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}",
34    ivy"org.json4s::json4s-jackson:3.6.1"
35  ) ++ chisel
36
37  object macros extends SbtModule with CommonModule
38
39  override def moduleDeps = super.moduleDeps ++ Seq(
40    `api-config-chipsalliance`, macros, hardfloat
41  )
42
43}
44
45object `block-inclusivecache-sifive` extends CommonModule {
46  override def ivyDeps = super.ivyDeps() ++ chisel
47
48  override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache
49
50  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
51}
52
53object chiseltest extends CommonModule with SbtModule {
54  override def ivyDeps = super.ivyDeps() ++ Agg(
55    ivy"edu.berkeley.cs::treadle:1.3.0",
56    ivy"org.scalatest::scalatest:3.2.0",
57    ivy"com.lihaoyi::utest:0.7.4"
58  ) ++ chisel
59  object test extends Tests {
60    def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3")
61    def testFrameworks = Seq("org.scalatest.tools.Framework")
62  }
63}
64
65
66object XiangShan extends CommonModule with SbtModule {
67  override def millSourcePath = millOuterCtx.millSourcePath
68
69  override def forkArgs = Seq("-Xmx10G")
70
71  override def ivyDeps = super.ivyDeps() ++ chisel
72  override def moduleDeps = super.moduleDeps ++ Seq(
73    `rocket-chip`,
74    `block-inclusivecache-sifive`,
75    chiseltest
76  )
77
78  object test extends Tests {
79    override def ivyDeps = super.ivyDeps() ++ Agg(
80      ivy"org.scalatest::scalatest:3.2.0"
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