Skip to content

Commit

Permalink
Restructure compiler-plugin module into: backend, k2, common and cli
Browse files Browse the repository at this point in the history
  • Loading branch information
Mr3zee committed Aug 4, 2024
1 parent f47a5f7 commit 7c91664
Show file tree
Hide file tree
Showing 37 changed files with 90 additions and 64 deletions.
14 changes: 1 addition & 13 deletions compiler-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 })
19 changes: 19 additions & 0 deletions compiler-plugin/compiler-plugin-backend/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -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)
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
21 changes: 21 additions & 0 deletions compiler-plugin/compiler-plugin-cli/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -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)
}
11 changes: 11 additions & 0 deletions compiler-plugin/compiler-plugin-cli/src/main/core/Stub.kt
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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<CliOption>()
}
Expand All @@ -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))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
2 changes: 2 additions & 0 deletions compiler-plugin/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ includeRootAsPublic()

includePublic(":compiler-plugin-k2")
includePublic(":compiler-plugin-common")
includePublic(":compiler-plugin-backend")
includePublic(":compiler-plugin-cli")

This file was deleted.

8 changes: 8 additions & 0 deletions gradle-conventions/conventions-utils/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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()
}
}
}
Original file line number Diff line number Diff line change
@@ -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
3 changes: 2 additions & 1 deletion gradle-plugin/src/main/kotlin/kotlinx/rpc/RPCGradlePlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@ class RPCGradlePlugin : Plugin<Project> {
}

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) {
Expand Down
10 changes: 8 additions & 2 deletions gradle-plugin/src/main/kotlin/kotlinx/rpc/compilerPlugins.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,18 @@ package kotlinx.rpc

import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerPluginSupportPlugin

class CompilerPlugin : KotlinCompilerPluginSupportPlugin by compilerPlugin()

class CompilerPluginK2 : KotlinCompilerPluginSupportPlugin by compilerPlugin({
pluginSuffix = "-k2"
})

class CompilerPluginCommon : KotlinCompilerPluginSupportPlugin by compilerPlugin({
pluginSuffix = "-common"
})

class CompilerPluginBackend : KotlinCompilerPluginSupportPlugin by compilerPlugin({
pluginSuffix = "-backend"
})

class CompilerPluginCli : KotlinCompilerPluginSupportPlugin by compilerPlugin({
pluginSuffix = "-cli"
})
1 change: 1 addition & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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" }
Expand Down

0 comments on commit 7c91664

Please sign in to comment.