Skip to content

Commit e41c51d

Browse files
authored
Add support for using Swift Package Manager on iOS (#1379)
* Add support for using Swift Packages * Update integration_tests.yml * Revert "Update integration_tests.yml" This reverts commit c67664f. * Update crashlytics script * Update iOSPostBuild.cs * Update iOSPostBuild.cs * Update iOSPostBuild.cs * Update iOSPostBuild.cs * Update google_unity_jar_resolver.cmake
1 parent a76a712 commit e41c51d

File tree

18 files changed

+106
-11
lines changed

18 files changed

+106
-11
lines changed

analytics/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ unity_pack_cs(firebase_analytics_cs)
122122

123123
if (FIREBASE_INCLUDE_UNITY)
124124
generate_dependencies_xml(Analytics
125+
FIREBASE_SPM_DEPS
126+
"FirebaseAnalytics|Firebase/Analytics"
125127
IOS_DEPS
126128
"Firebase/Analytics"
127129
ANDROID_DEPS

app/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ unity_pack_cs(firebase_app_cs)
122122

123123
if (FIREBASE_INCLUDE_UNITY)
124124
generate_dependencies_xml(App
125+
FIREBASE_SPM_DEPS
126+
"FirebaseCore|Firebase/Core"
125127
IOS_DEPS
126128
"Firebase/Core"
127129
ANDROID_DEPS

app_check/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ unity_pack_cs(firebase_app_check_cs)
9999

100100
if (FIREBASE_INCLUDE_UNITY)
101101
generate_dependencies_xml(AppCheck
102+
FIREBASE_SPM_DEPS
103+
"FirebaseAppCheck|Firebase/AppCheck"
102104
IOS_DEPS
103105
"Firebase/AppCheck"
104106
ANDROID_DEPS

auth/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ unity_pack_cs(firebase_auth_cs)
9090

9191
if (FIREBASE_INCLUDE_UNITY)
9292
generate_dependencies_xml(Auth
93+
FIREBASE_SPM_DEPS
94+
"FirebaseAuth|Firebase/Auth"
9395
IOS_DEPS
9496
"Firebase/Auth"
9597
ANDROID_DEPS

cmake/ExpectedTestDependencies.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ FirebaseTest iOS and Android Dependencies.
44
-->
55

66
<dependencies>
7+
<remoteSwiftPackage url="https://github.com/firebase/firebase-ios-sdk.git" version="1.2.3">
8+
<swiftPackage name="TestPackage" replacesPod="TestPod,PinnedTestPod"/>
9+
<swiftPackage name="OtherPackage"/>
10+
</remoteSwiftPackage>
711
<iosPods>
812
<iosPod name="TestPod" version="1.2.3" minTargetSdk="7.8">
913
</iosPod>

cmake/dependencies.template

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Firebase@MODULE_NAME@ iOS and Android Dependencies.
44
-->
55

66
<dependencies>
7+
<remoteSwiftPackage url="https://github.com/firebase/firebase-ios-sdk.git" version="@FIREBASE_SPM_VERSION@">@FIREBASE_SPM_PACKAGES@
8+
</remoteSwiftPackage>
79
<iosPods>@IOS_PODS@
810
</iosPods>
911
<androidPackages>@ANDROID_PACKAGES@

cmake/external/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
# setting up ExternalProjects for each dependency, and then building this
1818
# project, which is done via external_rules.cmake, one directory above.
1919

20-
cmake_minimum_required(VERSION 3.1)
20+
cmake_minimum_required(VERSION 3.13.4)
2121
project(firebase_unity_download C CXX)
2222

2323
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})

cmake/firebase_unity_version.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ set(FIREBASE_UNITY_SDK_VERSION "13.6.0"
2020
set(FIREBASE_IOS_POD_VERSION "12.6.0"
2121
CACHE STRING "The version of the top-level Firebase Cocoapod to use.")
2222

23+
set(FIREBASE_SPM_VERSION "12.2.0"
24+
CACHE STRING "The version of the top-level Firebase Swift Package to use.")
25+
2326
# https://github.com/googlesamples/unity-jar-resolver
2427
set(FIREBASE_UNITY_JAR_RESOLVER_VERSION "1.2.186"
2528
CACHE STRING

cmake/play_services_resolver_deps.cmake

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,33 @@ function(generate_dependencies_xml module)
4646

4747
set(options SKIP_INSTALL)
4848
set(single ANDROID_SPEC)
49-
set(multi IOS_DEPS ANDROID_DEPS)
49+
set(multi IOS_DEPS ANDROID_DEPS FIREBASE_SPM_DEPS)
5050
# Parse the arguments into GEN_DEPS_IOS_DEPS, etc.
5151
cmake_parse_arguments(GEN_DEPS "${options}" "${single}" "${multi}" ${ARGN})
5252

5353
set(MODULE_NAME ${module})
5454
set(IOS_PODS "")
5555
set(INDENT " ")
5656

57+
set(FIREBASE_SPM_PACKAGES "")
58+
if (GEN_DEPS_FIREBASE_SPM_DEPS)
59+
foreach(SPM_DEP ${GEN_DEPS_FIREBASE_SPM_DEPS})
60+
string(REPLACE "|" ";" DEP_LIST ${SPM_DEP})
61+
list(GET DEP_LIST 0 PACKAGE_NAME)
62+
string(CONCAT FIREBASE_SPM_PACKAGES ${FIREBASE_SPM_PACKAGES}
63+
"\r\n${INDENT}<swiftPackage name=\"${PACKAGE_NAME}\"")
64+
65+
list(LENGTH DEP_LIST SPM_DEP_LENGTH)
66+
if (${SPM_DEP_LENGTH} GREATER 1)
67+
list(GET DEP_LIST 1 PACKAGE_POD_IGNORE)
68+
string(CONCAT FIREBASE_SPM_PACKAGES ${FIREBASE_SPM_PACKAGES} " replacesPod=\"${PACKAGE_POD_IGNORE}\"")
69+
endif()
70+
71+
string(CONCAT FIREBASE_SPM_PACKAGES ${FIREBASE_SPM_PACKAGES} "/>")
72+
73+
endforeach(SPM_DEP)
74+
endif()
75+
5776
foreach(IOS_DEP ${GEN_DEPS_IOS_DEPS})
5877
string(REPLACE "," ";" DEP_LIST ${IOS_DEP})
5978
list(GET DEP_LIST 0 DEP_NAME)
@@ -105,11 +124,15 @@ endfunction()
105124
# that variables can be adjusted without affecting the build.
106125
function(test_generate_xml)
107126

127+
set(FIREBASE_SPM_VERSION "1.2.3")
108128
set(FIREBASE_IOS_POD_VERSION "1.2.3")
109129
set(FIREBASE_UNITY_SDK_VERSION "4.5.6")
110130
set(DEFAULT_MIN_TARGET_SDK "7.8")
111131

112132
generate_dependencies_xml(Test
133+
FIREBASE_SPM_DEPS
134+
"TestPackage|TestPod,PinnedTestPod"
135+
"OtherPackage"
113136
IOS_DEPS
114137
"TestPod"
115138
"PinnedTestPod,7.8.9,1.0"

crashlytics/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ unity_pack_cs(firebase_crashlytics_cs)
121121

122122
if (FIREBASE_INCLUDE_UNITY)
123123
generate_dependencies_xml(Crashlytics
124+
FIREBASE_SPM_DEPS
125+
"FirebaseCrashlytics|Firebase/Crashlytics"
124126
IOS_DEPS
125127
"Firebase/Crashlytics"
126128
ANDROID_DEPS

0 commit comments

Comments
 (0)