瀏覽代碼

Enable LevelDB on Windows under CMake (#3503)

* Update leveldb to 1.22

This adds Windows support (which was added to LevelDB in 1.21).

* Make use of LevelDB unconditional
Gil 6 年之前
父節點
當前提交
266a025421

+ 5 - 10
CMakeLists.txt

@@ -184,16 +184,11 @@ endif()
 
 
 # LevelDB
-if(NOT WIN32)
-  set(HAVE_LEVELDB ON)
-endif()
-if(HAVE_LEVELDB)
-  set(LEVELDB_BUILD_TESTS OFF CACHE BOOL "Firestore disabled")
-  set(LEVELDB_BUILD_BENCHMARKS OFF CACHE BOOL "Firestore disabled")
-  set(LEVELDB_INSTALL OFF CACHE BOOL "Firestore disabled")
-  add_external_subdirectory(leveldb)
-  add_alias(LevelDB::LevelDB leveldb)
-endif()
+set(LEVELDB_BUILD_TESTS OFF CACHE BOOL "Firestore disabled")
+set(LEVELDB_BUILD_BENCHMARKS OFF CACHE BOOL "Firestore disabled")
+set(LEVELDB_INSTALL OFF CACHE BOOL "Firestore disabled")
+add_external_subdirectory(leveldb)
+add_alias(LevelDB::LevelDB leveldb)
 
 
 # nanopb

+ 31 - 38
Firestore/core/src/firebase/firestore/local/CMakeLists.txt

@@ -12,44 +12,37 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-if(HAVE_LEVELDB)
-  cc_library(
-    firebase_firestore_local_persistence_leveldb
-    SOURCES
-      leveldb_index_manager.h
-      #leveldb_index_manager.mm
-      leveldb_key.cc
-      leveldb_key.h
-      leveldb_migrations.cc
-      leveldb_migrations.h
-      leveldb_mutation_queue.h
-      #leveldb_mutation_queue.mm
-      leveldb_query_cache.h
-      #leveldb_query_cache.mm
-      leveldb_remote_document_cache.h
-      #leveldb_remote_document_cache.mm
-      leveldb_transaction.cc
-      leveldb_transaction.h
-      leveldb_util.cc
-      leveldb_util.h
-    DEPENDS
-      # TODO(b/111328563) Force nanopb first to work around ODR violations
-      protobuf-nanopb-static
-
-      LevelDB::LevelDB
-      absl_strings
-      firebase_firestore_model
-      firebase_firestore_nanopb
-      firebase_firestore_protos_nanopb
-      firebase_firestore_util
-    EXCLUDE_FROM_ALL
-  )
+cc_library(
+  firebase_firestore_local_persistence_leveldb
+  SOURCES
+    leveldb_index_manager.h
+    #leveldb_index_manager.mm
+    leveldb_key.cc
+    leveldb_key.h
+    leveldb_migrations.cc
+    leveldb_migrations.h
+    leveldb_mutation_queue.h
+    #leveldb_mutation_queue.mm
+    leveldb_query_cache.h
+    #leveldb_query_cache.mm
+    leveldb_remote_document_cache.h
+    #leveldb_remote_document_cache.mm
+    leveldb_transaction.cc
+    leveldb_transaction.h
+    leveldb_util.cc
+    leveldb_util.h
+  DEPENDS
+    # TODO(b/111328563) Force nanopb first to work around ODR violations
+    protobuf-nanopb-static
 
-  set(
-    FIREBASE_FIRESTORE_LOCAL_PERSISTENCE
-    firebase_firestore_local_persistence_leveldb
-  )
-endif()
+    LevelDB::LevelDB
+    absl_strings
+    firebase_firestore_model
+    firebase_firestore_nanopb
+    firebase_firestore_protos_nanopb
+    firebase_firestore_util
+  EXCLUDE_FROM_ALL
+)
 
 cc_library(
   firebase_firestore_local
@@ -81,8 +74,8 @@ cc_library(
     # TODO(b/111328563) Force nanopb first to work around ODR violations
     protobuf-nanopb-static
 
-    ${FIREBASE_FIRESTORE_LOCAL_PERSISTENCE}
     absl_strings
+    firebase_firestore_local_persistence_leveldb
     firebase_firestore_model
     firebase_firestore_nanopb
     firebase_firestore_protos_nanopb

+ 3 - 11
Firestore/core/test/firebase/firestore/local/CMakeLists.txt

@@ -12,27 +12,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-if(HAVE_LEVELDB)
-  cc_test(
-    firebase_firestore_local_persistence_leveldb_test
-    SOURCES
-      leveldb_key_test.cc
-      leveldb_util_test.cc
-    DEPENDS
-      firebase_firestore_local_persistence_leveldb
-  )
-endif()
-
 cc_test(
   firebase_firestore_local_test
   SOURCES
     #index_manager_test.mm
     #leveldb_index_manager_test.mm
+    leveldb_key_test.cc
+    leveldb_util_test.cc
     local_serializer_test.cc
     #memory_index_manager_test.mm
   DEPENDS
     firebase_firestore_core
     firebase_firestore_local
+    firebase_firestore_local_persistence_leveldb
     firebase_firestore_model
     firebase_firestore_protos_libprotobuf
 )

+ 4 - 14
cmake/external/leveldb.cmake

@@ -18,25 +18,15 @@ if(TARGET leveldb)
   return()
 endif()
 
-if(WIN32)
-  # Unfortunately, LevelDB does not build on Windows (yet). See:
-  #
-  #   * https://github.com/google/leveldb/issues/363
-  #   * https://github.com/google/leveldb/issues/466
-  add_custom_target(leveldb)
-  return()
-endif()
-
-# CMake support was added after the 1.20 release
-set(commit 6caf73ad9dae0ee91873bcb39554537b85163770)  # master@{2018-07-14}
+set(version 1.22)
 
 ExternalProject_Add(
   leveldb
 
   DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR}
-  DOWNLOAD_NAME leveldb-${commit}.tar.gz
-  URL https://github.com/google/leveldb/archive/${commit}.tar.gz
-  URL_HASH SHA256=255e3283556aff81e337a951c5f5579f5b98b63d5f345db9e97a1f7563f54f9e
+  DOWNLOAD_NAME leveldb-${version}.tar.gz
+  URL https://github.com/google/leveldb/archive/${version}.tar.gz
+  URL_HASH SHA256=55423cac9e3306f4a9502c738a001e4a339d1a38ffbee7572d4a07d5d63949b2
 
   PREFIX ${PROJECT_BINARY_DIR}