Skip to content

Commit

Permalink
Merge pull request #120 from mathworks/build_examples
Browse files Browse the repository at this point in the history
Build examples on Windows and Mac
  • Loading branch information
duncanpo committed May 8, 2024
2 parents c59200e + ce28ea4 commit 3b0a82a
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 15 deletions.
14 changes: 8 additions & 6 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: "Build and Run Tests"
on:
workflow_dispatch:
push:
env:
MLM_LICENSE_TOKEN: ${{ secrets.MLM_LICENSE_TOKEN }}
jobs:
build-and-run-tests-ubuntu:
# Running on ubuntu-latest would use a glibc version that is incompatible when using the built mex files on a Debian 11
Expand All @@ -20,11 +22,11 @@ jobs:
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2
with:
products: MATLAB_Compiler
products: MATLAB_Compiler MATLAB_Compiler_SDK
- name: Build OpenTelemetry-Matlab
working-directory: opentelemetry-matlab
run: |
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
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 }}
cmake --build build --config Release --target install
- name: Run tests
env:
Expand All @@ -48,13 +50,13 @@ jobs:
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2
with:
products: MATLAB_Compiler
products: MATLAB_Compiler MATLAB_Compiler_SDK
- name: Build OpenTelemetry-Matlab
working-directory: opentelemetry-matlab
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
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 }}
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 }}
cmake --build build --config Release --target install
- name: Run tests
env:
Expand All @@ -81,11 +83,11 @@ jobs:
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2
with:
products: MATLAB_Compiler
products: MATLAB_Compiler MATLAB_Compiler_SDK
- name: Build OpenTelemetry-Matlab
working-directory: opentelemetry-matlab
run: |
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
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 }}
cmake --build build --config Release --target install
- name: Run tests
env:
Expand Down
43 changes: 34 additions & 9 deletions examples/context_propagation/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
# Set this option to ON if running in GitHub Actions workflows
option(USE_BATCH_FOR_MCC "Running on GitHub Actions workflows requires calling mcc using matlab-batch due to licensing constraints." OFF)

# C++ target
set(CONTEXTPROP_EXAMPLE_TARGET contextprop_example_client)
add_executable(${CONTEXTPROP_EXAMPLE_TARGET} cpp/client.cc)
add_dependencies(${CONTEXTPROP_EXAMPLE_TARGET} ${OTEL_CPP_PROJECT_NAME})
set(CONTEXTPROP_EXAMPLE_CPP_TARGET contextprop_example_client)
add_executable(${CONTEXTPROP_EXAMPLE_CPP_TARGET} cpp/client.cc)
add_dependencies(${CONTEXTPROP_EXAMPLE_CPP_TARGET} ${OTEL_CPP_PROJECT_NAME})

target_include_directories(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OTEL_CPP_PREFIX}/include)
target_link_libraries(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES})
target_include_directories(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE ${OTEL_CPP_PREFIX}/include)
target_link_libraries(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES})
if(UNIX AND NOT APPLE AND NOT CYGWIN)
target_link_options(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS})
target_link_options(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS})
elseif(APPLE)
set_target_properties(${CONTEXTPROP_EXAMPLE_TARGET} PROPERTIES BUILD_RPATH "${CMAKE_INSTALL_PREFIX}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}")
set_target_properties(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PROPERTIES BUILD_RPATH "${CMAKE_INSTALL_PREFIX}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}")
endif()
# use the same C++ standard as OpenTelemetry-cpp
target_compile_features(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE cxx_std_${OTEL_CPP_CXX_STANDARD})
target_compile_features(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE cxx_std_${OTEL_CPP_CXX_STANDARD})

# MATLAB target
find_package(Matlab REQUIRED COMPONENTS MCC_COMPILER MAIN_PROGRAM)

set(CONTEXTPROP_EXAMPLE_DEPLOYNAME mymagic)
set(CONTEXTPROP_EXAMPLE_MATLAB_TARGET ${CONTEXTPROP_EXAMPLE_DEPLOYNAME}.ctf)
set(CONTEXTPROP_EXAMPLE_MATLAB_SOURCE ${CMAKE_CURRENT_LIST_DIR}/matlab/${CONTEXTPROP_EXAMPLE_DEPLOYNAME}.m)
set(CONTEXTPROP_EXAMPLE_ROUTES ../../../examples/context_propagation/matlab/routes.json) #somehow, only relative paths are allowed
matlab_get_version_from_matlab_run(${Matlab_MAIN_PROGRAM} Matlab_LIST_VERSION)
Expand All @@ -27,4 +30,26 @@ if(Matlab_LIST_VERSION VERSION_GREATER_EQUAL 23.2.0)
else()
set(ARCHIVE_ROUTES "")
endif()
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})")

# A few libraries need to be moved to libmexclass.proxy package before calling mcc
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${OPENTELEMETRY_MEX_GATEWAY_NAME}> $<TARGET_FILE:${OPENTELEMETRY_PROXY_LIBRARY_NAME}>
$<TARGET_FILE:mexclass> ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES}
${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}
DEPENDS ${OPENTELEMETRY_MEX_GATEWAY_NAME})

# Call mcc to create .ctf file for deployment with MATLAB Production Server
if(USE_BATCH_FOR_MCC)
set(MCC_START matlab-batch \"mcc)
set(MCC_END "\"")
else()
set(MCC_START ${Matlab_MCC_COMPILER})
set(MCC_END "")
endif()
add_custom_target(${CONTEXTPROP_EXAMPLE_MATLAB_TARGET} ALL
${MCC_START} -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE}
-a ${CMAKE_SOURCE_DIR}/api/trace -a ${CMAKE_SOURCE_DIR}/api/context -a ${CMAKE_SOURCE_DIR}/api/common -a ${CMAKE_SOURCE_DIR}/sdk/trace
-a ${CMAKE_SOURCE_DIR}/sdk/common -a ${CMAKE_SOURCE_DIR}/exporters/otlp -a ${${LIBMEXCLASS_FETCH_CONTENT_NAME}_SOURCE_DIR}/libmexclass/matlab
-a ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}${MCC_END}
DEPENDS ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR})

0 comments on commit 3b0a82a

Please sign in to comment.