Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restructure compiler-plugin module #149

Merged
merged 1 commit into from
Aug 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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)
}
7 changes: 7 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,7 @@
/*
* 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")

// 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