summaryrefslogtreecommitdiff
path: root/src/currency/genproto/CMakeLists.txt
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/CMakeLists.txt
Initial snapshot - OpenTelemetry demo 2.1.3 -f
Diffstat (limited to 'src/currency/genproto/CMakeLists.txt')
-rw-r--r--src/currency/genproto/CMakeLists.txt62
1 files changed, 62 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}")