Skip to content

Commit e2525ed

Browse files
authored
Merge pull request #14 from mathworks/changes_after_v_1_2_0
Changes after v 1 2 0
2 parents 23abff8 + f54327c commit e2525ed

File tree

23 files changed

+390
-178
lines changed

23 files changed

+390
-178
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,39 +15,17 @@ jobs:
1515
uses: actions/checkout@v3
1616
with:
1717
path: opentelemetry-matlab
18-
- name: Download OpenTelemetry-cpp source
19-
uses: actions/checkout@v3
20-
with:
21-
repository: open-telemetry/opentelemetry-cpp
22-
path: opentelemetry-cpp
23-
ref: v1.9.0
24-
- name: Download vcpkg
25-
uses: actions/checkout@v3
26-
with:
27-
repository: microsoft/vcpkg
28-
path: vcpkg
2918
- name: Install MATLAB
3019
uses: matlab-actions/setup-matlab@v1
31-
- name: Install vcpkg packages
32-
run: |
33-
cd vcpkg
34-
./bootstrap-vcpkg.sh
35-
./vcpkg install curl nlohmann-json protobuf zlib
3620
- name: Download OpenTelemetry Collector binary
3721
run: |
3822
mkdir otelcol && cd otelcol
3923
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.75.0/otelcol_0.75.0_linux_amd64.tar.gz
4024
tar -xzf otelcol_0.75.0_linux_amd64.tar.gz
41-
- name: Build OpenTelemetry-cpp
42-
run: |
43-
cd opentelemetry-cpp
44-
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_STANDARD=20 -DWITH_OTLP=ON -DWITH_OTLP_HTTP=ON -DWITH_OTLP_GRPC=OFF -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake
45-
cmake --build build --config Release --target all
46-
cmake --install build --prefix ${{ env.OPENTELEMETRY_CPP_INSTALL }}
4725
- name: Build OpenTelemetry-Matlab
4826
run: |
4927
cd opentelemetry-matlab
50-
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_PREFIX_PATH=${{ env.OPENTELEMETRY_CPP_INSTALL }}/lib/cmake/opentelemetry-cpp
28+
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
5129
cmake --build build --config Release --target install
5230
- name: Run tests
5331
env:

CMakeLists.txt

Lines changed: 178 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,63 @@
1-
cmake_minimum_required(VERSION 3.0.0)
1+
cmake_minimum_required(VERSION 3.7.0)
22

33
cmake_policy(SET CMP0074 NEW)
44

5-
set(CLIENT_PROJECT_NAME otel-matlab)
65

