90 lines
3.3 KiB
Kotlin
90 lines
3.3 KiB
Kotlin
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)
|
|
}
|
|
}
|
|
|
|
|