From 1a77b57a7bb32d5bebc8452b770f09f1b51ee647 Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Thu, 15 Jul 2021 13:48:35 +0300 Subject: [PATCH] [Gradle] Provide JNA jar to compiler classpath with intellij-core 203+ #KT-47748 Fixed --- gradle/versions.properties | 1 + .../org/jetbrains/kotlin/gradle/tasks/jarSearchingUtil.kt | 4 +++- prepare/compiler-embeddable/build.gradle.kts | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gradle/versions.properties b/gradle/versions.properties index 8ebbf76fe67..842df2b9710 100644 --- a/gradle/versions.properties +++ b/gradle/versions.properties @@ -18,6 +18,7 @@ versions.jar.serviceMessages=2019.1.4 versions.jar.lz4-java=1.7.1 ignore.jar.snappy-in-java=true versions.gradle-api=4.5.1 +versions.jna=5.6.0 versions.shadow=6.1.0 versions.junit-bom=5.7.0 versions.org.junit.platform=1.7.0 diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/jarSearchingUtil.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/jarSearchingUtil.kt index 8ca8627f877..95feba2f4e4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/jarSearchingUtil.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/jarSearchingUtil.kt @@ -38,6 +38,7 @@ private val KOTLIN_SCRIPT_ANNOTATION_EXPECTED_CLASS = "kotlin.script.experimenta private val KOTLIN_JVM_SCRIPT_COMPILER_EXPECTED_CLASS = "kotlin.script.experimental.jvm.JvmScriptCompiler" private val KOTLIN_REFLECT_EXPECTED_CLASS = "kotlin.reflect.full.KClasses" private val TROVE4J_EXPECTED_CLASS = "gnu.trove.THashMap" +private val JNA_EXPECTED_CLASS = "com.sun.jna.Structure" private val DAEMON_EXPECTED_CLASS = "org.jetbrains.kotlin.daemon.CompileServiceImpl" internal const val KOTLIN_MODULE_GROUP = "org.jetbrains.kotlin" private val KOTLIN_GRADLE_PLUGIN = "kotlin-gradle-plugin" @@ -77,7 +78,7 @@ internal fun findKotlinCompilerClasspath(project: Project): List { return findKotlinStdlibClasspath(project) + findKotlinScriptRuntimeClasspath(project) + findKotlinReflectClasspath(project) + - listOfNotNull(findTrove4j(), findDaemon()) + listOfNotNull(findTrove4j(), findJna(), findDaemon()) } internal fun findJarByClass(classFqName: String): File? { @@ -92,6 +93,7 @@ internal fun findJarByClass(classFqName: String): File? { } internal fun findTrove4j() = findJarByClass(TROVE4J_EXPECTED_CLASS) +internal fun findJna() = findJarByClass(JNA_EXPECTED_CLASS) internal fun findDaemon() = findJarByClass(DAEMON_EXPECTED_CLASS) internal fun findKotlinStdlibClasspath(project: Project): List = diff --git a/prepare/compiler-embeddable/build.gradle.kts b/prepare/compiler-embeddable/build.gradle.kts index b4ea0a47bb4..70285aab0c4 100644 --- a/prepare/compiler-embeddable/build.gradle.kts +++ b/prepare/compiler-embeddable/build.gradle.kts @@ -26,6 +26,9 @@ dependencies { runtimeOnly(project(":kotlin-reflect")) runtimeOnly(project(":kotlin-daemon-embeddable")) runtimeOnly(commonDep("org.jetbrains.intellij.deps", "trove4j")) + Platform[203].orHigher { + runtimeOnly(commonDep("net.java.dev.jna", "jna")) + } testCompile(commonDep("junit:junit")) testCompile(project(":kotlin-test:kotlin-test-junit")) testCompilationClasspath(kotlinStdlib())