forked from sifive/api-chisel3-sifive
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.wake
69 lines (59 loc) · 2.39 KB
/
build.wake
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
def buildDir = mkdir "build/chisel3"
def scalacOpts = "-deprecation", "-feature", Nil
# We ignore scalaVersion because it comes from ScalaModule
# The scalaVersion in ivydependencies.json is purely for fetching
def macrosParadiseIvyDep =
def extractIvyDep json =
json // `macrosParadise` // `dependencies` | getJString
| omapPartial stringToIvyDep
| getOrFail (makeError "macrosParadise ivy dependency not found!")
readIvyDepsJSON here
| rmapPass extractIvyDep
# TODO Should this be in the standard lib?
def orElse b = match _
Some a = Some a
None = b
# Adds an a compiler plugin dependency on macros paradise
# If module is already broken, keeps old error
global def addMacrosParadiseCompilerPlugin module =
match macrosParadiseIvyDep
Pass dep = module | editScalaModuleCompilerPlugins (dep, _)
Fail err = module | editScalaModuleError (orElse (Some err))
global def chisel3CoreMacros =
makeScalaModuleFromJSON here "chisel3Macros"
| setScalaModuleRootDir "chisel3/macros"
| setScalaModuleScalacOptions scalacOpts
| addMacrosParadiseCompilerPlugin
global def chisel3Frontend =
makeScalaModuleFromJSON here "chisel3Core"
| setScalaModuleRootDir "chisel3/core"
| setScalaModuleDeps (chisel3CoreMacros, firrtlScalaModule, Nil)
| setScalaModuleScalacOptions scalacOpts
| addMacrosParadiseCompilerPlugin
global def chisel3Version = "3.3.0-RC3"
def buildInfo ver =
def content =
"package chisel3\n"
, "import scala.Predef._\n"
, "/** This object was generated by chisel3-wake */"
, "case object BuildInfo \{"
, " val buildInfoPackage: String = \"chisel3\""
, " val version: String = \"{chisel3Version}\""
, " val scalaVersion: String = \"{ver.scalaVersionToString}\""
, " override val toString: String ="
, " s\"buildInfoPackage: $buildInfoPackage, version: $version, scalaVersion: $scalaVersion\""
, "\}"
, Nil
def outDir = mkdir "{buildDir.getPathName}/buildInfo"
def outFile = "{outDir.getPathName}/BuildInfo.scala"
write outFile (content | catWith "\n")
global def chisel3ScalaModule =
def base =
makeScalaModuleFromJSON here "chisel3"
| setScalaModuleRootDir "chisel3"
| setScalaModuleDeps (chisel3Frontend, Nil)
| setScalaModuleScalacOptions scalacOpts
| addMacrosParadiseCompilerPlugin
def genSrcs Unit = buildInfo base.getScalaModuleScalaVersion, Nil
base
| setScalaModuleFnGeneratedSources genSrcs