7-
project(${CLIENT_PROJECT_NAME} VERSION 0.1.0)
6+
# ###########################
7+
# vcpkg
8+
# ###########################
9+
10+
include(FetchContent)
11+
12+
# check if VCPKG_ROOT is defined, which should point to an existing installation
13+
if(DEFINED ENV{VCPKG_ROOT})
14+
# Autodetect vcpkg toolchain
15+
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
16+
string(REPLACE "\\" "/" CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
17+
endif()
18+
else()
19+
# VCPKG_ROOT not defined, get it using FetchContent
20+
21+
if(DEFINED VCPKG_PREFIX})
22+
# download location specified
23+
string(REPLACE "\\" "/" VCPKG_PREFIX "${VCPKG_PREFIX}")
24+
else()
25+
set(VCPKG_PREFIX ${CMAKE_BINARY_DIR}/vcpkg)
26+
endif()
27+
28+
# On Mac, there is a conflict between libcurl and the version in MATLAB, so
29+
# use libcurl as a shared library and load the MATLAB version at runtime
30+
if(APPLE)
31+
# run uname -m to determine whether arm64 or x86_64
32+
exec_program(uname ARGS -m OUTPUT_VARIABLE MAC_HOST_SYSTEM)
33+
set(VCPKG_OTEL_TRIPLET ${MAC_HOST_SYSTEM}-osx-otel-matlab)
34+
set(VCPKG_OVERLAY_TRIPLETS ${CMAKE_SOURCE_DIR}/cmake/vcpkg_triplets)
35+
set(VCPKG_TARGET_TRIPLET ${VCPKG_OTEL_TRIPLET})
36+
endif()
37+
38+
set(VCPKG_FETCH_CONTENT_NAME vcpkg)
39+
set(VCPKG_GIT_REPOSITORY "https://github.com/microsoft/vcpkg.git")
40+
set(VCPKG_GIT_TAG "9edb1b8")
41+
FetchContent_Declare(
42+
${VCPKG_FETCH_CONTENT_NAME}
43+
GIT_REPOSITORY ${VCPKG_GIT_REPOSITORY}
44+
GIT_TAG ${VCPKG_GIT_TAG}
45+
PREFIX ${VCPKG_PREFIX}
46+
UPDATE_DISCONNECTED 1
47+
)
48+
49+
FetchContent_MakeAvailable(
50+
${VCPKG_FETCH_CONTENT_NAME}
51+
)
52+
53+
FetchContent_GetProperties(${VCPKG_FETCH_CONTENT_NAME})
54+
string(REPLACE "\\" "/" CMAKE_TOOLCHAIN_FILE "${vcpkg_SOURCE_DIR}/scripts/buildsystems/vcpkg.cmake")
55+
56+
endif()
57+
58+
if(NOT DEFINED VCPKG_INSTALLED_DIR)
59+
set(DVCPKG_INSTALLED_DIR ${CMAKE_BINARY_DIR}/vcpkg_installed)
60+
endif()
861

962
# ######################################
1063
# Options
@@ -15,9 +68,29 @@ option(WITH_OTLP_GRPC "Whether to include the OTLP gRPC exporter" OFF)
1568
if(NOT WITH_OTLP_HTTP AND NOT WITH_OTLP_GRPC)
1669
message(FATAL_ERROR "At least one of WITH_OTLP_HTTP and WITH_OTLP_GRPC must be ON")
1770
endif()
71+
if(APPLE)
72+
option(SKIP_OTEL_CPP_PATCH "Whether to skip patching OpenTelemetry-cpp" OFF)
73+
endif()
74+
75+
# set vcpkg features depending on specified options
76+
set(VCPKG_MANIFEST_FEATURES "") # start with empty
77+
if(WITH_OTLP_HTTP)
78+
set(VCPKG_MANIFEST_FEATURES ${VCPKG_MANFIEST_FEATURES} "otlp-http")
79+
endif()
80+
if(WITH_OTLP_GRPC)
81+
set(VCPKG_MANIFEST_FEATURES ${VCPKG_MANIFEST_FEATURES} "otlp-grpc")
82+
endif()
83+
84+
# ######################################
85+
# Project Declaration
86+
# ######################################
87+
88+
set(CLIENT_PROJECT_NAME otel-matlab)
89+
90+
project(${CLIENT_PROJECT_NAME} VERSION 0.1.0)
1891

1992
# ######################################
20-
# libmexclass FetchContent Configuration
93+
# libmexclass
2194
# ######################################
2295

2396
set(LIBMEXCLASS_FETCH_CONTENT_NAME libmexclass)
@@ -28,7 +101,6 @@ set(LIBMEXCLASS_FETCH_CONTENT_GIT_TAG "77f3d72")
28101

29102
set(LIBMEXCLASS_FETCH_CONTENT_SOURCE_SUBDIR "libmexclass/cpp")
30103

