Removed the OpenSSL dependency for building gRPC in libprocess. When the SSL build feature is disabled, libprocess now builds `libgrpc_unsecure` and `libgrpc++_unsecure` instead of `libgrpc` and `libgrpc++`, so the SSL headers and libraries are no longer required.
Review: https://reviews.apache.org/r/66997 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/296ba1e4 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/296ba1e4 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/296ba1e4 Branch: refs/heads/master Commit: 296ba1e41517ea95adfc59300116078581fe5987 Parents: b74821c Author: Chun-Hung Hsiao <chhs...@mesosphere.io> Authored: Mon May 7 16:39:29 2018 -0700 Committer: Chun-Hung Hsiao <chhs...@mesosphere.io> Committed: Wed May 9 12:05:13 2018 -0700 ---------------------------------------------------------------------- 3rdparty/libprocess/3rdparty/Makefile.am | 29 +++++++++++++++++++-------- 3rdparty/libprocess/Makefile.am | 13 +++++++----- 3rdparty/libprocess/configure.ac | 14 +++++-------- 3 files changed, 34 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/296ba1e4/3rdparty/libprocess/3rdparty/Makefile.am ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/3rdparty/Makefile.am b/3rdparty/libprocess/3rdparty/Makefile.am index f7f0bed..d13e93f 100644 --- a/3rdparty/libprocess/3rdparty/Makefile.am +++ b/3rdparty/libprocess/3rdparty/Makefile.am @@ -204,26 +204,39 @@ PROTOC = @PROTOCOMPILER@ endif if ENABLE_GRPC +if !ENABLE_SSL +GRPC_VARIANT = _unsecure +endif + if WITH_BUNDLED_GRPC -LIB_GRPC = $(GRPC)/libs/opt/libgrpc++.a \ - $(GRPC)/libs/opt/libgrpc.a \ +LIB_GRPC = $(GRPC)/libs/opt/libgrpc++$(GRPC_VARIANT).a \ + $(GRPC)/libs/opt/libgrpc$(GRPC_VARIANT).a \ $(GRPC)/libs/opt/libgpr.a $(LIB_GRPC): $(GRPC)-build-stamp +# NOTE: We the include flags through the `CPPFLAGS` environment variable rather +# than the command line because gRPC uses target-specific assignments to append +# flags to `CPPFLAGS`, which will be overwritten by command line arguments. See: +# https://www.gnu.org/software/make/manual/html_node/Target_002dspecific.html $(GRPC)-build-stamp: $(GRPC)-stamp \ $(PROTOBUF)-build-stamp cd $(GRPC) && \ CPPFLAGS="$(PROTOBUF_INCLUDE_FLAGS) \ $(SSL_INCLUDE_FLAGS) \ $(ZLIB_INCLUDE_FLAGS)" \ - LDFLAGS="$(PROTOBUF_LINKER_FLAGS) \ - $(SSL_LINKER_FLAGS) \ - $(ZLIB_LINKERFLAGS)" \ $(MAKE) $(AM_MAKEFLAGS) \ - HAS_PKG_CONFIG=false \ - NO_PROTOC=false \ - PROTOC=$(PROTOC) + $(LIB_GRPC:%=$(abs_builddir)/%) \ + CC="$(CC)" \ + CXX="$(CXX)" \ + LD="$(CC)" \ + LDXX="$(CXX)" \ + LDFLAGS="$(PROTOBUF_LINKER_FLAGS) \ + $(SSL_LINKER_FLAGS) \ + $(ZLIB_LINKER_FLAGS)" \ + HAS_PKG_CONFIG=false \ + NO_PROTOC=false \ + PROTOC="$(PROTOC)" touch $@ ALL_LOCAL += $(LIB_GRPC) http://git-wip-us.apache.org/repos/asf/mesos/blob/296ba1e4/3rdparty/libprocess/Makefile.am ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/Makefile.am b/3rdparty/libprocess/Makefile.am index 70edb2e..b1d77f3 100644 --- a/3rdparty/libprocess/Makefile.am +++ b/3rdparty/libprocess/Makefile.am @@ -113,12 +113,15 @@ BUNDLED_DEPS += $(GPERFTOOLS)-build-stamp endif if ENABLE_GRPC +if !ENABLE_SSL +GRPC_VARIANT = _unsecure +endif + if WITH_BUNDLED_GRPC GRPC_INCLUDE_FLAGS = -I$(GRPC)/include -LIB_GRPC = $(GRPC)/libs/opt/libgrpc++.a \ - $(GRPC)/libs/opt/libgrpc.a \ - $(GRPC)/libs/opt/libgpr.a \ - -lssl -lcrypto +LIB_GRPC = $(GRPC)/libs/opt/libgrpc++$(GRPC_VARIANT).a \ + $(GRPC)/libs/opt/libgrpc$(GRPC_VARIANT).a \ + $(GRPC)/libs/opt/libgpr.a GRPC_CPP_PLUGIN = $(GRPC)/bins/opt/grpc_cpp_plugin # NOTE: We need to specify the dependency between Protobuf and gRPC @@ -129,7 +132,7 @@ $(GRPC)-build-stamp: $(PROTOBUF)-build-stamp $(LIB_GRPC): $(GRPC)-build-stamp BUNDLED_DEPS += $(GRPC)-build-stamp else -LIB_GRPC = -lgrpc++ -lgrpc -lgpr -lssl -lcrypto +LIB_GRPC = -lgrpc++$(GRPC_VARIANT) -lgrpc$(GRPC_VARIANT) -lgpr GRPC_CPP_PLUGIN = @GRPC_CXX_PLUGIN@ endif endif http://git-wip-us.apache.org/repos/asf/mesos/blob/296ba1e4/3rdparty/libprocess/configure.ac ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/configure.ac b/3rdparty/libprocess/configure.ac index fd65d70..083cf8b 100644 --- a/3rdparty/libprocess/configure.ac +++ b/3rdparty/libprocess/configure.ac @@ -1160,9 +1160,13 @@ if test "x$enable_grpc" = "xyes"; then GRPCPREFIX="/usr" fi + if test "x$enable_ssl" = "xno"; then + GRPC_VARIANT="_unsecure" + fi + # Check if headers and library were located. saved_LIBS="$LIBS" - LIBS="-lgrpc++ -lgrpc -lgpr $LIBS" + LIBS="-lgrpc++$GRPC_VARIANT -lgrpc$GRPC_VARIANT -lgpr $LIBS" AC_LANG_PUSH([C++]) AC_CHECK_HEADERS([grpcpp/grpcpp.h], [AC_LINK_IFELSE( @@ -1201,14 +1205,6 @@ correct if you are already doing this. ]) fi else - if test "x$found_ssl" != "xyes"; then - AC_MSG_ERROR([cannot find libssl -------------------------------------------------------------------- -libssl is required for gRPC to build. -------------------------------------------------------------------- - ]) - fi - with_bundled_grpc=yes fi fi