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.1" 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} 107