xref: /XiangShan/build.sc (revision 6f021e0123b20e838461b75d29031d352cd7ebd4)
1c6d43980SLemover/***************************************************************************************
2c6d43980SLemover* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3c6d43980SLemover*
4c6d43980SLemover* XiangShan is licensed under Mulan PSL v2.
5c6d43980SLemover* You can use this software according to the terms and conditions of the Mulan PSL v2.
6c6d43980SLemover* You may obtain a copy of Mulan PSL v2 at:
7c6d43980SLemover*          http://license.coscl.org.cn/MulanPSL2
8c6d43980SLemover*
9c6d43980SLemover* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
10c6d43980SLemover* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
11c6d43980SLemover* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
12c6d43980SLemover*
13c6d43980SLemover* See the Mulan PSL v2 for more details.
14c6d43980SLemover***************************************************************************************/
15c6d43980SLemover
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
84*6f021e01SJiawei Lin  override def forkArgs = Seq("-Xmx12G")
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 {
94*6f021e01SJiawei Lin
95*6f021e01SJiawei Lin    override def forkArgs = Seq("-Xmx12G")
96*6f021e01SJiawei Lin
97718a511dSLinJiawei    override def ivyDeps = super.ivyDeps() ++ Agg(
98718a511dSLinJiawei      ivy"org.scalatest::scalatest:3.2.0"
996aea7ec5SLinJiawei    )
100718a511dSLinJiawei
1012102afb5SLinJiawei    def testFrameworks = Seq(
1022102afb5SLinJiawei      "org.scalatest.tools.Framework"
1032102afb5SLinJiawei    )
104718a511dSLinJiawei
10597f09b80Sljw    def testOnly(args: String*) = T.command {
10697f09b80Sljw      super.runMain("org.scalatest.tools.Runner", args: _*)
10797f09b80Sljw    }
108fc85214eSLinJiawei  }
109718a511dSLinJiawei
1102905e463SZihao Yu}
111