From 2d071ec260efe196890dbacdbe9ffca8081e1edd Mon Sep 17 00:00:00 2001 From: Rich Gowman Date: Mon, 28 May 2018 14:23:41 -0400 Subject: Hookup serializer_test.cc to the xcode based test suite 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. --- FirebaseFirestore.podspec | 6 +- .../Example/Firestore.xcodeproj/project.pbxproj | 175 +++++++++++++++++++++ Firestore/Example/Podfile | 1 + Firestore/Example/ProtobufCpp.podspec | 68 ++++++++ 4 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 Firestore/Example/ProtobufCpp.podspec diff --git a/FirebaseFirestore.podspec b/FirebaseFirestore.podspec index 564b0b3..7f4f340 100644 --- a/FirebaseFirestore.podspec +++ b/FirebaseFirestore.podspec @@ -61,7 +61,11 @@ Google Cloud Firestore is a NoSQL document database built for automatic scaling, '"${PODS_TARGET_SRCROOT}/Firestore/third_party/abseil-cpp" ' + '"${PODS_ROOT}/nanopb" ' + '"${PODS_TARGET_SRCROOT}/Firestore/Protos/nanopb"', - 'OTHER_CFLAGS' => '-DFIRFirestore_VERSION=' + s.version.to_s + ' -DPB_FIELD_16BIT' + 'OTHER_CFLAGS' => '-DFIRFirestore_VERSION=' + s.version.to_s + ' ' + + # The nanopb pod (which is pulled in indirectly) sets these defs, so we must too. + # (We *do* require 16bit (or larger) fields, so we'd have to set at least + # PB_FIELD_16BIT anyways.) + '-DPB_FIELD_32BIT -DPB_NO_PACKED_STRUCTS=1' } s.prepare_command = <<-CMD diff --git a/Firestore/Example/Firestore.xcodeproj/project.pbxproj b/Firestore/Example/Firestore.xcodeproj/project.pbxproj index 00ab5b3..69a947a 100644 --- a/Firestore/Example/Firestore.xcodeproj/project.pbxproj +++ b/Firestore/Example/Firestore.xcodeproj/project.pbxproj @@ -144,6 +144,19 @@ 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; }; 6161B5032047140C00A99DBB /* FIRFirestoreSourceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6161B5012047140400A99DBB /* FIRFirestoreSourceTests.mm */; }; + 618BBEA620B89AAC00B5BCE7 /* target.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE7D20B89AAC00B5BCE7 /* target.pb.cc */; }; + 618BBEA720B89AAC00B5BCE7 /* maybe_document.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE7E20B89AAC00B5BCE7 /* maybe_document.pb.cc */; }; + 618BBEA820B89AAC00B5BCE7 /* mutation.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE8220B89AAC00B5BCE7 /* mutation.pb.cc */; }; + 618BBEA920B89AAC00B5BCE7 /* common.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE8820B89AAC00B5BCE7 /* common.pb.cc */; }; + 618BBEAA20B89AAC00B5BCE7 /* firestore.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE8A20B89AAC00B5BCE7 /* firestore.pb.cc */; }; + 618BBEAB20B89AAC00B5BCE7 /* query.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE8C20B89AAC00B5BCE7 /* query.pb.cc */; }; + 618BBEAC20B89AAC00B5BCE7 /* document.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE8E20B89AAC00B5BCE7 /* document.pb.cc */; }; + 618BBEAD20B89AAC00B5BCE7 /* write.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE8F20B89AAC00B5BCE7 /* write.pb.cc */; }; + 618BBEAE20B89AAC00B5BCE7 /* latlng.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE9220B89AAC00B5BCE7 /* latlng.pb.cc */; }; + 618BBEAF20B89AAC00B5BCE7 /* annotations.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE9520B89AAC00B5BCE7 /* annotations.pb.cc */; }; + 618BBEB020B89AAC00B5BCE7 /* http.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE9720B89AAC00B5BCE7 /* http.pb.cc */; }; + 618BBEB120B89AAC00B5BCE7 /* status.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE9920B89AAC00B5BCE7 /* status.pb.cc */; }; + 61F72C5620BC48FD001A68CB /* serializer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 61F72C5520BC48FD001A68CB /* serializer_test.cc */; }; 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */; }; 7346E61D20325C6900FD6CEF /* FSTDispatchQueueTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7346E61C20325C6900FD6CEF /* FSTDispatchQueueTests.mm */; }; 73866AA12082B0A5009BB4FF /* FIRArrayTransformTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 73866A9F2082B069009BB4FF /* FIRArrayTransformTests.mm */; }; @@ -392,6 +405,36 @@ 6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = ""; }; 6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 6161B5012047140400A99DBB /* FIRFirestoreSourceTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FIRFirestoreSourceTests.mm; sourceTree = ""; }; + 618BBE7D20B89AAC00B5BCE7 /* target.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = target.pb.cc; sourceTree = ""; }; + 618BBE7E20B89AAC00B5BCE7 /* maybe_document.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = maybe_document.pb.cc; sourceTree = ""; }; + 618BBE7F20B89AAC00B5BCE7 /* target.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = target.pb.h; sourceTree = ""; }; + 618BBE8020B89AAC00B5BCE7 /* maybe_document.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maybe_document.pb.h; sourceTree = ""; }; + 618BBE8120B89AAC00B5BCE7 /* mutation.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mutation.pb.h; sourceTree = ""; }; + 618BBE8220B89AAC00B5BCE7 /* mutation.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mutation.pb.cc; sourceTree = ""; }; + 618BBE8620B89AAC00B5BCE7 /* query.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = query.pb.h; sourceTree = ""; }; + 618BBE8720B89AAC00B5BCE7 /* common.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.pb.h; sourceTree = ""; }; + 618BBE8820B89AAC00B5BCE7 /* common.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = common.pb.cc; sourceTree = ""; }; + 618BBE8920B89AAC00B5BCE7 /* firestore.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = firestore.pb.h; sourceTree = ""; }; + 618BBE8A20B89AAC00B5BCE7 /* firestore.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = firestore.pb.cc; sourceTree = ""; }; + 618BBE8B20B89AAC00B5BCE7 /* write.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = write.pb.h; sourceTree = ""; }; + 618BBE8C20B89AAC00B5BCE7 /* query.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = query.pb.cc; sourceTree = ""; }; + 618BBE8D20B89AAC00B5BCE7 /* document.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = document.pb.h; sourceTree = ""; }; + 618BBE8E20B89AAC00B5BCE7 /* document.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = document.pb.cc; sourceTree = ""; }; + 618BBE8F20B89AAC00B5BCE7 /* write.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = write.pb.cc; sourceTree = ""; }; + 618BBE9120B89AAC00B5BCE7 /* latlng.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latlng.pb.h; sourceTree = ""; }; + 618BBE9220B89AAC00B5BCE7 /* latlng.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = latlng.pb.cc; sourceTree = ""; }; + 618BBE9420B89AAC00B5BCE7 /* http.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = http.pb.h; sourceTree = ""; }; + 618BBE9520B89AAC00B5BCE7 /* annotations.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = annotations.pb.cc; sourceTree = ""; }; + 618BBE9620B89AAC00B5BCE7 /* annotations.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = annotations.pb.h; sourceTree = ""; }; + 618BBE9720B89AAC00B5BCE7 /* http.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = http.pb.cc; sourceTree = ""; }; + 618BBE9920B89AAC00B5BCE7 /* status.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = status.pb.cc; sourceTree = ""; }; + 618BBE9A20B89AAC00B5BCE7 /* status.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = status.pb.h; sourceTree = ""; }; + 618BBE9D20B89AAC00B5BCE7 /* struct.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = struct.pb.h; sourceTree = ""; }; + 618BBE9E20B89AAC00B5BCE7 /* empty.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = empty.pb.h; sourceTree = ""; }; + 618BBEA020B89AAC00B5BCE7 /* wrappers.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrappers.pb.h; sourceTree = ""; }; + 618BBEA320B89AAC00B5BCE7 /* timestamp.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timestamp.pb.h; sourceTree = ""; }; + 618BBEA420B89AAC00B5BCE7 /* any.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = any.pb.h; sourceTree = ""; }; + 61F72C5520BC48FD001A68CB /* serializer_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = serializer_test.cc; sourceTree = ""; }; 69E6C311558EC77729A16CF1 /* Pods-Firestore_Example_iOS-Firestore_SwiftTests_iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_Example_iOS-Firestore_SwiftTests_iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_Example_iOS-Firestore_SwiftTests_iOS/Pods-Firestore_Example_iOS-Firestore_SwiftTests_iOS.debug.xcconfig"; sourceTree = ""; }; 71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 7346E61C20325C6900FD6CEF /* FSTDispatchQueueTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FSTDispatchQueueTests.mm; sourceTree = ""; }; @@ -529,6 +572,7 @@ 546854A720A3681B004BDBD5 /* remote */ = { isa = PBXGroup; children = ( + 61F72C5520BC48FD001A68CB /* serializer_test.cc */, 546854A820A36867004BDBD5 /* datastore_test.cc */, ); path = remote; @@ -624,6 +668,7 @@ 6003F581195388D10070C39A = { isa = PBXGroup; children = ( + 618BBE7A20B89AAC00B5BCE7 /* cpp */, 543B4F0520A91E4B001F506D /* App */, 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */, 6003F5B5195388D20070C39A /* Tests */, @@ -725,6 +770,115 @@ name = "Podspec Metadata"; sourceTree = ""; }; + 618BBE7A20B89AAC00B5BCE7 /* cpp */ = { + isa = PBXGroup; + children = ( + 618BBE7B20B89AAC00B5BCE7 /* firestore */, + 618BBE8320B89AAC00B5BCE7 /* google */, + ); + name = cpp; + path = ../Protos/cpp; + sourceTree = ""; + }; + 618BBE7B20B89AAC00B5BCE7 /* firestore */ = { + isa = PBXGroup; + children = ( + 618BBE7C20B89AAC00B5BCE7 /* local */, + ); + path = firestore; + sourceTree = ""; + }; + 618BBE7C20B89AAC00B5BCE7 /* local */ = { + isa = PBXGroup; + children = ( + 618BBE7D20B89AAC00B5BCE7 /* target.pb.cc */, + 618BBE7E20B89AAC00B5BCE7 /* maybe_document.pb.cc */, + 618BBE7F20B89AAC00B5BCE7 /* target.pb.h */, + 618BBE8020B89AAC00B5BCE7 /* maybe_document.pb.h */, + 618BBE8120B89AAC00B5BCE7 /* mutation.pb.h */, + 618BBE8220B89AAC00B5BCE7 /* mutation.pb.cc */, + ); + path = local; + sourceTree = ""; + }; + 618BBE8320B89AAC00B5BCE7 /* google */ = { + isa = PBXGroup; + children = ( + 618BBE8420B89AAC00B5BCE7 /* firestore */, + 618BBE9020B89AAC00B5BCE7 /* type */, + 618BBE9320B89AAC00B5BCE7 /* api */, + 618BBE9820B89AAC00B5BCE7 /* rpc */, + 618BBE9B20B89AAC00B5BCE7 /* protobuf */, + ); + path = google; + sourceTree = ""; + }; + 618BBE8420B89AAC00B5BCE7 /* firestore */ = { + isa = PBXGroup; + children = ( + 618BBE8520B89AAC00B5BCE7 /* v1beta1 */, + ); + path = firestore; + sourceTree = ""; + }; + 618BBE8520B89AAC00B5BCE7 /* v1beta1 */ = { + isa = PBXGroup; + children = ( + 618BBE8620B89AAC00B5BCE7 /* query.pb.h */, + 618BBE8720B89AAC00B5BCE7 /* common.pb.h */, + 618BBE8820B89AAC00B5BCE7 /* common.pb.cc */, + 618BBE8920B89AAC00B5BCE7 /* firestore.pb.h */, + 618BBE8A20B89AAC00B5BCE7 /* firestore.pb.cc */, + 618BBE8B20B89AAC00B5BCE7 /* write.pb.h */, + 618BBE8C20B89AAC00B5BCE7 /* query.pb.cc */, + 618BBE8D20B89AAC00B5BCE7 /* document.pb.h */, + 618BBE8E20B89AAC00B5BCE7 /* document.pb.cc */, + 618BBE8F20B89AAC00B5BCE7 /* write.pb.cc */, + ); + path = v1beta1; + sourceTree = ""; + }; + 618BBE9020B89AAC00B5BCE7 /* type */ = { + isa = PBXGroup; + children = ( + 618BBE9120B89AAC00B5BCE7 /* latlng.pb.h */, + 618BBE9220B89AAC00B5BCE7 /* latlng.pb.cc */, + ); + path = type; + sourceTree = ""; + }; + 618BBE9320B89AAC00B5BCE7 /* api */ = { + isa = PBXGroup; + children = ( + 618BBE9420B89AAC00B5BCE7 /* http.pb.h */, + 618BBE9520B89AAC00B5BCE7 /* annotations.pb.cc */, + 618BBE9620B89AAC00B5BCE7 /* annotations.pb.h */, + 618BBE9720B89AAC00B5BCE7 /* http.pb.cc */, + ); + path = api; + sourceTree = ""; + }; + 618BBE9820B89AAC00B5BCE7 /* rpc */ = { + isa = PBXGroup; + children = ( + 618BBE9920B89AAC00B5BCE7 /* status.pb.cc */, + 618BBE9A20B89AAC00B5BCE7 /* status.pb.h */, + ); + path = rpc; + sourceTree = ""; + }; + 618BBE9B20B89AAC00B5BCE7 /* protobuf */ = { + isa = PBXGroup; + children = ( + 618BBE9D20B89AAC00B5BCE7 /* struct.pb.h */, + 618BBE9E20B89AAC00B5BCE7 /* empty.pb.h */, + 618BBEA020B89AAC00B5BCE7 /* wrappers.pb.h */, + 618BBEA320B89AAC00B5BCE7 /* timestamp.pb.h */, + 618BBEA420B89AAC00B5BCE7 /* any.pb.h */, + ); + path = protobuf; + sourceTree = ""; + }; AAEA2A72CFD1FA5AD34462F7 /* Pods */ = { isa = PBXGroup; children = ( @@ -1279,12 +1433,14 @@ "${BUILT_PRODUCTS_DIR}/leveldb-library/leveldb.framework", "${BUILT_PRODUCTS_DIR}/GoogleTest/GoogleTest.framework", "${BUILT_PRODUCTS_DIR}/OCMock/OCMock.framework", + "${BUILT_PRODUCTS_DIR}/ProtobufCpp/ProtobufCpp.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/leveldb.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleTest.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OCMock.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ProtobufCpp.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -1554,18 +1710,25 @@ 5492E0BA2021555100B64F25 /* FSTDocumentSetTests.mm in Sources */, 5492E0BD2021555100B64F25 /* FSTDocumentTests.mm in Sources */, 5492E09E2021552D00B64F25 /* FSTEagerGarbageCollectorTests.mm in Sources */, + 61F72C5620BC48FD001A68CB /* serializer_test.cc in Sources */, 5492E03E2021401F00B64F25 /* FSTEventAccumulator.mm in Sources */, 5492E067202154B900B64F25 /* FSTEventManagerTests.mm in Sources */, 5492E0BF2021555100B64F25 /* FSTFieldValueTests.mm in Sources */, 54764FAF1FAA21B90085E60A /* FSTGoogleTestTests.mm in Sources */, + 618BBEA620B89AAC00B5BCE7 /* target.pb.cc in Sources */, 5492E03F2021401F00B64F25 /* FSTHelpers.mm in Sources */, DE2EF0861F3D0B6E003D0CDC /* FSTImmutableSortedDictionary+Testing.m in Sources */, + 618BBEA720B89AAC00B5BCE7 /* maybe_document.pb.cc in Sources */, DE2EF0871F3D0B6E003D0CDC /* FSTImmutableSortedSet+Testing.m in Sources */, 5491BC721FB44593008B3588 /* FSTIntegrationTestCase.mm in Sources */, 5492E0A72021552D00B64F25 /* FSTLevelDBKeyTests.mm in Sources */, 5492E0A82021552D00B64F25 /* FSTLevelDBLocalStoreTests.mm in Sources */, + 618BBEAC20B89AAC00B5BCE7 /* document.pb.cc in Sources */, 5492E09F2021552D00B64F25 /* FSTLevelDBMigrationsTests.mm in Sources */, 5492E0A02021552D00B64F25 /* FSTLevelDBMutationQueueTests.mm in Sources */, + 618BBEB020B89AAC00B5BCE7 /* http.pb.cc in Sources */, + 618BBEAF20B89AAC00B5BCE7 /* annotations.pb.cc in Sources */, + 618BBEAE20B89AAC00B5BCE7 /* latlng.pb.cc in Sources */, 5492E0AE2021552D00B64F25 /* FSTLevelDBQueryCacheTests.mm in Sources */, 5492E0AA2021552D00B64F25 /* FSTLevelDBRemoteDocumentCacheTests.mm in Sources */, 5492E03120213FFC00B64F25 /* FSTLevelDBSpecTests.mm in Sources */, @@ -1573,6 +1736,7 @@ 5492E0A32021552D00B64F25 /* FSTLocalSerializerTests.mm in Sources */, 5492E09D2021552D00B64F25 /* FSTLocalStoreTests.mm in Sources */, 5492E0A12021552D00B64F25 /* FSTMemoryLocalStoreTests.mm in Sources */, + 618BBEAB20B89AAC00B5BCE7 /* query.pb.cc in Sources */, 5492E0AD2021552D00B64F25 /* FSTMemoryMutationQueueTests.mm in Sources */, 5492E0A42021552D00B64F25 /* FSTMemoryQueryCacheTests.mm in Sources */, 5492E0A52021552D00B64F25 /* FSTMemoryRemoteDocumentCacheTests.mm in Sources */, @@ -1598,6 +1762,7 @@ 5492E0AB2021552D00B64F25 /* StringViewTests.mm in Sources */, 5492E03C2021401F00B64F25 /* XCTestCase+Await.mm in Sources */, 5467FB08203E6A44009C9584 /* app_testing.mm in Sources */, + 618BBEA920B89AAC00B5BCE7 /* common.pb.cc in Sources */, 54EB764D202277B30088B8F3 /* array_sorted_map_test.cc in Sources */, B6FB4684208EA0EC00554BA2 /* async_queue_libdispatch_test.mm in Sources */, B6FB4685208EA0F000554BA2 /* async_queue_std_test.cc in Sources */, @@ -1605,6 +1770,7 @@ 54740A581FC914F000713A1A /* autoid_test.cc in Sources */, AB380D02201BC69F00D97691 /* bits_test.cc in Sources */, 548DB929200D59F600E00ABC /* comparison_test.cc in Sources */, + 618BBEB120B89AAC00B5BCE7 /* status.pb.cc in Sources */, ABC1D7DC2023A04B00BA84F0 /* credentials_provider_test.cc in Sources */, ABE6637A201FA81900ED349A /* database_id_test.cc in Sources */, AB38D93020236E21000A432D /* database_info_test.cc in Sources */, @@ -1612,6 +1778,7 @@ B6152AD7202A53CB000E5744 /* document_key_test.cc in Sources */, AB6B908420322E4D00CC290A /* document_test.cc in Sources */, ABC1D7DD2023A04F00BA84F0 /* empty_credentials_provider_test.cc in Sources */, + 618BBEA820B89AAC00B5BCE7 /* mutation.pb.cc in Sources */, B6FB468E208F9BAB00554BA2 /* executor_libdispatch_test.mm in Sources */, B6FB468F208F9BAE00554BA2 /* executor_std_test.cc in Sources */, B6FB4690208F9BB300554BA2 /* executor_test.cc in Sources */, @@ -1625,6 +1792,7 @@ 54511E8E209805F8005BD28F /* hashing_test.cc in Sources */, 54A0353520A3D8CB003E0143 /* iterator_adaptors_test.cc in Sources */, 54995F6F205B6E12004EFFA0 /* leveldb_key_test.cc in Sources */, + 618BBEAD20B89AAC00B5BCE7 /* write.pb.cc in Sources */, 54C2294F1FECABAE007D065B /* log_test.cc in Sources */, AB6B908620322E6D00CC290A /* maybe_document_test.cc in Sources */, AB6B908820322E8800CC290A /* no_document_test.cc in Sources */, @@ -1633,6 +1801,7 @@ B686F2B22025000D0028D6BE /* resource_path_test.cc in Sources */, 54740A571FC914BA00713A1A /* secure_random_test.cc in Sources */, ABA495BB202B7E80008A7851 /* snapshot_version_test.cc in Sources */, + 618BBEAA20B89AAC00B5BCE7 /* firestore.pb.cc in Sources */, 549CCA5220A36DBC00BCEB75 /* sorted_map_test.cc in Sources */, 549CCA5020A36DBC00BCEB75 /* sorted_set_test.cc in Sources */, 54A0352F20A3B3D8003E0143 /* status_test.cc in Sources */, @@ -1977,10 +2146,13 @@ "\"${PODS_ROOT}/GoogleTest/googlemock/include\"", "\"${PODS_ROOT}/GoogleTest/googletest/include\"", "\"${PODS_ROOT}/leveldb-library/include\"", + "\"${PODS_ROOT}/../../../Firestore/Protos/cpp\"", + "\"${PODS_ROOT}/ProtobufCpp/src\"", ); INFOPLIST_FILE = "Tests/Tests-Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; + SYSTEM_HEADER_SEARCH_PATHS = "\"${PODS_ROOT}/nanopb\""; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Firestore_Example_iOS.app/Firestore_Example_iOS"; WRAPPER_EXTENSION = xctest; }; @@ -2011,10 +2183,13 @@ "\"${PODS_ROOT}/GoogleTest/googlemock/include\"", "\"${PODS_ROOT}/GoogleTest/googletest/include\"", "\"${PODS_ROOT}/leveldb-library/include\"", + "\"${PODS_ROOT}/../../../Firestore/Protos/cpp\"", + "\"${PODS_ROOT}/ProtobufCpp/src\"", ); INFOPLIST_FILE = "Tests/Tests-Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; + SYSTEM_HEADER_SEARCH_PATHS = "\"${PODS_ROOT}/nanopb\""; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Firestore_Example_iOS.app/Firestore_Example_iOS"; WRAPPER_EXTENSION = xctest; }; diff --git a/Firestore/Example/Podfile b/Firestore/Example/Podfile index 26af4cd..a98ae20 100644 --- a/Firestore/Example/Podfile +++ b/Firestore/Example/Podfile @@ -22,6 +22,7 @@ target 'Firestore_Example_iOS' do pod 'leveldb-library' pod 'OCMock' pod 'GoogleTest', :podspec => 'GoogleTest.podspec' + pod 'ProtobufCpp', :podspec => 'ProtobufCpp.podspec' end target 'Firestore_IntegrationTests_iOS' do diff --git a/Firestore/Example/ProtobufCpp.podspec b/Firestore/Example/ProtobufCpp.podspec new file mode 100644 index 0000000..8090b1e --- /dev/null +++ b/Firestore/Example/ProtobufCpp.podspec @@ -0,0 +1,68 @@ +# Copyright 2018 Google +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A Private podspec for Protobuf which exposes the C++ headers (rather than +# only the Obj-C headers). Suitable only for use inside this source tree. + +Pod::Spec.new do |s| + s.name = 'ProtobufCpp' + s.version = '3.5.2' + s.summary = 'Protocol Buffers v.3 runtime library for C++.' + s.homepage = 'https://github.com/google/protobuf' + s.license = '3-Clause BSD License' + s.authors = { 'The Protocol Buffers contributors' => 'protobuf@googlegroups.com' } + s.cocoapods_version = '>= 1.0' + + s.source = { + :git => 'https://github.com/google/protobuf.git', + :tag => "v#{s.version}" + } + + s.source_files = 'src/**/*.{h,cc}' + s.exclude_files = # skip test files. (Yes, the test files are intermixed with + # the source. No there doesn't seem to be a common/simple + # pattern we could use to exclude them; 'test' appears in + # various places throughout the file names and also in a + # non-test file. So, we'll exclude all files that either + # start with 'test' or include test and have a previous + # character that isn't "y" (so that bytestream isn't + # matched.)) + 'src/**/test*.*', + 'src/**/*[^y]test*.*', + 'src/**/testing/**', + 'src/**/mock*', + # skip the javascript handling code. + 'src/**/js/**', + # skip the protoc compiler + 'src/google/protobuf/compiler/**/*' + + s.header_mappings_dir = 'src/' + + # Set a CPP symbol so the code knows to use framework imports. + s.pod_target_xcconfig = { + 'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1', + 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/ProtobufCpp/src"', + + # Cocoapods flattens header imports, leading to much anguish. The + # following two statements work around this. + # - https://github.com/CocoaPods/CocoaPods/issues/1437 + 'USE_HEADERMAP' => 'NO', + 'ALWAYS_SEARCH_USER_PATHS' => 'NO', + + 'OTHER_CFLAGS' => '-DHAVE_PTHREAD' + } + + s.requires_arc = false + s.library = 'c++' +end -- cgit v1.2.3