xref: /XiangShan/build.sc (revision 718a511df020d7b97dee08fcc12ea03b9ea1db76)
1*718a511dSLinJiaweiimport os.Path
22102afb5SLinJiaweiimport mill._
32102afb5SLinJiaweiimport mill.modules.Util
4917276a0SJiuyang liuimport $ivy.`com.lihaoyi::mill-contrib-buildinfo:$MILL_VERSION`
5917276a0SJiuyang liuimport $ivy.`com.lihaoyi::mill-contrib-bsp:$MILL_VERSION`
6917276a0SJiuyang liuimport mill.contrib.buildinfo.BuildInfo
7*718a511dSLinJiaweiimport scalalib._
8*718a511dSLinJiaweiimport coursier.maven.MavenRepository
92905e463SZihao Yu
10*718a511dSLinJiaweiobject CustomZincWorkerModule extends ZincWorkerModule {
11*718a511dSLinJiawei  def repositories() = super.repositories ++ Seq(
12*718a511dSLinJiawei    MavenRepository("https://maven.aliyun.com/repository/public"),
13*718a511dSLinJiawei    MavenRepository("https://maven.aliyun.com/repository/apache-snapshots")
14*718a511dSLinJiawei  )
152905e463SZihao Yu}
162905e463SZihao Yu
170332e41aSlinjiaweitrait CommonModule extends ScalaModule {
18*718a511dSLinJiawei  override def scalaVersion = "2.12.10"
190332e41aSlinjiawei
202102afb5SLinJiawei  override def scalacOptions = Seq("-Xsource:2.11")
210332e41aSlinjiawei
22*718a511dSLinJiawei  override def zincWorker = CustomZincWorkerModule
230332e41aSlinjiawei
24*718a511dSLinJiawei  private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0"
250332e41aSlinjiawei
262102afb5SLinJiawei  override def compileIvyDeps = Agg(macroParadise)
270332e41aSlinjiawei
282102afb5SLinJiawei  override def scalacPluginIvyDeps = Agg(macroParadise)
292905e463SZihao Yu}
302905e463SZihao Yu
31*718a511dSLinJiaweival chisel = Agg(
32*718a511dSLinJiawei  ivy"edu.berkeley.cs::chisel3:3.4.0"
33*718a511dSLinJiawei)
340332e41aSlinjiawei
35*718a511dSLinJiaweiobject `api-config-chipsalliance` extends CommonModule {
36*718a511dSLinJiawei  override def millSourcePath = super.millSourcePath / "design" / "craft"
372102afb5SLinJiawei}
382102afb5SLinJiawei
39*718a511dSLinJiaweiobject hardfloat extends SbtModule with CommonModule {
40*718a511dSLinJiawei  override def millSourcePath = os.pwd / "berkeley-hardfloat"
41*718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
422102afb5SLinJiawei}
432102afb5SLinJiawei
44*718a511dSLinJiaweiobject `rocket-chip` extends SbtModule with CommonModule {
45*718a511dSLinJiawei
46*718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
47*718a511dSLinJiawei    ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}",
48*718a511dSLinJiawei    ivy"org.json4s::json4s-jackson:3.6.1"
49*718a511dSLinJiawei  ) ++ chisel
50*718a511dSLinJiawei
51*718a511dSLinJiawei  object macros extends SbtModule with CommonModule
52*718a511dSLinJiawei
53*718a511dSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(
54*718a511dSLinJiawei    `api-config-chipsalliance`, macros, hardfloat
55*718a511dSLinJiawei  )
56*718a511dSLinJiawei
57*718a511dSLinJiawei}
58*718a511dSLinJiawei
59*718a511dSLinJiaweiobject `block-inclusivecache-sifive` extends CommonModule {
60*718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
61*718a511dSLinJiawei
62*718a511dSLinJiawei  override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache
63*718a511dSLinJiawei
64*718a511dSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
65*718a511dSLinJiawei}
66*718a511dSLinJiawei
67*718a511dSLinJiaweiobject chiseltest extends CommonModule with SbtModule {
68*718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
69*718a511dSLinJiawei    ivy"edu.berkeley.cs::treadle:1.3.0",
70*718a511dSLinJiawei    ivy"org.scalatest::scalatest:3.2.0",
71*718a511dSLinJiawei    ivy"com.lihaoyi::utest:0.7.4"
72*718a511dSLinJiawei  ) ++ chisel
73*718a511dSLinJiawei  object test extends Tests {
74*718a511dSLinJiawei    def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3")
75*718a511dSLinJiawei    def testFrameworks = Seq("org.scalatest.tools.Framework")
76*718a511dSLinJiawei  }
77*718a511dSLinJiawei}
78*718a511dSLinJiawei
79*718a511dSLinJiawei
802102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule {
812102afb5SLinJiawei  override def millSourcePath = millOuterCtx.millSourcePath
82*718a511dSLinJiawei
832102afb5SLinJiawei  override def forkArgs = Seq("-Xmx10G")
84*718a511dSLinJiawei
85*718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
86c5f31b5bSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(
87*718a511dSLinJiawei    `rocket-chip`,
88*718a511dSLinJiawei    `block-inclusivecache-sifive`,
89*718a511dSLinJiawei    chiseltest
90c5f31b5bSLinJiawei  )
912905e463SZihao Yu
922905e463SZihao Yu  object test extends Tests {
93*718a511dSLinJiawei    override def ivyDeps = super.ivyDeps() ++ Agg(
94*718a511dSLinJiawei      ivy"org.scalatest::scalatest:3.2.0"
956aea7ec5SLinJiawei    )
96*718a511dSLinJiawei
972102afb5SLinJiawei    def testFrameworks = Seq(
982102afb5SLinJiawei      "org.scalatest.tools.Framework"
992102afb5SLinJiawei    )
100*718a511dSLinJiawei
10197f09b80Sljw    def testOnly(args: String*) = T.command {
10297f09b80Sljw      super.runMain("org.scalatest.tools.Runner", args: _*)
10397f09b80Sljw    }
104fc85214eSLinJiawei  }
105*718a511dSLinJiawei
1062905e463SZihao Yu}