Skip to content

Commit 5dd4c64

Browse files
authored
Merge pull request #3118 from Gedochao/feature/jmh-directives
Add directives for JMH
2 parents 834d785 + 644d8b6 commit 5dd4c64

File tree

16 files changed

+432
-290
lines changed

16 files changed

+432
-290
lines changed

build.sc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,6 +1045,11 @@ trait CliIntegration extends SbtModule with ScalaCliPublishModule with HasTests
10451045
|
10461046
| def ghOrg = "$ghOrg"
10471047
| def ghName = "$ghName"
1048+
|
1049+
| def jmhVersion = "${Deps.Versions.jmh}"
1050+
| def jmhOrg = "${Deps.jmhCore.dep.module.organization.value}"
1051+
| def jmhCoreModule = "${Deps.jmhCore.dep.module.name.value}"
1052+
| def jmhGeneratorBytecodeModule = "${Deps.jmhGeneratorBytecode.dep.module.name.value}"
10481053
|}
10491054
|""".stripMargin
10501055
if (!os.isFile(dest) || os.read(dest) != code)

modules/build/src/main/scala/scala/build/Build.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ object Build {
451451

452452
build0 match {
453453
case successful: Successful =>
454-
if (options.jmhOptions.runJmh.getOrElse(false) && scope == Scope.Main)
454+
if (options.jmhOptions.canRunJmh && scope == Scope.Main)
455455
value {
456456
val res = jmhBuild(
457457
inputs,

modules/build/src/main/scala/scala/build/preprocessing/directives/DirectivesPreprocessingUtils.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import scala.build.preprocessing.directives
1212
object DirectivesPreprocessingUtils {
1313
val usingDirectiveHandlers: Seq[DirectiveHandler[BuildOptions]] =
1414
Seq[DirectiveHandler[_ <: HasBuildOptions]](
15+
directives.Benchmarking.handler,
1516
directives.BuildInfo.handler,
1617
directives.ComputeVersion.handler,
1718
directives.Exclude.handler,

modules/cli/src/main/scala/scala/cli/commands/bloop/Bloop.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ object Bloop extends ScalaCommand[BloopOptions] {
3333
jvm = opts.jvm,
3434
coursier = opts.coursier
3535
)
36-
val options = sharedOptions.buildOptions(false, None).orExit(opts.global.logging.logger)
36+
val options = sharedOptions.buildOptions().orExit(opts.global.logging.logger)
3737

3838
val javaHomeInfo = opts.compilationServer.bloopJvm
3939
.map(JvmUtils.downloadJvm(_, options))

modules/cli/src/main/scala/scala/cli/commands/doc/Doc.scala

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,7 @@ object Doc extends ScalaCommand[DocOptions] {
3030

3131
override def buildOptions(options: DocOptions): Option[BuildOptions] =
3232
sharedOptions(options)
33-
.map(shared =>
34-
shared.buildOptions(
35-
enableJmh = shared.benchmarking.jmh.getOrElse(false),
36-
jmhVersion = shared.benchmarking.jmhVersion
37-
).orExit(shared.logger)
38-
)
33+
.map(shared => shared.buildOptions().orExit(shared.logger))
3934

4035
override def helpFormat: HelpFormat = super.helpFormat.withPrimaryGroup(HelpGroup.Doc)
4136

modules/cli/src/main/scala/scala/cli/commands/run/Run.scala

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,8 @@ object Run extends ScalaCommand[RunOptions] with BuildCommandHelpers {
7272
override def buildOptions(options: RunOptions): Some[BuildOptions] = Some {
7373
import options.*
7474
import options.sharedRun.*
75-
val logger = options.shared.logger
76-
val baseOptions = shared.buildOptions(
77-
enableJmh = shared.benchmarking.jmh.contains(true),
78-
jmhVersion = shared.benchmarking.jmhVersion
79-
).orExit(logger)
75+
val logger = options.shared.logger
76+
val baseOptions = shared.buildOptions().orExit(logger)
8077
baseOptions.copy(
8178
mainClass = mainClass.mainClass,
8279
javaOptions = baseOptions.javaOptions.copy(
@@ -375,7 +372,8 @@ object Run extends ScalaCommand[RunOptions] with BuildCommandHelpers {
375372

376373
val mainClassOpt = build.options.mainClass.filter(_.nonEmpty) // trim it too?
377374
.orElse {
378-
if (build.options.jmhOptions.runJmh.contains(false)) Some("org.openjdk.jmh.Main")
375+
if build.options.jmhOptions.enableJmh.contains(true) && !build.options.jmhOptions.canRunJmh
376+
then Some("org.openjdk.jmh.Main")
379377
else None
380378
}
381379
val mainClass = mainClassOpt match {

modules/cli/src/main/scala/scala/cli/commands/shared/BenchmarkingOptions.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.cli.commands.shared
22

33
import caseapp.*
44

5+
import scala.build.internal.Constants
56
import scala.cli.commands.tags
67

78
// format: off
@@ -12,7 +13,7 @@ final case class BenchmarkingOptions(
1213
jmh: Option[Boolean] = None,
1314
@Group(HelpGroup.Benchmarking.toString)
1415
@Tag(tags.experimental)
15-
@HelpMessage("Set JMH version")
16+
@HelpMessage(s"Set JMH version (default: ${Constants.jmhVersion})")
1617
@ValueDescription("version")
1718
jmhVersion: Option[String] = None
1819
)

0 commit comments

Comments
 (0)