aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmake/external/grpc.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/external/grpc.cmake')
-rw-r--r--cmake/external/grpc.cmake107
1 files changed, 7 insertions, 100 deletions
diff --git a/cmake/external/grpc.cmake b/cmake/external/grpc.cmake
index 310d238..a2e9142 100644
--- a/cmake/external/grpc.cmake
+++ b/cmake/external/grpc.cmake
@@ -13,99 +13,13 @@
# limitations under the License.
include(ExternalProject)
-include(external/c-ares)
-include(external/protobuf)
-include(external/zlib)
if(TARGET grpc)
return()
endif()
-if(GRPC_ROOT)
- # If the user has supplied a GRPC_ROOT then just use it. Add an empty custom
- # target so that the superbuild dependencies still work.
- add_custom_target(grpc)
- return()
-endif()
-
-set(
- CMAKE_ARGS
- -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
- -DBUILD_SHARED_LIBS:BOOL=OFF
- -DgRPC_INSTALL:BOOL=OFF
- -DgRPC_BUILD_TESTS:BOOL=OFF
-
- # TODO(rsgowman): We're currently building nanopb twice; once via grpc, and
- # once via nanopb. The version from grpc is the one that actually ends up
- # being used. We need to fix this such that either:
- # a) we instruct grpc to use our nanopb
- # b) we rely on grpc's nanopb instead of using our own.
- # For now, we'll pass in the necessary nanopb cflags into grpc. (We require
- # 16 bit fields. Without explicitly requesting this, nanopb uses 8 bit
- # fields.)
- -DCMAKE_C_FLAGS=-DPB_FIELD_16BIT
- -DCMAKE_CXX_FLAGS=-DPB_FIELD_16BIT
-)
-
-
-## c-ares
-if(NOT c-ares_DIR)
- set(c-ares_DIR ${FIREBASE_INSTALL_DIR}/lib/cmake/c-ares)
-endif()
-
-list(
- APPEND CMAKE_ARGS
- -DgRPC_CARES_PROVIDER:STRING=package
- -Dc-ares_DIR:PATH=${c-ares_DIR}
-)
-
-
-## protobuf
-
-# Unlike other dependencies of gRPC, we control the protobuf version because we
-# have checked-in protoc outputs that must match the runtime.
-
-# The location where protobuf-config.cmake will be installed varies by platform
-if(NOT Protobuf_DIR)
- if(WIN32)
- set(Protobuf_DIR "${FIREBASE_INSTALL_DIR}/cmake")
- else()
- set(Protobuf_DIR "${FIREBASE_INSTALL_DIR}/lib/cmake/protobuf")
- endif()
-endif()
-
-list(
- APPEND CMAKE_ARGS
- -DgRPC_PROTOBUF_PROVIDER:STRING=package
- -DgRPC_PROTOBUF_PACKAGE_TYPE:STRING=CONFIG
- -DProtobuf_DIR:PATH=${Protobuf_DIR}
-)
-
-
-## zlib
-
-# cmake/external/zlib.cmake figures out whether or not to build zlib. Either
-# way, from the gRPC build's point of view it's a package.
-list(
- APPEND CMAKE_ARGS
- -DgRPC_ZLIB_PROVIDER:STRING=package
-)
-if(ZLIB_FOUND)
- # Propagate possible user configuration to FindZLIB.cmake in the sub-build.
- list(
- APPEND CMAKE_ARGS
- -DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR}
- -DZLIB_LIBRARY=${ZLIB_LIBRARY}
- )
-endif()
-
-
ExternalProject_Add(
grpc-download
- DEPENDS
- c-ares
- protobuf
- zlib
DOWNLOAD_DIR ${FIREBASE_DOWNLOAD_DIR}
DOWNLOAD_NAME grpc-1.8.3.tar.gz
@@ -128,23 +42,16 @@ ExternalProject_Add(
# target. ExternalProject dependencies must already exist when declared so
# these must come after the ExternalProject_Add block above.
include(external/boringssl)
+include(external/c-ares)
+include(external/protobuf)
+include(external/zlib)
-ExternalProject_Add(
+add_custom_target(
grpc
DEPENDS
boringssl
+ c-ares
grpc-download
-
- PREFIX ${PROJECT_BINARY_DIR}
- SOURCE_DIR ${PROJECT_BINARY_DIR}/src/grpc
-
- CMAKE_ARGS
- ${CMAKE_ARGS}
-
- BUILD_COMMAND
- ${CMAKE_COMMAND} --build . --target grpc
-
- UPDATE_COMMAND ""
- TEST_COMMAND ""
- INSTALL_COMMAND ""
+ protobuf
+ zlib
)