Configure jvmRun task to set -XstartOnFirstThread on OSX such that demos can be debugged and profiled

This commit is contained in:
Edwin Jakobs
2025-08-28 18:59:31 +02:00
parent 4e8267ceeb
commit 927dc8eb98

View File

@@ -4,6 +4,7 @@ import CollectScreenshotsTask
import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
import org.gradle.nativeplatform.platform.internal.DefaultOperatingSystem
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
@@ -72,6 +73,12 @@ kotlin {
useJUnitPlatform() useJUnitPlatform()
testLogging.exceptionFormat = TestExceptionFormat.FULL testLogging.exceptionFormat = TestExceptionFormat.FULL
} }
@OptIn(ExperimentalKotlinGradlePluginApi::class)
mainRun {
classpath(kotlin.jvm().compilations.getByName("demo").output.allOutputs)
classpath(kotlin.jvm().compilations.getByName("demo").configurations.runtimeDependencyConfiguration!!)
}
} }
js(IR) { js(IR) {
@@ -182,12 +189,10 @@ if (shouldPublish) {
} }
} }
kotlin { tasks.withType<JavaExec>().matching { it.name == "jvmRun" }.configureEach {
@OptIn(ExperimentalKotlinGradlePluginApi::class) workingDir = rootDir
jvm().mainRun { val os: OperatingSystem? = DefaultNativePlatform.getCurrentOperatingSystem()
classpath(kotlin.jvm().compilations.getByName("demo").output.allOutputs) if (os?.name == "Mac OS X") {
classpath(kotlin.jvm().compilations.getByName("demo").configurations.runtimeDependencyConfiguration!!) setJvmArgs(listOf("-XstartOnFirstThread"))
} }
} }
tasks.withType<JavaExec>().matching { it.name == "jvmRun" }.configureEach { workingDir = rootDir }