From 6b08cf4c81f93f31d31e6c36124c0aff7919b3e8 Mon Sep 17 00:00:00 2001 From: Ian Coolidge Date: Fri, 16 Jun 2017 12:56:23 -0700 Subject: [PATCH 1/2] Propagate alwayslink in the grpc_cc_library build rule template. --- bazel/grpc_build_system.bzl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bazel/grpc_build_system.bzl b/bazel/grpc_build_system.bzl index 8057f27a123..f793cae56d1 100644 --- a/bazel/grpc_build_system.bzl +++ b/bazel/grpc_build_system.bzl @@ -25,7 +25,8 @@ def grpc_cc_library(name, srcs = [], public_hdrs = [], hdrs = [], external_deps = [], deps = [], standalone = False, - language = "C++", testonly = False, visibility = None): + language = "C++", testonly = False, visibility = None, + alwayslink = 0): copts = [] if language.upper() == "C": copts = ["-std=c99"] @@ -40,7 +41,8 @@ def grpc_cc_library(name, srcs = [], public_hdrs = [], hdrs = [], linkopts = ["-pthread"], includes = [ "include" - ] + ], + alwayslink = alwayslink, ) def grpc_proto_plugin(name, srcs = [], deps = []): From 13213419f6381625a9d41622b94a31a91c0fc9c0 Mon Sep 17 00:00:00 2001 From: Ian Coolidge Date: Tue, 27 Jun 2017 21:49:44 -0700 Subject: [PATCH 2/2] alwayslink=1 for reflection plugin The reflection plugin uses a static initializer to enable itself, but no one depends on its symbols, so it gets optimized out. Set alwayslink in the reflection plugin to fix that. --- BUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILD b/BUILD index 26981ca35da..74d9a77cfeb 100644 --- a/BUILD +++ b/BUILD @@ -1522,6 +1522,7 @@ grpc_cc_library( ":grpc++", "//src/proto/grpc/reflection/v1alpha:reflection_proto", ], + alwayslink = 1, ) grpc_cc_library(