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} )
911if (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} )
1113elseif (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} " )
1315endif ()
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
1820find_package (Matlab REQUIRED COMPONENTS MCC_COMPILER MAIN_PROGRAM)
1921
2022set (CONTEXTPROP_EXAMPLE_DEPLOYNAME mymagic)
23+ set (CONTEXTPROP_EXAMPLE_MATLAB_TARGET ${CONTEXTPROP_EXAMPLE_DEPLOYNAME} .ctf)
2124set (CONTEXTPROP_EXAMPLE_MATLAB_SOURCE ${CMAKE_CURRENT_LIST_DIR} /matlab/${CONTEXTPROP_EXAMPLE_DEPLOYNAME} .m)
2225set (CONTEXTPROP_EXAMPLE_ROUTES ../../../examples/context_propagation/matlab/routes.json) #somehow, only relative paths are allowed
2326matlab_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)
2730else ()
2831 set (ARCHIVE_ROUTES "" )
2932endif ()
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