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

Reply via email to