blob: fc4876577bf4e29e0fd41fbd36b0a08bbc580eb8 [file] [log] [blame]
# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
cmake_minimum_required (VERSION 2.8.10)
project(googleapis)
set(BIGTABLE_PROTO_FILES
${CMAKE_CURRENT_SOURCE_DIR}/google/api/annotations.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/api/http.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/bigtable/admin/v2/bigtable_instance_admin.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/bigtable/admin/v2/bigtable_table_admin.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/bigtable/admin/v2/common.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/bigtable/admin/v2/instance.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/bigtable/admin/v2/table.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/bigtable/v2/bigtable.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/bigtable/v2/data.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/longrunning/operations.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/rpc/code.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/rpc/error_details.proto
${CMAKE_CURRENT_SOURCE_DIR}/google/rpc/status.proto
)
set(BIGTABLE_PB_GENERATED_FILES
${CMAKE_BINARY_DIR}/google/api/annotations.pb.cc
${CMAKE_BINARY_DIR}/google/api/annotations.pb.h
${CMAKE_BINARY_DIR}/google/api/annotations.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/api/annotations.grpc.pb.h
${CMAKE_BINARY_DIR}/google/api/http.pb.cc
${CMAKE_BINARY_DIR}/google/api/http.pb.h
${CMAKE_BINARY_DIR}/google/api/http.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/api/http.grpc.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/bigtable_instance_admin.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/bigtable_instance_admin.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/bigtable_instance_admin.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/bigtable_instance_admin.grpc.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/bigtable_table_admin.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/bigtable_table_admin.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/bigtable_table_admin.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/bigtable_table_admin.grpc.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/common.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/common.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/common.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/common.grpc.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/instance.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/instance.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/instance.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/instance.grpc.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/table.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/table.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/table.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/admin/v2/table.grpc.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/v2/bigtable.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/v2/bigtable.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/v2/bigtable.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/v2/bigtable.grpc.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/v2/data.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/v2/data.pb.h
${CMAKE_BINARY_DIR}/google/bigtable/v2/data.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/bigtable/v2/data.grpc.pb.h
${CMAKE_BINARY_DIR}/google/longrunning/operations.pb.cc
${CMAKE_BINARY_DIR}/google/longrunning/operations.pb.h
${CMAKE_BINARY_DIR}/google/longrunning/operations.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/longrunning/operations.grpc.pb.h
${CMAKE_BINARY_DIR}/google/rpc/code.pb.cc
${CMAKE_BINARY_DIR}/google/rpc/code.pb.h
${CMAKE_BINARY_DIR}/google/rpc/code.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/rpc/code.grpc.pb.h
${CMAKE_BINARY_DIR}/google/rpc/error_details.pb.cc
${CMAKE_BINARY_DIR}/google/rpc/error_details.pb.h
${CMAKE_BINARY_DIR}/google/rpc/error_details.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/rpc/error_details.grpc.pb.h
${CMAKE_BINARY_DIR}/google/rpc/status.pb.cc
${CMAKE_BINARY_DIR}/google/rpc/status.pb.h
${CMAKE_BINARY_DIR}/google/rpc/status.grpc.pb.cc
${CMAKE_BINARY_DIR}/google/rpc/status.grpc.pb.h
)
add_custom_command(OUTPUT ${BIGTABLE_PB_GENERATED_FILES}
COMMAND ${PROTOC} ${BIGTABLE_PROTO_FILES}
-I ${CMAKE_CURRENT_SOURCE_DIR}
-I ${PROTOBUF_INCLUDE_DIR}
--cpp_out=${CMAKE_BINARY_DIR}
--grpc_out=${CMAKE_BINARY_DIR}
--plugin=protoc-gen-grpc=${GRPC_CPP_PLUGIN}
)
add_custom_target(build_bigtable_protos ALL
DEPENDS ${BIGTABLE_PB_GENERATED_FILES})
set_source_files_properties(${BIGTABLE_PB_GENERATED_FILES} PROPERTIES GENERATED TRUE)
include_directories(BEFORE SYSTEM ${PROTOBUF_INCLUDE_DIR})
include_directories(BEFORE SYSTEM ${GRPC_INCLUDE_DIR})
include_directories(BEFORE SYSTEM ${CMAKE_BINARY_DIR})
link_directories(${PROTOBUF_LIB_DIR})
add_library(bigtable_grpc_client
${BIGTABLE_PB_GENERATED_FILES})
target_link_libraries(bigtable_grpc_client protobuf_full_cobalt grpc grpc++)
add_dependencies(bigtable_grpc_client build_bigtable_protos)
install(TARGETS bigtable_grpc_client
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
install(DIRECTORY ${CMAKE_BINARY_DIR}/ DESTINATION include
FILES_MATCHING
PATTERN "*.pb.cc"
PATTERN "*.pb.h"
)
set(GRPC_PROTO_FILES
${CMAKE_CURRENT_SOURCE_DIR}/google/rpc/status.proto
)
set(GRPC_PB_GENERATED_GO_FILES
${GO_PROTO_GEN_SRC_DIR}/google.golang.org/genproto/googleapis/rpc/status/status.pb.go
)
add_custom_command(OUTPUT ${GRPC_PB_GENERATED_GO_FILES}
COMMAND ${PROTOC} ${GRPC_PROTO_FILES}
-I ${CMAKE_CURRENT_SOURCE_DIR}
-I ${PROTOBUF_INCLUDE_DIR}
-I ${CMAKE_SOURCE_DIR}/third_party/go/src
--go_out=${GO_PROTO_GEN_SRC_DIR}
)
add_custom_target(generate_grpc_pb_go_files ALL
DEPENDS ${GRPC_PB_GENERATED_GO_FILES})