Files
gps/dependencies/diplomacy/build.sc
T
2026-07-12 11:01:51 +03:00

82 lines
2.6 KiB
Python

import mill._
import mill.scalalib._
import mill.scalalib.publish._
import scalafmt._
import $ivy.`com.goyeau::mill-scalafix::0.3.2`
import com.goyeau.mill.scalafix.ScalafixModule
import $ivy.`de.tototec::de.tobiasroeser.mill.vcs.version_mill0.11:0.4.0`
import de.tobiasroeser.mill.vcs.version.VcsVersion
import $file.dependencies.cde.common
import $file.dependencies.chisel.build
import $file.common
object v {
val scala = "2.13.16"
val chiselCrossVersions = Map(
"6.7.0" -> (ivy"org.chipsalliance::chisel:6.7.0", ivy"org.chipsalliance:::chisel-plugin:6.7.0"),
// build from project from source
"source" -> (ivy"org.chipsalliance::chisel:99", ivy"org.chipsalliance:::chisel-plugin:99"),
)
val sourcecode = ivy"com.lihaoyi::sourcecode:0.3.1"
}
object cde extends CDE
trait CDE extends millbuild.dependencies.cde.common.CDEModule with DiplomacyPublishModule with ScalaModule {
def scalaVersion: T[String] = T(v.scala)
override def millSourcePath = os.pwd / "dependencies" / "cde" / "cde"
}
// Build form source only for dev
object chisel extends Chisel
trait Chisel
extends millbuild.dependencies.chisel.build.Chisel {
def crossValue = v.scala
override def millSourcePath = os.pwd / "dependencies" / "chisel"
def scalaVersion = T(v.scala)
}
object diplomacy extends Cross[Diplomacy](v.chiselCrossVersions.keys.toSeq)
trait Diplomacy
extends millbuild.common.DiplomacyModule
with DiplomacyPublishModule
with ScalafmtModule
with ScalafixModule
with Cross.Module[String] {
def scalaVersion: T[String] = T(v.scala)
def millSourcePath = os.pwd / "diplomacy"
def chiselModule = Option.when(crossValue == "source")(chisel)
def chiselPluginJar = T(Option.when(crossValue == "source")(chisel.pluginModule.jar()))
def chiselIvy = Option.when(crossValue != "source")(v.chiselCrossVersions(crossValue)._1)
def chiselPluginIvy = Option.when(crossValue != "source")(v.chiselCrossVersions(crossValue)._2)
def cdeModule = cde
def sourcecodeIvy = v.sourcecode
}
trait DiplomacyPublishModule extends PublishModule {
def publishVersion = de.tobiasroeser.mill.vcs.version.VcsVersion.vcsState().format()
def pomSettings = PomSettings(
description = artifactName(),
organization = "org.chipsalliance",
url = "https://www.github.com/chipsalliance/diplomacy",
licenses = Seq(License.`Apache-2.0`),
versionControl = VersionControl.github("chipsalliance", "diplomacy"),
developers = Seq(
Developer("terpstra", "Wesley W. Terpstra", "https://github.com/terpstra"),
Developer("hcook", "Henry Cook", "https://github.com/hcook"),
Developer("sequencer", "Jiuyang Liu", "https://github.com/sequencer")
)
)
}