Package.swift 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197
  1. // swift-tools-version:5.3
  2. // The swift-tools-version declares the minimum version of Swift required to build this package.
  3. // Copyright 2020 Google LLC
  4. //
  5. // Licensed under the Apache License, Version 2.0 (the "License");
  6. // you may not use this file except in compliance with the License.
  7. // You may obtain a copy of the License at
  8. //
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. //
  11. // Unless required by applicable law or agreed to in writing, software
  12. // distributed under the License is distributed on an "AS IS" BASIS,
  13. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. // See the License for the specific language governing permissions and
  15. // limitations under the License.
  16. import PackageDescription
  17. let firebaseVersion = "8.11.0"
  18. let package = Package(
  19. name: "Firebase",
  20. platforms: [.iOS(.v11), .macOS(.v10_12), .tvOS(.v12), .watchOS(.v7)],
  21. products: [
  22. .library(
  23. name: "FirebaseAnalytics",
  24. targets: ["FirebaseAnalyticsTarget"]
  25. ),
  26. .library(
  27. name: "FirebaseAnalyticsWithoutAdIdSupport",
  28. targets: ["FirebaseAnalyticsWithoutAdIdSupportTarget"]
  29. ),
  30. .library(
  31. name: "FirebaseAnalyticsSwift-Beta",
  32. targets: ["FirebaseAnalyticsSwiftTarget"]
  33. ),
  34. .library(
  35. name: "FirebaseAuth",
  36. targets: ["FirebaseAuth"]
  37. ),
  38. .library(
  39. name: "FirebaseAppCheck",
  40. targets: ["FirebaseAppCheck"]
  41. ),
  42. .library(
  43. name: "FirebaseAppDistribution-Beta",
  44. targets: ["FirebaseAppDistributionTarget"]
  45. ),
  46. .library(
  47. name: "FirebaseAuthCombine-Community",
  48. targets: ["FirebaseAuthCombineSwift"]
  49. ),
  50. .library(
  51. name: "FirebaseFirestoreCombine-Community",
  52. targets: ["FirebaseFirestoreCombineSwift"]
  53. ),
  54. .library(
  55. name: "FirebaseFunctionsCombine-Community",
  56. targets: ["FirebaseFunctionsCombineSwift"]
  57. ),
  58. .library(
  59. name: "FirebaseStorageCombine-Community",
  60. targets: ["FirebaseStorageCombineSwift"]
  61. ),
  62. .library(
  63. name: "FirebaseCrashlytics",
  64. targets: ["FirebaseCrashlytics"]
  65. ),
  66. .library(
  67. name: "FirebaseDatabase",
  68. targets: ["FirebaseDatabase"]
  69. ),
  70. .library(
  71. name: "FirebaseDatabaseSwift-Beta",
  72. targets: ["FirebaseDatabaseSwift"]
  73. ),
  74. .library(
  75. name: "FirebaseDynamicLinks",
  76. targets: ["FirebaseDynamicLinksTarget"]
  77. ),
  78. .library(
  79. name: "FirebaseFirestore",
  80. targets: ["FirebaseFirestoreTarget"]
  81. ),
  82. .library(
  83. name: "FirebaseFirestoreSwift-Beta",
  84. targets: ["FirebaseFirestoreSwiftTarget"]
  85. ),
  86. .library(
  87. name: "FirebaseFunctions",
  88. targets: ["FirebaseFunctions"]
  89. ),
  90. .library(
  91. name: "FirebaseFunctionsSwift-Beta",
  92. targets: ["FirebaseFunctionsSwift"]
  93. ),
  94. .library(
  95. name: "FirebaseInAppMessaging-Beta",
  96. targets: ["FirebaseInAppMessagingTarget"]
  97. ),
  98. .library(
  99. name: "FirebaseInAppMessagingSwift-Beta",
  100. targets: ["FirebaseInAppMessagingSwift"]
  101. ),
  102. .library(
  103. name: "FirebaseInstallations",
  104. targets: ["FirebaseInstallations"]
  105. ),
  106. .library(
  107. name: "FirebaseMessaging",
  108. targets: ["FirebaseMessaging"]
  109. ),
  110. .library(
  111. name: "FirebaseMLModelDownloader",
  112. targets: ["FirebaseMLModelDownloader"]
  113. ),
  114. .library(
  115. name: "FirebasePerformance",
  116. targets: ["FirebasePerformanceTarget"]
  117. ),
  118. .library(
  119. name: "FirebaseRemoteConfig",
  120. targets: ["FirebaseRemoteConfig"]
  121. ),
  122. .library(
  123. name: "FirebaseRemoteConfigSwift-Beta",
  124. targets: ["FirebaseRemoteConfigSwift"]
  125. ),
  126. .library(
  127. name: "FirebaseStorage",
  128. targets: ["FirebaseStorage"]
  129. ),
  130. .library(
  131. name: "FirebaseStorageSwift-Beta",
  132. targets: ["FirebaseStorageSwift"]
  133. ),
  134. ],
  135. dependencies: [
  136. .package(
  137. name: "Promises",
  138. url: "https://github.com/google/promises.git",
  139. "1.2.8" ..< "3.0.0"
  140. ),
  141. .package(
  142. name: "SwiftProtobuf",
  143. url: "https://github.com/apple/swift-protobuf.git",
  144. "1.15.0" ..< "2.0.0"
  145. ),
  146. .package(
  147. name: "GoogleAppMeasurement",
  148. url: "https://github.com/google/GoogleAppMeasurement.git",
  149. // Note that CI changes the version to the head of main for CI.
  150. // See scripts/setup_spm_tests.sh.
  151. .exact("8.9.1")
  152. ),
  153. .package(
  154. name: "GoogleDataTransport",
  155. url: "https://github.com/google/GoogleDataTransport.git",
  156. "9.1.2" ..< "10.0.0"
  157. ),
  158. .package(
  159. name: "GoogleUtilities",
  160. url: "https://github.com/google/GoogleUtilities.git",
  161. "7.6.0" ..< "8.0.0"
  162. ),
  163. .package(
  164. name: "GTMSessionFetcher",
  165. url: "https://github.com/google/gtm-session-fetcher.git",
  166. "1.5.0" ..< "2.0.0"
  167. ),
  168. .package(
  169. name: "nanopb",
  170. url: "https://github.com/firebase/nanopb.git",
  171. "2.30908.0" ..< "2.30909.0"
  172. ),
  173. .package(
  174. name: "abseil",
  175. url: "https://github.com/firebase/abseil-cpp-SwiftPM.git",
  176. "0.20200225.4" ..< "0.20200226.0"
  177. ),
  178. .package(
  179. name: "gRPC",
  180. url: "https://github.com/firebase/grpc-SwiftPM.git",
  181. "1.28.4" ..< "1.29.0"
  182. ),
  183. .package(
  184. name: "OCMock",
  185. url: "https://github.com/erikdoe/ocmock.git",
  186. .revision("c5eeaa6dde7c308a5ce48ae4d4530462dd3a1110")
  187. ),
  188. .package(
  189. name: "leveldb",
  190. url: "https://github.com/firebase/leveldb.git",
  191. "1.22.2" ..< "1.23.0"
  192. ),
  193. .package(
  194. name: "GCDWebServer",
  195. url: "https://github.com/SlaunchaMan/GCDWebServer.git",
  196. .revision("935e2736044e71e5341663c3cc9a335ba6867a2b")
  197. ),
  198. // Branches need a force update with a run with the revision set like below.
  199. // .package(url: "https://github.com/paulb777/nanopb.git", .revision("564392bd87bd093c308a3aaed3997466efb95f74"))
  200. ],
  201. targets: [
  202. .target(
  203. name: "Firebase",
  204. path: "CoreOnly/Sources",
  205. publicHeadersPath: "./"
  206. ),
  207. .target(
  208. name: "FirebaseCore",
  209. dependencies: [
  210. "Firebase",
  211. "FirebaseCoreDiagnostics",
  212. .product(name: "GULEnvironment", package: "GoogleUtilities"),
  213. .product(name: "GULLogger", package: "GoogleUtilities"),
  214. ],
  215. path: "FirebaseCore/Sources",
  216. publicHeadersPath: "Public",
  217. cSettings: [
  218. .headerSearchPath("../.."),
  219. .define("Firebase_VERSION", to: firebaseVersion),
  220. // TODO: - Add support for cflags cSetting so that we can set the -fno-autolink option
  221. ],
  222. linkerSettings: [
  223. .linkedFramework("UIKit", .when(platforms: [.iOS, .tvOS])),
  224. .linkedFramework("AppKit", .when(platforms: [.macOS])),
  225. ]
  226. ),
  227. .testTarget(
  228. name: "CoreUnit",
  229. dependencies: ["FirebaseCore", "SharedTestUtilities", "OCMock"],
  230. path: "FirebaseCore/Tests/Unit",
  231. exclude: ["Resources/GoogleService-Info.plist"],
  232. cSettings: [
  233. .headerSearchPath("../../.."),
  234. ]
  235. ),
  236. .target(
  237. name: "FirebaseCoreDiagnostics",
  238. dependencies: [
  239. .product(name: "GoogleDataTransport", package: "GoogleDataTransport"),
  240. .product(name: "GULEnvironment", package: "GoogleUtilities"),
  241. .product(name: "GULLogger", package: "GoogleUtilities"),
  242. .product(name: "nanopb", package: "nanopb"),
  243. ],
  244. path: "Firebase/CoreDiagnostics/FIRCDLibrary",
  245. publicHeadersPath: ".",
  246. cSettings: [
  247. .headerSearchPath("../../.."),
  248. .define("PB_FIELD_32BIT", to: "1"),
  249. .define("PB_NO_PACKED_STRUCTS", to: "1"),
  250. .define("PB_ENABLE_MALLOC", to: "1"),
  251. ]
  252. ),
  253. .target(
  254. name: "FirebaseABTesting",
  255. dependencies: ["FirebaseCore"],
  256. path: "FirebaseABTesting/Sources",
  257. publicHeadersPath: "Public",
  258. cSettings: [
  259. .headerSearchPath("../../"),
  260. ]
  261. ),
  262. .testTarget(
  263. name: "ABTestingUnit",
  264. dependencies: ["FirebaseABTesting", "OCMock"],
  265. path: "FirebaseABTesting/Tests/Unit",
  266. resources: [.process("Resources")],
  267. cSettings: [
  268. .headerSearchPath("../../.."),
  269. ]
  270. ),
  271. .target(
  272. name: "FirebaseAnalyticsTarget",
  273. dependencies: [.target(name: "FirebaseAnalyticsWrapper",
  274. condition: .when(platforms: [.iOS, .macOS, .tvOS]))],
  275. path: "SwiftPM-PlatformExclude/FirebaseAnalyticsWrap"
  276. ),
  277. .target(
  278. name: "FirebaseAnalyticsWrapper",
  279. dependencies: [
  280. .target(name: "FirebaseAnalytics", condition: .when(platforms: [.iOS, .macOS, .tvOS])),
  281. .product(name: "GoogleAppMeasurement",
  282. package: "GoogleAppMeasurement",
  283. condition: .when(platforms: [.iOS, .macOS, .tvOS])),
  284. "FirebaseCore",
  285. "FirebaseInstallations",
  286. .product(name: "GULAppDelegateSwizzler", package: "GoogleUtilities"),
  287. .product(name: "GULMethodSwizzler", package: "GoogleUtilities"),
  288. .product(name: "GULNSData", package: "GoogleUtilities"),
  289. .product(name: "GULNetwork", package: "GoogleUtilities"),
  290. .product(name: "nanopb", package: "nanopb"),
  291. ],
  292. path: "FirebaseAnalyticsWrapper",
  293. linkerSettings: [
  294. .linkedLibrary("sqlite3"),
  295. .linkedLibrary("c++"),
  296. .linkedLibrary("z"),
  297. .linkedFramework("StoreKit"),
  298. ]
  299. ),
  300. .binaryTarget(
  301. name: "FirebaseAnalytics",
  302. url: "https://dl.google.com/firebase/ios/swiftpm/8.9.1/FirebaseAnalytics.zip",
  303. checksum: "397688619b1d2eb2731fd06d094b95498e753519b4c0c75a6f7071bcafd9d1f1"
  304. ),
  305. .target(
  306. name: "FirebaseAnalyticsSwiftTarget",
  307. dependencies: [.target(name: "FirebaseAnalyticsSwift",
  308. condition: .when(platforms: [.iOS, .macOS, .tvOS]))],
  309. path: "SwiftPM-PlatformExclude/FirebaseAnalyticsSwiftWrap"
  310. ),
  311. .target(
  312. name: "FirebaseAnalyticsSwift",
  313. dependencies: ["FirebaseAnalyticsWrapper"],
  314. path: "FirebaseAnalyticsSwift/Sources"
  315. ),
  316. .target(
  317. name: "FirebaseAnalyticsWithoutAdIdSupportTarget",
  318. dependencies: [.target(name: "FirebaseAnalyticsWithoutAdIdSupportWrapper",
  319. condition: .when(platforms: [.iOS, .macOS, .tvOS]))],
  320. path: "SwiftPM-PlatformExclude/FirebaseAnalyticsWithoutAdIdSupportWrap"
  321. ),
  322. .target(
  323. name: "FirebaseAnalyticsWithoutAdIdSupportWrapper",
  324. dependencies: [
  325. .target(name: "FirebaseAnalytics", condition: .when(platforms: [.iOS, .macOS, .tvOS])),
  326. .product(name: "GoogleAppMeasurementWithoutAdIdSupport",
  327. package: "GoogleAppMeasurement",
  328. condition: .when(platforms: [.iOS])),
  329. "FirebaseCore",
  330. "FirebaseInstallations",
  331. .product(name: "GULAppDelegateSwizzler", package: "GoogleUtilities"),
  332. .product(name: "GULMethodSwizzler", package: "GoogleUtilities"),
  333. .product(name: "GULNSData", package: "GoogleUtilities"),
  334. .product(name: "GULNetwork", package: "GoogleUtilities"),
  335. .product(name: "nanopb", package: "nanopb"),
  336. ],
  337. path: "FirebaseAnalyticsWithoutAdIdSupportWrapper",
  338. linkerSettings: [
  339. .linkedLibrary("sqlite3"),
  340. .linkedLibrary("c++"),
  341. .linkedLibrary("z"),
  342. .linkedFramework("StoreKit"),
  343. ]
  344. ),
  345. .target(
  346. name: "FirebaseAppDistributionTarget",
  347. dependencies: [.target(name: "FirebaseAppDistribution",
  348. condition: .when(platforms: [.iOS]))],
  349. path: "SwiftPM-PlatformExclude/FirebaseAppDistributionWrap"
  350. ),
  351. .target(
  352. name: "FirebaseAppDistribution",
  353. dependencies: [
  354. "FirebaseCore",
  355. "FirebaseInstallations",
  356. .product(name: "GoogleDataTransport", package: "GoogleDataTransport"),
  357. .product(name: "GULAppDelegateSwizzler", package: "GoogleUtilities"),
  358. .product(name: "GULUserDefaults", package: "GoogleUtilities"),
  359. ],
  360. path: "FirebaseAppDistribution/Sources",
  361. publicHeadersPath: "Public",
  362. cSettings: [
  363. .headerSearchPath("../../"),
  364. ]
  365. ),
  366. .testTarget(
  367. name: "AppDistributionUnit",
  368. dependencies: ["FirebaseAppDistribution", "OCMock"],
  369. path: "FirebaseAppDistribution/Tests/Unit",
  370. resources: [.process("Resources")],
  371. cSettings: [
  372. .headerSearchPath("../../.."),
  373. ]
  374. ),
  375. .target(
  376. name: "FirebaseAuth",
  377. dependencies: [
  378. "FirebaseCore",
  379. .product(name: "GULAppDelegateSwizzler", package: "GoogleUtilities"),
  380. .product(name: "GULEnvironment", package: "GoogleUtilities"),
  381. .product(name: "GTMSessionFetcherCore", package: "GTMSessionFetcher"),
  382. ],
  383. path: "FirebaseAuth/Sources",
  384. publicHeadersPath: "Public",
  385. cSettings: [
  386. .headerSearchPath("../../"),
  387. ],
  388. linkerSettings: [
  389. .linkedFramework("Security"),
  390. .linkedFramework("SafariServices", .when(platforms: [.iOS])),
  391. ]
  392. ),
  393. .testTarget(
  394. name: "AuthUnit",
  395. dependencies: ["FirebaseAuth", "OCMock"],
  396. path: "FirebaseAuth/Tests/Unit",
  397. exclude: [
  398. "FIRAuthKeychainServicesTests.m", // TODO: figure out SPM keychain testing
  399. "FIRAuthTests.m",
  400. "FIRUserTests.m",
  401. ],
  402. cSettings: [
  403. .headerSearchPath("../../.."),
  404. ]
  405. ),
  406. .target(
  407. name: "FirebaseAuthCombineSwift",
  408. dependencies: ["FirebaseAuth"],
  409. path: "FirebaseCombineSwift/Sources/Auth"
  410. ),
  411. .target(
  412. name: "FirebaseFirestoreCombineSwift",
  413. dependencies: [
  414. "FirebaseFirestore",
  415. "FirebaseFirestoreSwift",
  416. ],
  417. path: "FirebaseCombineSwift/Sources/Firestore"
  418. ),
  419. .target(
  420. name: "FirebaseStorageCombineSwift",
  421. dependencies: [
  422. "FirebaseStorage",
  423. "FirebaseStorageSwift",
  424. ],
  425. path: "FirebaseCombineSwift/Sources/Storage"
  426. ),
  427. .target(
  428. name: "FirebaseCrashlytics",
  429. dependencies: ["FirebaseCore", "FirebaseInstallations",
  430. .product(name: "GoogleDataTransport", package: "GoogleDataTransport"),
  431. .product(name: "GULEnvironment", package: "GoogleUtilities"),
  432. .product(name: "FBLPromises", package: "Promises"),
  433. .product(name: "nanopb", package: "nanopb")],
  434. path: "Crashlytics",
  435. exclude: [
  436. "run",
  437. "CHANGELOG.md",
  438. "LICENSE",
  439. "README.md",
  440. "ProtoSupport/",
  441. "UnitTests/",
  442. "generate_project.sh",
  443. "upload-symbols",
  444. "third_party/libunwind/LICENSE",
  445. ],
  446. sources: [
  447. "Crashlytics/",
  448. "Protogen/",
  449. "Shared/",
  450. "third_party/libunwind/dwarf.h",
  451. ],
  452. publicHeadersPath: "Crashlytics/Public",
  453. cSettings: [
  454. .headerSearchPath(".."),
  455. .define("DISPLAY_VERSION", to: firebaseVersion),
  456. .define("CLS_SDK_NAME", to: "Crashlytics iOS SDK", .when(platforms: [.iOS])),
  457. .define("CLS_SDK_NAME", to: "Crashlytics macOS SDK", .when(platforms: [.macOS])),
  458. .define("CLS_SDK_NAME", to: "Crashlytics tvOS SDK", .when(platforms: [.tvOS])),
  459. .define("CLS_SDK_NAME", to: "Crashlytics watchOS SDK", .when(platforms: [.watchOS])),
  460. .define("PB_FIELD_32BIT", to: "1"),
  461. .define("PB_NO_PACKED_STRUCTS", to: "1"),
  462. .define("PB_ENABLE_MALLOC", to: "1"),
  463. ],
  464. linkerSettings: [
  465. .linkedFramework("Security"),
  466. .linkedFramework("SystemConfiguration", .when(platforms: [.iOS, .macOS, .tvOS])),
  467. ]
  468. ),
  469. .target(
  470. name: "FirebaseDatabase",
  471. dependencies: [
  472. "FirebaseCore",
  473. "leveldb",
  474. ],
  475. path: "FirebaseDatabase/Sources",
  476. exclude: [
  477. "third_party/Wrap-leveldb/LICENSE",
  478. "third_party/SocketRocket/LICENSE",
  479. "third_party/FImmutableSortedDictionary/LICENSE",
  480. "third_party/SocketRocket/aa2297808c225710e267afece4439c256f6efdb3",
  481. ],
  482. publicHeadersPath: "Public",
  483. cSettings: [
  484. .headerSearchPath("../../"),
  485. ],
  486. linkerSettings: [
  487. .linkedFramework("CFNetwork"),
  488. .linkedFramework("Security"),
  489. .linkedFramework("SystemConfiguration", .when(platforms: [.iOS, .macOS, .tvOS])),
  490. .linkedFramework("WatchKit", .when(platforms: [.watchOS])),
  491. ]
  492. ),
  493. .testTarget(
  494. name: "DatabaseUnit",
  495. dependencies: ["FirebaseDatabase", "OCMock", "SharedTestUtilities"],
  496. path: "FirebaseDatabase/Tests/",
  497. exclude: [
  498. // Disable Swift tests as mixed targets are not supported (Xcode 12.4).
  499. "Unit/Swift",
  500. "Integration/",
  501. ],
  502. resources: [.process("Resources")],
  503. cSettings: [
  504. .headerSearchPath("../.."),
  505. ]
  506. ),
  507. .testTarget(
  508. name: "DatabaseUnitSwift",
  509. dependencies: ["FirebaseDatabase"],
  510. path: "FirebaseDatabase/Tests/Unit/Swift",
  511. cSettings: [
  512. .headerSearchPath("../.."),
  513. ]
  514. ),
  515. .target(
  516. name: "FirebaseDatabaseSwift",
  517. dependencies: ["FirebaseDatabase", "FirebaseSharedSwift"],
  518. path: "FirebaseDatabaseSwift/Sources"
  519. ),
  520. .testTarget(
  521. name: "FirebaseDatabaseSwiftTests",
  522. dependencies: ["FirebaseDatabase", "FirebaseDatabaseSwift"],
  523. path: "FirebaseDatabaseSwift/Tests/"
  524. ),
  525. .target(
  526. name: "FirebaseSharedSwift",
  527. path: "FirebaseSharedSwift/Sources",
  528. exclude: [
  529. "third_party/FirebaseDataEncoder/LICENSE",
  530. "third_party/FirebaseDataEncoder/METADATA",
  531. ]
  532. ),
  533. .testTarget(
  534. name: "FirebaseSharedSwiftTests",
  535. dependencies: ["FirebaseSharedSwift"],
  536. path: "FirebaseSharedSwift/Tests/"
  537. ),
  538. .target(
  539. name: "FirebaseDynamicLinksTarget",
  540. dependencies: [.target(name: "FirebaseDynamicLinks",
  541. condition: .when(platforms: [.iOS]))],
  542. path: "SwiftPM-PlatformExclude/FirebaseDynamicLinksWrap"
  543. ),
  544. .target(
  545. name: "FirebaseDynamicLinks",
  546. dependencies: ["FirebaseCore"],
  547. path: "FirebaseDynamicLinks/Sources",
  548. publicHeadersPath: "Public",
  549. cSettings: [
  550. .headerSearchPath("../../"),
  551. .define("FIRDynamicLinks3P", to: "1"),
  552. .define("GIN_SCION_LOGGING", to: "1"),
  553. ],
  554. linkerSettings: [
  555. .linkedFramework("QuartzCore"),
  556. ]
  557. ),
  558. .target(
  559. name: "FirebaseFirestoreTarget",
  560. dependencies: [.target(name: "FirebaseFirestore",
  561. condition: .when(platforms: [.iOS, .tvOS, .macOS]))],
  562. path: "SwiftPM-PlatformExclude/FirebaseFirestoreWrap"
  563. ),
  564. .target(
  565. name: "FirebaseFirestore",
  566. dependencies: [
  567. "FirebaseCore",
  568. "leveldb",
  569. .product(name: "nanopb", package: "nanopb"),
  570. .product(name: "abseil", package: "abseil"),
  571. .product(name: "gRPC-cpp", package: "gRPC"),
  572. ],
  573. path: "Firestore",
  574. exclude: [
  575. "CHANGELOG.md",
  576. "CMakeLists.txt",
  577. "Example/",
  578. "LICENSE",
  579. "Protos/CMakeLists.txt",
  580. "Protos/Podfile",
  581. "Protos/README.md",
  582. "Protos/build_protos.py",
  583. "Protos/cpp/",
  584. "Protos/lib/",
  585. "Protos/nanopb_cpp_generator.py",
  586. "Protos/protos/",
  587. "README.md",
  588. "Source/CMakeLists.txt",
  589. "Swift/",
  590. "core/CMakeLists.txt",
  591. "core/src/util/config_detected.h.in",
  592. "core/test/",
  593. "fuzzing/",
  594. "test.sh",
  595. // Swift PM doesn't recognize hpp files, so we're relying on search paths
  596. // to find third_party/nlohmann_json/json.hpp.
  597. "third_party/",
  598. // Exclude alternate implementations for other platforms
  599. "core/src/remote/connectivity_monitor_noop.cc",
  600. "core/src/util/filesystem_win.cc",
  601. "core/src/util/log_stdio.cc",
  602. "core/src/util/secure_random_openssl.cc",
  603. ],
  604. sources: [
  605. "Source/",
  606. "Protos/nanopb/",
  607. "core/include/",
  608. "core/src",
  609. ],
  610. publicHeadersPath: "Source/Public",
  611. cSettings: [
  612. .headerSearchPath("../"),
  613. .headerSearchPath("Source/Public/FirebaseFirestore"),
  614. .headerSearchPath("Protos/nanopb"),
  615. .define("PB_FIELD_32BIT", to: "1"),
  616. .define("PB_NO_PACKED_STRUCTS", to: "1"),
  617. .define("PB_ENABLE_MALLOC", to: "1"),
  618. .define("FIRFirestore_VERSION", to: firebaseVersion),
  619. ],
  620. linkerSettings: [
  621. .linkedFramework("SystemConfiguration", .when(platforms: [.iOS, .macOS, .tvOS])),
  622. .linkedFramework("UIKit", .when(platforms: [.iOS, .tvOS])),
  623. .linkedLibrary("c++"),
  624. ]
  625. ),
  626. .target(
  627. name: "FirebaseFirestoreSwiftTarget",
  628. dependencies: [.target(name: "FirebaseFirestoreSwift",
  629. condition: .when(platforms: [.iOS, .tvOS, .macOS]))],
  630. path: "SwiftPM-PlatformExclude/FirebaseFirestoreSwiftWrap"
  631. ),
  632. .target(
  633. name: "FirebaseFirestoreSwift",
  634. dependencies: ["FirebaseFirestore"],
  635. path: "Firestore",
  636. exclude: [
  637. "CHANGELOG.md",
  638. "CMakeLists.txt",
  639. "Example/",
  640. "LICENSE",
  641. "Protos/",
  642. "README.md",
  643. "Source/",
  644. "core/",
  645. "fuzzing/",
  646. "test.sh",
  647. "Swift/CHANGELOG.md",
  648. "Swift/README.md",
  649. "Swift/Tests/",
  650. "third_party/nlohmann_json",
  651. "third_party/FirestoreEncoder/LICENSE",
  652. "third_party/FirestoreEncoder/METADATA",
  653. ],
  654. sources: [
  655. "Swift/Source/",
  656. "third_party/FirestoreEncoder/",
  657. ]
  658. ),
  659. // MARK: - Firebase Functions
  660. .target(
  661. name: "FirebaseFunctions",
  662. dependencies: [
  663. "FirebaseCore",
  664. .product(name: "GTMSessionFetcherCore", package: "GTMSessionFetcher"),
  665. ],
  666. path: "FirebaseFunctions/Sources",
  667. publicHeadersPath: "Public",
  668. cSettings: [
  669. .headerSearchPath("../../"),
  670. ]
  671. ),
  672. .target(
  673. name: "FirebaseFunctionsSwift",
  674. dependencies: [
  675. "FirebaseFunctions",
  676. "FirebaseSharedSwift",
  677. ],
  678. path: "FirebaseFunctionsSwift/Sources"
  679. ),
  680. .testTarget(
  681. name: "FirebaseFunctionsSwiftUnit",
  682. dependencies: ["FirebaseFunctionsSwift",
  683. "FirebaseFunctionsTestingSupport",
  684. "SharedTestUtilities"],
  685. path: "FirebaseFunctionsSwift/Tests"
  686. ),
  687. .target(
  688. name: "FirebaseFunctionsCombineSwift",
  689. dependencies: ["FirebaseFunctions"],
  690. path: "FirebaseCombineSwift/Sources/Functions"
  691. ),
  692. .testTarget(
  693. name: "FunctionsCombineUnit",
  694. dependencies: ["FirebaseFunctionsCombineSwift",
  695. "FirebaseFunctionsTestingSupport",
  696. "SharedTestUtilities"],
  697. path: "FirebaseFunctions/Tests/CombineUnit"
  698. ),
  699. .testTarget(
  700. name: "FunctionsUnit",
  701. dependencies: ["FirebaseFunctions",
  702. "SharedTestUtilities"],
  703. path: "FirebaseFunctions/Tests/Unit",
  704. cSettings: [
  705. .headerSearchPath("../../../"),
  706. ]
  707. ),
  708. .testTarget(
  709. name: "FunctionsUnitSwift",
  710. dependencies: ["FirebaseFunctions"],
  711. path: "FirebaseFunctions/Tests/SwiftUnit"
  712. ),
  713. .testTarget(
  714. name: "FunctionsIntegration",
  715. dependencies: ["FirebaseFunctions",
  716. "SharedTestUtilities"],
  717. path: "FirebaseFunctions/Tests/Integration",
  718. cSettings: [
  719. .headerSearchPath("../../../"),
  720. ]
  721. ),
  722. .testTarget(
  723. name: "FunctionsSwiftIntegration",
  724. dependencies: ["FirebaseFunctions",
  725. "FirebaseFunctionsTestingSupport",
  726. "SharedTestUtilities"],
  727. path: "FirebaseFunctions/Tests/SwiftIntegration"
  728. ),
  729. .target(
  730. name: "FirebaseFunctionsTestingSupport",
  731. dependencies: ["FirebaseFunctions"],
  732. path: "FirebaseTestingSupport/Functions/Sources",
  733. publicHeadersPath: "Public",
  734. cSettings: [
  735. .headerSearchPath("../../.."),
  736. ]
  737. ),
  738. // MARK: - Firebase In App Messaging
  739. .target(
  740. name: "FirebaseInAppMessagingTarget",
  741. dependencies: [
  742. .target(name: "FirebaseInAppMessaging", condition: .when(platforms: [.iOS, .tvOS])),
  743. ],
  744. path: "SwiftPM-PlatformExclude/FirebaseInAppMessagingWrap"
  745. ),
  746. .target(
  747. name: "FirebaseInAppMessaging",
  748. dependencies: [
  749. "FirebaseCore",
  750. "FirebaseInstallations",
  751. "FirebaseABTesting",
  752. .product(name: "GULEnvironment", package: "GoogleUtilities"),
  753. .product(name: "nanopb", package: "nanopb"),
  754. .target(name: "FirebaseInAppMessaging_iOS", condition: .when(platforms: [.iOS])),
  755. ],
  756. path: "FirebaseInAppMessaging/Sources",
  757. exclude: [
  758. "DefaultUI/CHANGELOG.md",
  759. "DefaultUI/README.md",
  760. ],
  761. publicHeadersPath: "Public",
  762. cSettings: [
  763. .headerSearchPath("../../"),
  764. .define("PB_FIELD_32BIT", to: "1"),
  765. .define("PB_NO_PACKED_STRUCTS", to: "1"),
  766. .define("PB_ENABLE_MALLOC", to: "1"),
  767. ]
  768. ),
  769. .target(
  770. name: "FirebaseInAppMessaging_iOS",
  771. path: "FirebaseInAppMessaging/iOS",
  772. resources: [.process("Resources")]
  773. ),
  774. .target(
  775. name: "FirebaseInAppMessagingSwift",
  776. dependencies: ["FirebaseInAppMessaging"],
  777. path: "FirebaseInAppMessaging/Swift/Source"
  778. ),
  779. .target(
  780. name: "FirebaseInstallations",
  781. dependencies: [
  782. "FirebaseCore",
  783. .product(name: "FBLPromises", package: "Promises"),
  784. .product(name: "GULEnvironment", package: "GoogleUtilities"),
  785. .product(name: "GULUserDefaults", package: "GoogleUtilities"),
  786. ],
  787. path: "FirebaseInstallations/Source/Library",
  788. publicHeadersPath: "Public",
  789. cSettings: [
  790. .headerSearchPath("../../../"),
  791. ],
  792. linkerSettings: [
  793. .linkedFramework("Security"),
  794. ]
  795. ),
  796. .target(
  797. name: "FirebaseMLModelDownloader",
  798. dependencies: [
  799. "FirebaseCore",
  800. "FirebaseInstallations",
  801. .product(name: "GULLogger", package: "GoogleUtilities"),
  802. "SwiftProtobuf",
  803. ],
  804. path: "FirebaseMLModelDownloader/Sources",
  805. exclude: [
  806. "proto/firebase_ml_log_sdk.proto",
  807. ],
  808. cSettings: [
  809. .define("FIRMLModelDownloader_VERSION", to: firebaseVersion),
  810. ]
  811. ),
  812. .testTarget(
  813. name: "FirebaseMLModelDownloaderUnit",
  814. dependencies: ["FirebaseMLModelDownloader"],
  815. path: "FirebaseMLModelDownloader/Tests/Unit"
  816. ),
  817. .target(
  818. name: "FirebaseMessaging",
  819. dependencies: [
  820. "FirebaseCore",
  821. "FirebaseInstallations",
  822. .product(name: "GULAppDelegateSwizzler", package: "GoogleUtilities"),
  823. .product(name: "GULEnvironment", package: "GoogleUtilities"),
  824. .product(name: "GULReachability", package: "GoogleUtilities"),
  825. .product(name: "GULUserDefaults", package: "GoogleUtilities"),
  826. .product(name: "GoogleDataTransport", package: "GoogleDataTransport"),
  827. .product(name: "nanopb", package: "nanopb"),
  828. ],
  829. path: "FirebaseMessaging/Sources",
  830. publicHeadersPath: "Public",
  831. cSettings: [
  832. .headerSearchPath("../../"),
  833. .define("PB_FIELD_32BIT", to: "1"),
  834. .define("PB_NO_PACKED_STRUCTS", to: "1"),
  835. .define("PB_ENABLE_MALLOC", to: "1"),
  836. ],
  837. linkerSettings: [
  838. .linkedFramework("SystemConfiguration", .when(platforms: [.iOS, .macOS, .tvOS])),
  839. ]
  840. ),
  841. .testTarget(
  842. name: "MessagingUnit",
  843. dependencies: ["FirebaseMessaging", "SharedTestUtilities", "OCMock"],
  844. path: "FirebaseMessaging/Tests/UnitTests",
  845. exclude: [
  846. "FIRMessagingContextManagerServiceTest.m", // TODO: Adapt its NSBundle usage to SPM.
  847. ],
  848. cSettings: [
  849. .headerSearchPath("../../.."),
  850. ]
  851. ),
  852. .target(
  853. name: "FirebasePerformanceTarget",
  854. dependencies: [.target(name: "FirebasePerformance",
  855. condition: .when(platforms: [.iOS, .tvOS]))],
  856. path: "SwiftPM-PlatformExclude/FirebasePerformanceWrap"
  857. ),
  858. .target(
  859. name: "FirebasePerformance",
  860. dependencies: [
  861. "FirebaseCore",
  862. "FirebaseInstallations",
  863. "FirebaseRemoteConfig",
  864. .product(name: "GoogleDataTransport", package: "GoogleDataTransport"),
  865. .product(name: "GULEnvironment", package: "GoogleUtilities"),
  866. .product(name: "GULISASwizzler", package: "GoogleUtilities"),
  867. .product(name: "GULMethodSwizzler", package: "GoogleUtilities"),
  868. .product(name: "GULUserDefaults", package: "GoogleUtilities"),
  869. .product(name: "nanopb", package: "nanopb"),
  870. ],
  871. path: "FirebasePerformance/Sources",
  872. publicHeadersPath: "Public",
  873. cSettings: [
  874. .headerSearchPath("../../"),
  875. .define("PB_FIELD_32BIT", to: "1"),
  876. .define("PB_NO_PACKED_STRUCTS", to: "1"),
  877. .define("PB_ENABLE_MALLOC", to: "1"),
  878. .define("FIRPerformance_LIB_VERSION", to: firebaseVersion),
  879. ],
  880. linkerSettings: [
  881. .linkedFramework("SystemConfiguration", .when(platforms: [.iOS, .tvOS])),
  882. .linkedFramework("MobileCoreServices", .when(platforms: [.iOS, .tvOS])),
  883. .linkedFramework("QuartzCore", .when(platforms: [.iOS, .tvOS])),
  884. ]
  885. ),
  886. .testTarget(
  887. name: "PerformanceUnit",
  888. dependencies: [
  889. "FirebasePerformanceTarget",
  890. "OCMock",
  891. "SharedTestUtilities",
  892. "GCDWebServer",
  893. ],
  894. path: "FirebasePerformance/Tests/Unit",
  895. resources: [
  896. .process("FPRURLFilterTests-Info.plist"),
  897. .process("Server/smallDownloadFile"),
  898. .process("Server/bigDownloadFile"),
  899. ],
  900. cSettings: [
  901. .headerSearchPath("../../.."),
  902. .define("PB_FIELD_32BIT", to: "1"),
  903. .define("PB_NO_PACKED_STRUCTS", to: "1"),
  904. .define("PB_ENABLE_MALLOC", to: "1"),
  905. ]
  906. ),
  907. .target(
  908. name: "SharedTestUtilities",
  909. dependencies: ["FirebaseCore", "OCMock"],
  910. path: "SharedTestUtilities",
  911. publicHeadersPath: "./",
  912. cSettings: [
  913. .headerSearchPath("../"),
  914. ]
  915. ),
  916. // MARK: - Firebase Remote Config
  917. .target(
  918. name: "FirebaseRemoteConfig",
  919. dependencies: [
  920. "FirebaseCore",
  921. "FirebaseABTesting",
  922. "FirebaseInstallations",
  923. .product(name: "GULNSData", package: "GoogleUtilities"),
  924. ],
  925. path: "FirebaseRemoteConfig/Sources",
  926. publicHeadersPath: "Public",
  927. cSettings: [
  928. .headerSearchPath("../../"),
  929. ]
  930. ),
  931. .testTarget(
  932. name: "RemoteConfigUnit",
  933. dependencies: ["FirebaseRemoteConfig", "OCMock"],
  934. path: "FirebaseRemoteConfig/Tests/Unit",
  935. exclude: [
  936. // Need to be evaluated/ported to RC V2.
  937. "RCNConfigAnalyticsTest.m",
  938. "RCNConfigSettingsTest.m",
  939. "RCNConfigTest.m",
  940. "RCNRemoteConfig+FIRAppTest.m",
  941. "RCNThrottlingTests.m",
  942. ],
  943. resources: [
  944. .process("SecondApp-GoogleService-Info.plist"),
  945. .process("Defaults-testInfo.plist"),
  946. .process("TestABTPayload.txt"),
  947. ],
  948. cSettings: [
  949. .headerSearchPath("../../.."),
  950. ]
  951. ),
  952. .target(
  953. name: "FirebaseRemoteConfigSwift",
  954. dependencies: [
  955. "FirebaseRemoteConfig",
  956. "FirebaseSharedSwift",
  957. ],
  958. path: "FirebaseRemoteConfigSwift/Sources"
  959. ),
  960. .testTarget(
  961. name: "RemoteConfigFakeConsole",
  962. dependencies: ["FirebaseRemoteConfigSwift",
  963. "RemoteConfigFakeConsoleObjC"],
  964. path: "FirebaseRemoteConfigSwift/Tests",
  965. exclude: [
  966. "AccessToken.json",
  967. "README.md",
  968. "ObjC/",
  969. ],
  970. cSettings: [
  971. .headerSearchPath("../../"),
  972. ]
  973. ),
  974. .target(
  975. name: "RemoteConfigFakeConsoleObjC",
  976. dependencies: ["OCMock"],
  977. path: "FirebaseRemoteConfigSwift/Tests/ObjC",
  978. publicHeadersPath: ".",
  979. cSettings: [
  980. .headerSearchPath("../../../"),
  981. ]
  982. ),
  983. // MARK: - Firebase Storage
  984. .target(
  985. name: "FirebaseStorage",
  986. dependencies: [
  987. "FirebaseCore",
  988. .product(name: "GTMSessionFetcherCore", package: "GTMSessionFetcher"),
  989. ],
  990. path: "FirebaseStorage/Sources",
  991. publicHeadersPath: "Public",
  992. cSettings: [
  993. .headerSearchPath("../../"),
  994. ],
  995. linkerSettings: [
  996. .linkedFramework("MobileCoreServices", .when(platforms: [.iOS])),
  997. .linkedFramework("CoreServices", .when(platforms: [.macOS])),
  998. ]
  999. ),
  1000. .testTarget(
  1001. name: "StorageUnit",
  1002. dependencies: ["FirebaseStorage", "OCMock", "SharedTestUtilities"],
  1003. path: "FirebaseStorage/Tests/Unit",
  1004. cSettings: [
  1005. .headerSearchPath("../../.."),
  1006. ]
  1007. ),
  1008. .target(
  1009. name: "FirebaseStorageSwift",
  1010. dependencies: ["FirebaseStorage"],
  1011. path: "FirebaseStorageSwift/Sources"
  1012. ),
  1013. .testTarget(
  1014. name: "swift-test",
  1015. dependencies: [
  1016. "Firebase",
  1017. "FirebaseAuth",
  1018. "FirebaseAppCheck",
  1019. "FirebaseABTesting",
  1020. .target(name: "FirebaseAppDistribution",
  1021. condition: .when(platforms: [.iOS])),
  1022. "FirebaseAuthCombineSwift",
  1023. "FirebaseFirestoreCombineSwift",
  1024. "FirebaseFunctionsCombineSwift",
  1025. "FirebaseStorageCombineSwift",
  1026. "FirebaseCrashlytics",
  1027. "FirebaseCore",
  1028. "FirebaseDatabase",
  1029. "FirebaseDynamicLinks",
  1030. "FirebaseFirestore",
  1031. "FirebaseFirestoreSwift",
  1032. "FirebaseFunctions",
  1033. "FirebaseInAppMessaging",
  1034. .target(name: "FirebaseInAppMessagingSwift",
  1035. condition: .when(platforms: [.iOS, .tvOS])),
  1036. "FirebaseInstallations",
  1037. "FirebaseMessaging",
  1038. .target(name: "FirebasePerformance",
  1039. condition: .when(platforms: [.iOS, .tvOS])),
  1040. "FirebaseRemoteConfig",
  1041. "FirebaseStorage",
  1042. "FirebaseStorageSwift",
  1043. .product(name: "nanopb", package: "nanopb"),
  1044. ],
  1045. path: "SwiftPMTests/swift-test"
  1046. ),
  1047. .testTarget(
  1048. name: "analytics-import-test",
  1049. dependencies: [
  1050. "FirebaseAnalyticsSwiftTarget",
  1051. "FirebaseAnalyticsWrapper",
  1052. "Firebase",
  1053. ],
  1054. path: "SwiftPMTests/analytics-import-test"
  1055. ),
  1056. .testTarget(
  1057. name: "objc-import-test",
  1058. dependencies: [
  1059. "Firebase",
  1060. "FirebaseAuth",
  1061. "FirebaseABTesting",
  1062. "FirebaseAppCheck",
  1063. .target(name: "FirebaseAppDistribution",
  1064. condition: .when(platforms: [.iOS])),
  1065. "FirebaseCrashlytics",
  1066. "FirebaseCore",
  1067. "FirebaseDatabase",
  1068. "FirebaseDynamicLinks",
  1069. "FirebaseFirestore",
  1070. "FirebaseFunctions",
  1071. "FirebaseInAppMessaging",
  1072. "FirebaseInstallations",
  1073. "FirebaseMessaging",
  1074. .target(name: "FirebasePerformance",
  1075. condition: .when(platforms: [.iOS, .tvOS])),
  1076. "FirebaseRemoteConfig",
  1077. "FirebaseStorage",
  1078. ],
  1079. path: "SwiftPMTests/objc-import-test"
  1080. ),
  1081. .testTarget(
  1082. name: "version-test",
  1083. dependencies: [
  1084. "FirebaseCore",
  1085. ],
  1086. path: "SwiftPMTests/version-test",
  1087. cSettings: [
  1088. .define("FIR_VERSION", to: firebaseVersion),
  1089. ]
  1090. ),
  1091. // MARK: - Firebase App Check
  1092. .target(name: "FirebaseAppCheck",
  1093. dependencies: [
  1094. "FirebaseCore",
  1095. .product(name: "FBLPromises", package: "Promises"),
  1096. .product(name: "GULEnvironment", package: "GoogleUtilities"),
  1097. ],
  1098. path: "FirebaseAppCheck/Sources",
  1099. exclude: [
  1100. "Interop/CMakeLists.txt",
  1101. ],
  1102. publicHeadersPath: "Public",
  1103. cSettings: [
  1104. .headerSearchPath("../.."),
  1105. ],
  1106. linkerSettings: [
  1107. .linkedFramework("DeviceCheck"),
  1108. ]),
  1109. .testTarget(
  1110. name: "AppCheckUnit",
  1111. dependencies: ["FirebaseAppCheck", "OCMock", "SharedTestUtilities"],
  1112. path: "FirebaseAppCheck/Tests",
  1113. exclude: [
  1114. // Disable Swift tests as mixed targets are not supported (Xcode 12.3).
  1115. "Unit/Swift",
  1116. // Disable Keychain dependent tests as they require a host application on iOS.
  1117. "Integration",
  1118. "Unit/AppAttestProvider/Storage/FIRAppAttestArtifactStorageTests.m",
  1119. "Unit/Core/FIRAppCheckIntegrationTests.m",
  1120. "Unit/Core/FIRAppCheckStorageTests.m",
  1121. ],
  1122. resources: [
  1123. .process("Fixture"),
  1124. ],
  1125. cSettings: [
  1126. .headerSearchPath("../.."),
  1127. ]
  1128. ),
  1129. .testTarget(
  1130. name: "AppCheckUnitSwift",
  1131. dependencies: ["FirebaseAppCheck"],
  1132. path: "FirebaseAppCheck/Tests/Unit/Swift",
  1133. cSettings: [
  1134. .headerSearchPath("../.."),
  1135. ]
  1136. ),
  1137. // MARK: Testing support
  1138. .target(
  1139. name: "FirebaseFirestoreTestingSupport",
  1140. dependencies: ["FirebaseFirestore"],
  1141. path: "FirebaseTestingSupport/Firestore/Sources",
  1142. publicHeadersPath: "./",
  1143. cSettings: [
  1144. .headerSearchPath("../../.."),
  1145. .headerSearchPath("../../../Firestore/Source/Public/FirebaseFirestore"),
  1146. ]
  1147. ),
  1148. .testTarget(
  1149. name: "FirestoreTestingSupportTests",
  1150. dependencies: ["FirebaseFirestoreTestingSupport"],
  1151. path: "FirebaseTestingSupport/Firestore/Tests",
  1152. cSettings: [
  1153. .headerSearchPath("../../.."),
  1154. ]
  1155. ),
  1156. ],
  1157. cLanguageStandard: .c99,
  1158. cxxLanguageStandard: CXXLanguageStandard.gnucxx14
  1159. )