xref: /XiangShan/build.sc (revision f320e0f01bd645f0a3045a8a740e60dd770734a9)
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._
20
21trait CommonModule extends ScalaModule {
22  override def scalaVersion = "2.12.10"
23
24  override def scalacOptions = Seq("-Xsource:2.11")
25
26  private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0"
27
28  override def compileIvyDeps = Agg(macroParadise)
29
30  override def scalacPluginIvyDeps = Agg(macroParadise)
31}
32
33val chisel = Agg(
34  ivy"edu.berkeley.cs::chisel3:3.4.3"
35)
36
37object `api-config-chipsalliance` extends CommonModule {
38  override def millSourcePath = super.millSourcePath / "design" / "craft"
39}
40
41object hardfloat extends SbtModule with CommonModule {
42  override def millSourcePath = os.pwd / "berkeley-hardfloat"
43  override def ivyDeps = super.ivyDeps() ++ chisel
44}
45
46object `rocket-chip` extends SbtModule with CommonModule {
47
48  override def ivyDeps = super.ivyDeps() ++ Agg(
49    ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}",
50    ivy"org.json4s::json4s-jackson:3.6.1"
51  ) ++ chisel
52
53  object macros extends SbtModule with CommonModule
54
55  override def moduleDeps = super.moduleDeps ++ Seq(
56    `api-config-chipsalliance`, macros, hardfloat
57  )
58
59}
60
61object `block-inclusivecache-sifive` extends CommonModule {
62  override def ivyDeps = super.ivyDeps() ++ chisel
63
64  override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache
65
66  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
67}
68
69object chiseltest extends CommonModule with SbtModule {
70  override def ivyDeps = super.ivyDeps() ++ Agg(
71    ivy"edu.berkeley.cs::treadle:1.3.0",
72    ivy"org.scalatest::scalatest:3.2.0",
73    ivy"com.lihaoyi::utest:0.7.4"
74  ) ++ chisel
75  object test extends Tests {
76    def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3")
77    def testFrameworks = Seq("org.scalatest.tools.Framework")
78  }
79}
80
81
82object XiangShan extends CommonModule with SbtModule {
83  override def millSourcePath = millOuterCtx.millSourcePath
84
85  override def forkArgs = Seq("-Xmx64G")
86
87  override def ivyDeps = super.ivyDeps() ++ chisel
88  override def moduleDeps = super.moduleDeps ++ Seq(
89    `rocket-chip`,
90    `block-inclusivecache-sifive`,
91    chiseltest
92  )
93
94  object test extends Tests {
95
96    override def forkArgs = Seq("-Xmx64G")
97
98    override def ivyDeps = super.ivyDeps() ++ Agg(
99      ivy"org.scalatest::scalatest:3.2.0"
100    )
101
102    def testFrameworks = Seq(
103      "org.scalatest.tools.Framework"
104    )
105  }
106
107}
108