1*2905e463SZihao Yuimport mill._, scalalib._ 2*2905e463SZihao Yuimport coursier.maven.MavenRepository 3*2905e463SZihao Yu 4*2905e463SZihao Yuobject CustomZincWorkerModule extends ZincWorkerModule { 5*2905e463SZihao Yu def repositories() = super.repositories ++ Seq( 6*2905e463SZihao Yu MavenRepository("https://oss.sonatype.org/content/repositories/releases"), 7*2905e463SZihao Yu MavenRepository("https://oss.sonatype.org/content/repositories/snapshots") 8*2905e463SZihao Yu ) 9*2905e463SZihao Yu} 10*2905e463SZihao Yu 11*2905e463SZihao Yu/** 12*2905e463SZihao Yu * Scala 2.12 module that is source-compatible with 2.11. 13*2905e463SZihao Yu * This is due to Chisel's use of structural types. See 14*2905e463SZihao Yu * https://github.com/freechipsproject/chisel3/issues/606 15*2905e463SZihao Yu */ 16*2905e463SZihao Yutrait HasXsource211 extends ScalaModule { 17*2905e463SZihao Yu override def scalacOptions = T { 18*2905e463SZihao Yu super.scalacOptions() ++ Seq( 19*2905e463SZihao Yu "-deprecation", 20*2905e463SZihao Yu "-unchecked", 21*2905e463SZihao Yu "-Xsource:2.11" 22*2905e463SZihao Yu ) 23*2905e463SZihao Yu } 24*2905e463SZihao Yu} 25*2905e463SZihao Yu 26*2905e463SZihao Yutrait HasChisel3 extends ScalaModule { 27*2905e463SZihao Yu override def ivyDeps = Agg( 28*2905e463SZihao Yu //ivy"edu.berkeley.cs::chisel3:3.1.+" 29*2905e463SZihao Yu ivy"edu.berkeley.cs::chisel3:3.2-SNAPSHOT" 30*2905e463SZihao Yu ) 31*2905e463SZihao Yu} 32*2905e463SZihao Yu 33*2905e463SZihao Yutrait HasChiselTests extends CrossSbtModule { 34*2905e463SZihao Yu object test extends Tests { 35*2905e463SZihao Yu override def ivyDeps = Agg(ivy"org.scalatest::scalatest:3.0.4", ivy"edu.berkeley.cs::chisel-iotesters:1.2+") 36*2905e463SZihao Yu def testFrameworks = Seq("org.scalatest.tools.Framework") 37*2905e463SZihao Yu } 38*2905e463SZihao Yu} 39*2905e463SZihao Yu 40*2905e463SZihao Yutrait HasMacroParadise extends ScalaModule { 41*2905e463SZihao Yu // Enable macro paradise for @chiselName et al 42*2905e463SZihao Yu val macroPlugins = Agg(ivy"org.scalamacros:::paradise:2.1.0") 43*2905e463SZihao Yu def scalacPluginIvyDeps = macroPlugins 44*2905e463SZihao Yu def compileIvyDeps = macroPlugins 45*2905e463SZihao Yu} 46*2905e463SZihao Yu 47*2905e463SZihao Yuobject chiselModule extends CrossSbtModule with HasChisel3 with HasChiselTests with HasXsource211 with HasMacroParadise { 48*2905e463SZihao Yu def zincWorker = CustomZincWorkerModule 49*2905e463SZihao Yu def crossScalaVersion = "2.11.12" 50*2905e463SZihao Yu} 51*2905e463SZihao Yu 52