This way is to package any version you want from source code.
If you just want to package FIRRTL only. Take latest version for example.
$ git clone https://github.com/freechipsproject/firrtl.git
$ sbt assembly
Then it locates in utils/bin/firrtl.jar
.
If you want to package Chisel3, compile firrtl which version related to the chisel3 verison, take latest verison for example.
$ git clone https://github.com/freechipsproject/firrtl.git
$ sbt publishLocal
$ git clone https://github.com/freechipsproject/chisel3.git
$ mill chisel3[2.12.10].assembly
Then it locates in out/chisel3/2.12.10/assembly/dest/out-tmp.jar
If you want FIRRTL only, download firrtl-1.2.0
If you want Chisel3, download chisel3-3.2.0
If you package from souce ocde, take chisel3 for example. Rename out/chisel3/2.12.10/assembly/dest/out-tmp.jar
to chisel3.jar
or others you want. Then copy it to lib
directory according to what build tools you use.
unmanaged dependencies are jars dropped into the lib
directory. For example, the project directory is foo
, then enter it cd foo
and mkdir lib
, copy the jar file to it.
http://www.lihaoyi.com/mill/page/configuring-mill.html#unmanaged-jars
// build.sc
import mill._, scalalib._
object foo extends ScalaModule {
def scalaVersion = "2.12.4"
def unmanagedClasspath = T {
if (!ammonite.ops.exists(millSourcePath / "lib")) Agg()
else Agg.from(ammonite.ops.ls(millSourcePath / "lib").map(PathRef(_)))
}
}
You can override unmanagedClasspath
to point it at any jars you place on the filesystem, e.g. in the above snippet any jars that happen to live in the foo/lib/
folder.