xref: /aosp_15_r20/external/ksp/symbol-processing/build.gradle.kts (revision af87fb4bb8e3042070d2a054e912924f599b22b7)
1*af87fb4bSXin Li import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
2*af87fb4bSXin Li 
3*af87fb4bSXin Li evaluationDependsOn(":common-util")
4*af87fb4bSXin Li evaluationDependsOn(":compiler-plugin")
5*af87fb4bSXin Li 
6*af87fb4bSXin Li val kotlinBaseVersion: String by project
7*af87fb4bSXin Li val signingKey: String? by project
8*af87fb4bSXin Li val signingPassword: String? by project
9*af87fb4bSXin Li 
<lambda>null10*af87fb4bSXin Li plugins {
11*af87fb4bSXin Li     kotlin("jvm")
12*af87fb4bSXin Li     id("com.github.johnrengelman.shadow") version "6.0.0"
13*af87fb4bSXin Li     `maven-publish`
14*af87fb4bSXin Li     signing
15*af87fb4bSXin Li }
16*af87fb4bSXin Li 
17*af87fb4bSXin Li val packedJars by configurations.creating
18*af87fb4bSXin Li 
<lambda>null19*af87fb4bSXin Li dependencies {
20*af87fb4bSXin Li     packedJars(project(":compiler-plugin")) { isTransitive = false }
21*af87fb4bSXin Li     packedJars(project(":common-util")) { isTransitive = false }
22*af87fb4bSXin Li }
23*af87fb4bSXin Li 
<lambda>null24*af87fb4bSXin Li tasks.withType<ShadowJar>() {
25*af87fb4bSXin Li     archiveClassifier.set("")
26*af87fb4bSXin Li     // ShadowJar picks up the `compile` configuration by default and pulls stdlib in.
27*af87fb4bSXin Li     // Therefore, specifying another configuration instead.
28*af87fb4bSXin Li     configurations = listOf(packedJars)
29*af87fb4bSXin Li     relocate("com.intellij", "org.jetbrains.kotlin.com.intellij")
30*af87fb4bSXin Li }
31*af87fb4bSXin Li 
<lambda>null32*af87fb4bSXin Li tasks {
33*af87fb4bSXin Li     publish {
34*af87fb4bSXin Li         dependsOn(shadowJar)
35*af87fb4bSXin Li         dependsOn(project(":compiler-plugin").tasks["dokkaJavadocJar"])
36*af87fb4bSXin Li         dependsOn(project(":compiler-plugin").tasks["sourcesJar"])
37*af87fb4bSXin Li     }
38*af87fb4bSXin Li }
39*af87fb4bSXin Li 
<lambda>null40*af87fb4bSXin Li publishing {
41*af87fb4bSXin Li     publications {
42*af87fb4bSXin Li         create<MavenPublication>("shadow") {
43*af87fb4bSXin Li             artifactId = "symbol-processing"
44*af87fb4bSXin Li             artifact(project(":compiler-plugin").tasks["dokkaJavadocJar"])
45*af87fb4bSXin Li             artifact(project(":compiler-plugin").tasks["sourcesJar"])
46*af87fb4bSXin Li             artifact(tasks["shadowJar"])
47*af87fb4bSXin Li             pom {
48*af87fb4bSXin Li                 name.set("com.google.devtools.ksp:symbol-processing")
49*af87fb4bSXin Li                 description.set("Symbol processing for Kotlin")
50*af87fb4bSXin Li                 // FIXME: figure out how to make ShadowJar generate dependencies in POM,
51*af87fb4bSXin Li                 //        or simply depends on kotlin-compiler-embeddable so that relocation
52*af87fb4bSXin Li                 //        isn't needed, at the price of giving up composite build.
53*af87fb4bSXin Li                 withXml {
54*af87fb4bSXin Li                     fun groovy.util.Node.addDependency(
55*af87fb4bSXin Li                         groupId: String,
56*af87fb4bSXin Li                         artifactId: String,
57*af87fb4bSXin Li                         version: String,
58*af87fb4bSXin Li                         scope: String = "runtime"
59*af87fb4bSXin Li                     ) {
60*af87fb4bSXin Li                         appendNode("dependency").apply {
61*af87fb4bSXin Li                             appendNode("groupId", groupId)
62*af87fb4bSXin Li                             appendNode("artifactId", artifactId)
63*af87fb4bSXin Li                             appendNode("version", version)
64*af87fb4bSXin Li                             appendNode("scope", scope)
65*af87fb4bSXin Li                         }
66*af87fb4bSXin Li                     }
67*af87fb4bSXin Li 
68*af87fb4bSXin Li                     asNode().appendNode("dependencies").apply {
69*af87fb4bSXin Li                         addDependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlinBaseVersion)
70*af87fb4bSXin Li                         addDependency("org.jetbrains.kotlin", "kotlin-compiler-embeddable", kotlinBaseVersion)
71*af87fb4bSXin Li                         addDependency("com.google.devtools.ksp", "symbol-processing-api", version)
72*af87fb4bSXin Li                     }
73*af87fb4bSXin Li                 }
74*af87fb4bSXin Li             }
75*af87fb4bSXin Li         }
76*af87fb4bSXin Li     }
77*af87fb4bSXin Li }
78*af87fb4bSXin Li 
<lambda>null79*af87fb4bSXin Li signing {
80*af87fb4bSXin Li     isRequired = hasProperty("signingKey")
81*af87fb4bSXin Li     useInMemoryPgpKeys(signingKey, signingPassword)
82*af87fb4bSXin Li     sign(extensions.getByType<PublishingExtension>().publications)
83*af87fb4bSXin Li }
84