You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
2.7 KiB

  1. # On how to build grpc, you may refer to https://github.com/grpc/grpc
  2. # grpc version : v1.47.3
  3. set(GRPC_ROOT "${LIB_BASE_DIR}/grpc-build")
  4. function(GRPC_INSTALL DEST)
  5. # install grpc
  6. if(NOT EXISTS ${GRPC_ROOT})
  7. execute_process(COMMAND mkdir -p "${GRPC_ROOT}")
  8. else ()
  9. execute_process(COMMAND rm -rf "${GRPC_ROOT}/*")
  10. endif ()
  11. if(NOT EXISTS ${LIB_BASE_DIR}/grpc-subbuild)
  12. execute_process(COMMAND mkdir -p "${LIB_BASE_DIR}/grpc-subbuild")
  13. else ()
  14. execute_process(COMMAND rm -rf "${LIB_BASE_DIR}/grpc-subbuild/*")
  15. endif ()
  16. message(STATUS "${BoldGreen}Install grpc third party library${ColourReset}")
  17. execute_process(
  18. COMMAND cmake -DABSL_ENABLE_INSTALL=ON -DgRPC_INSTALL=ON -DCMAKE_CXX_STANDARD=17 -DABSL_CXX_STANDARD=17 -DABSL_USE_GOOGLETEST_HEAD=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--no-undefined -fPIC" -DCMAKE_INSTALL_PREFIX="/root/CXX_ENVS/wenet_runtime/grpc-build" -S ../grpc-v1.47.2 -B .
  19. WORKING_DIRECTORY ${LIB_BASE_DIR}/grpc-subbuild)
  20. execute_process(
  21. COMMAND make -j6
  22. WORKING_DIRECTORY ${LIB_BASE_DIR}/grpc-subbuild)
  23. execute_process(
  24. COMMAND make install
  25. WORKING_DIRECTORY ${grpc_build_dir})
  26. message("${BoldGreen}GRPC Installed !${ColourReset}")
  27. endfunction()
  28. set(CMAKE_CXX_STANDARD 14)
  29. set(protobuf_MODULE_COMPATIBLE TRUE)
  30. list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/protobuf/")
  31. find_package(Protobuf CONFIG REQUIRED)
  32. message("${BoldGreen}Using protobuf ${Protobuf_VERSION}${ColourReset}")
  33. list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/absl/")
  34. find_package(absl CONFIG REQUIRED)
  35. message("${BoldGreen}Using absl-cpp ${absl_VERSION}${ColourReset}")
  36. list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/grpc/")
  37. find_package(gRPC CONFIG REQUIRED)
  38. message("${BoldGreen}Using gRPC-cpp ${gRPC_VERSION}${ColourReset}")
  39. find_path(GRPC_BINARY_DIR grpc_cpp_plugin PATHS ${GRPC_ROOT}/bin)
  40. find_path(GRPC_LIBRARY_DIR cmake/grpc/gRPCConfig.cmake PATHS ${GRPC_ROOT}/lib)
  41. find_path(GRPC_INCLUDE_DIR grpc/grpc.h PATHS ${_GRPC_INCLUDE_DIR} )
  42. mark_as_advanced(
  43. GRPC_BINARY_DIR
  44. GRPC_LIBRARY_DIR
  45. GRPC_INCLUDE_DIR
  46. )
  47. message("${BoldGreen}GRPC_INCLUDE_DIR is ${GRPC_INCLUDE_DIR}${ColourReset}")
  48. set(PROTOBUF_LIBPROTOBUF $<TARGET_FILE:protobuf::libprotobuf>)
  49. set(PROTOBUF_PROTOC $<TARGET_FILE:protobuf::protoc>)
  50. set(GRPC_CPP_PLUGIN_EXECUTABLE gRPC::grpc_cpp_plugin)
  51. set(REFLECTION gRPC::grpc++_reflection)
  52. set(GRPC_GRPCPP gRPC::grpc++)
  53. include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
  54. FIND_PACKAGE_HANDLE_STANDARD_ARGS(gRPC DEFAULT_MSG
  55. PROTOBUF_PROTOC REFLECTION GRPC_GRPCPP GRPC_CPP_PLUGIN_EXECUTABLE)