This avoids unnecessary dependencies on big packages like libabseil-cpp and
others.

Upstream-status: not accepted (see https://github.com/grpc/grpc/issues/25322)

Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>

Updated for 1.48.0:
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
---
 CMakeLists.txt | 39 +++++++++++++++++++++++++++++++++++----
 1 file changed, 35 insertions(+), 4 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f632f26..0e1b4c3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,12 +49,16 @@ option(gRPC_BUILD_TESTS "Build tests" OFF)
 option(gRPC_BUILD_CODEGEN "Build codegen" ON)
 option(gRPC_BUILD_CSHARP_EXT "Build C# extensions" ON)
 option(gRPC_BACKWARDS_COMPATIBILITY_MODE "Build libraries that are binary compatible across a larger number of OS and libc versions" OFF)
+option(gRPC_BUILD_PLUGIN_SUPPORT_ONLY "Build plugin support only" OFF)
 
 set(gRPC_INSTALL_default ON)
 if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
   # Disable gRPC_INSTALL by default if building as a submodule
   set(gRPC_INSTALL_default OFF)
 endif()
+if(gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
+  set(gRPC_INSTALL_default OFF)
+endif()
 set(gRPC_INSTALL ${gRPC_INSTALL_default} CACHE BOOL
     "Generate installation target")
 
@@ -384,6 +388,8 @@ add_custom_target(plugins
   DEPENDS ${_gRPC_PLUGIN_LIST}
 )
 
+if (NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
+
 add_custom_target(tools_c
   DEPENDS
   check_epollexclusive
@@ -397,6 +403,8 @@ add_custom_target(tools_cxx
 add_custom_target(tools
   DEPENDS tools_c tools_cxx)
 
+endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY
+
 protobuf_generate_grpc_cpp(
   src/proto/grpc/channelz/channelz.proto
 )
@@ -1001,6 +1009,7 @@ if(gRPC_BUILD_TESTS)
     DEPENDS buildtests_c buildtests_cxx)
 endif()
 
+if (NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
 
 add_library(address_sorting
   third_party/address_sorting/address_sorting.c
@@ -1052,6 +1061,8 @@ if(gRPC_INSTALL)
   )
 endif()
 
+endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY
+
 if(gRPC_BUILD_TESTS)
 
 add_library(end2end_nosec_tests
@@ -1340,6 +1351,8 @@ target_link_libraries(end2end_tests
 
 endif()
 
+if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
+
 add_library(gpr
   src/core/ext/upb-generated/google/protobuf/any.upb.c
   src/core/ext/upb-generated/google/rpc/status.upb.c
@@ -2232,6 +2245,9 @@ target_link_libraries(grpc_csharp_ext
 
 
 endif()
+
+endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY
+
 if(gRPC_BUILD_TESTS)
 
 add_library(grpc_test_util
@@ -2370,6 +2386,8 @@ endif()
 
 endif()
 
+if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
+
 add_library(grpc_unsecure
   src/core/ext/filters/census/grpc_context.cc
   src/core/ext/filters/client_channel/backend_metric.cc
@@ -2752,6 +2770,8 @@ if(gRPC_INSTALL)
   )
 endif()
 
+endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY
+
 if(gRPC_BUILD_TESTS)
 
 if(gRPC_BUILD_CODEGEN)
@@ -2819,6 +2839,8 @@ endif()
 
 endif()
 
+if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
+
 add_library(grpc++
   src/core/ext/transport/binder/client/binder_connector.cc
   src/core/ext/transport/binder/client/channel_create.cc
@@ -3259,6 +3281,7 @@ if(gRPC_INSTALL)
   )
 endif()
 
+endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY
 
 if(gRPC_BUILD_CODEGEN)
 add_library(grpc++_reflection
@@ -3500,6 +3523,8 @@ target_link_libraries(grpc++_test_util
 
 endif()
 
+if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
+
 add_library(grpc++_unsecure
   src/cpp/client/channel_cc.cc
   src/cpp/client/client_callback.cc
@@ -3784,6 +3809,7 @@ if(gRPC_INSTALL)
   )
 endif()
 
+endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY
 
 add_library(grpc_plugin_support
   src/compiler/cpp_generator.cc
@@ -3843,7 +3869,7 @@ foreach(_hdr
 endforeach()
 
 
-if(gRPC_INSTALL)
+if(gRPC_INSTALL OR gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
   install(TARGETS grpc_plugin_support EXPORT gRPCTargets
     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
@@ -3925,6 +3951,8 @@ endif()
 
 endif()
 
+if(NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
+
 add_library(upb
   third_party/upb/upb/decode_fast.c
   third_party/upb/upb/decode.c
@@ -4062,6 +4090,7 @@ target_link_libraries(algorithm_test
   grpc_test_util
 )
 
+endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY
 
 endif()
 if(gRPC_BUILD_TESTS)
@@ -11234,7 +11263,7 @@ target_link_libraries(grpc_cli
 
 
 endif()
-if(gRPC_BUILD_CODEGEN AND gRPC_BUILD_GRPC_CPP_PLUGIN)
+if(gRPC_BUILD_GRPC_CPP_PLUGIN)
 
 add_executable(grpc_cpp_plugin
   src/compiler/cpp_plugin.cc
@@ -11264,7 +11293,7 @@ target_link_libraries(grpc_cpp_plugin
 
 
 
-if(gRPC_INSTALL)
+if(gRPC_INSTALL OR gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
   install(TARGETS grpc_cpp_plugin EXPORT gRPCTargets
     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
@@ -17375,7 +17404,7 @@ endif()
 
 
 
-
+if (NOT gRPC_BUILD_PLUGIN_SUPPORT_ONLY)
 
 
 if(gRPC_INSTALL)
@@ -17473,3 +17502,5 @@ generate_pkgconfig(
   "-lgrpc++_unsecure"
   ""
   "grpc++_unsecure.pc")
+  
+endif() # gRPC_BUILD_PLUGIN_SUPPORT_ONLY
-- 
2.25.1

