1/*************************************************************************************** 2* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences 3* Copyright (c) 2020-2021 Peng Cheng Laboratory 4* 5* XiangShan is licensed under Mulan PSL v2. 6* You can use this software according to the terms and conditions of the Mulan PSL v2. 7* You may obtain a copy of Mulan PSL v2 at: 8* http://license.coscl.org.cn/MulanPSL2 9* 10* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13* 14* See the Mulan PSL v2 for more details. 15***************************************************************************************/ 16 17import os.Path 18import mill._ 19import scalalib._ 20import coursier.maven.MavenRepository 21 22trait CommonModule extends ScalaModule { 23 override def scalaVersion = "2.12.10" 24 25 override def scalacOptions = Seq("-Xsource:2.11") 26 27 private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0" 28 29 override def compileIvyDeps = Agg(macroParadise) 30 31 override def scalacPluginIvyDeps = Agg(macroParadise) 32 33 override def repositoriesTask = T.task { 34 super.repositoriesTask() ++ Seq( 35 MavenRepository("https://oss.sonatype.org/content/repositories/snapshots") 36 ) 37 } 38 39} 40 41val chisel = Agg( 42 ivy"edu.berkeley.cs::chisel3:3.5-SNAPSHOT" 43) 44 45object `api-config-chipsalliance` extends CommonModule { 46 override def millSourcePath = super.millSourcePath / "design" / "craft" 47} 48 49object hardfloat extends SbtModule with CommonModule { 50 override def millSourcePath = os.pwd / "berkeley-hardfloat" 51 override def ivyDeps = super.ivyDeps() ++ chisel 52} 53 54object `rocket-chip` extends SbtModule with CommonModule { 55 56 override def ivyDeps = super.ivyDeps() ++ Agg( 57 ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}", 58 ivy"org.json4s::json4s-jackson:3.6.1" 59 ) ++ chisel 60 61 object macros extends SbtModule with CommonModule 62 63 override def moduleDeps = super.moduleDeps ++ Seq( 64 `api-config-chipsalliance`, macros, hardfloat 65 ) 66 67} 68 69object `block-inclusivecache-sifive` extends CommonModule { 70 override def ivyDeps = super.ivyDeps() ++ chisel 71 72 override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache 73 74 override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`) 75} 76 77object chiseltest extends CommonModule with SbtModule { 78 override def ivyDeps = super.ivyDeps() ++ Agg( 79 ivy"edu.berkeley.cs::treadle:1.3.0", 80 ivy"org.scalatest::scalatest:3.2.0", 81 ivy"com.lihaoyi::utest:0.7.4" 82 ) ++ chisel 83 object test extends Tests { 84 def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3") 85 def testFrameworks = Seq("org.scalatest.tools.Framework") 86 } 87} 88 89object difftest extends SbtModule with CommonModule { 90 override def millSourcePath = os.pwd / "difftest" 91 override def ivyDeps = super.ivyDeps() ++ chisel 92} 93 94object fudian extends CommonModule with SbtModule { 95 override def ivyDeps = super.ivyDeps() ++ chisel 96} 97 98object XiangShan extends CommonModule with SbtModule { 99 override def millSourcePath = millOuterCtx.millSourcePath 100 101 override def forkArgs = Seq("-Xmx64G", "-Xss256m") 102 103 override def ivyDeps = super.ivyDeps() ++ chisel 104 override def moduleDeps = super.moduleDeps ++ Seq( 105 `rocket-chip`, 106 `block-inclusivecache-sifive`, 107 chiseltest, 108 difftest, 109 fudian 110 ) 111 112 object test extends Tests { 113 114 override def forkArgs = Seq("-Xmx64G", "-Xss256m") 115 116 override def ivyDeps = super.ivyDeps() ++ Agg( 117 ivy"org.scalatest::scalatest:3.2.0" 118 ) 119 120 def testFrameworks = Seq( 121 "org.scalatest.tools.Framework" 122 ) 123 } 124 125} 126