|
1 | | -cmake_minimum_required(VERSION 3.0.0) |
| 1 | +cmake_minimum_required(VERSION 3.7.0) |
2 | 2 |
|
3 | 3 | cmake_policy(SET CMP0074 NEW) |
4 | 4 |
|
| 5 | +# Autodetect vcpkg toolchain from VCPKG_ROOT environment variable |
| 6 | +if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE) |
| 7 | + string(REPLACE "\\" "/" CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") |
| 8 | +endif() |
| 9 | + |
5 | 10 | set(CLIENT_PROJECT_NAME otel-matlab) |
6 | 11 |
|
7 | 12 | project(${CLIENT_PROJECT_NAME} VERSION 0.1.0) |
@@ -39,15 +44,36 @@ FetchContent_MakeAvailable( |
39 | 44 | ${LIBMEXCLASS_FETCH_CONTENT_NAME} |
40 | 45 | ) |
41 | 46 |
|
| 47 | +# ########################### |
| 48 | +# OpenTelemetry-cpp |
| 49 | +# ########################### |
| 50 | +include(ExternalProject) |
| 51 | +set(OTEL_CPP_PROJECT_NAME opentelemetry-cpp) |
| 52 | +set(OTEL_CPP_GIT_REPOSITORY "https://github.com/open-telemetry/opentelemetry-cpp.git") |
| 53 | +set(OTEL_CPP_GIT_TAG "11d5d9e") |
| 54 | + |
| 55 | +if(DEFINED OTEL_CPP_PREFIX) |
| 56 | + string(REPLACE "\\" "/" OTEL_CPP_PREFIX ${OTEL_CPP_PREFIX}) |
| 57 | +else() |
| 58 | + set(OTEL_CPP_PREFIX ${CMAKE_BINARY_DIR}/otel-cpp) |
| 59 | +endif() |
| 60 | +ExternalProject_Add( |
| 61 | + ${OTEL_CPP_PROJECT_NAME} |
| 62 | + GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY} |
| 63 | + GIT_TAG ${OTEL_CPP_GIT_TAG} |
| 64 | + PREFIX ${OTEL_CPP_PREFIX} |
| 65 | + 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} |
| 66 | + INSTALL_DIR ${OTEL_CPP_PREFIX} |
| 67 | + INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${OTEL_CPP_PREFIX} |
| 68 | +) |
| 69 | + |
42 | 70 | # ########################### |
43 | 71 | # OpenTelemetry Proxy Library |
44 | 72 | # ########################### |
45 | 73 |
|
46 | 74 |
|
47 | 75 | set(OPENTELEMETRY_PROXY_LIBRARY_NAME "OtelMatlabProxy") |
48 | 76 |
|
49 | | -# Specify location for find_package to locate opentelemetry-cpp-config.cmake |
50 | | -find_package(opentelemetry-cpp CONFIG REQUIRED) |
51 | 77 | find_package(Protobuf REQUIRED) |
52 | 78 | find_package(nlohmann_json REQUIRED) |
53 | 79 | if(WIN32) |
@@ -77,7 +103,7 @@ set(COMMON_API_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/api/common/include) |
77 | 103 | set(TRACE_SDK_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sdk/trace/include) |
78 | 104 | set(COMMON_SDK_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sdk/common/include) |
79 | 105 | set(OTLP_EXPORTER_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/include) |
80 | | -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} ${OPENTELEMETRY_CPP_INCLUDE_DIRS}) |
| 106 | +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) |
81 | 107 |
|
82 | 108 | set(OPENTELEMETRY_PROXY_FACTORY_CLASS_NAME OtelMatlabProxyFactory) |
83 | 109 | set(OPENTELEMETRY_PROXY_FACTORY_SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}) |
@@ -140,13 +166,33 @@ endif() |
140 | 166 | target_compile_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTLP_MACROS}) |
141 | 167 |
|
142 | 168 | # link against OpenTelemetry-cpp libraries and their dependencies |
143 | | -target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_CPP_LIBRARIES}) |
| 169 | +target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/opentelemetry_common${CMAKE_LINK_LIBRARY_SUFFIX} |
| 170 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_otlp_recordable${CMAKE_LINK_LIBRARY_SUFFIX} |
| 171 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_proto${CMAKE_LINK_LIBRARY_SUFFIX} |
| 172 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_resources${CMAKE_LINK_LIBRARY_SUFFIX} |
| 173 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_trace${CMAKE_LINK_LIBRARY_SUFFIX} |
| 174 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_version${CMAKE_LINK_LIBRARY_SUFFIX} |
| 175 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_logs${CMAKE_LINK_LIBRARY_SUFFIX} |
| 176 | + ${Protobuf_LIBRARIES}) |
| 177 | +if(WITH_OTLP_HTTP) |
| 178 | + target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/opentelemetry_exporter_otlp_http${CMAKE_LINK_LIBRARY_SUFFIX} |
| 179 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_exporter_otlp_http_client${CMAKE_LINK_LIBRARY_SUFFIX} |
| 180 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_http_client_curl${CMAKE_LINK_LIBRARY_SUFFIX} |
| 181 | + ${CURL_LIBRARIES}) |
| 182 | +endif() |
| 183 | +if(WITH_OTLP_GRPC) |
| 184 | + target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_PREFIX}/lib/opentelemetry_exporter_otlp_grpc${CMAKE_LINK_LIBRARY_SUFFIX} |
| 185 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_exporter_otlp_grpc_client${CMAKE_LINK_LIBRARY_SUFFIX} |
| 186 | + ${OTEL_CPP_PREFIX}/lib/opentelemetry_proto_grpc${CMAKE_LINK_LIBRARY_SUFFIX} |
| 187 | + gRPC::grpc++ |
| 188 | + absl::synchronization) |
| 189 | +endif() |
144 | 190 |
|
145 | 191 | # On Linux, when linking with certain static libraries, need to force include entire archive to avoid the linker mistakenly leaving out symbols |
146 | 192 | if(UNIX AND NOT APPLE AND NOT CYGWIN) |
147 | 193 | set(OPENTELEMETRY_PROXY_LINK_OPTIONS -Wl,--whole-archive |
148 | | - "${OPENTELEMETRY_CPP_LIBRARY_DIRS}/libopentelemetry_trace.a" |
149 | | - "${OPENTELEMETRY_CPP_LIBRARY_DIRS}/libopentelemetry_common.a" |
| 194 | + "${OTEL_CPP_PREFIX}/lib/libopentelemetry_trace.a" |
| 195 | + "${OTEL_CPP_PREFIX}/lib/libopentelemetry_common.a" |
150 | 196 | ${ABSL_LIBRARIES} |
151 | 197 | ${UPB_LIBRARIES} -Wl,--no-whole-archive) |
152 | 198 | target_link_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS}) |
@@ -184,10 +230,10 @@ if(WIN32) |
184 | 230 | ${RE2_RUNTIME}) |
185 | 231 | endif() |
186 | 232 | elseif(UNIX AND NOT APPLE AND NOT CYGWIN) |
187 | | - FILE(GLOB OTEL_CPP_RUNTIME ${OPENTELEMETRY_CPP_LIBRARY_DIRS}/*.so) |
| 233 | + FILE(GLOB OTEL_CPP_RUNTIME ${OTEL_CPP_PREFIX}/lib/*.so) |
188 | 234 | set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${OTEL_CPP_RUNTIME}) |
189 | 235 | elseif(APPLE) |
190 | | - FILE(GLOB OTEL_CPP_RUNTIME ${OPENTELEMETRY_CPP_LIBRARY_DIRS}/*.dylib) |
| 236 | + FILE(GLOB OTEL_CPP_RUNTIME ${OTEL_CPP_PREFIX}/lib/*.dylib) |
191 | 237 | set(OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES ${OTEL_CPP_RUNTIME}) |
192 | 238 | endif() |
193 | 239 |
|
|
0 commit comments