Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 19 additions & 13 deletions build.sc → build.mill
Original file line number Diff line number Diff line change
@@ -1,29 +1,35 @@
//| mill-version: 1.1.0
//| mill-jvm-version: system
// Use the system JDK (e.g. JDK17) to avoid Scala 2.13.10 crashes like
// "bad constant pool index" when Mill runs on its own newer JDK.

package build

import mill._
import mill.scalalib._
import mill.scalalib.publish._
import $file.common

object v {
val scala = "2.13.10"
val chiselCrossVersions = Map(
"3.5.6" -> (ivy"edu.berkeley.cs::chisel3:3.5.6", ivy"edu.berkeley.cs:::chisel3-plugin:3.5.6"),
"3.6.0" -> (ivy"edu.berkeley.cs::chisel3:3.6.0", ivy"edu.berkeley.cs:::chisel3-plugin:3.6.0"),
"5.0.0" -> (ivy"org.chipsalliance::chisel:5.0.0", ivy"org.chipsalliance:::chisel-plugin:5.0.0"),
"3.5.6" -> (mvn"edu.berkeley.cs::chisel3:3.5.6", mvn"edu.berkeley.cs:::chisel3-plugin:3.5.6"),
"3.6.0" -> (mvn"edu.berkeley.cs::chisel3:3.6.0", mvn"edu.berkeley.cs:::chisel3-plugin:3.6.0"),
"5.0.0" -> (mvn"org.chipsalliance::chisel:5.2.0", mvn"org.chipsalliance:::chisel-plugin:5.2.0"),
"6.7.0" -> (mvn"org.chipsalliance::chisel:6.7.0", mvn"org.chipsalliance:::chisel-plugin:6.7.0"),
"7.7.0" -> (mvn"org.chipsalliance::chisel:7.7.0", mvn"org.chipsalliance:::chisel-plugin:7.7.0"),
)
val scalatest = ivy"org.scalatest::scalatest:3.2.0"
val scalapar = ivy"org.scala-lang.modules::scala-parallel-collections:1.0.4"
val scalatest = mvn"org.scalatest::scalatest:3.2.0"
val scalapar = mvn"org.scala-lang.modules::scala-parallel-collections:1.0.4"
}

object hardfloat extends Cross[Hardfloat](v.chiselCrossVersions.keys.toSeq)

trait Hardfloat
extends common.HardfloatModule
extends build.HardfloatModule
with HardfloatPublishModule
with Cross.Module[String] {

override def scalaVersion = T(v.scala)

override def millSourcePath = os.pwd / "hardfloat"
override def scalaVersion = v.scala

def chiselModule = None

Expand All @@ -37,12 +43,12 @@ trait Hardfloat
object hardfloatdut extends Cross[HardfloatDut](v.chiselCrossVersions.keys.toSeq)

trait HardfloatDut
extends common.HardfloatTestModule
extends build.HardfloatTestModule
with Cross.Module[String] {

override def scalaVersion = T(v.scala)
override def scalaVersion = v.scala

override def millSourcePath = os.pwd / "hardfloat" / "tests"
override def moduleDir = super.moduleDir / os.up / "hardfloat" / "tests"

def hardfloatModule = hardfloat(crossValue)

Expand Down
21 changes: 9 additions & 12 deletions common.sc → common.mill
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package build

import mill._
import mill.scalalib._

Expand All @@ -10,18 +12,18 @@ trait HasChisel

def chiselPluginJar: T[Option[PathRef]]

override def scalacOptions = T(super.scalacOptions() ++ chiselPluginJar().map(path => s"-Xplugin:${path.path}"))
override def scalacOptions = super.scalacOptions() ++ chiselPluginJar().map(path => s"-Xplugin:${path.path}")

override def scalacPluginClasspath: T[Agg[PathRef]] = T(super.scalacPluginClasspath() ++ chiselPluginJar())
override def scalacPluginClasspath: T[Seq[PathRef]] = super.scalacPluginClasspath() ++ chiselPluginJar()

// Define these for building chisel from ivy
def chiselIvy: Option[Dep]

override def ivyDeps = T(super.ivyDeps() ++ chiselIvy)
override def mvnDeps = super.mvnDeps() ++ chiselIvy

def chiselPluginIvy: Option[Dep]

override def scalacPluginIvyDeps: T[Agg[Dep]] = T(super.scalacPluginIvyDeps() ++ chiselPluginIvy.map(Agg(_)).getOrElse(Agg.empty[Dep]))
override def scalacPluginMvnDeps: T[Seq[Dep]] = super.scalacPluginMvnDeps() ++ chiselPluginIvy.map(Seq(_)).getOrElse(Seq.empty[Dep])
}

trait HardfloatModule
Expand All @@ -36,7 +38,7 @@ trait HardfloatTestModule

def chiselModule = hardfloatModule.chiselModule

def chiselPluginJar: T[Option[PathRef]] = T(hardfloatModule.chiselPluginJar())
def chiselPluginJar: T[Option[PathRef]] = hardfloatModule.chiselPluginJar()

def chiselIvy: Option[Dep] = hardfloatModule.chiselIvy

Expand All @@ -48,12 +50,7 @@ trait HardfloatTestModule

override def moduleDeps = super.moduleDeps ++ Some(hardfloatModule)

override def defaultCommandName() = "test"
override def defaultTask() = "test"

override def ivyDeps = T(
super.ivyDeps() ++ Agg(
scalatestIvy,
scalaparIvy
)
)
override def mvnDeps = super.mvnDeps() ++ Seq(scalatestIvy, scalaparIvy)
}