aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore
diff options
context:
space:
mode:
authorGravatar Konstantin Varlamov <var-const@users.noreply.github.com>2018-05-08 19:37:20 -0400
committerGravatar GitHub <noreply@github.com>2018-05-08 19:37:20 -0400
commitdbcd179788a4cce4e9e3ae545e736148438c5c6f (patch)
tree1870fa7f448dfeff0ed6d696cd1feb4a60b5e45d /Firestore
parent8409f21830f1282a39c4b7888972011f43d2644a (diff)
Firestore C++: compile ExecutorLibdispatch in Objective-C++ mode (#1237)
dispatch_queue_t is defined differently in libdispatch depending on whether the library header is being include from Objective-C (or Objective-C++) code, or else from C or C++ code. Make sure that all source files in Firestore that include executor_libdispatch.h are compiled in the same mode (Objective-C++) to avoid linker errors.
Diffstat (limited to 'Firestore')
-rw-r--r--Firestore/Example/Firestore.xcodeproj/project.pbxproj24
-rw-r--r--Firestore/core/src/firebase/firestore/util/CMakeLists.txt2
-rw-r--r--Firestore/core/src/firebase/firestore/util/executor_libdispatch.h10
-rw-r--r--Firestore/core/src/firebase/firestore/util/executor_libdispatch.mm (renamed from Firestore/core/src/firebase/firestore/util/executor_libdispatch.cc)0
-rw-r--r--Firestore/core/test/firebase/firestore/util/CMakeLists.txt6
-rw-r--r--Firestore/core/test/firebase/firestore/util/async_queue_libdispatch_test.mm (renamed from Firestore/core/test/firebase/firestore/util/async_queue_test_libdispatch.cc)3
-rw-r--r--Firestore/core/test/firebase/firestore/util/async_queue_std_test.cc (renamed from Firestore/core/test/firebase/firestore/util/async_queue_test_std.cc)0
-rw-r--r--Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.mm (renamed from Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.cc)0
8 files changed, 26 insertions, 19 deletions
diff --git a/Firestore/Example/Firestore.xcodeproj/project.pbxproj b/Firestore/Example/Firestore.xcodeproj/project.pbxproj
index 6738e74..ba7a59a 100644
--- a/Firestore/Example/Firestore.xcodeproj/project.pbxproj
+++ b/Firestore/Example/Firestore.xcodeproj/project.pbxproj
@@ -162,9 +162,9 @@
B686F2AF2023DDEE0028D6BE /* field_path_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B686F2AD2023DDB20028D6BE /* field_path_test.cc */; };
B686F2B22025000D0028D6BE /* resource_path_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B686F2B02024FFD70028D6BE /* resource_path_test.cc */; };
B6FB467D208E9D3C00554BA2 /* async_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB467B208E9A8200554BA2 /* async_queue_test.cc */; };
- B6FB4684208EA0EC00554BA2 /* async_queue_test_libdispatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4680208EA0BE00554BA2 /* async_queue_test_libdispatch.cc */; };
- B6FB4685208EA0F000554BA2 /* async_queue_test_std.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4681208EA0BE00554BA2 /* async_queue_test_std.cc */; };
- B6FB468E208F9BAB00554BA2 /* executor_libdispatch_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.cc */; };
+ B6FB4684208EA0EC00554BA2 /* async_queue_libdispatch_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4680208EA0BE00554BA2 /* async_queue_libdispatch_test.mm */; };
+ B6FB4685208EA0F000554BA2 /* async_queue_std_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4681208EA0BE00554BA2 /* async_queue_std_test.cc */; };
+ B6FB468E208F9BAB00554BA2 /* executor_libdispatch_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.mm */; };
B6FB468F208F9BAE00554BA2 /* executor_std_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4687208F9B9100554BA2 /* executor_std_test.cc */; };
B6FB4690208F9BB300554BA2 /* executor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4688208F9B9100554BA2 /* executor_test.cc */; };
C4E749275AD0FBDF9F4716A8 /* Pods_SwiftBuildTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 32AD40BF6B0E849B07FFD05E /* Pods_SwiftBuildTest.framework */; };
@@ -412,12 +412,12 @@
B686F2B02024FFD70028D6BE /* resource_path_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resource_path_test.cc; sourceTree = "<group>"; };
B6FB467A208E9A8200554BA2 /* async_queue_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = async_queue_test.h; path = ../../core/test/firebase/firestore/util/async_queue_test.h; sourceTree = "<group>"; };
B6FB467B208E9A8200554BA2 /* async_queue_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = async_queue_test.cc; path = ../../core/test/firebase/firestore/util/async_queue_test.cc; sourceTree = "<group>"; };
- B6FB4680208EA0BE00554BA2 /* async_queue_test_libdispatch.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = async_queue_test_libdispatch.cc; path = ../../core/test/firebase/firestore/util/async_queue_test_libdispatch.cc; sourceTree = "<group>"; };
- B6FB4681208EA0BE00554BA2 /* async_queue_test_std.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = async_queue_test_std.cc; path = ../../core/test/firebase/firestore/util/async_queue_test_std.cc; sourceTree = "<group>"; };
+ B6FB4680208EA0BE00554BA2 /* async_queue_libdispatch_test.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = async_queue_libdispatch_test.mm; path = ../../core/test/firebase/firestore/util/async_queue_libdispatch_test.mm; sourceTree = "<group>"; };
+ B6FB4681208EA0BE00554BA2 /* async_queue_std_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = async_queue_std_test.cc; path = ../../core/test/firebase/firestore/util/async_queue_std_test.cc; sourceTree = "<group>"; };
B6FB4686208F9B9100554BA2 /* async_tests_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = async_tests_util.h; path = ../../core/test/firebase/firestore/util/async_tests_util.h; sourceTree = "<group>"; };
B6FB4687208F9B9100554BA2 /* executor_std_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = executor_std_test.cc; path = ../../core/test/firebase/firestore/util/executor_std_test.cc; sourceTree = "<group>"; };
B6FB4688208F9B9100554BA2 /* executor_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = executor_test.cc; path = ../../core/test/firebase/firestore/util/executor_test.cc; sourceTree = "<group>"; };
- B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = executor_libdispatch_test.cc; path = ../../core/test/firebase/firestore/util/executor_libdispatch_test.cc; sourceTree = "<group>"; };
+ B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = executor_libdispatch_test.mm; path = ../../core/test/firebase/firestore/util/executor_libdispatch_test.mm; sourceTree = "<group>"; };
B6FB468A208F9B9100554BA2 /* executor_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = executor_test.h; path = ../../core/test/firebase/firestore/util/executor_test.h; sourceTree = "<group>"; };
BE88081EE627C46349C918EF /* Pods-Firestore_Tests_iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_Tests_iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_Tests_iOS/Pods-Firestore_Tests_iOS.debug.xcconfig"; sourceTree = "<group>"; };
C1D89E5405935366C88CC3E5 /* Pods-Firestore_Example-Firestore_SwiftTests_iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_Example-Firestore_SwiftTests_iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_Example-Firestore_SwiftTests_iOS/Pods-Firestore_Example-Firestore_SwiftTests_iOS.release.xcconfig"; sourceTree = "<group>"; };
@@ -510,12 +510,12 @@
isa = PBXGroup;
children = (
B6FB4686208F9B9100554BA2 /* async_tests_util.h */,
- B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.cc */,
+ B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.mm */,
B6FB4687208F9B9100554BA2 /* executor_std_test.cc */,
B6FB4688208F9B9100554BA2 /* executor_test.cc */,
B6FB468A208F9B9100554BA2 /* executor_test.h */,
- B6FB4680208EA0BE00554BA2 /* async_queue_test_libdispatch.cc */,
- B6FB4681208EA0BE00554BA2 /* async_queue_test_std.cc */,
+ B6FB4680208EA0BE00554BA2 /* async_queue_libdispatch_test.mm */,
+ B6FB4681208EA0BE00554BA2 /* async_queue_std_test.cc */,
B6FB467B208E9A8200554BA2 /* async_queue_test.cc */,
B6FB467A208E9A8200554BA2 /* async_queue_test.h */,
548DB926200D590300E00ABC /* assert_test.cc */,
@@ -1463,9 +1463,9 @@
54740A581FC914F000713A1A /* autoid_test.cc in Sources */,
548DB927200D590300E00ABC /* assert_test.cc in Sources */,
5492E0A62021552D00B64F25 /* FSTPersistenceTestHelpers.mm in Sources */,
- B6FB468E208F9BAB00554BA2 /* executor_libdispatch_test.cc in Sources */,
+ B6FB468E208F9BAB00554BA2 /* executor_libdispatch_test.mm in Sources */,
5467FB01203E5717009C9584 /* FIRFirestoreTests.mm in Sources */,
- B6FB4684208EA0EC00554BA2 /* async_queue_test_libdispatch.cc in Sources */,
+ B6FB4684208EA0EC00554BA2 /* async_queue_libdispatch_test.mm in Sources */,
5492E0A12021552D00B64F25 /* FSTMemoryLocalStoreTests.mm in Sources */,
5436F32420008FAD006E51E3 /* string_printf_test.cc in Sources */,
5492E067202154B900B64F25 /* FSTEventManagerTests.mm in Sources */,
@@ -1489,7 +1489,7 @@
5492E09D2021552D00B64F25 /* FSTLocalStoreTests.mm in Sources */,
5492E0A32021552D00B64F25 /* FSTLocalSerializerTests.mm in Sources */,
5492E0A72021552D00B64F25 /* FSTLevelDBKeyTests.mm in Sources */,
- B6FB4685208EA0F000554BA2 /* async_queue_test_std.cc in Sources */,
+ B6FB4685208EA0F000554BA2 /* async_queue_std_test.cc in Sources */,
5492E0A22021552D00B64F25 /* FSTQueryCacheTests.mm in Sources */,
5492E0A52021552D00B64F25 /* FSTMemoryRemoteDocumentCacheTests.mm in Sources */,
AB6B908820322E8800CC290A /* no_document_test.cc in Sources */,
diff --git a/Firestore/core/src/firebase/firestore/util/CMakeLists.txt b/Firestore/core/src/firebase/firestore/util/CMakeLists.txt
index 29d91c7..b2b015b 100644
--- a/Firestore/core/src/firebase/firestore/util/CMakeLists.txt
+++ b/Firestore/core/src/firebase/firestore/util/CMakeLists.txt
@@ -130,7 +130,7 @@ if(HAVE_LIBDISPATCH)
cc_library(
firebase_firestore_util_executor_libdispatch
SOURCES
- executor_libdispatch.cc
+ executor_libdispatch.mm
executor_libdispatch.h
executor.h
DEPENDS
diff --git a/Firestore/core/src/firebase/firestore/util/executor_libdispatch.h b/Firestore/core/src/firebase/firestore/util/executor_libdispatch.h
index b32dbff..85c34f8 100644
--- a/Firestore/core/src/firebase/firestore/util/executor_libdispatch.h
+++ b/Firestore/core/src/firebase/firestore/util/executor_libdispatch.h
@@ -17,7 +17,6 @@
#ifndef FIRESTORE_CORE_SRC_FIREBASE_FIRESTORE_UTIL_EXECUTOR_LIBDISPATCH_H_
#define FIRESTORE_CORE_SRC_FIREBASE_FIRESTORE_UTIL_EXECUTOR_LIBDISPATCH_H_
-#include <atomic>
#include <chrono> // NOLINT(build/c++11)
#include <functional>
#include <memory>
@@ -30,6 +29,13 @@
#include "Firestore/core/src/firebase/firestore/util/firebase_assert.h"
#include "absl/strings/string_view.h"
+#if !defined(__OBJC__)
+// `dispatch_queue_t` gets defined to different types when compiled in C++ or
+// Objective-C mode. Source files including this header should all be compiled
+// in the same mode to avoid linker errors.
+#error "This header only supports Objective-C++ (see comment for more info)."
+#endif // !defined(__OBJC__)
+
namespace firebase {
namespace firestore {
namespace util {
@@ -78,7 +84,7 @@ class ExecutorLibdispatch : public Executor {
absl::string_view GetCurrentQueueLabel() const;
absl::string_view GetTargetQueueLabel() const;
- std::atomic<dispatch_queue_t> dispatch_queue_;
+ dispatch_queue_t dispatch_queue_;
// Stores non-owned pointers to `TimeSlot`s.
// Invariant: if a `TimeSlot` is in `schedule_`, it's a valid pointer.
std::vector<TimeSlot*> schedule_;
diff --git a/Firestore/core/src/firebase/firestore/util/executor_libdispatch.cc b/Firestore/core/src/firebase/firestore/util/executor_libdispatch.mm
index b40f0dd..b40f0dd 100644
--- a/Firestore/core/src/firebase/firestore/util/executor_libdispatch.cc
+++ b/Firestore/core/src/firebase/firestore/util/executor_libdispatch.mm
diff --git a/Firestore/core/test/firebase/firestore/util/CMakeLists.txt b/Firestore/core/test/firebase/firestore/util/CMakeLists.txt
index 2e1e2f9..ea80ea2 100644
--- a/Firestore/core/test/firebase/firestore/util/CMakeLists.txt
+++ b/Firestore/core/test/firebase/firestore/util/CMakeLists.txt
@@ -80,7 +80,7 @@ if(HAVE_LIBDISPATCH)
SOURCES
executor_test.h
executor_test.cc
- executor_libdispatch_test.cc
+ executor_libdispatch_test.mm
async_tests_util.h
DEPENDS
firebase_firestore_util_executor_libdispatch
@@ -94,7 +94,7 @@ cc_test(
SOURCES
async_queue_test.h
async_queue_test.cc
- async_queue_test_std.cc
+ async_queue_std_test.cc
async_tests_util.h
DEPENDS
firebase_firestore_util_executor_std
@@ -107,7 +107,7 @@ if(HAVE_LIBDISPATCH)
SOURCES
async_queue_test.h
async_queue_test.cc
- async_queue_test_libdispatch.cc
+ async_queue_libdispatch_test.mm
async_tests_util.h
DEPENDS
firebase_firestore_util_executor_libdispatch
diff --git a/Firestore/core/test/firebase/firestore/util/async_queue_test_libdispatch.cc b/Firestore/core/test/firebase/firestore/util/async_queue_libdispatch_test.mm
index b4b9c63..5452266 100644
--- a/Firestore/core/test/firebase/firestore/util/async_queue_test_libdispatch.cc
+++ b/Firestore/core/test/firebase/firestore/util/async_queue_libdispatch_test.mm
@@ -16,8 +16,9 @@
#include "Firestore/core/test/firebase/firestore/util/async_queue_test.h"
-#include "Firestore/core/src/firebase/firestore/util/executor_libdispatch.h"
+#include <memory>
+#include "Firestore/core/src/firebase/firestore/util/executor_libdispatch.h"
#include "absl/memory/memory.h"
#include "gtest/gtest.h"
diff --git a/Firestore/core/test/firebase/firestore/util/async_queue_test_std.cc b/Firestore/core/test/firebase/firestore/util/async_queue_std_test.cc
index 9e69ad0..9e69ad0 100644
--- a/Firestore/core/test/firebase/firestore/util/async_queue_test_std.cc
+++ b/Firestore/core/test/firebase/firestore/util/async_queue_std_test.cc
diff --git a/Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.cc b/Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.mm
index 0167c83..0167c83 100644
--- a/Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.cc
+++ b/Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.mm