diff options
Diffstat (limited to 'src/currency/genproto')
| -rw-r--r-- | src/currency/genproto/CMakeLists.txt | 62 | ||||
| -rw-r--r-- | src/currency/genproto/Dockerfile | 31 |
2 files changed, 93 insertions, 0 deletions
diff --git a/src/currency/genproto/CMakeLists.txt b/src/currency/genproto/CMakeLists.txt new file mode 100644 index 0000000..7ba525b --- /dev/null +++ b/src/currency/genproto/CMakeLists.txt @@ -0,0 +1,62 @@ +cmake_minimum_required(VERSION 3.26) +project(currency-proto) + +find_package(Protobuf REQUIRED) +find_package(gRPC CONFIG REQUIRED) + +set(PROTO_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../proto") +set(GENERATED_PROTOBUF_PATH "${CMAKE_BINARY_DIR}/generated/proto") +set(GENERATED_HEALTH_PROTOBUF_PATH "${GENERATED_PROTOBUF_PATH}/grpc/health/v1") + +file(MAKE_DIRECTORY "${GENERATED_PROTOBUF_PATH}") + +set(DEMO_PROTO "${PROTO_PATH}/demo.proto") +set(DEMO_PB_CPP_FILE "${GENERATED_PROTOBUF_PATH}/demo.pb.cc") +set(DEMO_PB_H_FILE "${GENERATED_PROTOBUF_PATH}/demo.pb.h") +set(DEMO_GRPC_PB_CPP_FILE "${GENERATED_PROTOBUF_PATH}/demo.grpc.pb.cc") +set(DEMO_GRPC_PB_H_FILE "${GENERATED_PROTOBUF_PATH}/demo.grpc.pb.h") +set(HEALTH_PROTO "${PROTO_PATH}/grpc/health/v1/health.proto") +set(HEALTH_PB_CPP_FILE "${GENERATED_HEALTH_PROTOBUF_PATH}/health.pb.cc") +set(HEALTH_PB_H_FILE "${GENERATED_HEALTH_PROTOBUF_PATH}/health.pb.h") +set(HEALTH_GRPC_PB_CPP_FILE "${GENERATED_HEALTH_PROTOBUF_PATH}/health.grpc.pb.cc") +set(HEALTH_GRPC_PB_H_FILE "${GENERATED_HEALTH_PROTOBUF_PATH}/health.grpc.pb.h") + +foreach(IMPORT_DIR ${PROTOBUF_IMPORT_DIRS}) + list(APPEND PROTOBUF_INCLUDE_FLAGS "-I${IMPORT_DIR}") +endforeach() + +find_program(gRPC_CPP_PLUGIN_EXECUTABLE grpc_cpp_plugin) + +add_custom_command( + OUTPUT ${DEMO_PB_H_FILE} + ${DEMO_PB_CPP_FILE} + ${DEMO_GRPC_PB_CPP_FILE} + ${DEMO_GRPC_PB_H_FILE} + ${HEALTH_PB_H_FILE} + ${HEALTH_PB_CPP_FILE} + ${HEALTH_GRPC_PB_CPP_FILE} + ${HEALTH_GRPC_PB_H_FILE} + + COMMAND + ${PROTOBUF_PROTOC_EXECUTABLE} ARGS "--experimental_allow_proto3_optional" + "--proto_path=${PROTO_PATH}" ${PROTOBUF_INCLUDE_FLAGS} + "--cpp_out=${GENERATED_PROTOBUF_PATH}" + "--grpc_out=generate_mock_code=true:${GENERATED_PROTOBUF_PATH}" + --plugin=protoc-gen-grpc="${gRPC_CPP_PLUGIN_EXECUTABLE}" ${DEMO_PROTO} ${HEALTH_PROTO} +) + +message(STATUS "gRPC_CPP_PLUGIN_EXECUTABLE=${gRPC_CPP_PLUGIN_EXECUTABLE}") + +add_library( + demo-proto ${DEMO_PB_H_FILE} + ${DEMO_PB_CPP_FILE} + ${DEMO_GRPC_PB_CPP_FILE} + ${DEMO_GRPC_PB_H_FILE} + ${HEALTH_PB_H_FILE} + ${HEALTH_PB_CPP_FILE} + ${HEALTH_GRPC_PB_CPP_FILE} + ${HEALTH_GRPC_PB_H_FILE} +) + +target_link_libraries(demo-proto gRPC::grpc++ protobuf::libprotobuf) +include_directories("${GENERATED_PROTOBUF_PATH}") diff --git a/src/currency/genproto/Dockerfile b/src/currency/genproto/Dockerfile new file mode 100644 index 0000000..e6a8128 --- /dev/null +++ b/src/currency/genproto/Dockerfile @@ -0,0 +1,31 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2023 The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM docker.io/library/alpine:3.21 AS builder + +RUN apk update && \ + apk add git cmake make g++ grpc-dev protobuf-dev linux-headers + +WORKDIR /currency + +COPY ./src/currency/genproto/CMakeLists.txt genproto/CMakeLists.txt +COPY ./src/currency/proto/ proto/ + +COPY ./pb/demo.proto proto/demo.proto + +RUN mkdir -p build && cd build \ + && cmake ../genproto \ + && make -j$(nproc || sysctl -n hw.ncpu || echo 1) demo-proto |
