build.sc (c4e07b243740b30c2c0b854d4efb6450cd869328) build.sc (917276a09738573bc3d1a582ab9956561bcd71ae)
1import os.Path
2import mill._
3import mill.modules.Util
4import scalalib._
1import mill._
2import mill.modules.Util
3import scalalib._
5import coursier.maven.MavenRepository
4import $ivy.`com.lihaoyi::mill-contrib-buildinfo:$MILL_VERSION`
5import $ivy.`com.lihaoyi::mill-contrib-bsp:$MILL_VERSION`
6import mill.contrib.buildinfo.BuildInfo
7import $file.chisel3.build
8import $file.firrtl.build
9import $file.treadle.build
10import $file.chiseltest.build
11import $file.`berkeley-hardfloat`.build
12import $file.`rocket-chip`.common
13import $file.`api-config-chipsalliance`.`build-rules`.mill.build
6
14
7object CustomZincWorkerModule extends ZincWorkerModule {
8 def repositories() = super.repositories ++ Seq(
9 MavenRepository("https://maven.aliyun.com/repository/public"),
10 MavenRepository("https://maven.aliyun.com/repository/apache-snapshots")
11 )
15val sv = "2.12.12"
16
17object myfirrtl extends firrtl.build.firrtlCrossModule(sv) {
18 override def millSourcePath = os.pwd / "firrtl"
12}
13
19}
20
14trait CommonModule extends ScalaModule {
15 override def scalaVersion = "2.12.10"
21object mychisel3 extends chisel3.build.chisel3CrossModule(sv) {
22 override def millSourcePath = os.pwd / "chisel3"
16
23
17 override def scalacOptions = Seq("-Xsource:2.11")
24 def firrtlModule: Option[PublishModule] = Some(myfirrtl)
18
25
19 override def zincWorker = CustomZincWorkerModule
26 def treadleModule: Option[PublishModule] = Some(mytreadle)
27}
20
28
21 private val macroParadise = ivy"org.scalamacros:::paradise:2.1.0"
29object mytreadle extends treadle.build.treadleCrossModule(sv) {
30 override def millSourcePath = os.pwd / "treadle"
22
31
23 override def compileIvyDeps = Agg(macroParadise)
32 def firrtlModule: Option[PublishModule] = Some(myfirrtl)
33}
24
34
25 override def scalacPluginIvyDeps = Agg(macroParadise)
35object mychiseltest extends chiseltest.build.chiseltestCrossModule(sv) {
36 override def scalaVersion = sv
37 override def millSourcePath = os.pwd / "chiseltest"
38 def chisel3Module: Option[PublishModule] = Some(mychisel3)
39 def treadleModule: Option[PublishModule] = Some(mytreadle)
26}
27
40}
41
28val chisel = Agg(
29 ivy"edu.berkeley.cs::chisel3:3.4.0"
30)
42object myhardfloat extends `berkeley-hardfloat`.build.hardfloat {
43 override def scalaVersion = sv
31
44
32object `rocket-chip` extends SbtModule with CommonModule {
45 def chisel3Module: Option[PublishModule] = Some(mychisel3)
46}
33
47
34 override def ivyDeps = super.ivyDeps() ++ Agg(
35 ivy"${scalaOrganization()}:scala-reflect:${scalaVersion()}",
36 ivy"org.json4s::json4s-jackson:3.6.1"
37 ) ++ chisel
48object myconfig extends `api-config-chipsalliance`.`build-rules`.mill.build.config with PublishModule {
49 override def scalaVersion = sv
38
50
51 override def millSourcePath = os.pwd / "api-config-chipsalliance" / "design" / "craft"
39
52
40 object `api-config-chipsalliance` extends CommonModule {
41 override def millSourcePath = super.millSourcePath / 'design / 'craft
53 override def pomSettings = T {
54 myrocketchip.pomSettings()
42 }
43
55 }
56
44 object macros extends SbtModule with CommonModule
45
46 object hardfloat extends SbtModule with CommonModule {
47 override def ivyDeps = super.ivyDeps() ++ chisel
57 override def publishVersion = T {
58 myrocketchip.publishVersion()
48 }
59 }
60}
49
61
50 override def moduleDeps = super.moduleDeps ++ Seq(
51 `api-config-chipsalliance`, macros, hardfloat
52 )
62object myrocketchip extends `rocket-chip`.common.CommonRocketChip {
63 override def scalaVersion = sv
53
64
65 override def millSourcePath = os.pwd / "rocket-chip"
66
67 def chisel3Module: Option[PublishModule] = Some(mychisel3)
68
69 def hardfloatModule: PublishModule = myhardfloat
70
71 def configModule: PublishModule = myconfig
54}
55
72}
73
56object `block-inclusivecache-sifive` extends CommonModule {
57 override def ivyDeps = super.ivyDeps() ++ chisel
58
74
59 override def millSourcePath = super.millSourcePath / 'design / 'craft / 'inclusivecache
75trait CommonModule extends ScalaModule {
76 override def scalaVersion = sv
60
77
61 override def moduleDeps = super.moduleDeps ++ Seq(`rocket-chip`)
78 override def scalacOptions = Seq("-Xsource:2.11")
79
80 override def moduleDeps: Seq[ScalaModule] = Seq(mychisel3)
81
82 private val macroParadise = ivy"org.scalamacros:::paradise:2.1.1"
83
84 override def compileIvyDeps = Agg(macroParadise)
85
86 override def scalacPluginIvyDeps = Agg(macroParadise)
62}
63
87}
88
64object chiseltest extends CommonModule with SbtModule {
65 override def ivyDeps = super.ivyDeps() ++ Agg(
66 ivy"edu.berkeley.cs::treadle:1.3.0",
67 ivy"org.scalatest::scalatest:3.0.8",
68 ivy"com.lihaoyi::utest:0.7.4"
69 ) ++ chisel
70 object test extends Tests {
71 def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.14.3")
72 def testFrameworks = Seq("org.scalatest.tools.Framework")
73 }
89object myinclusivecache extends CommonModule {
90 override def millSourcePath = os.pwd / "block-inclusivecache-sifive" / "design" / "craft" / "inclusivecache"
91
92 override def moduleDeps = super.moduleDeps ++ Seq(myrocketchip)
74}
75
93}
94
95object myblocks extends CommonModule with SbtModule {
96 override def moduleDeps = super.moduleDeps ++ Seq(myrocketchip)
97}
76
77object XiangShan extends CommonModule with SbtModule {
78 override def millSourcePath = millOuterCtx.millSourcePath
98
99object XiangShan extends CommonModule with SbtModule {
100 override def millSourcePath = millOuterCtx.millSourcePath
79
80 override def forkArgs = Seq("-Xmx10G")
101 override def forkArgs = Seq("-Xmx10G")
81
82 override def ivyDeps = super.ivyDeps() ++ chisel
83 override def moduleDeps = super.moduleDeps ++ Seq(
102 override def moduleDeps = super.moduleDeps ++ Seq(
84 `rocket-chip`,
85 `block-inclusivecache-sifive`,
86 chiseltest
103 myrocketchip,
104 myinclusivecache,
87 )
88
89 object test extends Tests {
105 )
106
107 object test extends Tests {
90 override def ivyDeps = super.ivyDeps() ++ Agg(
91 ivy"org.scalatest::scalatest:3.0.4",
92 ivy"edu.berkeley.cs::chisel-iotesters:1.2+",
108 override def ivyDeps = Agg(
109 ivy"org.scalatest::scalatest:3.2.0",
93 )
110 )
94
111 override def moduleDeps = super.moduleDeps ++ Seq(
112 mychiseltest
113 )
95 def testFrameworks = Seq(
96 "org.scalatest.tools.Framework"
97 )
114 def testFrameworks = Seq(
115 "org.scalatest.tools.Framework"
116 )
98
99 def testOnly(args: String*) = T.command {
100 super.runMain("org.scalatest.tools.Runner", args: _*)
101 }
102 }
117 }
103
104}
118}
105