Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit

Permalink
Uses rosidl_dds again for IDL2IDL conversion.
Browse files Browse the repository at this point in the history
  • Loading branch information
hidmic committed Nov 30, 2018
1 parent 26ad16b commit e8cc809
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,14 @@
# limitations under the License.

set(_output_path "${CMAKE_CURRENT_BINARY_DIR}/rosidl_typesupport_connext_cpp/${PROJECT_NAME}")
set(_connext_idl_base_path "${CMAKE_CURRENT_BINARY_DIR}/rosidl_typesupport_connext_idl")
set(_dds_idl_base_path "${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_dds_idl")

rosidl_generate_dds_interfaces(
${rosidl_generate_interfaces_TARGET}__dds_connext_idl
IDL_TUPLES ${rosidl_generate_interfaces_IDL_TUPLES}
DEPENDENCY_PACKAGE_NAMES ${rosidl_generate_interfaces_DEPENDENCY_PACKAGE_NAMES}
OUTPUT_SUBFOLDERS "dds_connext"
)

set(_dds_idl_files "")
set(_generated_files "")
Expand All @@ -33,7 +40,7 @@ foreach(_idl_tuple ${rosidl_generate_interfaces_IDL_TUPLES})
list(APPEND _generated_external_files "${_output_path}/${_parent_folder}/dds_connext/${_idl_name}_Support.cxx")
list(APPEND _generated_files "${_output_path}/${_parent_folder}/${_header_name}__rosidl_typesupport_connext_cpp.hpp")
list(APPEND _generated_files "${_output_path}/${_parent_folder}/dds_connext/${_header_name}__type_support.cpp")
list(APPEND _dds_idl_files "${_abs_idl_file}")
list(APPEND _dds_idl_files "${_dds_idl_base_path}/${PROJECT_NAME}/${_parent_folder}/dds_connext/${_idl_name}_.idl")
endforeach()

# If not on Windows, disable some warnings with Connext's generated code
Expand Down Expand Up @@ -112,7 +119,7 @@ add_custom_command(
OUTPUT ${_generated_files} ${_generated_external_files}
COMMAND ${PYTHON_EXECUTABLE} ${rosidl_typesupport_connext_cpp_BIN}
--generator-arguments-file "${generator_arguments_file}"
--idl-base-path "${_connext_idl_base_path}"
--dds-interface-base-path "${_dds_idl_base_path}"
--idl-pp "${_idl_pp}"
DEPENDS ${target_dependencies} ${_dds_idl_files}
COMMENT "Generating C++ type support for RTI Connext (using '${_idl_pp}')"
Expand Down Expand Up @@ -203,6 +210,10 @@ add_dependencies(
${rosidl_generate_interfaces_TARGET}${_target_suffix}
${rosidl_generate_interfaces_TARGET}__cpp
)
add_dependencies(
${rosidl_generate_interfaces_TARGET}__dds_connext_idl
${rosidl_generate_interfaces_TARGET}${_target_suffix}
)

if(NOT rosidl_generate_interfaces_SKIP_INSTALL)
install(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,33 @@
import sys

from rosidl_cmake import generate_files
from .convert_to_connext_idl import convert_to_connext_idl


def generate_dds_connext_cpp(pkg_name, dds_interface_files,
dds_interface_base_path,
output_basepath, idl_pp):
converted_dds_interface_files = []
def generate_dds_connext_cpp(
pkg_name, dds_interface_files, dds_interface_base_path, deps,
output_basepath, idl_pp):

include_dirs = [dds_interface_base_path]
for dep in deps:
# Only take the first : for separation, as Windows follows with a C:\
dep_parts = dep.split(':', 1)
assert len(dep_parts) == 2, "The dependency '%s' must contain a double colon" % dep
idl_path = dep_parts[1]
idl_base_path = os.path.dirname(
os.path.dirname(os.path.dirname(os.path.normpath(idl_path))))
if idl_base_path not in include_dirs:
include_dirs.append(idl_base_path)

for idl_file in dds_interface_files:
assert os.path.exists(idl_file), 'Could not find IDL file: ' + idl_file
converted_dds_interface_files.append(
convert_to_connext_idl(idl_file, dds_interface_base_path)
)

include_dirs = [dds_interface_base_path]
for idl_file in converted_dds_interface_files:
idl_file_folder = os.path.basename(os.path.dirname(idl_file))
# get two level of parent folders for idl file
folder = os.path.dirname(idl_file)
parent_folder = os.path.dirname(folder)
output_path = os.path.join(
output_basepath, idl_file_folder, 'dds_connext'
)
output_basepath,
os.path.basename(parent_folder),
os.path.basename(folder))
try:
os.makedirs(output_path)
except FileExistsError:
Expand All @@ -58,7 +66,6 @@ def generate_dds_connext_cpp(pkg_name, dds_interface_files,
msg_name = os.path.splitext(os.path.basename(idl_file))[0]
count = 1
max_count = 5
print(' '.join(cmd))
while True:
subprocess.check_call(cmd)

Expand Down

This file was deleted.

0 comments on commit e8cc809

Please sign in to comment.