@@ -10,7 +10,11 @@ project(${CLIENT_PROJECT_NAME} VERSION 0.1.0)
1010# Options
1111# ######################################
1212
13+ option (WITH_OTLP_HTTP "Whether to include the OTLP HTTP exporter" ON )
1314option (WITH_OTLP_GRPC "Whether to include the OTLP gRPC exporter" OFF )
15+ if (NOT WITH_OTLP_HTTP AND NOT WITH_OTLP_GRPC)
16+ message (FATAL_ERROR "At least one of WITH_OTLP_HTTP and WITH_OTLP_GRPC must be ON" )
17+ endif ()
1418
1519# ######################################
1620# libmexclass FetchContent Configuration
@@ -44,12 +48,16 @@ set(OPENTELEMETRY_PROXY_LIBRARY_NAME "OtelMatlabProxy")
4448
4549# Specify location for find_package to locate opentelemetry-cpp-config.cmake
4650find_package (opentelemetry-cpp CONFIG REQUIRED)
47- find_package (CURL REQUIRED)
4851find_package (Protobuf REQUIRED)
4952find_package (nlohmann_json REQUIRED)
5053if (WIN32 )
5154 find_package (zlib REQUIRED)
5255endif ()
56+
57+ if (WITH_OTLP_HTTP)
58+ find_package (CURL REQUIRED)
59+ endif ()
60+
5361if (WITH_OTLP_GRPC)
5462 find_package (gRPC REQUIRED)
5563 find_package (absl REQUIRED)
@@ -91,9 +99,11 @@ set(OPENTELEMETRY_PROXY_SOURCES
9199 ${TRACE_SDK_SOURCE_DIR} /TracerProviderProxy.cpp
92100 ${TRACE_SDK_SOURCE_DIR} /SimpleSpanProcessorProxy.cpp
93101 ${TRACE_SDK_SOURCE_DIR} /BatchSpanProcessorProxy.cpp
94- ${TRACE_SDK_SOURCE_DIR} /ParentBasedSamplerProxy.cpp
95- ${OTLP_EXPORTER_SOURCE_DIR} /OtlpHttpSpanExporterProxy.cpp
96- )
102+ ${TRACE_SDK_SOURCE_DIR} /ParentBasedSamplerProxy.cpp)
103+ if (WITH_OTLP_HTTP)
104+ set (OPENTELEMETRY_PROXY_SOURCES ${OPENTELEMETRY_PROXY_SOURCES}
105+ ${OTLP_EXPORTER_SOURCE_DIR} /OtlpHttpSpanExporterProxy.cpp)
106+ endif ()
97107if (WITH_OTLP_GRPC)
98108 set (OPENTELEMETRY_PROXY_SOURCES ${OPENTELEMETRY_PROXY_SOURCES}
99109 ${OTLP_EXPORTER_SOURCE_DIR} /OtlpGrpcSpanExporterProxy.cpp)
@@ -105,16 +115,24 @@ libmexclass_client_add_proxy_library(
105115 INCLUDE_DIRS ${OPENTELEMETRY_PROXY_INCLUDE_DIRS}
106116)
107117
108- # Additional compiler flags for gRPC exporter
109- if (WITH_OTLP_GRPC )
118+ # Additional compiler flags for HTTP/ gRPC exporters
119+ if (WITH_OTLP_HTTP )
110120 if (WIN32 )
111- set (OTLP_GRPC_MACRO /DWITH_OTLP_GRPC )
121+ set (OTLP_MACROS /DWITH_OTLP_HTTP )
112122 else ()
113- set (OTLP_GRPC_MACRO " -D WITH_OTLP_GRPC" )
123+ set (OTLP_MACROS -D WITH_OTLP_HTTP )
114124 endif ()
125+ endif ()
115126
116- target_compile_options (${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTLP_GRPC_MACRO} )
127+ if (WITH_OTLP_GRPC)
128+ if (WIN32 )
129+ set (OTLP_MACROS ${OTLP_MACROS} /DWITH_OTLP_GRPC)
130+ else ()
131+ set (OTLP_MACROS ${OTLP_MACROS} -D WITH_OTLP_GRPC)
132+ endif ()
117133endif ()
134+
135+ target_compile_options (${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTLP_MACROS} )
118136
119137# link against OpenTelemetry-cpp libraries and their dependencies
120138target_link_libraries (${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_CPP_LIBRARIES} )
@@ -135,18 +153,23 @@ target_compile_features(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE cxx_std_17)
135153if (WIN32 )
136154 # runtime dependent libraries
137155 set (DEPENDS_BINDIR $<$<CONFIG:Debug>:debug/bin>$<$<CONFIG:Release>:bin>)
138- FILE (GLOB CURL_RUNTIME ${CURL_INCLUDE_DIRS } /../bin/*.dll)
156+ FILE (GLOB PROTOBUF_RUNTIME ${PROTOBUF_INCLUDE_DIRS } /../bin/*.dll)
139157 FILE (GLOB ZLIB_RUNTIME ${ZLIB_INCLUDE_DIRS} /../bin/*.dll)
140158
141- set (OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${CURL_RUNTIME}
142- ${PROTOBUF_RUNTIME}
159+ set (OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${PROTOBUF_RUNTIME}
143160 ${ZLIB_RUNTIME} )
161+
162+ if (WITH_OTLP_HTTP)
163+ FILE (GLOB CURL_RUNTIME ${CURL_INCLUDE_DIRS} /../bin/*.dll)
164+ set (OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES}
165+ ${CURL_RUNTIME} )
166+ endif ()
167+
144168 if (WITH_OTLP_GRPC)
145169 FILE (GLOB ABSEIL_RUNTIME ${ABSL_INCLUDE_DIRS} /../bin/*.dll)
146170 FILE (GLOB C_ARES_RUNTIME ${C-ARES_INCLUDE_DIR}/../bin/*.dll)
147171 FILE (GLOB OPENSSL_RUNTIME ${OPENSSL_INCLUDE_DIR} /../bin/*.dll)
148172 FILE (GLOB RE2_RUNTIME ${RE2_INCLUDE_DIR} /../bin/*.dll)
149- FILE (GLOB PROTOBUF_RUNTIME ${PROTOBUF_INCLUDE_DIRS} /../bin/*.dll)
150173 set (OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES}
151174 ${ABSEIL_RUNTIME}
152175 ${C_ARES_RUNTIME}
@@ -188,6 +211,7 @@ set(TRACE_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/api/trace/+opentelemetr
188211set (CONTEXT_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR} /api/context/+opentelemetry)
189212set (BAGGAGE_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR} /api/baggage/+opentelemetry)
190213set (TRACE_SDK_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR} /sdk/trace/+opentelemetry)
214+ set (DEFAULT_EXPORTER_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR} /exporters/otlp/+opentelemetry/+exporters/+otlp/defaultSpanExporter.m)
191215set (OTLP_HTTP_EXPORTER_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR} /exporters/otlp/+opentelemetry/+exporters/+otlp/OtlpHttpSpanExporter.m)
192216set (OTLP_GRPC_EXPORTER_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR} /exporters/otlp/+opentelemetry/+exporters/+otlp/OtlpGrpcSpanExporter.m)
193217
@@ -197,7 +221,10 @@ install(DIRECTORY ${TRACE_API_MATLAB_SOURCES} DESTINATION .)
197221install (DIRECTORY ${CONTEXT_API_MATLAB_SOURCES} DESTINATION .)
198222install (DIRECTORY ${BAGGAGE_API_MATLAB_SOURCES} DESTINATION .)
199223install (DIRECTORY ${TRACE_SDK_MATLAB_SOURCES} DESTINATION .)
200- install (FILES ${OTLP_HTTP_EXPORTER_MATLAB_SOURCES} DESTINATION ${OTLP_EXPORTERS_DIR} )
224+ install (FILES ${DEFAULT_EXPORTER_MATLAB_SOURCES} DESTINATION ${OTLP_EXPORTERS_DIR} )
225+ if (WITH_OTLP_HTTP)
226+ install (FILES ${OTLP_HTTP_EXPORTER_MATLAB_SOURCES} DESTINATION ${OTLP_EXPORTERS_DIR} )
227+ endif ()
201228if (WITH_OTLP_GRPC)
202229 install (FILES ${OTLP_GRPC_EXPORTER_MATLAB_SOURCES} DESTINATION ${OTLP_EXPORTERS_DIR} )
203230endif ()
0 commit comments