From 628ba387e47eb3bc891809b26d7215d120db80fa Mon Sep 17 00:00:00 2001 From: Eugenio Collado Date: Tue, 16 Jun 2026 08:53:23 +0200 Subject: [PATCH 1/2] Fix jazzy interfaces Signed-off-by: Eugenio Collado --- ...t_microxrcedds_c_generate_interfaces.cmake | 36 +++++++++++++++++-- ...rv__rosidl_typesupport_microxrcedds_c.h.em | 9 ----- .../resource/srv__type_support_c.c.em | 22 ++---------- ...microxrcedds_cpp_generate_interfaces.cmake | 36 +++++++++++++++++-- 4 files changed, 71 insertions(+), 32 deletions(-) diff --git a/rosidl_typesupport_microxrcedds_c/cmake/rosidl_typesupport_microxrcedds_c_generate_interfaces.cmake b/rosidl_typesupport_microxrcedds_c/cmake/rosidl_typesupport_microxrcedds_c_generate_interfaces.cmake index 26c6a05..aeb3d47 100644 --- a/rosidl_typesupport_microxrcedds_c/cmake/rosidl_typesupport_microxrcedds_c_generate_interfaces.cmake +++ b/rosidl_typesupport_microxrcedds_c/cmake/rosidl_typesupport_microxrcedds_c_generate_interfaces.cmake @@ -159,9 +159,41 @@ foreach(_pkg_name ${rosidl_generate_interfaces_DEPENDENCY_PACKAGE_NAMES}) ament_target_dependencies(${rosidl_generate_interfaces_TARGET}${_target_suffix} ${_pkg_name} ) - target_link_libraries(${rosidl_generate_interfaces_TARGET}${_target_suffix} - ${${_pkg_name}_LIBRARIES${_target_suffix}} + set(_dep_tslibs "") + get_filename_component(_dep_prefix "${${_pkg_name}_DIR}/../../.." ABSOLUTE) + foreach(_dep_tslib ${${_pkg_name}_LIBRARIES${_target_suffix}}) + if(IS_ABSOLUTE "${_dep_tslib}" AND EXISTS "${_dep_tslib}") + list(APPEND _dep_tslibs "${_dep_tslib}") + else() + unset(_dep_tslib_abs CACHE) + unset(_dep_tslib_abs) + find_library(_dep_tslib_abs + NAMES "${_dep_tslib}" "${_pkg_name}${_target_suffix}" + HINTS "${_dep_prefix}/lib" "${_dep_prefix}/lib64" + NO_DEFAULT_PATH + ) + if(_dep_tslib_abs) + list(APPEND _dep_tslibs "${_dep_tslib_abs}") + endif() + endif() + endforeach() + if(NOT _dep_tslibs) + unset(_dep_tslib_abs CACHE) + unset(_dep_tslib_abs) + find_library(_dep_tslib_abs + NAMES "${_pkg_name}${_target_suffix}" + HINTS "${_dep_prefix}/lib" "${_dep_prefix}/lib64" + NO_DEFAULT_PATH ) + if(_dep_tslib_abs) + list(APPEND _dep_tslibs "${_dep_tslib_abs}") + endif() + endif() + if(_dep_tslibs) + target_link_libraries(${rosidl_generate_interfaces_TARGET}${_target_suffix} + ${_dep_tslibs} + ) + endif() endforeach() target_link_libraries( diff --git a/rosidl_typesupport_microxrcedds_c/resource/srv__rosidl_typesupport_microxrcedds_c.h.em b/rosidl_typesupport_microxrcedds_c/resource/srv__rosidl_typesupport_microxrcedds_c.h.em index 4d7fb23..1ed9e72 100644 --- a/rosidl_typesupport_microxrcedds_c/resource/srv__rosidl_typesupport_microxrcedds_c.h.em +++ b/rosidl_typesupport_microxrcedds_c/resource/srv__rosidl_typesupport_microxrcedds_c.h.em @@ -17,15 +17,6 @@ TEMPLATE( include_directives=include_directives) }@ -@{ -TEMPLATE( - 'msg__rosidl_typesupport_microxrcedds_c.h.em', - package_name=package_name, - interface_path=interface_path, - message=service.event_message, - include_directives=include_directives) -}@ - @{ header_files = [ 'rosidl_runtime_c/service_type_support_struct.h', diff --git a/rosidl_typesupport_microxrcedds_c/resource/srv__type_support_c.c.em b/rosidl_typesupport_microxrcedds_c/resource/srv__type_support_c.c.em index 657a4ca..d1269df 100644 --- a/rosidl_typesupport_microxrcedds_c/resource/srv__type_support_c.c.em +++ b/rosidl_typesupport_microxrcedds_c/resource/srv__type_support_c.c.em @@ -4,7 +4,6 @@ from rosidl_generator_c import idl_structure_type_to_c_typename from rosidl_generator_type_description import GET_DESCRIPTION_FUNC from rosidl_generator_type_description import GET_HASH_FUNC from rosidl_generator_type_description import GET_SOURCES_FUNC -from rosidl_parser.definition import SERVICE_EVENT_MESSAGE_SUFFIX from rosidl_parser.definition import SERVICE_REQUEST_MESSAGE_SUFFIX from rosidl_parser.definition import SERVICE_RESPONSE_MESSAGE_SUFFIX @@ -25,15 +24,6 @@ TEMPLATE( include_directives=include_directives) }@ -@{ -TEMPLATE( - 'msg__type_support_c.c.em', - package_name=package_name, - interface_path=interface_path, - message=service.event_message, - include_directives=include_directives) -}@ - @{ from rosidl_cmake import convert_camel_case_to_lower_case_underscore @@ -78,16 +68,10 @@ static rosidl_service_type_support_t @(service.namespaced_type.name)__handle = { &_@(service.namespaced_type.name)@(SERVICE_REQUEST_MESSAGE_SUFFIX)__type_support, &_@(service.namespaced_type.name)@(SERVICE_RESPONSE_MESSAGE_SUFFIX)__type_support, - &_@(service.namespaced_type.name)@(SERVICE_EVENT_MESSAGE_SUFFIX)__type_support, + NULL, - ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_CREATE_EVENT_MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - @(',\n '.join(service.namespaced_type.namespaced_name())) - ), - ROSIDL_TYPESUPPORT_INTERFACE__SERVICE_DESTROY_EVENT_MESSAGE_SYMBOL_NAME( - rosidl_typesupport_c, - @(',\n '.join(service.namespaced_type.namespaced_name())) - ), + NULL, + NULL, &@(idl_structure_type_to_c_typename(service.namespaced_type))__@(GET_HASH_FUNC), &@(idl_structure_type_to_c_typename(service.namespaced_type))__@(GET_DESCRIPTION_FUNC), diff --git a/rosidl_typesupport_microxrcedds_cpp/cmake/rosidl_typesupport_microxrcedds_cpp_generate_interfaces.cmake b/rosidl_typesupport_microxrcedds_cpp/cmake/rosidl_typesupport_microxrcedds_cpp_generate_interfaces.cmake index 623ceab..2aa15f1 100644 --- a/rosidl_typesupport_microxrcedds_cpp/cmake/rosidl_typesupport_microxrcedds_cpp_generate_interfaces.cmake +++ b/rosidl_typesupport_microxrcedds_cpp/cmake/rosidl_typesupport_microxrcedds_cpp_generate_interfaces.cmake @@ -160,9 +160,41 @@ foreach(_pkg_name ${rosidl_generate_interfaces_DEPENDENCY_PACKAGE_NAMES}) ament_target_dependencies(${rosidl_generate_interfaces_TARGET}${_target_suffix} ${_pkg_name} ) - target_link_libraries(${rosidl_generate_interfaces_TARGET}${_target_suffix} - ${${_pkg_name}_LIBRARIES${_target_suffix}} + set(_dep_tslibs "") + get_filename_component(_dep_prefix "${${_pkg_name}_DIR}/../../.." ABSOLUTE) + foreach(_dep_tslib ${${_pkg_name}_LIBRARIES${_target_suffix}}) + if(IS_ABSOLUTE "${_dep_tslib}" AND EXISTS "${_dep_tslib}") + list(APPEND _dep_tslibs "${_dep_tslib}") + else() + unset(_dep_tslib_abs CACHE) + unset(_dep_tslib_abs) + find_library(_dep_tslib_abs + NAMES "${_dep_tslib}" "${_pkg_name}${_target_suffix}" + HINTS "${_dep_prefix}/lib" "${_dep_prefix}/lib64" + NO_DEFAULT_PATH + ) + if(_dep_tslib_abs) + list(APPEND _dep_tslibs "${_dep_tslib_abs}") + endif() + endif() + endforeach() + if(NOT _dep_tslibs) + unset(_dep_tslib_abs CACHE) + unset(_dep_tslib_abs) + find_library(_dep_tslib_abs + NAMES "${_pkg_name}${_target_suffix}" + HINTS "${_dep_prefix}/lib" "${_dep_prefix}/lib64" + NO_DEFAULT_PATH ) + if(_dep_tslib_abs) + list(APPEND _dep_tslibs "${_dep_tslib_abs}") + endif() + endif() + if(_dep_tslibs) + target_link_libraries(${rosidl_generate_interfaces_TARGET}${_target_suffix} + ${_dep_tslibs} + ) + endif() endforeach() target_link_libraries( From ced42ec42a3bf7210da47d4eb211ebfa3f4f26d2 Mon Sep 17 00:00:00 2001 From: EugenioCollado <121509066+EugenioCollado@users.noreply.github.com> Date: Tue, 16 Jun 2026 12:20:03 +0200 Subject: [PATCH 2/2] Addressed suggestions Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- ...idl_typesupport_microxrcedds_c_generate_interfaces.cmake | 6 +++++- ...l_typesupport_microxrcedds_cpp_generate_interfaces.cmake | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/rosidl_typesupport_microxrcedds_c/cmake/rosidl_typesupport_microxrcedds_c_generate_interfaces.cmake b/rosidl_typesupport_microxrcedds_c/cmake/rosidl_typesupport_microxrcedds_c_generate_interfaces.cmake index aeb3d47..a94219c 100644 --- a/rosidl_typesupport_microxrcedds_c/cmake/rosidl_typesupport_microxrcedds_c_generate_interfaces.cmake +++ b/rosidl_typesupport_microxrcedds_c/cmake/rosidl_typesupport_microxrcedds_c_generate_interfaces.cmake @@ -169,11 +169,15 @@ foreach(_pkg_name ${rosidl_generate_interfaces_DEPENDENCY_PACKAGE_NAMES}) unset(_dep_tslib_abs) find_library(_dep_tslib_abs NAMES "${_dep_tslib}" "${_pkg_name}${_target_suffix}" - HINTS "${_dep_prefix}/lib" "${_dep_prefix}/lib64" + HINTS "${_dep_prefix}" + PATH_SUFFIXES lib lib64 "lib/${CMAKE_LIBRARY_ARCHITECTURE}" NO_DEFAULT_PATH ) if(_dep_tslib_abs) list(APPEND _dep_tslibs "${_dep_tslib_abs}") + else() + # Preserve previous behavior if resolution fails (e.g. plain link name or CMake target) + list(APPEND _dep_tslibs "${_dep_tslib}") endif() endif() endforeach() diff --git a/rosidl_typesupport_microxrcedds_cpp/cmake/rosidl_typesupport_microxrcedds_cpp_generate_interfaces.cmake b/rosidl_typesupport_microxrcedds_cpp/cmake/rosidl_typesupport_microxrcedds_cpp_generate_interfaces.cmake index 2aa15f1..40f77ff 100644 --- a/rosidl_typesupport_microxrcedds_cpp/cmake/rosidl_typesupport_microxrcedds_cpp_generate_interfaces.cmake +++ b/rosidl_typesupport_microxrcedds_cpp/cmake/rosidl_typesupport_microxrcedds_cpp_generate_interfaces.cmake @@ -170,11 +170,15 @@ foreach(_pkg_name ${rosidl_generate_interfaces_DEPENDENCY_PACKAGE_NAMES}) unset(_dep_tslib_abs) find_library(_dep_tslib_abs NAMES "${_dep_tslib}" "${_pkg_name}${_target_suffix}" - HINTS "${_dep_prefix}/lib" "${_dep_prefix}/lib64" + HINTS "${_dep_prefix}" + PATH_SUFFIXES lib lib64 "lib/${CMAKE_LIBRARY_ARCHITECTURE}" NO_DEFAULT_PATH ) if(_dep_tslib_abs) list(APPEND _dep_tslibs "${_dep_tslib_abs}") + else() + # Preserve previous behavior if resolution fails (e.g. plain link name or CMake target) + list(APPEND _dep_tslibs "${_dep_tslib}") endif() endif() endforeach()