Skip to content

Commit 3b0a82a

Browse files
authored
Merge pull request #120 from mathworks/build_examples
Build examples on Windows and Mac
2 parents c59200e + ce28ea4 commit 3b0a82a

File tree

2 files changed

+42
-15
lines changed

2 files changed

+42
-15
lines changed

.github/workflows/build_and_test.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ name: "Build and Run Tests"
22
on:
33
workflow_dispatch:
44
push:
5+
env:
6+
MLM_LICENSE_TOKEN: ${{ secrets.MLM_LICENSE_TOKEN }}
57
jobs:
68
build-and-run-tests-ubuntu:
79
# Running on ubuntu-latest would use a glibc version that is incompatible when using the built mex files on a Debian 11
@@ -20,11 +22,11 @@ jobs:
2022
- name: Install MATLAB
2123
uses: matlab-actions/setup-matlab@v2
2224
with:
23-
products: MATLAB_Compiler
25+
products: MATLAB_Compiler MATLAB_Compiler_SDK
2426
- name: Build OpenTelemetry-Matlab
2527
working-directory: opentelemetry-matlab
2628
run: |
27-
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
29+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
2830
cmake --build build --config Release --target install
2931
- name: Run tests
3032
env:
@@ -48,13 +50,13 @@ jobs:
4850
- name: Install MATLAB
4951
uses: matlab-actions/setup-matlab@v2
5052
with:
51-
products: MATLAB_Compiler
53+
products: MATLAB_Compiler MATLAB_Compiler_SDK
5254
- name: Build OpenTelemetry-Matlab
5355
working-directory: opentelemetry-matlab
5456
shell: cmd
5557
run: |
5658
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
57-
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
59+
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
5860
cmake --build build --config Release --target install
5961
- name: Run tests
6062
env:
@@ -81,11 +83,11 @@ jobs:
8183
- name: Install MATLAB
8284
uses: matlab-actions/setup-matlab@v2
8385
with:
84-
products: MATLAB_Compiler
86+
products: MATLAB_Compiler MATLAB_Compiler_SDK
8587
- name: Build OpenTelemetry-Matlab
8688
working-directory: opentelemetry-matlab
8789
run: |
88-
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
90+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
8991
cmake --build build --config Release --target install
9092
- name: Run tests
9193
env:
Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
1+
# Set this option to ON if running in GitHub Actions workflows
2+
option(USE_BATCH_FOR_MCC "Running on GitHub Actions workflows requires calling mcc using matlab-batch due to licensing constraints." OFF)
13

24
# C++ target
3-
set(CONTEXTPROP_EXAMPLE_TARGET contextprop_example_client)
4-
add_executable(${CONTEXTPROP_EXAMPLE_TARGET} cpp/client.cc)
5-
add_dependencies(${CONTEXTPROP_EXAMPLE_TARGET} ${OTEL_CPP_PROJECT_NAME})
5+
set(CONTEXTPROP_EXAMPLE_CPP_TARGET contextprop_example_client)
6+
add_executable(${CONTEXTPROP_EXAMPLE_CPP_TARGET} cpp/client.cc)
7+
add_dependencies(${CONTEXTPROP_EXAMPLE_CPP_TARGET} ${OTEL_CPP_PROJECT_NAME})
68

7-
target_include_directories(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OTEL_CPP_PREFIX}/include)
8-
target_link_libraries(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES})
9+
target_include_directories(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE ${OTEL_CPP_PREFIX}/include)
10+
target_link_libraries(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES})
911
if(UNIX AND NOT APPLE AND NOT CYGWIN)
10-
target_link_options(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS})
12+
target_link_options(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS})
1113
elseif(APPLE)
12-
set_target_properties(${CONTEXTPROP_EXAMPLE_TARGET} PROPERTIES BUILD_RPATH "${CMAKE_INSTALL_PREFIX}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}")
14+
set_target_properties(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PROPERTIES BUILD_RPATH "${CMAKE_INSTALL_PREFIX}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}")
1315
endif()
1416
# use the same C++ standard as OpenTelemetry-cpp
15-
target_compile_features(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE cxx_std_${OTEL_CPP_CXX_STANDARD})
17+
target_compile_features(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE cxx_std_${OTEL_CPP_CXX_STANDARD})
1618

1719
# MATLAB target
1820
find_package(Matlab REQUIRED COMPONENTS MCC_COMPILER MAIN_PROGRAM)
1921

2022
set(CONTEXTPROP_EXAMPLE_DEPLOYNAME mymagic)
23+
set(CONTEXTPROP_EXAMPLE_MATLAB_TARGET ${CONTEXTPROP_EXAMPLE_DEPLOYNAME}.ctf)
2124
set(CONTEXTPROP_EXAMPLE_MATLAB_SOURCE ${CMAKE_CURRENT_LIST_DIR}/matlab/${CONTEXTPROP_EXAMPLE_DEPLOYNAME}.m)
2225
set(CONTEXTPROP_EXAMPLE_ROUTES ../../../examples/context_propagation/matlab/routes.json) #somehow, only relative paths are allowed
2326
matlab_get_version_from_matlab_run(${Matlab_MAIN_PROGRAM} Matlab_LIST_VERSION)
@@ -27,4 +30,26 @@ if(Matlab_LIST_VERSION VERSION_GREATER_EQUAL 23.2.0)
2730
else()
2831
set(ARCHIVE_ROUTES "")
2932
endif()
30-
install(CODE "execute_process(COMMAND ${Matlab_MCC_COMPILER} -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} -a ${CMAKE_INSTALL_PREFIX} -a ${CMAKE_INSTALL_PREFIX}/+libmexclass/+proxy WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
33+
34+
# A few libraries need to be moved to libmexclass.proxy package before calling mcc
35+
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}
36+
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}
37+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${OPENTELEMETRY_MEX_GATEWAY_NAME}> $<TARGET_FILE:${OPENTELEMETRY_PROXY_LIBRARY_NAME}>
38+
$<TARGET_FILE:mexclass> ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES}
39+
${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}
40+
DEPENDS ${OPENTELEMETRY_MEX_GATEWAY_NAME})
41+
42+
# Call mcc to create .ctf file for deployment with MATLAB Production Server
43+
if(USE_BATCH_FOR_MCC)
44+
set(MCC_START matlab-batch \"mcc)
45+
set(MCC_END "\"")
46+
else()
47+
set(MCC_START ${Matlab_MCC_COMPILER})
48+
set(MCC_END "")
49+
endif()
50+
add_custom_target(${CONTEXTPROP_EXAMPLE_MATLAB_TARGET} ALL
51+
${MCC_START} -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE}
52+
-a ${CMAKE_SOURCE_DIR}/api/trace -a ${CMAKE_SOURCE_DIR}/api/context -a ${CMAKE_SOURCE_DIR}/api/common -a ${CMAKE_SOURCE_DIR}/sdk/trace
53+
-a ${CMAKE_SOURCE_DIR}/sdk/common -a ${CMAKE_SOURCE_DIR}/exporters/otlp -a ${${LIBMEXCLASS_FETCH_CONTENT_NAME}_SOURCE_DIR}/libmexclass/matlab
54+
-a ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}${MCC_END}
55+
DEPENDS ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR})

0 commit comments

Comments
 (0)