Hi all,
I am planning to work on a task to set symbol visibility to hidden for some of the RMW and RCL packages. The core rmw package has the header for symbol visibility definitions and has its cmake set visibility to hidden by default in the compile flags [1]. However other packages just have the visibility headers defined but not enabled in compile flags [2]. I am planning to make the changes to enable the same.
Please let me know your thoughts/any concerns about the same. It may happen that some downstream dependency is depending on a hidden symbol, however we do want to catch such cases and have them fixed if possible.
Regards,
Sachin
[1] - https://github.com/ros2/rmw/blob/master/rmw/cmake/configure_rmw_library.cmake#L44-L88
[2] -
RMW packages
- rmw: https://github.com/ros2/rmw/blob/master/rmw/include/rmw/visibility_control.h
- rmw_connext: https://github.com/ros2/rmw_connext/blob/master/rmw_connext_cpp/include/rmw_connext_cpp/visibility_control.h
- rmw_fastrtps: https://github.com/ros2/rmw_fastrtps/blob/master/rmw_fastrtps_cpp/include/rmw_fastrtps_cpp/visibility_control.h
RCL packages:
- rcl: https://github.com/ros2/rcl/blob/master/rcl/include/rcl/visibility_control.h
- rcl_action: https://github.com/ros2/rcl/blob/master/rcl_action/include/rcl_action/visibility_control.h
- rcl_lifecycle: https://github.com/ros2/rcl/blob/master/rcl_lifecycle/include/rcl_lifecycle/visibility_control.h
- rcl_yaml_param_parser: https://github.com/ros2/rcl/blob/master/rcl_yaml_param_parser/include/rcl_yaml_param_parser/visibility_control.h
- rclcpp: https://github.com/ros2/rclcpp/blob/master/rclcpp/include/rclcpp/visibility_control.hpp
- rclcpp_action: https://github.com/ros2/rclcpp/blob/master/rclcpp_action/include/rclcpp_action/visibility_control.hpp
- rclcpp_lifecycle: https://github.com/ros2/rclcpp/blob/master/rclcpp_lifecycle/include/rclcpp_lifecycle/visibility_control.h
- rcutils: https://github.com/ros2/rcutils/blob/master/include/rcutils/visibility_control.h