Skip to content

Commit 866ff79

Browse files
committed
Make grpc exporter optional
1 parent 44f9b70 commit 866ff79

File tree

3 files changed

+63
-34
lines changed

3 files changed

+63
-34
lines changed

CMakeLists.txt

Lines changed: 56 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ set(CLIENT_PROJECT_NAME otel-matlab)
66

77
project(${CLIENT_PROJECT_NAME} VERSION 0.1.0)
88

9+
# ######################################
10+
# Options
11+
# ######################################
12+
13+
option(WITH_OTLP_GRPC "Whether to include the OTLP gRPC exporter" OFF)
14+
915
# ######################################
1016
# libmexclass FetchContent Configuration
1117
# ######################################
@@ -38,18 +44,22 @@ set(OPENTELEMETRY_PROXY_LIBRARY_NAME "OtelMatlabProxy")
3844

3945
# Specify location for find_package to locate opentelemetry-cpp-config.cmake
4046
find_package(opentelemetry-cpp CONFIG REQUIRED)
41-
find_package(Protobuf REQUIRED)
4247
find_package(CURL REQUIRED)
43-
find_package(gRPC REQUIRED)
44-
find_package(absl REQUIRED)
45-
find_package(c-ares REQUIRED)
46-
find_package(re2 REQUIRED)
48+
find_package(Protobuf REQUIRED)
4749
find_package(nlohmann_json REQUIRED)
4850
if(WIN32)
49-
find_package(openssl REQUIRED)
5051
find_package(zlib REQUIRED)
51-
elseif(UNIX AND NOT APPLE AND NOT CYGWIN)
52-
find_package(upb REQUIRED)
52+
endif()
53+
if(WITH_OTLP_GRPC)
54+
find_package(gRPC REQUIRED)
55+
find_package(absl REQUIRED)
56+
find_package(c-ares REQUIRED)
57+
find_package(re2 REQUIRED)
58+
if(WIN32)
59+
find_package(openssl REQUIRED)
60+
elseif(UNIX AND NOT APPLE AND NOT CYGWIN)
61+
find_package(upb REQUIRED)
62+
endif()
5363
endif()
5464

5565
set(TRACE_API_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/trace/include)
@@ -83,15 +93,29 @@ set(OPENTELEMETRY_PROXY_SOURCES
8393
${TRACE_SDK_SOURCE_DIR}/BatchSpanProcessorProxy.cpp
8494
${TRACE_SDK_SOURCE_DIR}/ParentBasedSamplerProxy.cpp
8595
${OTLP_EXPORTER_SOURCE_DIR}/OtlpHttpSpanExporterProxy.cpp
86-
${OTLP_EXPORTER_SOURCE_DIR}/OtlpGrpcSpanExporterProxy.cpp
8796
)
97+
if(WITH_OTLP_GRPC)
98+
set(OPENTELEMETRY_PROXY_SOURCES ${OPENTELEMETRY_PROXY_SOURCES}
99+
${OTLP_EXPORTER_SOURCE_DIR}/OtlpGrpcSpanExporterProxy.cpp)
100+
endif()
88101

89102
libmexclass_client_add_proxy_library(
90103
NAME ${OPENTELEMETRY_PROXY_LIBRARY_NAME}
91104
SOURCES ${OPENTELEMETRY_PROXY_SOURCES}
92105
INCLUDE_DIRS ${OPENTELEMETRY_PROXY_INCLUDE_DIRS}
93106
)
94107

108+
# Additional compiler flags for gRPC exporter
109+
if(WITH_OTLP_GRPC)
110+
if(WIN32)
111+
set(OTLP_GRPC_MACRO /DWITH_OTLP_GRPC)
112+
else()
113+
set(OTLP_GRPC_MACRO "-D WITH_OTLP_GRPC")
114+
endif()
115+
116+
target_compile_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTLP_GRPC_MACRO})
117+
endif()
118+
95119
# link against OpenTelemetry-cpp libraries and their dependencies
96120
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_CPP_LIBRARIES})
97121

@@ -109,23 +133,26 @@ endif()
109133
target_compile_features(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE cxx_std_17)
110134

