// See LICENSE for license details.
site.settings
site.includeScaladoc()
ghpages.settings
import UnidocKeys._
lazy val customUnidocSettings = unidocSettings ++ Seq (
doc in Compile := (doc in ScalaUnidoc).value,
target in unidoc in ScalaUnidoc := crossTarget.value / "api"
)
val defaultVersions = Map("firrtl" -> "1.1-SNAPSHOT")
lazy val commonSettings = Seq (
organization := "edu.berkeley.cs",
version := "3.1-SNAPSHOT",
git.remoteRepo := "git@github.com:ucb-bar/chisel3.git",
autoAPIMappings := true,
scalaVersion := "2.11.7",
scalacOptions := Seq("-deprecation", "-feature"),
libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value,
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full),
// Use the root project's unmanaged base for all sub-projects.
unmanagedBase := (unmanagedBase in root).value,
// Since we want to examine the classpath to determine if a dependency on firrtl is required,
// this has to be a Task setting.
// Fortunately, allDependencies is a Task Setting, so we can modify that.
allDependencies := {
allDependencies.value ++ Seq("firrtl").collect {
// If we have an unmanaged jar file on the classpath, assume we're to use that,
case dep: String if !(unmanagedClasspath in Compile).value.toString.contains(s"$dep.jar") =>
// otherwise let sbt fetch the appropriate version.
"edu.berkeley.cs" %% dep % sys.props.getOrElse(dep + "Version", defaultVersions(dep))
}
}
)
lazy val chiselSettings = Seq (
name := "chisel3",
publishMavenStyle := true,
publishArtifact in Test := false,
pomIncludeRepository := { x => false },
pomExtra := http://chisel.eecs.berkeley.edu/
BSD-style
http://www.opensource.org/licenses/bsd-license.php
repo
https://github.com/ucb-bar/chisel3.git
scm:git:github.com/ucb-bar/chisel3.git
jackbackrack
Jonathan Bachrach
http://www.eecs.berkeley.edu/~jrb/
,
publishTo <<= version { v: String =>
val nexus = "https://oss.sonatype.org/"
if (v.trim.endsWith("SNAPSHOT")) {
Some("snapshots" at nexus + "content/repositories/snapshots")
}
else {
Some("releases" at nexus + "service/local/staging/deploy/maven2")
}
},
resolvers ++= Seq(
Resolver.sonatypeRepo("snapshots"),
Resolver.sonatypeRepo("releases")
),
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "2.2.5" % "test",
"org.scalacheck" %% "scalacheck" % "1.12.4" % "test",
"com.github.scopt" %% "scopt" % "3.4.0"
),
// Tests from other projects may still run concurrently.
parallelExecution in Test := true,
javacOptions ++= Seq("-target", "1.7")
// Hopefully we get these options back in Chisel3
// scalacOptions in (Compile, doc) <++= (baseDirectory in LocalProject("chisel"), version) map { (bd, v) =>
// Seq("-diagrams", "-diagrams-max-classes", "25", "-sourcepath", bd.getAbsolutePath, "-doc-source-url",
// "https://github.com/ucb-bar/chisel/tree/master/€{FILE_PATH}.scala")
// }
)
lazy val coreMacros = (project in file("coreMacros")).
settings(commonSettings: _*).
settings(publishArtifact := false)
lazy val chiselFrontend = (project in file("chiselFrontend")).
settings(commonSettings: _*).
settings(publishArtifact := false).
dependsOn(coreMacros)
// This will always be the root project, even if we are a sub-project.
lazy val root = RootProject(file("."))
lazy val chisel = (project in file(".")).
enablePlugins(BuildInfoPlugin).
settings(
buildInfoPackage := name.value,
buildInfoOptions += BuildInfoOption.BuildTime,
buildInfoUsePackageAsPath := true,
buildInfoKeys := Seq[BuildInfoKey](buildInfoPackage, version, scalaVersion, sbtVersion)
).
settings(commonSettings: _*).
settings(customUnidocSettings: _*).
settings(chiselSettings: _*).
// Prevent separate JARs from being generated for coreMacros and chiselFrontend.
dependsOn(coreMacros % "compile-internal;test-internal").
dependsOn(chiselFrontend % "compile-internal;test-internal").
settings(
scalacOptions in Test ++= Seq("-language:reflectiveCalls"),
scalacOptions in Compile in doc ++= Seq(
"-diagrams",
"-diagrams-max-classes", "25",
"-doc-version", version.value,
"-doc-title", name.value,
"-doc-root-content", baseDirectory.value+"/root-doc.txt"
),
aggregate in doc := false,
// Include macro classes, resources, and sources main JAR.
mappings in (Compile, packageBin) <++= mappings in (coreMacros, Compile, packageBin),
mappings in (Compile, packageSrc) <++= mappings in (coreMacros, Compile, packageSrc),
mappings in (Compile, packageBin) <++= mappings in (chiselFrontend, Compile, packageBin),
mappings in (Compile, packageSrc) <++= mappings in (chiselFrontend, Compile, packageSrc),
// Export the packaged JAR so projects that depend directly on Chisel project (rather than the
// published artifact) also see the stuff in coreMacros and chiselFrontend.
exportJars := true
)