Created
September 12, 2018 11:43
-
-
Save neewy/2efcdae59d278fd3ce59712318184f9a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
add_library(grpc UNKNOWN IMPORTED) | |
add_library(grpc++ UNKNOWN IMPORTED) | |
add_library(gpr UNKNOWN IMPORTED) | |
add_executable(grpc_cpp_plugin IMPORTED) | |
find_path(grpc_INCLUDE_DIR grpc/grpc.h) | |
mark_as_advanced(grpc_INCLUDE_DIR) | |
find_library(grpc_LIBRARY grpc) | |
mark_as_advanced(grpc_LIBRARY) | |
find_library(grpc_grpc++_LIBRARY grpc++) | |
mark_as_advanced(grpc_grpc++_LIBRARY) | |
# Find gRPC C++ reflection library | |
find_library(GRPC_GRPC++_REFLECTION_LIBRARY NAMES grpc++_reflection) | |
mark_as_advanced(GRPC_GRPC++_REFLECTION_LIBRARY) | |
add_library(gRPC::grpc++_reflection UNKNOWN IMPORTED) | |
find_library(gpr_LIBRARY gpr) | |
mark_as_advanced(gpr_LIBRARY) | |
find_library(address_sorting_LIBRARY address_sorting) | |
mark_as_advanced(address_sorting_LIBRARY) | |
find_program(grpc_CPP_PLUGIN grpc_cpp_plugin) | |
mark_as_advanced(grpc_CPP_PLUGIN) | |
find_package_handle_standard_args(grpc DEFAULT_MSG | |
grpc_LIBRARY | |
grpc_INCLUDE_DIR | |
gpr_LIBRARY | |
grpc_CPP_PLUGIN | |
) | |
set(URL https://github.com/grpc/grpc) | |
set(VERSION bd44e485f69d70ca4095cea92decd98de3892aa6) # Release 1.11.0 | |
set_target_description(grpc "Remote Procedure Call library" ${URL} ${VERSION}) | |
if (NOT protobuf_FOUND) | |
set(PROTO_DEP -DgRPC_PROTOBUF_PACKAGE_TYPE=CONFIG -DProtobuf_DIR=${EP_PREFIX}/src/google_protobuf-build/lib/cmake/protobuf) | |
else () | |
set(PROTO_DEP -DgRPC_PROTOBUF_PACKAGE_TYPE=MODULE) | |
endif () | |
if (NOT grpc_FOUND) | |
find_package(Git REQUIRED) | |
externalproject_add(grpc_grpc | |
GIT_REPOSITORY ${URL} | |
GIT_TAG ${VERSION} | |
CMAKE_ARGS | |
-DgRPC_PROTOBUF_PROVIDER=package | |
${PROTO_DEP} | |
-DgRPC_ZLIB_PROVIDER=package | |
-DBUILD_SHARED_LIBS=ON | |
BUILD_BYPRODUCTS | |
${EP_PREFIX}/src/grpc_grpc-build/grpc_cpp_plugin | |
${EP_PREFIX}/src/grpc_grpc-build/${CMAKE_SHARED_LIBRARY_PREFIX}gpr${CMAKE_SHARED_LIBRARY_SUFFIX} | |
${EP_PREFIX}/src/grpc_grpc-build/${CMAKE_SHARED_LIBRARY_PREFIX}grpc${CMAKE_SHARED_LIBRARY_SUFFIX} | |
${EP_PREFIX}/src/grpc_grpc-build/${CMAKE_SHARED_LIBRARY_PREFIX}grpc++${CMAKE_SHARED_LIBRARY_SUFFIX} | |
INSTALL_COMMAND "" # remove install step | |
TEST_COMMAND "" # remove test step | |
UPDATE_COMMAND "" # remove update step | |
) | |
externalproject_get_property(grpc_grpc source_dir binary_dir) | |
set(grpc_INCLUDE_DIR ${source_dir}/include) | |
set(gpr_LIBRARY ${binary_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}gpr${CMAKE_SHARED_LIBRARY_SUFFIX}) | |
set(grpc_LIBRARY ${binary_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}grpc${CMAKE_SHARED_LIBRARY_SUFFIX}) | |
set(grpc_grpc++_LIBRARY ${binary_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}grpc++${CMAKE_SHARED_LIBRARY_SUFFIX}) | |
set(address_sorting_LIBRARY ${binary_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}address_sorting${CMAKE_SHARED_LIBRARY_SUFFIX}) | |
set(grpc_CPP_PLUGIN ${binary_dir}/grpc_cpp_plugin) | |
file(MAKE_DIRECTORY ${grpc_INCLUDE_DIR}) | |
link_directories(${binary_dir}) | |
add_dependencies(grpc_grpc protobuf) | |
add_dependencies(grpc grpc_grpc) | |
add_dependencies(grpc++ grpc_grpc) | |
add_dependencies(grpc_cpp_plugin grpc_grpc protoc) | |
endif () | |
set_target_properties(grpc PROPERTIES | |
INTERFACE_INCLUDE_DIRECTORIES ${grpc_INCLUDE_DIR} | |
INTERFACE_LINK_LIBRARIES "pthread;dl" | |
IMPORTED_LOCATION ${grpc_LIBRARY} | |
) | |
set_target_properties(grpc++ PROPERTIES | |
INTERFACE_INCLUDE_DIRECTORIES ${grpc_INCLUDE_DIR} | |
INTERFACE_LINK_LIBRARIES grpc | |
IMPORTED_LOCATION ${grpc_grpc++_LIBRARY} | |
) | |
set_target_properties(gRPC::grpc++_reflection PROPERTIES | |
INTERFACE_INCLUDE_DIRECTORIES ${grpc_INCLUDE_DIR} | |
INTERFACE_LINK_LIBRARIES grpc++ | |
IMPORTED_LOCATION ${grpc_grpc++_LIBRARY} | |
) | |
set_target_properties(grpc_cpp_plugin PROPERTIES | |
IMPORTED_LOCATION ${grpc_CPP_PLUGIN} | |
) | |
set_target_properties(gpr PROPERTIES | |
IMPORTED_LOCATION ${gpr_LIBRARY} | |
) | |
if(ENABLE_LIBS_PACKAGING) | |
add_install_step_for_lib(${grpc_LIBRARY}) | |
add_install_step_for_lib(${grpc_grpc++_LIBRARY}) | |
add_install_step_for_lib(${gpr_LIBRARY}) | |
add_install_step_for_lib(${address_sorting_LIBRARY}) | |
endif() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment