From 88d35cb798daa5a171c3d37e06de9db414911693 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Tue, 29 Jan 2019 19:09:51 +0700 Subject: [PATCH] Don't embed bitcode for ios simulator --- .../kotlin/gradle/NewMultiplatformIT.kt | 16 ++++++++++++++-- .../groovy-dsl/build.gradle | 5 +++++ .../kotlin-dsl/build.gradle.kts | 6 ++++++ .../kotlin/gradle/plugin/mpp/NativeBinaries.kt | 11 ++++++----- .../gradle/plugin/mpp/NativeBinaryTypes.kt | 7 ++++--- 5 files changed, 35 insertions(+), 10 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index c2dcd30077f..3e7b8c3a6a5 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -948,7 +948,7 @@ class NewMultiplatformIT : BaseGradleIT() { if (HostManager.hostIsMac) { // Check dependency exporting and bitcode embedding in frameworks. - // For release builds + // For release builds. build("linkReleaseFrameworkIos") { assertSuccessful() assertFileExists("build/bin/ios/releaseFramework/native_binary.framework") @@ -961,7 +961,7 @@ class NewMultiplatformIT : BaseGradleIT() { } } - // For debug builds + // For debug builds. build("linkDebugFrameworkIos") { assertSuccessful() assertFileExists("build/bin/ios/debugFramework/native_binary.framework") @@ -985,6 +985,18 @@ class NewMultiplatformIT : BaseGradleIT() { } } + // Check that bitcode is disabled for iOS simulator. + build("linkReleaseFrameworkIosSim", "linkDebugFrameworkIosSim") { + assertSuccessful() + assertFileExists("build/bin/iosSim/releaseFramework/native-binary.framework") + assertFileExists("build/bin/iosSim/debugFramework/native-binary.framework") + checkFrameworkCompilationCommandLine { + assertFalse(it.contains("-Xembed-bitcode")) + assertFalse(it.contains("-Xembed-bitcode-marker")) + } + } + + // Check that plugin doesn't allow exporting dependencies not added in the API configuration. val buildFile = listOf("build.gradle", "build.gradle.kts").map { projectDir.resolve(it) }.single { it.exists() } buildFile.modify { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-binaries/groovy-dsl/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-binaries/groovy-dsl/build.gradle index 55b79abd153..69f1cb737b1 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-binaries/groovy-dsl/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-binaries/groovy-dsl/build.gradle @@ -81,5 +81,10 @@ kotlin { } } } + iosX64("iosSim") { + binaries { + framework() + } + } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-binaries/kotlin-dsl/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-binaries/kotlin-dsl/build.gradle.kts index 95f146dee84..17b27f9f511 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-binaries/kotlin-dsl/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-native-binaries/kotlin-dsl/build.gradle.kts @@ -73,4 +73,10 @@ kotlin { } } } + + iosX64("iosSim") { + binaries { + framework() + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/NativeBinaries.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/NativeBinaries.kt index 65f0702efc1..e3ab6bde2c9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/NativeBinaries.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/NativeBinaries.kt @@ -207,11 +207,12 @@ class Framework( /** * Embed bitcode for the framework or not. See [BitcodeEmbeddingMode]. */ - var embedBitcode: BitcodeEmbeddingMode = if (target.konanTarget.family == Family.IOS) { - buildType.iosEmbedBitcode - } else { - BitcodeEmbeddingMode.DISABLE - } + var embedBitcode: BitcodeEmbeddingMode = + if (target.konanTarget == KonanTarget.IOS_ARM64 || target.konanTarget == KonanTarget.IOS_ARM32) { + buildType.iosEmbedBitcode + } else { + BitcodeEmbeddingMode.DISABLE + } /** * Enable or disable embedding bitcode for the framework. See [BitcodeEmbeddingMode]. diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/NativeBinaryTypes.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/NativeBinaryTypes.kt index ea36bf2f362..1f8c4c2ba94 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/NativeBinaryTypes.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/NativeBinaryTypes.kt @@ -1,6 +1,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Named +import org.jetbrains.kotlin.gradle.plugin.mpp.Framework.BitcodeEmbeddingMode import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.konan.target.Family import org.jetbrains.kotlin.konan.target.KonanTarget @@ -8,10 +9,10 @@ import org.jetbrains.kotlin.konan.target.KonanTarget enum class NativeBuildType( val optimized: Boolean, val debuggable: Boolean, - internal val iosEmbedBitcode: Framework.BitcodeEmbeddingMode + internal val iosEmbedBitcode: BitcodeEmbeddingMode ) : Named { - RELEASE(true, false, Framework.BitcodeEmbeddingMode.BITCODE), - DEBUG(false, true, Framework.BitcodeEmbeddingMode.MARKER); + RELEASE(true, false, BitcodeEmbeddingMode.BITCODE), + DEBUG(false, true, BitcodeEmbeddingMode.MARKER); override fun getName(): String = name.toLowerCase()