111135
if(WIN32)
112-
# run time dependent libraries
136+
# runtime dependent libraries
113137
set(DEPENDS_BINDIR $<$<CONFIG:Debug>:debug/bin>$<$<CONFIG:Release>:bin>)
114-
FILE(GLOB ABSEIL_RUNTIME ${ABSL_INCLUDE_DIRS}/../bin/*.dll)
115-
FILE(GLOB C_ARES_RUNTIME ${C-ARES_INCLUDE_DIR}/../bin/*.dll)
116138
FILE(GLOB CURL_RUNTIME ${CURL_INCLUDE_DIRS}/../bin/*.dll)
117-
FILE(GLOB OPENSSL_RUNTIME ${OPENSSL_INCLUDE_DIR}/../bin/*.dll)
118-
FILE(GLOB RE2_RUNTIME ${RE2_INCLUDE_DIR}/../bin/*.dll)
119-
FILE(GLOB PROTOBUF_RUNTIME ${PROTOBUF_INCLUDE_DIRS}/../bin/*.dll)
120139
FILE(GLOB ZLIB_RUNTIME ${ZLIB_INCLUDE_DIRS}/../bin/*.dll)
121140

122141
set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${CURL_RUNTIME}
123-
${PROTOBUF_RUNTIME}
124-
${ZLIB_RUNTIME}
125-
${ABSEIL_RUNTIME}
126-
${C_ARES_RUNTIME}
127-
${OPENSSL_RUNTIME}
128-
${RE2_RUNTIME})
142+
${PROTOBUF_RUNTIME}
143+
${ZLIB_RUNTIME})
144+
if(WITH_OTLP_GRPC)
145+
FILE(GLOB ABSEIL_RUNTIME ${ABSL_INCLUDE_DIRS}/../bin/*.dll)
146+
FILE(GLOB C_ARES_RUNTIME ${C-ARES_INCLUDE_DIR}/../bin/*.dll)
147+
FILE(GLOB OPENSSL_RUNTIME ${OPENSSL_INCLUDE_DIR}/../bin/*.dll)
148+
FILE(GLOB RE2_RUNTIME ${RE2_INCLUDE_DIR}/../bin/*.dll)
149+
FILE(GLOB PROTOBUF_RUNTIME ${PROTOBUF_INCLUDE_DIRS}/../bin/*.dll)
150+
set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES}
151+
${ABSEIL_RUNTIME}
152+
${C_ARES_RUNTIME}
153+
${OPENSSL_RUNTIME}
154+
${RE2_RUNTIME})
155+
endif()
129156
elseif(UNIX AND NOT APPLE AND NOT CYGWIN)
130157
FILE(GLOB OTEL_CPP_RUNTIME ${OPENTELEMETRY_CPP_LIBRARY_DIRS}/*.so)
131158
set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${OTEL_CPP_RUNTIME})
@@ -161,13 +188,19 @@ set(TRACE_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/api/trace/+opentelemetr
161188
set(CONTEXT_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/api/context/+opentelemetry)
162189
set(BAGGAGE_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/api/baggage/+opentelemetry)
163190
set(TRACE_SDK_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/sdk/trace/+opentelemetry)
164-
set(OTLP_EXPORTERS_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/+opentelemetry)
191+
set(OTLP_HTTP_EXPORTER_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/+opentelemetry/+exporters/+otlp/OtlpHttpSpanExporter.m)
192+
set(OTLP_GRPC_EXPORTER_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/+opentelemetry/+exporters/+otlp/OtlpGrpcSpanExporter.m)
193+
194+
set(OTLP_EXPORTERS_DIR +opentelemetry/+exporters/+otlp)
165195

166196
install(DIRECTORY ${TRACE_API_MATLAB_SOURCES} DESTINATION .)
167197
install(DIRECTORY ${CONTEXT_API_MATLAB_SOURCES} DESTINATION .)
168198
install(DIRECTORY ${BAGGAGE_API_MATLAB_SOURCES} DESTINATION .)
169199
install(DIRECTORY ${TRACE_SDK_MATLAB_SOURCES} DESTINATION .)
170-
install(DIRECTORY ${OTLP_EXPORTERS_MATLAB_SOURCES} DESTINATION .)
200+
install(FILES ${OTLP_HTTP_EXPORTER_MATLAB_SOURCES} DESTINATION ${OTLP_EXPORTERS_DIR})
201+
if(WITH_OTLP_GRPC)
202+
install(FILES ${OTLP_GRPC_EXPORTER_MATLAB_SOURCES} DESTINATION ${OTLP_EXPORTERS_DIR})
203+
endif()
171204

172205
# Install dependent runtime libraries
173206
install(FILES ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES} DESTINATION +libmexclass/+proxy)

OtelMatlabProxyFactory.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
#include "opentelemetry-matlab/sdk/trace/TraceIdRatioBasedSamplerProxy.h"
2424
#include "opentelemetry-matlab/sdk/trace/ParentBasedSamplerProxy.h"
2525
#include "opentelemetry-matlab/exporters/otlp/OtlpHttpSpanExporterProxy.h"
26-
#include "opentelemetry-matlab/exporters/otlp/OtlpGrpcSpanExporterProxy.h"
26+
#ifdef WITH_OTLP_GRPC
27+
#include "opentelemetry-matlab/exporters/otlp/OtlpGrpcSpanExporterProxy.h"
28+
#endif
2729

2830
libmexclass::proxy::MakeResult
2931
OtelMatlabProxyFactory::make_proxy(const libmexclass::proxy::ClassName& class_name,
@@ -51,6 +53,8 @@ OtelMatlabProxyFactory::make_proxy(const libmexclass::proxy::ClassName& class_na
5153
REGISTER_PROXY(libmexclass.opentelemetry.sdk.TraceIdRatioBasedSamplerProxy, libmexclass::opentelemetry::sdk::TraceIdRatioBasedSamplerProxy);
5254
REGISTER_PROXY(libmexclass.opentelemetry.sdk.ParentBasedSamplerProxy, libmexclass::opentelemetry::sdk::ParentBasedSamplerProxy);
5355
REGISTER_PROXY(libmexclass.opentelemetry.exporters.OtlpHttpSpanExporterProxy, libmexclass::opentelemetry::exporters::OtlpHttpSpanExporterProxy);
54-
REGISTER_PROXY(libmexclass.opentelemetry.exporters.OtlpGrpcSpanExporterProxy, libmexclass::opentelemetry::exporters::OtlpGrpcSpanExporterProxy);
56+
#ifdef WITH_OTLP_GRPC
57+
REGISTER_PROXY(libmexclass.opentelemetry.exporters.OtlpGrpcSpanExporterProxy, libmexclass::opentelemetry::exporters::OtlpGrpcSpanExporterProxy);
58+
#endif
5559
return nullptr;
5660
}

README.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,15 @@ Before proceeding, ensure that the below products are installed:
2222
* [MATLAB](https://www.mathworks.com/products/matlab.html)
2323

2424
1. Download [vcpkg](https://vcpkg.io). Install the following packages:
25-
- abseil
26-
- c-ares
2725
- curl
28-
- grpc
2926
- nlohmann-json
30-
- openssl
3127
- protobuf
32-
- re2
33-
- upb
3428
- zlib
35-
- gtest
36-
- benchmark
3729

3830
2. Download, build and install [OpenTelemetry C++](https://github.com/open-telemetry/opentelemetry-cpp)
3931
```
4032
cd <opentelemetry-cpp-root>
41-
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_STANDARD=20 -DWITH_OTLP_HTTP=TRUE -DWITH_OTLP_GRPC=TRUE -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=<vcpkg_root>\scripts\buildsystems\vcpkg.cmake
33+
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_STANDARD=20 -DWITH_OTLP_HTTP=ON -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=<vcpkg_root>\scripts\buildsystems\vcpkg.cmake
4234
cmake --build build --config Release --target ALL_BUILD
4335
cmake --install build --prefix <opentelemetry-cpp-installdir>
4436
```

0 commit comments

Comments
 (0)