blob: 5ed9a5ed081e33907b1222c0435ceb6d0daf16ff [file] [log] [blame]
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget.MACOS_ARM64
import org.jetbrains.kotlin.kotlinNativeDist
plugins {
kotlin("jvm")
}
val testCompilationClasspath by configurations.creating
val testCompilerClasspath by configurations.creating {
isCanBeConsumed = false
extendsFrom(configurations["runtimeElements"])
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY))
}
}
repositories{
mavenCentral()
}
val kotlinNativeEmbedded by configurations.creating
val testPlugin by configurations.creating
val testPluginRuntime by configurations.creating
fun DependencyHandlerScope.testPluginRuntime(any: Any) {
val notation = any as? String ?: return add(testPluginRuntime.name, any){}
val (group, artifact, version) = notation.split(":")
val platformName = HostManager.host.name
val gradlePlatformName = platformName.replace("_", "")
return add(testPluginRuntime.name, "$group:$artifact-$gradlePlatformName:$version") {
isTransitive = false
attributes {
attribute(Attribute.of("artifactType", String::class.java), "org.jetbrains.kotlin.klib")
attribute(Attribute.of("org.gradle.status", String::class.java), "release")
attribute(Attribute.of("org.jetbrains.kotlin.native.target", String::class.java), platformName)
attribute(Attribute.of("org.jetbrains.kotlin.platform.type", String::class.java), "native")
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
}
}
}
dependencies {
kotlinNativeEmbedded(project(":kotlin-native:Interop:Runtime"))
kotlinNativeEmbedded(project(":kotlin-native:Interop:Indexer"))
kotlinNativeEmbedded(project(":kotlin-native:Interop:StubGenerator"))
kotlinNativeEmbedded(project(":kotlin-native:Interop:Skia"))
kotlinNativeEmbedded(project(":kotlin-native:backend.native"))
kotlinNativeEmbedded(project(":kotlin-native:utilities:cli-runner"))
kotlinNativeEmbedded(project(":kotlin-native:utilities:basic-utils"))
kotlinNativeEmbedded(project(":kotlin-native:klib"))
kotlinNativeEmbedded(project(":kotlin-native:endorsedLibraries:kotlinx.cli", "jvmRuntimeElements"))
kotlinNativeEmbedded(project(":kotlin-compiler")) { isTransitive = false }
testImplementation(commonDependency("junit:junit"))
testImplementation(project(":kotlin-test:kotlin-test-junit"))
}
val compiler = embeddableCompiler("kotlin-native-compiler-embeddable") {
from(kotlinNativeEmbedded)
/**
* this jar distributed through kotlin-native distribution, but not with maven.
*/
archiveVersion.set("")
mergeServiceFiles()
}
val runtimeJar = runtimeJar(compiler) {
exclude("com/sun/jna/**")
mergeServiceFiles()
}
kotlin.sourceSets["test"].kotlin.srcDir("tests/kotlin")
projectTest {
/**
* It's expected that test should be executed on CI, but currently this project under `kotlin.native.enabled`
*/
dependsOn(runtimeJar)
val runtimeJarPathProvider = project.provider { runtimeJar.get().outputs.files.asPath }
doFirst {
systemProperty("compilerClasspath", runtimeJarPathProvider.get())
systemProperty("kotlin.native.home", kotlinNativeDist)
}
}