[Gradle] Use SingleActionPerProject instead runOnceAfterEvaluated
To create fat frameworks for all targets. That should be called only single time KT-55751 Verification Pending KT-56450 Verification Pending
This commit is contained in:
committed by
Space Team
parent
92cc13961f
commit
a2e5fa64dc
+5
-2
@@ -47,6 +47,7 @@ import org.jetbrains.kotlin.gradle.testing.internal.configureConventions
|
|||||||
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
|
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
|
||||||
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
||||||
import org.jetbrains.kotlin.gradle.utils.Xcode
|
import org.jetbrains.kotlin.gradle.utils.Xcode
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
|
||||||
import org.jetbrains.kotlin.gradle.utils.klibModuleName
|
import org.jetbrains.kotlin.gradle.utils.klibModuleName
|
||||||
import org.jetbrains.kotlin.gradle.utils.newInstance
|
import org.jetbrains.kotlin.gradle.utils.newInstance
|
||||||
import org.jetbrains.kotlin.konan.target.HostManager
|
import org.jetbrains.kotlin.konan.target.HostManager
|
||||||
@@ -236,8 +237,10 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
|||||||
target.binaries.all {
|
target.binaries.all {
|
||||||
project.createLinkTask(it)
|
project.createLinkTask(it)
|
||||||
}
|
}
|
||||||
project.runOnceAfterEvaluated("Create fat frameworks") {
|
SingleActionPerProject.run(project, "Create fat frameworks") {
|
||||||
project.multiplatformExtensionOrNull?.createFatFrameworks()
|
project.whenEvaluated {
|
||||||
|
project.multiplatformExtensionOrNull?.createFatFrameworks()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
project.runOnceAfterEvaluated("Sync language settings for NativeLinkTask") {
|
project.runOnceAfterEvaluated("Sync language settings for NativeLinkTask") {
|
||||||
target.binaries.all { binary ->
|
target.binaries.all { binary ->
|
||||||
|
|||||||
+5
-2
@@ -53,14 +53,17 @@ internal fun Project.createFrameworkArtifact(binaryFramework: Framework, linkTas
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun KotlinMultiplatformExtension.createFatFrameworks() {
|
internal fun KotlinMultiplatformExtension.createFatFrameworks() {
|
||||||
targets
|
val frameworkGroups = targets
|
||||||
.filterIsInstance<KotlinNativeTarget>()
|
.filterIsInstance<KotlinNativeTarget>()
|
||||||
.filter { FatFrameworkTask.isSupportedTarget(it) }
|
.filter { FatFrameworkTask.isSupportedTarget(it) }
|
||||||
.flatMap { it.binaries }
|
.flatMap { it.binaries }
|
||||||
.filterIsInstance<Framework>()
|
.filterIsInstance<Framework>()
|
||||||
.groupBy { it.frameworkGroupDescription }
|
.groupBy { it.frameworkGroupDescription }
|
||||||
.filter { (_, frameworks) -> frameworks.size > 1 }
|
.filter { (_, frameworks) -> frameworks.size > 1 }
|
||||||
.forEach { (groupDescription, frameworks) -> project.createFatFramework(groupDescription, frameworks) }
|
|
||||||
|
for ((groupDescription, frameworkGroup) in frameworkGroups) {
|
||||||
|
project.createFatFramework(groupDescription, frameworkGroup)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val Framework.binaryFrameworkConfigurationName get() = lowerCamelCaseName(name, target.name)
|
private val Framework.binaryFrameworkConfigurationName get() = lowerCamelCaseName(name, target.name)
|
||||||
|
|||||||
+9
@@ -68,6 +68,15 @@ class FatFrameworksTest {
|
|||||||
iosArm64 { binaries.framework("foo", listOf(DEBUG, RELEASE)) }
|
iosArm64 { binaries.framework("foo", listOf(DEBUG, RELEASE)) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `fat framework grouping -- multiple build types`() = testFatFrameworkGrouping(
|
||||||
|
"fooReleaseFrameworkIosFat",
|
||||||
|
"fooDebugFrameworkIosFat",
|
||||||
|
) {
|
||||||
|
iosX64 { binaries.framework("foo", listOf(DEBUG, RELEASE)) }
|
||||||
|
iosArm64 { binaries.framework("foo", listOf(DEBUG, RELEASE)) }
|
||||||
|
}
|
||||||
|
|
||||||
private fun testFatFrameworkGrouping(
|
private fun testFatFrameworkGrouping(
|
||||||
vararg allExpectedFatFrameworks: String,
|
vararg allExpectedFatFrameworks: String,
|
||||||
configureTargets: KotlinMultiplatformExtension.() -> Unit,
|
configureTargets: KotlinMultiplatformExtension.() -> Unit,
|
||||||
|
|||||||
Reference in New Issue
Block a user