31-
include(FetchContent)
32104
FetchContent_Declare(
33105
${LIBMEXCLASS_FETCH_CONTENT_NAME}
34106
GIT_REPOSITORY ${LIBMEXCLASS_FETCH_CONTENT_GIT_REPOSITORY}
@@ -39,15 +111,59 @@ FetchContent_MakeAvailable(
39111
${LIBMEXCLASS_FETCH_CONTENT_NAME}
40112
)
41113

114+
115+
# ###########################
116+
# OpenTelemetry-cpp
117+
# ###########################
118+
119+
if(DEFINED OTEL_CPP_INSTALLED_DIR)
120+
# OTEL_CPP_INSTALLED_DIR should point to an installed location of OpenTelemetry-cpp
121+
string(REPLACE "\\" "/" OTEL_CPP_PREFIX ${OTEL_CPP_INSTALLED_DIR})
122+
else()
123+
# No installed location supplied. Fetch it as an external project
124+
include(ExternalProject)
125+
set(OTEL_CPP_PROJECT_NAME opentelemetry-cpp)
126+
set(OTEL_CPP_GIT_REPOSITORY "https://github.com/open-telemetry/opentelemetry-cpp.git")
127+
set(OTEL_CPP_GIT_TAG "11d5d9e")
128+
129+
if(DEFINED OTEL_CPP_PREFIX)
130+
string(REPLACE "\\" "/" OTEL_CPP_PREFIX ${OTEL_CPP_PREFIX})
131+
else()
132+
set(OTEL_CPP_PREFIX ${CMAKE_BINARY_DIR}/otel-cpp)
133+
endif()
134+
135+
if(WITH_OTLP_GRPC)
136+
set(OTEL_CPP_CXX_STANDARD 14) # Abseil requires at least Cxx14
137+
else()
138+
set(OTEL_CPP_CXX_STANDARD 11)
139+
endif()
140+
141+
if(NOT APPLE OR SKIP_OTEL_CPP_PATCH)
142+
set(patch_command "")
143+
else()
144+
set(patch_command git apply ${CMAKE_SOURCE_DIR}/otel-cpp.patch)
145+
endif()
146+
147+
ExternalProject_Add(
148+
${OTEL_CPP_PROJECT_NAME}
149+
GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY}
150+
GIT_TAG ${OTEL_CPP_GIT_TAG}
151+
PREFIX ${OTEL_CPP_PREFIX}
152+
UPDATE_DISCONNECTED 1
153+
PATCH_COMMAND ${patch_command}
154+
CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DWITH_OTLP_HTTP=${WITH_OTLP_HTTP} -DWITH_OTLP_GRPC=${WITH_OTLP_GRPC} -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DOPENTELEMETRY_INSTALL=ON -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_CXX_STANDARD=${OTEL_CPP_CXX_STANDARD} -DVCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR}
155+
INSTALL_DIR ${OTEL_CPP_PREFIX}
156+
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${OTEL_CPP_PREFIX}
157+
)
158+
endif()
159+
42160
# ###########################
43161
# OpenTelemetry Proxy Library
44162
# ###########################
45163

46164

47165
set(OPENTELEMETRY_PROXY_LIBRARY_NAME "OtelMatlabProxy")
48166

49-
# Specify location for find_package to locate opentelemetry-cpp-config.cmake
50-
find_package(opentelemetry-cpp CONFIG REQUIRED)
51167
find_package(Protobuf REQUIRED)
52168
find_package(nlohmann_json REQUIRED)
53169
if(WIN32)
@@ -73,24 +189,28 @@ endif()
73189
set(TRACE_API_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/trace/include)
74190
set(CONTEXT_API_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/context/include)
75191
set(BAGGAGE_API_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/baggage/include)
192+
set(COMMON_API_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/common/include)
76193
set(TRACE_SDK_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sdk/trace/include)
194+
set(COMMON_SDK_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sdk/common/include)
77195
set(OTLP_EXPORTER_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/include)
78-
set(OPENTELEMETRY_PROXY_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${TRACE_API_INCLUDE_DIR} ${CONTEXT_API_INCLUDE_DIR} ${BAGGAGE_API_INCLUDE_DIR} ${TRACE_SDK_INCLUDE_DIR} ${OTLP_EXPORTER_INCLUDE_DIR} ${OPENTELEMETRY_CPP_INCLUDE_DIRS})
196+
set(OPENTELEMETRY_PROXY_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${TRACE_API_INCLUDE_DIR} ${CONTEXT_API_INCLUDE_DIR} ${BAGGAGE_API_INCLUDE_DIR} ${COMMON_API_INCLUDE_DIR} ${TRACE_SDK_INCLUDE_DIR} ${COMMON_SDK_INCLUDE_DIR} ${OTLP_EXPORTER_INCLUDE_DIR} ${OTEL_CPP_PREFIX}/include)
79197

