summaryrefslogtreecommitdiff
path: root/src/currency/genproto
diff options
context:
space:
mode:
authorSaumit <justsaumit@protonmail.com>2025-09-27 02:14:26 +0530
committerSaumit <justsaumit@protonmail.com>2025-09-27 02:14:26 +0530
commit82e03978b89938219958032efb1448cc76baa181 (patch)
tree626f3e54d52ecd49be0ed3bee30abacc0453d081 /src/currency/genproto
Initial snapshot - OpenTelemetry demo 2.1.3 -f
Diffstat (limited to 'src/currency/genproto')
-rw-r--r--src/currency/genproto/CMakeLists.txt62
-rw-r--r--src/currency/genproto/Dockerfile31
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