@@ -6,6 +6,12 @@ set(CLIENT_PROJECT_NAME otel-matlab)
66
77project (${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 
4046find_package (opentelemetry-cpp CONFIG REQUIRED)
41- find_package (Protobuf REQUIRED)
4247find_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)
4749find_package (nlohmann_json REQUIRED)
4850if (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 ()
5363endif ()
5464
5565set (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
89102libmexclass_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 
96120target_link_libraries (${OPENTELEMETRY_PROXY_LIBRARY_NAME}  PRIVATE  ${OPENTELEMETRY_CPP_LIBRARIES} )
97121
@@ -109,23 +133,26 @@ endif()
109133target_compile_features (${OPENTELEMETRY_PROXY_LIBRARY_NAME}  PRIVATE  cxx_std_17)
110134
111135if (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 ()
129156elseif (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
161188set (CONTEXT_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR} /api/context/+opentelemetry)
162189set (BAGGAGE_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR} /api/baggage/+opentelemetry)
163190set (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
166196install (DIRECTORY  ${TRACE_API_MATLAB_SOURCES}  DESTINATION  .)
167197install (DIRECTORY  ${CONTEXT_API_MATLAB_SOURCES}  DESTINATION  .)
168198install (DIRECTORY  ${BAGGAGE_API_MATLAB_SOURCES}  DESTINATION  .)
169199install (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 
173206install (FILES  ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES}  DESTINATION  +libmexclass/+proxy)
0 commit comments