xref: /XiangShan/build.sc (revision c21bff99db38ffd5df19a9459a048e16b7b7cb23)
1c6d43980SLemover/***************************************************************************************
2c6d43980SLemover* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3f320e0f0SYinan Xu* Copyright (c) 2020-2021 Peng Cheng Laboratory
4c6d43980SLemover*
5c6d43980SLemover* XiangShan is licensed under Mulan PSL v2.
6c6d43980SLemover* You can use this software according to the terms and conditions of the Mulan PSL v2.
7c6d43980SLemover* You may obtain a copy of Mulan PSL v2 at:
8c6d43980SLemover*          http://license.coscl.org.cn/MulanPSL2
9c6d43980SLemover*
10c6d43980SLemover* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11c6d43980SLemover* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12c6d43980SLemover* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13c6d43980SLemover*
14c6d43980SLemover* See the Mulan PSL v2 for more details.
15c6d43980SLemover***************************************************************************************/
16c6d43980SLemover
17718a511dSLinJiaweiimport os.Path
182102afb5SLinJiaweiimport mill._
19718a511dSLinJiaweiimport scalalib._
20*c21bff99SJiawei Linimport coursier.maven.MavenRepository
212905e463SZihao Yu
220332e41aSlinjiaweitrait CommonModule extends ScalaModule {
23718a511dSLinJiawei  override def scalaVersion = "2.12.10"
240332e41aSlinjiawei
252102afb5SLinJiawei  override def scalacOptions = Seq("-Xsource:2.11")
260332e41aSlinjiawei
27718a511dSLinJiawei  private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0"
280332e41aSlinjiawei
292102afb5SLinJiawei  override def compileIvyDeps = Agg(macroParadise)
300332e41aSlinjiawei
312102afb5SLinJiawei  override def scalacPluginIvyDeps = Agg(macroParadise)
32*c21bff99SJiawei Lin
33*c21bff99SJiawei Lin  override def repositoriesTask = T.task {
34*c21bff99SJiawei Lin    super.repositoriesTask() ++ Seq(
35*c21bff99SJiawei Lin      MavenRepository("https://oss.sonatype.org/content/repositories/snapshots")
36*c21bff99SJiawei Lin    )
37*c21bff99SJiawei Lin  }
38*c21bff99SJiawei Lin
392905e463SZihao Yu}
402905e463SZihao Yu
41718a511dSLinJiaweival chisel = Agg(
42*c21bff99SJiawei Lin  ivy"edu.berkeley.cs::chisel3:3.5-SNAPSHOT"
43718a511dSLinJiawei)
440332e41aSlinjiawei
45718a511dSLinJiaweiobject `api-config-chipsalliance` extends CommonModule {
46718a511dSLinJiawei  override def millSourcePath = super.millSourcePath / "design" / "craft"
472102afb5SLinJiawei}
482102afb5SLinJiawei
49718a511dSLinJiaweiobject hardfloat extends SbtModule with CommonModule {
50718a511dSLinJiawei  override def millSourcePath = os.pwd / "berkeley-hardfloat"
51718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
522102afb5SLinJiawei}
532102afb5SLinJiawei
54718a511dSLinJiaweiobject `rocket-chip` extends SbtModule with CommonModule {
55718a511dSLinJiawei
56718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
57718a511dSLinJiawei    ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}",
58718a511dSLinJiawei    ivy"org.json4s::json4s-jackson:3.6.1"
59718a511dSLinJiawei  ) ++ chisel
60718a511dSLinJiawei
61718a511dSLinJiawei  object macros extends SbtModule with CommonModule
62718a511dSLinJiawei
63718a511dSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(
64718a511dSLinJiawei    `api-config-chipsalliance`, macros, hardfloat
65718a511dSLinJiawei  )
66718a511dSLinJiawei
67718a511dSLinJiawei}
68718a511dSLinJiawei
69718a511dSLinJiaweiobject `block-inclusivecache-sifive` extends CommonModule {
70718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
71718a511dSLinJiawei
72718a511dSLinJiawei  override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache
73718a511dSLinJiawei
74718a511dSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
75718a511dSLinJiawei}
76718a511dSLinJiawei
77718a511dSLinJiaweiobject chiseltest extends CommonModule with SbtModule {
78718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ Agg(
79718a511dSLinJiawei    ivy"edu.berkeley.cs::treadle:1.3.0",
80718a511dSLinJiawei    ivy"org.scalatest::scalatest:3.2.0",
81718a511dSLinJiawei    ivy"com.lihaoyi::utest:0.7.4"
82718a511dSLinJiawei  ) ++ chisel
83718a511dSLinJiawei  object test extends Tests {
84718a511dSLinJiawei    def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3")
85718a511dSLinJiawei    def testFrameworks = Seq("org.scalatest.tools.Framework")
86718a511dSLinJiawei  }
87718a511dSLinJiawei}
88718a511dSLinJiawei
89a3e87608SWilliam Wangobject difftest extends SbtModule with CommonModule {
90a3e87608SWilliam Wang  override def millSourcePath = os.pwd / "difftest"
91a3e87608SWilliam Wang  override def ivyDeps = super.ivyDeps() ++ chisel
92a3e87608SWilliam Wang}
93718a511dSLinJiawei
942102afb5SLinJiaweiobject XiangShan extends CommonModule with SbtModule {
952102afb5SLinJiawei  override def millSourcePath = millOuterCtx.millSourcePath
96718a511dSLinJiawei
978b8e745dSYikeZhou  override def forkArgs = Seq("-Xmx64G", "-Xss256m")
98718a511dSLinJiawei
99718a511dSLinJiawei  override def ivyDeps = super.ivyDeps() ++ chisel
100c5f31b5bSLinJiawei  override def moduleDeps = super.moduleDeps ++ Seq(
101718a511dSLinJiawei    `rocket-chip`,
102718a511dSLinJiawei    `block-inclusivecache-sifive`,
103a3e87608SWilliam Wang    chiseltest,
104a3e87608SWilliam Wang    difftest
105c5f31b5bSLinJiawei  )
1062905e463SZihao Yu
1072905e463SZihao Yu  object test extends Tests {
1086f021e01SJiawei Lin
1098b8e745dSYikeZhou    override def forkArgs = Seq("-Xmx64G", "-Xss256m")
1106f021e01SJiawei Lin
111718a511dSLinJiawei    override def ivyDeps = super.ivyDeps() ++ Agg(
112718a511dSLinJiawei      ivy"org.scalatest::scalatest:3.2.0"
1136aea7ec5SLinJiawei    )
114718a511dSLinJiawei
1152102afb5SLinJiawei    def testFrameworks = Seq(
1162102afb5SLinJiawei      "org.scalatest.tools.Framework"
1172102afb5SLinJiawei    )
118fc85214eSLinJiawei  }
119718a511dSLinJiawei
1202905e463SZihao Yu}
121