From f22918d064720346591fbbb02b71ff3440fa9c89 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Mon, 24 Apr 2023 10:00:06 -0400 Subject: [PATCH] [Infra] Add sample app to test building SPM distro across supported platforms (#11150) * Add client sample app * Build script changes and workflow changes * Style * Add note about special analytics libraries * Undo unintentional change * Update spm.yml * Update spm.yml * Fix CI for now * Workflow works locally- not on GHA? * Disable xcpretty in build.sh * Fix CI * Get PR in passing state * Fix CI for good --- .github/workflows/spm.yml | 19 + Package.swift | 2 + .../ClientApp.xcodeproj/project.pbxproj | 609 ++++++++++++++++++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 63 ++ .../ClientApp/Assets.xcassets/Contents.json | 6 + .../ClientApp/ClientApp.entitlements | 10 + .../ClientApp/ClientApp/ClientApp.swift | 24 + .../ClientApp/ClientApp/ContentView.swift | 33 + .../Preview Assets.xcassets/Contents.json | 6 + .../ClientApp/objc-header-import-test.m | 59 ++ .../ClientApp/objc-module-import-test.m | 42 ++ .../ClientApp/objcxx-header-import-test.mm | 60 ++ .../ClientApp/objcxx-module-import-test.mm | 43 ++ .../ClientApp/swift-import-test.swift | 53 ++ scripts/build.sh | 8 + 16 files changed, 1048 insertions(+) create mode 100644 SwiftPMTests/ClientApp/ClientApp.xcodeproj/project.pbxproj create mode 100644 SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/Contents.json create mode 100644 SwiftPMTests/ClientApp/ClientApp/ClientApp.entitlements create mode 100644 SwiftPMTests/ClientApp/ClientApp/ClientApp.swift create mode 100644 SwiftPMTests/ClientApp/ClientApp/ContentView.swift create mode 100644 SwiftPMTests/ClientApp/ClientApp/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 SwiftPMTests/ClientApp/ClientApp/objc-header-import-test.m create mode 100644 SwiftPMTests/ClientApp/ClientApp/objc-module-import-test.m create mode 100644 SwiftPMTests/ClientApp/ClientApp/objcxx-header-import-test.mm create mode 100644 SwiftPMTests/ClientApp/ClientApp/objcxx-module-import-test.mm create mode 100644 SwiftPMTests/ClientApp/ClientApp/swift-import-test.swift diff --git a/.github/workflows/spm.yml b/.github/workflows/spm.yml index b9d6d7c1af1..bd9f0af96c9 100644 --- a/.github/workflows/spm.yml +++ b/.github/workflows/spm.yml @@ -77,3 +77,22 @@ jobs: run: scripts/third_party/travis/retry.sh ./scripts/build.sh version-test ${{ matrix.target }} spm - name: Analytics Build Tests run: scripts/third_party/travis/retry.sh ./scripts/build.sh analytics-import-test ${{ matrix.target }} spm + + client-app: + if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' + env: + FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 + runs-on: macos-12 + strategy: + matrix: + platform: [iOS] + # TODO(Xcode 14.3): Remove above line and uncomment below array when GHA + # supports Ventura/Xcode 14.3. + # platform: [iOS, tvOS, macOS, catalyst] + steps: + - uses: actions/checkout@v3 + - uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 + with: + cache_key: ${{ matrix.os }} + - name: Build Client App –– ${{ matrix.platform }} + run: scripts/third_party/travis/retry.sh ./scripts/build.sh SwiftPMClientApp ${{ matrix.platform }} xcodebuild diff --git a/Package.swift b/Package.swift index 1072513e73c..0f68de96679 100644 --- a/Package.swift +++ b/Package.swift @@ -29,10 +29,12 @@ let package = Package( name: "FirebaseAnalytics", targets: ["FirebaseAnalyticsTarget"] ), + // This library is not designed to be imported into client source code. .library( name: "FirebaseAnalyticsWithoutAdIdSupport", targets: ["FirebaseAnalyticsWithoutAdIdSupportTarget"] ), + // This library is not designed to be imported into client source code. .library( name: "FirebaseAnalyticsOnDeviceConversion", targets: ["FirebaseAnalyticsOnDeviceConversionTarget"] diff --git a/SwiftPMTests/ClientApp/ClientApp.xcodeproj/project.pbxproj b/SwiftPMTests/ClientApp/ClientApp.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..5ac565358ba --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp.xcodeproj/project.pbxproj @@ -0,0 +1,609 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + EA05C7DE29F08D4B00D1014F /* objc-module-import-test.m in Sources */ = {isa = PBXBuildFile; fileRef = EA05C7DD29F08D4B00D1014F /* objc-module-import-test.m */; }; + EA05C7E029F0911400D1014F /* objc-header-import-test.m in Sources */ = {isa = PBXBuildFile; fileRef = EA05C7DF29F0911400D1014F /* objc-header-import-test.m */; }; + EA0BC0FF29F06D5B005B8AEE /* FirebaseAnalyticsOnDeviceConversion in Frameworks */ = {isa = PBXBuildFile; productRef = EA0BC0FE29F06D5B005B8AEE /* FirebaseAnalyticsOnDeviceConversion */; }; + EA1269B429EDF98800D79E66 /* ClientApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA1269B329EDF98800D79E66 /* ClientApp.swift */; }; + EA1269B629EDF98800D79E66 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA1269B529EDF98800D79E66 /* ContentView.swift */; }; + EA1269B829EDF98A00D79E66 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EA1269B729EDF98A00D79E66 /* Assets.xcassets */; }; + EA1269BC29EDF98A00D79E66 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EA1269BB29EDF98A00D79E66 /* Preview Assets.xcassets */; }; + EA501B1129F09594009C4DBC /* objcxx-header-import-test.mm in Sources */ = {isa = PBXBuildFile; fileRef = EA501B1029F09593009C4DBC /* objcxx-header-import-test.mm */; }; + EA501B1329F0960B009C4DBC /* objcxx-module-import-test.mm in Sources */ = {isa = PBXBuildFile; fileRef = EA501B1229F0960B009C4DBC /* objcxx-module-import-test.mm */; }; + EA7DF54329EF20B9005664A7 /* swift-import-test.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA7DF54229EF20B9005664A7 /* swift-import-test.swift */; }; + EA7DF58329EF3326005664A7 /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF58229EF3326005664A7 /* FirebaseAnalytics */; }; + EA7DF58729EF3326005664A7 /* FirebaseAnalyticsSwift in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF58629EF3326005664A7 /* FirebaseAnalyticsSwift */; }; + EA7DF58929EF3326005664A7 /* FirebaseAnalyticsWithoutAdIdSupport in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF58829EF3326005664A7 /* FirebaseAnalyticsWithoutAdIdSupport */; }; + EA7DF58B29EF3326005664A7 /* FirebaseAppCheck in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF58A29EF3326005664A7 /* FirebaseAppCheck */; }; + EA7DF58D29EF3326005664A7 /* FirebaseAppDistribution-Beta in Frameworks */ = {isa = PBXBuildFile; platformFilter = ios; productRef = EA7DF58C29EF3326005664A7 /* FirebaseAppDistribution-Beta */; }; + EA7DF58F29EF3326005664A7 /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF58E29EF3326005664A7 /* FirebaseAuth */; }; + EA7DF59129EF3326005664A7 /* FirebaseAuthCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59029EF3326005664A7 /* FirebaseAuthCombine-Community */; }; + EA7DF59329EF3326005664A7 /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59229EF3326005664A7 /* FirebaseCrashlytics */; }; + EA7DF59529EF3326005664A7 /* FirebaseDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59429EF3326005664A7 /* FirebaseDatabase */; }; + EA7DF59729EF3326005664A7 /* FirebaseDatabaseSwift in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59629EF3326005664A7 /* FirebaseDatabaseSwift */; }; + EA7DF59929EF3326005664A7 /* FirebaseDynamicLinks in Frameworks */ = {isa = PBXBuildFile; platformFilter = ios; productRef = EA7DF59829EF3326005664A7 /* FirebaseDynamicLinks */; }; + EA7DF59B29EF3326005664A7 /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59A29EF3326005664A7 /* FirebaseFirestore */; }; + EA7DF59D29EF3326005664A7 /* FirebaseFirestoreCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59C29EF3326005664A7 /* FirebaseFirestoreCombine-Community */; }; + EA7DF59F29EF3327005664A7 /* FirebaseFirestoreSwift in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF59E29EF3327005664A7 /* FirebaseFirestoreSwift */; }; + EA7DF5A129EF3327005664A7 /* FirebaseFunctions in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5A029EF3327005664A7 /* FirebaseFunctions */; }; + EA7DF5A329EF3327005664A7 /* FirebaseFunctionsCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5A229EF3327005664A7 /* FirebaseFunctionsCombine-Community */; }; + EA7DF5A529EF3327005664A7 /* FirebaseInAppMessaging-Beta in Frameworks */ = {isa = PBXBuildFile; platformFilters = (ios, maccatalyst, tvos, ); productRef = EA7DF5A429EF3327005664A7 /* FirebaseInAppMessaging-Beta */; }; + EA7DF5A729EF3327005664A7 /* FirebaseInAppMessagingSwift-Beta in Frameworks */ = {isa = PBXBuildFile; platformFilters = (ios, maccatalyst, tvos, ); productRef = EA7DF5A629EF3327005664A7 /* FirebaseInAppMessagingSwift-Beta */; }; + EA7DF5A929EF3327005664A7 /* FirebaseInstallations in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5A829EF3327005664A7 /* FirebaseInstallations */; }; + EA7DF5AB29EF3327005664A7 /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5AA29EF3327005664A7 /* FirebaseMessaging */; }; + EA7DF5AD29EF3327005664A7 /* FirebaseMLModelDownloader in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5AC29EF3327005664A7 /* FirebaseMLModelDownloader */; }; + EA7DF5AF29EF3328005664A7 /* FirebasePerformance in Frameworks */ = {isa = PBXBuildFile; platformFilters = (ios, tvos, ); productRef = EA7DF5AE29EF3328005664A7 /* FirebasePerformance */; }; + EA7DF5B129EF3328005664A7 /* FirebaseRemoteConfig in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5B029EF3328005664A7 /* FirebaseRemoteConfig */; }; + EA7DF5B329EF3328005664A7 /* FirebaseRemoteConfigSwift in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5B229EF3328005664A7 /* FirebaseRemoteConfigSwift */; }; + EA7DF5B529EF3328005664A7 /* FirebaseStorage in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5B429EF3328005664A7 /* FirebaseStorage */; }; + EA7DF5B729EF3328005664A7 /* FirebaseStorageCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = EA7DF5B629EF3328005664A7 /* FirebaseStorageCombine-Community */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + EA05C7DD29F08D4B00D1014F /* objc-module-import-test.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "objc-module-import-test.m"; sourceTree = ""; }; + EA05C7DF29F0911400D1014F /* objc-header-import-test.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "objc-header-import-test.m"; sourceTree = ""; }; + EA1269B029EDF98800D79E66 /* ClientApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ClientApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EA1269B329EDF98800D79E66 /* ClientApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientApp.swift; sourceTree = ""; }; + EA1269B529EDF98800D79E66 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + EA1269B729EDF98A00D79E66 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + EA1269B929EDF98A00D79E66 /* ClientApp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ClientApp.entitlements; sourceTree = ""; }; + EA1269BB29EDF98A00D79E66 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + EA501B1029F09593009C4DBC /* objcxx-header-import-test.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "objcxx-header-import-test.mm"; sourceTree = ""; }; + EA501B1229F0960B009C4DBC /* objcxx-module-import-test.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "objcxx-module-import-test.mm"; sourceTree = ""; }; + EA7DF54229EF20B9005664A7 /* swift-import-test.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "swift-import-test.swift"; sourceTree = ""; }; + EA7DF54929EF2A92005664A7 /* firebase-ios-sdk */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = "firebase-apple-sdk"; path = ../..; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + EA1269AD29EDF98800D79E66 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EA7DF59529EF3326005664A7 /* FirebaseDatabase in Frameworks */, + EA7DF5A329EF3327005664A7 /* FirebaseFunctionsCombine-Community in Frameworks */, + EA7DF59B29EF3326005664A7 /* FirebaseFirestore in Frameworks */, + EA7DF58729EF3326005664A7 /* FirebaseAnalyticsSwift in Frameworks */, + EA0BC0FF29F06D5B005B8AEE /* FirebaseAnalyticsOnDeviceConversion in Frameworks */, + EA7DF58329EF3326005664A7 /* FirebaseAnalytics in Frameworks */, + EA7DF59F29EF3327005664A7 /* FirebaseFirestoreSwift in Frameworks */, + EA7DF5AD29EF3327005664A7 /* FirebaseMLModelDownloader in Frameworks */, + EA7DF58B29EF3326005664A7 /* FirebaseAppCheck in Frameworks */, + EA7DF58929EF3326005664A7 /* FirebaseAnalyticsWithoutAdIdSupport in Frameworks */, + EA7DF5AB29EF3327005664A7 /* FirebaseMessaging in Frameworks */, + EA7DF58F29EF3326005664A7 /* FirebaseAuth in Frameworks */, + EA7DF5B329EF3328005664A7 /* FirebaseRemoteConfigSwift in Frameworks */, + EA7DF59329EF3326005664A7 /* FirebaseCrashlytics in Frameworks */, + EA7DF5A529EF3327005664A7 /* FirebaseInAppMessaging-Beta in Frameworks */, + EA7DF59729EF3326005664A7 /* FirebaseDatabaseSwift in Frameworks */, + EA7DF5B729EF3328005664A7 /* FirebaseStorageCombine-Community in Frameworks */, + EA7DF5B129EF3328005664A7 /* FirebaseRemoteConfig in Frameworks */, + EA7DF5A129EF3327005664A7 /* FirebaseFunctions in Frameworks */, + EA7DF58D29EF3326005664A7 /* FirebaseAppDistribution-Beta in Frameworks */, + EA7DF5AF29EF3328005664A7 /* FirebasePerformance in Frameworks */, + EA7DF59129EF3326005664A7 /* FirebaseAuthCombine-Community in Frameworks */, + EA7DF5B529EF3328005664A7 /* FirebaseStorage in Frameworks */, + EA7DF5A729EF3327005664A7 /* FirebaseInAppMessagingSwift-Beta in Frameworks */, + EA7DF59929EF3326005664A7 /* FirebaseDynamicLinks in Frameworks */, + EA7DF59D29EF3326005664A7 /* FirebaseFirestoreCombine-Community in Frameworks */, + EA7DF5A929EF3327005664A7 /* FirebaseInstallations in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + EA1269A729EDF98800D79E66 = { + isa = PBXGroup; + children = ( + EA1269C229EDF9DD00D79E66 /* Packages */, + EA1269B229EDF98800D79E66 /* ClientApp */, + EA1269B129EDF98800D79E66 /* Products */, + EA1269C429EDFC1000D79E66 /* Frameworks */, + ); + sourceTree = ""; + }; + EA1269B129EDF98800D79E66 /* Products */ = { + isa = PBXGroup; + children = ( + EA1269B029EDF98800D79E66 /* ClientApp.app */, + ); + name = Products; + sourceTree = ""; + }; + EA1269B229EDF98800D79E66 /* ClientApp */ = { + isa = PBXGroup; + children = ( + EA1269B329EDF98800D79E66 /* ClientApp.swift */, + EA7DF54229EF20B9005664A7 /* swift-import-test.swift */, + EA05C7DD29F08D4B00D1014F /* objc-module-import-test.m */, + EA05C7DF29F0911400D1014F /* objc-header-import-test.m */, + EA501B1029F09593009C4DBC /* objcxx-header-import-test.mm */, + EA501B1229F0960B009C4DBC /* objcxx-module-import-test.mm */, + EA1269B529EDF98800D79E66 /* ContentView.swift */, + EA1269B729EDF98A00D79E66 /* Assets.xcassets */, + EA1269B929EDF98A00D79E66 /* ClientApp.entitlements */, + EA1269BA29EDF98A00D79E66 /* Preview Content */, + ); + path = ClientApp; + sourceTree = ""; + }; + EA1269BA29EDF98A00D79E66 /* Preview Content */ = { + isa = PBXGroup; + children = ( + EA1269BB29EDF98A00D79E66 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + EA1269C229EDF9DD00D79E66 /* Packages */ = { + isa = PBXGroup; + children = ( + EA7DF54929EF2A92005664A7 /* firebase-ios-sdk */, + ); + name = Packages; + sourceTree = ""; + }; + EA1269C429EDFC1000D79E66 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + EA1269AF29EDF98800D79E66 /* ClientApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = EA1269BF29EDF98A00D79E66 /* Build configuration list for PBXNativeTarget "ClientApp" */; + buildPhases = ( + EA1269AC29EDF98800D79E66 /* Sources */, + EA1269AD29EDF98800D79E66 /* Frameworks */, + EA1269AE29EDF98800D79E66 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ClientApp; + packageProductDependencies = ( + EA7DF58229EF3326005664A7 /* FirebaseAnalytics */, + EA7DF58629EF3326005664A7 /* FirebaseAnalyticsSwift */, + EA7DF58829EF3326005664A7 /* FirebaseAnalyticsWithoutAdIdSupport */, + EA7DF58A29EF3326005664A7 /* FirebaseAppCheck */, + EA7DF58C29EF3326005664A7 /* FirebaseAppDistribution-Beta */, + EA7DF58E29EF3326005664A7 /* FirebaseAuth */, + EA7DF59029EF3326005664A7 /* FirebaseAuthCombine-Community */, + EA7DF59229EF3326005664A7 /* FirebaseCrashlytics */, + EA7DF59429EF3326005664A7 /* FirebaseDatabase */, + EA7DF59629EF3326005664A7 /* FirebaseDatabaseSwift */, + EA7DF59829EF3326005664A7 /* FirebaseDynamicLinks */, + EA7DF59A29EF3326005664A7 /* FirebaseFirestore */, + EA7DF59C29EF3326005664A7 /* FirebaseFirestoreCombine-Community */, + EA7DF59E29EF3327005664A7 /* FirebaseFirestoreSwift */, + EA7DF5A029EF3327005664A7 /* FirebaseFunctions */, + EA7DF5A229EF3327005664A7 /* FirebaseFunctionsCombine-Community */, + EA7DF5A429EF3327005664A7 /* FirebaseInAppMessaging-Beta */, + EA7DF5A629EF3327005664A7 /* FirebaseInAppMessagingSwift-Beta */, + EA7DF5A829EF3327005664A7 /* FirebaseInstallations */, + EA7DF5AA29EF3327005664A7 /* FirebaseMessaging */, + EA7DF5AC29EF3327005664A7 /* FirebaseMLModelDownloader */, + EA7DF5AE29EF3328005664A7 /* FirebasePerformance */, + EA7DF5B029EF3328005664A7 /* FirebaseRemoteConfig */, + EA7DF5B229EF3328005664A7 /* FirebaseRemoteConfigSwift */, + EA7DF5B429EF3328005664A7 /* FirebaseStorage */, + EA7DF5B629EF3328005664A7 /* FirebaseStorageCombine-Community */, + EA0BC0FE29F06D5B005B8AEE /* FirebaseAnalyticsOnDeviceConversion */, + ); + productName = ClientApp; + productReference = EA1269B029EDF98800D79E66 /* ClientApp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + EA1269A829EDF98800D79E66 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1420; + LastUpgradeCheck = 1420; + TargetAttributes = { + EA1269AF29EDF98800D79E66 = { + CreatedOnToolsVersion = 14.2; + LastSwiftMigration = 1430; + }; + }; + }; + buildConfigurationList = EA1269AB29EDF98800D79E66 /* Build configuration list for PBXProject "ClientApp" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = EA1269A729EDF98800D79E66; + packageReferences = ( + ); + productRefGroup = EA1269B129EDF98800D79E66 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + EA1269AF29EDF98800D79E66 /* ClientApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + EA1269AE29EDF98800D79E66 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EA1269BC29EDF98A00D79E66 /* Preview Assets.xcassets in Resources */, + EA1269B829EDF98A00D79E66 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + EA1269AC29EDF98800D79E66 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EA1269B629EDF98800D79E66 /* ContentView.swift in Sources */, + EA501B1329F0960B009C4DBC /* objcxx-module-import-test.mm in Sources */, + EA05C7DE29F08D4B00D1014F /* objc-module-import-test.m in Sources */, + EA7DF54329EF20B9005664A7 /* swift-import-test.swift in Sources */, + EA05C7E029F0911400D1014F /* objc-header-import-test.m in Sources */, + EA1269B429EDF98800D79E66 /* ClientApp.swift in Sources */, + EA501B1129F09594009C4DBC /* objcxx-header-import-test.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + EA1269BD29EDF98A00D79E66 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + EA1269BE29EDF98A00D79E66 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + EA1269C029EDF98A00D79E66 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = ClientApp/ClientApp.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"ClientApp/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 12.6; + MARKETING_VERSION = 1.0; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fcxx-modules", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.ClientApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3"; + }; + name = Debug; + }; + EA1269C129EDF98A00D79E66 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = ClientApp/ClientApp.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"ClientApp/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 12.6; + MARKETING_VERSION = 1.0; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-fcxx-modules", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.ClientApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + EA1269AB29EDF98800D79E66 /* Build configuration list for PBXProject "ClientApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EA1269BD29EDF98A00D79E66 /* Debug */, + EA1269BE29EDF98A00D79E66 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EA1269BF29EDF98A00D79E66 /* Build configuration list for PBXNativeTarget "ClientApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EA1269C029EDF98A00D79E66 /* Debug */, + EA1269C129EDF98A00D79E66 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + EA0BC0FE29F06D5B005B8AEE /* FirebaseAnalyticsOnDeviceConversion */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseAnalyticsOnDeviceConversion; + }; + EA7DF58229EF3326005664A7 /* FirebaseAnalytics */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseAnalytics; + }; + EA7DF58629EF3326005664A7 /* FirebaseAnalyticsSwift */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseAnalyticsSwift; + }; + EA7DF58829EF3326005664A7 /* FirebaseAnalyticsWithoutAdIdSupport */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseAnalyticsWithoutAdIdSupport; + }; + EA7DF58A29EF3326005664A7 /* FirebaseAppCheck */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseAppCheck; + }; + EA7DF58C29EF3326005664A7 /* FirebaseAppDistribution-Beta */ = { + isa = XCSwiftPackageProductDependency; + productName = "FirebaseAppDistribution-Beta"; + }; + EA7DF58E29EF3326005664A7 /* FirebaseAuth */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseAuth; + }; + EA7DF59029EF3326005664A7 /* FirebaseAuthCombine-Community */ = { + isa = XCSwiftPackageProductDependency; + productName = "FirebaseAuthCombine-Community"; + }; + EA7DF59229EF3326005664A7 /* FirebaseCrashlytics */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseCrashlytics; + }; + EA7DF59429EF3326005664A7 /* FirebaseDatabase */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseDatabase; + }; + EA7DF59629EF3326005664A7 /* FirebaseDatabaseSwift */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseDatabaseSwift; + }; + EA7DF59829EF3326005664A7 /* FirebaseDynamicLinks */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseDynamicLinks; + }; + EA7DF59A29EF3326005664A7 /* FirebaseFirestore */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseFirestore; + }; + EA7DF59C29EF3326005664A7 /* FirebaseFirestoreCombine-Community */ = { + isa = XCSwiftPackageProductDependency; + productName = "FirebaseFirestoreCombine-Community"; + }; + EA7DF59E29EF3327005664A7 /* FirebaseFirestoreSwift */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseFirestoreSwift; + }; + EA7DF5A029EF3327005664A7 /* FirebaseFunctions */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseFunctions; + }; + EA7DF5A229EF3327005664A7 /* FirebaseFunctionsCombine-Community */ = { + isa = XCSwiftPackageProductDependency; + productName = "FirebaseFunctionsCombine-Community"; + }; + EA7DF5A429EF3327005664A7 /* FirebaseInAppMessaging-Beta */ = { + isa = XCSwiftPackageProductDependency; + productName = "FirebaseInAppMessaging-Beta"; + }; + EA7DF5A629EF3327005664A7 /* FirebaseInAppMessagingSwift-Beta */ = { + isa = XCSwiftPackageProductDependency; + productName = "FirebaseInAppMessagingSwift-Beta"; + }; + EA7DF5A829EF3327005664A7 /* FirebaseInstallations */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseInstallations; + }; + EA7DF5AA29EF3327005664A7 /* FirebaseMessaging */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseMessaging; + }; + EA7DF5AC29EF3327005664A7 /* FirebaseMLModelDownloader */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseMLModelDownloader; + }; + EA7DF5AE29EF3328005664A7 /* FirebasePerformance */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebasePerformance; + }; + EA7DF5B029EF3328005664A7 /* FirebaseRemoteConfig */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseRemoteConfig; + }; + EA7DF5B229EF3328005664A7 /* FirebaseRemoteConfigSwift */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseRemoteConfigSwift; + }; + EA7DF5B429EF3328005664A7 /* FirebaseStorage */ = { + isa = XCSwiftPackageProductDependency; + productName = FirebaseStorage; + }; + EA7DF5B629EF3328005664A7 /* FirebaseStorageCombine-Community */ = { + isa = XCSwiftPackageProductDependency; + productName = "FirebaseStorageCombine-Community"; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = EA1269A829EDF98800D79E66 /* Project object */; +} diff --git a/SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000000..eb878970081 --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000000..532cd729c61 --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,63 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/Contents.json b/SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/Contents.json new file mode 100644 index 00000000000..73c00596a7f --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftPMTests/ClientApp/ClientApp/ClientApp.entitlements b/SwiftPMTests/ClientApp/ClientApp/ClientApp.entitlements new file mode 100644 index 00000000000..f2ef3ae0265 --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/ClientApp.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/SwiftPMTests/ClientApp/ClientApp/ClientApp.swift b/SwiftPMTests/ClientApp/ClientApp/ClientApp.swift new file mode 100644 index 00000000000..b882f558a48 --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/ClientApp.swift @@ -0,0 +1,24 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +@main +struct ClientApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/SwiftPMTests/ClientApp/ClientApp/ContentView.swift b/SwiftPMTests/ClientApp/ClientApp/ContentView.swift new file mode 100644 index 00000000000..622eef4c115 --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/ContentView.swift @@ -0,0 +1,33 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import SwiftUI + +struct ContentView: View { + var body: some View { + VStack { + Image(systemName: "globe") + .imageScale(.large) + .foregroundColor(.accentColor) + Text("Hello, world!") + } + .padding() + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/SwiftPMTests/ClientApp/ClientApp/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftPMTests/ClientApp/ClientApp/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 00000000000..73c00596a7f --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftPMTests/ClientApp/ClientApp/objc-header-import-test.m b/SwiftPMTests/ClientApp/ClientApp/objc-header-import-test.m new file mode 100644 index 00000000000..e0eaf320008 --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/objc-header-import-test.m @@ -0,0 +1,59 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file imports all Firebase products that vend an umbrella header. +// Products implemented in Swift are therefore omitted. + +// ‼️ NOTE: Changes should also be reflected in `objcxx-header-import-test.m`. + +#import +#import +#import +#import +#import "Firebase.h" +#import "FirebaseABTesting/FirebaseABTesting.h" +#import "FirebaseAnalytics/FirebaseAnalytics.h" +#import "FirebaseAppCheck/FirebaseAppCheck.h" +#if TARGET_OS_IOS && !TARGET_OS_MACCATALYST +#import +#import "FirebaseAppDistribution/FirebaseAppDistribution.h" +#endif +#import +#import +#import +#import +#import "FirebaseAuth/FirebaseAuth.h" +#import "FirebaseCore/FirebaseCore.h" +#import "FirebaseCrashlytics/FirebaseCrashlytics.h" +#import "FirebaseDatabase/FirebaseDatabase.h" +#if TARGET_OS_IOS && !TARGET_OS_MACCATALYST +#import +#import "FirebaseDynamicLinks/FirebaseDynamicLinks.h" +#endif +#import +#import "FirebaseFirestore/FirebaseFirestore.h" +#if (TARGET_OS_IOS || TARGET_OS_TV) && !TARGET_OS_MACCATALYST +#import +#import "FirebaseInAppMessaging/FirebaseInAppMessaging.h" +#endif +#import +#import +#import "FirebaseInstallations/FirebaseInstallations.h" +#import "FirebaseMessaging/FirebaseMessaging.h" +#if (TARGET_OS_IOS && !TARGET_OS_MACCATALYST) || TARGET_OS_TV +#import +#import "FirebasePerformance/FirebasePerformance.h" +#endif +#import +#import "FirebaseRemoteConfig/FirebaseRemoteConfig.h" diff --git a/SwiftPMTests/ClientApp/ClientApp/objc-module-import-test.m b/SwiftPMTests/ClientApp/ClientApp/objc-module-import-test.m new file mode 100644 index 00000000000..bbdf04d1319 --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/objc-module-import-test.m @@ -0,0 +1,42 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// ‼️ NOTE: Changes should also be reflected in `objcxx-module-import-test.m`. + +@import Firebase; +@import FirebaseABTesting; +@import FirebaseAnalytics; +@import FirebaseAppCheck; +#if TARGET_OS_IOS && !TARGET_OS_MACCATALYST +@import FirebaseAppDistribution; +#endif +@import FirebaseAuth; +@import FirebaseCore; +@import FirebaseCrashlytics; +@import FirebaseDatabase; +#if TARGET_OS_IOS && !TARGET_OS_MACCATALYST +@import FirebaseDynamicLinks; +#endif +@import FirebaseFirestore; +@import FirebaseFunctions; +#if (TARGET_OS_IOS || TARGET_OS_TV) && !TARGET_OS_MACCATALYST +@import FirebaseInAppMessaging; +#endif +@import FirebaseInstallations; +@import FirebaseMessaging; +#if (TARGET_OS_IOS && !TARGET_OS_MACCATALYST) || TARGET_OS_TV +@import FirebasePerformance; +#endif +@import FirebaseRemoteConfig; +@import FirebaseStorage; diff --git a/SwiftPMTests/ClientApp/ClientApp/objcxx-header-import-test.mm b/SwiftPMTests/ClientApp/ClientApp/objcxx-header-import-test.mm new file mode 100644 index 00000000000..e2968c32206 --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/objcxx-header-import-test.mm @@ -0,0 +1,60 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file imports all Firebase products that vend an umbrella header. +// Products implemented in Swift are therefore omitted. + +// ‼️ Changes should also be reflected in `objc-header-import-test.m`. + +// TODO(Xcode 14.3): Re-enable contest when GHA supports Xcode 14.3. +// #import +// #import +// #import +// #import +// #import "Firebase.h" +// #import "FirebaseABTesting/FirebaseABTesting.h" +// #import "FirebaseAnalytics/FirebaseAnalytics.h" +// #import "FirebaseAppCheck/FirebaseAppCheck.h" +// #if TARGET_OS_IOS && !TARGET_OS_MACCATALYST +// #import +// #import "FirebaseAppDistribution/FirebaseAppDistribution.h" +// #endif +// #import +// #import +// #import +// #import +// #import "FirebaseAuth/FirebaseAuth.h" +// #import "FirebaseCore/FirebaseCore.h" +// #import "FirebaseCrashlytics/FirebaseCrashlytics.h" +// #import "FirebaseDatabase/FirebaseDatabase.h" +// #if TARGET_OS_IOS && !TARGET_OS_MACCATALYST +// #import +// #import "FirebaseDynamicLinks/FirebaseDynamicLinks.h" +// #endif +// #import +// #import "FirebaseFirestore/FirebaseFirestore.h" +// #if (TARGET_OS_IOS || TARGET_OS_TV) && !TARGET_OS_MACCATALYST +// #import +// #import "FirebaseInAppMessaging/FirebaseInAppMessaging.h" +// #endif +// #import +// #import +// #import "FirebaseInstallations/FirebaseInstallations.h" +// #import "FirebaseMessaging/FirebaseMessaging.h" +// #if (TARGET_OS_IOS && !TARGET_OS_MACCATALYST) || TARGET_OS_TV +// #import +// #import "FirebasePerformance/FirebasePerformance.h" +// #endif +// #import +// #import "FirebaseRemoteConfig/FirebaseRemoteConfig.h" diff --git a/SwiftPMTests/ClientApp/ClientApp/objcxx-module-import-test.mm b/SwiftPMTests/ClientApp/ClientApp/objcxx-module-import-test.mm new file mode 100644 index 00000000000..eee0ddf95fc --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/objcxx-module-import-test.mm @@ -0,0 +1,43 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// ‼️ NOTE: Changes should also be reflected in `objc-module-import-test.m`. + +// TODO(Xcode 14.3): Re-enable contest when GHA supports Xcode 14.3. +// @import Firebase; +// @import FirebaseABTesting; +// @import FirebaseAnalytics; +// @import FirebaseAppCheck; +// #if TARGET_OS_IOS && !TARGET_OS_MACCATALYST +// @import FirebaseAppDistribution; +// #endif +// @import FirebaseAuth; +// @import FirebaseCore; +// @import FirebaseCrashlytics; +// @import FirebaseDatabase; +// #if TARGET_OS_IOS && !TARGET_OS_MACCATALYST +// @import FirebaseDynamicLinks; +// #endif +// @import FirebaseFirestore; +// @import FirebaseFunctions; +// #if (TARGET_OS_IOS || TARGET_OS_TV) && !TARGET_OS_MACCATALYST +// @import FirebaseInAppMessaging; +// #endif +// @import FirebaseInstallations; +// @import FirebaseMessaging; +// #if (TARGET_OS_IOS && !TARGET_OS_MACCATALYST) || TARGET_OS_TV +// @import FirebasePerformance; +// #endif +// @import FirebaseRemoteConfig; +// @import FirebaseStorage; diff --git a/SwiftPMTests/ClientApp/ClientApp/swift-import-test.swift b/SwiftPMTests/ClientApp/ClientApp/swift-import-test.swift new file mode 100644 index 00000000000..6e72283af62 --- /dev/null +++ b/SwiftPMTests/ClientApp/ClientApp/swift-import-test.swift @@ -0,0 +1,53 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// ‼️ Changes should also be reflected in the ObjC/ObjC++ files if applicable. + +import Firebase +// NOTE(ncooke3): `FirebaseABTesting` is not listed as a library. +import FirebaseABTesting +import FirebaseAnalytics +import FirebaseAnalyticsSwift +import FirebaseAppCheck +#if os(iOS) && !targetEnvironment(macCatalyst) + import FirebaseAppDistribution +#endif +import FirebaseAuth +import FirebaseAuthCombineSwift +import FirebaseCore +import FirebaseCrashlytics +import FirebaseDatabase +import FirebaseDatabaseSwift +#if os(iOS) && !targetEnvironment(macCatalyst) + import FirebaseDynamicLinks +#endif +import FirebaseFirestore +import FirebaseFirestoreCombineSwift +import FirebaseFirestoreSwift +import FirebaseFunctions +import FirebaseFunctionsCombineSwift +#if (os(iOS) || os(tvOS)) && !targetEnvironment(macCatalyst) + import FirebaseInAppMessaging + import FirebaseInAppMessagingSwift +#endif +import FirebaseInstallations +import FirebaseMessaging +import FirebaseMLModelDownloader +#if (os(iOS) && !targetEnvironment(macCatalyst)) || os(tvOS) + import FirebasePerformance +#endif +import FirebaseRemoteConfig +import FirebaseRemoteConfigSwift +import FirebaseStorage +import FirebaseStorageCombineSwift diff --git a/scripts/build.sh b/scripts/build.sh index e620c5a8d40..6c4e39a2fe9 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -698,6 +698,14 @@ case "$product-$platform-$method" in build ;; + SwiftPMClientApp-*-xcodebuild) + RunXcodebuild \ + -project 'SwiftPMTests/ClientApp/ClientApp.xcodeproj' \ + -scheme "ClientApp" \ + "${xcb_flags[@]}" \ + build + ;; + *) echo "Don't know how to build this product-platform-method combination" 1>&2