diff --git a/rmw_dds_common/rmw_dds_common/CMakeLists.txt b/rmw_dds_common/rmw_dds_common/CMakeLists.txt
index 2037bbf7..6d9d59a5 100644
--- a/rmw_dds_common/rmw_dds_common/CMakeLists.txt
+++ b/rmw_dds_common/rmw_dds_common/CMakeLists.txt
@@ -21,7 +21,7 @@ ament_export_dependencies(ament_cmake_core)
ament_export_dependencies(rcpputils)
ament_export_dependencies(rcutils)
ament_export_dependencies(rmw)
-ament_export_dependencies(rosidl_default_runtime)
+ament_export_dependencies(rmw_dds_common_typesupports)
rosidl_generate_interfaces(
${PROJECT_NAME}
@@ -39,7 +39,7 @@ ament_target_dependencies(${PROJECT_NAME}_library
"rcpputils"
"rcutils"
"rmw"
- "rosidl_runtime_cpp")
+ "rmw_dds_common_typesupports")
add_dependencies(${PROJECT_NAME}_library
${PROJECT_NAME})
target_include_directories(${PROJECT_NAME}_library
diff --git a/rmw_dds_common/rmw_dds_common/package.xml b/rmw_dds_common/rmw_dds_common/package.xml
index ab109030..b840d5fa 100644
--- a/rmw_dds_common/rmw_dds_common/package.xml
+++ b/rmw_dds_common/rmw_dds_common/package.xml
@@ -16,7 +16,7 @@
rcutils
rcpputils
rmw
- rosidl_runtime_cpp
+ rmw_dds_common_typesupports
ament_cmake_gmock
ament_lint_auto
diff --git a/rmw_dds_common/rmw_dds_common_typesupports/CMakeLists.txt b/rmw_dds_common/rmw_dds_common_typesupports/CMakeLists.txt
new file mode 100644
index 00000000..3e9c026d
--- /dev/null
+++ b/rmw_dds_common/rmw_dds_common_typesupports/CMakeLists.txt
@@ -0,0 +1,45 @@
+cmake_minimum_required(VERSION 3.5)
+project(rmw_dds_common_typesupports)
+
+# Default to C99
+if(NOT CMAKE_C_STANDARD)
+ set(CMAKE_C_STANDARD 99)
+endif()
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# find dependencies
+find_package(ament_cmake REQUIRED)
+
+# Load type support packages to make sure that they are installed
+find_package(rosidl_typesupport_fastrtps_c REQUIRED)
+find_package(rosidl_typesupport_fastrtps_cpp REQUIRED)
+find_package(rosidl_typesupport_introspection_c REQUIRED)
+find_package(rosidl_typesupport_introspection_cpp REQUIRED)
+
+# This is an hack to have the `rosidl_generate_interfaces()` function consider
+# all the type supports required by `rmw_connextdds` even though that RMW
+# implementation has not yet been registered.
+ament_index_register_resource(rmw_typesupport CONTENT
+ "rosidl_typesupport_c;rosidl_typesupport_fastrtps_c;rosidl_typesupport_introspection_c;rosidl_typesupport_cpp;rosidl_typesupport_fastrtps_cpp;rosidl_typesupport_introspection_cpp")
+
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ # the following line skips the linter which checks for copyrights
+ # uncomment the line when a copyright and license is not present in all source files
+ #set(ament_cmake_copyright_FOUND TRUE)
+ # the following line skips cpplint (only works in a git repo)
+ # uncomment the line when this package is not in a git repo
+ #set(ament_cmake_cpplint_FOUND TRUE)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+ament_package()
diff --git a/rmw_dds_common/rmw_dds_common_typesupports/package.xml b/rmw_dds_common/rmw_dds_common_typesupports/package.xml
new file mode 100644
index 00000000..8ce7a42a
--- /dev/null
+++ b/rmw_dds_common/rmw_dds_common_typesupports/package.xml
@@ -0,0 +1,23 @@
+
+
+
+ rmw_dds_common_typesupports
+ 0.1.0
+ A meta-package to hack type support generation for backported rmw_dds_common
+ Andrea Sorbini
+ Apache 2.0
+
+ ament_cmake
+
+ rosidl_typesupport_fastrtps_c
+ rosidl_typesupport_fastrtps_cpp
+ rosidl_typesupport_introspection_c
+ rosidl_typesupport_introspection_cpp
+
+ ament_lint_auto
+ ament_lint_common
+
+
+ ament_cmake
+
+