diff --git a/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala b/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala index 25be1fa75f0..8859c478ea2 100644 --- a/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala +++ b/contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala @@ -248,6 +248,7 @@ class BloopImpl(ev: () => Evaluator, wd: os.Path) extends ExternalModule { outer case ReleaseMode.Debug => BloopConfig.LinkerMode.Debug case ReleaseMode.ReleaseFast => BloopConfig.LinkerMode.Release case ReleaseMode.ReleaseFull => BloopConfig.LinkerMode.Release + case ReleaseMode.ReleaseSize => BloopConfig.LinkerMode.Release }, gc = m.nativeGC(), targetTriple = m.nativeTarget(), diff --git a/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala b/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala index d1f7cac8732..6739ef7c66d 100644 --- a/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala +++ b/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala @@ -18,15 +18,23 @@ object LTO { sealed abstract class ReleaseMode(val value: String) object ReleaseMode { - val values = Seq(Debug, ReleaseFast, ReleaseFull) + val values = Seq(Debug, ReleaseFast, ReleaseFull, ReleaseSize) case object Debug extends ReleaseMode("debug") case object ReleaseFast extends ReleaseMode("release-fast") case object ReleaseFull extends ReleaseMode("release-full") + /** + * Optimizes output binary size and still have relatively fast runtime performance. + * Equivalent to `-Oz` switch of `clang`. + * Since Scala Native 0.4.10 + */ + case object ReleaseSize extends ReleaseMode("release-size") + implicit val rwDebug: ReadWriter[Debug.type] = macroRW[Debug.type] implicit val rwReleaseFast: ReadWriter[ReleaseFast.type] = macroRW[ReleaseFast.type] implicit val rwReleaseFull: ReadWriter[ReleaseFull.type] = macroRW[ReleaseFull.type] + implicit val rwReleaseSize: ReadWriter[ReleaseSize.type] = macroRW[ReleaseSize.type] implicit val rw: ReadWriter[ReleaseMode] = macroRW[ReleaseMode] }