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