From 7c91664f04c5db7b1f53e310bafc100aa67dc9ef Mon Sep 17 00:00:00 2001 From: Alexander Sysoev Date: Sun, 4 Aug 2024 12:49:26 +0200 Subject: [PATCH] Restructure compiler-plugin module into: backend, k2, common and cli --- compiler-plugin/build.gradle.kts | 14 +------- .../compiler-plugin-backend/build.gradle.kts | 19 ++++++++++ .../core/kotlinx/rpc/codegen/RPCIrPlugin.kt} | 2 +- .../kotlinx/rpc/codegen/VersionSpecificApi.kt | 0 .../kotlinx/rpc/codegen/extension/IrUtils.kt | 0 .../extension/RPCDeclarationScanner.kt | 0 .../rpc/codegen/extension/RPCIrContext.kt | 0 .../rpc/codegen/extension/RPCIrExtension.kt | 0 .../extension/RPCIrServiceProcessor.kt | 0 .../rpc/codegen/extension/RPCStubGenerator.kt | 0 .../codegen/extension/ServiceDeclaration.kt | 0 .../rpc/codegen/VersionSpecificApiImpl.kt | 0 .../rpc/codegen/VersionSpecificApiImpl.kt | 0 .../rpc/codegen/VersionSpecificApiImpl.kt | 0 .../rpc/codegen/VersionSpecificApiImpl.kt | 0 .../rpc/codegen/VersionSpecificApiImpl.kt | 0 .../compiler-plugin-cli/build.gradle.kts | 21 +++++++++++ .../compiler-plugin-cli/src/main/core/Stub.kt | 11 ++++++ .../kotlinx/rpc/codegen/RPCCompilerPlugin.kt | 6 ++-- ...otlin.compiler.plugin.CommandLineProcessor | 0 ...in.compiler.plugin.CompilerPluginRegistrar | 0 ...otlin.compiler.plugin.CommandLineProcessor | 0 ....kotlin.compiler.plugin.ComponentRegistrar | 0 ...otlin.compiler.plugin.CommandLineProcessor | 0 ....kotlin.compiler.plugin.ComponentRegistrar | 0 ...otlin.compiler.plugin.CommandLineProcessor | 0 ...in.compiler.plugin.CompilerPluginRegistrar | 0 .../kotlinx/rpc/codegen/RPCCompilerPlugin.kt | 6 ++-- .../kotlinx/rpc/codegen/RPCCompilerPlugin.kt | 4 +-- .../kotlinx/rpc/codegen/RPCCompilerPlugin.kt | 6 ++-- compiler-plugin/settings.gradle.kts | 2 ++ .../kotlinx/rpc/codegen/RPCCompilerPlugin.kt | 36 ------------------- .../conventions-utils/build.gradle.kts | 8 +++++ .../main/kotlin/conventions-utils.gradle.kts | 5 +++ .../kotlin/kotlinx/rpc/RPCGradlePlugin.kt | 3 +- .../kotlin/kotlinx/rpc/compilerPlugins.kt | 10 ++++-- gradle/libs.versions.toml | 1 + 37 files changed, 90 insertions(+), 64 deletions(-) create mode 100644 compiler-plugin/compiler-plugin-backend/build.gradle.kts rename compiler-plugin/{src/main/core/kotlinx/rpc/codegen/RPCCompilerPluginCore.kt => compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/RPCIrPlugin.kt} (96%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/core/kotlinx/rpc/codegen/VersionSpecificApi.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/core/kotlinx/rpc/codegen/extension/IrUtils.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/core/kotlinx/rpc/codegen/extension/RPCDeclarationScanner.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/core/kotlinx/rpc/codegen/extension/RPCIrContext.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/core/kotlinx/rpc/codegen/extension/RPCIrExtension.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/core/kotlinx/rpc/codegen/extension/RPCIrServiceProcessor.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/core/kotlinx/rpc/codegen/extension/RPCStubGenerator.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/core/kotlinx/rpc/codegen/extension/ServiceDeclaration.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/latest/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/v_1_7/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/v_1_7_2/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/v_1_8/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt (100%) rename compiler-plugin/{ => compiler-plugin-backend}/src/main/v_1_9/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt (100%) create mode 100644 compiler-plugin/compiler-plugin-cli/build.gradle.kts create mode 100644 compiler-plugin/compiler-plugin-cli/src/main/core/Stub.kt rename compiler-plugin/{ => compiler-plugin-cli}/src/main/latest/kotlinx/rpc/codegen/RPCCompilerPlugin.kt (86%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor (100%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar (100%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor (100%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar (100%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor (100%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar (100%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor (100%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar (100%) rename compiler-plugin/{src/main/v_1_8 => compiler-plugin-cli/src/main/v_1}/kotlinx/rpc/codegen/RPCCompilerPlugin.kt (85%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/v_1_7/kotlinx/rpc/codegen/RPCCompilerPlugin.kt (86%) rename compiler-plugin/{ => compiler-plugin-cli}/src/main/v_1_7_2/kotlinx/rpc/codegen/RPCCompilerPlugin.kt (83%) delete mode 100644 compiler-plugin/src/main/v_1_9/kotlinx/rpc/codegen/RPCCompilerPlugin.kt create mode 100644 gradle-conventions/conventions-utils/src/main/kotlin/conventions-utils.gradle.kts diff --git a/compiler-plugin/build.gradle.kts b/compiler-plugin/build.gradle.kts index f64434c4..b5d9f2e8 100644 --- a/compiler-plugin/build.gradle.kts +++ b/compiler-plugin/build.gradle.kts @@ -2,12 +2,10 @@ * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. */ -import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode import util.configureMetaTasks plugins { - alias(libs.plugins.conventions.jvm) - alias(libs.plugins.compiler.specific.module) + alias(libs.plugins.conventions.utils) } val kotlinVersion: String by extra @@ -18,15 +16,5 @@ allprojects { version = "$kotlinVersion-$rpcVersion" } -kotlin { - explicitApi = ExplicitApiMode.Disabled -} - -dependencies { - compileOnly(libs.kotlin.compiler.embeddable) - implementation(projects.compilerPluginK2) - implementation(projects.compilerPluginCommon) -} - configureMetaTasks("cleanTest", "test") configureMetaTasks(tasks.matching { it.name.startsWith("publish") }.map { it.name }) diff --git a/compiler-plugin/compiler-plugin-backend/build.gradle.kts b/compiler-plugin/compiler-plugin-backend/build.gradle.kts new file mode 100644 index 00000000..c687e1a1 --- /dev/null +++ b/compiler-plugin/compiler-plugin-backend/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode + +plugins { + alias(libs.plugins.conventions.jvm) + alias(libs.plugins.compiler.specific.module) +} + +kotlin { + explicitApi = ExplicitApiMode.Disabled +} + +dependencies { + compileOnly(libs.kotlin.compiler.embeddable) + implementation(projects.compilerPluginCommon) +} diff --git a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/RPCCompilerPluginCore.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/RPCIrPlugin.kt similarity index 96% rename from compiler-plugin/src/main/core/kotlinx/rpc/codegen/RPCCompilerPluginCore.kt rename to compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/RPCIrPlugin.kt index 32066972..3ad1c0d8 100644 --- a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/RPCCompilerPluginCore.kt +++ b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/RPCIrPlugin.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.config.CompilerConfiguration -object RPCCompilerPluginCore { +object RPCIrPlugin { fun provideExtension(configuration: CompilerConfiguration): IrGenerationExtension { val logger = configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE) val versionSpecificApi = VersionSpecificApi.INSTANCE diff --git a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/VersionSpecificApi.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/VersionSpecificApi.kt similarity index 100% rename from compiler-plugin/src/main/core/kotlinx/rpc/codegen/VersionSpecificApi.kt rename to compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/VersionSpecificApi.kt diff --git a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/IrUtils.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/IrUtils.kt similarity index 100% rename from compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/IrUtils.kt rename to compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/IrUtils.kt diff --git a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCDeclarationScanner.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCDeclarationScanner.kt similarity index 100% rename from compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCDeclarationScanner.kt rename to compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCDeclarationScanner.kt diff --git a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCIrContext.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCIrContext.kt similarity index 100% rename from compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCIrContext.kt rename to compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCIrContext.kt diff --git a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCIrExtension.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCIrExtension.kt similarity index 100% rename from compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCIrExtension.kt rename to compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCIrExtension.kt diff --git a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCIrServiceProcessor.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCIrServiceProcessor.kt similarity index 100% rename from compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCIrServiceProcessor.kt rename to compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCIrServiceProcessor.kt diff --git a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCStubGenerator.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCStubGenerator.kt similarity index 100% rename from compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/RPCStubGenerator.kt rename to compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RPCStubGenerator.kt diff --git a/compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/ServiceDeclaration.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/ServiceDeclaration.kt similarity index 100% rename from compiler-plugin/src/main/core/kotlinx/rpc/codegen/extension/ServiceDeclaration.kt rename to compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/ServiceDeclaration.kt diff --git a/compiler-plugin/src/main/latest/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt b/compiler-plugin/compiler-plugin-backend/src/main/latest/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt similarity index 100% rename from compiler-plugin/src/main/latest/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt rename to compiler-plugin/compiler-plugin-backend/src/main/latest/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt diff --git a/compiler-plugin/src/main/v_1_7/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt b/compiler-plugin/compiler-plugin-backend/src/main/v_1_7/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt similarity index 100% rename from compiler-plugin/src/main/v_1_7/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt rename to compiler-plugin/compiler-plugin-backend/src/main/v_1_7/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt diff --git a/compiler-plugin/src/main/v_1_7_2/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt b/compiler-plugin/compiler-plugin-backend/src/main/v_1_7_2/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt similarity index 100% rename from compiler-plugin/src/main/v_1_7_2/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt rename to compiler-plugin/compiler-plugin-backend/src/main/v_1_7_2/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt diff --git a/compiler-plugin/src/main/v_1_8/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt b/compiler-plugin/compiler-plugin-backend/src/main/v_1_8/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt similarity index 100% rename from compiler-plugin/src/main/v_1_8/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt rename to compiler-plugin/compiler-plugin-backend/src/main/v_1_8/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt diff --git a/compiler-plugin/src/main/v_1_9/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt b/compiler-plugin/compiler-plugin-backend/src/main/v_1_9/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt similarity index 100% rename from compiler-plugin/src/main/v_1_9/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt rename to compiler-plugin/compiler-plugin-backend/src/main/v_1_9/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt diff --git a/compiler-plugin/compiler-plugin-cli/build.gradle.kts b/compiler-plugin/compiler-plugin-cli/build.gradle.kts new file mode 100644 index 00000000..7daebade --- /dev/null +++ b/compiler-plugin/compiler-plugin-cli/build.gradle.kts @@ -0,0 +1,21 @@ +/* + * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode + +plugins { + alias(libs.plugins.conventions.jvm) + alias(libs.plugins.compiler.specific.module) +} + +kotlin { + explicitApi = ExplicitApiMode.Disabled +} + +dependencies { + compileOnly(libs.kotlin.compiler.embeddable) + implementation(projects.compilerPluginK2) + implementation(projects.compilerPluginCommon) + implementation(projects.compilerPluginBackend) +} diff --git a/compiler-plugin/compiler-plugin-cli/src/main/core/Stub.kt b/compiler-plugin/compiler-plugin-cli/src/main/core/Stub.kt new file mode 100644 index 00000000..0c7b5233 --- /dev/null +++ b/compiler-plugin/compiler-plugin-cli/src/main/core/Stub.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +@file:Suppress("detekt.MissingPackageDeclaration") + +/* + * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +// do not delete diff --git a/compiler-plugin/src/main/latest/kotlinx/rpc/codegen/RPCCompilerPlugin.kt b/compiler-plugin/compiler-plugin-cli/src/main/latest/kotlinx/rpc/codegen/RPCCompilerPlugin.kt similarity index 86% rename from compiler-plugin/src/main/latest/kotlinx/rpc/codegen/RPCCompilerPlugin.kt rename to compiler-plugin/compiler-plugin-cli/src/main/latest/kotlinx/rpc/codegen/RPCCompilerPlugin.kt index e7c1d9a7..63ac652b 100644 --- a/compiler-plugin/src/main/latest/kotlinx/rpc/codegen/RPCCompilerPlugin.kt +++ b/compiler-plugin/compiler-plugin-cli/src/main/latest/kotlinx/rpc/codegen/RPCCompilerPlugin.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter @OptIn(ExperimentalCompilerApi::class) class RPCCommandLineProcessor : CommandLineProcessor { - override val pluginId = "kotlinx.rpc.codegen" + override val pluginId = "kotlinx.rpc.compiler-plugin" override val pluginOptions = emptyList() } @@ -28,9 +28,9 @@ class RPCCompilerPlugin : CompilerPluginRegistrar() { override val supportsK2: Boolean = true override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) { - val extension = RPCCompilerPluginCore.provideExtension(configuration) + val irExtension = RPCIrPlugin.provideExtension(configuration) - IrGenerationExtension.registerExtension(extension) + IrGenerationExtension.registerExtension(irExtension) FirExtensionRegistrarAdapter.registerExtension(FirRPCExtensionRegistrar(configuration)) } } diff --git a/compiler-plugin/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor b/compiler-plugin/compiler-plugin-cli/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor similarity index 100% rename from compiler-plugin/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor rename to compiler-plugin/compiler-plugin-cli/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor diff --git a/compiler-plugin/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar b/compiler-plugin/compiler-plugin-cli/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar similarity index 100% rename from compiler-plugin/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar rename to compiler-plugin/compiler-plugin-cli/src/main/resources/latest/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar diff --git a/compiler-plugin/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor b/compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor similarity index 100% rename from compiler-plugin/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor rename to compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor diff --git a/compiler-plugin/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar b/compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar similarity index 100% rename from compiler-plugin/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar rename to compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_7/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar diff --git a/compiler-plugin/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor b/compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor similarity index 100% rename from compiler-plugin/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor rename to compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor diff --git a/compiler-plugin/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar b/compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar similarity index 100% rename from compiler-plugin/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar rename to compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_7_2/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar diff --git a/compiler-plugin/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor b/compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor similarity index 100% rename from compiler-plugin/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor rename to compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor diff --git a/compiler-plugin/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar b/compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar similarity index 100% rename from compiler-plugin/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar rename to compiler-plugin/compiler-plugin-cli/src/main/resources/v_1_8/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar diff --git a/compiler-plugin/src/main/v_1_8/kotlinx/rpc/codegen/RPCCompilerPlugin.kt b/compiler-plugin/compiler-plugin-cli/src/main/v_1/kotlinx/rpc/codegen/RPCCompilerPlugin.kt similarity index 85% rename from compiler-plugin/src/main/v_1_8/kotlinx/rpc/codegen/RPCCompilerPlugin.kt rename to compiler-plugin/compiler-plugin-cli/src/main/v_1/kotlinx/rpc/codegen/RPCCompilerPlugin.kt index 5910422c..9fc69ae1 100644 --- a/compiler-plugin/src/main/v_1_8/kotlinx/rpc/codegen/RPCCompilerPlugin.kt +++ b/compiler-plugin/compiler-plugin-cli/src/main/v_1/kotlinx/rpc/codegen/RPCCompilerPlugin.kt @@ -24,11 +24,11 @@ class RPCCompilerPlugin : CompilerPluginRegistrar() { VersionSpecificApi.INSTANCE = VersionSpecificApiImpl } - override val supportsK2: Boolean = true + override val supportsK2: Boolean = false override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) { - val extension = RPCCompilerPluginCore.provideExtension(configuration) + val irExtension = RPCIrPlugin.provideExtension(configuration) - IrGenerationExtension.registerExtension(extension) + IrGenerationExtension.registerExtension(irExtension) } } \ No newline at end of file diff --git a/compiler-plugin/src/main/v_1_7/kotlinx/rpc/codegen/RPCCompilerPlugin.kt b/compiler-plugin/compiler-plugin-cli/src/main/v_1_7/kotlinx/rpc/codegen/RPCCompilerPlugin.kt similarity index 86% rename from compiler-plugin/src/main/v_1_7/kotlinx/rpc/codegen/RPCCompilerPlugin.kt rename to compiler-plugin/compiler-plugin-cli/src/main/v_1_7/kotlinx/rpc/codegen/RPCCompilerPlugin.kt index dc953930..82519345 100644 --- a/compiler-plugin/src/main/v_1_7/kotlinx/rpc/codegen/RPCCompilerPlugin.kt +++ b/compiler-plugin/compiler-plugin-cli/src/main/v_1_7/kotlinx/rpc/codegen/RPCCompilerPlugin.kt @@ -23,8 +23,8 @@ class RPCCompilerPlugin : ComponentRegistrar { } override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) { - val extension = RPCCompilerPluginCore.provideExtension(configuration) + val irExtension = RPCIrPlugin.provideExtension(configuration) - IrGenerationExtension.registerExtension(project, extension) + IrGenerationExtension.registerExtension(project, irExtension) } } diff --git a/compiler-plugin/src/main/v_1_7_2/kotlinx/rpc/codegen/RPCCompilerPlugin.kt b/compiler-plugin/compiler-plugin-cli/src/main/v_1_7_2/kotlinx/rpc/codegen/RPCCompilerPlugin.kt similarity index 83% rename from compiler-plugin/src/main/v_1_7_2/kotlinx/rpc/codegen/RPCCompilerPlugin.kt rename to compiler-plugin/compiler-plugin-cli/src/main/v_1_7_2/kotlinx/rpc/codegen/RPCCompilerPlugin.kt index 55e1830b..4a941f97 100644 --- a/compiler-plugin/src/main/v_1_7_2/kotlinx/rpc/codegen/RPCCompilerPlugin.kt +++ b/compiler-plugin/compiler-plugin-cli/src/main/v_1_7_2/kotlinx/rpc/codegen/RPCCompilerPlugin.kt @@ -22,11 +22,11 @@ class RPCCompilerPlugin : ComponentRegistrar { VersionSpecificApi.INSTANCE = VersionSpecificApiImpl } - override val supportsK2: Boolean = true + override val supportsK2: Boolean = false override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) { - val extension = RPCCompilerPluginCore.provideExtension(configuration) + val irExtension = RPCIrPlugin.provideExtension(configuration) - IrGenerationExtension.registerExtension(project, extension) + IrGenerationExtension.registerExtension(project, irExtension) } } diff --git a/compiler-plugin/settings.gradle.kts b/compiler-plugin/settings.gradle.kts index 2d2a6ddb..e349830d 100644 --- a/compiler-plugin/settings.gradle.kts +++ b/compiler-plugin/settings.gradle.kts @@ -19,3 +19,5 @@ includeRootAsPublic() includePublic(":compiler-plugin-k2") includePublic(":compiler-plugin-common") +includePublic(":compiler-plugin-backend") +includePublic(":compiler-plugin-cli") diff --git a/compiler-plugin/src/main/v_1_9/kotlinx/rpc/codegen/RPCCompilerPlugin.kt b/compiler-plugin/src/main/v_1_9/kotlinx/rpc/codegen/RPCCompilerPlugin.kt deleted file mode 100644 index e7c1d9a7..00000000 --- a/compiler-plugin/src/main/v_1_9/kotlinx/rpc/codegen/RPCCompilerPlugin.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. - */ - -package kotlinx.rpc.codegen - -import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension -import org.jetbrains.kotlin.compiler.plugin.CliOption -import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor -import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar -import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi -import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter - -@OptIn(ExperimentalCompilerApi::class) -class RPCCommandLineProcessor : CommandLineProcessor { - override val pluginId = "kotlinx.rpc.codegen" - - override val pluginOptions = emptyList() -} - -@OptIn(ExperimentalCompilerApi::class) -class RPCCompilerPlugin : CompilerPluginRegistrar() { - init { - VersionSpecificApi.INSTANCE = VersionSpecificApiImpl - } - - override val supportsK2: Boolean = true - - override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) { - val extension = RPCCompilerPluginCore.provideExtension(configuration) - - IrGenerationExtension.registerExtension(extension) - FirExtensionRegistrarAdapter.registerExtension(FirRPCExtensionRegistrar(configuration)) - } -} diff --git a/gradle-conventions/conventions-utils/build.gradle.kts b/gradle-conventions/conventions-utils/build.gradle.kts index 189cd242..8ff36d0f 100644 --- a/gradle-conventions/conventions-utils/build.gradle.kts +++ b/gradle-conventions/conventions-utils/build.gradle.kts @@ -28,3 +28,11 @@ dependencies { // https://stackoverflow.com/questions/76713758/use-version-catalog-inside-precompiled-gradle-plugin api(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) } + +gradlePlugin { + plugins { + named("conventions-utils") { + version = libs.versions.kotlinx.rpc.get() + } + } +} diff --git a/gradle-conventions/conventions-utils/src/main/kotlin/conventions-utils.gradle.kts b/gradle-conventions/conventions-utils/src/main/kotlin/conventions-utils.gradle.kts new file mode 100644 index 00000000..b648ed7e --- /dev/null +++ b/gradle-conventions/conventions-utils/src/main/kotlin/conventions-utils.gradle.kts @@ -0,0 +1,5 @@ +/* + * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +// do not delete. This plugin includes util functions in the buildscript classpath diff --git a/gradle-plugin/src/main/kotlin/kotlinx/rpc/RPCGradlePlugin.kt b/gradle-plugin/src/main/kotlin/kotlinx/rpc/RPCGradlePlugin.kt index 10724177..27a3dc07 100644 --- a/gradle-plugin/src/main/kotlin/kotlinx/rpc/RPCGradlePlugin.kt +++ b/gradle-plugin/src/main/kotlin/kotlinx/rpc/RPCGradlePlugin.kt @@ -36,9 +36,10 @@ class RPCGradlePlugin : Plugin { } private fun applyCompilerPlugin(target: Project) { - target.plugins.apply(CompilerPlugin::class.java) target.plugins.apply(CompilerPluginK2::class.java) target.plugins.apply(CompilerPluginCommon::class.java) + target.plugins.apply(CompilerPluginBackend::class.java) + target.plugins.apply(CompilerPluginCli::class.java) } private fun applyKspPlugin(target: Project, config: RPCConfig) { diff --git a/gradle-plugin/src/main/kotlin/kotlinx/rpc/compilerPlugins.kt b/gradle-plugin/src/main/kotlin/kotlinx/rpc/compilerPlugins.kt index b19ad08e..17c88d66 100644 --- a/gradle-plugin/src/main/kotlin/kotlinx/rpc/compilerPlugins.kt +++ b/gradle-plugin/src/main/kotlin/kotlinx/rpc/compilerPlugins.kt @@ -8,8 +8,6 @@ package kotlinx.rpc import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerPluginSupportPlugin -class CompilerPlugin : KotlinCompilerPluginSupportPlugin by compilerPlugin() - class CompilerPluginK2 : KotlinCompilerPluginSupportPlugin by compilerPlugin({ pluginSuffix = "-k2" }) @@ -17,3 +15,11 @@ class CompilerPluginK2 : KotlinCompilerPluginSupportPlugin by compilerPlugin({ class CompilerPluginCommon : KotlinCompilerPluginSupportPlugin by compilerPlugin({ pluginSuffix = "-common" }) + +class CompilerPluginBackend : KotlinCompilerPluginSupportPlugin by compilerPlugin({ + pluginSuffix = "-backend" +}) + +class CompilerPluginCli : KotlinCompilerPluginSupportPlugin by compilerPlugin({ + pluginSuffix = "-cli" +}) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 14e2853a..de4ee37a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -84,6 +84,7 @@ kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } gradle-plugin-publish = { id = "com.gradle.plugin-publish", version.ref = "gradle-plugin-publish" } # gradle-conventions project +conventions-utils = { id = "conventions-utils", version.ref = "kotlinx-rpc" } conventions-common = { id = "conventions-common", version.ref = "kotlinx-rpc" } conventions-jvm = { id = "conventions-jvm", version.ref = "kotlinx-rpc" } conventions-kmp = { id = "conventions-kmp", version.ref = "kotlinx-rpc" }