import ru.landgrafhomyak.kotlin.kmp_gradle_build_helper.configureAllCompilersOptionsOnAllTargets import ru.landgrafhomyak.kotlin.kmp_gradle_build_helper.defineXomrkGiteaMavenRepo buildscript { repositories { mavenCentral() maven("https://maven.landgrafhomyak.ru/") } dependencies { classpath("ru.landgrafhomyak.kotlin:kotlin-mpp-gradle-build-helper:v0.3k2.1.10") } } plugins { kotlin("multiplatform") version "2.2.20-Beta1" `maven-publish` } group = "ru.landgrafhomyak.multitasking" version = "0.1" repositories { mavenCentral() } kotlin { explicitApi() jvm() mingwX64() linuxX64() linuxArm64() macosX64() macosArm64() js { browser() nodejs() } configureAllCompilersOptionsOnAllTargets { freeCompilerArgs.addAll("-Xexpect-actual-classes", "-Xrender-internal-diagnostic-names", "-XXLanguage:+ExpectRefinement") } jvm().compilations.configureEach { compileTaskProvider { compilerOptions { freeCompilerArgs.addAll("-Xjvm-default=all", "-Xdirect-java-actualization") } } } sourceSets { val commonMain by getting { dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib:${this@kotlin.coreLibrariesVersion}") } } val commonTest by getting val notJvmMain by creating { dependsOn(commonMain) } val notJvmTest by creating { dependsOn(commonTest) } val multithreadPlatformMain by creating { dependsOn(commonMain) } val multithreadPlatformTest by creating { dependsOn(commonTest) } val singleThreadPlatformMain by creating { dependsOn(commonMain) } val singleThreadPlatformTest by creating { dependsOn(commonTest) } targets.configureEach target@{ if (this@target in setOf(this@kotlin.metadata(), this@kotlin.jvm())) return@target this@target.compilations.getByName("main").defaultSourceSet.dependsOn(notJvmMain) this@target.compilations.getByName("test").defaultSourceSet.dependsOn(notJvmTest) } targets.configureEach target@{ if (this@target == this@kotlin.metadata()) return@target if (this@target in setOf(this@kotlin.js())) { this@target.compilations.getByName("main").defaultSourceSet.dependsOn(singleThreadPlatformMain) this@target.compilations.getByName("test").defaultSourceSet.dependsOn(singleThreadPlatformTest) } else { this@target.compilations.getByName("main").defaultSourceSet.dependsOn(multithreadPlatformMain) this@target.compilations.getByName("test").defaultSourceSet.dependsOn(multithreadPlatformTest) } } } } publishing { repositories { defineXomrkGiteaMavenRepo("Multitasking") } }