Skip to content

Commit 3808eaa

Browse files
authored
Merge pull request #99 from mathworks/ninja
Ninja build on Linux and Mac
2 parents 2df50ce + 13e3ff2 commit 3808eaa

File tree

5 files changed

+71
-42
lines changed

5 files changed

+71
-42
lines changed

.github/workflows/build_and_test.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,16 @@ jobs:
1515
uses: actions/checkout@v3
1616
with:
1717
path: opentelemetry-matlab
18+
- name: Install ninja-build
19+
run: sudo apt-get install ninja-build
1820
- name: Install MATLAB
1921
uses: matlab-actions/setup-matlab@v2
2022
with:
2123
products: MATLAB_Compiler
2224
- name: Build OpenTelemetry-Matlab
25+
working-directory: opentelemetry-matlab
2326
run: |
24-
cd opentelemetry-matlab
25-
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
27+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
2628
cmake --build build --config Release --target install
2729
- name: Run tests
2830
env:
@@ -46,8 +48,8 @@ jobs:
4648
with:
4749
products: MATLAB_Compiler
4850
- name: Build OpenTelemetry-Matlab
51+
working-directory: opentelemetry-matlab
4952
run: |
50-
cd opentelemetry-matlab
5153
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
5254
cmake --build build --config Release --target install
5355
- name: Run tests
@@ -67,14 +69,16 @@ jobs:
6769
uses: actions/checkout@v3
6870
with:
6971
path: opentelemetry-matlab
72+
- name: Install ninja-build
73+
run: brew install ninja
7074
- name: Install MATLAB
7175
uses: matlab-actions/setup-matlab@v2
7276
with:
7377
products: MATLAB_Compiler
7478
- name: Build OpenTelemetry-Matlab
79+
working-directory: opentelemetry-matlab
7580
run: |
76-
cd opentelemetry-matlab
77-
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
81+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
7882
cmake --build build --config Release --target install
7983
- name: Run tests
8084
env:

.github/workflows/publish_mltbx.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,16 @@ jobs:
1515
uses: actions/checkout@v3
1616
with:
1717
path: opentelemetry-matlab
18+
- name: Install ninja-build
19+
run: sudo apt-get install ninja-build
1820
- name: Install MATLAB
1921
uses: matlab-actions/setup-matlab@v2
2022
with:
2123
products: MATLAB_Compiler
2224
- name: Build OpenTelemetry-Matlab
25+
working-directory: opentelemetry-matlab
2326
run: |
24-
cd opentelemetry-matlab
25-
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
27+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
2628
cmake --build build --config Release --target install
2729
- name: Compress into single artifact
2830
working-directory: ${{ github.workspace }}
@@ -46,8 +48,8 @@ jobs:
4648
with:
4749
products: MATLAB_Compiler
4850
- name: Build OpenTelemetry-Matlab
51+
working-directory: opentelemetry-matlab
4952
run: |
50-
cd opentelemetry-matlab
5153
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
5254
cmake --build build --config Release --target install
5355
- name: Compress into single artifact
@@ -67,14 +69,16 @@ jobs:
6769
uses: actions/checkout@v3
6870
with:
6971
path: opentelemetry-matlab
72+
- name: Install ninja-build
73+
run: brew install ninja
7074
- name: Install MATLAB
7175
uses: matlab-actions/setup-matlab@v2
7276
with:
7377
products: MATLAB_Compiler
7478
- name: Build OpenTelemetry-Matlab
79+
working-directory: opentelemetry-matlab
7580
run: |
76-
cd opentelemetry-matlab
77-
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
81+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
7882
cmake --build build --config Release --target install
7983
- name: Compress into single artifact
8084
working-directory: ${{ github.workspace }}

CMakeLists.txt

