├── gradle
├── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
└── libs.versions.toml
├── severalTargetsXcodeProject
├── TVosApp
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── App Icon & Top Shelf Image.brandassets
│ │ │ ├── App Icon.imagestack
│ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── Middle.imagestacklayer
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ ├── App Icon - App Store.imagestack
│ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ ├── Middle.imagestacklayer
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ ├── Top Shelf Image.imageset
│ │ │ │ └── Contents.json
│ │ │ ├── Top Shelf Image Wide.imageset
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ └── AccentColor.colorset
│ │ │ └── Contents.json
│ ├── TVosApp.swift
│ └── ContentView.swift
├── iosApp
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── IOSApp.swift
│ └── ContentView.swift
├── WatchosApp Watch App
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── WatchosApp.swift
│ └── ContentView.swift
├── MacosCLI
│ └── main.swift
├── severalTargetsXcodeProject.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ ├── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcuserdata
│ │ │ └── yaroslav.chernyshev.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ ├── xcuserdata
│ │ └── yaroslav.chernyshev.xcuserdatad
│ │ │ └── xcschemes
│ │ │ └── xcschememanagement.plist
│ └── project.pbxproj
├── severalTargetsXcodeProject.xcworkspace
│ └── contents.xcworkspacedata
├── Podfile.lock
└── Podfile
├── gradle.properties
├── kotlin-library
├── src
│ ├── commonMain
│ │ └── kotlin
│ │ │ └── org
│ │ │ └── jetbrains
│ │ │ └── kotlin
│ │ │ └── sample
│ │ │ └── native
│ │ │ ├── Platform.kt
│ │ │ └── Greeting.kt
│ ├── iosMain
│ │ └── kotlin
│ │ │ └── org
│ │ │ └── jetbrains
│ │ │ └── kotlin
│ │ │ └── sample
│ │ │ └── native
│ │ │ └── Platform.ios.kt
│ ├── macosMain
│ │ └── kotlin
│ │ │ └── org
│ │ │ └── jetbrains
│ │ │ └── kotlin
│ │ │ └── sample
│ │ │ └── native
│ │ │ └── Platform.macos.kt
│ ├── tvosMain
│ │ └── kotlin
│ │ │ └── org
│ │ │ └── jetbrains
│ │ │ └── kotlin
│ │ │ └── sample
│ │ │ └── native
│ │ │ └── Platform.tvos.kt
│ └── watchosMain
│ │ └── kotlin
│ │ └── org
│ │ └── jetbrains
│ │ └── kotlin
│ │ └── sample
│ │ └── native
│ │ └── Platform.watchos.kt
├── build.gradle.kts
└── kotlin_library.podspec
├── .gitignore
├── settings.gradle.kts
├── README.md
├── gradlew.bat
├── gradlew
└── LICENSE
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Kotlin/kmp-with-cocoapods-multitarget-xcode-sample/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/iosApp/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/WatchosApp Watch App/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | #Gradle
2 | org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\="-Xmx2048M"
3 |
4 | #Kotlin
5 | kotlin.code.style=official
6 |
7 | #MPP
8 | kotlin.mpp.enableCInteropCommonization=true
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/iosApp/IOSApp.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | @main
4 | struct IOSApp: App {
5 | var body: some Scene {
6 | WindowGroup {
7 | ContentView()
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/TVosApp.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | @main
4 | struct TVosApp: App {
5 | var body: some Scene {
6 | WindowGroup {
7 | ContentView()
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/MacosCLI/main.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 | import KotlinLibrary
3 |
4 | print("Hello, World!")
5 |
6 | let greeting = Greeting()
7 | print(greeting.greet())
8 |
9 | greeting.callBar()
10 | greeting.callBazz()
11 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/WatchosApp Watch App/WatchosApp.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | @main
4 | struct WatchosApp: App {
5 | var body: some Scene {
6 | WindowGroup {
7 | ContentView()
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/gradle/libs.versions.toml:
--------------------------------------------------------------------------------
1 | [versions]
2 | kotlin = "2.1.20"
3 |
4 | [plugins]
5 | kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
6 | kotlinCocoapods = { id = "org.jetbrains.kotlin.native.cocoapods", version.ref = "kotlin" }
7 |
8 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/WatchosApp Watch App/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/kotlin-library/src/commonMain/kotlin/org/jetbrains/kotlin/sample/native/Platform.kt:
--------------------------------------------------------------------------------
1 | package org.jetbrains.kotlin.sample.native
2 |
3 | interface Platform {
4 | val name: String
5 |
6 | fun bar()
7 | fun bazz()
8 | }
9 |
10 | expect fun getPlatform(): Platform
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/severalTargetsXcodeProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/WatchosApp Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "platform" : "watchos",
6 | "size" : "1024x1024"
7 | }
8 | ],
9 | "info" : {
10 | "author" : "xcode",
11 | "version" : 1
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/kotlin-library/src/commonMain/kotlin/org/jetbrains/kotlin/sample/native/Greeting.kt:
--------------------------------------------------------------------------------
1 | package org.jetbrains.kotlin.sample.native
2 |
3 | @Suppress("UNUSED")
4 | class Greeting {
5 | private val platform by lazy { getPlatform() }
6 |
7 | fun greet() = "Hello, ${platform.name}!"
8 | fun callBar() = platform.bar()
9 | fun callBazz() = platform.bazz()
10 | }
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/severalTargetsXcodeProject.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/severalTargetsXcodeProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/severalTargetsXcodeProject.xcodeproj/project.xcworkspace/xcuserdata/yaroslav.chernyshev.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Kotlin/kmp-with-cocoapods-multitarget-xcode-sample/HEAD/severalTargetsXcodeProject/severalTargetsXcodeProject.xcodeproj/project.xcworkspace/xcuserdata/yaroslav.chernyshev.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .kotlin
3 | .gradle
4 | **/build/
5 | xcuserdata
6 | !src/**/build/
7 | local.properties
8 | .idea
9 | .DS_Store
10 | captures
11 | .externalNativeBuild
12 | .cxx
13 | *.xcodeproj/*
14 | !*.xcodeproj/project.pbxproj
15 | !*.xcodeproj/xcshareddata/
16 | !*.xcodeproj/project.xcworkspace/
17 | !*.xcworkspace/contents.xcworkspacedata
18 | **/xcshareddata/WorkspaceSettings.xcsettings
19 | Pods/
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - kotlin_library (1.0)
3 |
4 | DEPENDENCIES:
5 | - kotlin_library (from `../kotlin-library`)
6 |
7 | EXTERNAL SOURCES:
8 | kotlin_library:
9 | :path: "../kotlin-library"
10 |
11 | SPEC CHECKSUMS:
12 | kotlin_library: e819c13b5f8a42886023d2dc17f8709d08f8dc2a
13 |
14 | PODFILE CHECKSUM: 98ce9362d35a6acdc4d7012113b571617446eddb
15 |
16 | COCOAPODS: 1.16.2
17 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "layers" : [
7 | {
8 | "filename" : "Front.imagestacklayer"
9 | },
10 | {
11 | "filename" : "Middle.imagestacklayer"
12 | },
13 | {
14 | "filename" : "Back.imagestacklayer"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | rootProject.name = "multitarget-xcode-with-kotlin-cocoapods-sample"
2 | enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
3 |
4 | pluginManagement {
5 | repositories {
6 | google()
7 | gradlePluginPortal()
8 | mavenCentral()
9 | }
10 | }
11 |
12 | dependencyResolutionManagement {
13 | repositories {
14 | google()
15 | mavenCentral()
16 | }
17 | }
18 |
19 | include(":kotlin-library")
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "layers" : [
7 | {
8 | "filename" : "Front.imagestacklayer"
9 | },
10 | {
11 | "filename" : "Middle.imagestacklayer"
12 | },
13 | {
14 | "filename" : "Back.imagestacklayer"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/kotlin-library/src/iosMain/kotlin/org/jetbrains/kotlin/sample/native/Platform.ios.kt:
--------------------------------------------------------------------------------
1 | package org.jetbrains.kotlin.sample.native
2 |
3 | import platform.UIKit.UIDevice
4 |
5 | class IOSPlatform: Platform {
6 | override val name: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
7 |
8 | override fun bar() {
9 | println("iosBar")
10 | }
11 |
12 | override fun bazz() {
13 | println("iosBazz")
14 | }
15 | }
16 |
17 | actual fun getPlatform(): Platform = IOSPlatform()
--------------------------------------------------------------------------------
/kotlin-library/src/macosMain/kotlin/org/jetbrains/kotlin/sample/native/Platform.macos.kt:
--------------------------------------------------------------------------------
1 | package org.jetbrains.kotlin.sample.native
2 |
3 | import platform.Foundation.NSProcessInfo
4 |
5 | class IOSPlatform: Platform {
6 | override val name: String = "macOS " + NSProcessInfo.processInfo.operatingSystemVersionString
7 |
8 | override fun bar() {
9 | println("macosBar")
10 | }
11 |
12 | override fun bazz() {
13 | println("macosBazz")
14 | }
15 | }
16 |
17 | actual fun getPlatform(): Platform = IOSPlatform()
--------------------------------------------------------------------------------
/kotlin-library/src/tvosMain/kotlin/org/jetbrains/kotlin/sample/native/Platform.tvos.kt:
--------------------------------------------------------------------------------
1 | package org.jetbrains.kotlin.sample.native
2 |
3 | import platform.UIKit.UIDevice
4 |
5 | class IOSPlatform: Platform {
6 | override val name: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
7 |
8 | override fun bar() {
9 | println("tvosBar")
10 | }
11 |
12 | override fun bazz() {
13 | println("tvosBazz")
14 | }
15 | }
16 |
17 | actual fun getPlatform(): Platform = IOSPlatform()
--------------------------------------------------------------------------------
/kotlin-library/src/watchosMain/kotlin/org/jetbrains/kotlin/sample/native/Platform.watchos.kt:
--------------------------------------------------------------------------------
1 | package org.jetbrains.kotlin.sample.native
2 |
3 | import platform.WatchKit.WKInterfaceDevice
4 |
5 | class IOSPlatform: Platform {
6 | override val name: String = "watchOS " + WKInterfaceDevice.currentDevice().systemVersion
7 |
8 | override fun bar() {
9 | println("watchosBar")
10 | }
11 |
12 | override fun bazz() {
13 | println("watchosBazz")
14 | }
15 | }
16 |
17 | actual fun getPlatform(): Platform = IOSPlatform()
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
2 |
3 | # multitarget-xcode-with-kotlin-cocoapods-sample
4 | This project is intended to demonstrate how to connect Kotlin library to Xcode project with several targets: iOS, macOS, tvOS, watchOS
5 |
6 | To run the various types of targets, make sure the .xcodeproj and .xcworkspace files are closed in Xcode, then open the .xcworkspace file, select the scheme
7 | (making sure there is a corresponding simulator/device) and press the run button in Xcode.
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/iosApp/ContentView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 |
3 | import SwiftUI
4 | import KotlinLibrary
5 |
6 | struct ContentView: View {
7 | let greeting = Greeting()
8 |
9 | var body: some View {
10 | VStack(spacing: 24) {
11 | Text(greeting.greet())
12 | .font(.title)
13 | Button("Call Bar") {
14 | greeting.callBar()
15 | }
16 | Button("Call Bazz") {
17 | greeting.callBazz()
18 | }
19 | }
20 | .padding()
21 | }
22 | }
23 |
24 | #Preview {
25 | ContentView()
26 | }
27 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/WatchosApp Watch App/ContentView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import KotlinLibrary
3 |
4 | struct ContentView: View {
5 | let greeting = Greeting()
6 |
7 | var body: some View {
8 | VStack(spacing: 12) {
9 | Text(greeting.greet())
10 | .font(.headline)
11 | .multilineTextAlignment(.center)
12 |
13 | Button("Call Bar") {
14 | greeting.callBar() // Logs to console
15 | }
16 |
17 | Button("Call Bazz") {
18 | greeting.callBazz() // Logs to console
19 | }
20 | }
21 | .padding()
22 | }
23 | }
24 |
25 | #Preview {
26 | ContentView()
27 | }
28 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "platform" : "ios",
6 | "size" : "1024x1024"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "idiom" : "universal",
16 | "platform" : "ios",
17 | "size" : "1024x1024"
18 | },
19 | {
20 | "appearances" : [
21 | {
22 | "appearance" : "luminosity",
23 | "value" : "tinted"
24 | }
25 | ],
26 | "idiom" : "universal",
27 | "platform" : "ios",
28 | "size" : "1024x1024"
29 | }
30 | ],
31 | "info" : {
32 | "author" : "xcode",
33 | "version" : 1
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/ContentView.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import KotlinLibrary
3 |
4 | struct ContentView: View {
5 | let greeting = Greeting()
6 |
7 | var body: some View {
8 | VStack(spacing: 40) {
9 | Text(greeting.greet())
10 | .font(.title)
11 | .multilineTextAlignment(.center)
12 |
13 | HStack(spacing: 40) {
14 | Button("Call Bar") {
15 | greeting.callBar() // Logs to console
16 | }
17 | .buttonStyle(.borderedProminent)
18 |
19 | Button("Call Bazz") {
20 | greeting.callBazz() // Logs to console
21 | }
22 | .buttonStyle(.borderedProminent)
23 | }
24 | }
25 | .padding()
26 | }
27 | }
28 |
29 | #Preview {
30 | ContentView()
31 | }
32 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/TVosApp/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "assets" : [
3 | {
4 | "filename" : "App Icon - App Store.imagestack",
5 | "idiom" : "tv",
6 | "role" : "primary-app-icon",
7 | "size" : "1280x768"
8 | },
9 | {
10 | "filename" : "App Icon.imagestack",
11 | "idiom" : "tv",
12 | "role" : "primary-app-icon",
13 | "size" : "400x240"
14 | },
15 | {
16 | "filename" : "Top Shelf Image Wide.imageset",
17 | "idiom" : "tv",
18 | "role" : "top-shelf-image-wide",
19 | "size" : "2320x720"
20 | },
21 | {
22 | "filename" : "Top Shelf Image.imageset",
23 | "idiom" : "tv",
24 | "role" : "top-shelf-image",
25 | "size" : "1920x720"
26 | }
27 | ],
28 | "info" : {
29 | "author" : "xcode",
30 | "version" : 1
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/kotlin-library/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | alias(libs.plugins.kotlinMultiplatform)
3 | alias(libs.plugins.kotlinCocoapods)
4 | }
5 |
6 | group = "org.jetbrains.kotlin.sample.native"
7 | version = "1.0"
8 |
9 | kotlin {
10 | iosArm64()
11 | iosSimulatorArm64()
12 | macosArm64()
13 | tvosArm64()
14 | tvosSimulatorArm64()
15 | watchosSimulatorArm64()
16 | watchosDeviceArm64()
17 |
18 | cocoapods {
19 | summary = "Kotlin CocoaPods library"
20 | homepage = "https://github.com/Kotlin/multitarget-xcode-with-kotlin-cocoapods-sample"
21 |
22 | podfile = project.file("../severalTargetsXcodeProject/Podfile")
23 |
24 | ios.deploymentTarget = "16.6"
25 | osx.deploymentTarget = "13.5"
26 | tvos.deploymentTarget = "16.6"
27 | watchos.deploymentTarget = "9.6"
28 |
29 | framework {
30 | baseName = "KotlinLibrary"
31 | isStatic = true
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/severalTargetsXcodeProject.xcodeproj/xcuserdata/yaroslav.chernyshev.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | MacosCLI.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 10
11 |
12 | TVosApp.xcscheme_^#shared#^_
13 |
14 | orderHint
15 | 11
16 |
17 | WatchosApp WatchKit App (Notification).xcscheme_^#shared#^_
18 |
19 | orderHint
20 | 14
21 |
22 | WatchosApp WatchKit App.xcscheme_^#shared#^_
23 |
24 | orderHint
25 | 13
26 |
27 | iosApp.xcscheme_^#shared#^_
28 |
29 | orderHint
30 | 12
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'iosApp' do
5 | # Comment the next line if you don't want to use dynamic frameworks
6 | use_frameworks!
7 | platform :ios, '16.6'
8 | # Pods for iosApp
9 | pod 'kotlin_library', :path => '../kotlin-library'
10 | end
11 |
12 | target 'MacosCLI' do
13 | # Comment the next line if you don't want to use dynamic frameworks
14 | use_frameworks!
15 | platform :osx, '13.5'
16 |
17 | # Pods for MacosCLI
18 | pod 'kotlin_library', :path => '../kotlin-library'
19 | end
20 |
21 | target 'TVosApp' do
22 | # Comment the next line if you don't want to use dynamic frameworks
23 | use_frameworks!
24 | platform :tvos, '16.6'
25 |
26 | # Pods for TVosApp
27 | pod 'kotlin_library', :path => '../kotlin-library'
28 | end
29 |
30 | target 'WatchosApp' do
31 | # Comment the next line if you don't want to use dynamic frameworks
32 | use_frameworks!
33 | platform :watchos, '9.6'
34 |
35 | # Pods for WatchosApp
36 | pod 'kotlin_library', :path => '../kotlin-library'
37 | end
38 |
39 | target 'WatchosApp Watch App' do
40 | # Comment the next line if you don't want to use dynamic frameworks
41 | use_frameworks!
42 | platform :watchos, '9.6'
43 |
44 | # Pods for WatchosApp WatchKit App
45 | pod 'kotlin_library', :path => '../kotlin-library'
46 | end
47 |
--------------------------------------------------------------------------------
/kotlin-library/kotlin_library.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |spec|
2 | spec.name = 'kotlin_library'
3 | spec.version = '1.0'
4 | spec.homepage = 'https://github.com/Kotlin/multitarget-xcode-with-kotlin-cocoapods-sample'
5 | spec.source = { :http=> ''}
6 | spec.authors = ''
7 | spec.license = ''
8 | spec.summary = 'Kotlin CocoaPods library'
9 | spec.vendored_frameworks = 'build/cocoapods/framework/KotlinLibrary.framework'
10 | spec.libraries = 'c++'
11 | spec.ios.deployment_target = '16.6'
12 | spec.osx.deployment_target = '13.5'
13 | spec.tvos.deployment_target = '16.6'
14 | spec.watchos.deployment_target = '9.6'
15 |
16 |
17 | if !Dir.exist?('build/cocoapods/framework/KotlinLibrary.framework') || Dir.empty?('build/cocoapods/framework/KotlinLibrary.framework')
18 | raise "
19 |
20 | Kotlin framework 'KotlinLibrary' doesn't exist yet, so a proper Xcode project can't be generated.
21 | 'pod install' should be executed after running ':generateDummyFramework' Gradle task:
22 |
23 | ./gradlew :kotlin-library:generateDummyFramework
24 |
25 | Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)"
26 | end
27 |
28 | spec.xcconfig = {
29 | 'ENABLE_USER_SCRIPT_SANDBOXING' => 'NO',
30 | }
31 |
32 | spec.pod_target_xcconfig = {
33 | 'KOTLIN_PROJECT_PATH' => ':kotlin-library',
34 | 'PRODUCT_MODULE_NAME' => 'KotlinLibrary',
35 | }
36 |
37 | spec.script_phases = [
38 | {
39 | :name => 'Build kotlin_library',
40 | :execution_position => :before_compile,
41 | :shell_path => '/bin/sh',
42 | :script => <<-SCRIPT
43 | if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
44 | echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
45 | exit 0
46 | fi
47 | set -ev
48 | REPO_ROOT="$PODS_TARGET_SRCROOT"
49 | "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
50 | -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
51 | -Pkotlin.native.cocoapods.archs="$ARCHS" \
52 | -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
53 | SCRIPT
54 | }
55 | ]
56 |
57 | end
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%"=="" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%"=="" set DIRNAME=.
29 | @rem This is normally unused
30 | set APP_BASE_NAME=%~n0
31 | set APP_HOME=%DIRNAME%
32 |
33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
35 |
36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
38 |
39 | @rem Find java.exe
40 | if defined JAVA_HOME goto findJavaFromJavaHome
41 |
42 | set JAVA_EXE=java.exe
43 | %JAVA_EXE% -version >NUL 2>&1
44 | if %ERRORLEVEL% equ 0 goto execute
45 |
46 | echo.
47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
48 | echo.
49 | echo Please set the JAVA_HOME variable in your environment to match the
50 | echo location of your Java installation.
51 |
52 | goto fail
53 |
54 | :findJavaFromJavaHome
55 | set JAVA_HOME=%JAVA_HOME:"=%
56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
57 |
58 | if exist "%JAVA_EXE%" goto execute
59 |
60 | echo.
61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
62 | echo.
63 | echo Please set the JAVA_HOME variable in your environment to match the
64 | echo location of your Java installation.
65 |
66 | goto fail
67 |
68 | :execute
69 | @rem Setup the command line
70 |
71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
72 |
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if %ERRORLEVEL% equ 0 goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | set EXIT_CODE=%ERRORLEVEL%
85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1
86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
87 | exit /b %EXIT_CODE%
88 |
89 | :mainEnd
90 | if "%OS%"=="Windows_NT" endlocal
91 |
92 | :omega
93 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # Copyright © 2015-2021 the original authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | #
21 | # Gradle start up script for POSIX generated by Gradle.
22 | #
23 | # Important for running:
24 | #
25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
26 | # noncompliant, but you have some other compliant shell such as ksh or
27 | # bash, then to run this script, type that shell name before the whole
28 | # command line, like:
29 | #
30 | # ksh Gradle
31 | #
32 | # Busybox and similar reduced shells will NOT work, because this script
33 | # requires all of these POSIX shell features:
34 | # * functions;
35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»;
37 | # * compound commands having a testable exit status, especially «case»;
38 | # * various built-in commands including «command», «set», and «ulimit».
39 | #
40 | # Important for patching:
41 | #
42 | # (2) This script targets any POSIX shell, so it avoids extensions provided
43 | # by Bash, Ksh, etc; in particular arrays are avoided.
44 | #
45 | # The "traditional" practice of packing multiple parameters into a
46 | # space-separated string is a well documented source of bugs and security
47 | # problems, so this is (mostly) avoided, by progressively accumulating
48 | # options in "$@", and eventually passing that to Java.
49 | #
50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
52 | # see the in-line comments for details.
53 | #
54 | # There are tweaks for specific operating systems such as AIX, CygWin,
55 | # Darwin, MinGW, and NonStop.
56 | #
57 | # (3) This script is generated from the Groovy template
58 | # https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
59 | # within the Gradle project.
60 | #
61 | # You can find Gradle at https://github.com/gradle/gradle/.
62 | #
63 | ##############################################################################
64 |
65 | # Attempt to set APP_HOME
66 |
67 | # Resolve links: $0 may be a link
68 | app_path=$0
69 |
70 | # Need this for daisy-chained symlinks.
71 | while
72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
73 | [ -h "$app_path" ]
74 | do
75 | ls=$( ls -ld "$app_path" )
76 | link=${ls#*' -> '}
77 | case $link in #(
78 | /*) app_path=$link ;; #(
79 | *) app_path=$APP_HOME$link ;;
80 | esac
81 | done
82 |
83 | # This is normally unused
84 | # shellcheck disable=SC2034
85 | APP_BASE_NAME=${0##*/}
86 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
87 | APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
88 |
89 | # Use the maximum available, or set MAX_FD != -1 to use that value.
90 | MAX_FD=maximum
91 |
92 | warn () {
93 | echo "$*"
94 | } >&2
95 |
96 | die () {
97 | echo
98 | echo "$*"
99 | echo
100 | exit 1
101 | } >&2
102 |
103 | # OS specific support (must be 'true' or 'false').
104 | cygwin=false
105 | msys=false
106 | darwin=false
107 | nonstop=false
108 | case "$( uname )" in #(
109 | CYGWIN* ) cygwin=true ;; #(
110 | Darwin* ) darwin=true ;; #(
111 | MSYS* | MINGW* ) msys=true ;; #(
112 | NONSTOP* ) nonstop=true ;;
113 | esac
114 |
115 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
116 |
117 |
118 | # Determine the Java command to use to start the JVM.
119 | if [ -n "$JAVA_HOME" ] ; then
120 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
121 | # IBM's JDK on AIX uses strange locations for the executables
122 | JAVACMD=$JAVA_HOME/jre/sh/java
123 | else
124 | JAVACMD=$JAVA_HOME/bin/java
125 | fi
126 | if [ ! -x "$JAVACMD" ] ; then
127 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
128 |
129 | Please set the JAVA_HOME variable in your environment to match the
130 | location of your Java installation."
131 | fi
132 | else
133 | JAVACMD=java
134 | if ! command -v java >/dev/null 2>&1
135 | then
136 | die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137 |
138 | Please set the JAVA_HOME variable in your environment to match the
139 | location of your Java installation."
140 | fi
141 | fi
142 |
143 | # Increase the maximum file descriptors if we can.
144 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
145 | case $MAX_FD in #(
146 | max*)
147 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
148 | # shellcheck disable=SC3045
149 | MAX_FD=$( ulimit -H -n ) ||
150 | warn "Could not query maximum file descriptor limit"
151 | esac
152 | case $MAX_FD in #(
153 | '' | soft) :;; #(
154 | *)
155 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
156 | # shellcheck disable=SC3045
157 | ulimit -n "$MAX_FD" ||
158 | warn "Could not set maximum file descriptor limit to $MAX_FD"
159 | esac
160 | fi
161 |
162 | # Collect all arguments for the java command, stacking in reverse order:
163 | # * args from the command line
164 | # * the main class name
165 | # * -classpath
166 | # * -D...appname settings
167 | # * --module-path (only if needed)
168 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
169 |
170 | # For Cygwin or MSYS, switch paths to Windows format before running java
171 | if "$cygwin" || "$msys" ; then
172 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
173 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
174 |
175 | JAVACMD=$( cygpath --unix "$JAVACMD" )
176 |
177 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
178 | for arg do
179 | if
180 | case $arg in #(
181 | -*) false ;; # don't mess with options #(
182 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
183 | [ -e "$t" ] ;; #(
184 | *) false ;;
185 | esac
186 | then
187 | arg=$( cygpath --path --ignore --mixed "$arg" )
188 | fi
189 | # Roll the args list around exactly as many times as the number of
190 | # args, so each arg winds up back in the position where it started, but
191 | # possibly modified.
192 | #
193 | # NB: a `for` loop captures its iteration list before it begins, so
194 | # changing the positional parameters here affects neither the number of
195 | # iterations, nor the values presented in `arg`.
196 | shift # remove old arg
197 | set -- "$@" "$arg" # push replacement arg
198 | done
199 | fi
200 |
201 |
202 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
203 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
204 |
205 | # Collect all arguments for the java command;
206 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
207 | # shell script including quotes and variable substitutions, so put them in
208 | # double quotes to make sure that they get re-expanded; and
209 | # * put everything else in single quotes, so that it's not re-expanded.
210 |
211 | set -- \
212 | "-Dorg.gradle.appname=$APP_BASE_NAME" \
213 | -classpath "$CLASSPATH" \
214 | org.gradle.wrapper.GradleWrapperMain \
215 | "$@"
216 |
217 | # Stop when "xargs" is not available.
218 | if ! command -v xargs >/dev/null 2>&1
219 | then
220 | die "xargs is not available"
221 | fi
222 |
223 | # Use "xargs" to parse quoted args.
224 | #
225 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed.
226 | #
227 | # In Bash we could simply go:
228 | #
229 | # readarray ARGS < <( xargs -n1 <<<"$var" ) &&
230 | # set -- "${ARGS[@]}" "$@"
231 | #
232 | # but POSIX shell has neither arrays nor command substitution, so instead we
233 | # post-process each arg (as a line of input to sed) to backslash-escape any
234 | # character that might be a shell metacharacter, then use eval to reverse
235 | # that process (while maintaining the separation between arguments), and wrap
236 | # the whole thing up as a single "set" statement.
237 | #
238 | # This will of course break if any of these variables contains a newline or
239 | # an unmatched quote.
240 | #
241 |
242 | eval "set -- $(
243 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
244 | xargs -n1 |
245 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
246 | tr '\n' ' '
247 | )" '"$@"'
248 |
249 | exec "$JAVACMD" "$@"
250 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/severalTargetsXcodeProject/severalTargetsXcodeProject.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 77;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 0EE3A876D8A5E07EA0D16414 /* Pods_WatchosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7FCF5023FD29D2ECA8D31FB /* Pods_WatchosApp.framework */; };
11 | 213EDA065B1198F52F24AB39 /* Pods_TVosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8EEB6E773C5ED94ED846DDED /* Pods_TVosApp.framework */; };
12 | 757B28B26327694CA1125A19 /* Pods_MacosCLI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2CE66568228293211DDF406 /* Pods_MacosCLI.framework */; };
13 | A1D2825D34101C92C788B891 /* Pods_iosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F707C3ABB4595B8D1306B070 /* Pods_iosApp.framework */; };
14 | BD0A4CAA2DC2704D00FC6E3D /* WatchosApp Watch App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = BD0A4CA92DC2704D00FC6E3D /* WatchosApp Watch App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
15 | F8228C1DF15CE0F199912FF7 /* Pods_WatchosApp_Watch_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A84C5F10BF4D718661C98AA8 /* Pods_WatchosApp_Watch_App.framework */; };
16 | /* End PBXBuildFile section */
17 |
18 | /* Begin PBXContainerItemProxy section */
19 | BD0A4CAB2DC2704D00FC6E3D /* PBXContainerItemProxy */ = {
20 | isa = PBXContainerItemProxy;
21 | containerPortal = CB1BD2A6249B4CDC00707679 /* Project object */;
22 | proxyType = 1;
23 | remoteGlobalIDString = BD0A4CA82DC2704D00FC6E3D;
24 | remoteInfo = "WatchosApp Watch App";
25 | };
26 | /* End PBXContainerItemProxy section */
27 |
28 | /* Begin PBXCopyFilesBuildPhase section */
29 | BD0A4CB72DC2704E00FC6E3D /* Embed Watch Content */ = {
30 | isa = PBXCopyFilesBuildPhase;
31 | buildActionMask = 2147483647;
32 | dstPath = "$(CONTENTS_FOLDER_PATH)/Watch";
33 | dstSubfolderSpec = 16;
34 | files = (
35 | BD0A4CAA2DC2704D00FC6E3D /* WatchosApp Watch App.app in Embed Watch Content */,
36 | );
37 | name = "Embed Watch Content";
38 | runOnlyForDeploymentPostprocessing = 0;
39 | };
40 | CB1BD2C7249B4D4C00707679 /* CopyFiles */ = {
41 | isa = PBXCopyFilesBuildPhase;
42 | buildActionMask = 2147483647;
43 | dstPath = /usr/share/man/man1/;
44 | dstSubfolderSpec = 0;
45 | files = (
46 | );
47 | runOnlyForDeploymentPostprocessing = 1;
48 | };
49 | /* End PBXCopyFilesBuildPhase section */
50 |
51 | /* Begin PBXFileReference section */
52 | 073C3209F20F4D280580C42F /* Pods-WatchosApp Watch App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchosApp Watch App.debug.xcconfig"; path = "Target Support Files/Pods-WatchosApp Watch App/Pods-WatchosApp Watch App.debug.xcconfig"; sourceTree = ""; };
53 | 1B4772FC76BA8F8C1AA5175B /* Pods-WatchosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchosApp.release.xcconfig"; path = "Target Support Files/Pods-WatchosApp/Pods-WatchosApp.release.xcconfig"; sourceTree = ""; };
54 | 1B599EDB55B2EA2D3AA853EB /* Pods-iosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.debug.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.debug.xcconfig"; sourceTree = ""; };
55 | 2DAED3B0E22BD6933C35FAF0 /* Pods-MacosCLI.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MacosCLI.debug.xcconfig"; path = "Target Support Files/Pods-MacosCLI/Pods-MacosCLI.debug.xcconfig"; sourceTree = ""; };
56 | 3A49883EBDD15089157637B4 /* Pods-MacosCLI.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MacosCLI.release.xcconfig"; path = "Target Support Files/Pods-MacosCLI/Pods-MacosCLI.release.xcconfig"; sourceTree = ""; };
57 | 5516925726421EE0CC88D672 /* Pods-TVosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVosApp.release.xcconfig"; path = "Target Support Files/Pods-TVosApp/Pods-TVosApp.release.xcconfig"; sourceTree = ""; };
58 | 8EEB6E773C5ED94ED846DDED /* Pods_TVosApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TVosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
59 | 9AE5EDB5D38387FE2D03A2C8 /* Pods-WatchosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchosApp.debug.xcconfig"; path = "Target Support Files/Pods-WatchosApp/Pods-WatchosApp.debug.xcconfig"; sourceTree = ""; };
60 | A7AE19F3B271A986FA758600 /* Pods-WatchosApp Watch App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchosApp Watch App.release.xcconfig"; path = "Target Support Files/Pods-WatchosApp Watch App/Pods-WatchosApp Watch App.release.xcconfig"; sourceTree = ""; };
61 | A7FCF5023FD29D2ECA8D31FB /* Pods_WatchosApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WatchosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
62 | A84C5F10BF4D718661C98AA8 /* Pods_WatchosApp_Watch_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WatchosApp_Watch_App.framework; sourceTree = BUILT_PRODUCTS_DIR; };
63 | B6B1FD987B3266508DC6F67C /* Pods-iosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.release.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.release.xcconfig"; sourceTree = ""; };
64 | BD0A4CA42DC2704D00FC6E3D /* WatchosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WatchosApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
65 | BD0A4CA92DC2704D00FC6E3D /* WatchosApp Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "WatchosApp Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; };
66 | CB1BD2B0249B4D2000707679 /* iosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
67 | CB1BD2C9249B4D4C00707679 /* MacosCLI */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = MacosCLI; sourceTree = BUILT_PRODUCTS_DIR; };
68 | CB1BD2D4249B4DDC00707679 /* TVosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TVosApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
69 | CF66472EB58A956851EF092B /* Pods-TVosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVosApp.debug.xcconfig"; path = "Target Support Files/Pods-TVosApp/Pods-TVosApp.debug.xcconfig"; sourceTree = ""; };
70 | F2CE66568228293211DDF406 /* Pods_MacosCLI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MacosCLI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
71 | F707C3ABB4595B8D1306B070 /* Pods_iosApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
72 | /* End PBXFileReference section */
73 |
74 | /* Begin PBXFileSystemSynchronizedRootGroup section */
75 | BD0A4CAD2DC2704D00FC6E3D /* WatchosApp Watch App */ = {
76 | isa = PBXFileSystemSynchronizedRootGroup;
77 | path = "WatchosApp Watch App";
78 | sourceTree = "";
79 | };
80 | BD0A4CD92DC2724000FC6E3D /* TVosApp */ = {
81 | isa = PBXFileSystemSynchronizedRootGroup;
82 | path = TVosApp;
83 | sourceTree = "";
84 | };
85 | BD0A4CDE2DC2724400FC6E3D /* MacosCLI */ = {
86 | isa = PBXFileSystemSynchronizedRootGroup;
87 | path = MacosCLI;
88 | sourceTree = "";
89 | };
90 | BD0A4CE32DC2724700FC6E3D /* iosApp */ = {
91 | isa = PBXFileSystemSynchronizedRootGroup;
92 | path = iosApp;
93 | sourceTree = "";
94 | };
95 | /* End PBXFileSystemSynchronizedRootGroup section */
96 |
97 | /* Begin PBXFrameworksBuildPhase section */
98 | 0D0D8DA74C0EE3985280A759 /* Frameworks */ = {
99 | isa = PBXFrameworksBuildPhase;
100 | buildActionMask = 2147483647;
101 | files = (
102 | 0EE3A876D8A5E07EA0D16414 /* Pods_WatchosApp.framework in Frameworks */,
103 | );
104 | runOnlyForDeploymentPostprocessing = 0;
105 | };
106 | BD0A4CA62DC2704D00FC6E3D /* Frameworks */ = {
107 | isa = PBXFrameworksBuildPhase;
108 | buildActionMask = 2147483647;
109 | files = (
110 | F8228C1DF15CE0F199912FF7 /* Pods_WatchosApp_Watch_App.framework in Frameworks */,
111 | );
112 | runOnlyForDeploymentPostprocessing = 0;
113 | };
114 | CB1BD2AD249B4D2000707679 /* Frameworks */ = {
115 | isa = PBXFrameworksBuildPhase;
116 | buildActionMask = 2147483647;
117 | files = (
118 | A1D2825D34101C92C788B891 /* Pods_iosApp.framework in Frameworks */,
119 | );
120 | runOnlyForDeploymentPostprocessing = 0;
121 | };
122 | CB1BD2C6249B4D4C00707679 /* Frameworks */ = {
123 | isa = PBXFrameworksBuildPhase;
124 | buildActionMask = 2147483647;
125 | files = (
126 | 757B28B26327694CA1125A19 /* Pods_MacosCLI.framework in Frameworks */,
127 | );
128 | runOnlyForDeploymentPostprocessing = 0;
129 | };
130 | CB1BD2D1249B4DDC00707679 /* Frameworks */ = {
131 | isa = PBXFrameworksBuildPhase;
132 | buildActionMask = 2147483647;
133 | files = (
134 | 213EDA065B1198F52F24AB39 /* Pods_TVosApp.framework in Frameworks */,
135 | );
136 | runOnlyForDeploymentPostprocessing = 0;
137 | };
138 | /* End PBXFrameworksBuildPhase section */
139 |
140 | /* Begin PBXGroup section */
141 | 05D6FCDC1CDC24C84A5EA73F /* Pods */ = {
142 | isa = PBXGroup;
143 | children = (
144 | 2DAED3B0E22BD6933C35FAF0 /* Pods-MacosCLI.debug.xcconfig */,
145 | 3A49883EBDD15089157637B4 /* Pods-MacosCLI.release.xcconfig */,
146 | CF66472EB58A956851EF092B /* Pods-TVosApp.debug.xcconfig */,
147 | 5516925726421EE0CC88D672 /* Pods-TVosApp.release.xcconfig */,
148 | 9AE5EDB5D38387FE2D03A2C8 /* Pods-WatchosApp.debug.xcconfig */,
149 | 1B4772FC76BA8F8C1AA5175B /* Pods-WatchosApp.release.xcconfig */,
150 | 073C3209F20F4D280580C42F /* Pods-WatchosApp Watch App.debug.xcconfig */,
151 | A7AE19F3B271A986FA758600 /* Pods-WatchosApp Watch App.release.xcconfig */,
152 | 1B599EDB55B2EA2D3AA853EB /* Pods-iosApp.debug.xcconfig */,
153 | B6B1FD987B3266508DC6F67C /* Pods-iosApp.release.xcconfig */,
154 | );
155 | path = Pods;
156 | sourceTree = "";
157 | };
158 | 82484B2D9C1D1D0686EB225E /* Frameworks */ = {
159 | isa = PBXGroup;
160 | children = (
161 | F2CE66568228293211DDF406 /* Pods_MacosCLI.framework */,
162 | 8EEB6E773C5ED94ED846DDED /* Pods_TVosApp.framework */,
163 | A7FCF5023FD29D2ECA8D31FB /* Pods_WatchosApp.framework */,
164 | A84C5F10BF4D718661C98AA8 /* Pods_WatchosApp_Watch_App.framework */,
165 | F707C3ABB4595B8D1306B070 /* Pods_iosApp.framework */,
166 | );
167 | name = Frameworks;
168 | sourceTree = "";
169 | };
170 | CB1BD2A5249B4CDC00707679 = {
171 | isa = PBXGroup;
172 | children = (
173 | BD0A4CE32DC2724700FC6E3D /* iosApp */,
174 | BD0A4CDE2DC2724400FC6E3D /* MacosCLI */,
175 | BD0A4CD92DC2724000FC6E3D /* TVosApp */,
176 | BD0A4CAD2DC2704D00FC6E3D /* WatchosApp Watch App */,
177 | CB1BD2B1249B4D2000707679 /* Products */,
178 | 05D6FCDC1CDC24C84A5EA73F /* Pods */,
179 | 82484B2D9C1D1D0686EB225E /* Frameworks */,
180 | );
181 | sourceTree = "";
182 | };
183 | CB1BD2B1249B4D2000707679 /* Products */ = {
184 | isa = PBXGroup;
185 | children = (
186 | CB1BD2B0249B4D2000707679 /* iosApp.app */,
187 | CB1BD2C9249B4D4C00707679 /* MacosCLI */,
188 | CB1BD2D4249B4DDC00707679 /* TVosApp.app */,
189 | BD0A4CA42DC2704D00FC6E3D /* WatchosApp.app */,
190 | BD0A4CA92DC2704D00FC6E3D /* WatchosApp Watch App.app */,
191 | );
192 | name = Products;
193 | sourceTree = "";
194 | };
195 | /* End PBXGroup section */
196 |
197 | /* Begin PBXNativeTarget section */
198 | BD0A4CA32DC2704D00FC6E3D /* WatchosApp */ = {
199 | isa = PBXNativeTarget;
200 | buildConfigurationList = BD0A4CB82DC2704E00FC6E3D /* Build configuration list for PBXNativeTarget "WatchosApp" */;
201 | buildPhases = (
202 | 7AEC1558B30183E3FB518051 /* [CP] Check Pods Manifest.lock */,
203 | BD0A4CA22DC2704D00FC6E3D /* Resources */,
204 | BD0A4CB72DC2704E00FC6E3D /* Embed Watch Content */,
205 | 0D0D8DA74C0EE3985280A759 /* Frameworks */,
206 | );
207 | buildRules = (
208 | );
209 | dependencies = (
210 | BD0A4CAC2DC2704D00FC6E3D /* PBXTargetDependency */,
211 | );
212 | name = WatchosApp;
213 | productName = WatchosApp;
214 | productReference = BD0A4CA42DC2704D00FC6E3D /* WatchosApp.app */;
215 | productType = "com.apple.product-type.application.watchapp2-container";
216 | };
217 | BD0A4CA82DC2704D00FC6E3D /* WatchosApp Watch App */ = {
218 | isa = PBXNativeTarget;
219 | buildConfigurationList = BD0A4CB42DC2704E00FC6E3D /* Build configuration list for PBXNativeTarget "WatchosApp Watch App" */;
220 | buildPhases = (
221 | 9E66277583C806597D8EED04 /* [CP] Check Pods Manifest.lock */,
222 | BD0A4CA52DC2704D00FC6E3D /* Sources */,
223 | BD0A4CA62DC2704D00FC6E3D /* Frameworks */,
224 | BD0A4CA72DC2704D00FC6E3D /* Resources */,
225 | );
226 | buildRules = (
227 | );
228 | dependencies = (
229 | );
230 | fileSystemSynchronizedGroups = (
231 | BD0A4CAD2DC2704D00FC6E3D /* WatchosApp Watch App */,
232 | );
233 | name = "WatchosApp Watch App";
234 | productName = "WatchosApp Watch App";
235 | productReference = BD0A4CA92DC2704D00FC6E3D /* WatchosApp Watch App.app */;
236 | productType = "com.apple.product-type.application";
237 | };
238 | CB1BD2AF249B4D2000707679 /* iosApp */ = {
239 | isa = PBXNativeTarget;
240 | buildConfigurationList = CB1BD2C2249B4D2200707679 /* Build configuration list for PBXNativeTarget "iosApp" */;
241 | buildPhases = (
242 | 71DA893BC3C26C1F331FA42E /* [CP] Check Pods Manifest.lock */,
243 | CB1BD2AC249B4D2000707679 /* Sources */,
244 | CB1BD2AD249B4D2000707679 /* Frameworks */,
245 | CB1BD2AE249B4D2000707679 /* Resources */,
246 | );
247 | buildRules = (
248 | );
249 | dependencies = (
250 | );
251 | fileSystemSynchronizedGroups = (
252 | BD0A4CE32DC2724700FC6E3D /* iosApp */,
253 | );
254 | name = iosApp;
255 | productName = iosApp;
256 | productReference = CB1BD2B0249B4D2000707679 /* iosApp.app */;
257 | productType = "com.apple.product-type.application";
258 | };
259 | CB1BD2C8249B4D4C00707679 /* MacosCLI */ = {
260 | isa = PBXNativeTarget;
261 | buildConfigurationList = CB1BD2CD249B4D4C00707679 /* Build configuration list for PBXNativeTarget "MacosCLI" */;
262 | buildPhases = (
263 | 9A587DC0D3585D9AB4EF3EDB /* [CP] Check Pods Manifest.lock */,
264 | CB1BD2C5249B4D4C00707679 /* Sources */,
265 | CB1BD2C6249B4D4C00707679 /* Frameworks */,
266 | CB1BD2C7249B4D4C00707679 /* CopyFiles */,
267 | );
268 | buildRules = (
269 | );
270 | dependencies = (
271 | );
272 | fileSystemSynchronizedGroups = (
273 | BD0A4CDE2DC2724400FC6E3D /* MacosCLI */,
274 | );
275 | name = MacosCLI;
276 | productName = MacosCLI;
277 | productReference = CB1BD2C9249B4D4C00707679 /* MacosCLI */;
278 | productType = "com.apple.product-type.tool";
279 | };
280 | CB1BD2D3249B4DDC00707679 /* TVosApp */ = {
281 | isa = PBXNativeTarget;
282 | buildConfigurationList = CB1BD2E3249B4DDC00707679 /* Build configuration list for PBXNativeTarget "TVosApp" */;
283 | buildPhases = (
284 | E83CB3DD182676FE822A3535 /* [CP] Check Pods Manifest.lock */,
285 | CB1BD2D0249B4DDC00707679 /* Sources */,
286 | CB1BD2D1249B4DDC00707679 /* Frameworks */,
287 | CB1BD2D2249B4DDC00707679 /* Resources */,
288 | );
289 | buildRules = (
290 | );
291 | dependencies = (
292 | );
293 | fileSystemSynchronizedGroups = (
294 | BD0A4CD92DC2724000FC6E3D /* TVosApp */,
295 | );
296 | name = TVosApp;
297 | productName = TVosApp;
298 | productReference = CB1BD2D4249B4DDC00707679 /* TVosApp.app */;
299 | productType = "com.apple.product-type.application";
300 | };
301 | /* End PBXNativeTarget section */
302 |
303 | /* Begin PBXProject section */
304 | CB1BD2A6249B4CDC00707679 /* Project object */ = {
305 | isa = PBXProject;
306 | attributes = {
307 | LastSwiftUpdateCheck = 1630;
308 | LastUpgradeCheck = 1150;
309 | TargetAttributes = {
310 | BD0A4CA32DC2704D00FC6E3D = {
311 | CreatedOnToolsVersion = 16.3;
312 | };
313 | BD0A4CA82DC2704D00FC6E3D = {
314 | CreatedOnToolsVersion = 16.3;
315 | };
316 | CB1BD2AF249B4D2000707679 = {
317 | CreatedOnToolsVersion = 11.5;
318 | LastSwiftMigration = 1630;
319 | };
320 | CB1BD2C8249B4D4C00707679 = {
321 | CreatedOnToolsVersion = 11.5;
322 | };
323 | CB1BD2D3249B4DDC00707679 = {
324 | CreatedOnToolsVersion = 11.5;
325 | LastSwiftMigration = 1630;
326 | };
327 | };
328 | };
329 | buildConfigurationList = CB1BD2A9249B4CDC00707679 /* Build configuration list for PBXProject "severalTargetsXcodeProject" */;
330 | developmentRegion = en;
331 | hasScannedForEncodings = 0;
332 | knownRegions = (
333 | en,
334 | Base,
335 | );
336 | mainGroup = CB1BD2A5249B4CDC00707679;
337 | preferredProjectObjectVersion = 77;
338 | productRefGroup = CB1BD2B1249B4D2000707679 /* Products */;
339 | projectDirPath = "";
340 | projectRoot = "";
341 | targets = (
342 | CB1BD2AF249B4D2000707679 /* iosApp */,
343 | CB1BD2C8249B4D4C00707679 /* MacosCLI */,
344 | CB1BD2D3249B4DDC00707679 /* TVosApp */,
345 | BD0A4CA32DC2704D00FC6E3D /* WatchosApp */,
346 | BD0A4CA82DC2704D00FC6E3D /* WatchosApp Watch App */,
347 | );
348 | };
349 | /* End PBXProject section */
350 |
351 | /* Begin PBXResourcesBuildPhase section */
352 | BD0A4CA22DC2704D00FC6E3D /* Resources */ = {
353 | isa = PBXResourcesBuildPhase;
354 | buildActionMask = 2147483647;
355 | files = (
356 | );
357 | runOnlyForDeploymentPostprocessing = 0;
358 | };
359 | BD0A4CA72DC2704D00FC6E3D /* Resources */ = {
360 | isa = PBXResourcesBuildPhase;
361 | buildActionMask = 2147483647;
362 | files = (
363 | );
364 | runOnlyForDeploymentPostprocessing = 0;
365 | };
366 | CB1BD2AE249B4D2000707679 /* Resources */ = {
367 | isa = PBXResourcesBuildPhase;
368 | buildActionMask = 2147483647;
369 | files = (
370 | );
371 | runOnlyForDeploymentPostprocessing = 0;
372 | };
373 | CB1BD2D2249B4DDC00707679 /* Resources */ = {
374 | isa = PBXResourcesBuildPhase;
375 | buildActionMask = 2147483647;
376 | files = (
377 | );
378 | runOnlyForDeploymentPostprocessing = 0;
379 | };
380 | /* End PBXResourcesBuildPhase section */
381 |
382 | /* Begin PBXShellScriptBuildPhase section */
383 | 71DA893BC3C26C1F331FA42E /* [CP] Check Pods Manifest.lock */ = {
384 | isa = PBXShellScriptBuildPhase;
385 | buildActionMask = 2147483647;
386 | files = (
387 | );
388 | inputFileListPaths = (
389 | );
390 | inputPaths = (
391 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
392 | "${PODS_ROOT}/Manifest.lock",
393 | );
394 | name = "[CP] Check Pods Manifest.lock";
395 | outputFileListPaths = (
396 | );
397 | outputPaths = (
398 | "$(DERIVED_FILE_DIR)/Pods-iosApp-checkManifestLockResult.txt",
399 | );
400 | runOnlyForDeploymentPostprocessing = 0;
401 | shellPath = /bin/sh;
402 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
403 | showEnvVarsInLog = 0;
404 | };
405 | 7AEC1558B30183E3FB518051 /* [CP] Check Pods Manifest.lock */ = {
406 | isa = PBXShellScriptBuildPhase;
407 | buildActionMask = 2147483647;
408 | files = (
409 | );
410 | inputFileListPaths = (
411 | );
412 | inputPaths = (
413 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
414 | "${PODS_ROOT}/Manifest.lock",
415 | );
416 | name = "[CP] Check Pods Manifest.lock";
417 | outputFileListPaths = (
418 | );
419 | outputPaths = (
420 | "$(DERIVED_FILE_DIR)/Pods-WatchosApp-checkManifestLockResult.txt",
421 | );
422 | runOnlyForDeploymentPostprocessing = 0;
423 | shellPath = /bin/sh;
424 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
425 | showEnvVarsInLog = 0;
426 | };
427 | 9A587DC0D3585D9AB4EF3EDB /* [CP] Check Pods Manifest.lock */ = {
428 | isa = PBXShellScriptBuildPhase;
429 | buildActionMask = 2147483647;
430 | files = (
431 | );
432 | inputFileListPaths = (
433 | );
434 | inputPaths = (
435 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
436 | "${PODS_ROOT}/Manifest.lock",
437 | );
438 | name = "[CP] Check Pods Manifest.lock";
439 | outputFileListPaths = (
440 | );
441 | outputPaths = (
442 | "$(DERIVED_FILE_DIR)/Pods-MacosCLI-checkManifestLockResult.txt",
443 | );
444 | runOnlyForDeploymentPostprocessing = 0;
445 | shellPath = /bin/sh;
446 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
447 | showEnvVarsInLog = 0;
448 | };
449 | 9E66277583C806597D8EED04 /* [CP] Check Pods Manifest.lock */ = {
450 | isa = PBXShellScriptBuildPhase;
451 | buildActionMask = 2147483647;
452 | files = (
453 | );
454 | inputFileListPaths = (
455 | );
456 | inputPaths = (
457 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
458 | "${PODS_ROOT}/Manifest.lock",
459 | );
460 | name = "[CP] Check Pods Manifest.lock";
461 | outputFileListPaths = (
462 | );
463 | outputPaths = (
464 | "$(DERIVED_FILE_DIR)/Pods-WatchosApp Watch App-checkManifestLockResult.txt",
465 | );
466 | runOnlyForDeploymentPostprocessing = 0;
467 | shellPath = /bin/sh;
468 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
469 | showEnvVarsInLog = 0;
470 | };
471 | E83CB3DD182676FE822A3535 /* [CP] Check Pods Manifest.lock */ = {
472 | isa = PBXShellScriptBuildPhase;
473 | buildActionMask = 2147483647;
474 | files = (
475 | );
476 | inputFileListPaths = (
477 | );
478 | inputPaths = (
479 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
480 | "${PODS_ROOT}/Manifest.lock",
481 | );
482 | name = "[CP] Check Pods Manifest.lock";
483 | outputFileListPaths = (
484 | );
485 | outputPaths = (
486 | "$(DERIVED_FILE_DIR)/Pods-TVosApp-checkManifestLockResult.txt",
487 | );
488 | runOnlyForDeploymentPostprocessing = 0;
489 | shellPath = /bin/sh;
490 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
491 | showEnvVarsInLog = 0;
492 | };
493 | /* End PBXShellScriptBuildPhase section */
494 |
495 | /* Begin PBXSourcesBuildPhase section */
496 | BD0A4CA52DC2704D00FC6E3D /* Sources */ = {
497 | isa = PBXSourcesBuildPhase;
498 | buildActionMask = 2147483647;
499 | files = (
500 | );
501 | runOnlyForDeploymentPostprocessing = 0;
502 | };
503 | CB1BD2AC249B4D2000707679 /* Sources */ = {
504 | isa = PBXSourcesBuildPhase;
505 | buildActionMask = 2147483647;
506 | files = (
507 | );
508 | runOnlyForDeploymentPostprocessing = 0;
509 | };
510 | CB1BD2C5249B4D4C00707679 /* Sources */ = {
511 | isa = PBXSourcesBuildPhase;
512 | buildActionMask = 2147483647;
513 | files = (
514 | );
515 | runOnlyForDeploymentPostprocessing = 0;
516 | };
517 | CB1BD2D0249B4DDC00707679 /* Sources */ = {
518 | isa = PBXSourcesBuildPhase;
519 | buildActionMask = 2147483647;
520 | files = (
521 | );
522 | runOnlyForDeploymentPostprocessing = 0;
523 | };
524 | /* End PBXSourcesBuildPhase section */
525 |
526 | /* Begin PBXTargetDependency section */
527 | BD0A4CAC2DC2704D00FC6E3D /* PBXTargetDependency */ = {
528 | isa = PBXTargetDependency;
529 | target = BD0A4CA82DC2704D00FC6E3D /* WatchosApp Watch App */;
530 | targetProxy = BD0A4CAB2DC2704D00FC6E3D /* PBXContainerItemProxy */;
531 | };
532 | /* End PBXTargetDependency section */
533 |
534 | /* Begin XCBuildConfiguration section */
535 | BD0A4CB52DC2704E00FC6E3D /* Debug */ = {
536 | isa = XCBuildConfiguration;
537 | baseConfigurationReference = 073C3209F20F4D280580C42F /* Pods-WatchosApp Watch App.debug.xcconfig */;
538 | buildSettings = {
539 | ALWAYS_SEARCH_USER_PATHS = NO;
540 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
541 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
542 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
543 | CLANG_ANALYZER_NONNULL = YES;
544 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
545 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
546 | CLANG_ENABLE_MODULES = YES;
547 | CLANG_ENABLE_OBJC_ARC = YES;
548 | CLANG_ENABLE_OBJC_WEAK = YES;
549 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
550 | CLANG_WARN_BOOL_CONVERSION = YES;
551 | CLANG_WARN_COMMA = YES;
552 | CLANG_WARN_CONSTANT_CONVERSION = YES;
553 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
554 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
555 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
556 | CLANG_WARN_EMPTY_BODY = YES;
557 | CLANG_WARN_ENUM_CONVERSION = YES;
558 | CLANG_WARN_INFINITE_RECURSION = YES;
559 | CLANG_WARN_INT_CONVERSION = YES;
560 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
561 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
562 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
563 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
564 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
565 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
566 | CLANG_WARN_STRICT_PROTOTYPES = YES;
567 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
568 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
569 | CLANG_WARN_UNREACHABLE_CODE = YES;
570 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
571 | CODE_SIGN_STYLE = Automatic;
572 | COPY_PHASE_STRIP = NO;
573 | CURRENT_PROJECT_VERSION = 1;
574 | DEBUG_INFORMATION_FORMAT = dwarf;
575 | ENABLE_PREVIEWS = YES;
576 | ENABLE_STRICT_OBJC_MSGSEND = YES;
577 | ENABLE_TESTABILITY = YES;
578 | ENABLE_USER_SCRIPT_SANDBOXING = YES;
579 | GCC_C_LANGUAGE_STANDARD = gnu17;
580 | GCC_DYNAMIC_NO_PIC = NO;
581 | GCC_NO_COMMON_BLOCKS = YES;
582 | GCC_OPTIMIZATION_LEVEL = 0;
583 | GCC_PREPROCESSOR_DEFINITIONS = (
584 | "DEBUG=1",
585 | "$(inherited)",
586 | );
587 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
588 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
589 | GCC_WARN_UNDECLARED_SELECTOR = YES;
590 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
591 | GCC_WARN_UNUSED_FUNCTION = YES;
592 | GCC_WARN_UNUSED_VARIABLE = YES;
593 | GENERATE_INFOPLIST_FILE = YES;
594 | INFOPLIST_KEY_CFBundleDisplayName = WatchosApp;
595 | INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
596 | INFOPLIST_KEY_WKWatchOnly = YES;
597 | LD_RUNPATH_SEARCH_PATHS = (
598 | "$(inherited)",
599 | "@executable_path/Frameworks",
600 | );
601 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
602 | MARKETING_VERSION = 1.0;
603 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
604 | MTL_FAST_MATH = YES;
605 | ONLY_ACTIVE_ARCH = YES;
606 | PRODUCT_BUNDLE_IDENTIFIER = org.jetbrains.kotlin.samples.WatchosApp.watchkitapp;
607 | PRODUCT_NAME = "$(TARGET_NAME)";
608 | SDKROOT = watchos;
609 | SKIP_INSTALL = YES;
610 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
611 | SWIFT_EMIT_LOC_STRINGS = YES;
612 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
613 | SWIFT_VERSION = 5.0;
614 | TARGETED_DEVICE_FAMILY = 4;
615 | WATCHOS_DEPLOYMENT_TARGET = 11.4;
616 | };
617 | name = Debug;
618 | };
619 | BD0A4CB62DC2704E00FC6E3D /* Release */ = {
620 | isa = XCBuildConfiguration;
621 | baseConfigurationReference = A7AE19F3B271A986FA758600 /* Pods-WatchosApp Watch App.release.xcconfig */;
622 | buildSettings = {
623 | ALWAYS_SEARCH_USER_PATHS = NO;
624 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
625 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
626 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
627 | CLANG_ANALYZER_NONNULL = YES;
628 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
629 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
630 | CLANG_ENABLE_MODULES = YES;
631 | CLANG_ENABLE_OBJC_ARC = YES;
632 | CLANG_ENABLE_OBJC_WEAK = YES;
633 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
634 | CLANG_WARN_BOOL_CONVERSION = YES;
635 | CLANG_WARN_COMMA = YES;
636 | CLANG_WARN_CONSTANT_CONVERSION = YES;
637 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
638 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
639 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
640 | CLANG_WARN_EMPTY_BODY = YES;
641 | CLANG_WARN_ENUM_CONVERSION = YES;
642 | CLANG_WARN_INFINITE_RECURSION = YES;
643 | CLANG_WARN_INT_CONVERSION = YES;
644 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
645 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
646 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
647 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
648 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
649 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
650 | CLANG_WARN_STRICT_PROTOTYPES = YES;
651 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
652 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
653 | CLANG_WARN_UNREACHABLE_CODE = YES;
654 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
655 | CODE_SIGN_STYLE = Automatic;
656 | COPY_PHASE_STRIP = NO;
657 | CURRENT_PROJECT_VERSION = 1;
658 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
659 | ENABLE_NS_ASSERTIONS = NO;
660 | ENABLE_PREVIEWS = YES;
661 | ENABLE_STRICT_OBJC_MSGSEND = YES;
662 | ENABLE_USER_SCRIPT_SANDBOXING = YES;
663 | GCC_C_LANGUAGE_STANDARD = gnu17;
664 | GCC_NO_COMMON_BLOCKS = YES;
665 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
666 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
667 | GCC_WARN_UNDECLARED_SELECTOR = YES;
668 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
669 | GCC_WARN_UNUSED_FUNCTION = YES;
670 | GCC_WARN_UNUSED_VARIABLE = YES;
671 | GENERATE_INFOPLIST_FILE = YES;
672 | INFOPLIST_KEY_CFBundleDisplayName = WatchosApp;
673 | INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
674 | INFOPLIST_KEY_WKWatchOnly = YES;
675 | LD_RUNPATH_SEARCH_PATHS = (
676 | "$(inherited)",
677 | "@executable_path/Frameworks",
678 | );
679 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
680 | MARKETING_VERSION = 1.0;
681 | MTL_ENABLE_DEBUG_INFO = NO;
682 | MTL_FAST_MATH = YES;
683 | PRODUCT_BUNDLE_IDENTIFIER = org.jetbrains.kotlin.samples.WatchosApp.watchkitapp;
684 | PRODUCT_NAME = "$(TARGET_NAME)";
685 | SDKROOT = watchos;
686 | SKIP_INSTALL = YES;
687 | SWIFT_COMPILATION_MODE = wholemodule;
688 | SWIFT_EMIT_LOC_STRINGS = YES;
689 | SWIFT_VERSION = 5.0;
690 | TARGETED_DEVICE_FAMILY = 4;
691 | VALIDATE_PRODUCT = YES;
692 | WATCHOS_DEPLOYMENT_TARGET = 11.4;
693 | };
694 | name = Release;
695 | };
696 | BD0A4CB92DC2704E00FC6E3D /* Debug */ = {
697 | isa = XCBuildConfiguration;
698 | baseConfigurationReference = 9AE5EDB5D38387FE2D03A2C8 /* Pods-WatchosApp.debug.xcconfig */;
699 | buildSettings = {
700 | ALWAYS_SEARCH_USER_PATHS = NO;
701 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
702 | CLANG_ANALYZER_NONNULL = YES;
703 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
704 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
705 | CLANG_ENABLE_MODULES = YES;
706 | CLANG_ENABLE_OBJC_ARC = YES;
707 | CLANG_ENABLE_OBJC_WEAK = YES;
708 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
709 | CLANG_WARN_BOOL_CONVERSION = YES;
710 | CLANG_WARN_COMMA = YES;
711 | CLANG_WARN_CONSTANT_CONVERSION = YES;
712 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
713 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
714 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
715 | CLANG_WARN_EMPTY_BODY = YES;
716 | CLANG_WARN_ENUM_CONVERSION = YES;
717 | CLANG_WARN_INFINITE_RECURSION = YES;
718 | CLANG_WARN_INT_CONVERSION = YES;
719 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
720 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
721 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
722 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
723 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
724 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
725 | CLANG_WARN_STRICT_PROTOTYPES = YES;
726 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
727 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
728 | CLANG_WARN_UNREACHABLE_CODE = YES;
729 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
730 | CODE_SIGN_STYLE = Automatic;
731 | COPY_PHASE_STRIP = NO;
732 | CURRENT_PROJECT_VERSION = 1;
733 | DEBUG_INFORMATION_FORMAT = dwarf;
734 | ENABLE_STRICT_OBJC_MSGSEND = YES;
735 | ENABLE_TESTABILITY = YES;
736 | ENABLE_USER_SCRIPT_SANDBOXING = YES;
737 | GCC_C_LANGUAGE_STANDARD = gnu17;
738 | GCC_DYNAMIC_NO_PIC = NO;
739 | GCC_NO_COMMON_BLOCKS = YES;
740 | GCC_OPTIMIZATION_LEVEL = 0;
741 | GCC_PREPROCESSOR_DEFINITIONS = (
742 | "DEBUG=1",
743 | "$(inherited)",
744 | );
745 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
746 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
747 | GCC_WARN_UNDECLARED_SELECTOR = YES;
748 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
749 | GCC_WARN_UNUSED_FUNCTION = YES;
750 | GCC_WARN_UNUSED_VARIABLE = YES;
751 | INFOPLIST_KEY_CFBundleDisplayName = WatchosApp;
752 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
753 | MARKETING_VERSION = 1.0;
754 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
755 | MTL_FAST_MATH = YES;
756 | ONLY_ACTIVE_ARCH = YES;
757 | PRODUCT_BUNDLE_IDENTIFIER = org.jetbrains.kotlin.samples.WatchosApp;
758 | PRODUCT_NAME = "$(TARGET_NAME)";
759 | SDKROOT = iphoneos;
760 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
761 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
762 | SWIFT_VERSION = 5.0;
763 | };
764 | name = Debug;
765 | };
766 | BD0A4CBA2DC2704E00FC6E3D /* Release */ = {
767 | isa = XCBuildConfiguration;
768 | baseConfigurationReference = 1B4772FC76BA8F8C1AA5175B /* Pods-WatchosApp.release.xcconfig */;
769 | buildSettings = {
770 | ALWAYS_SEARCH_USER_PATHS = NO;
771 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
772 | CLANG_ANALYZER_NONNULL = YES;
773 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
774 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
775 | CLANG_ENABLE_MODULES = YES;
776 | CLANG_ENABLE_OBJC_ARC = YES;
777 | CLANG_ENABLE_OBJC_WEAK = YES;
778 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
779 | CLANG_WARN_BOOL_CONVERSION = YES;
780 | CLANG_WARN_COMMA = YES;
781 | CLANG_WARN_CONSTANT_CONVERSION = YES;
782 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
783 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
784 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
785 | CLANG_WARN_EMPTY_BODY = YES;
786 | CLANG_WARN_ENUM_CONVERSION = YES;
787 | CLANG_WARN_INFINITE_RECURSION = YES;
788 | CLANG_WARN_INT_CONVERSION = YES;
789 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
790 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
791 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
792 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
793 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
794 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
795 | CLANG_WARN_STRICT_PROTOTYPES = YES;
796 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
797 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
798 | CLANG_WARN_UNREACHABLE_CODE = YES;
799 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
800 | CODE_SIGN_STYLE = Automatic;
801 | COPY_PHASE_STRIP = NO;
802 | CURRENT_PROJECT_VERSION = 1;
803 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
804 | ENABLE_NS_ASSERTIONS = NO;
805 | ENABLE_STRICT_OBJC_MSGSEND = YES;
806 | ENABLE_USER_SCRIPT_SANDBOXING = YES;
807 | GCC_C_LANGUAGE_STANDARD = gnu17;
808 | GCC_NO_COMMON_BLOCKS = YES;
809 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
810 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
811 | GCC_WARN_UNDECLARED_SELECTOR = YES;
812 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
813 | GCC_WARN_UNUSED_FUNCTION = YES;
814 | GCC_WARN_UNUSED_VARIABLE = YES;
815 | INFOPLIST_KEY_CFBundleDisplayName = WatchosApp;
816 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
817 | MARKETING_VERSION = 1.0;
818 | MTL_ENABLE_DEBUG_INFO = NO;
819 | MTL_FAST_MATH = YES;
820 | PRODUCT_BUNDLE_IDENTIFIER = org.jetbrains.kotlin.samples.WatchosApp;
821 | PRODUCT_NAME = "$(TARGET_NAME)";
822 | SDKROOT = iphoneos;
823 | SWIFT_COMPILATION_MODE = wholemodule;
824 | SWIFT_VERSION = 5.0;
825 | VALIDATE_PRODUCT = YES;
826 | };
827 | name = Release;
828 | };
829 | CB1BD2AA249B4CDC00707679 /* Debug */ = {
830 | isa = XCBuildConfiguration;
831 | buildSettings = {
832 | };
833 | name = Debug;
834 | };
835 | CB1BD2AB249B4CDC00707679 /* Release */ = {
836 | isa = XCBuildConfiguration;
837 | buildSettings = {
838 | };
839 | name = Release;
840 | };
841 | CB1BD2C3249B4D2200707679 /* Debug */ = {
842 | isa = XCBuildConfiguration;
843 | baseConfigurationReference = 1B599EDB55B2EA2D3AA853EB /* Pods-iosApp.debug.xcconfig */;
844 | buildSettings = {
845 | ALWAYS_SEARCH_USER_PATHS = NO;
846 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
847 | CLANG_ANALYZER_NONNULL = YES;
848 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
849 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
850 | CLANG_CXX_LIBRARY = "libc++";
851 | CLANG_ENABLE_MODULES = YES;
852 | CLANG_ENABLE_OBJC_ARC = YES;
853 | CLANG_ENABLE_OBJC_WEAK = YES;
854 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
855 | CLANG_WARN_BOOL_CONVERSION = YES;
856 | CLANG_WARN_COMMA = YES;
857 | CLANG_WARN_CONSTANT_CONVERSION = YES;
858 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
859 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
860 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
861 | CLANG_WARN_EMPTY_BODY = YES;
862 | CLANG_WARN_ENUM_CONVERSION = YES;
863 | CLANG_WARN_INFINITE_RECURSION = YES;
864 | CLANG_WARN_INT_CONVERSION = YES;
865 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
866 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
867 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
868 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
869 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
870 | CLANG_WARN_STRICT_PROTOTYPES = YES;
871 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
872 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
873 | CLANG_WARN_UNREACHABLE_CODE = YES;
874 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
875 | CODE_SIGN_STYLE = Automatic;
876 | COPY_PHASE_STRIP = NO;
877 | DEBUG_INFORMATION_FORMAT = dwarf;
878 | DEVELOPMENT_TEAM = "";
879 | ENABLE_STRICT_OBJC_MSGSEND = YES;
880 | ENABLE_TESTABILITY = YES;
881 | GCC_C_LANGUAGE_STANDARD = gnu11;
882 | GCC_DYNAMIC_NO_PIC = NO;
883 | GCC_NO_COMMON_BLOCKS = YES;
884 | GCC_OPTIMIZATION_LEVEL = 0;
885 | GCC_PREPROCESSOR_DEFINITIONS = (
886 | "DEBUG=1",
887 | "$(inherited)",
888 | );
889 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
890 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
891 | GCC_WARN_UNDECLARED_SELECTOR = YES;
892 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
893 | GCC_WARN_UNUSED_FUNCTION = YES;
894 | GCC_WARN_UNUSED_VARIABLE = YES;
895 | GENERATE_INFOPLIST_FILE = YES;
896 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
897 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
898 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
899 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
900 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
901 | IPHONEOS_DEPLOYMENT_TARGET = 16.6;
902 | LD_RUNPATH_SEARCH_PATHS = (
903 | "$(inherited)",
904 | "@executable_path/Frameworks",
905 | );
906 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
907 | MTL_FAST_MATH = YES;
908 | ONLY_ACTIVE_ARCH = YES;
909 | PRODUCT_BUNDLE_IDENTIFIER = org.jetbrains.kotlin.samples.iosApp;
910 | PRODUCT_NAME = "$(TARGET_NAME)";
911 | SDKROOT = iphoneos;
912 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
913 | SWIFT_EMIT_LOC_STRINGS = YES;
914 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
915 | SWIFT_VERSION = 5.0;
916 | TARGETED_DEVICE_FAMILY = "1,2";
917 | };
918 | name = Debug;
919 | };
920 | CB1BD2C4249B4D2200707679 /* Release */ = {
921 | isa = XCBuildConfiguration;
922 | baseConfigurationReference = B6B1FD987B3266508DC6F67C /* Pods-iosApp.release.xcconfig */;
923 | buildSettings = {
924 | ALWAYS_SEARCH_USER_PATHS = NO;
925 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
926 | CLANG_ANALYZER_NONNULL = YES;
927 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
928 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
929 | CLANG_CXX_LIBRARY = "libc++";
930 | CLANG_ENABLE_MODULES = YES;
931 | CLANG_ENABLE_OBJC_ARC = YES;
932 | CLANG_ENABLE_OBJC_WEAK = YES;
933 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
934 | CLANG_WARN_BOOL_CONVERSION = YES;
935 | CLANG_WARN_COMMA = YES;
936 | CLANG_WARN_CONSTANT_CONVERSION = YES;
937 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
938 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
939 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
940 | CLANG_WARN_EMPTY_BODY = YES;
941 | CLANG_WARN_ENUM_CONVERSION = YES;
942 | CLANG_WARN_INFINITE_RECURSION = YES;
943 | CLANG_WARN_INT_CONVERSION = YES;
944 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
945 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
946 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
947 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
948 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
949 | CLANG_WARN_STRICT_PROTOTYPES = YES;
950 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
951 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
952 | CLANG_WARN_UNREACHABLE_CODE = YES;
953 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
954 | CODE_SIGN_STYLE = Automatic;
955 | COPY_PHASE_STRIP = NO;
956 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
957 | DEVELOPMENT_TEAM = "";
958 | ENABLE_NS_ASSERTIONS = NO;
959 | ENABLE_STRICT_OBJC_MSGSEND = YES;
960 | GCC_C_LANGUAGE_STANDARD = gnu11;
961 | GCC_NO_COMMON_BLOCKS = YES;
962 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
963 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
964 | GCC_WARN_UNDECLARED_SELECTOR = YES;
965 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
966 | GCC_WARN_UNUSED_FUNCTION = YES;
967 | GCC_WARN_UNUSED_VARIABLE = YES;
968 | GENERATE_INFOPLIST_FILE = YES;
969 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
970 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
971 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
972 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
973 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
974 | IPHONEOS_DEPLOYMENT_TARGET = 16.6;
975 | LD_RUNPATH_SEARCH_PATHS = (
976 | "$(inherited)",
977 | "@executable_path/Frameworks",
978 | );
979 | MTL_ENABLE_DEBUG_INFO = NO;
980 | MTL_FAST_MATH = YES;
981 | PRODUCT_BUNDLE_IDENTIFIER = org.jetbrains.kotlin.samples.iosApp;
982 | PRODUCT_NAME = "$(TARGET_NAME)";
983 | SDKROOT = iphoneos;
984 | SWIFT_COMPILATION_MODE = wholemodule;
985 | SWIFT_EMIT_LOC_STRINGS = YES;
986 | SWIFT_OPTIMIZATION_LEVEL = "-O";
987 | SWIFT_VERSION = 5.0;
988 | TARGETED_DEVICE_FAMILY = "1,2";
989 | VALIDATE_PRODUCT = YES;
990 | };
991 | name = Release;
992 | };
993 | CB1BD2CE249B4D4C00707679 /* Debug */ = {
994 | isa = XCBuildConfiguration;
995 | baseConfigurationReference = 2DAED3B0E22BD6933C35FAF0 /* Pods-MacosCLI.debug.xcconfig */;
996 | buildSettings = {
997 | ALWAYS_SEARCH_USER_PATHS = NO;
998 | CLANG_ANALYZER_NONNULL = YES;
999 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
1000 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
1001 | CLANG_CXX_LIBRARY = "libc++";
1002 | CLANG_ENABLE_MODULES = YES;
1003 | CLANG_ENABLE_OBJC_ARC = YES;
1004 | CLANG_ENABLE_OBJC_WEAK = YES;
1005 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
1006 | CLANG_WARN_BOOL_CONVERSION = YES;
1007 | CLANG_WARN_COMMA = YES;
1008 | CLANG_WARN_CONSTANT_CONVERSION = YES;
1009 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
1010 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
1011 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1012 | CLANG_WARN_EMPTY_BODY = YES;
1013 | CLANG_WARN_ENUM_CONVERSION = YES;
1014 | CLANG_WARN_INFINITE_RECURSION = YES;
1015 | CLANG_WARN_INT_CONVERSION = YES;
1016 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
1017 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
1018 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
1019 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
1020 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
1021 | CLANG_WARN_STRICT_PROTOTYPES = YES;
1022 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1023 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
1024 | CLANG_WARN_UNREACHABLE_CODE = YES;
1025 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1026 | CODE_SIGN_IDENTITY = "Apple Development";
1027 | "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
1028 | CODE_SIGN_STYLE = Automatic;
1029 | COPY_PHASE_STRIP = NO;
1030 | DEBUG_INFORMATION_FORMAT = dwarf;
1031 | DEVELOPMENT_TEAM = "";
1032 | ENABLE_HARDENED_RUNTIME = YES;
1033 | ENABLE_STRICT_OBJC_MSGSEND = YES;
1034 | ENABLE_TESTABILITY = YES;
1035 | GCC_C_LANGUAGE_STANDARD = gnu11;
1036 | GCC_DYNAMIC_NO_PIC = NO;
1037 | GCC_NO_COMMON_BLOCKS = YES;
1038 | GCC_OPTIMIZATION_LEVEL = 0;
1039 | GCC_PREPROCESSOR_DEFINITIONS = (
1040 | "DEBUG=1",
1041 | "$(inherited)",
1042 | );
1043 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1044 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1045 | GCC_WARN_UNDECLARED_SELECTOR = YES;
1046 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1047 | GCC_WARN_UNUSED_FUNCTION = YES;
1048 | GCC_WARN_UNUSED_VARIABLE = YES;
1049 | MACOSX_DEPLOYMENT_TARGET = 13.5;
1050 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
1051 | MTL_FAST_MATH = YES;
1052 | ONLY_ACTIVE_ARCH = YES;
1053 | PRODUCT_NAME = "$(TARGET_NAME)";
1054 | PROVISIONING_PROFILE_SPECIFIER = "";
1055 | SDKROOT = macosx;
1056 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
1057 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
1058 | SWIFT_VERSION = 5.0;
1059 | };
1060 | name = Debug;
1061 | };
1062 | CB1BD2CF249B4D4C00707679 /* Release */ = {
1063 | isa = XCBuildConfiguration;
1064 | baseConfigurationReference = 3A49883EBDD15089157637B4 /* Pods-MacosCLI.release.xcconfig */;
1065 | buildSettings = {
1066 | ALWAYS_SEARCH_USER_PATHS = NO;
1067 | CLANG_ANALYZER_NONNULL = YES;
1068 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
1069 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
1070 | CLANG_CXX_LIBRARY = "libc++";
1071 | CLANG_ENABLE_MODULES = YES;
1072 | CLANG_ENABLE_OBJC_ARC = YES;
1073 | CLANG_ENABLE_OBJC_WEAK = YES;
1074 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
1075 | CLANG_WARN_BOOL_CONVERSION = YES;
1076 | CLANG_WARN_COMMA = YES;
1077 | CLANG_WARN_CONSTANT_CONVERSION = YES;
1078 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
1079 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
1080 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1081 | CLANG_WARN_EMPTY_BODY = YES;
1082 | CLANG_WARN_ENUM_CONVERSION = YES;
1083 | CLANG_WARN_INFINITE_RECURSION = YES;
1084 | CLANG_WARN_INT_CONVERSION = YES;
1085 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
1086 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
1087 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
1088 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
1089 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
1090 | CLANG_WARN_STRICT_PROTOTYPES = YES;
1091 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1092 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
1093 | CLANG_WARN_UNREACHABLE_CODE = YES;
1094 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1095 | CODE_SIGN_IDENTITY = "Apple Development";
1096 | "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
1097 | CODE_SIGN_STYLE = Automatic;
1098 | COPY_PHASE_STRIP = NO;
1099 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1100 | DEVELOPMENT_TEAM = "";
1101 | ENABLE_HARDENED_RUNTIME = YES;
1102 | ENABLE_NS_ASSERTIONS = NO;
1103 | ENABLE_STRICT_OBJC_MSGSEND = YES;
1104 | GCC_C_LANGUAGE_STANDARD = gnu11;
1105 | GCC_NO_COMMON_BLOCKS = YES;
1106 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1107 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1108 | GCC_WARN_UNDECLARED_SELECTOR = YES;
1109 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1110 | GCC_WARN_UNUSED_FUNCTION = YES;
1111 | GCC_WARN_UNUSED_VARIABLE = YES;
1112 | MACOSX_DEPLOYMENT_TARGET = 13.5;
1113 | MTL_ENABLE_DEBUG_INFO = NO;
1114 | MTL_FAST_MATH = YES;
1115 | PRODUCT_NAME = "$(TARGET_NAME)";
1116 | PROVISIONING_PROFILE_SPECIFIER = "";
1117 | SDKROOT = macosx;
1118 | SWIFT_COMPILATION_MODE = wholemodule;
1119 | SWIFT_OPTIMIZATION_LEVEL = "-O";
1120 | SWIFT_VERSION = 5.0;
1121 | };
1122 | name = Release;
1123 | };
1124 | CB1BD2E4249B4DDC00707679 /* Debug */ = {
1125 | isa = XCBuildConfiguration;
1126 | baseConfigurationReference = CF66472EB58A956851EF092B /* Pods-TVosApp.debug.xcconfig */;
1127 | buildSettings = {
1128 | ALWAYS_SEARCH_USER_PATHS = NO;
1129 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
1130 | CLANG_ANALYZER_NONNULL = YES;
1131 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
1132 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
1133 | CLANG_CXX_LIBRARY = "libc++";
1134 | CLANG_ENABLE_MODULES = YES;
1135 | CLANG_ENABLE_OBJC_ARC = YES;
1136 | CLANG_ENABLE_OBJC_WEAK = YES;
1137 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
1138 | CLANG_WARN_BOOL_CONVERSION = YES;
1139 | CLANG_WARN_COMMA = YES;
1140 | CLANG_WARN_CONSTANT_CONVERSION = YES;
1141 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
1142 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
1143 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1144 | CLANG_WARN_EMPTY_BODY = YES;
1145 | CLANG_WARN_ENUM_CONVERSION = YES;
1146 | CLANG_WARN_INFINITE_RECURSION = YES;
1147 | CLANG_WARN_INT_CONVERSION = YES;
1148 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
1149 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
1150 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
1151 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
1152 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
1153 | CLANG_WARN_STRICT_PROTOTYPES = YES;
1154 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1155 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
1156 | CLANG_WARN_UNREACHABLE_CODE = YES;
1157 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1158 | CODE_SIGN_STYLE = Automatic;
1159 | COPY_PHASE_STRIP = NO;
1160 | DEBUG_INFORMATION_FORMAT = dwarf;
1161 | DEVELOPMENT_TEAM = "";
1162 | ENABLE_STRICT_OBJC_MSGSEND = YES;
1163 | ENABLE_TESTABILITY = YES;
1164 | GCC_C_LANGUAGE_STANDARD = gnu11;
1165 | GCC_DYNAMIC_NO_PIC = NO;
1166 | GCC_NO_COMMON_BLOCKS = YES;
1167 | GCC_OPTIMIZATION_LEVEL = 0;
1168 | GCC_PREPROCESSOR_DEFINITIONS = (
1169 | "DEBUG=1",
1170 | "$(inherited)",
1171 | );
1172 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1173 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1174 | GCC_WARN_UNDECLARED_SELECTOR = YES;
1175 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1176 | GCC_WARN_UNUSED_FUNCTION = YES;
1177 | GCC_WARN_UNUSED_VARIABLE = YES;
1178 | GENERATE_INFOPLIST_FILE = YES;
1179 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
1180 | INFOPLIST_KEY_UIUserInterfaceStyle = Automatic;
1181 | LD_RUNPATH_SEARCH_PATHS = (
1182 | "$(inherited)",
1183 | "@executable_path/Frameworks",
1184 | );
1185 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
1186 | MTL_FAST_MATH = YES;
1187 | ONLY_ACTIVE_ARCH = YES;
1188 | PRODUCT_BUNDLE_IDENTIFIER = org.jetbrains.kotlin.samples.TVosApp;
1189 | PRODUCT_NAME = "$(TARGET_NAME)";
1190 | SDKROOT = appletvos;
1191 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
1192 | SWIFT_EMIT_LOC_STRINGS = YES;
1193 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
1194 | SWIFT_VERSION = 5.0;
1195 | TARGETED_DEVICE_FAMILY = 3;
1196 | TVOS_DEPLOYMENT_TARGET = 16.6;
1197 | };
1198 | name = Debug;
1199 | };
1200 | CB1BD2E5249B4DDC00707679 /* Release */ = {
1201 | isa = XCBuildConfiguration;
1202 | baseConfigurationReference = 5516925726421EE0CC88D672 /* Pods-TVosApp.release.xcconfig */;
1203 | buildSettings = {
1204 | ALWAYS_SEARCH_USER_PATHS = NO;
1205 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
1206 | CLANG_ANALYZER_NONNULL = YES;
1207 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
1208 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
1209 | CLANG_CXX_LIBRARY = "libc++";
1210 | CLANG_ENABLE_MODULES = YES;
1211 | CLANG_ENABLE_OBJC_ARC = YES;
1212 | CLANG_ENABLE_OBJC_WEAK = YES;
1213 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
1214 | CLANG_WARN_BOOL_CONVERSION = YES;
1215 | CLANG_WARN_COMMA = YES;
1216 | CLANG_WARN_CONSTANT_CONVERSION = YES;
1217 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
1218 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
1219 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1220 | CLANG_WARN_EMPTY_BODY = YES;
1221 | CLANG_WARN_ENUM_CONVERSION = YES;
1222 | CLANG_WARN_INFINITE_RECURSION = YES;
1223 | CLANG_WARN_INT_CONVERSION = YES;
1224 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
1225 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
1226 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
1227 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
1228 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
1229 | CLANG_WARN_STRICT_PROTOTYPES = YES;
1230 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1231 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
1232 | CLANG_WARN_UNREACHABLE_CODE = YES;
1233 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1234 | CODE_SIGN_STYLE = Automatic;
1235 | COPY_PHASE_STRIP = NO;
1236 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1237 | DEVELOPMENT_TEAM = "";
1238 | ENABLE_NS_ASSERTIONS = NO;
1239 | ENABLE_STRICT_OBJC_MSGSEND = YES;
1240 | GCC_C_LANGUAGE_STANDARD = gnu11;
1241 | GCC_NO_COMMON_BLOCKS = YES;
1242 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1243 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1244 | GCC_WARN_UNDECLARED_SELECTOR = YES;
1245 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1246 | GCC_WARN_UNUSED_FUNCTION = YES;
1247 | GCC_WARN_UNUSED_VARIABLE = YES;
1248 | GENERATE_INFOPLIST_FILE = YES;
1249 | INFOPLIST_KEY_UILaunchScreen_Generation = YES;
1250 | INFOPLIST_KEY_UIUserInterfaceStyle = Automatic;
1251 | LD_RUNPATH_SEARCH_PATHS = (
1252 | "$(inherited)",
1253 | "@executable_path/Frameworks",
1254 | );
1255 | MTL_ENABLE_DEBUG_INFO = NO;
1256 | MTL_FAST_MATH = YES;
1257 | PRODUCT_BUNDLE_IDENTIFIER = org.jetbrains.kotlin.samples.TVosApp;
1258 | PRODUCT_NAME = "$(TARGET_NAME)";
1259 | SDKROOT = appletvos;
1260 | SWIFT_COMPILATION_MODE = wholemodule;
1261 | SWIFT_EMIT_LOC_STRINGS = YES;
1262 | SWIFT_OPTIMIZATION_LEVEL = "-O";
1263 | SWIFT_VERSION = 5.0;
1264 | TARGETED_DEVICE_FAMILY = 3;
1265 | TVOS_DEPLOYMENT_TARGET = 16.6;
1266 | VALIDATE_PRODUCT = YES;
1267 | };
1268 | name = Release;
1269 | };
1270 | /* End XCBuildConfiguration section */
1271 |
1272 | /* Begin XCConfigurationList section */
1273 | BD0A4CB42DC2704E00FC6E3D /* Build configuration list for PBXNativeTarget "WatchosApp Watch App" */ = {
1274 | isa = XCConfigurationList;
1275 | buildConfigurations = (
1276 | BD0A4CB52DC2704E00FC6E3D /* Debug */,
1277 | BD0A4CB62DC2704E00FC6E3D /* Release */,
1278 | );
1279 | defaultConfigurationIsVisible = 0;
1280 | defaultConfigurationName = Release;
1281 | };
1282 | BD0A4CB82DC2704E00FC6E3D /* Build configuration list for PBXNativeTarget "WatchosApp" */ = {
1283 | isa = XCConfigurationList;
1284 | buildConfigurations = (
1285 | BD0A4CB92DC2704E00FC6E3D /* Debug */,
1286 | BD0A4CBA2DC2704E00FC6E3D /* Release */,
1287 | );
1288 | defaultConfigurationIsVisible = 0;
1289 | defaultConfigurationName = Release;
1290 | };
1291 | CB1BD2A9249B4CDC00707679 /* Build configuration list for PBXProject "severalTargetsXcodeProject" */ = {
1292 | isa = XCConfigurationList;
1293 | buildConfigurations = (
1294 | CB1BD2AA249B4CDC00707679 /* Debug */,
1295 | CB1BD2AB249B4CDC00707679 /* Release */,
1296 | );
1297 | defaultConfigurationIsVisible = 0;
1298 | defaultConfigurationName = Release;
1299 | };
1300 | CB1BD2C2249B4D2200707679 /* Build configuration list for PBXNativeTarget "iosApp" */ = {
1301 | isa = XCConfigurationList;
1302 | buildConfigurations = (
1303 | CB1BD2C3249B4D2200707679 /* Debug */,
1304 | CB1BD2C4249B4D2200707679 /* Release */,
1305 | );
1306 | defaultConfigurationIsVisible = 0;
1307 | defaultConfigurationName = Release;
1308 | };
1309 | CB1BD2CD249B4D4C00707679 /* Build configuration list for PBXNativeTarget "MacosCLI" */ = {
1310 | isa = XCConfigurationList;
1311 | buildConfigurations = (
1312 | CB1BD2CE249B4D4C00707679 /* Debug */,
1313 | CB1BD2CF249B4D4C00707679 /* Release */,
1314 | );
1315 | defaultConfigurationIsVisible = 0;
1316 | defaultConfigurationName = Release;
1317 | };
1318 | CB1BD2E3249B4DDC00707679 /* Build configuration list for PBXNativeTarget "TVosApp" */ = {
1319 | isa = XCConfigurationList;
1320 | buildConfigurations = (
1321 | CB1BD2E4249B4DDC00707679 /* Debug */,
1322 | CB1BD2E5249B4DDC00707679 /* Release */,
1323 | );
1324 | defaultConfigurationIsVisible = 0;
1325 | defaultConfigurationName = Release;
1326 | };
1327 | /* End XCConfigurationList section */
1328 | };
1329 | rootObject = CB1BD2A6249B4CDC00707679 /* Project object */;
1330 | }
1331 |
--------------------------------------------------------------------------------