diff --git a/compiler/fir/checkers/build.gradle.kts b/compiler/fir/checkers/build.gradle.kts index ea17634f54c..ff40e2064a1 100644 --- a/compiler/fir/checkers/build.gradle.kts +++ b/compiler/fir/checkers/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.ideaExt.idea + plugins { kotlin("jvm") id("jps-compatible") @@ -18,6 +20,45 @@ dependencies { } sourceSets { - "main" { projectDefault() } + "main" { + projectDefault() + this.java.srcDir("gen") + } "test" { none() } } + +val generatorClasspath by configurations.creating + +dependencies { + generatorClasspath(project("checkers-component-generator")) +} + +val generationRoot = projectDir.resolve("gen") + +val generateCheckersComponents by tasks.registering(NoDebugJavaExec::class) { + + val generatorRoot = "$projectDir/checkers-component-generator/src/" + + val generatorConfigurationFiles = fileTree(generatorRoot) { + include("**/*.kt") + } + + inputs.files(generatorConfigurationFiles) + outputs.dirs(generationRoot) + + args(generationRoot) + classpath = generatorClasspath + main = "org.jetbrains.kotlin.fir.checkers.generator.MainKt" + systemProperties["line.separator"] = "\n" +} + +val compileKotlin by tasks + +compileKotlin.dependsOn(generateCheckersComponents) + +if (kotlinBuildProperties.isInJpsBuildIdeaSync) { + apply(plugin = "idea") + idea { + this.module.generatedSourceDirs.add(generationRoot) + } +} diff --git a/compiler/fir/checkers/checkers-component-generator/build.gradle.kts b/compiler/fir/checkers/checkers-component-generator/build.gradle.kts new file mode 100644 index 00000000000..c6df8b80051 --- /dev/null +++ b/compiler/fir/checkers/checkers-component-generator/build.gradle.kts @@ -0,0 +1,32 @@ +plugins { + kotlin("jvm") + id("jps-compatible") + application +} + +dependencies { + implementation(project(":compiler:fir:tree")) + implementation(project(":compiler:fir:tree:tree-generator")) + implementation(project(":kotlin-reflect")) + implementation(project(":kotlin-reflect-api")) +} + +val writeCopyright by task { + outputFile = file("$buildDir/copyright/notice.txt") + commented = true +} + +application { + mainClassName = "org.jetbrains.kotlin.fir.checkers.generator.MainKt" +} + +val processResources by tasks +processResources.dependsOn(writeCopyright) + +sourceSets { + "main" { + projectDefault() + resources.srcDir("$buildDir/copyright") + } + "test" {} +} diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt new file mode 100644 index 00000000000..b06f653b124 --- /dev/null +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt @@ -0,0 +1,8 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.checkers.generator + +fun main() {} diff --git a/compiler/fir/checkers/gen/.gitattributes b/compiler/fir/checkers/gen/.gitattributes new file mode 100644 index 00000000000..d0496f1a266 --- /dev/null +++ b/compiler/fir/checkers/gen/.gitattributes @@ -0,0 +1 @@ +*.kt eol=lf diff --git a/settings.gradle b/settings.gradle index f94b2f67f85..a235aa19d9e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -314,6 +314,7 @@ include ":compiler:fir:cones", ":compiler:fir:dump", ":compiler:fir:jvm", ":compiler:fir:checkers", + ":compiler:fir:checkers:checkers-component-generator", ":compiler:fir:entrypoint", ":compiler:fir:analysis-tests"