80198
set(OPENTELEMETRY_PROXY_FACTORY_CLASS_NAME OtelMatlabProxyFactory)
81199
set(OPENTELEMETRY_PROXY_FACTORY_SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR})
82200
set(TRACE_API_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/trace/src)
83201
set(CONTEXT_API_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/context/src)
84202
set(BAGGAGE_API_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/baggage/src)
203+
set(COMMON_API_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/common/src)
85204
set(TRACE_SDK_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sdk/trace/src)
205+
set(COMMON_SDK_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sdk/common/src)
86206
set(OTLP_EXPORTER_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/src)
87207
set(OPENTELEMETRY_PROXY_SOURCES
88208
${OPENTELEMETRY_PROXY_FACTORY_SOURCES_DIR}/${OPENTELEMETRY_PROXY_FACTORY_CLASS_NAME}.cpp
89209
${TRACE_API_SOURCE_DIR}/TracerProviderProxy.cpp
90210
${TRACE_API_SOURCE_DIR}/TracerProxy.cpp
91211
${TRACE_API_SOURCE_DIR}/SpanProxy.cpp
92212
${TRACE_API_SOURCE_DIR}/SpanContextProxy.cpp
93-
${TRACE_API_SOURCE_DIR}/attribute.cpp
213+
${COMMON_API_SOURCE_DIR}/attribute.cpp
94214
${CONTEXT_API_SOURCE_DIR}/TextMapPropagatorProxy.cpp
95215
${CONTEXT_API_SOURCE_DIR}/CompositePropagatorProxy.cpp
96216
${CONTEXT_API_SOURCE_DIR}/TextMapCarrierProxy.cpp
@@ -99,7 +219,8 @@ set(OPENTELEMETRY_PROXY_SOURCES
99219
${TRACE_SDK_SOURCE_DIR}/TracerProviderProxy.cpp
100220
${TRACE_SDK_SOURCE_DIR}/SimpleSpanProcessorProxy.cpp
101221
${TRACE_SDK_SOURCE_DIR}/BatchSpanProcessorProxy.cpp
102-
${TRACE_SDK_SOURCE_DIR}/ParentBasedSamplerProxy.cpp)
222+
${TRACE_SDK_SOURCE_DIR}/ParentBasedSamplerProxy.cpp
223+
${COMMON_SDK_SOURCE_DIR}/resource.cpp)
103224
if(WITH_OTLP_HTTP)
104225
set(OPENTELEMETRY_PROXY_SOURCES ${OPENTELEMETRY_PROXY_SOURCES}
105226
${OTLP_EXPORTER_SOURCE_DIR}/OtlpHttpSpanExporterProxy.cpp)
@@ -132,16 +253,50 @@ if(WITH_OTLP_GRPC)
132253
endif()
133254
endif()
134255

135-
target_compile_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTLP_MACROS})
256+
# On Windows, suppress a compiler warning about deprecation of result_of
257+
if(WIN32)
258+
set(CUSTOM_CXX_FLAGS -D_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING)
259+
else()
260+
set(CUSTOM_CXX_FLAGS "")
261+
endif()
262+
263+
if(WIN32)
264+
set(OTEL_PROTO_LIBRARY_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
265+
else()
266+
set(OTEL_PROTO_LIBRARY_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
267+
endif()
268+
269+
target_compile_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTLP_MACROS} ${CUSTOM_CXX_FLAGS})
136270

