multitasking-core.kt/build.gradle.kts

101 lines
2.6 KiB
Plaintext

import ru.landgrafhomyak.kotlin.kmp_gradle_build_helper.configureAllCompilationsOnAllTargets
import ru.landgrafhomyak.kotlin.kmp_gradle_build_helper.configureAllCompilersOptionsOnAllTargets
import ru.landgrafhomyak.kotlin.kmp_gradle_build_helper.defineAllMultiplatformTargets
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.10"
`maven-publish`
}
group = "ru.landgrafhomyak.multitasking"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
kotlin {
explicitApi()
jvm()
mingwX64()
linuxX64()
linuxArm64()
macosX64()
macosArm64()
js {
browser()
nodejs()
}
configureAllCompilersOptionsOnAllTargets {
freeCompilerArgs.addAll("-Xexpect-actual-classes")
}
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")
}
}