diff --git a/.bazelrc b/.bazelrc index 6dbc32bf..b32dd3bb 100644 --- a/.bazelrc +++ b/.bazelrc @@ -32,7 +32,7 @@ build:clang --linkopt="-fuse-ld=lld" # CycloneDDS is used as DDS vendor in the ROS Middleware by default in this repo. # To use FastDDS, invoke Bazel with `--config=fastdds`. -build:fastdds --@ros2_rmw_implementation//:dds_vendor=fastdds +build:fastdds --//ros2:dds_vendor=fastdds # Load any settings specific to the current user. # user.bazelrc should appear in .gitignore so that settings are not shared with diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e5e19f84..de14ec09 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -45,22 +45,11 @@ jobs: toolchain: - "gcc" - "clang" - dds_vendor: - - "cyclonedds" - - "fastdds" include: - toolchain: "gcc" - dds_vendor: "cyclonedds" config_option: "" - toolchain: "clang" - dds_vendor: "cyclonedds" config_option: "--config=clang" - - toolchain: "gcc" - dds_vendor: "fastdds" - config_option: "--config=fastdds" - - toolchain: "clang" - dds_vendor: "fastdds" - config_option: "--config=clang --config=fastdds" steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it diff --git a/repositories/rmw_fastrtps.BUILD.bazel b/repositories/rmw_fastrtps.BUILD.bazel index 63e90706..0bba22dc 100644 --- a/repositories/rmw_fastrtps.BUILD.bazel +++ b/repositories/rmw_fastrtps.BUILD.bazel @@ -27,22 +27,22 @@ ros2_cpp_library( ], ) - ros2_cpp_binary( - name = "rmw_fastrtps", + name = "rmw_fastrtps_dynamic_cpp", srcs = glob([ - "rmw_fastrtps_cpp/include/**/*.h", - "rmw_fastrtps_cpp/include/**/*.hpp", - "rmw_fastrtps_cpp/src/*.cpp", - "rmw_fastrtps_cpp/src/*.hpp", + "rmw_fastrtps_dynamic_cpp/include/**/*.h", + "rmw_fastrtps_dynamic_cpp/include/**/*.hpp", + "rmw_fastrtps_dynamic_cpp/src/*.cpp", + "rmw_fastrtps_dynamic_cpp/src/*.hpp", ]), copts = ["-fvisibility=hidden"], - includes = ["rmw_fastrtps_cpp/include"], + includes = ["rmw_fastrtps_dynamic_cpp/include"], linkopts = ["-fvisibility=hidden"], linkshared = True, visibility = ["//visibility:public"], deps = [ ":rmw_fastrtps_shared_cpp", + "@ros2_rosidl_typesupport_fastrtps//:rosidl_typesupport_fastrtps_c", "@ros2_rosidl_typesupport_fastrtps//:rosidl_typesupport_fastrtps_cpp", ], ) diff --git a/repositories/rmw_implementation.BUILD.bazel b/repositories/rmw_implementation.BUILD.bazel index 8020a923..3a97b334 100644 --- a/repositories/rmw_implementation.BUILD.bazel +++ b/repositories/rmw_implementation.BUILD.bazel @@ -1,28 +1,8 @@ """ Builds rmw_implementation. """ -load("@bazel_skylib//lib:selects.bzl", "selects") -load("@bazel_skylib//rules:common_settings.bzl", "string_flag") load("@com_github_mvukov_rules_ros2//ros2:cc_defs.bzl", "ros2_cpp_library") -string_flag( - name = "dds_vendor", - build_setting_default = "cyclonedds", - values = ["cyclonedds", "fastdds"], -) - -config_setting( - name = "use_cyclonedds", - flag_values = {":dds_vendor": "cyclonedds"}, - visibility = ["//visibility:public"], -) - -config_setting( - name = "use_fastdds", - flag_values = {":dds_vendor": "fastdds"}, - visibility = ["//visibility:public"], -) - ros2_cpp_library( name = "rmw_implementation", srcs = [ @@ -33,16 +13,16 @@ ros2_cpp_library( copts = ["-w"], data = select( { - ":use_cyclonedds": ["@ros2_rmw_cyclonedds//:rmw_cyclonedds"], - ":use_fastdds": ["@ros2_rmw_fastrtps//:rmw_fastrtps"], + "@com_github_mvukov_rules_ros2//ros2:use_cyclonedds": ["@ros2_rmw_cyclonedds//:rmw_cyclonedds"], + "@com_github_mvukov_rules_ros2//ros2:use_fastdds": ["@ros2_rmw_fastrtps//:rmw_fastrtps_dynamic_cpp"], }, no_match_error = "Unsupported dds vendor", ), includes = ["include"], local_defines = select( { - ":use_cyclonedds": ["RMW_LIBRARY_PATH=\\\"$(rootpath @ros2_rmw_cyclonedds//:rmw_cyclonedds)\\\""], - ":use_fastdds": ["RMW_LIBRARY_PATH=\\\"$(rootpath @ros2_rmw_fastrtps//:rmw_fastrtps)\\\""], + "@com_github_mvukov_rules_ros2//ros2:use_cyclonedds": ["RMW_LIBRARY_PATH=\\\"$(rootpath @ros2_rmw_cyclonedds//:rmw_cyclonedds)\\\""], + "@com_github_mvukov_rules_ros2//ros2:use_fastdds": ["RMW_LIBRARY_PATH=\\\"$(rootpath @ros2_rmw_fastrtps//:rmw_fastrtps_dynamic_cpp)\\\""], }, no_match_error = "Unsupported dds vendor", ), diff --git a/ros2/BUILD.bazel b/ros2/BUILD.bazel index 59a136f2..e5634757 100644 --- a/ros2/BUILD.bazel +++ b/ros2/BUILD.bazel @@ -1,6 +1,8 @@ """ ROS 2 common definitions. """ +load("@bazel_skylib//lib:selects.bzl", "selects") +load("@bazel_skylib//rules:common_settings.bzl", "string_flag") load("@rules_python//python:defs.bzl", "py_binary", "py_library") exports_files([ @@ -64,3 +66,22 @@ py_binary( "@ros2cli//:ros2lifecycle", ], ) + +# DDS vendor settings +string_flag( + name = "dds_vendor", + build_setting_default = "cyclonedds", + values = ["cyclonedds", "fastdds"], +) + +config_setting( + name = "use_cyclonedds", + flag_values = {":dds_vendor": "cyclonedds"}, + visibility = ["//visibility:public"], +) + +config_setting( + name = "use_fastdds", + flag_values = {":dds_vendor": "fastdds"}, + visibility = ["//visibility:public"], +) \ No newline at end of file diff --git a/ros2/interfaces.bzl b/ros2/interfaces.bzl index 09f7c265..e0b11bb7 100644 --- a/ros2/interfaces.bzl +++ b/ros2/interfaces.bzl @@ -264,11 +264,6 @@ _INTERFACE_GENERATOR_C_OUTPUT_MAPPING = [ _TYPESUPPORT_GENERATOR_C_OUTPUT_MAPPING = ["%s__type_support.c"] -_TYPESUPPORT_FASTRTPS_GENERATOR_C_OUTPUT_MAPPING = [ - "fastrtps/%s__rosidl_typesupport_fastrtps_c.h", - "fastrtps/%s__type_support_c.cpp", -] - _TYPESUPPORT_INTROSPECION_GENERATOR_C_OUTPUT_MAPPING = [ "detail/%s__rosidl_typesupport_introspection_c.h", "detail/%s__type_support.c", @@ -395,26 +390,14 @@ def _c_generator_aspect_impl(target, ctx): _TYPESUPPORT_GENERATOR_C_OUTPUT_MAPPING, visibility_control_template = ctx.file._typesupport_introspection_visibility_control_template, extra_generator_args = [ - # TODO(mvukov) There are also rosidl_typesupport_connext_c + # TODO(mvukov) There are also rosidl_typesupport_connext_c and + # rosidl_typesupport_fastrtps_c. "--typesupports=rosidl_typesupport_introspection_c", - "--typesupports=rosidl_typesupport_fastrtps_c", ], mnemonic = "Ros2IdlTypeSupportC", progress_message = "Generating C type support for %{label}", ) - typesupport_fastrtps_outputs, _ = _run_generator( - ctx, - srcs, - package_name, - adapter, - ctx.executable._typesupport_fastrtps_generator, - ctx.attr._typesupport_fastrtps_templates, - _TYPESUPPORT_FASTRTPS_GENERATOR_C_OUTPUT_MAPPING, - mnemonic = "Ros2IdlTypeSupportFastrtpsC", - progress_message = "Generating C type fastrtps support for %{label}", - ) - typesupport_introspection_outputs, _ = _run_generator( ctx, srcs, @@ -428,12 +411,7 @@ def _c_generator_aspect_impl(target, ctx): progress_message = "Generating C type introspection support for %{label}", ) - all_outputs = ( - interface_outputs - + typesupport_outputs - + typesupport_fastrtps_outputs - + typesupport_introspection_outputs - ) + all_outputs = interface_outputs + typesupport_outputs + typesupport_introspection_outputs hdrs = _get_hdrs(all_outputs) srcs = _get_srcs(all_outputs) @@ -476,14 +454,6 @@ c_generator_aspect = aspect( "_typesupport_templates": attr.label( default = Label("@ros2_rosidl_typesupport//:rosidl_typesupport_generator_c_templates"), ), - "_typesupport_fastrtps_generator": attr.label( - default = Label("@ros2_rosidl_typesupport_fastrtps//:rosidl_typesupport_fastrtps_generator_c_app"), - executable = True, - cfg = "exec", - ), - "_typesupport_fastrtps_templates": attr.label( - default = Label("@ros2_rosidl_typesupport_fastrtps//:rosidl_typesupport_fastrtps_generator_c_templates"), - ), "_typesupport_introspection_generator": attr.label( default = Label("@ros2_rosidl//:rosidl_typesupport_introspection_generator_c"), executable = True, @@ -504,7 +474,6 @@ c_generator_aspect = aspect( Label("@ros2_rosidl//:rosidl_runtime_c"), Label("@ros2_rosidl//:rosidl_typesupport_introspection_c"), Label("@ros2_rosidl_typesupport//:rosidl_typesupport_c"), - Label("@ros2_rosidl_typesupport_fastrtps//:rosidl_typesupport_fastrtps_c"), ], providers = [CcInfo], ), @@ -555,11 +524,6 @@ _TYPESUPPORT_GENERATOR_CPP_OUTPUT_MAPPING = [ "%s__type_support.cpp", ] -_TYPESUPPORT_FASTRTPS_GENERATOR_CPP_OUTPUT_MAPPING = [ - "fastrtps/%s__rosidl_typesupport_fastrtps_cpp.hpp", - "fastrtps/%s__type_support.cpp", -] - _TYPESUPPORT_INTROSPECION_GENERATOR_CPP_OUTPUT_MAPPING = [ "detail/%s__rosidl_typesupport_introspection_cpp.hpp", "detail/%s__type_support.cpp", @@ -591,26 +555,14 @@ def _cpp_generator_aspect_impl(target, ctx): ctx.attr._typesupport_templates, _TYPESUPPORT_GENERATOR_CPP_OUTPUT_MAPPING, extra_generator_args = [ - # TODO(mvukov) There are also rosidl_typesupport_connext_cpp + # TODO(mvukov) There are also rosidl_typesupport_connext_cpp and + # rosidl_typesupport_fastrtps_cpp. "--typesupports=rosidl_typesupport_introspection_cpp", - "--typesupports=rosidl_typesupport_fastrtps_cpp", ], mnemonic = "Ros2IdlTypeSupportCpp", progress_message = "Generating C++ type support for %{label}", ) - typesupport_fastrtps_outputs, _ = _run_generator( - ctx, - srcs, - package_name, - adapter, - ctx.executable._typesupport_fastrtps_generator, - ctx.attr._typesupport_fastrtps_templates, - _TYPESUPPORT_FASTRTPS_GENERATOR_CPP_OUTPUT_MAPPING, - mnemonic = "Ros2IdlTypeSupportFastrtpsCpp", - progress_message = "Generating C++ type fastrtps support for %{label}", - ) - typesupport_introspection_outputs, _ = _run_generator( ctx, srcs, @@ -623,12 +575,7 @@ def _cpp_generator_aspect_impl(target, ctx): progress_message = "Generating C++ type introspection support for %{label}", ) - all_outputs = ( - interface_outputs - + typesupport_outputs - + typesupport_fastrtps_outputs - + typesupport_introspection_outputs - ) + all_outputs = interface_outputs + typesupport_outputs + typesupport_introspection_outputs hdrs = _get_hdrs(all_outputs) srcs = _get_srcs(all_outputs) @@ -670,14 +617,6 @@ cpp_generator_aspect = aspect( "_typesupport_templates": attr.label( default = Label("@ros2_rosidl_typesupport//:rosidl_typesupport_generator_cpp_templates"), ), - "_typesupport_fastrtps_generator": attr.label( - default = Label("@ros2_rosidl_typesupport_fastrtps//:rosidl_typesupport_fastrtps_generator_cpp_app"), - executable = True, - cfg = "exec", - ), - "_typesupport_fastrtps_templates": attr.label( - default = Label("@ros2_rosidl_typesupport_fastrtps//:rosidl_typesupport_fastrtps_generator_cpp_templates"), - ), "_typesupport_introspection_generator": attr.label( default = Label("@ros2_rosidl//:rosidl_typesupport_introspection_generator_cpp"), executable = True, @@ -695,8 +634,6 @@ cpp_generator_aspect = aspect( Label("@ros2_rosidl//:rosidl_typesupport_introspection_c"), Label("@ros2_rosidl//:rosidl_typesupport_introspection_cpp"), Label("@ros2_rosidl_typesupport//:rosidl_typesupport_cpp"), - Label("@ros2_rosidl_typesupport_fastrtps//:rosidl_typesupport_fastrtps_c"), - Label("@ros2_rosidl_typesupport_fastrtps//:rosidl_typesupport_fastrtps_cpp"), ], providers = [CcInfo], ),