From f2c5d5381fd7af398e7fb99632ffe223177237e5 Mon Sep 17 00:00:00 2001 From: "Michael X. Grey" Date: Tue, 12 Mar 2024 11:36:02 +0000 Subject: [PATCH 1/2] Allow ros2_rust to be built within a distro workspace Signed-off-by: Michael X. Grey --- rclrs/package.xml | 2 +- rclrs_tests/package.xml | 1 + rosidl_generator_rs/CMakeLists.txt | 4 +- ...idl_generator_rs_generate_interfaces.cmake | 43 +++---------------- ...rosidl_generator_rs_get_typesupports.cmake | 30 ------------- 5 files changed, 10 insertions(+), 70 deletions(-) delete mode 100644 rosidl_generator_rs/cmake/rosidl_generator_rs_get_typesupports.cmake diff --git a/rclrs/package.xml b/rclrs/package.xml index 800ccd63..12acc583 100644 --- a/rclrs/package.xml +++ b/rclrs/package.xml @@ -15,7 +15,7 @@ libclang-dev rosidl_runtime_rs - rcl + rcl builtin_interfaces rcl_interfaces rosgraph_msgs diff --git a/rclrs_tests/package.xml b/rclrs_tests/package.xml index e1802327..3de64a3d 100644 --- a/rclrs_tests/package.xml +++ b/rclrs_tests/package.xml @@ -12,6 +12,7 @@ test_msgs rclrs rosidl_runtime_rs + rcl ament_cargo diff --git a/rosidl_generator_rs/CMakeLists.txt b/rosidl_generator_rs/CMakeLists.txt index 64e5577a..fd7d1c13 100644 --- a/rosidl_generator_rs/CMakeLists.txt +++ b/rosidl_generator_rs/CMakeLists.txt @@ -22,8 +22,8 @@ ament_index_register_resource("rosidl_runtime_packages") ament_python_install_package(${PROJECT_NAME}) ament_package( - CONFIG_EXTRAS "rosidl_generator_rs-extras.cmake.in" - "cmake/rosidl_generator_rs_get_typesupports.cmake" + CONFIG_EXTRAS + "rosidl_generator_rs-extras.cmake.in" "cmake/register_rs.cmake" ) diff --git a/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake b/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake index fd48a554..051ccd85 100644 --- a/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake +++ b/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake @@ -12,9 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -find_package(rmw_implementation_cmake REQUIRED) -find_package(rmw REQUIRED) - if(NOT WIN32) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") @@ -23,17 +20,8 @@ if(NOT WIN32) endif() endif() -# Get a list of typesupport implementations from valid rmw implementations. -rosidl_generator_rs_get_typesupports(_typesupport_impls) - -if(_typesupport_impls STREQUAL "") - message(WARNING "No valid typesupport for Rust generator. Rust messages will not be generated.") - return() -endif() - set(_output_path "${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_rs/${PROJECT_NAME}") -set(_generated_extension_files "") set(_generated_common_rs_files "") set(_generated_msg_rs_files "") @@ -42,10 +30,6 @@ set(_generated_srv_rs_files "") set(_has_msg FALSE) set(_has_srv FALSE) -foreach(_typesupport_impl ${_typesupport_impls}) - set(_generated_extension_${_typesupport_impl}_files "") -endforeach() - foreach(_idl_file ${rosidl_generate_interfaces_ABS_IDL_FILES}) get_filename_component(_parent_folder "${_idl_file}" DIRECTORY) get_filename_component(_parent_folder "${_parent_folder}" NAME) @@ -75,22 +59,12 @@ if(${_has_msg}) list(APPEND _generated_msg_rs_files "${_output_path}/rust/src/msg.rs" ) - - foreach(_typesupport_impl ${_typesupport_impls}) - list_append_unique(_generated_extension_${_typesupport_impl}_files "${_output_path}/msg_rs.ep.${_typesupport_impl}.c") - list_append_unique(_generated_extension_files "${_generated_extension_${_typesupport_impl}_files}") - endforeach() endif() if(${_has_srv}) list(APPEND _generated_srv_rs_files "${_output_path}/rust/src/srv.rs" ) - - foreach(_typesupport_impl ${_typesupport_impls}) - list_append_unique(_generated_extension_${_typesupport_impl}_files "${_output_path}/srv_rs.ep.${_typesupport_impl}.c") - list_append_unique(_generated_extension_files "${_generated_extension_${_typesupport_impl}_files}") - endforeach() endif() set(_dependency_files "") @@ -156,23 +130,18 @@ add_dependencies(${rosidl_generate_interfaces_TARGET} ${rosidl_generate_interfac set_property( SOURCE - ${_generated_extension_files} ${_generated_common_rs_files} ${_generated_msg_rs_files} ${_generated_srv_rs_files} PROPERTY GENERATED 1) set(_rsext_suffix "__rsext") -foreach(_typesupport_impl ${_typesupport_impls}) - find_package(${_typesupport_impl} REQUIRED) - - if(NOT rosidl_generate_interfaces_SKIP_INSTALL) - install( - DIRECTORY "${_output_path}/rust" - DESTINATION "share/${PROJECT_NAME}" - ) - endif() -endforeach() +if(NOT rosidl_generate_interfaces_SKIP_INSTALL) + install( + DIRECTORY "${_output_path}/rust" + DESTINATION "share/${PROJECT_NAME}" + ) +endif() if(BUILD_TESTING AND rosidl_generate_interfaces_ADD_LINTER_TESTS) if( diff --git a/rosidl_generator_rs/cmake/rosidl_generator_rs_get_typesupports.cmake b/rosidl_generator_rs/cmake/rosidl_generator_rs_get_typesupports.cmake deleted file mode 100644 index 37d3c358..00000000 --- a/rosidl_generator_rs/cmake/rosidl_generator_rs_get_typesupports.cmake +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 2016-2017 Open Source Robotics Foundation, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -macro(accumulate_typesupports) - set(_typesupport_impl_tmp "") - get_rmw_typesupport(_typesupport_impl_tmp ${rmw_implementation} LANGUAGE "C") - list(APPEND _typesupport_impls_tmp ${_typesupport_impl_tmp}) -endmacro() - -macro(rosidl_generator_rs_get_typesupports TYPESUPPORT_IMPLS) - set(${TYPESUPPORT_IMPLS} "") - set(_typesupport_impls_tmp "") - set(_typesupport_impls_tmp_unique "") - call_for_each_rmw_implementation(accumulate_typesupports) - - foreach(_typesupport_impl ${_typesupport_impls_tmp}) - list_append_unique(${TYPESUPPORT_IMPLS} ${_typesupport_impl}) - endforeach() -endmacro() From b0d8e35b375da81a01e89e214a2e26363cc74739 Mon Sep 17 00:00:00 2001 From: "Michael X. Grey" Date: Tue, 12 Mar 2024 16:36:53 +0000 Subject: [PATCH 2/2] Remove redundant transitive dependency listing Signed-off-by: Michael X. Grey --- rclrs_tests/package.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/rclrs_tests/package.xml b/rclrs_tests/package.xml index 3de64a3d..e1802327 100644 --- a/rclrs_tests/package.xml +++ b/rclrs_tests/package.xml @@ -12,7 +12,6 @@ test_msgs rclrs rosidl_runtime_rs - rcl ament_cargo