diff --git a/gradle.properties b/gradle.properties index 3fe854daa54..c00726767c0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -46,6 +46,9 @@ org.gradle.vfs.watch=true # Enable compilation of project using FIR compiler #kotlin.build.useFir=true +# Enable FIR compiler for kotlin-stdlib, kotlin-reflect, kotlin-test. +#kotlin.build.useFirForLibraries=true + # Enable overriding JDK 6 and JDK 7 with JDK 8 in java toolchains # This flag is required if you don't have JDK 6 or JDK 7 manually installed #kotlin.build.isObsoleteJdkOverrideEnabled=true diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle index 3a9121a18bd..f1b7f51e39b 100644 --- a/libraries/commonConfiguration.gradle +++ b/libraries/commonConfiguration.gradle @@ -64,6 +64,16 @@ ext.configurePluginMarkers = { Project project, withEmptyJars = true -> PluginMarkersKt.publishPluginMarkers(project, withEmptyJars) } +ext.configureFrontendIr = { Project project -> + project.tasks.withType(KotlinCompile.class) { task -> + task.kotlinOptions { + if (project.kotlinBuildProperties.useFirForLibraries) { + freeCompilerArgs += "-Xuse-fir" + } + } + } +} + allprojects { project -> project.ext.configureSourcesJar = { lambda = {} -> ArtifactsKt.sourcesJar(project) { task -> diff --git a/libraries/kotlin.test/junit/build.gradle b/libraries/kotlin.test/junit/build.gradle index d1f8ce9495a..0848158c8f3 100644 --- a/libraries/kotlin.test/junit/build.gradle +++ b/libraries/kotlin.test/junit/build.gradle @@ -44,6 +44,8 @@ compileTestKotlin { ] } +configureFrontendIr(project) + if (includeJava9) { LibrariesCommon.configureJava9Compilation(project, 'kotlin.test.junit') } diff --git a/libraries/kotlin.test/junit5/build.gradle b/libraries/kotlin.test/junit5/build.gradle index 1598be8a296..cca890788af 100644 --- a/libraries/kotlin.test/junit5/build.gradle +++ b/libraries/kotlin.test/junit5/build.gradle @@ -43,6 +43,8 @@ compileTestKotlin { ] } +configureFrontendIr(project) + if (includeJava9) { LibrariesCommon.configureJava9Compilation(project, 'kotlin.test.junit5') } diff --git a/libraries/kotlin.test/jvm/build.gradle b/libraries/kotlin.test/jvm/build.gradle index e6ae945f85e..97cab72bd5c 100644 --- a/libraries/kotlin.test/jvm/build.gradle +++ b/libraries/kotlin.test/jvm/build.gradle @@ -57,6 +57,8 @@ compileTestKotlin { ] } +configureFrontendIr(project) + if (includeJava9) { LibrariesCommon.configureJava9Compilation(project, 'kotlin.test') } diff --git a/libraries/kotlin.test/testng/build.gradle b/libraries/kotlin.test/testng/build.gradle index 7e2ff6bb38e..1b77e295028 100644 --- a/libraries/kotlin.test/testng/build.gradle +++ b/libraries/kotlin.test/testng/build.gradle @@ -47,6 +47,8 @@ compileTestKotlin { ] } +configureFrontendIr(project) + if (includeJava9) { LibrariesCommon.configureJava9Compilation(project, 'kotlin.test.testng') } diff --git a/libraries/reflect/api/build.gradle b/libraries/reflect/api/build.gradle index c3107da00cf..4484e5e455e 100644 --- a/libraries/reflect/api/build.gradle +++ b/libraries/reflect/api/build.gradle @@ -54,6 +54,8 @@ compileKotlin { } } +configureFrontendIr(project) + jar { manifestAttributes(manifest, project, "internal") } diff --git a/libraries/stdlib/jdk7/build.gradle b/libraries/stdlib/jdk7/build.gradle index ea29f3d04c7..1ca7281c8b6 100644 --- a/libraries/stdlib/jdk7/build.gradle +++ b/libraries/stdlib/jdk7/build.gradle @@ -90,6 +90,8 @@ compileTestKotlin { ] } +configureFrontendIr(project) + LibrariesCommon.configureJava9Compilation(project, 'kotlin.stdlib.jdk7') task testJdk6Tests(type: Test) { diff --git a/libraries/stdlib/jdk8/build.gradle b/libraries/stdlib/jdk8/build.gradle index f94adbcf542..82873946bf4 100644 --- a/libraries/stdlib/jdk8/build.gradle +++ b/libraries/stdlib/jdk8/build.gradle @@ -75,6 +75,8 @@ compileTestKotlin { ] } +configureFrontendIr(project) + LibrariesCommon.configureJava9Compilation(project, 'kotlin.stdlib.jdk8') task testJdk6Tests(type: Test) { thisTask -> diff --git a/libraries/stdlib/jvm/build.gradle b/libraries/stdlib/jvm/build.gradle index aab2a3e2bd5..bfb2df0b6c3 100644 --- a/libraries/stdlib/jvm/build.gradle +++ b/libraries/stdlib/jvm/build.gradle @@ -143,6 +143,8 @@ compileLongRunningTestKotlin { kotlinOptions.freeCompilerArgs += "-opt-in=kotlin.ExperimentalStdlibApi" } +configureFrontendIr(project) + task longRunningTest(type: Test, dependsOn: longRunningTestClasses) { group = "verification" testClassesDirs = sourceSets.longRunningTest.output.classesDirs diff --git a/libraries/tools/kotlin-annotations-jvm/build.gradle b/libraries/tools/kotlin-annotations-jvm/build.gradle index ff7b0eff199..7b09125614b 100644 --- a/libraries/tools/kotlin-annotations-jvm/build.gradle +++ b/libraries/tools/kotlin-annotations-jvm/build.gradle @@ -27,3 +27,5 @@ compileKotlin { ] kotlinOptions.moduleName = project.name } + +configureFrontendIr(project) diff --git a/libraries/tools/script-runtime/build.gradle b/libraries/tools/script-runtime/build.gradle index 46a031983c8..ba7e9bf374a 100644 --- a/libraries/tools/script-runtime/build.gradle +++ b/libraries/tools/script-runtime/build.gradle @@ -40,3 +40,5 @@ compileKotlin { ] kotlinOptions.moduleName = project.name } + +configureFrontendIr(project)