ZigBrains/modules/zig/build.gradle.kts

73 lines
No EOL
2 KiB
Kotlin

import org.jetbrains.grammarkit.tasks.GenerateLexerTask
import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
plugins {
kotlin("jvm")
id("org.jetbrains.grammarkit")
}
dependencies {
intellijPlatform {
create(IntelliJPlatformType.IntellijIdeaCommunity, providers.gradleProperty("ideaCommunityVersion"))
}
}
val grammarGenRoot = "generated/sources/grammarkit/zig"
val rootPackagePath = "com/falsepattern/zigbrains/zig"
val parserDir = layout.buildDirectory.dir("$grammarGenRoot/parser")
val lexerDir = layout.buildDirectory.dir("$grammarGenRoot/lexer")
sourceSets {
main {
java {
srcDir(parserDir)
srcDir(lexerDir)
}
}
}
idea {
module {
sourceDirs.addAll(listOf(parserDir.get().asFile, lexerDir.get().asFile))
generatedSourceDirs.addAll(listOf(parserDir.get().asFile, lexerDir.get().asFile))
}
}
tasks {
generateLexer {
purgeOldFiles = true
sourceFile = file("src/main/grammar/Zig.flex")
targetOutputDir = layout.buildDirectory.dir("$grammarGenRoot/lexer/$rootPackagePath/lexer")
}
register<GenerateLexerTask>("generateStringLexer") {
purgeOldFiles = true
sourceFile = file("src/main/grammar/ZigString.flex")
targetOutputDir = layout.buildDirectory.dir("$grammarGenRoot/stringlexer/$rootPackagePath/stringlexer")
}
generateParser {
purgeOldFiles = true
sourceFile = file("src/main/grammar/Zig.bnf")
targetRootOutputDir = layout.buildDirectory.dir("$grammarGenRoot/parser")
pathToParser = "$rootPackagePath/psi/ZigParser.java"
pathToPsiRoot = "$rootPackagePath/psi"
}
register<DefaultTask>("generateGrammars") {
group = "grammarkit"
dependsOn("generateLexer")
dependsOn("generateStringLexer")
dependsOn("generateParser")
}
compileJava {
dependsOn("generateGrammars")
}
compileKotlin {
dependsOn("generateGrammars")
}
}