mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-10 22:45:59 +05:45
gRPC packages 0.3.7-dev from 2016 in its own third_party directory and builds it into libraries produced by CMake. Firestore depends on 0.3.9.2 via external dependency. Firestore checks in its nanopb-generated sources for compatibility with CocoaPods, where running the generator at build time on remote users' machines is perilous. This means that Firestore's generated code must match the version of nanopb available in CocoaPods. Unfortunately, generated code from 0.3.7-dev and 0.3.9.2 are not compatible with each other so we can't just downgrade the Firestore CMake build to match gRPC and use its copy. This change excludes gRPC's copy of nanopb until we get this fixed upstream.
63 lines
1.9 KiB
CMake
63 lines
1.9 KiB
CMake
# 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.
|
|
|
|
include(ExternalProject)
|
|
|
|
if(TARGET grpc)
|
|
return()
|
|
endif()
|
|
|
|
ExternalProject_Add(
|
|
grpc-download
|
|
|
|
DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR}
|
|
DOWNLOAD_NAME grpc-1.14.2.tar.gz
|
|
URL https://github.com/grpc/grpc/archive/v1.14.2.tar.gz
|
|
URL_HASH SHA256=c747e4d903f7dcf803be53abed4e4efc5d3e96f6c274ed1dfca7a03fa6f4e36b
|
|
|
|
PREFIX ${PROJECT_BINARY_DIR}
|
|
SOURCE_DIR ${PROJECT_BINARY_DIR}/src/grpc
|
|
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
TEST_COMMAND ""
|
|
INSTALL_COMMAND ""
|
|
|
|
# TODO(b/136119129): Get a common version of nanopb with gRPC.
|
|
# We need to resolve how to arrange for gRPC and Firestore to get a common
|
|
# version of nanopb.
|
|
PATCH_COMMAND sed -i.bak "/third_party\\/nanopb/ d" ${PROJECT_BINARY_DIR}/src/grpc/CMakeLists.txt
|
|
)
|
|
|
|
# gRPC depends upon these projects, so from an IWYU point of view should
|
|
# include these files. Unfortunately gRPC's build requires these to be
|
|
# subdirectories in its own source tree and CMake's ExternalProject download
|
|
# step clears the source tree so these must be declared to depend upon the grpc
|
|
# target. ExternalProject dependencies must already exist when declared so
|
|
# these must come after the ExternalProject_Add block above.
|
|
include(boringssl)
|
|
include(c-ares)
|
|
include(protobuf)
|
|
include(zlib)
|
|
|
|
add_custom_target(
|
|
grpc
|
|
DEPENDS
|
|
boringssl
|
|
c-ares
|
|
grpc-download
|
|
protobuf
|
|
zlib
|
|
)
|