[Gradle] Implement CreateFatFrameworksSetupAction

KT-61634
This commit is contained in:
Sebastian Sellmair
2023-10-16 18:28:18 +02:00
committed by Space Team
parent c7b4057dab
commit 3be2eb9b31
3 changed files with 11 additions and 8 deletions
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinWasmTargetPreset
import org.jetbrains.kotlin.gradle.targets.native.createFatFrameworks
import org.jetbrains.kotlin.gradle.targets.native.internal.setupCInteropCommonizedCInteropApiElementsConfigurations
import org.jetbrains.kotlin.gradle.targets.native.tasks.artifact.registerKotlinArtifactsExtension
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool
@@ -77,7 +76,6 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
project.locateOrRegisterIdeResolveDependenciesTask()
project.launch { project.setupCInteropCommonizedCInteropApiElementsConfigurations() }
project.addBuildListenerForXcode()
project.whenEvaluated { kotlinMultiplatformExtension.createFatFrameworks() }
}
private fun exportProjectStructureMetadataForOtherBuilds(
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.PreHmppDependenci
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.UnusedSourceSetsChecker
import org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers.WasmSourceSetsNotFoundChecker
import org.jetbrains.kotlin.gradle.targets.js.npm.AddNpmDependencyExtensionProjectSetupAction
import org.jetbrains.kotlin.gradle.targets.native.CreateFatFrameworksSetupAction
import org.jetbrains.kotlin.gradle.tooling.RegisterBuildKotlinToolingMetadataTask
/**
@@ -39,6 +40,9 @@ internal fun Project.registerKotlinPluginExtensions() {
register(project, AddNpmDependencyExtensionProjectSetupAction)
register(project, RegisterBuildKotlinToolingMetadataTask)
register(project, KotlinToolingDiagnosticsSetupAction)
if (isMultiplatform) {
register(project, CreateFatFrameworksSetupAction)
}
}
KotlinGradleProjectChecker.extensionPoint.apply {
@@ -10,8 +10,8 @@ import org.gradle.api.artifacts.Configuration
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle
import org.jetbrains.kotlin.gradle.plugin.internal.artifactTypeAttribute
import org.jetbrains.kotlin.gradle.plugin.launchInStage
@@ -35,7 +35,7 @@ private data class FrameworkGroupDescription(
val frameworkName: String,
val targetFamilyName: String,
val baseName: String,
val buildType: NativeBuildType
val buildType: NativeBuildType,
)
private val Framework.frameworkGroupDescription
@@ -58,8 +58,9 @@ internal fun Project.createFrameworkArtifact(binaryFramework: Framework, linkTas
addFrameworkArtifact(frameworkConfiguration, linkTask.flatMap { it.outputFile })
}
internal fun KotlinMultiplatformExtension.createFatFrameworks() {
val frameworkGroups = targets
internal val CreateFatFrameworksSetupAction = KotlinProjectSetupCoroutine {
KotlinPluginLifecycle.Stage.FinaliseDsl.await()
val frameworkGroups = multiplatformExtension.targets
.filterIsInstance<KotlinNativeTarget>()
.filter { FatFrameworkTask.isSupportedTarget(it) }
.flatMap { it.binaries }
@@ -78,7 +79,7 @@ private val FrameworkGroupDescription.fatFrameworkConfigurationName get() = lowe
private fun Configuration.applyBinaryFrameworkGroupAttributes(
project: Project,
frameworkDescription: FrameworkGroupDescription,
targets: List<KotlinNativeTarget>
targets: List<KotlinNativeTarget>,
) {
with(attributes) {
attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)