From da962895a80f1b3529cf6e9e202c6d183c9a990f Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 6 Sep 2021 14:47:30 +0300 Subject: [PATCH] Split compiler-for-ide jar into multiple jars Needed for IDE to gradually control which plugin (FE1.0, FIR) on which jar may depend Jars: Common, IR, FIR FE1.0 and PSI --- build.gradle.kts | 131 ++++++++++-------- .../build.gradle.kts | 23 +++ .../build.gradle.kts | 15 ++ .../build.gradle.kts | 7 + .../kotlin-compiler-for-ide/build.gradle.kts | 6 + .../build.gradle.kts | 7 + settings.gradle | 6 +- 7 files changed, 140 insertions(+), 55 deletions(-) create mode 100644 prepare/ide-plugin-dependencies/kotlin-compiler-common-for-ide/build.gradle.kts create mode 100644 prepare/ide-plugin-dependencies/kotlin-compiler-fe10-for-ide/build.gradle.kts create mode 100644 prepare/ide-plugin-dependencies/kotlin-compiler-fir-for-ide/build.gradle.kts create mode 100644 prepare/ide-plugin-dependencies/kotlin-compiler-ir-for-ide/build.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts index 2ea22748af5..76231af9530 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -169,43 +169,84 @@ extra["IntellijCoreDependencies"] = "trove4j" ).filterNotNull() - -extra["compilerModules"] = arrayOf( - ":compiler:util", - ":compiler:config", - ":compiler:config.jvm", - ":compiler:container", - ":compiler:resolution.common", - ":compiler:resolution.common.jvm", - ":compiler:resolution", - ":compiler:serialization", - ":compiler:psi", - ":compiler:frontend", - ":compiler:frontend.common", - ":compiler:frontend.common-psi", - ":compiler:frontend.java", - ":compiler:frontend:cfg", - ":compiler:cli-common", +val irCompilerModules = arrayOf( ":compiler:ir.tree", ":compiler:ir.tree.impl", ":compiler:ir.tree.persistent", - ":compiler:ir.psi2ir", + ":compiler:ir.serialization.common", + ":compiler:ir.serialization.js", + ":compiler:ir.serialization.jvm", ":compiler:ir.backend.common", + ":compiler:ir.interpreter", + ":wasm:wasm.ir" +).also { extra["irCompilerModules"] = it } + +val commonCompilerModules = arrayOf( + ":compiler:psi", + ":compiler:frontend.common-psi", + ":compiler:light-classes", // TODO split this module to base and FE1.0 implementation modules + ":compiler:frontend.common", + ":compiler:util", + ":compiler:config.jvm", + ":compiler:resolution.common", + ":compiler:resolution.common.jvm", + ":core:metadata", + ":core:metadata.jvm", + ":core:deserialization.common", + ":core:deserialization.common.jvm", + ":core:compiler.common", + ":core:compiler.common.jvm", + ":core:util.runtime", + ":compiler:frontend.java" // TODO this is fe10 module but some utils used in fir ide now +).also { extra["commonCompilerModules"] = it } + +val firCompilerCoreModules = arrayOf( + ":compiler:fir:cones", + ":compiler:fir:resolve", + ":compiler:fir:fir-serialization", + ":compiler:fir:fir-deserialization", + ":compiler:fir:tree", + ":compiler:fir:java", + ":compiler:fir:raw-fir:raw-fir.common", + ":compiler:fir:raw-fir:psi2fir", + ":compiler:fir:checkers", + ":compiler:fir:checkers:checkers.jvm", + ":compiler:fir:entrypoint", // TODO should not be in core modules but FIR IDE uses DependencyListForCliModule from this module + ":compiler:fir:fir2ir:jvm-backend", // TODO should not be in core modules but FIR IDE uses Fir2IrSignatureComposer from this module + ":compiler:fir:fir2ir" // TODO should not be in core modules but FIR IDE uses Fir2IrSignatureComposer from this module +).also { extra["firCompilerCoreModules"] = it } + +val firAllCompilerModules = firCompilerCoreModules + + arrayOf( + ":compiler:fir:raw-fir:light-tree2fir", + ":compiler:fir:analysis-tests", + ":compiler:fir:analysis-tests:legacy-fir-tests" + ) + +val fe10CompilerModules = arrayOf( + ":compiler", + ":core:descriptors.runtime", + ":core:descriptors", + ":core:descriptors.jvm", + ":compiler:resolution", + ":compiler:serialization", + ":compiler:frontend", + ":compiler:config", + ":compiler:container", + ":compiler:cli-common", + ":core:deserialization", + ":compiler:frontend:cfg", + ":compiler:ir.psi2ir", ":compiler:backend.jvm", ":compiler:backend.jvm:backend.jvm.entrypoint", ":compiler:backend.js", ":compiler:backend.wasm", - ":compiler:ir.serialization.common", - ":compiler:ir.serialization.js", - ":compiler:ir.serialization.jvm", - ":compiler:ir.interpreter", ":kotlin-util-io", ":kotlin-util-klib", ":kotlin-util-klib-metadata", ":compiler:backend-common", ":compiler:backend", ":compiler:plugin-api", - ":compiler:light-classes", ":compiler:javac-wrapper", ":compiler:cli", ":compiler:cli-js", @@ -221,38 +262,16 @@ extra["compilerModules"] = arrayOf( ":js:js.dce", ":native:frontend.native", ":native:kotlin-native-utils", - ":compiler", ":kotlin-build-common", - ":core:metadata", - ":core:metadata.jvm", - ":core:deserialization.common", - ":core:deserialization.common.jvm", - ":core:compiler.common", - ":core:compiler.common.jvm", - ":compiler:backend.common.jvm", - ":core:descriptors", - ":core:descriptors.jvm", - ":core:descriptors.runtime", - ":core:deserialization", - ":core:util.runtime", - ":compiler:fir:cones", - ":compiler:fir:resolve", - ":compiler:fir:fir-serialization", - ":compiler:fir:fir-deserialization", - ":compiler:fir:tree", - ":compiler:fir:raw-fir:raw-fir.common", - ":compiler:fir:raw-fir:psi2fir", - ":compiler:fir:raw-fir:light-tree2fir", - ":compiler:fir:fir2ir", - ":compiler:fir:fir2ir:jvm-backend", - ":compiler:fir:java", - ":compiler:fir:checkers", - ":compiler:fir:checkers:checkers.jvm", - ":compiler:fir:entrypoint", - ":compiler:fir:analysis-tests", - ":compiler:fir:analysis-tests:legacy-fir-tests", - ":wasm:wasm.ir" -) + ":compiler:backend.common.jvm" +).also { extra["fe10CompilerModules"] = it } + +extra["compilerModules"] = + irCompilerModules + + fe10CompilerModules + + commonCompilerModules + + firAllCompilerModules + extra["compilerModulesForJps"] = listOf( ":kotlin-build-common", @@ -300,6 +319,10 @@ extra["compilerArtifactsForIde"] = listOf( ":prepare:ide-plugin-dependencies:high-level-api-fir-tests-for-ide", ":prepare:ide-plugin-dependencies:analysis-api-providers-for-ide", ":prepare:ide-plugin-dependencies:symbol-light-classes-for-ide", + ":prepare:ide-plugin-dependencies:kotlin-compiler-ir-for-ide", + ":prepare:ide-plugin-dependencies:kotlin-compiler-common-for-ide", + ":prepare:ide-plugin-dependencies:kotlin-compiler-fe10-for-ide", + ":prepare:ide-plugin-dependencies:kotlin-compiler-fir-for-ide", ":kotlin-script-runtime", ":kotlin-script-util", ":kotlin-scripting-common", diff --git a/prepare/ide-plugin-dependencies/kotlin-compiler-common-for-ide/build.gradle.kts b/prepare/ide-plugin-dependencies/kotlin-compiler-common-for-ide/build.gradle.kts new file mode 100644 index 00000000000..e8ef7480459 --- /dev/null +++ b/prepare/ide-plugin-dependencies/kotlin-compiler-common-for-ide/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + kotlin("jvm") +} + +val commonCompilerModules: Array by rootProject.extra + +val excludedCompilerModules = listOf( + ":compiler:cli", + ":compiler:javac-wrapper", + ":compiler:incremental-compilation-impl" +) + +val projects = commonCompilerModules.asList() - excludedCompilerModules + listOf( + ":kotlin-compiler-runner", + ":kotlin-preloader", + ":daemon-common", + ":kotlin-daemon-client" +) + +publishJarsForIde( + projects = projects, + libraryDependencies = listOf(protobufFull()) +) diff --git a/prepare/ide-plugin-dependencies/kotlin-compiler-fe10-for-ide/build.gradle.kts b/prepare/ide-plugin-dependencies/kotlin-compiler-fe10-for-ide/build.gradle.kts new file mode 100644 index 00000000000..9dd6a235080 --- /dev/null +++ b/prepare/ide-plugin-dependencies/kotlin-compiler-fe10-for-ide/build.gradle.kts @@ -0,0 +1,15 @@ +plugins { + kotlin("jvm") +} + +val fe10CompilerModules: Array by rootProject.extra + +val excludedCompilerModules = listOf( + ":compiler:cli", + ":compiler:javac-wrapper", + ":compiler:incremental-compilation-impl" +) + +val projects = fe10CompilerModules.asList() - excludedCompilerModules + +publishJarsForIde(projects) diff --git a/prepare/ide-plugin-dependencies/kotlin-compiler-fir-for-ide/build.gradle.kts b/prepare/ide-plugin-dependencies/kotlin-compiler-fir-for-ide/build.gradle.kts new file mode 100644 index 00000000000..c68b2438c14 --- /dev/null +++ b/prepare/ide-plugin-dependencies/kotlin-compiler-fir-for-ide/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + kotlin("jvm") +} + +val firCompilerCoreModules: Array by rootProject.extra + +publishJarsForIde(firCompilerCoreModules.asList()) diff --git a/prepare/ide-plugin-dependencies/kotlin-compiler-for-ide/build.gradle.kts b/prepare/ide-plugin-dependencies/kotlin-compiler-for-ide/build.gradle.kts index c4f63766751..5882153acfa 100644 --- a/prepare/ide-plugin-dependencies/kotlin-compiler-for-ide/build.gradle.kts +++ b/prepare/ide-plugin-dependencies/kotlin-compiler-for-ide/build.gradle.kts @@ -1,3 +1,9 @@ +/* + This artifact is deprecated should be used only for compatibility reasons for existing IDE branches like kt-211-master, kt-203-master + kotlin-compiler-for-ide was split into multiple jars: kotlin-compiler-fe10-for-ide, kotlin-compiler-common-for-ide, kotlin-compiler-fir-for-ide, etc + For kt-212-master IDE branch and newer split compiler jars should be used: + */ + plugins { kotlin("jvm") } diff --git a/prepare/ide-plugin-dependencies/kotlin-compiler-ir-for-ide/build.gradle.kts b/prepare/ide-plugin-dependencies/kotlin-compiler-ir-for-ide/build.gradle.kts new file mode 100644 index 00000000000..0574c7bcf19 --- /dev/null +++ b/prepare/ide-plugin-dependencies/kotlin-compiler-ir-for-ide/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + kotlin("jvm") +} + +val irCompilerModules: Array by rootProject.extra + +publishJarsForIde(irCompilerModules.asList()) diff --git a/settings.gradle b/settings.gradle index fb0bfec2589..feb81abb0e9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -328,7 +328,11 @@ if (!buildProperties.inJpsBuildIdeaSync) { ":prepare:ide-plugin-dependencies:high-level-api-fir-for-ide", ":prepare:ide-plugin-dependencies:high-level-api-fir-tests-for-ide", ":prepare:ide-plugin-dependencies:analysis-api-providers-for-ide", - ":prepare:ide-plugin-dependencies:symbol-light-classes-for-ide" + ":prepare:ide-plugin-dependencies:symbol-light-classes-for-ide", + ":prepare:ide-plugin-dependencies:kotlin-compiler-ir-for-ide", + ":prepare:ide-plugin-dependencies:kotlin-compiler-common-for-ide", + ":prepare:ide-plugin-dependencies:kotlin-compiler-fe10-for-ide", + ":prepare:ide-plugin-dependencies:kotlin-compiler-fir-for-ide" } void intellij(String imlPath) {