From 927dc8eb98b76559b1dd9e6db99f023c5a70288d Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Thu, 28 Aug 2025 18:59:31 +0200 Subject: [PATCH] Configure jvmRun task to set -XstartOnFirstThread on OSX such that demos can be debugged and profiled --- .../kotlin-multiplatform.gradle.kts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts b/buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts index ca9057e0..78246663 100644 --- a/buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts +++ b/buildSrc/src/main/kotlin/org/openrndr/extra/convention/kotlin-multiplatform.gradle.kts @@ -4,6 +4,7 @@ import CollectScreenshotsTask import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.tasks.testing.logging.TestExceptionFormat 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.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinVersion @@ -72,6 +73,12 @@ kotlin { useJUnitPlatform() 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) { @@ -182,12 +189,10 @@ if (shouldPublish) { } } -kotlin { - @OptIn(ExperimentalKotlinGradlePluginApi::class) - jvm().mainRun { - classpath(kotlin.jvm().compilations.getByName("demo").output.allOutputs) - classpath(kotlin.jvm().compilations.getByName("demo").configurations.runtimeDependencyConfiguration!!) +tasks.withType().matching { it.name == "jvmRun" }.configureEach { + workingDir = rootDir + val os: OperatingSystem? = DefaultNativePlatform.getCurrentOperatingSystem() + if (os?.name == "Mac OS X") { + setJvmArgs(listOf("-XstartOnFirstThread")) } } - -tasks.withType().matching { it.name == "jvmRun" }.configureEach { workingDir = rootDir }