From fb9f24eaee4c57d09ec0dca32abff840b39f7c7e Mon Sep 17 00:00:00 2001 From: Gil Date: Fri, 13 Jul 2018 11:09:44 -0700 Subject: Convert googletest and nanopb CMake builds to add_subdirectory (#1522) * Add a download-only boringssl ExternalProject Match boringssl version to grpc submodule version Note: not yet in use * Split grpc into separate download and build tasks This allows other external targets to download into the gRPC source tree before grpc is actually built. * Convert grpc to an http download * Build googletest with add_subdirectory Also: * Revert library-name modifications in the abseil-cpp build * Move abseil-cpp add_subdirectory build into place * Build nanopb with add_subdirectory * Force nanopb first to work around ODR violations This is a temporary work-around for b/111328563. --- Firestore/CMakeLists.txt | 43 +++++++++++++++++++--- Firestore/Protos/CMakeLists.txt | 7 ---- .../src/firebase/firestore/local/CMakeLists.txt | 4 +- .../src/firebase/firestore/nanopb/CMakeLists.txt | 4 +- .../src/firebase/firestore/remote/CMakeLists.txt | 4 +- Firestore/third_party/abseil-cpp/CMakeLists.txt | 12 +++--- 6 files changed, 53 insertions(+), 21 deletions(-) (limited to 'Firestore') diff --git a/Firestore/CMakeLists.txt b/Firestore/CMakeLists.txt index eb9744b..cbcd49d 100644 --- a/Firestore/CMakeLists.txt +++ b/Firestore/CMakeLists.txt @@ -42,16 +42,49 @@ if(APPLE) find_package(FirebaseCore REQUIRED) find_package(GoogleUtilities REQUIRED) endif() -find_package(GMock REQUIRED) find_package(GRPC REQUIRED) -find_package(GTest REQUIRED) find_package(LevelDB REQUIRED) -find_package(Nanopb REQUIRED) find_package(Protobuf REQUIRED) -enable_testing() -add_subdirectory(third_party/abseil-cpp) +# Googletest +add_subdirectory( + ${FIREBASE_BINARY_DIR}/src/googletest + ${FIREBASE_BINARY_DIR}/src/googletest-build + EXCLUDE_FROM_ALL +) +add_alias(GTest::GTest gtest) +add_alias(GTest::Main gtest_main) +add_alias(GMock::GMock gmock) + + +# Abseil-cpp +add_subdirectory( + third_party/abseil-cpp +) + + +# nanopb +set(nanopb_BUILD_GENERATOR ON CACHE BOOL "Enable the nanopb generator") +set(nanopb_PROTOC_PATH ${NANOPB_PROTOC_BIN} CACHE STRING "Protoc location") +add_subdirectory( + ${FIREBASE_BINARY_DIR}/src/nanopb + ${FIREBASE_BINARY_DIR}/src/nanopb-build + EXCLUDE_FROM_ALL +) + +target_compile_definitions( + protobuf-nanopb + PUBLIC -DPB_FIELD_16BIT +) + +target_include_directories( + protobuf-nanopb + INTERFACE $ +) + + +enable_testing() include(CompilerSetup) # Superbuild installed results diff --git a/Firestore/Protos/CMakeLists.txt b/Firestore/Protos/CMakeLists.txt index fdf45e7..214c15f 100644 --- a/Firestore/Protos/CMakeLists.txt +++ b/Firestore/Protos/CMakeLists.txt @@ -53,13 +53,6 @@ cc_library( protobuf-nanopb ) -target_compile_definitions( - firebase_firestore_protos_nanopb - PUBLIC -DPB_FIELD_16BIT -) - -# TODO(rsgowman): this may be worth moving into cc_library, possibly via an -# INCLUDE_DIRS or similar. target_include_directories( firebase_firestore_protos_nanopb PUBLIC ${FIREBASE_SOURCE_DIR}/Firestore/Protos/nanopb diff --git a/Firestore/core/src/firebase/firestore/local/CMakeLists.txt b/Firestore/core/src/firebase/firestore/local/CMakeLists.txt index 5a47187..f1c65c4 100644 --- a/Firestore/core/src/firebase/firestore/local/CMakeLists.txt +++ b/Firestore/core/src/firebase/firestore/local/CMakeLists.txt @@ -22,6 +22,9 @@ cc_library( local_serializer.h local_serializer.cc DEPENDS + # TODO(b/111328563) Force nanopb first to work around ODR violations + protobuf-nanopb + LevelDB::LevelDB absl_strings firebase_firestore_model @@ -29,5 +32,4 @@ cc_library( firebase_firestore_protos_nanopb firebase_firestore_remote firebase_firestore_util - protobuf-nanopb ) diff --git a/Firestore/core/src/firebase/firestore/nanopb/CMakeLists.txt b/Firestore/core/src/firebase/firestore/nanopb/CMakeLists.txt index fd34c2e..0471b1c 100644 --- a/Firestore/core/src/firebase/firestore/nanopb/CMakeLists.txt +++ b/Firestore/core/src/firebase/firestore/nanopb/CMakeLists.txt @@ -21,7 +21,9 @@ cc_library( writer.h writer.cc DEPENDS + # TODO(b/111328563) Force nanopb first to work around ODR violations + protobuf-nanopb + firebase_firestore_util firebase_firestore_protos_nanopb - protobuf-nanopb ) diff --git a/Firestore/core/src/firebase/firestore/remote/CMakeLists.txt b/Firestore/core/src/firebase/firestore/remote/CMakeLists.txt index a2bdbe2..af62ab1 100644 --- a/Firestore/core/src/firebase/firestore/remote/CMakeLists.txt +++ b/Firestore/core/src/firebase/firestore/remote/CMakeLists.txt @@ -22,10 +22,12 @@ cc_library( serializer.h serializer.cc DEPENDS + # TODO(b/111328563) Force nanopb first to work around ODR violations + protobuf-nanopb + firebase_firestore_model firebase_firestore_nanopb firebase_firestore_protos_nanopb firebase_firestore_util grpc::grpc - protobuf-nanopb ) diff --git a/Firestore/third_party/abseil-cpp/CMakeLists.txt b/Firestore/third_party/abseil-cpp/CMakeLists.txt index 4b939fa..7318cd3 100644 --- a/Firestore/third_party/abseil-cpp/CMakeLists.txt +++ b/Firestore/third_party/abseil-cpp/CMakeLists.txt @@ -76,14 +76,14 @@ endif() ## check targets if(BUILD_TESTING) - check_target(GTest::GTest) - check_target(GTest::Main) - check_target(GMock::GMock) + check_target(gtest) + check_target(gtest_main) + check_target(gmock) list(APPEND ABSL_TEST_COMMON_LIBRARIES - GTest::GTest - GTest::Main - GMock::GMock + gtest_main + gtest + gmock ${CMAKE_THREAD_LIBS_INIT} ) endif() -- cgit v1.2.3