mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-10 22:45:59 +05:45
5b7e8570291e94de60297a625baba73b56516614
7
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
77f92cd2c6 |
Stop using built-in CMake Framework support (#5316)
* Fix previously unknown warnings These become visible once flags are handled uniformly across all Firestore targets in an upcoming build change. * Stop using built-in CMake Framework support CMake has built-in support for building Framework bundles (briefly: bundles of libraries, associated headers, and resources) but this doesn't work well for our needs. 1. In CMake 3.5.1 (our earliest supported CMake version) it doesn't copy headers properly at build time. 2. Even up to CMake 3.15.5, CMake doesn't handle link-line multiplicity correctly. CMake passes the static library location within the framework and this seems to cause the linker to mishandle Objective-C metaclass information resulting in duplicate symbols. Building with `-framework` flags works correctly. Previously we partially worked around the latter problem by building some frameworks as shared instead of static frameworks, but this is problematic because this mode of operation isn't actually intended and is unsupported as far as the rest of Firebase is concerned. This turned out to be fragile though and while refactoring libraries this workaround broke. Rather than piling on additional workarounds, this change converts the frameworks to simple library targets and emulates framework imports through include paths. Additionally, this starts refactoring our cmake helper functions to make them more like built-in functions. This makes it possible to freely use different CMake features that were made difficult by trying to wrap everything up in a single CMake command. * style.sh generated changes * Review feedback * More review feedback |
||
|
|
a568a96f7e |
Add iOS build support to the CMake build (#5052)
* Use early exit in objc_framework CMakeLists.txt * Clean up objc_framework CMakeLists.txt * Use `version` consistently * Use `firebase_ios_version` for the repo-level version * Remove INCLUDE directories that are no longer needed * Sort dependencies * Simplify Example/App/CMakeLists.txt * Add `OBJC_FLAGS` directly, avoiding a separate `sources` variable. * Add resources directly * Rename test host app to firebase_firestore_example_app * Add a firebase_ios prefix to functions and variables This reduces the chance of collision with other projects. * Simplify compiler_setup Now that compiler_setup.cmake no longer has side-effects, fold compiler_id.cmake and archive_options.cmake into it and move the include of compiler_setup up to the top of the main build. * Add support for building for iOS * Make building benchmarks optional * Disable protoc-based source generators when cross-compiling * Make downloading googletest optional * Add DISABLE_STRICT_WARNINGS mode to cc_rules This makes it possible to build non-Firestore components in the CMake build to a lower standard than that to which we hold ourselves without sacrificing the utility of the various build rules that we have. |
||
|
|
e404054a9f |
Refactor and clean up the CMake build ahead of CMake/iOS support (#5051)
* Use early exit in objc_framework CMakeLists.txt * Clean up objc_framework CMakeLists.txt * Use `version` consistently * Use `firebase_ios_version` for the repo-level version * Remove INCLUDE directories that are no longer needed * Sort dependencies * Simplify Example/App/CMakeLists.txt * Add `OBJC_FLAGS` directly, avoiding a separate `sources` variable. * Add resources directly * Rename test host app to firebase_firestore_example_app * Add a firebase_ios prefix to functions and variables This reduces the chance of collision with other projects. * Simplify compiler_setup Now that compiler_setup.cmake no longer has side-effects, fold compiler_id.cmake and archive_options.cmake into it and move the include of compiler_setup up to the top of the main build. |
||
|
|
42118c9b13 | Stop using statics in header (#4149) | ||
|
|
9776ee54ba |
Fix CHANGELOGs for everything GDT and FIRCD related (#3583)
* Fix CHANGELOGs for everything GDT and FIRCD related * Adjust order * Use github issue notation, hopefully. * Format like FirebaseCore. |
||
|
|
766e8723d7 |
Rework CMake builds of Firebase Frameworks (#3499)
* Add sed scripts that find the versions of podspecs ... without fully loading those via Pod::Spec, which is slow. * Avoid compiling with different visibility settings ... in different translation units. This removes warnings about linking googletest causing weak symbols becoming strong. * Add CMake objc_framework * Define FirebaseCore via objc_framework * Define FIRCoreDiagnosticsInterop via objc_framework * Define GoogleUtilities with objc_framework * Define FirebaseCoreDiagnosticsInterop via objc_framework * Define FirebaseAuthInterop via objc_framework * Don't duplicate Core's dependency information everywhere * Remove podspec_framework * Fix compilation error with -Wstrict-prototyes |
||
|
|
783ee5b126 |
Implement Firebase CoreDiagnostics (#3129)
* Implement CoreDiagnostics interop For use by FirebaseCore. Please pay special attention to the changes in FIRApp, I've replaced passing FIRApp in the notification with a data object that will eventually replace the same information that FIRDiagnostics extracted. * Add CoreDiagnosticsInterop to the Example Podfile * Style and xcodeproj updates * Update Podfiles that dep on FirebaseCore So that they also have a dep on FirebaseCoreDiagnosticsInterop * ran pod deintegrate to remove unintended xcodeproj changes * Fix Podfile paths * Add FCD to if_changed and travis.yml * Fix building with Firestore * Style * Whitespace * Fix a changed internal API * Make pod paths consistent * Restore connectivity_monitor_noop.cc style * Remove logging prior to [FIRApp configure] Also remove sendLogsWithServiceName:version: * style * Remove nil checks from diagnostics data * Put back some deleted symbols * Restore the sendLogsWithServiceName:version: method, but as a no-op * Restore the original version of sendLogs... * Allow an unused parameter * Remove obsolete nsnotificationcenter related stuff * Whoops, missed the header change. * Final changes to support FIRCoreDiagnostics These changes are necessary because FIRCore has a hard dep on FIRCoreDiagnostics (FIRCD) and FIRCoreDiagnosticsInterop. Components can't be used because FIRCD would need to have a hard dep on FIRCore to get access to FIRLibrary, FIRComponent, FIRComponentContainer, and FIRComponentCreationBlock and this would create a dep cycle. So, an extern has been put into the interop lib and the variable is implemented in the connector class inside of FIRCore, but it's unset. FIRCD actually sets that variable in +load, allowing use of FIRCD. FIRCD can also be removed as a dependency with no ill effect by end users setting the environment variable DISABLE_FIREBASE_DIAGNOSTICS=1 * Add nanopb and project generation infrastructure * Convert FIRCoreDiagnostics to canonical nanopb, and move to OSS. * Remove custom build steps for CoreDiagnostics * Addressing review comments * Update versions, tags, and port the relevant unit tests for FIRCD * Version and platform fixes * Fix podspec expected tags * A hack to solve a chicken-and-egg problem with pod lib linting. * Heartbeat implementation * FIRDiagnosticsDateFileStorageTests * Fix tests for non-iOS platforms * Heartbeat tests * Fix initialization. * Cleanup Installation ID. * Fix testProtoPopulation. * Merge conflict fix * Typo fix. * Remove FIRCore dep from FIRCD unit tests and move symbols to interop * Run ./scripts/style.sh * Typo * #ifdef comment * File license header. * Import FIRDiagnosticsDateFileStorage.h using relative path. * FIRDiagnostics -> FIRCoreDiagnostics * Docs syntax * Docs * Docs typo * Add shared variables to the interop lib I know this goes against the convention, but it's actually the only way to resolve this very unique problem. * Fix comment * Style * Removed lib version passing. * Remove env checking for conditional deps * Style * Address whitespace issues * Add copyright notice * Add new deps to Podfiles * Fix trailing space * Some changes to fix working in an extension. * Fix type in Podfile * GDT: begin/end background task only for iOS and TVOS applications. * Fix typo * Style * Stop sharing kFIRService strings across pods * Travis test * Change all TARGET_OS_TVOS macros to TARGET_OS_TV TARGET_OS_TVOS doesn't exist. Also macro out a UIApplication reference. * style * Update all Podfiles with deps on FIRCore * Fix trailing whitespace * Update Firestore cmake * Fix FIAM build break (#3254) * Additional cmake changes * Fix linker issue with deprecated CoreDiagnostics (#3257) * Adding more deps to cmake * Fix linker error (#3266) * Rerun only IAM tests * whitespace * No xcpretty or frameworks run * Fix typo * Revert "No xcpretty or frameworks run" This reverts commit |