|
@ -1,27 +1,21 @@ |
|
|
# On how to build grpc, you may refer to https://github.com/grpc/grpc |
|
|
# On how to build grpc, you may refer to https://github.com/grpc/grpc |
|
|
# grpc version : v1.37.1 |
|
|
|
|
|
set(grpc_build_dir "${LIB_BASE_DIR}/grpc-build") |
|
|
|
|
|
if(NOT EXISTS ${grpc_build_dir}) |
|
|
|
|
|
|
|
|
# grpc version : v1.47.3 |
|
|
|
|
|
set(GRPC_ROOT "${LIB_BASE_DIR}/grpc-build") |
|
|
|
|
|
function(GRPC_INSTALL DEST) |
|
|
# install grpc |
|
|
# install grpc |
|
|
execute_process(COMMAND mkdir -p "${grpc_build_dir}") |
|
|
|
|
|
execute_process(COMMAND mkdir -p "${LIB_BASE_DIR}/grpc-subbuild") |
|
|
|
|
|
|
|
|
if(NOT EXISTS ${GRPC_ROOT}) |
|
|
|
|
|
execute_process(COMMAND mkdir -p "${GRPC_ROOT}") |
|
|
|
|
|
else () |
|
|
|
|
|
execute_process(COMMAND rm -rf "${GRPC_ROOT}/*") |
|
|
|
|
|
endif () |
|
|
|
|
|
if(NOT EXISTS ${LIB_BASE_DIR}/grpc-subbuild) |
|
|
|
|
|
execute_process(COMMAND mkdir -p "${LIB_BASE_DIR}/grpc-subbuild") |
|
|
|
|
|
else () |
|
|
|
|
|
execute_process(COMMAND rm -rf "${LIB_BASE_DIR}/grpc-subbuild/*") |
|
|
|
|
|
endif () |
|
|
message(STATUS "${BoldGreen}Install grpc third party library${ColourReset}") |
|
|
message(STATUS "${BoldGreen}Install grpc third party library${ColourReset}") |
|
|
execute_process( |
|
|
execute_process( |
|
|
COMMAND cmake |
|
|
|
|
|
-DgRPC_INSTALL=ON |
|
|
|
|
|
-DCMAKE_BUILD_TYPE=Release |
|
|
|
|
|
-DgRPC_PROTOBUF_PROVIDER=module |
|
|
|
|
|
-DgRPC_CARES_PROVIDER=module |
|
|
|
|
|
-DgRPC_ABSL_PROVIDER=module |
|
|
|
|
|
-DgRPC_RE2_PROVIDER=module |
|
|
|
|
|
-DgRPC_SSL_PROVIDER=module |
|
|
|
|
|
-DgRPC_ZLIB_PROVIDER=module |
|
|
|
|
|
-DgRPC_BUILD_TESTS=OFF |
|
|
|
|
|
-DCMAKE_INSTALL_PREFIX=${grpc_build_dir} |
|
|
|
|
|
-j6 |
|
|
|
|
|
-fPIC |
|
|
|
|
|
-S ${LIB_BASE_DIR}/grpc-src |
|
|
|
|
|
-B ${LIB_BASE_DIR}/grpc-subbuild |
|
|
|
|
|
|
|
|
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 . |
|
|
WORKING_DIRECTORY ${LIB_BASE_DIR}/grpc-subbuild) |
|
|
WORKING_DIRECTORY ${LIB_BASE_DIR}/grpc-subbuild) |
|
|
execute_process( |
|
|
execute_process( |
|
|
COMMAND make -j6 |
|
|
COMMAND make -j6 |
|
@ -29,30 +23,37 @@ if(NOT EXISTS ${grpc_build_dir}) |
|
|
execute_process( |
|
|
execute_process( |
|
|
COMMAND make install |
|
|
COMMAND make install |
|
|
WORKING_DIRECTORY ${grpc_build_dir}) |
|
|
WORKING_DIRECTORY ${grpc_build_dir}) |
|
|
execute_process(COMMAND cp -rf ${LIB_BASE_DIR}/grpc-src/third_party/abseil-cpp/absl ${grpc_build_dir}/include) |
|
|
|
|
|
execute_process( |
|
|
|
|
|
COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/patch/grpc ${LIB_BASE_DIR}/grpc-build |
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
|
|
|
|
|
) |
|
|
|
|
|
message("${BoldGreen}GRPC Installed !${ColourReset}") |
|
|
message("${BoldGreen}GRPC Installed !${ColourReset}") |
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
endfunction() |
|
|
|
|
|
|
|
|
set(gRPC_DIR ${grpc_build_dir}) |
|
|
|
|
|
find_package(Threads REQUIRED) |
|
|
|
|
|
find_package(protobuf REQUIRED) |
|
|
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 14) |
|
|
|
|
|
set(protobuf_MODULE_COMPATIBLE TRUE) |
|
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/protobuf/") |
|
|
|
|
|
find_package(Protobuf CONFIG REQUIRED) |
|
|
|
|
|
message("${BoldGreen}Using protobuf ${Protobuf_VERSION}${ColourReset}") |
|
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/absl/") |
|
|
|
|
|
find_package(absl CONFIG REQUIRED) |
|
|
|
|
|
message("${BoldGreen}Using absl-cpp ${absl_VERSION}${ColourReset}") |
|
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/grpc/") |
|
|
find_package(gRPC CONFIG REQUIRED) |
|
|
find_package(gRPC CONFIG REQUIRED) |
|
|
|
|
|
message("${BoldGreen}Using gRPC-cpp ${gRPC_VERSION}${ColourReset}") |
|
|
|
|
|
|
|
|
include_directories(${grpc_build_dir}/include) |
|
|
|
|
|
link_directories(${grpc_build_dir}/lib) |
|
|
|
|
|
# local proto file |
|
|
|
|
|
set(grpc_BINARY_DIR "${grpc_build_dir}/bin") |
|
|
|
|
|
|
|
|
|
|
|
message(${BoldGreen} |
|
|
|
|
|
protobuf_FOUND:${protobuf_FOUND} \n |
|
|
|
|
|
${CMAKE_PREFIX_PATH} \n |
|
|
|
|
|
proto_file: ${grpc_BINARY_DIR}/protoc \n |
|
|
|
|
|
grpc_cpp_plugin:${grpc_BINARY_DIR}/grpc_cpp_plugin${ColourReset}) |
|
|
|
|
|
|
|
|
|
|
|
list(APPEND third_party_libraries gRPC::grpc++ gRPC::grpc++_reflection protobuf) |
|
|
|
|
|
|
|
|
find_path(GRPC_BINARY_DIR grpc_cpp_plugin PATHS ${GRPC_ROOT}/bin) |
|
|
|
|
|
find_path(GRPC_LIBRARY_DIR cmake/grpc/gRPCConfig.cmake PATHS ${GRPC_ROOT}/lib) |
|
|
|
|
|
find_path(GRPC_INCLUDE_DIR grpc/grpc.h PATHS ${_GRPC_INCLUDE_DIR} ) |
|
|
|
|
|
mark_as_advanced( |
|
|
|
|
|
GRPC_BINARY_DIR |
|
|
|
|
|
GRPC_LIBRARY_DIR |
|
|
|
|
|
GRPC_INCLUDE_DIR |
|
|
|
|
|
) |
|
|
|
|
|
message("${BoldGreen}GRPC_INCLUDE_DIR is ${GRPC_INCLUDE_DIR}${ColourReset}") |
|
|
|
|
|
set(PROTOBUF_LIBPROTOBUF $<TARGET_FILEprotobuf::libprotobuf>) |
|
|
|
|
|
set(PROTOBUF_PROTOC $<TARGET_FILE:protobuf::protoc>) |
|
|
|
|
|
find_program(GRPC_CPP_PLUGIN_EXECUTABLE grpc_cpp_plugin) |
|
|
|
|
|
set(REFLECTION gRPC::grpc++_reflection) |
|
|
|
|
|
set(GRPC_GRPCPP gRPC::grpc++) |
|
|
|
|
|
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) |
|
|
|
|
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(gRPC DEFAULT_MSG |
|
|
|
|
|
PROTOBUF_PROTOC REFLECTION GRPC_GRPCPP GRPC_CPP_PLUGIN_EXECUTABLE) |
|
|
|
|
|
|