12102afb5SLinJiaweiimport os.Path 22102afb5SLinJiaweiimport mill._ 32102afb5SLinJiaweiimport mill.modules.Util 42102afb5SLinJiaweiimport scalalib._ 52905e463SZihao Yuimport coursier.maven.MavenRepository 62905e463SZihao Yu 72905e463SZihao Yuobject CustomZincWorkerModule extends ZincWorkerModule { 8*0332e41aSlinjiawei def repositories() = Seq( 9*0332e41aSlinjiawei MavenRepository("https://maven.aliyun.com/repository/public"), 10*0332e41aSlinjiawei MavenRepository("https://maven.aliyun.com/repository/apache-snapshots") 112905e463SZihao Yu ) 122905e463SZihao Yu} 132905e463SZihao Yu 14*0332e41aSlinjiaweitrait CommonModule extends ScalaModule { 152102afb5SLinJiawei override def scalaVersion = "2.12.10" 16*0332e41aSlinjiawei 172102afb5SLinJiawei override def scalacOptions = Seq("-Xsource:2.11") 18*0332e41aSlinjiawei 192102afb5SLinJiawei override def zincWorker = CustomZincWorkerModule 20*0332e41aSlinjiawei 212102afb5SLinJiawei private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0" 22*0332e41aSlinjiawei 232102afb5SLinJiawei override def compileIvyDeps = Agg(macroParadise) 24*0332e41aSlinjiawei 252102afb5SLinJiawei override def scalacPluginIvyDeps = Agg(macroParadise) 262905e463SZihao Yu} 272905e463SZihao Yu 282102afb5SLinJiaweiobject `rocket-chip` extends SbtModule with CommonModule { 292102afb5SLinJiawei 30*0332e41aSlinjiawei val rocketChisel = Agg( 31*0332e41aSlinjiawei ivy"edu.berkeley.cs::chisel3:3.3.1" 32*0332e41aSlinjiawei ) 33*0332e41aSlinjiawei 342102afb5SLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 352102afb5SLinJiawei ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}", 362102afb5SLinJiawei ivy"org.json4s::json4s-jackson:3.6.1" 37*0332e41aSlinjiawei ) ++ rocketChisel 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*0332e41aSlinjiawei override def ivyDeps = super.ivyDeps() ++ rocketChisel 482102afb5SLinJiawei } 492102afb5SLinJiawei 502102afb5SLinJiawei override def moduleDeps = super.moduleDeps ++ Seq( 51*0332e41aSlinjiawei `api-config-chipsalliance`, macros, hardfloat 522102afb5SLinJiawei ) 532102afb5SLinJiawei 542102afb5SLinJiawei} 552102afb5SLinJiawei 562102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule { 572102afb5SLinJiawei override def millSourcePath = millOuterCtx.millSourcePath 58*0332e41aSlinjiawei 592102afb5SLinJiawei override def forkArgs = Seq("-Xmx10G") 60*0332e41aSlinjiawei 612102afb5SLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 62ee54eb88SZihao Yu ivy"edu.berkeley.cs::chisel3:3.3.2" 632905e463SZihao Yu ) 64*0332e41aSlinjiawei 652102afb5SLinJiawei override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`) 662905e463SZihao Yu 672905e463SZihao Yu object test extends Tests { 682102afb5SLinJiawei override def ivyDeps = super.ivyDeps() ++ Agg( 696aea7ec5SLinJiawei ivy"org.scalatest::scalatest:3.0.4", 702209d540SLinJiawei ivy"edu.berkeley.cs::chisel-iotesters:1.2+", 712209d540SLinJiawei ivy"edu.berkeley.cs::chiseltest:0.2.1" 726aea7ec5SLinJiawei ) 732102afb5SLinJiawei 742102afb5SLinJiawei def testFrameworks = Seq( 752102afb5SLinJiawei "org.scalatest.tools.Framework" 762102afb5SLinJiawei ) 772102afb5SLinJiawei 78fc85214eSLinJiawei def testOnly(args: String*) = T.command { 79fc85214eSLinJiawei super.runMain("org.scalatest.tools.Runner", args: _*) 80fc85214eSLinJiawei } 812905e463SZihao Yu } 822905e463SZihao Yu 832905e463SZihao Yu} 842905e463SZihao Yu 85