From 4716c1873aab92642cb484e6250f2801779b9729 Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Mon, 18 Sep 2023 17:55:12 +0200 Subject: [PATCH 1/3] Support `release-size` releaseMode in Scala Native --- contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala | 1 + .../src/mill/scalanativelib/api/ScalaNativeApi.scala | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) 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..fa56d42b795 100644 --- a/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala +++ b/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala @@ -18,15 +18,17 @@ 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") + 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] } From 8297f55f9ba10a521ba58c2c138cb3372a6c7078 Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Mon, 18 Sep 2023 19:10:21 +0200 Subject: [PATCH 2/3] Add Scaladoc to ReleaseSize Co-authored-by: Tobias Roeser --- .../src/mill/scalanativelib/api/ScalaNativeApi.scala | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala b/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala index fa56d42b795..c85f183996a 100644 --- a/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala +++ b/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala @@ -23,6 +23,10 @@ object ReleaseMode { 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] From b467fcb9c9d08ad26eba261fb8227390b1c266f1 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Mon, 18 Sep 2023 20:07:41 +0200 Subject: [PATCH 3/3] scalafmt --- .../src/mill/scalanativelib/api/ScalaNativeApi.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala b/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala index c85f183996a..6739ef7c66d 100644 --- a/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala +++ b/scalanativelib/src/mill/scalanativelib/api/ScalaNativeApi.scala @@ -23,9 +23,11 @@ object ReleaseMode { 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. + + /** + * Optimizes output binary size and still have relatively fast runtime performance. * Equivalent to `-Oz` switch of `clang`. - * Since Scala Native 0.4.10 + * Since Scala Native 0.4.10 */ case object ReleaseSize extends ReleaseMode("release-size")