From b70c50cd1ffe0ec936c434737be7a79265a8f95a Mon Sep 17 00:00:00 2001 From: Artem Daugel-Dauge Date: Mon, 4 Dec 2023 11:18:22 +0100 Subject: [PATCH] [Gradle] Add integration tests for building through xcode with embedAndSign task Including checks: * running embedAndSign through a build phase * running embedAndSign through a scheme pre-action script * running embedAndSign through a scheme pre-action script and using Kotlin framework in local SPM package * absense of explicit '-framework' linker flag ^KT-62376 ^KT-63819 --- .../MacosCapableConfigurationCacheIT.kt | 3 +- .../gradle/apple/XcodeDirectIntegrationIT.kt | 55 +++ .../kotlin/gradle/native/CocoaPodsXcodeIT.kt | 52 +-- .../gradle/testbase/xcodeTestHelpers.kt | 102 +++++ .../xcodeDirectIntegration/build.gradle.kts | 3 + .../iosApp.xcodeproj/project.pbxproj | 384 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 98 +++++ .../iosApp/Assets.xcassets/Contents.json | 6 + .../iosAppBuildPhase/iosApp/ContentView.swift | 16 + .../iosAppBuildPhase/iosApp/Info.plist | 48 +++ .../Preview Assets.xcassets/Contents.json | 6 + .../iosAppBuildPhase/iosApp/iOSApp.swift | 10 + .../iosApp.xcodeproj/project.pbxproj | 362 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/iosApp.xcscheme | 96 +++++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 98 +++++ .../iosApp/Assets.xcassets/Contents.json | 6 + .../iosApp/ContentView.swift | 16 + .../iosAppSchemePreAction/iosApp/Info.plist | 48 +++ .../Preview Assets.xcassets/Contents.json | 6 + .../iosAppSchemePreAction/iosApp/iOSApp.swift | 10 + .../SpmLocalPackage/Package.swift | 16 + .../Sources/SpmLocalPackage/Greeting.swift | 5 + .../iosApp.xcodeproj/project.pbxproj | 381 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 21771 bytes .../xcshareddata/xcschemes/iosApp.xcscheme | 96 +++++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 98 +++++ .../iosApp/Assets.xcassets/Contents.json | 6 + .../iosApp/ContentView.swift | 17 + .../iosApp/Info.plist | 48 +++ .../Preview Assets.xcassets/Contents.json | 6 + .../iosApp/iOSApp.swift | 10 + .../settings.gradle.kts | 1 + .../shared/build.gradle.kts | 22 + .../commonMain/kotlin/com/example/Greeting.kt | 9 + .../commonMain/kotlin/com/example/Platform.kt | 7 + .../kotlin/com/example/Platform.ios.kt | 9 + .../kotlin/com/example/Platform.jvm.kt | 7 + .../native/cocoapods/tasks/PodBuildTask.kt | 5 +- 47 files changed, 2201 insertions(+), 45 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/apple/XcodeDirectIntegrationIT.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/xcodeTestHelpers.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.pbxproj create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/ContentView.swift create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Info.plist create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/iOSApp.swift create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.pbxproj create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/ContentView.swift create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Info.plist create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/iOSApp.swift create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/SpmLocalPackage/Package.swift create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/SpmLocalPackage/Sources/SpmLocalPackage/Greeting.swift create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.pbxproj create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/xcuserdata/Artem.Daugel-Dauge.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/ContentView.swift create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Info.plist create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/iOSApp.swift create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/settings.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/commonMain/kotlin/com/example/Greeting.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/commonMain/kotlin/com/example/Platform.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/iosMain/kotlin/com/example/Platform.ios.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/jvmMain/kotlin/com/example/Platform.jvm.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MacosCapableConfigurationCacheIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MacosCapableConfigurationCacheIT.kt index 7cb16720d4b..52897575a2c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MacosCapableConfigurationCacheIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MacosCapableConfigurationCacheIT.kt @@ -81,7 +81,8 @@ class MacosCapableConfigurationCacheIT : AbstractConfigurationCacheIT() { "ARCHS" to "arm64", "EXPANDED_CODE_SIGN_IDENTITY" to "-", "TARGET_BUILD_DIR" to targetBuildDir.toString(), - "FRAMEWORKS_FOLDER_PATH" to "testFrameworksDir" + "FRAMEWORKS_FOLDER_PATH" to "testFrameworksDir", + "BUILT_PRODUCTS_DIR" to "builtProductsDir", ), ) { testConfigurationCacheOf(":shared:embedAndSignAppleFrameworkForXcode") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/apple/XcodeDirectIntegrationIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/apple/XcodeDirectIntegrationIT.kt new file mode 100644 index 00000000000..34d3e0ace94 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/apple/XcodeDirectIntegrationIT.kt @@ -0,0 +1,55 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.apple + +import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.testbase.* +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.api.condition.OS +import org.junit.jupiter.api.extension.ExtensionContext +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.Arguments +import org.junit.jupiter.params.provider.ArgumentsSource +import java.util.stream.Stream + +@OsCondition(supportedOn = [OS.MAC], enabledOnCI = [OS.MAC]) +@DisplayName("Tests for Xcode <-> Kotlin direct integration") +@GradleTestVersions(minVersion = TestVersions.Gradle.G_7_0) +@NativeGradlePluginTests +class XcodeDirectIntegrationIT : KGPBaseTest() { + + @DisplayName("Xcode direct integration") + @ParameterizedTest(name = "{displayName} with {1}, {0} and isStatic={2}") + @ArgumentsSource(XcodeArgumentsProvider::class) + fun test( + gradleVersion: GradleVersion, + iosApp: String, + isStatic: Boolean, + ) { + + project("xcodeDirectIntegration", gradleVersion) { + + projectPath.resolve("shared/build.gradle.kts") + .modify { it.replace(".framework {", ".framework {\n isStatic = $isStatic") } + + buildXcodeProject(xcodeproj = projectPath.resolve("iosApp$iosApp/iosApp.xcodeproj")) + } + } + + + internal class XcodeArgumentsProvider : GradleArgumentsProvider() { + override fun provideArguments(context: ExtensionContext): Stream { + return super.provideArguments(context).flatMap { arguments -> + val gradleVersion = arguments.get().first() + Stream.of("BuildPhase", "SchemePreAction", "SchemePreActionSpm").flatMap { iosApp -> + Stream.of(true, false).map { isStatic -> + Arguments.of(gradleVersion, iosApp, isStatic) + } + } + } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsXcodeIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsXcodeIT.kt index f2fd71bcf9d..5116862920c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsXcodeIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsXcodeIT.kt @@ -10,15 +10,13 @@ import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Compan import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_INSTALL_TASK_NAME import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.util.assertProcessRunResult -import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.gradle.util.runProcess import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.condition.OS import java.nio.file.Path -import kotlin.io.path.exists +import java.nio.file.Paths import kotlin.io.path.name -import kotlin.test.assertEquals import kotlin.test.assertTrue @OsCondition(supportedOn = [OS.MAC], enabledOnCI = [OS.MAC]) @@ -39,17 +37,6 @@ class CocoaPodsXcodeIT : KGPBaseTest() { ensureCocoapodsInstalled() } - override fun TestProject.customizeProject() { - val mavenLocalOverride = System.getProperty("maven.repo.local") ?: return - - // Manually adding custom local repo, because the system property is lost when Gradle is invoked through Xcode build phase - projectPath.toFile().walkTopDown() - .filter { it.isFile && it.name in buildFileNames } - .forEach { file -> - file.modify { it.replace("mavenLocal()", "maven { setUrl(\"$mavenLocalOverride\") }") } - } - } - @DisplayName("Checks xcodebuild for ios-app with a single framework") @GradleTest fun testXcodeUseFrameworksSingle(gradleVersion: GradleVersion) = doTestXcode( @@ -207,15 +194,7 @@ class CocoaPodsXcodeIT : KGPBaseTest() { podInstall: (taskPrefix: String, iosAppPath: Path) -> Unit = ::gradlePodInstall, ) { - gradleProperties - .takeIf(Path::exists) - ?.let { - it.append("kotlin_version=${defaultBuildOptions.kotlinVersion}") - it.append("test_fixes_version=${defaultBuildOptions.kotlinVersion}") - defaultBuildOptions.konanDataDir?.let { konanDataDir -> - it.append("konan.data.dir=${konanDataDir.toAbsolutePath().normalize()}") - } - } + prepareForXcodebuild() for ((subproject, frameworkName) in subprojectsToFrameworkNamesMap) { @@ -226,12 +205,6 @@ class CocoaPodsXcodeIT : KGPBaseTest() { useCustomCocoapodsFrameworkName(subproject, it, iosAppLocation) } - val buildOptions = defaultBuildOptions.copy( - nativeOptions = defaultBuildOptions.nativeOptions.copy( - cocoapodsGenerateWrapper = true - ) - ) - // Generate podspec. build("$taskPrefix:podspec", buildOptions = buildOptions) if (iosAppLocation != null) { @@ -244,21 +217,14 @@ class CocoaPodsXcodeIT : KGPBaseTest() { podInstall(taskPrefix, iosAppPath) // Run Xcode build. - val xcodebuildResult = runProcess( - cmd = listOf( - "xcodebuild", - "-sdk", "iphonesimulator", - "-configuration", "Release", - "-workspace", "${iosAppPath.name}.xcworkspace", - "-scheme", iosAppPath.name, - "-arch", arch - ), - environmentVariables = environmentVariables.environmentalVariables, - workingDir = iosAppPath.toFile(), + xcodebuild( + workspace = Paths.get("${iosAppPath.name}.xcworkspace"), + scheme = iosAppPath.name, + configuration = "Release", + sdk = "iphonesimulator", + arch = arch, + workingDir = iosAppPath, ) - assertProcessRunResult(xcodebuildResult) { - assertEquals(0, exitCode, "Exit code mismatch for `xcodebuild`.") - } } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/xcodeTestHelpers.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/xcodeTestHelpers.kt new file mode 100644 index 00000000000..5155135ca36 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/xcodeTestHelpers.kt @@ -0,0 +1,102 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.testbase + +import org.jetbrains.kotlin.gradle.util.assertProcessRunResult +import org.jetbrains.kotlin.gradle.util.modify +import org.jetbrains.kotlin.gradle.util.runProcess +import java.nio.file.Path +import kotlin.io.path.exists +import kotlin.test.assertEquals + + +fun TestProject.buildXcodeProject( + xcodeproj: Path, + scheme: String = "iosApp", + configuration: String = "Debug", + destination: String = "generic/platform=iOS Simulator" +) { + prepareForXcodebuild() + + xcodebuild( + xcodeproj = xcodeproj, + scheme = scheme, + configuration = configuration, + destination = destination, + ) +} + +fun TestProject.xcodebuild( + workingDir: Path = projectPath, + xcodeproj: Path? = null, + workspace: Path? = null, + scheme: String? = null, + configuration: String? = null, + sdk: String? = null, + arch: String? = null, + destination: String? = null, + derivedDataPath: Path? = projectPath.resolve("xcodeDerivedData"), +) { + xcodebuild( + buildList { + infix fun String.set(value: Any?) { + if (value != null) { + add(this) + add(value.toString()) + } + } + + add("xcodebuild") + "-project" set xcodeproj + "-workspace" set workspace + "-scheme" set scheme + "-configuration" set configuration + "-sdk" set sdk + "-arch" set arch + "-destination" set destination + "-derivedDataPath" set derivedDataPath + }, + workingDir, + ) +} + +fun TestProject.prepareForXcodebuild() { + overrideMavenLocalIfNeeded() + + gradleProperties + .takeIf(Path::exists) + ?.let { + it.append("kotlin_version=${buildOptions.kotlinVersion}") + it.append("test_fixes_version=${buildOptions.kotlinVersion}") + buildOptions.konanDataDir?.let { konanDataDir -> + it.append("konan.data.dir=${konanDataDir.toAbsolutePath().normalize()}") + } + } + + build(":wrapper") +} + +private fun TestProject.xcodebuild(cmd: List, workingDir: Path) { + val xcodebuildResult = runProcess( + cmd = cmd, + environmentVariables = environmentVariables.environmentalVariables, + workingDir = workingDir.toFile(), + ) + assertProcessRunResult(xcodebuildResult) { + assertEquals(0, exitCode, "Exit code mismatch for `xcodebuild`.") + } +} + +private fun TestProject.overrideMavenLocalIfNeeded() { + val mavenLocalOverride = System.getProperty("maven.repo.local") ?: return + + // Manually adding custom local repo, because the system property is lost when Gradle is invoked through Xcode build phase + projectPath.toFile().walkTopDown() + .filter { it.isFile && it.name in buildFileNames } + .forEach { file -> + file.modify { it.replace("mavenLocal()", "maven { setUrl(\"$mavenLocalOverride\") }") } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/build.gradle.kts new file mode 100644 index 00000000000..01a325f1efd --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/build.gradle.kts @@ -0,0 +1,3 @@ +plugins { + kotlin("multiplatform").apply(false) +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.pbxproj b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..add3e3b3555 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.pbxproj @@ -0,0 +1,384 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; }; + 7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 7555FFB4242A642300829871 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; + 7555FF7B242A565900829871 /* iosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7555FF78242A565900829871 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 058557D7273AAEEB004C7B11 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 7555FF72242A565900829871 = { + isa = PBXGroup; + children = ( + 7555FF7D242A565900829871 /* iosApp */, + 7555FF7C242A565900829871 /* Products */, + 7555FFB0242A642200829871 /* Frameworks */, + ); + sourceTree = ""; + }; + 7555FF7C242A565900829871 /* Products */ = { + isa = PBXGroup; + children = ( + 7555FF7B242A565900829871 /* iosApp.app */, + ); + name = Products; + sourceTree = ""; + }; + 7555FF7D242A565900829871 /* iosApp */ = { + isa = PBXGroup; + children = ( + 058557BA273AAA24004C7B11 /* Assets.xcassets */, + 7555FF82242A565900829871 /* ContentView.swift */, + 7555FF8C242A565B00829871 /* Info.plist */, + 2152FB032600AC8F00CF470E /* iOSApp.swift */, + 058557D7273AAEEB004C7B11 /* Preview Content */, + ); + path = iosApp; + sourceTree = ""; + }; + 7555FFB0242A642200829871 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7555FF7A242A565900829871 /* iosApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; + buildPhases = ( + C2F46A292B17E8C4006F3388 /* ShellScript */, + 7555FF77242A565900829871 /* Sources */, + 7555FF78242A565900829871 /* Frameworks */, + 7555FF79242A565900829871 /* Resources */, + 7555FFB4242A642300829871 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iosApp; + packageProductDependencies = ( + ); + productName = iosApp; + productReference = 7555FF7B242A565900829871 /* iosApp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7555FF73242A565900829871 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = orgName; + TargetAttributes = { + 7555FF7A242A565900829871 = { + CreatedOnToolsVersion = 11.3.1; + }; + }; + }; + buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 7555FF72242A565900829871; + packageReferences = ( + ); + productRefGroup = 7555FF7C242A565900829871 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7555FF7A242A565900829871 /* iosApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7555FF79242A565900829871 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */, + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + C2F46A292B17E8C4006F3388 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cd \"$SRCROOT/..\"\n./gradlew :shared:embedAndSignAppleFrameworkForXcode\n\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7555FF77242A565900829871 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */, + 7555FF83242A565900829871 /* ContentView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 7555FFA3242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 7555FFA4242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7555FFA6242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = iosApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 7555FFA7242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = iosApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA3242A565B00829871 /* Debug */, + 7555FFA4242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA6242A565B00829871 /* Debug */, + 7555FFA7242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 7555FF73242A565900829871 /* Project object */; +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000000..ee7e3ca03f8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000000..fb88a396bf3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/Contents.json new file mode 100644 index 00000000000..4aa7c5350bf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/ContentView.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/ContentView.swift new file mode 100644 index 00000000000..e2474ebef2f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/ContentView.swift @@ -0,0 +1,16 @@ +import SwiftUI +import shared + +struct ContentView: View { + let greet = Greeting().greet() + + var body: some View { + Text(greet) + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Info.plist b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Info.plist new file mode 100644 index 00000000000..8044709cfa7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Info.plist @@ -0,0 +1,48 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UILaunchScreen + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000000..4aa7c5350bf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/iOSApp.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/iOSApp.swift new file mode 100644 index 00000000000..0648e8602f2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppBuildPhase/iosApp/iOSApp.swift @@ -0,0 +1,10 @@ +import SwiftUI + +@main +struct iOSApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.pbxproj b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..5bb6b18f0c1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.pbxproj @@ -0,0 +1,362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; }; + 7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 7555FFB4242A642300829871 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; + 7555FF7B242A565900829871 /* iosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7555FF78242A565900829871 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 058557D7273AAEEB004C7B11 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 7555FF72242A565900829871 = { + isa = PBXGroup; + children = ( + 7555FF7D242A565900829871 /* iosApp */, + 7555FF7C242A565900829871 /* Products */, + 7555FFB0242A642200829871 /* Frameworks */, + ); + sourceTree = ""; + }; + 7555FF7C242A565900829871 /* Products */ = { + isa = PBXGroup; + children = ( + 7555FF7B242A565900829871 /* iosApp.app */, + ); + name = Products; + sourceTree = ""; + }; + 7555FF7D242A565900829871 /* iosApp */ = { + isa = PBXGroup; + children = ( + 058557BA273AAA24004C7B11 /* Assets.xcassets */, + 7555FF82242A565900829871 /* ContentView.swift */, + 7555FF8C242A565B00829871 /* Info.plist */, + 2152FB032600AC8F00CF470E /* iOSApp.swift */, + 058557D7273AAEEB004C7B11 /* Preview Content */, + ); + path = iosApp; + sourceTree = ""; + }; + 7555FFB0242A642200829871 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7555FF7A242A565900829871 /* iosApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; + buildPhases = ( + 7555FF77242A565900829871 /* Sources */, + 7555FF78242A565900829871 /* Frameworks */, + 7555FF79242A565900829871 /* Resources */, + 7555FFB4242A642300829871 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iosApp; + packageProductDependencies = ( + ); + productName = iosApp; + productReference = 7555FF7B242A565900829871 /* iosApp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7555FF73242A565900829871 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = orgName; + TargetAttributes = { + 7555FF7A242A565900829871 = { + CreatedOnToolsVersion = 11.3.1; + }; + }; + }; + buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 7555FF72242A565900829871; + packageReferences = ( + ); + productRefGroup = 7555FF7C242A565900829871 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7555FF7A242A565900829871 /* iosApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7555FF79242A565900829871 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */, + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7555FF77242A565900829871 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */, + 7555FF83242A565900829871 /* ContentView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 7555FFA3242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 7555FFA4242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7555FFA6242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = iosApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 7555FFA7242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = iosApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA3242A565B00829871 /* Debug */, + 7555FFA4242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA6242A565B00829871 /* Debug */, + 7555FFA7242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 7555FF73242A565900829871 /* Project object */; +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme new file mode 100644 index 00000000000..e79f3d9d577 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000000..ee7e3ca03f8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000000..fb88a396bf3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/Contents.json new file mode 100644 index 00000000000..4aa7c5350bf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/ContentView.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/ContentView.swift new file mode 100644 index 00000000000..e2474ebef2f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/ContentView.swift @@ -0,0 +1,16 @@ +import SwiftUI +import shared + +struct ContentView: View { + let greet = Greeting().greet() + + var body: some View { + Text(greet) + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Info.plist b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Info.plist new file mode 100644 index 00000000000..8044709cfa7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Info.plist @@ -0,0 +1,48 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UILaunchScreen + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000000..4aa7c5350bf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/iOSApp.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/iOSApp.swift new file mode 100644 index 00000000000..0648e8602f2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreAction/iosApp/iOSApp.swift @@ -0,0 +1,10 @@ +import SwiftUI + +@main +struct iOSApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/SpmLocalPackage/Package.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/SpmLocalPackage/Package.swift new file mode 100644 index 00000000000..35f70a0725d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/SpmLocalPackage/Package.swift @@ -0,0 +1,16 @@ +// swift-tools-version: 5.9 + +import PackageDescription + +let package = Package( + name: "SpmLocalPackage", + products: [ + .library( + name: "SpmLocalPackageLibrary", + targets: ["SpmLocalPackage"] + ) + ], + targets: [ + .target(name: "SpmLocalPackage") + ] +) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/SpmLocalPackage/Sources/SpmLocalPackage/Greeting.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/SpmLocalPackage/Sources/SpmLocalPackage/Greeting.swift new file mode 100644 index 00000000000..490c86e0d14 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/SpmLocalPackage/Sources/SpmLocalPackage/Greeting.swift @@ -0,0 +1,5 @@ +import shared + +public func greetingsFromSpmLocalPackage() -> String { + return Greeting().greet() +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.pbxproj b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..f7560bcfcfd --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.pbxproj @@ -0,0 +1,381 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 60; + objects = { + +/* Begin PBXBuildFile section */ + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; }; + 7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; }; + C2189E192B17E3B50015F5E7 /* SpmLocalPackageLibrary in Frameworks */ = {isa = PBXBuildFile; productRef = C2189E182B17E3B50015F5E7 /* SpmLocalPackageLibrary */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 7555FFB4242A642300829871 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; + 7555FF7B242A565900829871 /* iosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7555FF78242A565900829871 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C2189E192B17E3B50015F5E7 /* SpmLocalPackageLibrary in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 058557D7273AAEEB004C7B11 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 7555FF72242A565900829871 = { + isa = PBXGroup; + children = ( + 7555FF7D242A565900829871 /* iosApp */, + 7555FF7C242A565900829871 /* Products */, + 7555FFB0242A642200829871 /* Frameworks */, + ); + sourceTree = ""; + }; + 7555FF7C242A565900829871 /* Products */ = { + isa = PBXGroup; + children = ( + 7555FF7B242A565900829871 /* iosApp.app */, + ); + name = Products; + sourceTree = ""; + }; + 7555FF7D242A565900829871 /* iosApp */ = { + isa = PBXGroup; + children = ( + 058557BA273AAA24004C7B11 /* Assets.xcassets */, + 7555FF82242A565900829871 /* ContentView.swift */, + 7555FF8C242A565B00829871 /* Info.plist */, + 2152FB032600AC8F00CF470E /* iOSApp.swift */, + 058557D7273AAEEB004C7B11 /* Preview Content */, + ); + path = iosApp; + sourceTree = ""; + }; + 7555FFB0242A642200829871 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7555FF7A242A565900829871 /* iosApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; + buildPhases = ( + 7555FF77242A565900829871 /* Sources */, + 7555FF78242A565900829871 /* Frameworks */, + 7555FF79242A565900829871 /* Resources */, + 7555FFB4242A642300829871 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iosApp; + packageProductDependencies = ( + C27570B62B17B54C00EFD832 /* SpmLocalPackageLibrary */, + C28638702B17B71900F8849B /* SpmLocalPackageLibrary */, + C28638732B17B7FE00F8849B /* SpmLocalPackageLibrary */, + C2189E182B17E3B50015F5E7 /* SpmLocalPackageLibrary */, + ); + productName = iosApp; + productReference = 7555FF7B242A565900829871 /* iosApp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7555FF73242A565900829871 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = orgName; + TargetAttributes = { + 7555FF7A242A565900829871 = { + CreatedOnToolsVersion = 11.3.1; + }; + }; + }; + buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 7555FF72242A565900829871; + packageReferences = ( + C2189E172B17E3B50015F5E7 /* XCLocalSwiftPackageReference "SpmLocalPackage" */, + ); + productRefGroup = 7555FF7C242A565900829871 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7555FF7A242A565900829871 /* iosApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7555FF79242A565900829871 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */, + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7555FF77242A565900829871 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */, + 7555FF83242A565900829871 /* ContentView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 7555FFA3242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 7555FFA4242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7555FFA6242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = iosApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 7555FFA7242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = iosApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = "$(inherited)"; + PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA3242A565B00829871 /* Debug */, + 7555FFA4242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA6242A565B00829871 /* Debug */, + 7555FFA7242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + C2189E172B17E3B50015F5E7 /* XCLocalSwiftPackageReference "SpmLocalPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = SpmLocalPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + C2189E182B17E3B50015F5E7 /* SpmLocalPackageLibrary */ = { + isa = XCSwiftPackageProductDependency; + productName = SpmLocalPackageLibrary; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 7555FF73242A565900829871 /* Project object */; +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/xcuserdata/Artem.Daugel-Dauge.xcuserdatad/UserInterfaceState.xcuserstate b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp.xcodeproj/project.xcworkspace/xcuserdata/Artem.Daugel-Dauge.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..76d6c8a0079d036106fcc0b297bd54ca5e43e9da GIT binary patch literal 21771 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000000..ee7e3ca03f8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000000..fb88a396bf3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/Contents.json new file mode 100644 index 00000000000..4aa7c5350bf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/ContentView.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/ContentView.swift new file mode 100644 index 00000000000..9f040ef8fd3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/ContentView.swift @@ -0,0 +1,17 @@ +import SwiftUI +import shared +import SpmLocalPackage + +struct ContentView: View { + let greet = Greeting().greet() + "\n" + greetingsFromSpmLocalPackage() + + var body: some View { + Text(greet) + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Info.plist b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Info.plist new file mode 100644 index 00000000000..8044709cfa7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Info.plist @@ -0,0 +1,48 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UILaunchScreen + + + \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000000..4aa7c5350bf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/iOSApp.swift b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/iOSApp.swift new file mode 100644 index 00000000000..0648e8602f2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/iosAppSchemePreActionSpm/iosApp/iOSApp.swift @@ -0,0 +1,10 @@ +import SwiftUI + +@main +struct iOSApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/settings.gradle.kts new file mode 100644 index 00000000000..d34ba7b5723 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/settings.gradle.kts @@ -0,0 +1 @@ +include(":shared") \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/build.gradle.kts new file mode 100644 index 00000000000..b23ef3873ef --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/build.gradle.kts @@ -0,0 +1,22 @@ +plugins { + kotlin("multiplatform") +} + +kotlin { + jvm() + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64() + ).forEach { + it.binaries.framework { + baseName = "shared" + } + } +} + +repositories { + mavenLocal() + mavenCentral() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/commonMain/kotlin/com/example/Greeting.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/commonMain/kotlin/com/example/Greeting.kt new file mode 100644 index 00000000000..ced089b4784 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/commonMain/kotlin/com/example/Greeting.kt @@ -0,0 +1,9 @@ +package com.example + +class Greeting { + private val platform: Platform = getPlatform() + + fun greet(): String { + return "Hello, ${platform.name}!" + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/commonMain/kotlin/com/example/Platform.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/commonMain/kotlin/com/example/Platform.kt new file mode 100644 index 00000000000..62edc22f640 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/commonMain/kotlin/com/example/Platform.kt @@ -0,0 +1,7 @@ +package com.example + +interface Platform { + val name: String +} + +expect fun getPlatform(): Platform \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/iosMain/kotlin/com/example/Platform.ios.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/iosMain/kotlin/com/example/Platform.ios.kt new file mode 100644 index 00000000000..db8e76254f9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/iosMain/kotlin/com/example/Platform.ios.kt @@ -0,0 +1,9 @@ +package com.example + +import platform.UIKit.UIDevice + +class IOSPlatform: Platform { + override val name: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion +} + +actual fun getPlatform(): Platform = IOSPlatform() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/jvmMain/kotlin/com/example/Platform.jvm.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/jvmMain/kotlin/com/example/Platform.jvm.kt new file mode 100644 index 00000000000..04f3862e912 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/xcodeDirectIntegration/shared/src/jvmMain/kotlin/com/example/Platform.jvm.kt @@ -0,0 +1,7 @@ +package com.example + +class JvmPlatform : Platform { + override val name: String = "JVM ${ System.getProperty("java.version")}" +} + +actual fun getPlatform(): Platform = JvmPlatform() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/PodBuildTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/PodBuildTask.kt index 08995c0c1b7..eb60953b2ec 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/PodBuildTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/tasks/PodBuildTask.kt @@ -85,6 +85,9 @@ abstract class PodBuildTask @Inject constructor( "-configuration", podBuildSettings.configuration ) - runCommand(podXcodeBuildCommand, logger) { directory(podsXcodeProjDir.asFile.parentFile) } + runCommand(podXcodeBuildCommand, logger) { + directory(podsXcodeProjDir.asFile.parentFile) + environment() // workaround for https://github.com/gradle/gradle/issues/27346 + } } }