grpc.cmake 2.5 KB
Newer Older
J
jiyuan 已提交
1 2
include (ExternalProject)

3 4 5
set(GRPC_INCLUDE_DIR ${THIRD_PARTY_DIR}/grpc/include)
set(GRPC_LIBRARY_DIR ${THIRD_PARTY_DIR}/grpc/lib)

J
jiyuan 已提交
6
set(GRPC_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/include)
7 8
set(GRPC_URL https://github.com/yuanms2/grpc.git)
set(GRPC_TAG e0db46e140405f0f94f03c9a55b302e39a514c48)
J
jiyuan 已提交
9 10

if(WIN32)
11 12 13 14
    set(GRPC_BUILD_LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/${CMAKE_BUILD_TYPE})
    set(GRPC_LIBRARY_NAMES gpr.lib
      grpc_unsecure.lib
      grpc++_unsecure.lib)
W
Wind5 已提交
15
elseif(APPLE AND ("${CMAKE_GENERATOR}" STREQUAL "Xcode"))
16 17 18 19
    set(GRPC_BUILD_LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/${CMAKE_BUILD_TYPE})
    set(GRPC_LIBRARY_NAMES libgpr.a
      libgrpc_unsecure.a
      libgrpc++_unsecure.a)
J
jiyuan 已提交
20
else()
21 22 23 24
    set(GRPC_BUILD_LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc)
    set(GRPC_LIBRARY_NAMES libgpr.a
      libgrpc_unsecure.a
      libgrpc++_unsecure.a)
J
jiyuan 已提交
25 26
endif()

27 28 29 30 31
foreach(LIBRARY_NAME ${GRPC_LIBRARY_NAMES})
    list(APPEND GRPC_STATIC_LIBRARIES ${GRPC_LIBRARY_DIR}/${LIBRARY_NAME})
    list(APPEND GRPC_BUILD_STATIC_LIBRARIES ${GRPC_BUILD_LIBRARY_DIR}/${LIBRARY_NAME})
endforeach()

J
jinhui yuan 已提交
32
if(BUILD_THIRD_PARTY)
J
jinhui yuan 已提交
33

J
jiyuan 已提交
34 35 36 37 38
ExternalProject_Add(grpc
    PREFIX grpc
    DEPENDS protobuf zlib
    GIT_REPOSITORY ${GRPC_URL}
    GIT_TAG ${GRPC_TAG}
J
jinhui yuan 已提交
39
    UPDATE_COMMAND ""
J
jiyuan 已提交
40 41 42 43
    BUILD_IN_SOURCE 1
    INSTALL_COMMAND ""
    CMAKE_CACHE_ARGS
        -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
44 45 46 47
        -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
        -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
        -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
        -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
J
jiyuan 已提交
48
        -DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
49
        -DPROTOBUF_INCLUDE_DIRS:STRING=${PROTOBUF_SRC_DIR}
J
jiyuan 已提交
50 51 52 53
        -DPROTOBUF_LIBRARIES:STRING=${protobuf_STATIC_LIBRARIES}
        -DZLIB_ROOT:STRING=${ZLIB_INSTALL}
)

54 55 56 57 58 59 60 61 62 63 64 65 66
add_custom_target(grpc_create_header_dir
  COMMAND ${CMAKE_COMMAND} -E make_directory ${GRPC_INCLUDE_DIR}
  DEPENDS grpc)

add_custom_target(grpc_copy_headers_to_destination
  COMMAND ${CMAKE_COMMAND} -E copy_directory ${GRPC_INCLUDE_DIRS} ${GRPC_INCLUDE_DIR}
  DEPENDS grpc_create_header_dir)

add_custom_target(grpc_create_library_dir
  COMMAND ${CMAKE_COMMAND} -E make_directory ${GRPC_LIBRARY_DIR}
  DEPENDS grpc)

add_custom_target(grpc_copy_libs_to_destination
67
  COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GRPC_BUILD_STATIC_LIBRARIES} ${GRPC_LIBRARY_DIR}
68
  DEPENDS grpc_create_library_dir)
J
jinhui yuan 已提交
69

J
jinhui yuan 已提交
70
endif(BUILD_THIRD_PARTY)