diff --git a/native/cpp/CommonCpp/grpc/CMakeLists.txt b/native/cpp/CommonCpp/grpc/CMakeLists.txt --- a/native/cpp/CommonCpp/grpc/CMakeLists.txt +++ b/native/cpp/CommonCpp/grpc/CMakeLists.txt @@ -6,81 +6,10 @@ find_package(gRPC REQUIRED) set(CMAKE_CXX_STANDARD 14) -# Allow for tools on PATH to be found -find_program(_PROTOBUF_PROTOC protoc - HINTS "${_PROTOBUF_PROTOC}") -find_program(_GRPC_CPP_PLUGIN_EXECUTABLE grpc_cpp_plugin - HINTS "${_GRPC_CPP_PLUGIN_EXECUTABLE}") -set(_proto_dir "${CMAKE_CURRENT_SOURCE_DIR}/protos") -set(_components backup blob tunnelbroker) -set(TARGETS) - -# Iterate through each protobuf file -# and create headers, sources, and export as component library -foreach(component ${_components}) - set(LIB_NAME comm-${component}-grpc) - set(TARGETS ${TARGETS} ${LIB_NAME}) - - set(BIN_PROTO_HDRS - ${component}.pb.h - ${component}.grpc.pb.h - ) - - set(BIN_PROTO_SRCS - ${component}.pb.cc - ${component}.grpc.pb.cc - ) - - set(_proto_file "${_proto_dir}/${component}.proto") - # Generate headers from protobuf files, and copy them to _generated dir - add_custom_command( - OUTPUT ${BIN_PROTO_HDRS} ${BIN_PROTO_SRCS} - COMMAND ${_PROTOBUF_PROTOC} --grpc_out "${CMAKE_CURRENT_BINARY_DIR}" - --cpp_out "${CMAKE_CURRENT_BINARY_DIR}" - -I "${_proto_dir}" - --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}" - "${_proto_file}" - COMMAND sed 's|^// Genera|// @genera|g' ${component}.grpc.pb.h - > ${CMAKE_CURRENT_SOURCE_DIR}/_generated/${component}.grpc.pb.h - COMMAND sed 's|^// Genera|// @genera|g' ${component}.grpc.pb.cc - > ${CMAKE_CURRENT_SOURCE_DIR}/_generated/${component}.grpc.pb.cc - COMMAND sed 's|^// Genera|// @genera|g' ${component}.pb.h - > ${CMAKE_CURRENT_SOURCE_DIR}/_generated/${component}.pb.h - COMMAND sed 's|^// Genera|// @genera|g' ${component}.pb.cc - > ${CMAKE_CURRENT_SOURCE_DIR}/_generated/${component}.pb.cc - DEPENDS "${_proto_file}" - MAIN_DEPENDENCY "${_proto_file}" - COMMENT "Generate protobuf files for ${component}" - ) - - add_library(${LIB_NAME} - ${BIN_PROTO_HDRS} ${BIN_PROTO_SRCS} - ) - - target_link_libraries(${LIB_NAME} - gRPC::grpc++ - protobuf::libprotobuf - ) - - # reference local directory when building - # use installation path when installing - target_include_directories(${LIB_NAME} - PUBLIC - $ - $ - $ - ) - - install(TARGETS ${LIB_NAME} EXPORT comm-export - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${LIB_NAME} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${LIB_NAME} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${LIB_NAME} - ) - - # ensure headers are also installed - install(FILES ${PROTO_HDRS} DESTINATION include/comm/grpc) -endforeach() +add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../../../../shared/protos" + "${CMAKE_CURRENT_BINARY_DIR}/protos" +) set(CLIENT_HDRS "Client.h" @@ -108,6 +37,7 @@ target_include_directories(comm-client PUBLIC $ + $ $ $ # HACK: add complete cmake support to react-native? @@ -125,9 +55,9 @@ install(FILES ${CLIENT_HDRS} DESTINATION include/grpc) # For development purposes, able to reference build directory -export(TARGETS ${TARGETS} comm-client - NAMESPACE comm-grpc:: - FILE ${CMAKE_CURRENT_BINARY_DIR}/cmake/comm-grpc/comm-grpc-targets.cmake +export(TARGETS comm-client + NAMESPACE comm:: + FILE ${CMAKE_CURRENT_BINARY_DIR}/cmake/comm/comm-grpc-client-targets.cmake ) # For installation diff --git a/native/cpp/CommonCpp/grpc/Client.h b/native/cpp/CommonCpp/grpc/Client.h --- a/native/cpp/CommonCpp/grpc/Client.h +++ b/native/cpp/CommonCpp/grpc/Client.h @@ -6,8 +6,8 @@ #include #include "ClientGetReadReactor.h" -#include "_generated/tunnelbroker.grpc.pb.h" -#include "_generated/tunnelbroker.pb.h" +#include "tunnelbroker.grpc.pb.h" +#include "tunnelbroker.pb.h" namespace comm { namespace network { diff --git a/native/cpp/CommonCpp/grpc/ClientGetReadReactor.h b/native/cpp/CommonCpp/grpc/ClientGetReadReactor.h --- a/native/cpp/CommonCpp/grpc/ClientGetReadReactor.h +++ b/native/cpp/CommonCpp/grpc/ClientGetReadReactor.h @@ -3,8 +3,8 @@ #include "../NativeModules/InternalModules/SocketStatus.h" #include -#include "_generated/tunnelbroker.grpc.pb.h" -#include "_generated/tunnelbroker.pb.h" +#include "tunnelbroker.grpc.pb.h" +#include "tunnelbroker.pb.h" class ClientGetReadReactor : public grpc::ClientReadReactor {