xref: /XiangShan/build.sc (revision c5f31b5b1d47c56f83b2bdfb641f6e3eae945a56)
12102afb5SLinJiaweiimport os.Path
22102afb5SLinJiaweiimport mill._
32102afb5SLinJiaweiimport mill.modules.Util
42102afb5SLinJiaweiimport scalalib._
52905e463SZihao Yuimport coursier.maven.MavenRepository
62905e463SZihao Yu
72905e463SZihao Yuobject CustomZincWorkerModule extends ZincWorkerModule {
8106f2817SLinJiawei  def repositories() = super.repositories ++ Seq(
90332e41aSlinjiawei    MavenRepository("https://maven.aliyun.com/repository/public"),
100332e41aSlinjiawei    MavenRepository("https://maven.aliyun.com/repository/apache-snapshots")
112905e463SZihao Yu  )
122905e463SZihao Yu}
132905e463SZihao Yu
140332e41aSlinjiaweitrait CommonModule extends ScalaModule {
152102afb5SLinJiawei  override def scalaVersion = "2.12.10"
160332e41aSlinjiawei
172102afb5SLinJiawei  override def scalacOptions = Seq("-Xsource:2.11")
180332e41aSlinjiawei
192102afb5SLinJiawei  override def zincWorker = CustomZincWorkerModule
200332e41aSlinjiawei
212102afb5SLinJiawei  private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0"
220332e41aSlinjiawei
232102afb5SLinJiawei  override def compileIvyDeps = Agg(macroParadise)
240332e41aSlinjiawei
252102afb5SLinJiawei  override def scalacPluginIvyDeps = Agg(macroParadise)
262905e463SZihao Yu}
272905e463SZihao Yu
28*c5f31b5bSLinJiaweival chisel = Agg(
29106f2817SLinJiawei  ivy"edu.berkeley.cs::chisel3:3.4.0"
300332e41aSlinjiawei)
310332e41aSlinjiawei
32bf3210b9Slinjiaweiobject `rocket-chip` extends SbtModule with CommonModule {
33bf3210b9Slinjiawei
342102afb5SLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
352102afb5SLinJiawei    ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}",
362102afb5SLinJiawei    ivy"org.json4s::json4s-jackson:3.6.1"
37*c5f31b5bSLinJiawei  ) ++ chisel
382102afb5SLinJiawei
392102afb5SLinJiawei
402102afb5SLinJiawei  object `api-config-chipsalliance` extends CommonModule {
412102afb5SLinJiawei    override def millSourcePath = super.millSourcePath / 'design / 'craft
422102afb5SLinJiawei  }
432102afb5SLinJiawei
442102afb5SLinJiawei  object macros extends SbtModule with CommonModule
452102afb5SLinJiawei
462102afb5SLinJiawei  object hardfloat extends SbtModule with CommonModule {
47*c5f31b5bSLinJiawei    override def ivyDeps = super.ivyDeps() ++ chisel
482102afb5SLinJiawei  }
492102afb5SLinJiawei
502102afb5SLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(
510332e41aSlinjiawei    `api-config-chipsalliance`, macros, hardfloat
522102afb5SLinJiawei  )
532102afb5SLinJiawei
542102afb5SLinJiawei}
552102afb5SLinJiawei
56bf3210b9Slinjiaweiobject `block-inclusivecache-sifive` extends CommonModule {
57*c5f31b5bSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
58bf3210b9Slinjiawei
59bf3210b9Slinjiawei  override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache
60bf3210b9Slinjiawei
61bf3210b9Slinjiawei  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
62bf3210b9Slinjiawei}
63bf3210b9Slinjiawei
64*c5f31b5bSLinJiaweiobject chiseltest extends CommonModule with SbtModule {
65*c5f31b5bSLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
66*c5f31b5bSLinJiawei	ivy"edu.berkeley.cs::treadle:1.3.0",
67*c5f31b5bSLinJiawei	ivy"org.scalatest::scalatest:3.0.8",
68*c5f31b5bSLinJiawei	ivy"com.lihaoyi::utest:0.7.4"
69*c5f31b5bSLinJiawei  ) ++ chisel
70*c5f31b5bSLinJiawei  object test extends Tests {
71*c5f31b5bSLinJiawei	def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3")
72*c5f31b5bSLinJiawei	def testFrameworks = Seq("org.scalatest.tools.Framework")
73*c5f31b5bSLinJiawei  }
74*c5f31b5bSLinJiawei}
75*c5f31b5bSLinJiawei
76bf3210b9Slinjiawei
772102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule {
782102afb5SLinJiawei  override def millSourcePath = millOuterCtx.millSourcePath
790332e41aSlinjiawei
802102afb5SLinJiawei  override def forkArgs = Seq("-Xmx10G")
810332e41aSlinjiawei
822102afb5SLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
83106f2817SLinJiawei    ivy"edu.berkeley.cs::chisel3:3.4.0-RC3"
842905e463SZihao Yu  )
850332e41aSlinjiawei
86*c5f31b5bSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(
87*c5f31b5bSLinJiawei    `rocket-chip`,
88*c5f31b5bSLinJiawei	`block-inclusivecache-sifive`,
89*c5f31b5bSLinJiawei	chiseltest
90*c5f31b5bSLinJiawei  )
912905e463SZihao Yu
922905e463SZihao Yu  object test extends Tests {
932102afb5SLinJiawei    override def ivyDeps = super.ivyDeps() ++ Agg(
946aea7ec5SLinJiawei      ivy"org.scalatest::scalatest:3.0.4",
952209d540SLinJiawei      ivy"edu.berkeley.cs::chisel-iotesters:1.2+",
966aea7ec5SLinJiawei    )
972102afb5SLinJiawei
982102afb5SLinJiawei    def testFrameworks = Seq(
992102afb5SLinJiawei      "org.scalatest.tools.Framework"
1002102afb5SLinJiawei    )
1012102afb5SLinJiawei
102fc85214eSLinJiawei    def testOnly(args: String*) = T.command {
103fc85214eSLinJiawei      super.runMain("org.scalatest.tools.Runner", args: _*)
104fc85214eSLinJiawei    }
1052905e463SZihao Yu  }
1062905e463SZihao Yu
1072905e463SZihao Yu}
1082905e463SZihao Yu
109