xref: /XiangShan/build.sc (revision a1ea7f76add43b40af78084f7f646a0010120cd7)
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 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