@@ -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