forked from jiegec/rocket-chip-vcu128
-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.sc
116 lines (93 loc) · 3.29 KB
/
build.sc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import mill._
import mill.scalalib.publish._
import scalalib._
import scalafmt._
import coursier.maven.MavenRepository
import $ivy.`com.goyeau::mill-scalafix_mill0.10:0.2.8`
import com.goyeau.mill.scalafix.ScalafixModule
// learned from https://github.com/OpenXiangShan/fudian/blob/main/build.sc
val defaultVersions = Map(
"chisel3" -> ("edu.berkeley.cs", "3.5.2", false),
"chisel3-plugin" -> ("edu.berkeley.cs", "3.5.2", true),
"paradise" -> ("org.scalamacros", "2.1.1", true),
"json4s-jackson" -> ("org.json4s", "3.6.1", false),
"chiseltest" -> ("edu.berkeley.cs", "0.5.0", false),
"scalatest" -> ("org.scalatest", "3.2.10", false)
)
val commonScalaVersion = "2.12.13"
def getVersion(dep: String) = {
val (org, ver, cross) = defaultVersions(dep)
val version = sys.env.getOrElse(dep + "Version", ver)
if (cross)
ivy"$org:::$dep:$version"
else
ivy"$org::$dep:$version"
}
trait CommonModule extends ScalaModule {
def scalaVersion = commonScalaVersion
// for snapshot dependencies
override def repositoriesTask = T.task {
super.repositoriesTask() ++ Seq(
MavenRepository("https://oss.sonatype.org/content/repositories/snapshots")
)
}
// for scalafix rules
override def scalacOptions =
Seq("-Ywarn-unused", "-Ywarn-adapted-args", "-deprecation")
}
object hardfloat extends CommonModule with SbtModule {
override def millSourcePath =
os.pwd / "submodules" / "berkeley-hardfloat"
override def ivyDeps = super.ivyDeps() ++ Agg(
getVersion("chisel3")
)
override def scalacPluginIvyDeps = super.scalacPluginIvyDeps() ++ Agg(
getVersion("chisel3-plugin")
)
}
object apiConfigChipsalliance extends CommonModule {
override def millSourcePath =
os.pwd / "submodules" / "api-config-chipsalliance" / "cde"
}
object rocketChipMacros extends CommonModule {
override def millSourcePath = os.pwd / "submodules" / "rocket-chip" / "macros"
override def ivyDeps = super.ivyDeps() ++ Agg(
ivy"org.scala-lang:scala-reflect:$commonScalaVersion"
)
}
object rocketChip extends CommonModule with SbtModule {
override def millSourcePath = os.pwd / "submodules" / "rocket-chip"
override def ivyDeps = super.ivyDeps() ++ Agg(
getVersion("chisel3"),
getVersion("json4s-jackson"),
ivy"org.scala-lang:scala-reflect:$commonScalaVersion"
)
override def scalacPluginIvyDeps = super.scalacPluginIvyDeps() ++ Agg(
getVersion("chisel3-plugin"),
getVersion("paradise")
)
override def moduleDeps =
super.moduleDeps ++ Seq(hardfloat, rocketChipMacros, apiConfigChipsalliance)
override def scalacOptions = super.scalacOptions() ++
Seq("-deprecation", "-unchecked", "-Xsource:2.11")
}
object zcu102 extends CommonModule with ScalafmtModule with ScalafixModule {
override def millSourcePath = os.pwd
override def ivyDeps = super.ivyDeps() ++ Agg(
getVersion("chisel3"),
getVersion("chiseltest")
)
override def scalacPluginIvyDeps = super.scalacPluginIvyDeps() ++ Agg(
getVersion("chisel3-plugin")
)
override def scalafixIvyDeps = Agg(
ivy"com.github.liancheng::organize-imports:0.5.0"
)
override def moduleDeps =
super.moduleDeps ++ Seq(apiConfigChipsalliance, rocketChip)
object test extends Tests with TestModule.ScalaTest {
override def ivyDeps = super.ivyDeps() ++ Agg(
getVersion("scalatest")
)
}
}