xref: /aosp_15_r20/external/ksp/compiler-plugin/build.gradle.kts (revision af87fb4bb8e3042070d2a054e912924f599b22b7)
1*af87fb4bSXin Li import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2*af87fb4bSXin Li 
3*af87fb4bSXin Li evaluationDependsOn(":common-util")
4*af87fb4bSXin Li 
5*af87fb4bSXin Li description = "Kotlin Symbol Processing"
6*af87fb4bSXin Li 
7*af87fb4bSXin Li val intellijVersion: String by project
8*af87fb4bSXin Li val kotlinBaseVersion: String by project
9*af87fb4bSXin Li 
10*af87fb4bSXin Li val libsForTesting by configurations.creating
11*af87fb4bSXin Li 
<lambda>null12*af87fb4bSXin Li tasks.withType<KotlinCompile> {
13*af87fb4bSXin Li     compilerOptions.freeCompilerArgs.add("-Xjvm-default=all-compatibility")
14*af87fb4bSXin Li }
15*af87fb4bSXin Li 
<lambda>null16*af87fb4bSXin Li plugins {
17*af87fb4bSXin Li     kotlin("jvm")
18*af87fb4bSXin Li     id("org.jetbrains.intellij") version "0.6.4"
19*af87fb4bSXin Li     id("org.jetbrains.dokka") version ("1.7.20")
20*af87fb4bSXin Li }
21*af87fb4bSXin Li 
<lambda>null22*af87fb4bSXin Li intellij {
23*af87fb4bSXin Li     version = intellijVersion
24*af87fb4bSXin Li }
25*af87fb4bSXin Li 
<lambda>null26*af87fb4bSXin Li tasks {
27*af87fb4bSXin Li     val sourcesJar by creating(Jar::class) {
28*af87fb4bSXin Li         archiveClassifier.set("sources")
29*af87fb4bSXin Li         from(sourceSets.main.get().allSource)
30*af87fb4bSXin Li         from(project(":common-util").sourceSets.main.get().allSource)
31*af87fb4bSXin Li     }
32*af87fb4bSXin Li }
33*af87fb4bSXin Li 
includeJarsnull34*af87fb4bSXin Li fun ModuleDependency.includeJars(vararg names: String) {
35*af87fb4bSXin Li     names.forEach {
36*af87fb4bSXin Li         artifact {
37*af87fb4bSXin Li             name = it
38*af87fb4bSXin Li             type = "jar"
39*af87fb4bSXin Li             extension = "jar"
40*af87fb4bSXin Li         }
41*af87fb4bSXin Li     }
42*af87fb4bSXin Li }
43*af87fb4bSXin Li 
44*af87fb4bSXin Li // WARNING: remember to update the dependencies in symbol-processing as well.
<lambda>null45*af87fb4bSXin Li dependencies {
46*af87fb4bSXin Li     implementation(kotlin("stdlib", kotlinBaseVersion))
47*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:kotlin-compiler:$kotlinBaseVersion")
48*af87fb4bSXin Li 
49*af87fb4bSXin Li     implementation(project(":api"))
50*af87fb4bSXin Li     implementation(project(":common-util"))
51*af87fb4bSXin Li 
52*af87fb4bSXin Li     testImplementation(kotlin("stdlib", kotlinBaseVersion))
53*af87fb4bSXin Li     testImplementation("org.jetbrains.kotlin:kotlin-compiler:$kotlinBaseVersion")
54*af87fb4bSXin Li     testImplementation("org.jetbrains.kotlin:kotlin-compiler-internal-test-framework:$kotlinBaseVersion")
55*af87fb4bSXin Li     testImplementation("org.jetbrains.kotlin:kotlin-scripting-compiler:$kotlinBaseVersion")
56*af87fb4bSXin Li 
57*af87fb4bSXin Li     testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2")
58*af87fb4bSXin Li     testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2")
59*af87fb4bSXin Li     testRuntimeOnly("org.junit.jupiter:junit-jupiter-params:5.8.2")
60*af87fb4bSXin Li     testRuntimeOnly("org.junit.platform:junit-platform-suite:1.8.2")
61*af87fb4bSXin Li 
62*af87fb4bSXin Li     testImplementation(project(":api"))
63*af87fb4bSXin Li     testImplementation(project(":common-util"))
64*af87fb4bSXin Li     testImplementation(project(":test-utils"))
65*af87fb4bSXin Li 
66*af87fb4bSXin Li     libsForTesting(kotlin("stdlib", kotlinBaseVersion))
67*af87fb4bSXin Li     libsForTesting(kotlin("test", kotlinBaseVersion))
68*af87fb4bSXin Li     libsForTesting(kotlin("script-runtime", kotlinBaseVersion))
69*af87fb4bSXin Li }
70*af87fb4bSXin Li 
<lambda>null71*af87fb4bSXin Li tasks.register<Copy>("CopyLibsForTesting") {
72*af87fb4bSXin Li     from(configurations.get("libsForTesting"))
73*af87fb4bSXin Li     into("dist/kotlinc/lib")
74*af87fb4bSXin Li     val escaped = Regex.escape(kotlinBaseVersion)
75*af87fb4bSXin Li     rename("(.+)-$escaped\\.jar", "$1.jar")
76*af87fb4bSXin Li }
77*af87fb4bSXin Li 
Projectnull78*af87fb4bSXin Li fun Project.javaPluginConvention(): JavaPluginConvention = the()
79*af87fb4bSXin Li val JavaPluginConvention.testSourceSet: SourceSet
80*af87fb4bSXin Li     get() = sourceSets.getByName("test")
81*af87fb4bSXin Li val Project.testSourceSet: SourceSet
82*af87fb4bSXin Li     get() = javaPluginConvention().testSourceSet
83*af87fb4bSXin Li 
84*af87fb4bSXin Li tasks.test {
85*af87fb4bSXin Li     dependsOn("CopyLibsForTesting")
86*af87fb4bSXin Li     maxHeapSize = "2g"
87*af87fb4bSXin Li 
88*af87fb4bSXin Li     useJUnitPlatform()
89*af87fb4bSXin Li 
90*af87fb4bSXin Li     systemProperty("idea.is.unit.test", "true")
91*af87fb4bSXin Li     systemProperty("idea.home.path", buildDir)
92*af87fb4bSXin Li     systemProperty("java.awt.headless", "true")
93*af87fb4bSXin Li     environment("NO_FS_ROOTS_ACCESS_CHECK", "true")
94*af87fb4bSXin Li     environment("PROJECT_CLASSES_DIRS", testSourceSet.output.classesDirs.asPath)
95*af87fb4bSXin Li     environment("PROJECT_BUILD_DIR", buildDir)
96*af87fb4bSXin Li     testLogging {
97*af87fb4bSXin Li         events("passed", "skipped", "failed")
98*af87fb4bSXin Li     }
99*af87fb4bSXin Li 
100*af87fb4bSXin Li     var tempTestDir: File? = null
101*af87fb4bSXin Li     doFirst {
102*af87fb4bSXin Li         tempTestDir = createTempDir()
103*af87fb4bSXin Li         systemProperty("java.io.tmpdir", tempTestDir.toString())
104*af87fb4bSXin Li     }
105*af87fb4bSXin Li 
106*af87fb4bSXin Li     doLast {
107*af87fb4bSXin Li         tempTestDir?.let { delete(it) }
108*af87fb4bSXin Li     }
109*af87fb4bSXin Li }
110*af87fb4bSXin Li 
<lambda>null111*af87fb4bSXin Li repositories {
112*af87fb4bSXin Li     maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/")
113*af87fb4bSXin Li     maven("https://www.jetbrains.com/intellij-repository/snapshots")
114*af87fb4bSXin Li }
115*af87fb4bSXin Li 
<lambda>null116*af87fb4bSXin Li val dokkaJavadocJar by tasks.register<Jar>("dokkaJavadocJar") {
117*af87fb4bSXin Li     dependsOn(tasks.dokkaJavadoc)
118*af87fb4bSXin Li     from(tasks.dokkaJavadoc.flatMap { it.outputDirectory })
119*af87fb4bSXin Li     from(project(":common-util").tasks.dokkaJavadoc.flatMap { it.outputDirectory })
120*af87fb4bSXin Li     archiveClassifier.set("javadoc")
121*af87fb4bSXin Li }
122