This unblocks nanopb changes proposed in #4264.
This upgrades everything in the gRPC constellation of dependencies to match gRPC at 1.28:
* gRPC to 1.28.0 (note that gRPC 1.28.1, while released, is a fix for just the python binding and there's no gRPC-C++ CocoaPod at that version)
* Abseil to 20200225 (as of gRPC 1.27 this is now a gRPC dependency too; there's a later patch but gRPC doesn't use it yet)
* Protobuf C++ to 3.11.4 (only used for testing in Firestore)
* C-Ares to 1.15.0
* BoringSSL to match (no change between gRPC 1.27.0 and 1.28.0)
Also, this disables CFStream-based transport on Apple platforms. This works around b/133182964, wherein CFStream will occasionally fail to raise a has-bytes-available events, causing Firestore to appear to hang.
* Upgrade gRPC to 1.24.3
* Upgrade C++ Protobuf to 3.9.2
Disable -Wunreachable-code in protobuf-generated code
* Regenerate C++ protos with protobuf 3.9.2
* Generate objc protos with Protobuf 3.9.2
* Add deployment targets for osx
* Fix bundle path to make spec tests work
On iOS, resources are directly within the bundle so the bundlePath and
the resourcePath are the same.
On macOS, resources are in a Contents/Resources subfolder so enumerating
from bundlePath causes us to look for names like
Contents/Resources/offline_spec_test, which doesn't work.
* Fix documentation warnings that show up under the macOS build
This involves:
- building c++ libprotobuf (rather than just the obj-c version).
- adding c++ libprotobuf, c++ built protos (previously created) to the
*test suite* only (not to the main build).
- modifying existing nanopb CFLAGS to match those that are indirectly
pulled in.