Package builtins with jvm reflect into IDEA plugin only

Leave builtins with common reflect for stand-alone compiler.
This commit is contained in:
Ilya Gorbunov
2020-07-21 17:44:21 +03:00
committed by Stanislav Erokhin
parent 0c094b1719
commit 95cc35f22e
3 changed files with 56 additions and 19 deletions
+9 -2
View File
@@ -1,3 +1,8 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("unused")
// usages in build scripts are not tracked properly
@@ -97,9 +102,11 @@ fun Project.kotlinStdlib(suffix: String? = null, classifier: String? = null): An
dependencies.project(listOfNotNull(":kotlin-stdlib", suffix).joinToString("-"), classifier)
}
fun Project.kotlinBuiltins(): Any =
fun Project.kotlinBuiltins(): Any = kotlinBuiltins(forJvm = false)
fun Project.kotlinBuiltins(forJvm: Boolean): Any =
if (kotlinBuildProperties.useBootstrapStdlib) "org.jetbrains.kotlin:builtins:$bootstrapKotlinVersion"
else dependencies.project(":core:builtins")
else dependencies.project(":core:builtins", configuration = "runtimeElementsJvm".takeIf { forJvm })
fun DependencyHandler.projectTests(name: String): ProjectDependency = project(name, configuration = "tests-jar")
fun DependencyHandler.projectRuntimeJar(name: String): ProjectDependency = project(name, configuration = "runtimeJar")
+46 -16
View File
@@ -11,6 +11,7 @@ val builtinsNative = fileFrom(rootDir, "core", "builtins", "native")
val kotlinReflectCommon = fileFrom(rootDir, "libraries/stdlib/src/kotlin/reflect/")
val kotlinReflectJvm = fileFrom(rootDir, "libraries/stdlib/jvm/src/kotlin/reflect")
val builtinsCherryPicked = fileFrom(buildDir, "src")
val builtinsCherryPickedJvm = fileFrom(buildDir, "src-jvm")
val runtimeElements by configurations.creating {
isCanBeResolved = false
@@ -20,7 +21,24 @@ val runtimeElements by configurations.creating {
}
}
val runtimeElementsJvm by configurations.creating {
isCanBeResolved = false
isCanBeConsumed = true
attributes {
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR))
attribute(Attribute.of("builtins.platform", String::class.java), "JVM")
}
}
val prepareSources by tasks.registering(Sync::class) {
from(kotlinReflectCommon) {
exclude("typeOf.kt")
exclude("KClasses.kt")
}
into(builtinsCherryPicked)
}
val prepareSourcesJvm by tasks.registering(Sync::class) {
from(kotlinReflectJvm) {
exclude("TypesJVM.kt")
exclude("KClassesImpl.kt")
@@ -31,26 +49,29 @@ val prepareSources by tasks.registering(Sync::class) {
include("KTypeParameter.kt")
include("KVariance.kt")
}
into(builtinsCherryPicked)
into(builtinsCherryPickedJvm)
}
val serialize by tasks.registering(NoDebugJavaExec::class) {
dependsOn(prepareSources)
val outDir = buildDir.resolve(name)
val inDirs = arrayOf(builtinsSrc, builtinsNative, builtinsCherryPicked)
inDirs.forEach { inputs.dir(it).withPathSensitivity(RELATIVE) }
fun serializeTask(name: String, sourcesTask: TaskProvider<*>, inDirs: List<File>) =
tasks.register(name, NoDebugJavaExec::class) {
dependsOn(sourcesTask)
val outDir = buildDir.resolve(this.name)
inDirs.forEach { inputs.dir(it).withPathSensitivity(RELATIVE) }
outputs.dir(outDir)
outputs.cacheIf { true }
outputs.dir(outDir)
outputs.cacheIf { true }
classpath(rootProject.buildscript.configurations["bootstrapCompilerClasspath"])
main = "org.jetbrains.kotlin.serialization.builtins.RunKt"
jvmArgs("-Didea.io.use.nio2=true")
args(
pathRelativeToWorkingDir(outDir),
*inDirs.map(::pathRelativeToWorkingDir).toTypedArray()
)
}
classpath(rootProject.buildscript.configurations["bootstrapCompilerClasspath"])
main = "org.jetbrains.kotlin.serialization.builtins.RunKt"
jvmArgs("-Didea.io.use.nio2=true")
args(
pathRelativeToWorkingDir(outDir),
*inDirs.map(::pathRelativeToWorkingDir).toTypedArray()
)
}
val serialize = serializeTask("serialize", prepareSources, listOf(builtinsSrc, builtinsNative, builtinsCherryPicked))
val serializeJvm = serializeTask("serializeJvm", prepareSourcesJvm, listOf(builtinsSrc, builtinsNative, builtinsCherryPickedJvm))
val builtinsJar by task<Jar> {
dependsOn(serialize)
@@ -58,11 +79,20 @@ val builtinsJar by task<Jar> {
destinationDir = File(buildDir, "libs")
}
val builtinsJvmJar by task<Jar> {
dependsOn(serializeJvm)
from(serializeJvm) { include("kotlin/**") }
archiveClassifier.set("jvm")
destinationDir = File(buildDir, "libs")
}
val assemble by tasks.getting {
dependsOn(serialize)
dependsOn(serializeJvm)
}
val builtinsJarArtifact = artifacts.add(runtimeElements.name, builtinsJar)
artifacts.add(runtimeElementsJvm.name, builtinsJvmJar)
publishing {
publications {
+1 -1
View File
@@ -161,7 +161,7 @@ dependencies {
embedded(project(it)) { isTransitive = false }
}
embedded(protobufFull())
embedded(kotlinBuiltins())
embedded(kotlinBuiltins(forJvm = true))
libraries(commonDep("org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:${property("versions.kotlinx-collections-immutable")}"))
libraries(commonDep("javax.inject"))