137271
# link against OpenTelemetry-cpp libraries and their dependencies
138-
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_CPP_LIBRARIES})
272+
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_common${CMAKE_STATIC_LIBRARY_SUFFIX}
273+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_otlp_recordable${CMAKE_STATIC_LIBRARY_SUFFIX}
274+
${OTEL_CPP_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}opentelemetry_proto${OTEL_PROTO_LIBRARY_SUFFIX}
275+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_resources${CMAKE_STATIC_LIBRARY_SUFFIX}
276+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_trace${CMAKE_STATIC_LIBRARY_SUFFIX}
277+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_version${CMAKE_STATIC_LIBRARY_SUFFIX}
278+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_logs${CMAKE_STATIC_LIBRARY_SUFFIX}
279+
${Protobuf_LIBRARIES})
280+
if(WITH_OTLP_HTTP)
281+
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http${CMAKE_STATIC_LIBRARY_SUFFIX}
282+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http_client${CMAKE_STATIC_LIBRARY_SUFFIX}
283+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_http_client_curl${CMAKE_STATIC_LIBRARY_SUFFIX}
284+
${CURL_LIBRARIES})
285+
endif()
286+
if(WITH_OTLP_GRPC)
287+
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc${CMAKE_STATIC_LIBRARY_SUFFIX}
288+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc_client${CMAKE_STATIC_LIBRARY_SUFFIX}
289+
${OTEL_CPP_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}opentelemetry_proto_grpc${OTEL_PROTO_LIBRARY_SUFFIX}
290+
gRPC::grpc++
291+
absl::synchronization)
292+
endif()
139293