Lines changed: 49 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -122,22 +122,55 @@ FetchContent_MakeAvailable(
122122
# OpenTelemetry-cpp
123123
# ###########################
124124

125+
# Determine OTEL_CPP_PREFIX
125126
if(DEFINED OTEL_CPP_INSTALLED_DIR)
126-
# OTEL_CPP_INSTALLED_DIR should point to an installed location of OpenTelemetry-cpp
127+
# Set OTEL_CPP_INSTALLED_DIR to use a pre-installed OpenTelemetry-cpp
128+
# It should point to the installed location
127129
string(REPLACE "\\" "/" OTEL_CPP_PREFIX ${OTEL_CPP_INSTALLED_DIR})
130+
elseif(DEFINED OTEL_CPP_PREFIX)
131+
# Set OTEL_CPP_PREFIX to specify an install location of the automatically
132+
# downloaded and built OpenTelemetry-cpp, instead of using the default
133+
# location with the build directory. This can preserve the OpenTelemetry-cpp
134+
# install even if the build directory is removed.
135+
string(REPLACE "\\" "/" OTEL_CPP_PREFIX ${OTEL_CPP_PREFIX})
128136
else()
137+
set(OTEL_CPP_PREFIX ${CMAKE_BINARY_DIR}/otel-cpp)
138+
endif()
139+
140+
if(WIN32)
141+
set(OTEL_PROTO_LIBRARY_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
142+
else()
143+
set(OTEL_PROTO_LIBRARY_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
144+
endif()
145+
146+
set(OTEL_CPP_LIBRARIES ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_common${CMAKE_STATIC_LIBRARY_SUFFIX}
147+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_otlp_recordable${CMAKE_STATIC_LIBRARY_SUFFIX}
148+
${OTEL_CPP_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}opentelemetry_proto${OTEL_PROTO_LIBRARY_SUFFIX}
149+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_resources${CMAKE_STATIC_LIBRARY_SUFFIX}
150+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_trace${CMAKE_STATIC_LIBRARY_SUFFIX}
151+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_version${CMAKE_STATIC_LIBRARY_SUFFIX}
152+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_logs${CMAKE_STATIC_LIBRARY_SUFFIX}
153+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_metrics${CMAKE_STATIC_LIBRARY_SUFFIX})
154+
if(WITH_OTLP_HTTP)
155+
set(OTEL_CPP_LIBRARIES ${OTEL_CPP_LIBRARIES} ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http${CMAKE_STATIC_LIBRARY_SUFFIX}
156+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http_client${CMAKE_STATIC_LIBRARY_SUFFIX}
157+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http_metric${CMAKE_STATIC_LIBRARY_SUFFIX}
158+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_http_client_curl${CMAKE_STATIC_LIBRARY_SUFFIX})
159+
endif()
160+
if(WITH_OTLP_GRPC)
161+
set(OTEL_CPP_LIBRARIES ${OTEL_CPP_LIBRARIES} ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc${CMAKE_STATIC_LIBRARY_SUFFIX}
162+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc_client${CMAKE_STATIC_LIBRARY_SUFFIX}
163+
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc_metrics${CMAKE_STATIC_LIBRARY_SUFFIX}
164+
${OTEL_CPP_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}opentelemetry_proto_grpc${OTEL_PROTO_LIBRARY_SUFFIX})
165+
endif()
166+
167+
if(NOT DEFINED OTEL_CPP_INSTALLED_DIR)
129168
# No installed location supplied. Fetch it as an external project
130169
include(ExternalProject)
131170
set(OTEL_CPP_PROJECT_NAME opentelemetry-cpp)
132171
set(OTEL_CPP_GIT_REPOSITORY "https://github.com/open-telemetry/opentelemetry-cpp.git")
133172
set(OTEL_CPP_GIT_TAG "a799f4a")
134173

135-
if(DEFINED OTEL_CPP_PREFIX)
136-
string(REPLACE "\\" "/" OTEL_CPP_PREFIX ${OTEL_CPP_PREFIX})
137-
else()
138-
set(OTEL_CPP_PREFIX ${CMAKE_BINARY_DIR}/otel-cpp)
139-
endif()
140-
141174
set(OTEL_CPP_CXX_STANDARD 14)
142175

143176
if(NOT APPLE OR SKIP_OTEL_CPP_PATCH)
@@ -154,6 +187,7 @@ else()
154187
UPDATE_DISCONNECTED 1
155188
PATCH_COMMAND ${patch_command}
156189
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}
190+
BUILD_BYPRODUCTS ${OTEL_CPP_LIBRARIES}
157191
INSTALL_DIR ${OTEL_CPP_PREFIX}
158192
INSTALL_COMMAND ${CMAKE_COMMAND} --install . --prefix ${OTEL_CPP_PREFIX}
159193
)
@@ -259,6 +293,10 @@ libmexclass_client_add_proxy_library(
259293
INCLUDE_DIRS ${OPENTELEMETRY_PROXY_INCLUDE_DIRS}
260294
)
261295

296+
if(NOT DEFINED OTEL_CPP_INSTALLED_DIR)
297+
add_dependencies(${OPENTELEMETRY_PROXY_LIBRARY_NAME} ${OTEL_CPP_PROJECT_NAME})
298+
endif()
299+
262300
# Additional compiler flags for HTTP/gRPC exporters
263301
if(WITH_OTLP_HTTP)
264302
if(WIN32)
@@ -281,42 +319,23 @@ if(WIN32)
281319
set(CUSTOM_CXX_FLAGS -D_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING)
282320
# pass in version number
283321
set(OTLP_MACROS ${OTLP_MACROS} /DOTEL_MATLAB_VERSION="${OTEL_MATLAB_VERSION}")
284-
set(OTEL_PROTO_LIBRARY_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
285322
else()
286323
set(CUSTOM_CXX_FLAGS "")
287324
set(OTLP_MACROS ${OTLP_MACROS} "-D OTEL_MATLAB_VERSION=\"${OTEL_MATLAB_VERSION}\"")
288-
set(OTEL_PROTO_LIBRARY_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
289325
endif()
290326

291327
target_compile_options(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTLP_MACROS} ${CUSTOM_CXX_FLAGS})
292328

293329
# link against OpenTelemetry-cpp libraries and their dependencies
294-
set(OTEL_CPP_LINK_LIBRARIES ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_common${CMAKE_STATIC_LIBRARY_SUFFIX}
295-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_otlp_recordable${CMAKE_STATIC_LIBRARY_SUFFIX}
296-
${OTEL_CPP_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}opentelemetry_proto${OTEL_PROTO_LIBRARY_SUFFIX}
297-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_resources${CMAKE_STATIC_LIBRARY_SUFFIX}
298-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_trace${CMAKE_STATIC_LIBRARY_SUFFIX}
299-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_version${CMAKE_STATIC_LIBRARY_SUFFIX}
300-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_logs${CMAKE_STATIC_LIBRARY_SUFFIX}
301-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_metrics${CMAKE_STATIC_LIBRARY_SUFFIX}
302-
${Protobuf_LIBRARIES} ${Matlab_MEX_LIBRARY})
330+
set(OPENTELEMETRY_PROXY_LINK_LIBRARIES ${OTEL_CPP_LIBRARIES} ${Protobuf_LIBRARIES} ${Matlab_MEX_LIBRARY})
303331
if(WITH_OTLP_HTTP)
304-
set(OTEL_CPP_LINK_LIBRARIES ${OTEL_CPP_LINK_LIBRARIES} ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http${CMAKE_STATIC_LIBRARY_SUFFIX}
305-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http_client${CMAKE_STATIC_LIBRARY_SUFFIX}
306-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http_metric${CMAKE_STATIC_LIBRARY_SUFFIX}
307-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_http_client_curl${CMAKE_STATIC_LIBRARY_SUFFIX}
308-
${CURL_LIBRARIES})
332+
set(OPENTELEMETRY_PROXY_LINK_LIBRARIES ${OPENTELEMETRY_PROXY_LINK_LIBRARIES} ${CURL_LIBRARIES})
309333
endif()
310334
if(WITH_OTLP_GRPC)
311-
set(OTEL_CPP_LINK_LIBRARIES ${OTEL_CPP_LINK_LIBRARIES} ${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc${CMAKE_STATIC_LIBRARY_SUFFIX}
312-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc_client${CMAKE_STATIC_LIBRARY_SUFFIX}
313-
${OTEL_CPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_grpc_metrics${CMAKE_STATIC_LIBRARY_SUFFIX}
314-
${OTEL_CPP_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}opentelemetry_proto_grpc${OTEL_PROTO_LIBRARY_SUFFIX}
315-
gRPC::grpc++
316-
absl::synchronization)
335+
set(OPENTELEMETRY_PROXY_LINK_LIBRARIES ${OPENTELEMETRY_PROXY_LINK_LIBRARIES} gRPC::grpc++ absl::synchronization)
317336
endif()
318337

319-
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OTEL_CPP_LINK_LIBRARIES})
338+
target_link_libraries(${OPENTELEMETRY_PROXY_LIBRARY_NAME} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES})
320339

321340
# On Linux, when linking with certain static libraries, need to force include entire archive to avoid the linker mistakenly leaving out symbols
322341
if(UNIX AND NOT APPLE AND NOT CYGWIN)

examples/context_propagation/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
# C++ target
33
set(CONTEXTPROP_EXAMPLE_TARGET contextprop_example_client)
44
add_executable(${CONTEXTPROP_EXAMPLE_TARGET} cpp/client.cc)
5+
add_dependencies(${CONTEXTPROP_EXAMPLE_TARGET} ${OTEL_CPP_PROJECT_NAME})
56

67
target_include_directories(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OTEL_CPP_PREFIX}/include)
7-
target_link_libraries(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OTEL_CPP_LINK_LIBRARIES})
8+
target_link_libraries(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES})
89
if(UNIX AND NOT APPLE AND NOT CYGWIN)
910
target_link_options(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS})
1011
elseif(APPLE)

examples/webread/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11

22
set(WEBREAD_EXAMPLE_TARGET webread_example_server)
33
add_executable(${WEBREAD_EXAMPLE_TARGET} cpp/server.cc)
4+
add_dependencies(${WEBREAD_EXAMPLE_TARGET} ${OTEL_CPP_PROJECT_NAME})
45

56
target_include_directories(${WEBREAD_EXAMPLE_TARGET} PRIVATE ${OTEL_CPP_PREFIX}/include)
6-
target_link_libraries(${WEBREAD_EXAMPLE_TARGET} PRIVATE ${OTEL_CPP_LINK_LIBRARIES})
7+
target_link_libraries(${WEBREAD_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES})
78
if(UNIX AND NOT APPLE AND NOT CYGWIN)
89
target_link_options(${WEBREAD_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS})
910
elseif(APPLE)

0 commit comments

Comments
 (0)