| Commit message (Collapse) | Author | Age |
|
|
|
|
|
| |
Previously, the tests would compare serialization results against a
precomputed (via protoc) array of bytes. Now they serialize via our
nanopb based class and deserialize via libprotobuf (and vice versa) and
then ensure the result is the same as the input
|
|
|
| |
Example run: `cmake -DWITH_ASAN=ON ..` (from Firestore build folder)
|
|
|
|
|
|
| |
protos. (#982)
This is motivated by wanting to use libprotobuf in the project too, but
it's also sensible by itself.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Build (grpc's) nanopb with -DPB_FIELD_16BIT
We require (at least) 16 bit fields. (By default, nanopb uses 8 bit
fields, ie allowing up to 256 field tags.)
Also note that this patch adds this to grpc's nanopb, rather than to our
nanopb. We'll need to eventually either:
a) we instruct grpc to use our nanopb
b) we rely on grpc's nanopb instead of using our own.
(^ marked as a TODO for now.)
* Add some dependant protos
Imported from protobuf. Nanopb requires these to be present (though
anything using libprotobuf does not, as these are already built into
that.)
* Add generated nanopb protos based off of newly added proto definitions
* Build the nanopb protos
* Serialize and deserialize null
|
|
|
|
|
| |
Use remote/serializer placeholder class as a hook for the test to ensure
nanopb headers can be found, and test can be linked.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add CMake platform detection logic for SecureRandom
Now only builds secure_random_arc4random.cc if available.
Remove firebase/firestore/base/port.h. Nothing else was in that
directory.
* Add a SecureRandom implementation that uses OpenSSL
This is usable on Linux, Windows, and Android
* Properly check return from RAND_bytes
|
|
|
|
| |
This makes it possible to build the Firestore subproject with CLion
because it no longer needs to be told where googletest is.
|
|
|
|
|
|
| |
* Enable warnings when building with GCC or clang
* Fix warnings
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Clean up quoting and other minor issues
* Reorganize CMake build output
Make it clearer which parts of the output pertain to external projects.
* Use a consistent ordering of ExternalProject arguments
* Prevent the top-level build from running in parallel
This prevents spurious failures when running make -j.
* Actually parse arguments in the xcodebuild function
* Use ExternalProject features when available
* submodule limits from CMake 3.0
* shallow clones from CMake 3.6
* git progress output from CMake 3.8
* Only build the parts of leveldb we need
Skip building the tools and other libraries
* Avoid installing ExternalProjects
Consume build output directly so that we can build just the targets we
need. Installing causes all targets to be built.
This doesn't matter as much for these targets but the gRPC build
includes a ton of stuff we don't need so it's worth adopting this as a
general strategy.
* Define an external build for grpc
* Test that grpc can link successfully.
* Add a FindGRPC CMake module
* Actually comment ExternalProjext_GitSource
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Port StringPrintf from //base.
Prefer this to approaches based on variadic templates. While the variadic
template mechanisms are strictly safer, they result in binary bloat we
can't afford.
This is essentially the same StringPrintf previously open sourced as a
part of protobuf, though updated for C++11 which saves a copy and a
temporary buffer on the heap.
* Add abseil as a subdirectory of Firestore
This saves having to redefine all the libraries that abseil defines as
imported libraries.
* Rename firebase_firesture_util_log_* targets
Cut the log out of the name to reflect that these will get more
components besides just logging.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Rename FIREBASE_BINARY_DIR to FIREBASE_INSTALL_DIR
Make this consistent with the outer superbuild and also make the
association with CMAKE_INSTALL_PREFIX more obvious.
* Build and test log_stdio separate from the rest of util
This is in preparation for adding a test for log_apple
* Build and test log_apple under CMake
Also add notes about how FIRLogger's debug mode can break this test
* Refactor log_apple to cut down duplicate switch statements
There's also a slight reduction in final binary size.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Don't bother specifying a download directory to CMake ExternalProject
* Teach CMake to build pure Xcode projects as dependencies
This allows downstream code (like log_apple.mm) to consume this for
testing within the CMake build without requiring a CMake-native build
for these components.
This makes integrating these components into the cmake build essentially
free from the point of view of the consumed component.
* Get the CMake build semi-working on Linux again
Many prebuilt versions of cmake on Linux lack the ability to download
over https so use git to get googletest.
Don't attempt to build FirebaseCore on Linux; there's no xcodebuild.
Note the build is still ultimately broken because we don't yet have an
alternative to arc4random on Linux but at least this is no more broken
than it was before.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Use Debug as the default build type if unspecified
* Add a leveldb ExternalProject, FindLevelDB module, and use it in Firestore
* Accept an externally built leveldb via LEVELDB_ROOT
* Clone leveldb via https: instead of git:
* Remove extra DOWNLOAD_DIR which doesn't work with GIT sources
|
|
|
|
|
| |
All projects are now ExternalProjects
This makes it much easier to build them all in a single pass.
|
|
|
|
|
|
|
| |
* Move sources into firebase::firestore and internal namespaces
Combine support and core/util packages; this distinction wasn't really
paying its freight.
|
|
|
|
|
|
| |
* Port autoid to C++
* Reimplement FSTUtil on top of firestore::CreateAutoId directly
* Migrate FSTUtil callers to directly use firestore::CreateAutoId
* Remove FSTUtil
|
|
|
|
| |
* Add SecureRandom
* Add CMake support for building src/support
|
|
Initial CMake-based build
This knows how to download and build googletest.
|