@@ -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-          setOTLP_GRPC_MACRO /DWITH_OTLP_GRPC )
121+ 	 setOTLP_MACROS /DWITH_OTLP_HTTP )
112122    else ()
113-          setOTLP_GRPC_MACRO  " -D WITH_OTLP_GRPC" 
123+ 	 setOTLP_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