[Gradle] Mark dependencies coming from nativeDistribution
KT-55189
This commit is contained in:
committed by
Space Team
parent
45ebbede2f
commit
e002bbe906
+1
@@ -21,6 +21,7 @@ data class KlibExtra(
|
|||||||
val shortName: String?,
|
val shortName: String?,
|
||||||
val packageFqName: String?,
|
val packageFqName: String?,
|
||||||
val nativeTargets: List<String>?,
|
val nativeTargets: List<String>?,
|
||||||
|
val commonizerNativeTargets: List<String>?,
|
||||||
val commonizerTarget: String?,
|
val commonizerTarget: String?,
|
||||||
val isInterop: Boolean?
|
val isInterop: Boolean?
|
||||||
) : Serializable {
|
) : Serializable {
|
||||||
|
|||||||
+18
-1
@@ -10,10 +10,27 @@ import org.jetbrains.kotlin.tooling.core.extrasKeyOf
|
|||||||
import org.jetbrains.kotlin.tooling.core.getValue
|
import org.jetbrains.kotlin.tooling.core.getValue
|
||||||
import org.jetbrains.kotlin.tooling.core.setValue
|
import org.jetbrains.kotlin.tooling.core.setValue
|
||||||
|
|
||||||
val isIdeaProjectLevelKey = extrasKeyOf<Boolean>("IdeaKotlinBinaryDependency.isIdeaProjectLevel")
|
val isIdeaProjectLevelKey = extrasKeyOf<Boolean>("isIdeaProjectLevel")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marks any binary dependency as Global in the sense of "this library is considered
|
* Marks any binary dependency as Global in the sense of "this library is considered
|
||||||
* the same, no matter in which Gradle project / IntelliJ module it will be used
|
* the same, no matter in which Gradle project / IntelliJ module it will be used
|
||||||
*/
|
*/
|
||||||
var IdeaKotlinBinaryDependency.isIdeaProjectLevel by isIdeaProjectLevelKey
|
var IdeaKotlinBinaryDependency.isIdeaProjectLevel by isIdeaProjectLevelKey
|
||||||
|
|
||||||
|
|
||||||
|
val isNativeDistributionKey = extrasKeyOf<Boolean>("isNativeDistribution")
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks this dependency as 'coming from the native distribution'
|
||||||
|
*/
|
||||||
|
var IdeaKotlinBinaryDependency.isNativeDistribution by isNativeDistributionKey
|
||||||
|
|
||||||
|
|
||||||
|
val isNativeStdlibKey = extrasKeyOf<Boolean>("isNativeStdlib")
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks the dependency as the native stdlib (which is special in the native distribution)
|
||||||
|
*/
|
||||||
|
var IdeaKotlinBinaryDependency.isNativeStdlib by isNativeStdlibKey
|
||||||
+4
@@ -10,6 +10,8 @@ import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinBooleanExtrasSeriali
|
|||||||
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializer
|
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializer
|
||||||
import org.jetbrains.kotlin.gradle.idea.tcs.extras.KlibExtra
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.KlibExtra
|
||||||
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isIdeaProjectLevelKey
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isIdeaProjectLevelKey
|
||||||
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isNativeDistributionKey
|
||||||
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isNativeStdlibKey
|
||||||
import org.jetbrains.kotlin.gradle.kpm.idea.kotlinDebugKey
|
import org.jetbrains.kotlin.gradle.kpm.idea.kotlinDebugKey
|
||||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint
|
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint
|
||||||
import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.*
|
import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.*
|
||||||
@@ -108,6 +110,8 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
|
|||||||
register(kotlinDebugKey, IdeaKotlinExtrasSerializer.javaIoSerializable())
|
register(kotlinDebugKey, IdeaKotlinExtrasSerializer.javaIoSerializable())
|
||||||
register(KlibExtra.key, IdeaKotlinExtrasSerializer.javaIoSerializable())
|
register(KlibExtra.key, IdeaKotlinExtrasSerializer.javaIoSerializable())
|
||||||
register(isIdeaProjectLevelKey, IdeaKotlinBooleanExtrasSerializer)
|
register(isIdeaProjectLevelKey, IdeaKotlinBooleanExtrasSerializer)
|
||||||
|
register(isNativeDistributionKey, IdeaKotlinBooleanExtrasSerializer)
|
||||||
|
register(isNativeStdlibKey, IdeaKotlinBooleanExtrasSerializer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-3
@@ -15,12 +15,14 @@ import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryCoordinates
|
|||||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency
|
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency
|
||||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinResolvedBinaryDependency
|
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinResolvedBinaryDependency
|
||||||
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isIdeaProjectLevel
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isIdeaProjectLevel
|
||||||
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isNativeDistribution
|
||||||
import org.jetbrains.kotlin.gradle.idea.tcs.extras.klibExtra
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.klibExtra
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver
|
import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver
|
||||||
import org.jetbrains.kotlin.gradle.plugin.ide.KlibExtra
|
import org.jetbrains.kotlin.gradle.plugin.ide.KlibExtra
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.project
|
import org.jetbrains.kotlin.gradle.plugin.sources.project
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.internal.getCommonizerTarget
|
import org.jetbrains.kotlin.gradle.targets.native.internal.getCommonizerTarget
|
||||||
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.library.*
|
import org.jetbrains.kotlin.library.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -32,14 +34,14 @@ object IdeNativePlatformDependencyResolver : IdeDependencyResolver {
|
|||||||
return sourceSet.project.konanDistribution.platformLibsDir.resolve(konanTarget.name)
|
return sourceSet.project.konanDistribution.platformLibsDir.resolve(konanTarget.name)
|
||||||
.listFiles().orEmpty()
|
.listFiles().orEmpty()
|
||||||
.filter { it.isDirectory || it.extension == KLIB_FILE_EXTENSION }
|
.filter { it.isDirectory || it.extension == KLIB_FILE_EXTENSION }
|
||||||
.mapNotNull { libraryFile -> sourceSet.project.resolveKlib(libraryFile) }
|
.mapNotNull { libraryFile -> sourceSet.project.resolveKlib(libraryFile, konanTarget) }
|
||||||
.toSet()
|
.toSet()
|
||||||
}
|
}
|
||||||
|
|
||||||
private val Project.konanDistribution: KonanDistribution
|
private val Project.konanDistribution: KonanDistribution
|
||||||
get() = KonanDistribution(project.file(konanHome))
|
get() = KonanDistribution(project.file(konanHome))
|
||||||
|
|
||||||
private fun Project.resolveKlib(file: File): IdeaKotlinResolvedBinaryDependency? {
|
private fun Project.resolveKlib(file: File, konanTarget: KonanTarget): IdeaKotlinResolvedBinaryDependency? {
|
||||||
try {
|
try {
|
||||||
val kotlinLibrary = resolveSingleFileKlib(
|
val kotlinLibrary = resolveSingleFileKlib(
|
||||||
org.jetbrains.kotlin.konan.file.File(file.absolutePath),
|
org.jetbrains.kotlin.konan.file.File(file.absolutePath),
|
||||||
@@ -52,10 +54,12 @@ object IdeNativePlatformDependencyResolver : IdeDependencyResolver {
|
|||||||
coordinates = IdeaKotlinBinaryCoordinates(
|
coordinates = IdeaKotlinBinaryCoordinates(
|
||||||
group = "org.jetbrains.kotlin.native",
|
group = "org.jetbrains.kotlin.native",
|
||||||
module = kotlinLibrary.packageFqName ?: kotlinLibrary.shortName ?: kotlinLibrary.uniqueName,
|
module = kotlinLibrary.packageFqName ?: kotlinLibrary.shortName ?: kotlinLibrary.uniqueName,
|
||||||
version = project.konanVersion.toString()
|
version = project.konanVersion.toString(),
|
||||||
|
sourceSetName = konanTarget.toString()
|
||||||
),
|
),
|
||||||
).apply {
|
).apply {
|
||||||
isIdeaProjectLevel = true
|
isIdeaProjectLevel = true
|
||||||
|
isNativeDistribution = true
|
||||||
klibExtra = KlibExtra(kotlinLibrary)
|
klibExtra = KlibExtra(kotlinLibrary)
|
||||||
}
|
}
|
||||||
} catch (t: Throwable) {
|
} catch (t: Throwable) {
|
||||||
|
|||||||
+4
@@ -15,6 +15,8 @@ import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryCoordinates
|
|||||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency
|
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency
|
||||||
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinResolvedBinaryDependency
|
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinResolvedBinaryDependency
|
||||||
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isIdeaProjectLevel
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isIdeaProjectLevel
|
||||||
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isNativeDistribution
|
||||||
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.isNativeStdlib
|
||||||
import org.jetbrains.kotlin.gradle.idea.tcs.extras.klibExtra
|
import org.jetbrains.kotlin.gradle.idea.tcs.extras.klibExtra
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver
|
import org.jetbrains.kotlin.gradle.plugin.ide.IdeDependencyResolver
|
||||||
@@ -50,6 +52,8 @@ internal object IdeNativeStdlibDependencyResolver : IdeDependencyResolver {
|
|||||||
"org.jetbrains.kotlin.native", "stdlib", sourceSet.project.konanVersion.toString(),
|
"org.jetbrains.kotlin.native", "stdlib", sourceSet.project.konanVersion.toString(),
|
||||||
)
|
)
|
||||||
).apply {
|
).apply {
|
||||||
|
this.isNativeDistribution = true
|
||||||
|
this.isNativeStdlib = true
|
||||||
this.isIdeaProjectLevel = true
|
this.isIdeaProjectLevel = true
|
||||||
this.klibExtra = klibExtra
|
this.klibExtra = klibExtra
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -56,6 +56,7 @@ internal fun KlibExtra(library: KotlinLibrary): KlibExtra {
|
|||||||
shortName = library.shortName,
|
shortName = library.shortName,
|
||||||
packageFqName = library.packageFqName,
|
packageFqName = library.packageFqName,
|
||||||
nativeTargets = library.nativeTargets,
|
nativeTargets = library.nativeTargets,
|
||||||
|
commonizerNativeTargets = library.commonizerNativeTargets,
|
||||||
commonizerTarget = library.commonizerTarget,
|
commonizerTarget = library.commonizerTarget,
|
||||||
isInterop = library.isInterop
|
isInterop = library.isInterop
|
||||||
)
|
)
|
||||||
|
|||||||
-1
@@ -20,7 +20,6 @@ operator fun <T : Any> Extras.Key<T>.getValue(receiver: HasExtras, property: KPr
|
|||||||
return receiver.extras[this]
|
return receiver.extras[this]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
operator fun <T : Any> Extras.Key<T>.setValue(receiver: HasMutableExtras, property: KProperty<*>, value: T?) {
|
operator fun <T : Any> Extras.Key<T>.setValue(receiver: HasMutableExtras, property: KProperty<*>, value: T?) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
receiver.extras.remove(this)
|
receiver.extras.remove(this)
|
||||||
|
|||||||
Reference in New Issue
Block a user