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.0-RC1" 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 huancun extends SbtModule with CommonModule { 70 71 override def ivyDeps = super.ivyDeps() ++ chisel 72 73 override def millSourcePath = super.millSourcePath 74 75 override def moduleDeps = super.moduleDeps ++ Seq( 76 `rocket-chip` 77 ) 78} 79 80object chiseltest extends CommonModule with SbtModule { 81 override def ivyDeps = super.ivyDeps() ++ Agg( 82 ivy"edu.berkeley.cs::treadle:1.3.0", 83 ivy"org.scalatest::scalatest:3.2.0", 84 ivy"com.lihaoyi::utest:0.7.4" 85 ) ++ chisel 86 object test extends Tests { 87 def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3") 88 def testFrameworks = Seq("org.scalatest.tools.Framework") 89 } 90} 91 92object difftest extends SbtModule with CommonModule { 93 override def millSourcePath = os.pwd / "difftest" 94 override def ivyDeps = super.ivyDeps() ++ chisel 95} 96 97object fudian extends CommonModule with SbtModule { 98 override def ivyDeps = super.ivyDeps() ++ chisel 99} 100 101object XiangShan extends CommonModule with SbtModule { 102 override def millSourcePath = millOuterCtx.millSourcePath 103 104 override def forkArgs = Seq("-Xmx64G", "-Xss256m") 105 106 override def ivyDeps = super.ivyDeps() ++ chisel 107 override def moduleDeps = super.moduleDeps ++ Seq( 108 `rocket-chip`, 109 chiseltest, 110 difftest, 111 huancun, 112 fudian 113 ) 114 115 object test extends Tests { 116 117 override def forkArgs = Seq("-Xmx64G", "-Xss256m") 118 119 override def ivyDeps = super.ivyDeps() ++ Agg( 120 ivy"org.scalatest::scalatest:3.2.0" 121 ) 122 123 def testFrameworks = Seq( 124 "org.scalatest.tools.Framework" 125 ) 126 } 127 128} 129