-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathbuild.gradle.kts
64 lines (54 loc) · 1.98 KB
/
build.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import com.strumenta.antlrkotlin.gradle.AntlrKotlinTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
plugins {
org.openrndr.extra.convention.`kotlin-multiplatform`
alias(libs.plugins.antlr.kotlin)
}
val generateKotlinGrammarSource = tasks.register<AntlrKotlinTask>("generateKotlinGrammarSource") {
dependsOn("cleanGenerateKotlinGrammarSource")
source = fileTree(layout.projectDirectory.dir("src/commonMain/antlr")) {
include("**/*.g4")
}
// We want the generated source files to have this package name
val pkgName = "org.openrndr.extra.expressions.parser"
packageName = pkgName
// We want visitors alongside listeners.
// The Kotlin target language is implicit, as is the file encoding (UTF-8)
arguments = listOf("-visitor")
// Generated files are outputted inside build/generatedAntlr/{package-name}
val outDir = "generatedAntlr/${pkgName.replace(".", "/")}"
outputDirectory = layout.buildDirectory.dir(outDir).get().asFile
}
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation(libs.antlr.kotlin.runtime)
implementation(libs.openrndr.application)
implementation(libs.openrndr.math)
implementation(libs.kotlin.coroutines)
implementation(project(":orx-property-watchers"))
implementation(project(":orx-noise"))
}
kotlin {
srcDir(layout.buildDirectory.dir("generatedAntlr"))
}
}
val jvmDemo by getting {
dependencies {
implementation(project(":orx-jvm:orx-gui"))
}
}
val jvmTest by getting {
dependencies {
implementation(libs.kluent)
}
}
}
}
tasks.withType<KotlinCompilationTask<*>> {
dependsOn(generateKotlinGrammarSource)
}
tasks.withType<org.gradle.jvm.tasks.Jar> {
dependsOn(generateKotlinGrammarSource)
}