@@ -2,14 +2,52 @@ cmake_minimum_required(VERSION 3.7.0)
22
33cmake_policy (SET CMP0074 NEW)
44
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 ()
95
10- set (CLIENT_PROJECT_NAME otel-matlab)
6+ # ###########################
7+ # vcpkg
8+ # ###########################
119
12- project (${CLIENT_PROJECT_NAME} VERSION 0.1.0)
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+ set (VCPKG_FETCH_CONTENT_NAME vcpkg)
29+ set (VCPKG_GIT_REPOSITORY "https://github.com/microsoft/vcpkg.git" )
30+ set (VCPKG_GIT_TAG "9edb1b8" )
31+ FetchContent_Declare(
32+ ${VCPKG_FETCH_CONTENT_NAME}
33+ GIT_REPOSITORY ${VCPKG_GIT_REPOSITORY}
34+ GIT_TAG ${VCPKG_GIT_TAG}
35+ PREFIX ${VCPKG_PREFIX}
36+ UPDATE_DISCONNECTED 1
37+ )
38+
39+ FetchContent_MakeAvailable(
40+ ${VCPKG_FETCH_CONTENT_NAME}
41+ )
42+
43+ FetchContent_GetProperties(${VCPKG_FETCH_CONTENT_NAME} )
44+ string (REPLACE "\\ " "/" CMAKE_TOOLCHAIN_FILE "${vcpkg_SOURCE_DIR} /scripts/buildsystems/vcpkg.cmake" )
45+
46+ endif ()
47+
48+ if (NOT DEFINED VCPKG_INSTALLED_DIR)
49+ set (DVCPKG_INSTALLED_DIR ${CMAKE_BINARY_DIR} /vcpkg_installed)
50+ endif ()
1351
1452# ######################################
1553# Options
@@ -24,8 +62,25 @@ if(APPLE)
2462 option (SKIP_OTEL_CPP_PATCH "Whether to skip patching OpenTelemetry-cpp" OFF )
2563endif ()
2664
65+ # set vcpkg features depending on specified options
66+ set (VCPKG_MANIFEST_FEATURES "" ) # start with empty
67+ if (WITH_OTLP_HTTP)
68+ set (VCPKG_MANIFEST_FEATURES ${VCPKG_MANFIEST_FEATURES} "otlp-http" )
69+ endif ()
70+ if (WITH_OTLP_GRPC)
71+ set (VCPKG_MANIFEST_FEATURES ${VCPKG_MANIFEST_FEATURES} "otlp-grpc" )
72+ endif ()
73+
2774# ######################################
28- # libmexclass FetchContent Configuration
75+ # Project Declaration
76+ # ######################################
77+
78+ set (CLIENT_PROJECT_NAME otel-matlab)
79+
80+ project (${CLIENT_PROJECT_NAME} VERSION 0.1.0)
81+
82+ # ######################################
83+ # libmexclass
2984# ######################################
3085
3186set (LIBMEXCLASS_FETCH_CONTENT_NAME libmexclass)
@@ -36,7 +91,6 @@ set(LIBMEXCLASS_FETCH_CONTENT_GIT_TAG "77f3d72")
3691
3792set (LIBMEXCLASS_FETCH_CONTENT_SOURCE_SUBDIR "libmexclass/cpp" )
3893
39- include (FetchContent)
4094FetchContent_Declare(
4195 ${LIBMEXCLASS_FETCH_CONTENT_NAME}
4296 GIT_REPOSITORY ${LIBMEXCLASS_FETCH_CONTENT_GIT_REPOSITORY}
@@ -47,44 +101,52 @@ FetchContent_MakeAvailable(
47101 ${LIBMEXCLASS_FETCH_CONTENT_NAME}
48102)
49103
104+
50105# ###########################
51106# OpenTelemetry-cpp
52107# ###########################
53- include (ExternalProject)
54- set (OTEL_CPP_PROJECT_NAME opentelemetry-cpp)
55- set (OTEL_CPP_GIT_REPOSITORY "https://github.com/open-telemetry/opentelemetry-cpp.git" )
56- set (OTEL_CPP_GIT_TAG "11d5d9e" )
57108
58- if (DEFINED OTEL_CPP_PREFIX)
59- string (REPLACE "\\ " "/" OTEL_CPP_PREFIX ${OTEL_CPP_PREFIX} )
109+ if (DEFINED OTEL_CPP_INSTALLED_DIR)
110+ # OTEL_CPP_INSTALLED_DIR should point to an installed location of OpenTelemetry-cpp
111+ string (REPLACE "\\ " "/" OTEL_CPP_PREFIX ${OTEL_CPP_INSTALLED_DIR} )
60112else ()
61- set (OTEL_CPP_PREFIX ${CMAKE_BINARY_DIR} /otel-cpp)
113+ # No installed location supplied. Fetch it as an external project
114+ include (ExternalProject)
115+ set (OTEL_CPP_PROJECT_NAME opentelemetry-cpp)
116+ set (OTEL_CPP_GIT_REPOSITORY "https://github.com/open-telemetry/opentelemetry-cpp.git" )
117+ set (OTEL_CPP_GIT_TAG "11d5d9e" )
118+
119+ if (DEFINED OTEL_CPP_PREFIX)
120+ string (REPLACE "\\ " "/" OTEL_CPP_PREFIX ${OTEL_CPP_PREFIX} )
121+ else ()
122+ set (OTEL_CPP_PREFIX ${CMAKE_BINARY_DIR} /otel-cpp)
123+ endif ()
124+
125+ if (WITH_OTLP_GRPC)
126+ set (OTEL_CPP_CXX_STANDARD 14) # Abseil requires at least Cxx14
127+ else ()
128+ set (OTEL_CPP_CXX_STANDARD 11)
129+ endif ()
130+
131+ if (NOT APPLE OR SKIP_OTEL_CPP_PATCH)
132+ set (patch_command "" )
133+ else ()
134+ set (patch_command git apply ${CMAKE_SOURCE_DIR} /otel-cpp.patch)
135+ endif ()
136+
137+ ExternalProject_Add(
138+ ${OTEL_CPP_PROJECT_NAME}
139+ GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY}
140+ GIT_TAG ${OTEL_CPP_GIT_TAG}
141+ PREFIX ${OTEL_CPP_PREFIX}
142+ UPDATE_DISCONNECTED 1
143+ PATCH_COMMAND ${patch_command}
144+ 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}
145+ INSTALL_DIR ${OTEL_CPP_PREFIX}
146+ INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${OTEL_CPP_PREFIX}
147+ )
62148endif ()
63149
64- if (WITH_OTLP_GRPC)
65- set (OTEL_CPP_CXX_STANDARD 14) # Abseil requires at least Cxx14
66- else ()
67- set (OTEL_CPP_CXX_STANDARD 11)
68- endif ()
69-
70- if (NOT APPLE OR SKIP_OTEL_CPP_PATCH)
71- set (patch_command "" )
72- else ()
73- set (patch_command git apply ${CMAKE_SOURCE_DIR} /otel-cpp.patch)
74- endif ()
75-
76- ExternalProject_Add(
77- ${OTEL_CPP_PROJECT_NAME}
78- GIT_REPOSITORY ${OTEL_CPP_GIT_REPOSITORY}
79- GIT_TAG ${OTEL_CPP_GIT_TAG}
80- PREFIX ${OTEL_CPP_PREFIX}
81- UPDATE_DISCONNECTED 1
82- PATCH_COMMAND ${patch_command}
83- 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}
84- INSTALL_DIR ${OTEL_CPP_PREFIX}
85- INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${OTEL_CPP_PREFIX}
86- )
87-
88150# ###########################
89151# OpenTelemetry Proxy Library
90152# ###########################
0 commit comments