140294
# On Linux, when linking with certain static libraries, need to force include entire archive to avoid the linker mistakenly leaving out symbols
141295
if(UNIX AND NOT APPLE AND NOT CYGWIN)
142296
set(OPENTELEMETRY_PROXY_LINK_OPTIONS -Wl,--whole-archive
143-
"${OPENTELEMETRY_CPP_LIBRARY_DIRS}/libopentelemetry_trace.a"
144-
"${OPENTELEMETRY_CPP_LIBRARY_DIRS}/libopentelemetry_common.a"
297+
"${OTEL_CPP_PREFIX}/lib/libopentelemetry_trace.a"
298+
"${OTEL_CPP_PREFIX}/lib/libopentelemetry_common.a"
299+
"${OTEL_CPP_PREFIX}/lib/libopentelemetry_otlp_recordable.a"
145300
${ABSL_LIBRARIES}
146301
${UPB_LIBRARIES} -Wl,--no-whole-archive)
147302
target_link_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS})
@@ -178,11 +333,13 @@ if(WIN32)
178333
${OPENSSL_RUNTIME}
179334
${RE2_RUNTIME})
180335
endif()
181-
elseif(UNIX AND NOT APPLE AND NOT CYGWIN)
182-
FILE(GLOB OTEL_CPP_RUNTIME ${OPENTELEMETRY_CPP_LIBRARY_DIRS}/*.so)
183-
set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${OTEL_CPP_RUNTIME})
184-
elseif(APPLE)
185-
FILE(GLOB OTEL_CPP_RUNTIME ${OPENTELEMETRY_CPP_LIBRARY_DIRS}/*.dylib)
336+
elseif(UNIX AND NOT CYGWIN)
337+
if(WITH_OTLP_GRPC)
338+
set(OTEL_CPP_RUNTIME ${OTEL_CPP_PREFIX}/lib/libopentelemetry_proto${CMAKE_SHARED_LIBRARY_SUFFIX}
339+
${OTEL_CPP_PREFIX}/lib/libopentelemetry_proto_grpc${CMAKE_SHARED_LIBRARY_SUFFIX})
340+
else()
341+
set(OTEL_CPP_RUNTIME ${OTEL_CPP_PREFIX}/lib/libopentelemetry_proto${CMAKE_SHARED_LIBRARY_SUFFIX})
342+
endif()
186343
set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${OTEL_CPP_RUNTIME})
187344
endif()
188345

@@ -215,7 +372,7 @@ libmexclass_client_install(
215372
set(TRACE_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/api/trace/+opentelemetry)
216373
set(CONTEXT_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/api/context/+opentelemetry)
217374
set(BAGGAGE_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/api/baggage/+opentelemetry)
218-
set(UTILS_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/api/utils/+opentelemetry)
375+
set(COMMON_API_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/api/common/+opentelemetry)
219376
set(TRACE_SDK_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/sdk/trace/+opentelemetry)
220377
set(DEFAULT_EXPORTER_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/+opentelemetry/+exporters/+otlp/defaultSpanExporter.m)
221378
set(OTLP_HTTP_EXPORTER_MATLAB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/+opentelemetry/+exporters/+otlp/OtlpHttpSpanExporter.m)
@@ -226,7 +383,7 @@ set(OTLP_EXPORTERS_DIR +opentelemetry/+exporters/+otlp)
226383
install(DIRECTORY ${TRACE_API_MATLAB_SOURCES} DESTINATION .)
227384
install(DIRECTORY ${CONTEXT_API_MATLAB_SOURCES} DESTINATION .)
228385
install(DIRECTORY ${BAGGAGE_API_MATLAB_SOURCES} DESTINATION .)
229-
install(DIRECTORY ${UTILS_API_MATLAB_SOURCES} DESTINATION .)
386+
install(DIRECTORY ${COMMON_API_MATLAB_SOURCES} DESTINATION .)
230387
install(DIRECTORY ${TRACE_SDK_MATLAB_SOURCES} DESTINATION .)
231388
install(FILES ${DEFAULT_EXPORTER_MATLAB_SOURCES} DESTINATION ${OTLP_EXPORTERS_DIR})
232389
if(WITH_OTLP_HTTP)

README.md

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,29 +21,14 @@ Installation instructions
2121
Before proceeding, ensure that the below products are installed:
2222
* [MATLAB](https://www.mathworks.com/products/matlab.html)
2323

24-
1. Download [vcpkg](https://vcpkg.io). Install the following packages:
25-
- curl
26-
- nlohmann-json
27-
- protobuf
28-
- zlib
29-
30-
2. Download, build and install [OpenTelemetry C++](https://github.com/open-telemetry/opentelemetry-cpp)
31-
```
32-
cd <opentelemetry-cpp-root>
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
34-
cmake --build build --config Release --target ALL_BUILD
35-
cmake --install build --prefix <opentelemetry-cpp-installdir>
36-
```
37-
3. Download OpenTelemetry MATLAB
38-
39-
4. Build and install OpenTelemetry MATLAB
24+
1. Download, Build and install OpenTelemetry MATLAB
4025
```
4126
cd <opentelemetry-matlab-root>
42-
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=<opentelemetry-matlab-installdir> -DCMAKE_TOOLCHAIN_FILE=<vcpkg_root>\scripts\buildsystems\vcpkg.cmake -DCMAKE_PREFIX_PATH=<path to opentelemetry-cpp-config.cmake>
27+
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=<opentelemetry-matlab-installdir>
4328
cmake --build build --config Release --target install
4429
4530
```
46-
5. Download [OpenTelemetry Collector](https://github.com/open-telemetry/opentelemetry-collector-releases/releases). You can just obtain a pre-built binary for your platform.
31+
2. Download [OpenTelemetry Collector](https://github.com/open-telemetry/opentelemetry-collector-releases/releases). You can just obtain a pre-built binary for your platform.
4732

4833
## Getting Started
4934
1. Start OpenTelemetry Collector
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright 2023 The MathWorks, Inc.
2+
3+
#pragma once
4+
5+
#include "opentelemetry/common/attribute_value.h"
6+
#include "opentelemetry/nostd/string_view.h"
7+
8+
#include <list>
9+
10+
namespace common = opentelemetry::common;
11+
namespace nostd = opentelemetry::nostd;
12+
13+
namespace libmexclass::opentelemetry {
14+
15+
struct ProcessedAttributes {
16+
std::list<std::pair<std::string, common::AttributeValue> > Attributes;
17+
std::list<std::vector<double> > DimensionsBuffer; // list of vector, to hold the dimensions of array attributes
18+
std::list<std::string> StringBuffer; // list of strings as a buffer to hold the string attributes
19+
std::list<std::vector<nostd::string_view> > StringViewBuffer; // list of vector of strings views, used for string array attributes only
20+
};
21+
} // namespace libmexclass::opentelemetry

0 commit comments

Comments
 (0)