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