Build: add kotlin.build.useIRForLibraries to enable JVM IR for libraries separately
The next step for JVM IR adoption in our project is going to be enabling `kotlin.build.useIR`, but keeping `kotlin.build.useIRForLibraries` disabled until we fix all remaining ABI incompatibility issues for library code.
This commit is contained in:
@@ -8,7 +8,12 @@ defaultSnapshotVersion=1.4.255-SNAPSHOT
|
||||
|
||||
kotlin.compiler.effectSystemEnabled=true
|
||||
kotlin.compiler.newInferenceEnabled=true
|
||||
|
||||
# Enable JVM IR backend for all modules except libraries such as kotlin-stdlib, kotlin-reflect, kotlin-test.
|
||||
#kotlin.build.useIR=true
|
||||
# Enable JVM IR backend for the libraries mentioned above.
|
||||
#kotlin.build.useIRForLibraries=true
|
||||
|
||||
#maven.repository.mirror=http://repository.jetbrains.com/remote-repos/
|
||||
#bootstrap.kotlin.repo=https://dl.bintray.com/kotlin/kotlin-dev
|
||||
#bootstrap.kotlin.version=1.1.50-dev-1451
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
ext.configureJavaOnlyJvm6Project = { Project project ->
|
||||
project.tasks.withType(JavaCompile) {
|
||||
sourceCompatibility = 1.6
|
||||
@@ -193,6 +195,19 @@ ext.configureLegacyPublishing = { Project project ->
|
||||
}
|
||||
}
|
||||
|
||||
ext.configureJvmIrBackend = { Project project ->
|
||||
project.tasks.withType(KotlinCompile.class) { task ->
|
||||
task.kotlinOptions {
|
||||
if (CommonUtilKt.getBooleanProperty(project, "kotlin.build.useIRForLibraries")) {
|
||||
useIR = true
|
||||
freeCompilerArgs += ["-Xir-binary-with-stable-abi"]
|
||||
} else {
|
||||
useIR = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
allprojects { project ->
|
||||
project.ext.configureSourcesJar = { lambda = {} ->
|
||||
ArtifactsKt.sourcesJar(project) { task ->
|
||||
|
||||
@@ -38,6 +38,8 @@ compileTestKotlin {
|
||||
kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package"]
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
if (includeJava9) {
|
||||
compileJava9Sources(project, 'kotlin.test.junit')
|
||||
}
|
||||
|
||||
@@ -48,6 +48,8 @@ compileTestKotlin {
|
||||
kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package"]
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
if (includeJava9) {
|
||||
compileJava9Sources(project, 'kotlin.test.junit5')
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ compileTestKotlin {
|
||||
kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package"]
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
if (includeJava9) {
|
||||
compileJava9Sources(project, 'kotlin.test')
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ compileTestKotlin {
|
||||
kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package"]
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
if (includeJava9) {
|
||||
compileJava9Sources(project, 'kotlin.test.testng')
|
||||
}
|
||||
|
||||
@@ -52,6 +52,8 @@ compileKotlin {
|
||||
}
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
jar {
|
||||
manifestAttributes(manifest, project, "internal")
|
||||
}
|
||||
|
||||
@@ -91,6 +91,8 @@ compileTestKotlin {
|
||||
]
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
compileJava9Sources(project, 'kotlin.stdlib.jdk7')
|
||||
|
||||
test {
|
||||
|
||||
@@ -84,6 +84,8 @@ compileTestKotlin {
|
||||
]
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
compileJava9Sources(project, 'kotlin.stdlib.jdk8')
|
||||
|
||||
test {
|
||||
|
||||
@@ -145,6 +145,8 @@ compileLongRunningTestKotlin {
|
||||
kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.ExperimentalStdlibApi"
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
task longRunningTest(type: Test, dependsOn: longRunningTestClasses) {
|
||||
group = "verification"
|
||||
testClassesDirs = sourceSets.longRunningTest.output.classesDirs
|
||||
|
||||
@@ -33,3 +33,4 @@ compileKotlin {
|
||||
]
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
@@ -39,3 +39,5 @@ compileKotlin {
|
||||
"-module-name", project.name
|
||||
]
|
||||
}
|
||||
|
||||
configureJvmIrBackend(project)
|
||||
|
||||
Reference in New Issue
Block a user