IDE: Add a flag to disable native libraries propagation

This commit is contained in:
Ilya Matveev
2019-09-27 12:29:18 +07:00
parent becdd7a5e6
commit 95cbb4e8b4
10 changed files with 112 additions and 21 deletions
@@ -158,6 +158,7 @@ interface KotlinTestTask : Serializable {
interface ExtraFeatures : Serializable {
val coroutinesState: String?
val isHMPPEnabled: Boolean
val isNativeDependencyPropagationEnabled: Boolean
}
interface KotlinMPPGradleModel : Serializable {
@@ -59,7 +59,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
return KotlinMPPGradleModelImpl(
filterOrphanSourceSets(sourceSetMap, targets, project),
targets,
ExtraFeaturesImpl(coroutinesState, isHMPPEnabled(project)),
ExtraFeaturesImpl(coroutinesState, isHMPPEnabled(project), isNativeDependencyPropagationEnabled(project)),
kotlinNativeHome,
dependencyMapper.toDependencyMap()
)
@@ -83,6 +83,10 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
return (project.findProperty("kotlin.mpp.enableGranularSourceSetsMetadata") as? String)?.toBoolean() ?: false
}
private fun isNativeDependencyPropagationEnabled(project: Project): Boolean {
return (project.findProperty("kotlin.native.enableDependencyPropagation") as? String)?.toBoolean() ?: true
}
private fun reportUnresolvedDependencies(targets: Collection<KotlinTarget>) {
targets
.asSequence()
@@ -168,7 +168,8 @@ data class KotlinTestTaskImpl(
data class ExtraFeaturesImpl(
override val coroutinesState: String?,
override val isHMPPEnabled: Boolean
override val isHMPPEnabled: Boolean,
override val isNativeDependencyPropagationEnabled: Boolean
) : ExtraFeatures
data class KotlinMPPGradleModelImpl(
@@ -191,7 +192,11 @@ data class KotlinMPPGradleModelImpl(
cloningCache[initialTarget] = it
}
}.toList(),
ExtraFeaturesImpl(mppModel.extraFeatures.coroutinesState, mppModel.extraFeatures.isHMPPEnabled),
ExtraFeaturesImpl(
mppModel.extraFeatures.coroutinesState,
mppModel.extraFeatures.isHMPPEnabled,
mppModel.extraFeatures.isNativeDependencyPropagationEnabled
),
mppModel.kotlinNativeHome,
mppModel.dependencyMap.map { it.key to it.value.deepCopy(cloningCache) }.toMap()
)