xref: /XiangShan/build.sc (revision c6d439803a044ea209139672b25e35fe8d7f4aa0)
1*c6d43980SLemover/***************************************************************************************
2*c6d43980SLemover* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3*c6d43980SLemover*
4*c6d43980SLemover* XiangShan is licensed under Mulan PSL v2.
5*c6d43980SLemover* You can use this software according to the terms and conditions of the Mulan PSL v2.
6*c6d43980SLemover* You may obtain a copy of Mulan PSL v2 at:
7*c6d43980SLemover*          http://license.coscl.org.cn/MulanPSL2
8*c6d43980SLemover*
9*c6d43980SLemover* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
10*c6d43980SLemover* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
11*c6d43980SLemover* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
12*c6d43980SLemover*
13*c6d43980SLemover* See the Mulan PSL v2 for more details.
14*c6d43980SLemover***************************************************************************************/
15*c6d43980SLemover
16718a511dSLinJiaweiimport os.Path
172102afb5SLinJiaweiimport mill._
18718a511dSLinJiaweiimport scalalib._
192905e463SZihao Yu
200332e41aSlinjiaweitrait CommonModule extends ScalaModule {
21718a511dSLinJiawei  override def scalaVersion = "2.12.10"
220332e41aSlinjiawei
232102afb5SLinJiawei  override def scalacOptions = Seq("-Xsource:2.11")
240332e41aSlinjiawei
25718a511dSLinJiawei  private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0"
260332e41aSlinjiawei
272102afb5SLinJiawei  override def compileIvyDeps = Agg(macroParadise)
280332e41aSlinjiawei
292102afb5SLinJiawei  override def scalacPluginIvyDeps = Agg(macroParadise)
302905e463SZihao Yu}
312905e463SZihao Yu
32718a511dSLinJiaweival chisel = Agg(
3396dd1a2cSYinan Xu  ivy"edu.berkeley.cs::chisel3:3.4.3"
34718a511dSLinJiawei)
350332e41aSlinjiawei
36718a511dSLinJiaweiobject `api-config-chipsalliance` extends CommonModule {
37718a511dSLinJiawei  override def millSourcePath = super.millSourcePath / "design" / "craft"
382102afb5SLinJiawei}
392102afb5SLinJiawei
40718a511dSLinJiaweiobject hardfloat extends SbtModule with CommonModule {
41718a511dSLinJiawei  override def millSourcePath = os.pwd / "berkeley-hardfloat"
42718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
432102afb5SLinJiawei}
442102afb5SLinJiawei
45718a511dSLinJiaweiobject `rocket-chip` extends SbtModule with CommonModule {
46718a511dSLinJiawei
47718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
48718a511dSLinJiawei    ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}",
49718a511dSLinJiawei    ivy"org.json4s::json4s-jackson:3.6.1"
50718a511dSLinJiawei  ) ++ chisel
51718a511dSLinJiawei
52718a511dSLinJiawei  object macros extends SbtModule with CommonModule
53718a511dSLinJiawei
54718a511dSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(
55718a511dSLinJiawei    `api-config-chipsalliance`, macros, hardfloat
56718a511dSLinJiawei  )
57718a511dSLinJiawei
58718a511dSLinJiawei}
59718a511dSLinJiawei
60718a511dSLinJiaweiobject `block-inclusivecache-sifive` extends CommonModule {
61718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
62718a511dSLinJiawei
63718a511dSLinJiawei  override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache
64718a511dSLinJiawei
65718a511dSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
66718a511dSLinJiawei}
67718a511dSLinJiawei
68718a511dSLinJiaweiobject chiseltest extends CommonModule with SbtModule {
69718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
70718a511dSLinJiawei    ivy"edu.berkeley.cs::treadle:1.3.0",
71718a511dSLinJiawei    ivy"org.scalatest::scalatest:3.2.0",
72718a511dSLinJiawei    ivy"com.lihaoyi::utest:0.7.4"
73718a511dSLinJiawei  ) ++ chisel
74718a511dSLinJiawei  object test extends Tests {
75718a511dSLinJiawei    def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3")
76718a511dSLinJiawei    def testFrameworks = Seq("org.scalatest.tools.Framework")
77718a511dSLinJiawei  }
78718a511dSLinJiawei}
79718a511dSLinJiawei
80718a511dSLinJiawei
812102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule {
822102afb5SLinJiawei  override def millSourcePath = millOuterCtx.millSourcePath
83718a511dSLinJiawei
842102afb5SLinJiawei  override def forkArgs = Seq("-Xmx10G")
85718a511dSLinJiawei
86718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
87c5f31b5bSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(
88718a511dSLinJiawei    `rocket-chip`,
89718a511dSLinJiawei    `block-inclusivecache-sifive`,
90718a511dSLinJiawei    chiseltest
91c5f31b5bSLinJiawei  )
922905e463SZihao Yu
932905e463SZihao Yu  object test extends Tests {
94718a511dSLinJiawei    override def ivyDeps = super.ivyDeps() ++ Agg(
95718a511dSLinJiawei      ivy"org.scalatest::scalatest:3.2.0"
966aea7ec5SLinJiawei    )
97718a511dSLinJiawei
982102afb5SLinJiawei    def testFrameworks = Seq(
992102afb5SLinJiawei      "org.scalatest.tools.Framework"
1002102afb5SLinJiawei    )
101718a511dSLinJiawei
10297f09b80Sljw    def testOnly(args: String*) = T.command {
10397f09b80Sljw      super.runMain("org.scalatest.tools.Runner", args: _*)
10497f09b80Sljw    }
105fc85214eSLinJiawei  }
106718a511dSLinJiawei
1072905e463SZihao Yu}
108