diff options
author | YohanPipereau <ypiperea@cisco.com> | 2019-03-12 14:15:26 +0100 |
---|---|---|
committer | Hongjun Ni <hongjun.ni@intel.com> | 2019-03-18 00:51:36 +0000 |
commit | d7680154981c54989bcbcab81173791dc1805512 (patch) | |
tree | 5a1e807c0cb91d478eca43d0f673daa4006fa124 /src/gnmi/proto | |
parent | f8118bf32a5e5276f796c3f03095c2ee1a41423a (diff) |
Fix Cmake build environment and harden Warnings
-Remove unused sweetcomb CmakeList.txt Warnings
-Add more Warnings to plugins, scvpp and gNMI Cmake projects
-Remove unused/useless Cmake options in CmakeList files & add comments
-Improve gNMI CMakeList.txt and make it independant of a gRPC cmake build for
later package integration.
-Add FindGRPC.cmake
-Remove the use of CXX17 variant and use a dedicated Cmake module for
gRPC
Change-Id: Iafa3c031d12802e8d8c914cbce6b119c2a5c4800
Signed-off-by: Yohan Pipereau <ypiperea@cisco.com>
Diffstat (limited to 'src/gnmi/proto')
-rw-r--r-- | src/gnmi/proto/CMakeLists.txt | 69 |
1 files changed, 29 insertions, 40 deletions
diff --git a/src/gnmi/proto/CMakeLists.txt b/src/gnmi/proto/CMakeLists.txt index 8e70f77..e68a2c9 100644 --- a/src/gnmi/proto/CMakeLists.txt +++ b/src/gnmi/proto/CMakeLists.txt @@ -1,52 +1,41 @@ -set(protobuf_MODULE_COMPATIBLE TRUE) +# DEPENDENCIES +############## -find_package(Protobuf REQUIRED) +# Require at least Protobuf 3 for gNMI +find_package(Protobuf 3.0.0 REQUIRED) #official cmake module include_directories(${PROTOBUF_INCLUDE_DIRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) + message(STATUS "Using protobuf ${protobuf_VERSION}") -set(_PROTOBUF_LIBPROTOBUF ${PROTOBUF_LIBRARIES}) -set(_PROTOBUF_PROTOC ${PROTOBUF_PROTOC_EXECUTABLE}) +# Require at least gRPC 1.12.0, maybe earlier can be used -find_package(gRPC CONFIG REQUIRED) -set(_GRPC_GRPCPP gRPC::grpc++) -set(_GRPC_CPP_PLUGIN_EXECUTABLE $<TARGET_FILE:gRPC::grpc_cpp_plugin>) +# Official gRPCConfig.cmake installed by gRPC only if compiled with cmake +# Use our own FindGRPC.cmake instead +find_package(GRPC 1.12.0 REQUIRED) +get_filename_component(gnmi_proto "gnmi.proto" ABSOLUTE) +get_filename_component(gnmi_ext_proto "gnmi_ext.proto" ABSOLUTE) -set(PROTOS - gnmi.proto - gnmi_ext.proto -) +# GENERATION OF SOURCE FILES +############################ -get_filename_component(hw_proto "gnmi.proto" ABSOLUTE) -get_filename_component(hw_proto_path "${hw_proto}" PATH) -get_filename_component(gnmi_ext_proto "gnmi_ext.proto" ABSOLUTE) -get_filename_component(gnmi_ext_proto_path "${gnmi_ext_proto}" PATH) - -# Generated sources -set(hw_proto_srcs "${CMAKE_CURRENT_BINARY_DIR}/gnmi.pb.cc") -set(hw_proto_hdrs "${CMAKE_CURRENT_BINARY_DIR}/gnmi.pb.h") -set(hw_grpc_srcs "${CMAKE_CURRENT_BINARY_DIR}/gnmi.grpc.pb.cc") -set(hw_grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR}/gnmi.grpc.pb.h") -set(gnmi_ext_proto_srcs "${CMAKE_CURRENT_BINARY_DIR}/gnmi_ext.pb.cc") -set(gnmi_ext_proto_hdrs "${CMAKE_CURRENT_BINARY_DIR}/gnmi_ext.pb.h") -set(gnmi_ext_grpc_srcs "${CMAKE_CURRENT_BINARY_DIR}/gnmi_ext.grpc.pb.cc") -set(gnmi_ext_grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR}/gnmi_ext.grpc.pb.h") - -add_custom_command( - OUTPUT "${hw_proto_srcs}" "${hw_proto_hdrs}" "${hw_grpc_srcs}" "${hw_grpc_hdrs}" "${gnmi_ext_proto_srcs}" "${gnmi_ext_proto_hdrs}" "${gnmi_ext_grpc_srcs}" "${gnmi_ext_grpc_hdrs}" - COMMAND ${_PROTOBUF_PROTOC} - ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}" - --cpp_out "${CMAKE_CURRENT_BINARY_DIR}" - -I "${hw_proto_path}" "${gnmi_ext_path}" - --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}" - "${hw_proto}" "${gnmi_ext_proto}" - DEPENDS "${hw_proto}" "${gnmi_ext_proto}") - -# Include generated *.pb.h files +# Official generator +protobuf_generate_cpp(gnmi_proto_srcs gnmi_proto_hdrs ${gnmi_proto}) +protobuf_generate_cpp(gnmi_ext_proto_srcs gnmi_ext_proto_hdrs ${gnmi_ext_proto}) + +# Custom generator: Official `protobuf_generate_cpp` can't use grpc plugins +PROTOBUF_GENERATE_GRPC_CPP(gnmi_grpc_srcs gnmi_grpc_hdrs ${gnmi_proto}) +PROTOBUF_GENERATE_GRPC_CPP(gnmi_ext_grpc_srcs gnmi_ext_grpc_hdrs ${gnmi_ext_proto}) + +# LINK OPTIONS FOR GNMI-SERVER +############################## + +# Include generated protobuf C++ files include_directories("${CMAKE_CURRENT_BINARY_DIR}") -add_library(proto ${hw_proto_srcs} ${hw_grpc_srcs} - ${gnmi_ext_proto_srcs} ${gnmi_ext_grpc_srcs}) -target_link_libraries(proto ${_GRPC_GRPCPP} ${_PROTOBUF_LIBPROTOBUF}) +#Create a new library named gnmi +add_library(gnmi ${gnmi_grpc_srcs} ${gnmi_ext_grpc_srcs} ${gnmi_proto_srcs} ${gnmi_ext_proto_srcs}) +#Link our new gnmi library with grpc and protobuf libraries +target_link_libraries(gnmi ${GRPCPP_LIBRARY} ${PROTOBUF_LIBRARIES}) |