xref: /aosp_15_r20/external/ksp/kotlin-analysis-api/build.gradle.kts (revision af87fb4bb8e3042070d2a054e912924f599b22b7)
1*af87fb4bSXin Li description = "Kotlin Symbol Processing implementation using Kotlin Analysis API"
2*af87fb4bSXin Li 
3*af87fb4bSXin Li val intellijVersion: String by project
4*af87fb4bSXin Li val junitVersion: String by project
5*af87fb4bSXin Li val kotlinBaseVersion: String by project
6*af87fb4bSXin Li val libsForTesting by configurations.creating
7*af87fb4bSXin Li 
<lambda>null8*af87fb4bSXin Li plugins {
9*af87fb4bSXin Li     kotlin("jvm")
10*af87fb4bSXin Li     id("org.jetbrains.intellij") version "0.6.4"
11*af87fb4bSXin Li     id("org.jetbrains.dokka") version ("1.7.20")
12*af87fb4bSXin Li }
13*af87fb4bSXin Li 
<lambda>null14*af87fb4bSXin Li intellij {
15*af87fb4bSXin Li     version = intellijVersion
16*af87fb4bSXin Li }
17*af87fb4bSXin Li 
<lambda>null18*af87fb4bSXin Li dependencies {
19*af87fb4bSXin Li     implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.4")
20*af87fb4bSXin Li     implementation(kotlin("stdlib", kotlinBaseVersion))
21*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:kotlin-compiler:$kotlinBaseVersion")
22*af87fb4bSXin Li 
23*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:high-level-api-fir-for-ide:$kotlinBaseVersion") {
24*af87fb4bSXin Li         isTransitive = false
25*af87fb4bSXin Li     }
26*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:high-level-api-for-ide:$kotlinBaseVersion") {
27*af87fb4bSXin Li         isTransitive = false
28*af87fb4bSXin Li     }
29*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:low-level-api-fir-for-ide:$kotlinBaseVersion") {
30*af87fb4bSXin Li         isTransitive = false
31*af87fb4bSXin Li     }
32*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:analysis-api-providers-for-ide:$kotlinBaseVersion") {
33*af87fb4bSXin Li         isTransitive = false
34*af87fb4bSXin Li     }
35*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:analysis-project-structure-for-ide:$kotlinBaseVersion") {
36*af87fb4bSXin Li         isTransitive = false
37*af87fb4bSXin Li     }
38*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:symbol-light-classes-for-ide:$kotlinBaseVersion") {
39*af87fb4bSXin Li         isTransitive = false
40*af87fb4bSXin Li     }
41*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:analysis-api-standalone-for-ide:$kotlinBaseVersion") {
42*af87fb4bSXin Li         isTransitive = false
43*af87fb4bSXin Li     }
44*af87fb4bSXin Li     implementation("org.jetbrains.kotlin:high-level-api-impl-base-for-ide:$kotlinBaseVersion") {
45*af87fb4bSXin Li         isTransitive = false
46*af87fb4bSXin Li     }
47*af87fb4bSXin Li 
48*af87fb4bSXin Li     implementation(project(":api"))
49*af87fb4bSXin Li     implementation(project(":common-util"))
50*af87fb4bSXin Li 
51*af87fb4bSXin Li     testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2")
52*af87fb4bSXin Li     testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2")
53*af87fb4bSXin Li     testRuntimeOnly("org.junit.jupiter:junit-jupiter-params:5.8.2")
54*af87fb4bSXin Li     testRuntimeOnly("org.junit.platform:junit-platform-suite:1.8.2")
55*af87fb4bSXin Li 
56*af87fb4bSXin Li     testImplementation(project(":test-utils"))
57*af87fb4bSXin Li     testImplementation(project(":api"))
58*af87fb4bSXin Li     testImplementation(project(":common-util"))
59*af87fb4bSXin Li 
60*af87fb4bSXin Li     testImplementation(kotlin("stdlib", kotlinBaseVersion))
61*af87fb4bSXin Li     testImplementation("org.jetbrains.kotlin:kotlin-compiler:$kotlinBaseVersion")
62*af87fb4bSXin Li     testImplementation("org.jetbrains.kotlin:kotlin-compiler-internal-test-framework:$kotlinBaseVersion")
63*af87fb4bSXin Li     testImplementation("org.jetbrains.kotlin:kotlin-scripting-compiler:$kotlinBaseVersion")
64*af87fb4bSXin Li 
65*af87fb4bSXin Li     libsForTesting(kotlin("stdlib", kotlinBaseVersion))
66*af87fb4bSXin Li     libsForTesting(kotlin("test", kotlinBaseVersion))
67*af87fb4bSXin Li     libsForTesting(kotlin("script-runtime", kotlinBaseVersion))
68*af87fb4bSXin Li }
69*af87fb4bSXin Li 
<lambda>null70*af87fb4bSXin Li tasks.register<Copy>("CopyLibsForTesting") {
71*af87fb4bSXin Li     from(configurations.get("libsForTesting"))
72*af87fb4bSXin Li     into("dist/kotlinc/lib")
73*af87fb4bSXin Li     val escaped = Regex.escape(kotlinBaseVersion)
74*af87fb4bSXin Li     rename("(.+)-$escaped\\.jar", "$1.jar")
75*af87fb4bSXin Li }
76*af87fb4bSXin Li 
<lambda>null77*af87fb4bSXin Li sourceSets.main {
78*af87fb4bSXin Li     java.srcDirs("src/main/kotlin")
79*af87fb4bSXin Li }
80*af87fb4bSXin Li 
Projectnull81*af87fb4bSXin Li fun Project.javaPluginConvention(): JavaPluginConvention = the()
82*af87fb4bSXin Li val JavaPluginConvention.testSourceSet: SourceSet
83*af87fb4bSXin Li     get() = sourceSets.getByName("test")
84*af87fb4bSXin Li val Project.testSourceSet: SourceSet
85*af87fb4bSXin Li     get() = javaPluginConvention().testSourceSet
86*af87fb4bSXin Li 
87*af87fb4bSXin Li tasks.test {
88*af87fb4bSXin Li     dependsOn("CopyLibsForTesting")
89*af87fb4bSXin Li     maxHeapSize = "2g"
90*af87fb4bSXin Li 
91*af87fb4bSXin Li     useJUnitPlatform()
92*af87fb4bSXin Li 
93*af87fb4bSXin Li     systemProperty("idea.is.unit.test", "true")
94*af87fb4bSXin Li     systemProperty("idea.home.path", buildDir)
95*af87fb4bSXin Li     systemProperty("java.awt.headless", "true")
96*af87fb4bSXin Li     environment("NO_FS_ROOTS_ACCESS_CHECK", "true")
97*af87fb4bSXin Li     environment("PROJECT_CLASSES_DIRS", testSourceSet.output.classesDirs.asPath)
98*af87fb4bSXin Li     environment("PROJECT_BUILD_DIR", buildDir)
99*af87fb4bSXin Li     testLogging {
100*af87fb4bSXin Li         events("passed", "skipped", "failed")
101*af87fb4bSXin Li     }
102*af87fb4bSXin Li 
103*af87fb4bSXin Li     var tempTestDir: File? = null
104*af87fb4bSXin Li     doFirst {
105*af87fb4bSXin Li         tempTestDir = createTempDir()
106*af87fb4bSXin Li         systemProperty("java.io.tmpdir", tempTestDir.toString())
107*af87fb4bSXin Li     }
108*af87fb4bSXin Li 
109*af87fb4bSXin Li     doLast {
110*af87fb4bSXin Li         tempTestDir?.let { delete(it) }
111*af87fb4bSXin Li     }
112*af87fb4bSXin Li }
113*af87fb4bSXin Li 
<lambda>null114*af87fb4bSXin Li repositories {
115*af87fb4bSXin Li     flatDir {
116*af87fb4bSXin Li         dirs("${project.rootDir}/third_party/prebuilt/repo/")
117*af87fb4bSXin Li     }
118*af87fb4bSXin Li     maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/")
119*af87fb4bSXin Li     maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-ide-plugin-dependencies")
120*af87fb4bSXin Li     maven("https://www.jetbrains.com/intellij-repository/releases")
121*af87fb4bSXin Li }
122