diff --git a/.github/workflows/cleanup-temp-releases.yml b/.github/workflows/cleanup-temp-releases.yml new file mode 100644 index 0000000..578d555 --- /dev/null +++ b/.github/workflows/cleanup-temp-releases.yml @@ -0,0 +1,93 @@ +name: Cleanup Temporary Branch Releases when Pull Request is Merged + +on: + pull_request: + types: + - closed + branches: + - main + +permissions: + contents: write + pull-requests: read + +jobs: + cleanup-temp-releases: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + steps: + - name: Normalize merged branch name + run: | + BRANCH_NAME="${{ github.event.pull_request.head.ref }}" + + SAFE_BRANCH="${BRANCH_NAME//\//-}" + SAFE_BRANCH="${SAFE_BRANCH//_/-}" + SAFE_BRANCH="$(echo "$SAFE_BRANCH" | tr '[:upper:]' '[:lower:]')" + + echo "BRANCH_NAME=$BRANCH_NAME" >> "$GITHUB_ENV" + echo "SAFE_BRANCH=$SAFE_BRANCH" >> "$GITHUB_ENV" + + echo "Merged branch: $BRANCH_NAME" + echo "Safe branch: $SAFE_BRANCH" + + - name: Delete all temporary releases and tags for merged branch + run: | + set -euo pipefail + + PREFIX="temp-${SAFE_BRANCH}-v" + + echo "Repository: ${GITHUB_REPOSITORY}" + echo "Looking for temp releases with prefix: ${PREFIX}" + + gh api \ + --paginate \ + "repos/${GITHUB_REPOSITORY}/releases" \ + --jq '.[] | [.id, .tag_name] | @tsv' \ + > releases.tsv + + echo "All release tags currently visible:" + cut -f2 releases.tsv || true + + MATCHES="$( + awk -v prefix="$PREFIX" ' + BEGIN { prefix_len = length(prefix) } + index($2, prefix) == 1 { + suffix = substr($2, prefix_len + 1) + if (suffix ~ /^[0-9]+$/) { + print $1 "\t" $2 + } + } + ' releases.tsv + )" + + if [ -z "$MATCHES" ]; then + echo "No matching temporary releases found for branch: ${BRANCH_NAME}" + echo "Expected tags like: ${PREFIX}1, ${PREFIX}2, ${PREFIX}3" + exit 0 + fi + + echo "Matching releases to delete:" + echo "$MATCHES" + + echo "$MATCHES" | while IFS="$(printf '\t')" read -r RELEASE_ID TAG; do + if [ -z "$RELEASE_ID" ] || [ -z "$TAG" ]; then + continue + fi + + echo "Deleting release id=${RELEASE_ID}, tag=${TAG}" + + gh api \ + --method DELETE \ + "repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}" + + echo "Deleting git tag ref: ${TAG}" + + gh api \ + --method DELETE \ + "repos/${GITHUB_REPOSITORY}/git/refs/tags/${TAG}" \ + || echo "Tag ${TAG} was already deleted or did not exist" + done \ No newline at end of file diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml new file mode 100644 index 0000000..a2fbc32 --- /dev/null +++ b/.github/workflows/create_release.yml @@ -0,0 +1,154 @@ +name: Create Release + +on: + push: + branches: + - "**" + +jobs: + build_test_package: + runs-on: ubuntu-latest + container: + image: ghcr.io/iit-dlslab/dls2-dev:latest + credentials: + username: ${{ secrets.GHCR_USERNAME || github.actor }} + password: ${{ secrets.CICD_PAT || github.token }} + steps: + - uses: actions/checkout@v4 + with: + set-safe-directory: true + submodules: recursive + token: ${{ secrets.CICD_PAT || github.token }} + - name: Configure git credentials for cmake FetchContent + shell: bash + env: + CICD_PAT: ${{ secrets.CICD_PAT }} + run: | + set -euo pipefail + TOKEN="${CICD_PAT:-$GITHUB_TOKEN}" + git config --global url."https://x-access-token:${TOKEN}@github.com/".insteadOf "https://github.com/" + - name: Build package + shell: bash + run: | + set -euo pipefail + + mkdir build && cd build + cmake .. + make -j$(nproc) package + + echo "Generated packages:" + ls -lh *.deb + - name: Upload .deb artifact + uses: actions/upload-artifact@v4 + with: + name: dls-messages-deb + path: build/dls-messages-dev.deb + if-no-files-found: error + + release-on-push: + runs-on: ubuntu-latest + needs: build_test_package + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + set-safe-directory: true + + - name: Normalize branch name + run: | + SAFE_BRANCH="${GITHUB_REF_NAME//\//-}" + SAFE_BRANCH="${SAFE_BRANCH//_/-}" + SAFE_BRANCH="$(echo "$SAFE_BRANCH" | tr '[:upper:]' '[:lower:]')" + + echo "SAFE_BRANCH=$SAFE_BRANCH" >> "$GITHUB_ENV" + + - name: Download dev .deb artifact + uses: actions/download-artifact@v4 + with: + name: dls-messages-deb + path: debs + + - name: Download runtime .deb artifact + uses: actions/download-artifact@v4 + with: + name: dls-messages-deb + path: debs + + - name: Compute release tag + run: | + git fetch --tags --force + + if [ "$GITHUB_REF_NAME" = "main" ]; then + LAST_VERSION="$( + git tag --list 'v[0-9]*.[0-9]*.[0-9]*' \ + | sed 's/^v//' \ + | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' \ + | sort -V \ + | tail -n 1 + )" + + if [ -z "$LAST_VERSION" ]; then + NEXT_VERSION="0.1.0" + else + MAJOR="$(echo "$LAST_VERSION" | cut -d. -f1)" + MINOR="$(echo "$LAST_VERSION" | cut -d. -f2)" + PATCH="$(echo "$LAST_VERSION" | cut -d. -f3)" + + MINOR=$((MINOR + 1)) + PATCH=0 + + NEXT_VERSION="${MAJOR}.${MINOR}.${PATCH}" + fi + + RELEASE_TAG="v${NEXT_VERSION}" + else + PREFIX="temp-${SAFE_BRANCH}-v" + + LAST_NUMBER="$( + git tag --list "${PREFIX}*" \ + | sed "s/^${PREFIX}//" \ + | grep -E '^[0-9]+$' \ + | sort -n \ + | tail -n 1 + )" + + if [ -z "$LAST_NUMBER" ]; then + NEXT_NUMBER=1 + else + NEXT_NUMBER=$((LAST_NUMBER + 1)) + fi + + RELEASE_TAG="${PREFIX}${NEXT_NUMBER}" + fi + + echo "RELEASE_TAG=$RELEASE_TAG" >> "$GITHUB_ENV" + echo "Computed release tag: $RELEASE_TAG" + + - name: Create main GitHub release and upload assets + if: github.ref_name == 'main' + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ env.RELEASE_TAG }} + name: ${{ env.RELEASE_TAG }} + target_commitish: ${{ github.sha }} + files: debs/*.deb + make_latest: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create branch GitHub release and upload assets + if: github.ref_name != 'main' + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ env.RELEASE_TAG }} + name: ${{ env.RELEASE_TAG }} + target_commitish: ${{ github.sha }} + files: debs/*.deb + make_latest: false + prerelease: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index d4fb281..775d1bf 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ # debug information files *.dwo + +# build directory +build diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..8de861b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,158 @@ +cmake_minimum_required(VERSION 3.15) + +project(dls_messages) +cmake_policy(SET CMP0048 NEW) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +add_compile_options("-std=c++2a") + + +# ================================== Messages ================================= +# create a dls_message library. Then link to this library all the libraries generated by idls_messages. This way we can link to dls_message and get all the messages. +include(generate_msg_library) +set (LIBRARY_NAME dls_messages) + +add_library(${LIBRARY_NAME} SHARED) + +# iterate over all the idl files that are in the idls directory. Extract the name of the idl and the subdirectory where the idl is located. +file(GLOB_RECURSE idl_files CONFIGURE_DEPENDS + "${CMAKE_CURRENT_SOURCE_DIR}/idls/*.idl" +) + +# generate msg files using fastddsgen +foreach(idl_file IN LISTS idl_files) + fastddsgen_trigger(${idl_file}) +endforeach() + +# Create a custom target that depends on all the fastddsgen targets, so that we can wait for all the generated files to be created before building the cpp and python libraries. +add_custom_target(dls_messages_fastddsgen_all + DEPENDS ${DLS_MESSAGES_FASTDDSGEN_TARGETS} +) +add_dependencies(${LIBRARY_NAME} + dls_messages_fastddsgen_all +) + +# add cpp generated files to the LIBRARY_NAME library and create python bindings for the generated cpp files +foreach(idl_file IN LISTS idl_files) + generate_msg_library(${idl_file} ${LIBRARY_NAME}) + get_property(CPP_LIBRARY_NAME GLOBAL PROPERTY CPP_LIBRARY_NAME) +endforeach() + +target_include_directories(${LIBRARY_NAME} + PUBLIC + $ + $ + $ + $ +) +target_link_libraries(${LIBRARY_NAME} + PUBLIC + fastcdr + fastdds +) + +# if dls_install is not found, download dls2 and take dls_install from the cmake folder of dls2 +if(NOT COMMAND dls_install) + message(STATUS "dls_install not found — fetching dls2 cmake modules from GitHub...") + include(FetchContent) + FetchContent_Declare( + dls2_cmake + GIT_REPOSITORY https://github.com/iit-DLSLab/dls2.git + GIT_TAG main + GIT_SHALLOW TRUE + GIT_SUBMODULES "" # we only need the cmake/ folder — skip all submodules + ) + FetchContent_GetProperties(dls2_cmake) + if(NOT dls2_cmake_POPULATED) + message(STATUS "Cloning dls2 (shallow) from https://github.com/iit-DLSLab/dls2.git ...") + FetchContent_Populate(dls2_cmake) + message(STATUS "dls2 cmake modules fetched to: ${dls2_cmake_SOURCE_DIR}/cmake") + endif() + list(APPEND CMAKE_MODULE_PATH "${dls2_cmake_SOURCE_DIR}/cmake") + include(dls_options) + include(dls_deploy) + message(STATUS "dls_install loaded from fetched dls2.") +endif() + +# dls_install(${LIBRARY_NAME}) + +include(CMakePackageConfigHelpers) +configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/dls_messagesConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/dls_messagesConfig.cmake + INSTALL_DESTINATION /usr/lib/cmake/dls_messages + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/dls_messagesConfig.cmake + DESTINATION /usr/lib/cmake/dls_messages + COMPONENT dls_messages_dev +) + +install( + DIRECTORY + ${CMAKE_CURRENT_LIST_DIR}/cmake/ + DESTINATION + /usr/include/${LIBRARY_NAME}/cmake + COMPONENT + dls_messages_dev +) + +install(TARGETS ${LIBRARY_NAME} + EXPORT dls_messagesTargets + LIBRARY + DESTINATION /usr/lib + COMPONENT dls_messages_dev + ARCHIVE + DESTINATION /usr/lib + COMPONENT dls_messages_dev + RUNTIME + DESTINATION ${DLS_INSTALL_RUNTIME_DIR} + COMPONENT dls_messages_dev +) +install( + EXPORT dls_messagesTargets + FILE dls_messagesTargets.cmake + NAMESPACE dls_messages:: + DESTINATION /usr/lib/cmake/dls_messages + COMPONENT dls_messages_dev +) +install( + DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}/include/${LIBRARY_NAME} + DESTINATION + /usr/include/ + COMPONENT + dls_messages_dev +) + +# set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +# set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +# set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +# set(CPACK_DEBIAN_PACKAGE_VERSION ${PROJECT_VERSION}) +set(CPACK_PACKAGE_VENDOR "dlslab") +set(CPACK_PACKAGE_CONTACT "dlslab") +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "dlslab") +set(CPACK_VERBATIM_VARIABLES ON) +set(CPACK_GENERATOR "DEB") +set(CPACK_DEB_COMPONENT_INSTALL ON) +set(CPACK_PACKAGE_NAME "dls_messages_dev") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "dls_messages_dev") +set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + +set(CPACK_DEBIAN_DLS_MESSAGES_PACKAGE_NAME "dls-messages" CACHE INTERNAL "") +set(CPACK_DEBIAN_DLS_MESSAGES_FILE_NAME "dls-messages.deb" CACHE INTERNAL "") +set(CPACK_DEBIAN_DLS_MESSAGES_PACKAGE_DEPENDS "" CACHE INTERNAL "") +set(CPACK_DEBIAN_DLS_MESSAGES_PACKAGE_SHLIBDEPS ON) + +set(CPACK_DEBIAN_DLS_MESSAGES_DEV_PACKAGE_NAME "dls-messages-dev" CACHE INTERNAL "") +set(CPACK_DEBIAN_DLS_MESSAGES_DEV_FILE_NAME "dls-messages-dev.deb" CACHE INTERNAL "") +set(CPACK_DEBIAN_DLS_MESSAGES_DEV_PACKAGE_DEPENDS "" CACHE INTERNAL "") +set(CPACK_DEBIAN_DLS_MESSAGES_DEV_PACKAGE_SHLIBDEPS ON) + +get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS) +list(REMOVE_ITEM CPACK_COMPONENTS_ALL "Unspecified") + +include(CPack) \ No newline at end of file diff --git a/README.md b/README.md index 688efc0..80f5349 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,15 @@ +# Messages +This package defines and build off-the-shelf messages for DLS2 and their related wrappers. It also provides you the cmake function that can be used by the user to generate custom messages and wrappers. + +# Message generation +Each message is defined by an idl file inside the [idls](idls) folder. See [here](https://fast-dds.docs.eprosima.com/en/latest/fastddsgen/dataTypes/dataTypes.html) for details about how to define a message in IDL format. + +To generate messages for fastdds, the [fastddgen](https://fast-dds.docs.eprosima.com/en/latest/fastddsgen/introduction/introduction.html) tool is used (check the cmake function _dls_add_message_ inside [dls_message.cmake](cmake/dls_message.cmake) file). + # dls_std_msgs This repository contains the standard messages(.idl files) used by DLS2. -### ROS2 compatibility +# ROS2 compatibility For ROS2 communication, message definitions should comply with the following conventions: - each message uses a CamelCase name, i.e. `MyMessage`, **not** `my_message` diff --git a/cmake/dls_messagesConfig.cmake.in b/cmake/dls_messagesConfig.cmake.in new file mode 100644 index 0000000..a8c098c --- /dev/null +++ b/cmake/dls_messagesConfig.cmake.in @@ -0,0 +1,12 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) +find_dependency(fastcdr 2) +find_dependency(fastdds 3) + +include("${CMAKE_CURRENT_LIST_DIR}/dls_messagesTargets.cmake") + +# Backward-compatibility alias so consumers can link with plain 'dls_messages' +if(NOT TARGET dls_messages) + add_library(dls_messages ALIAS dls_messages::dls_messages) +endif() diff --git a/cmake/generate_msg_library.cmake b/cmake/generate_msg_library.cmake new file mode 100644 index 0000000..e077c7b --- /dev/null +++ b/cmake/generate_msg_library.cmake @@ -0,0 +1,252 @@ +################################################################################ +# INITIALIZATION FOR PYTHON BINDINGS +# find swig for python bindings +find_package(SWIG) +if (NOT SWIG_FOUND) + # Trick to find swig4.1 in Ubuntu noble. + find_program(SWIG_EXECUTABLE NAMES swig4.1 swig) + find_package(SWIG REQUIRED) +endif() +include(${SWIG_USE_FILE}) +set(CMAKE_SWIG_FLAGS "") + +find_package(Python3 COMPONENTS Interpreter Development REQUIRED) +################################################################################ + +################################################################################# +function(set_msg_build_names idl_file_name subdirectory) + # set message directory for generated files + set(MESSAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include/dls_messages/dds${subdirectory}") + + # define files produced by fastddsgen + set(generated_cpp_source + "${MESSAGE_DIR}/${idl_file_name}PubSubTypes.cxx" + "${MESSAGE_DIR}/${idl_file_name}TypeObjectSupport.cxx" + ) + set(generated_cpp_headers + "${MESSAGE_DIR}/${idl_file_name}.hpp" + "${MESSAGE_DIR}/${idl_file_name}PubSubTypes.hpp" + "${MESSAGE_DIR}/${idl_file_name}TypeObjectSupport.hpp" + "${MESSAGE_DIR}/${idl_file_name}CdrAux.hpp" + "${MESSAGE_DIR}/${idl_file_name}CdrAux.ipp" + ) + set(generated_py_source + "${MESSAGE_DIR}/${idl_file_name}.i" + "${MESSAGE_DIR}/${idl_file_name}PubSubTypes.i" + ) + # set library name for the generated cpp files + string(REPLACE "/" "_" subdirectory_name "${subdirectory}") + string(REGEX REPLACE "^_" "" subdirectory_name "${subdirectory_name}") + set(subdirectory_name ${subdirectory_name}) + + set(CPP_LIBRARY_NAME "${subdirectory_name}_${idl_file_name}_msg_cpp") + + # set global properties for the generated files and library name + set_property(GLOBAL PROPERTY MESSAGE_DIR "${MESSAGE_DIR}") + set_property(GLOBAL PROPERTY generated_cpp_source "${generated_cpp_source}") + set_property(GLOBAL PROPERTY generated_cpp_headers "${generated_cpp_headers}") + set_property(GLOBAL PROPERTY generated_py_source "${generated_py_source}") + set_property(GLOBAL PROPERTY subdirectory_name "${subdirectory_name}") + set_property(GLOBAL PROPERTY CPP_LIBRARY_NAME "${CPP_LIBRARY_NAME}") + +endfunction() +################################################################################# + +################################################################################# +function(extract_file_and_subdirectory_names idl_file) + get_filename_component(idl_file_name "${idl_file}" NAME_WE) + get_filename_component(idl_directory "${idl_file}" DIRECTORY) + + file(RELATIVE_PATH subdirectory + "${CMAKE_CURRENT_SOURCE_DIR}/idls" + "${idl_directory}" + ) + if(subdirectory STREQUAL ".") + set(subdirectory "") + else() + set(subdirectory "/${subdirectory}") + endif() + # set global properties for the extracted names + set_property(GLOBAL PROPERTY idl_file_name "${idl_file_name}") + set_property(GLOBAL PROPERTY subdirectory "${subdirectory}") +endfunction() +################################################################################# + +function(fastddsgen_trigger idl_file_path) + extract_file_and_subdirectory_names(${idl_file_path}) + + get_property(idl_file_name GLOBAL PROPERTY idl_file_name) + get_property(subdirectory GLOBAL PROPERTY subdirectory) + set_msg_build_names("${idl_file_name}" "${subdirectory}") + + ############################################################ + # RUN FASTDDSGEN TO GENERATE CPP AND PYTHON FILES + get_property(MESSAGE_DIR GLOBAL PROPERTY MESSAGE_DIR) + set(fastddsgen_command + fastddsgen + -typeros2 + -replace + -cs + -python + -d + ${MESSAGE_DIR} + -I ${CMAKE_CURRENT_SOURCE_DIR}/idls + -I ${CMAKE_CURRENT_SOURCE_DIR}/idls/ros2_interface + ${idl_file_path} + ) + + get_property(generated_cpp_source GLOBAL PROPERTY generated_cpp_source) + get_property(generated_cpp_headers GLOBAL PROPERTY generated_cpp_headers) + get_property(generated_py_source GLOBAL PROPERTY generated_py_source) + add_custom_command( + OUTPUT "${MESSAGE_DIR}/${idl_file_name}.stamp" + BYPRODUCTS + ${generated_cpp_source} + ${generated_cpp_headers} + ${generated_py_source} + COMMAND + ${CMAKE_COMMAND} -E make_directory ${MESSAGE_DIR} + COMMAND + ${fastddsgen_command} + COMMAND + ${CMAKE_COMMAND} -E touch "${MESSAGE_DIR}/${idl_file_name}.stamp" + COMMENT + "Generating message files for ${idl_file_name}.idl" + DEPENDS + ${idl_file_path} + ) + # ############################################################ + + # ############################################################ + # Create a custom target to ensure that the generated files are created before building the cpp/python libraries + get_property(CPP_LIBRARY_NAME GLOBAL PROPERTY CPP_LIBRARY_NAME) + add_custom_target(${CPP_LIBRARY_NAME}_target ALL + DEPENDS + "${MESSAGE_DIR}/${idl_file_name}.stamp" + ) + # Chaining ${CPP_LIBRARY_NAME}_target generator targets sequentially, so fastddsgen -replace cannot run concurrently for different IDLs. + get_property(previous_fastddsgen_target GLOBAL PROPERTY DLS_MESSAGES_PREVIOUS_FASTDDSGEN_TARGET) + if(previous_fastddsgen_target) + add_dependencies(${CPP_LIBRARY_NAME}_target ${previous_fastddsgen_target}) + endif() + set_property(GLOBAL PROPERTY DLS_MESSAGES_PREVIOUS_FASTDDSGEN_TARGET ${CPP_LIBRARY_NAME}_target) + # Define a variable to hold all the fastddsgen targets, to wait their compilation before cpp and python libraries are built. + set(DLS_MESSAGES_FASTDDSGEN_TARGETS + ${DLS_MESSAGES_FASTDDSGEN_TARGETS} + ${CPP_LIBRARY_NAME}_target + PARENT_SCOPE + ) + +endfunction() + +function(generate_msg_library idl_file_path library_name) + extract_file_and_subdirectory_names(${idl_file_path}) + + get_property(idl_file_name GLOBAL PROPERTY idl_file_name) + get_property(subdirectory GLOBAL PROPERTY subdirectory) + set_msg_build_names("${idl_file_name}" "${subdirectory}") + + # ############################################################ + # add CPP source files to the library and include directories for the library + get_property(CPP_LIBRARY_NAME GLOBAL PROPERTY CPP_LIBRARY_NAME) + get_property(generated_cpp_source GLOBAL PROPERTY generated_cpp_source) + get_property(generated_cpp_headers GLOBAL PROPERTY generated_cpp_headers) + + target_sources(${library_name} + PRIVATE + ${generated_cpp_source} + ) + # add dependency to ensure that the generated files are created before building the cpp library + + get_property(MESSAGE_DIR GLOBAL PROPERTY MESSAGE_DIR) + target_include_directories(${library_name} + PUBLIC + $ + $ + $ + ) + # ############################################################ + + # ############################################################ + # add PYTHON bindings for the generated source files + # from FAST-DDS-python example + get_property(subdirectory_name GLOBAL PROPERTY subdirectory_name) + # if subdiredtory_name is empty, set ${idl_file_name}Wrapper instaead of _${subdirectory_name}_${idl_file_name}Wrapper + if(subdirectory_name STREQUAL "") + set(${idl_file_name}_MODULE "${idl_file_name}Wrapper") + else() + set(${idl_file_name}_MODULE "${subdirectory_name}_${idl_file_name}Wrapper") + endif() + + set(${idl_file_name}_MODULE_FILES + ${MESSAGE_DIR}/${idl_file_name}.i + ) + # -w302: Warning 302: Identifier 'double_vector' redefined (ignored) (Renamed from 'vector< double >'), + # -w389: Warning 389: /usr/local/include/fastdds/dds/core/LoanableTypedCollection.hpp:68: Warning 389: operator[] ignored (consider using %extend) + # -w509: Warning 509: Warning 509: Overloaded method dls2_interface::msg::ArmState::ArmState(dls2_interface::msg::ArmState &&) effectively ignored, + SET_SOURCE_FILES_PROPERTIES( + ${${idl_file_name}_MODULE_FILES} + PROPERTIES CPLUSPLUS ON OUTPUT_DIR "${MESSAGE_DIR}" SWIG_FLAGS "-w302,389,509" + USE_TARGET_INCLUDE_DIRECTORIES TRUE + ) + + SWIG_ADD_LIBRARY(${${idl_file_name}_MODULE} + TYPE SHARED + LANGUAGE python + SOURCES ${${idl_file_name}_MODULE_FILES}) + + # add dependency to ensure that the generated files are created before building the python library + add_dependencies(${${idl_file_name}_MODULE} + dls_messages_fastddsgen_all + ) + # ${${idl_file_name}_MODULE}_swig_compilation target can be created automatically by CMake + if(TARGET ${${idl_file_name}_MODULE}_swig_compilation) + add_dependencies(${${idl_file_name}_MODULE}_swig_compilation + dls_messages_fastddsgen_all + ) + endif() + + set_property(TARGET ${${idl_file_name}_MODULE} PROPERTY CXX_STANDARD 11) + if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 8) + set_property(TARGET ${${idl_file_name}_MODULE} PROPERTY SWIG_COMPILE_DEFINITIONS SWIGWORDSIZE64) + endif() + target_include_directories(${${idl_file_name}_MODULE} + PRIVATE + /usr/local/include + ) + + target_link_libraries(${${idl_file_name}_MODULE} + Python3::Module + fastdds + ${library_name} + ) + # -Wno-missing-field-initializers: warning: missing initializer for member '_typeobject::tp_watched' + # -Wno-unused-parameter: warning: unused parameter 'self' [-Wunused-parameter] 5496 | SWIGINTERN PyObject *_wrap_delete_SwigPyIterator(PyObject *self, PyObject *args) + # -Wno-delete-non-virtual-dtor: warning: deleting object of abstract class type 'eprosima::fastdds::dds::LoanableTypedCollection >' which has non-virtual destructor will cause undefined behavior [-Wdelete-non-virtual-dtor] 10017 | delete arg1; + target_compile_options(${${idl_file_name}_MODULE} PRIVATE + -Wno-missing-field-initializers + -Wno-unused-parameter + -Wno-delete-non-virtual-dtor + ) + ############################################################ + + ############################################################ + # Install python bindings + # Find the installation path + execute_process( + COMMAND + ${Python3_EXECUTABLE} -c "import sysconfig; schemes = sysconfig.get_scheme_names(); scheme = 'deb_system' if 'deb_system' in schemes else sysconfig.get_default_scheme(); print(sysconfig.get_path('purelib', scheme=scheme))" + OUTPUT_VARIABLE + _ABS_PYTHON_MODULE_PATH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + get_filename_component(_ABS_PYTHON_MODULE_PATH ${_ABS_PYTHON_MODULE_PATH} ABSOLUTE) + file (RELATIVE_PATH _REL_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX} ${_ABS_PYTHON_MODULE_PATH}) + SET (PYTHON_MODULE_PATH + ${_REL_PYTHON_MODULE_PATH}/${PROJECT_NAME} + ) + install(TARGETS ${${idl_file_name}_MODULE} DESTINATION ${PYTHON_MODULE_PATH} COMPONENT dls_messages_dev) + get_property(support_files TARGET ${${idl_file_name}_MODULE} PROPERTY SWIG_SUPPORT_FILES) + install(FILES ${support_files} DESTINATION ${PYTHON_MODULE_PATH} COMPONENT dls_messages_dev) +endfunction() \ No newline at end of file diff --git a/ArmState.idl b/idls/ArmState.idl similarity index 100% rename from ArmState.idl rename to idls/ArmState.idl diff --git a/ArmTrajectoryGenerator.idl b/idls/ArmTrajectoryGenerator.idl similarity index 100% rename from ArmTrajectoryGenerator.idl rename to idls/ArmTrajectoryGenerator.idl diff --git a/Attitude.idl b/idls/Attitude.idl similarity index 100% rename from Attitude.idl rename to idls/Attitude.idl diff --git a/BaseReference.idl b/idls/BaseReference.idl similarity index 100% rename from BaseReference.idl rename to idls/BaseReference.idl diff --git a/BaseState.idl b/idls/BaseState.idl similarity index 100% rename from BaseState.idl rename to idls/BaseState.idl diff --git a/BaseStateLight.idl b/idls/BaseStateLight.idl similarity index 100% rename from BaseStateLight.idl rename to idls/BaseStateLight.idl diff --git a/BatteryStatus.idl b/idls/BatteryStatus.idl similarity index 100% rename from BatteryStatus.idl rename to idls/BatteryStatus.idl diff --git a/BatteryStatusLight.idl b/idls/BatteryStatusLight.idl similarity index 100% rename from BatteryStatusLight.idl rename to idls/BatteryStatusLight.idl diff --git a/BlindState.idl b/idls/BlindState.idl similarity index 100% rename from BlindState.idl rename to idls/BlindState.idl diff --git a/BlindStateLight.idl b/idls/BlindStateLight.idl similarity index 100% rename from BlindStateLight.idl rename to idls/BlindStateLight.idl diff --git a/Bool.idl b/idls/Bool.idl similarity index 100% rename from Bool.idl rename to idls/Bool.idl diff --git a/ButtonEvent.idl b/idls/ButtonEvent.idl similarity index 100% rename from ButtonEvent.idl rename to idls/ButtonEvent.idl diff --git a/CSBasicCommand.idl b/idls/CSBasicCommand.idl similarity index 100% rename from CSBasicCommand.idl rename to idls/CSBasicCommand.idl diff --git a/CSEmergency.idl b/idls/CSEmergency.idl similarity index 100% rename from CSEmergency.idl rename to idls/CSEmergency.idl diff --git a/CommandCall.idl b/idls/CommandCall.idl similarity index 100% rename from CommandCall.idl rename to idls/CommandCall.idl diff --git a/ControlSignal.idl b/idls/ControlSignal.idl similarity index 100% rename from ControlSignal.idl rename to idls/ControlSignal.idl diff --git a/ControllerCommand.idl b/idls/ControllerCommand.idl similarity index 100% rename from ControllerCommand.idl rename to idls/ControllerCommand.idl diff --git a/DesiredArmTorques.idl b/idls/DesiredArmTorques.idl similarity index 100% rename from DesiredArmTorques.idl rename to idls/DesiredArmTorques.idl diff --git a/DesiredTorques.idl b/idls/DesiredTorques.idl similarity index 100% rename from DesiredTorques.idl rename to idls/DesiredTorques.idl diff --git a/DlsEvents.idl b/idls/DlsEvents.idl similarity index 100% rename from DlsEvents.idl rename to idls/DlsEvents.idl diff --git a/DlsHeader.idl b/idls/DlsHeader.idl similarity index 100% rename from DlsHeader.idl rename to idls/DlsHeader.idl diff --git a/DlsRobotStateLight.idl b/idls/DlsRobotStateLight.idl similarity index 100% rename from DlsRobotStateLight.idl rename to idls/DlsRobotStateLight.idl diff --git a/DlsStatus.idl b/idls/DlsStatus.idl similarity index 100% rename from DlsStatus.idl rename to idls/DlsStatus.idl diff --git a/Double.idl b/idls/Double.idl similarity index 100% rename from Double.idl rename to idls/Double.idl diff --git a/EventLog.idl b/idls/EventLog.idl similarity index 100% rename from EventLog.idl rename to idls/EventLog.idl diff --git a/FeetReference.idl b/idls/FeetReference.idl similarity index 100% rename from FeetReference.idl rename to idls/FeetReference.idl diff --git a/FrictionConeList.idl b/idls/FrictionConeList.idl similarity index 100% rename from FrictionConeList.idl rename to idls/FrictionConeList.idl diff --git a/Imu.idl b/idls/Imu.idl similarity index 100% rename from Imu.idl rename to idls/Imu.idl diff --git a/InputTopicInfo.idl b/idls/InputTopicInfo.idl similarity index 100% rename from InputTopicInfo.idl rename to idls/InputTopicInfo.idl diff --git a/JointStates.idl b/idls/JointStates.idl similarity index 100% rename from JointStates.idl rename to idls/JointStates.idl diff --git a/JointStatesLight.idl b/idls/JointStatesLight.idl similarity index 100% rename from JointStatesLight.idl rename to idls/JointStatesLight.idl diff --git a/LegsPose.idl b/idls/LegsPose.idl similarity index 100% rename from LegsPose.idl rename to idls/LegsPose.idl diff --git a/NavigationReference.idl b/idls/NavigationReference.idl similarity index 100% rename from NavigationReference.idl rename to idls/NavigationReference.idl diff --git a/ParamServer.idl b/idls/ParamServer.idl similarity index 100% rename from ParamServer.idl rename to idls/ParamServer.idl diff --git a/PegasusControlDebug.idl b/idls/PegasusControlDebug.idl similarity index 100% rename from PegasusControlDebug.idl rename to idls/PegasusControlDebug.idl diff --git a/Pose.idl b/idls/Pose.idl similarity index 100% rename from Pose.idl rename to idls/Pose.idl diff --git a/Position2D.idl b/idls/Position2D.idl similarity index 100% rename from Position2D.idl rename to idls/Position2D.idl diff --git a/ProcessStatus.idl b/idls/ProcessStatus.idl similarity index 100% rename from ProcessStatus.idl rename to idls/ProcessStatus.idl diff --git a/ProcessStatusLight.idl b/idls/ProcessStatusLight.idl similarity index 100% rename from ProcessStatusLight.idl rename to idls/ProcessStatusLight.idl diff --git a/ReferenceLight.idl b/idls/ReferenceLight.idl similarity index 100% rename from ReferenceLight.idl rename to idls/ReferenceLight.idl diff --git a/ReferencePath.idl b/idls/ReferencePath.idl similarity index 100% rename from ReferencePath.idl rename to idls/ReferencePath.idl diff --git a/Screw.idl b/idls/Screw.idl similarity index 100% rename from Screw.idl rename to idls/Screw.idl diff --git a/SensorFusion.idl b/idls/SensorFusion.idl similarity index 100% rename from SensorFusion.idl rename to idls/SensorFusion.idl diff --git a/StanceStatus.idl b/idls/StanceStatus.idl similarity index 100% rename from StanceStatus.idl rename to idls/StanceStatus.idl diff --git a/StateMachineMonitor.idl b/idls/StateMachineMonitor.idl similarity index 100% rename from StateMachineMonitor.idl rename to idls/StateMachineMonitor.idl diff --git a/StayOutZones.idl b/idls/StayOutZones.idl similarity index 100% rename from StayOutZones.idl rename to idls/StayOutZones.idl diff --git a/String.idl b/idls/String.idl similarity index 100% rename from String.idl rename to idls/String.idl diff --git a/TargetPosition.idl b/idls/TargetPosition.idl similarity index 100% rename from TargetPosition.idl rename to idls/TargetPosition.idl diff --git a/TrajectoryGenerator.idl b/idls/TrajectoryGenerator.idl similarity index 100% rename from TrajectoryGenerator.idl rename to idls/TrajectoryGenerator.idl diff --git a/Vec3.idl b/idls/Vec3.idl similarity index 100% rename from Vec3.idl rename to idls/Vec3.idl diff --git a/Vicon.idl b/idls/Vicon.idl similarity index 100% rename from Vicon.idl rename to idls/Vicon.idl diff --git a/WrenchLight.idl b/idls/WrenchLight.idl similarity index 100% rename from WrenchLight.idl rename to idls/WrenchLight.idl diff --git a/Zone.idl b/idls/Zone.idl similarity index 100% rename from Zone.idl rename to idls/Zone.idl diff --git a/ros2_interface/action_msgs/msg/GoalInfo.idl b/idls/ros2_interface/action_msgs/msg/GoalInfo.idl similarity index 100% rename from ros2_interface/action_msgs/msg/GoalInfo.idl rename to idls/ros2_interface/action_msgs/msg/GoalInfo.idl diff --git a/ros2_interface/action_msgs/msg/GoalStatus.idl b/idls/ros2_interface/action_msgs/msg/GoalStatus.idl similarity index 100% rename from ros2_interface/action_msgs/msg/GoalStatus.idl rename to idls/ros2_interface/action_msgs/msg/GoalStatus.idl diff --git a/ros2_interface/action_msgs/msg/GoalStatusArray.idl b/idls/ros2_interface/action_msgs/msg/GoalStatusArray.idl similarity index 100% rename from ros2_interface/action_msgs/msg/GoalStatusArray.idl rename to idls/ros2_interface/action_msgs/msg/GoalStatusArray.idl diff --git a/ros2_interface/builtin_interfaces/msg/Duration.idl b/idls/ros2_interface/builtin_interfaces/msg/Duration.idl similarity index 100% rename from ros2_interface/builtin_interfaces/msg/Duration.idl rename to idls/ros2_interface/builtin_interfaces/msg/Duration.idl diff --git a/ros2_interface/builtin_interfaces/msg/Time.idl b/idls/ros2_interface/builtin_interfaces/msg/Time.idl similarity index 100% rename from ros2_interface/builtin_interfaces/msg/Time.idl rename to idls/ros2_interface/builtin_interfaces/msg/Time.idl diff --git a/ros2_interface/diagnostic_msgs/msg/DiagnosticArray.idl b/idls/ros2_interface/diagnostic_msgs/msg/DiagnosticArray.idl similarity index 100% rename from ros2_interface/diagnostic_msgs/msg/DiagnosticArray.idl rename to idls/ros2_interface/diagnostic_msgs/msg/DiagnosticArray.idl diff --git a/ros2_interface/diagnostic_msgs/msg/DiagnosticStatus.idl b/idls/ros2_interface/diagnostic_msgs/msg/DiagnosticStatus.idl similarity index 100% rename from ros2_interface/diagnostic_msgs/msg/DiagnosticStatus.idl rename to idls/ros2_interface/diagnostic_msgs/msg/DiagnosticStatus.idl diff --git a/ros2_interface/diagnostic_msgs/msg/KeyValue.idl b/idls/ros2_interface/diagnostic_msgs/msg/KeyValue.idl similarity index 100% rename from ros2_interface/diagnostic_msgs/msg/KeyValue.idl rename to idls/ros2_interface/diagnostic_msgs/msg/KeyValue.idl diff --git a/ros2_interface/geometry_msgs/msg/Accel.idl b/idls/ros2_interface/geometry_msgs/msg/Accel.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Accel.idl rename to idls/ros2_interface/geometry_msgs/msg/Accel.idl diff --git a/ros2_interface/geometry_msgs/msg/AccelStamped.idl b/idls/ros2_interface/geometry_msgs/msg/AccelStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/AccelStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/AccelStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/AccelWithCovariance.idl b/idls/ros2_interface/geometry_msgs/msg/AccelWithCovariance.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/AccelWithCovariance.idl rename to idls/ros2_interface/geometry_msgs/msg/AccelWithCovariance.idl diff --git a/ros2_interface/geometry_msgs/msg/AccelWithCovarianceStamped.idl b/idls/ros2_interface/geometry_msgs/msg/AccelWithCovarianceStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/AccelWithCovarianceStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/AccelWithCovarianceStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/Inertia.idl b/idls/ros2_interface/geometry_msgs/msg/Inertia.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Inertia.idl rename to idls/ros2_interface/geometry_msgs/msg/Inertia.idl diff --git a/ros2_interface/geometry_msgs/msg/InertiaStamped.idl b/idls/ros2_interface/geometry_msgs/msg/InertiaStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/InertiaStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/InertiaStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/Point.idl b/idls/ros2_interface/geometry_msgs/msg/Point.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Point.idl rename to idls/ros2_interface/geometry_msgs/msg/Point.idl diff --git a/ros2_interface/geometry_msgs/msg/Point32.idl b/idls/ros2_interface/geometry_msgs/msg/Point32.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Point32.idl rename to idls/ros2_interface/geometry_msgs/msg/Point32.idl diff --git a/ros2_interface/geometry_msgs/msg/PointStamped.idl b/idls/ros2_interface/geometry_msgs/msg/PointStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/PointStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/PointStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/Polygon.idl b/idls/ros2_interface/geometry_msgs/msg/Polygon.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Polygon.idl rename to idls/ros2_interface/geometry_msgs/msg/Polygon.idl diff --git a/ros2_interface/geometry_msgs/msg/PolygonInstance.idl b/idls/ros2_interface/geometry_msgs/msg/PolygonInstance.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/PolygonInstance.idl rename to idls/ros2_interface/geometry_msgs/msg/PolygonInstance.idl diff --git a/ros2_interface/geometry_msgs/msg/PolygonInstanceStamped.idl b/idls/ros2_interface/geometry_msgs/msg/PolygonInstanceStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/PolygonInstanceStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/PolygonInstanceStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/PolygonStamped.idl b/idls/ros2_interface/geometry_msgs/msg/PolygonStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/PolygonStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/PolygonStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/Pose.idl b/idls/ros2_interface/geometry_msgs/msg/Pose.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Pose.idl rename to idls/ros2_interface/geometry_msgs/msg/Pose.idl diff --git a/ros2_interface/geometry_msgs/msg/PoseArray.idl b/idls/ros2_interface/geometry_msgs/msg/PoseArray.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/PoseArray.idl rename to idls/ros2_interface/geometry_msgs/msg/PoseArray.idl diff --git a/ros2_interface/geometry_msgs/msg/PoseStamped.idl b/idls/ros2_interface/geometry_msgs/msg/PoseStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/PoseStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/PoseStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/PoseWithCovariance.idl b/idls/ros2_interface/geometry_msgs/msg/PoseWithCovariance.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/PoseWithCovariance.idl rename to idls/ros2_interface/geometry_msgs/msg/PoseWithCovariance.idl diff --git a/ros2_interface/geometry_msgs/msg/PoseWithCovarianceStamped.idl b/idls/ros2_interface/geometry_msgs/msg/PoseWithCovarianceStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/PoseWithCovarianceStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/PoseWithCovarianceStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/Quaternion.idl b/idls/ros2_interface/geometry_msgs/msg/Quaternion.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Quaternion.idl rename to idls/ros2_interface/geometry_msgs/msg/Quaternion.idl diff --git a/ros2_interface/geometry_msgs/msg/QuaternionStamped.idl b/idls/ros2_interface/geometry_msgs/msg/QuaternionStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/QuaternionStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/QuaternionStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/Transform.idl b/idls/ros2_interface/geometry_msgs/msg/Transform.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Transform.idl rename to idls/ros2_interface/geometry_msgs/msg/Transform.idl diff --git a/ros2_interface/geometry_msgs/msg/TransformStamped.idl b/idls/ros2_interface/geometry_msgs/msg/TransformStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/TransformStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/TransformStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/Twist.idl b/idls/ros2_interface/geometry_msgs/msg/Twist.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Twist.idl rename to idls/ros2_interface/geometry_msgs/msg/Twist.idl diff --git a/ros2_interface/geometry_msgs/msg/TwistStamped.idl b/idls/ros2_interface/geometry_msgs/msg/TwistStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/TwistStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/TwistStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/TwistWithCovariance.idl b/idls/ros2_interface/geometry_msgs/msg/TwistWithCovariance.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/TwistWithCovariance.idl rename to idls/ros2_interface/geometry_msgs/msg/TwistWithCovariance.idl diff --git a/ros2_interface/geometry_msgs/msg/TwistWithCovarianceStamped.idl b/idls/ros2_interface/geometry_msgs/msg/TwistWithCovarianceStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/TwistWithCovarianceStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/TwistWithCovarianceStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/Vector3.idl b/idls/ros2_interface/geometry_msgs/msg/Vector3.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Vector3.idl rename to idls/ros2_interface/geometry_msgs/msg/Vector3.idl diff --git a/ros2_interface/geometry_msgs/msg/Vector3Stamped.idl b/idls/ros2_interface/geometry_msgs/msg/Vector3Stamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Vector3Stamped.idl rename to idls/ros2_interface/geometry_msgs/msg/Vector3Stamped.idl diff --git a/ros2_interface/geometry_msgs/msg/VelocityStamped.idl b/idls/ros2_interface/geometry_msgs/msg/VelocityStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/VelocityStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/VelocityStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/VelocityWithCovarianceStamped.idl b/idls/ros2_interface/geometry_msgs/msg/VelocityWithCovarianceStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/VelocityWithCovarianceStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/VelocityWithCovarianceStamped.idl diff --git a/ros2_interface/geometry_msgs/msg/Wrench.idl b/idls/ros2_interface/geometry_msgs/msg/Wrench.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/Wrench.idl rename to idls/ros2_interface/geometry_msgs/msg/Wrench.idl diff --git a/ros2_interface/geometry_msgs/msg/WrenchStamped.idl b/idls/ros2_interface/geometry_msgs/msg/WrenchStamped.idl similarity index 100% rename from ros2_interface/geometry_msgs/msg/WrenchStamped.idl rename to idls/ros2_interface/geometry_msgs/msg/WrenchStamped.idl diff --git a/ros2_interface/lifecycle_msgs/msg/State.idl b/idls/ros2_interface/lifecycle_msgs/msg/State.idl similarity index 100% rename from ros2_interface/lifecycle_msgs/msg/State.idl rename to idls/ros2_interface/lifecycle_msgs/msg/State.idl diff --git a/ros2_interface/lifecycle_msgs/msg/Transition.idl b/idls/ros2_interface/lifecycle_msgs/msg/Transition.idl similarity index 100% rename from ros2_interface/lifecycle_msgs/msg/Transition.idl rename to idls/ros2_interface/lifecycle_msgs/msg/Transition.idl diff --git a/ros2_interface/lifecycle_msgs/msg/TransitionDescription.idl b/idls/ros2_interface/lifecycle_msgs/msg/TransitionDescription.idl similarity index 100% rename from ros2_interface/lifecycle_msgs/msg/TransitionDescription.idl rename to idls/ros2_interface/lifecycle_msgs/msg/TransitionDescription.idl diff --git a/ros2_interface/lifecycle_msgs/msg/TransitionEvent.idl b/idls/ros2_interface/lifecycle_msgs/msg/TransitionEvent.idl similarity index 100% rename from ros2_interface/lifecycle_msgs/msg/TransitionEvent.idl rename to idls/ros2_interface/lifecycle_msgs/msg/TransitionEvent.idl diff --git a/ros2_interface/nav_msgs/msg/Goals.idl b/idls/ros2_interface/nav_msgs/msg/Goals.idl similarity index 100% rename from ros2_interface/nav_msgs/msg/Goals.idl rename to idls/ros2_interface/nav_msgs/msg/Goals.idl diff --git a/ros2_interface/nav_msgs/msg/GridCells.idl b/idls/ros2_interface/nav_msgs/msg/GridCells.idl similarity index 100% rename from ros2_interface/nav_msgs/msg/GridCells.idl rename to idls/ros2_interface/nav_msgs/msg/GridCells.idl diff --git a/ros2_interface/nav_msgs/msg/MapMetaData.idl b/idls/ros2_interface/nav_msgs/msg/MapMetaData.idl similarity index 100% rename from ros2_interface/nav_msgs/msg/MapMetaData.idl rename to idls/ros2_interface/nav_msgs/msg/MapMetaData.idl diff --git a/ros2_interface/nav_msgs/msg/OccupancyGrid.idl b/idls/ros2_interface/nav_msgs/msg/OccupancyGrid.idl similarity index 100% rename from ros2_interface/nav_msgs/msg/OccupancyGrid.idl rename to idls/ros2_interface/nav_msgs/msg/OccupancyGrid.idl diff --git a/ros2_interface/nav_msgs/msg/Odometry.idl b/idls/ros2_interface/nav_msgs/msg/Odometry.idl similarity index 100% rename from ros2_interface/nav_msgs/msg/Odometry.idl rename to idls/ros2_interface/nav_msgs/msg/Odometry.idl diff --git a/ros2_interface/nav_msgs/msg/Path.idl b/idls/ros2_interface/nav_msgs/msg/Path.idl similarity index 100% rename from ros2_interface/nav_msgs/msg/Path.idl rename to idls/ros2_interface/nav_msgs/msg/Path.idl diff --git a/ros2_interface/nav_msgs/msg/Trajectory.idl b/idls/ros2_interface/nav_msgs/msg/Trajectory.idl similarity index 100% rename from ros2_interface/nav_msgs/msg/Trajectory.idl rename to idls/ros2_interface/nav_msgs/msg/Trajectory.idl diff --git a/ros2_interface/nav_msgs/msg/TrajectoryPoint.idl b/idls/ros2_interface/nav_msgs/msg/TrajectoryPoint.idl similarity index 100% rename from ros2_interface/nav_msgs/msg/TrajectoryPoint.idl rename to idls/ros2_interface/nav_msgs/msg/TrajectoryPoint.idl diff --git a/ros2_interface/rcl_interfaces/msg/FloatingPointRange.idl b/idls/ros2_interface/rcl_interfaces/msg/FloatingPointRange.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/FloatingPointRange.idl rename to idls/ros2_interface/rcl_interfaces/msg/FloatingPointRange.idl diff --git a/ros2_interface/rcl_interfaces/msg/IntegerRange.idl b/idls/ros2_interface/rcl_interfaces/msg/IntegerRange.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/IntegerRange.idl rename to idls/ros2_interface/rcl_interfaces/msg/IntegerRange.idl diff --git a/ros2_interface/rcl_interfaces/msg/ListParametersResult.idl b/idls/ros2_interface/rcl_interfaces/msg/ListParametersResult.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/ListParametersResult.idl rename to idls/ros2_interface/rcl_interfaces/msg/ListParametersResult.idl diff --git a/ros2_interface/rcl_interfaces/msg/Log.idl b/idls/ros2_interface/rcl_interfaces/msg/Log.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/Log.idl rename to idls/ros2_interface/rcl_interfaces/msg/Log.idl diff --git a/ros2_interface/rcl_interfaces/msg/LoggerLevel.idl b/idls/ros2_interface/rcl_interfaces/msg/LoggerLevel.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/LoggerLevel.idl rename to idls/ros2_interface/rcl_interfaces/msg/LoggerLevel.idl diff --git a/ros2_interface/rcl_interfaces/msg/Parameter.idl b/idls/ros2_interface/rcl_interfaces/msg/Parameter.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/Parameter.idl rename to idls/ros2_interface/rcl_interfaces/msg/Parameter.idl diff --git a/ros2_interface/rcl_interfaces/msg/ParameterDescriptor.idl b/idls/ros2_interface/rcl_interfaces/msg/ParameterDescriptor.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/ParameterDescriptor.idl rename to idls/ros2_interface/rcl_interfaces/msg/ParameterDescriptor.idl diff --git a/ros2_interface/rcl_interfaces/msg/ParameterEvent.idl b/idls/ros2_interface/rcl_interfaces/msg/ParameterEvent.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/ParameterEvent.idl rename to idls/ros2_interface/rcl_interfaces/msg/ParameterEvent.idl diff --git a/ros2_interface/rcl_interfaces/msg/ParameterEventDescriptors.idl b/idls/ros2_interface/rcl_interfaces/msg/ParameterEventDescriptors.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/ParameterEventDescriptors.idl rename to idls/ros2_interface/rcl_interfaces/msg/ParameterEventDescriptors.idl diff --git a/ros2_interface/rcl_interfaces/msg/ParameterType.idl b/idls/ros2_interface/rcl_interfaces/msg/ParameterType.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/ParameterType.idl rename to idls/ros2_interface/rcl_interfaces/msg/ParameterType.idl diff --git a/ros2_interface/rcl_interfaces/msg/ParameterValue.idl b/idls/ros2_interface/rcl_interfaces/msg/ParameterValue.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/ParameterValue.idl rename to idls/ros2_interface/rcl_interfaces/msg/ParameterValue.idl diff --git a/ros2_interface/rcl_interfaces/msg/SetLoggerLevelsResult.idl b/idls/ros2_interface/rcl_interfaces/msg/SetLoggerLevelsResult.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/SetLoggerLevelsResult.idl rename to idls/ros2_interface/rcl_interfaces/msg/SetLoggerLevelsResult.idl diff --git a/ros2_interface/rcl_interfaces/msg/SetParametersResult.idl b/idls/ros2_interface/rcl_interfaces/msg/SetParametersResult.idl similarity index 100% rename from ros2_interface/rcl_interfaces/msg/SetParametersResult.idl rename to idls/ros2_interface/rcl_interfaces/msg/SetParametersResult.idl diff --git a/ros2_interface/rosgraph_msgs/msg/Action.idl b/idls/ros2_interface/rosgraph_msgs/msg/Action.idl similarity index 100% rename from ros2_interface/rosgraph_msgs/msg/Action.idl rename to idls/ros2_interface/rosgraph_msgs/msg/Action.idl diff --git a/ros2_interface/rosgraph_msgs/msg/Clock.idl b/idls/ros2_interface/rosgraph_msgs/msg/Clock.idl similarity index 100% rename from ros2_interface/rosgraph_msgs/msg/Clock.idl rename to idls/ros2_interface/rosgraph_msgs/msg/Clock.idl diff --git a/ros2_interface/rosgraph_msgs/msg/Graph.idl b/idls/ros2_interface/rosgraph_msgs/msg/Graph.idl similarity index 100% rename from ros2_interface/rosgraph_msgs/msg/Graph.idl rename to idls/ros2_interface/rosgraph_msgs/msg/Graph.idl diff --git a/ros2_interface/rosgraph_msgs/msg/InterfaceType.idl b/idls/ros2_interface/rosgraph_msgs/msg/InterfaceType.idl similarity index 100% rename from ros2_interface/rosgraph_msgs/msg/InterfaceType.idl rename to idls/ros2_interface/rosgraph_msgs/msg/InterfaceType.idl diff --git a/ros2_interface/rosgraph_msgs/msg/Node.idl b/idls/ros2_interface/rosgraph_msgs/msg/Node.idl similarity index 100% rename from ros2_interface/rosgraph_msgs/msg/Node.idl rename to idls/ros2_interface/rosgraph_msgs/msg/Node.idl diff --git a/ros2_interface/rosgraph_msgs/msg/QoSProfile.idl b/idls/ros2_interface/rosgraph_msgs/msg/QoSProfile.idl similarity index 100% rename from ros2_interface/rosgraph_msgs/msg/QoSProfile.idl rename to idls/ros2_interface/rosgraph_msgs/msg/QoSProfile.idl diff --git a/ros2_interface/rosgraph_msgs/msg/Service.idl b/idls/ros2_interface/rosgraph_msgs/msg/Service.idl similarity index 100% rename from ros2_interface/rosgraph_msgs/msg/Service.idl rename to idls/ros2_interface/rosgraph_msgs/msg/Service.idl diff --git a/ros2_interface/rosgraph_msgs/msg/Topic.idl b/idls/ros2_interface/rosgraph_msgs/msg/Topic.idl similarity index 100% rename from ros2_interface/rosgraph_msgs/msg/Topic.idl rename to idls/ros2_interface/rosgraph_msgs/msg/Topic.idl diff --git a/ros2_interface/rosgraph_msgs/msg/TypeHash.idl b/idls/ros2_interface/rosgraph_msgs/msg/TypeHash.idl similarity index 100% rename from ros2_interface/rosgraph_msgs/msg/TypeHash.idl rename to idls/ros2_interface/rosgraph_msgs/msg/TypeHash.idl diff --git a/ros2_interface/sensor_msgs/msg/BatteryState.idl b/idls/ros2_interface/sensor_msgs/msg/BatteryState.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/BatteryState.idl rename to idls/ros2_interface/sensor_msgs/msg/BatteryState.idl diff --git a/ros2_interface/sensor_msgs/msg/CameraInfo.idl b/idls/ros2_interface/sensor_msgs/msg/CameraInfo.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/CameraInfo.idl rename to idls/ros2_interface/sensor_msgs/msg/CameraInfo.idl diff --git a/ros2_interface/sensor_msgs/msg/ChannelFloat32.idl b/idls/ros2_interface/sensor_msgs/msg/ChannelFloat32.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/ChannelFloat32.idl rename to idls/ros2_interface/sensor_msgs/msg/ChannelFloat32.idl diff --git a/ros2_interface/sensor_msgs/msg/CompressedImage.idl b/idls/ros2_interface/sensor_msgs/msg/CompressedImage.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/CompressedImage.idl rename to idls/ros2_interface/sensor_msgs/msg/CompressedImage.idl diff --git a/ros2_interface/sensor_msgs/msg/FluidPressure.idl b/idls/ros2_interface/sensor_msgs/msg/FluidPressure.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/FluidPressure.idl rename to idls/ros2_interface/sensor_msgs/msg/FluidPressure.idl diff --git a/ros2_interface/sensor_msgs/msg/Illuminance.idl b/idls/ros2_interface/sensor_msgs/msg/Illuminance.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/Illuminance.idl rename to idls/ros2_interface/sensor_msgs/msg/Illuminance.idl diff --git a/ros2_interface/sensor_msgs/msg/Image.idl b/idls/ros2_interface/sensor_msgs/msg/Image.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/Image.idl rename to idls/ros2_interface/sensor_msgs/msg/Image.idl diff --git a/ros2_interface/sensor_msgs/msg/Imu.idl b/idls/ros2_interface/sensor_msgs/msg/Imu.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/Imu.idl rename to idls/ros2_interface/sensor_msgs/msg/Imu.idl diff --git a/ros2_interface/sensor_msgs/msg/JointState.idl b/idls/ros2_interface/sensor_msgs/msg/JointState.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/JointState.idl rename to idls/ros2_interface/sensor_msgs/msg/JointState.idl diff --git a/ros2_interface/sensor_msgs/msg/Joy.idl b/idls/ros2_interface/sensor_msgs/msg/Joy.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/Joy.idl rename to idls/ros2_interface/sensor_msgs/msg/Joy.idl diff --git a/ros2_interface/sensor_msgs/msg/JoyFeedback.idl b/idls/ros2_interface/sensor_msgs/msg/JoyFeedback.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/JoyFeedback.idl rename to idls/ros2_interface/sensor_msgs/msg/JoyFeedback.idl diff --git a/ros2_interface/sensor_msgs/msg/JoyFeedbackArray.idl b/idls/ros2_interface/sensor_msgs/msg/JoyFeedbackArray.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/JoyFeedbackArray.idl rename to idls/ros2_interface/sensor_msgs/msg/JoyFeedbackArray.idl diff --git a/ros2_interface/sensor_msgs/msg/LaserEcho.idl b/idls/ros2_interface/sensor_msgs/msg/LaserEcho.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/LaserEcho.idl rename to idls/ros2_interface/sensor_msgs/msg/LaserEcho.idl diff --git a/ros2_interface/sensor_msgs/msg/LaserScan.idl b/idls/ros2_interface/sensor_msgs/msg/LaserScan.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/LaserScan.idl rename to idls/ros2_interface/sensor_msgs/msg/LaserScan.idl diff --git a/ros2_interface/sensor_msgs/msg/MagneticField.idl b/idls/ros2_interface/sensor_msgs/msg/MagneticField.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/MagneticField.idl rename to idls/ros2_interface/sensor_msgs/msg/MagneticField.idl diff --git a/ros2_interface/sensor_msgs/msg/MultiDOFJointState.idl b/idls/ros2_interface/sensor_msgs/msg/MultiDOFJointState.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/MultiDOFJointState.idl rename to idls/ros2_interface/sensor_msgs/msg/MultiDOFJointState.idl diff --git a/ros2_interface/sensor_msgs/msg/MultiEchoLaserScan.idl b/idls/ros2_interface/sensor_msgs/msg/MultiEchoLaserScan.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/MultiEchoLaserScan.idl rename to idls/ros2_interface/sensor_msgs/msg/MultiEchoLaserScan.idl diff --git a/ros2_interface/sensor_msgs/msg/NavSatFix.idl b/idls/ros2_interface/sensor_msgs/msg/NavSatFix.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/NavSatFix.idl rename to idls/ros2_interface/sensor_msgs/msg/NavSatFix.idl diff --git a/ros2_interface/sensor_msgs/msg/NavSatStatus.idl b/idls/ros2_interface/sensor_msgs/msg/NavSatStatus.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/NavSatStatus.idl rename to idls/ros2_interface/sensor_msgs/msg/NavSatStatus.idl diff --git a/ros2_interface/sensor_msgs/msg/PointCloud.idl b/idls/ros2_interface/sensor_msgs/msg/PointCloud.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/PointCloud.idl rename to idls/ros2_interface/sensor_msgs/msg/PointCloud.idl diff --git a/ros2_interface/sensor_msgs/msg/PointCloud2.idl b/idls/ros2_interface/sensor_msgs/msg/PointCloud2.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/PointCloud2.idl rename to idls/ros2_interface/sensor_msgs/msg/PointCloud2.idl diff --git a/ros2_interface/sensor_msgs/msg/PointField.idl b/idls/ros2_interface/sensor_msgs/msg/PointField.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/PointField.idl rename to idls/ros2_interface/sensor_msgs/msg/PointField.idl diff --git a/ros2_interface/sensor_msgs/msg/Range.idl b/idls/ros2_interface/sensor_msgs/msg/Range.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/Range.idl rename to idls/ros2_interface/sensor_msgs/msg/Range.idl diff --git a/ros2_interface/sensor_msgs/msg/RegionOfInterest.idl b/idls/ros2_interface/sensor_msgs/msg/RegionOfInterest.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/RegionOfInterest.idl rename to idls/ros2_interface/sensor_msgs/msg/RegionOfInterest.idl diff --git a/ros2_interface/sensor_msgs/msg/RelativeHumidity.idl b/idls/ros2_interface/sensor_msgs/msg/RelativeHumidity.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/RelativeHumidity.idl rename to idls/ros2_interface/sensor_msgs/msg/RelativeHumidity.idl diff --git a/ros2_interface/sensor_msgs/msg/Temperature.idl b/idls/ros2_interface/sensor_msgs/msg/Temperature.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/Temperature.idl rename to idls/ros2_interface/sensor_msgs/msg/Temperature.idl diff --git a/ros2_interface/sensor_msgs/msg/TimeReference.idl b/idls/ros2_interface/sensor_msgs/msg/TimeReference.idl similarity index 100% rename from ros2_interface/sensor_msgs/msg/TimeReference.idl rename to idls/ros2_interface/sensor_msgs/msg/TimeReference.idl diff --git a/ros2_interface/service_msgs/msg/ServiceEventInfo.idl b/idls/ros2_interface/service_msgs/msg/ServiceEventInfo.idl similarity index 100% rename from ros2_interface/service_msgs/msg/ServiceEventInfo.idl rename to idls/ros2_interface/service_msgs/msg/ServiceEventInfo.idl diff --git a/ros2_interface/shape_msgs/msg/Mesh.idl b/idls/ros2_interface/shape_msgs/msg/Mesh.idl similarity index 100% rename from ros2_interface/shape_msgs/msg/Mesh.idl rename to idls/ros2_interface/shape_msgs/msg/Mesh.idl diff --git a/ros2_interface/shape_msgs/msg/MeshTriangle.idl b/idls/ros2_interface/shape_msgs/msg/MeshTriangle.idl similarity index 100% rename from ros2_interface/shape_msgs/msg/MeshTriangle.idl rename to idls/ros2_interface/shape_msgs/msg/MeshTriangle.idl diff --git a/ros2_interface/shape_msgs/msg/Plane.idl b/idls/ros2_interface/shape_msgs/msg/Plane.idl similarity index 100% rename from ros2_interface/shape_msgs/msg/Plane.idl rename to idls/ros2_interface/shape_msgs/msg/Plane.idl diff --git a/ros2_interface/shape_msgs/msg/SolidPrimitive.idl b/idls/ros2_interface/shape_msgs/msg/SolidPrimitive.idl similarity index 100% rename from ros2_interface/shape_msgs/msg/SolidPrimitive.idl rename to idls/ros2_interface/shape_msgs/msg/SolidPrimitive.idl diff --git a/ros2_interface/statistics_msgs/msg/MetricsMessage.idl b/idls/ros2_interface/statistics_msgs/msg/MetricsMessage.idl similarity index 100% rename from ros2_interface/statistics_msgs/msg/MetricsMessage.idl rename to idls/ros2_interface/statistics_msgs/msg/MetricsMessage.idl diff --git a/ros2_interface/statistics_msgs/msg/StatisticDataPoint.idl b/idls/ros2_interface/statistics_msgs/msg/StatisticDataPoint.idl similarity index 100% rename from ros2_interface/statistics_msgs/msg/StatisticDataPoint.idl rename to idls/ros2_interface/statistics_msgs/msg/StatisticDataPoint.idl diff --git a/ros2_interface/statistics_msgs/msg/StatisticDataType.idl b/idls/ros2_interface/statistics_msgs/msg/StatisticDataType.idl similarity index 100% rename from ros2_interface/statistics_msgs/msg/StatisticDataType.idl rename to idls/ros2_interface/statistics_msgs/msg/StatisticDataType.idl diff --git a/ros2_interface/std_msgs/msg/Bool.idl b/idls/ros2_interface/std_msgs/msg/Bool.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Bool.idl rename to idls/ros2_interface/std_msgs/msg/Bool.idl diff --git a/ros2_interface/std_msgs/msg/Byte.idl b/idls/ros2_interface/std_msgs/msg/Byte.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Byte.idl rename to idls/ros2_interface/std_msgs/msg/Byte.idl diff --git a/ros2_interface/std_msgs/msg/ByteMultiArray.idl b/idls/ros2_interface/std_msgs/msg/ByteMultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/ByteMultiArray.idl rename to idls/ros2_interface/std_msgs/msg/ByteMultiArray.idl diff --git a/ros2_interface/std_msgs/msg/Char.idl b/idls/ros2_interface/std_msgs/msg/Char.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Char.idl rename to idls/ros2_interface/std_msgs/msg/Char.idl diff --git a/ros2_interface/std_msgs/msg/ColorRGBA.idl b/idls/ros2_interface/std_msgs/msg/ColorRGBA.idl similarity index 100% rename from ros2_interface/std_msgs/msg/ColorRGBA.idl rename to idls/ros2_interface/std_msgs/msg/ColorRGBA.idl diff --git a/ros2_interface/std_msgs/msg/Empty.idl b/idls/ros2_interface/std_msgs/msg/Empty.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Empty.idl rename to idls/ros2_interface/std_msgs/msg/Empty.idl diff --git a/ros2_interface/std_msgs/msg/Float32.idl b/idls/ros2_interface/std_msgs/msg/Float32.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Float32.idl rename to idls/ros2_interface/std_msgs/msg/Float32.idl diff --git a/ros2_interface/std_msgs/msg/Float32MultiArray.idl b/idls/ros2_interface/std_msgs/msg/Float32MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Float32MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/Float32MultiArray.idl diff --git a/ros2_interface/std_msgs/msg/Float64.idl b/idls/ros2_interface/std_msgs/msg/Float64.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Float64.idl rename to idls/ros2_interface/std_msgs/msg/Float64.idl diff --git a/ros2_interface/std_msgs/msg/Float64MultiArray.idl b/idls/ros2_interface/std_msgs/msg/Float64MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Float64MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/Float64MultiArray.idl diff --git a/ros2_interface/std_msgs/msg/Header.idl b/idls/ros2_interface/std_msgs/msg/Header.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Header.idl rename to idls/ros2_interface/std_msgs/msg/Header.idl diff --git a/ros2_interface/std_msgs/msg/Int16.idl b/idls/ros2_interface/std_msgs/msg/Int16.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Int16.idl rename to idls/ros2_interface/std_msgs/msg/Int16.idl diff --git a/ros2_interface/std_msgs/msg/Int16MultiArray.idl b/idls/ros2_interface/std_msgs/msg/Int16MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Int16MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/Int16MultiArray.idl diff --git a/ros2_interface/std_msgs/msg/Int32.idl b/idls/ros2_interface/std_msgs/msg/Int32.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Int32.idl rename to idls/ros2_interface/std_msgs/msg/Int32.idl diff --git a/ros2_interface/std_msgs/msg/Int32MultiArray.idl b/idls/ros2_interface/std_msgs/msg/Int32MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Int32MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/Int32MultiArray.idl diff --git a/ros2_interface/std_msgs/msg/Int64.idl b/idls/ros2_interface/std_msgs/msg/Int64.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Int64.idl rename to idls/ros2_interface/std_msgs/msg/Int64.idl diff --git a/ros2_interface/std_msgs/msg/Int64MultiArray.idl b/idls/ros2_interface/std_msgs/msg/Int64MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Int64MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/Int64MultiArray.idl diff --git a/ros2_interface/std_msgs/msg/Int8.idl b/idls/ros2_interface/std_msgs/msg/Int8.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Int8.idl rename to idls/ros2_interface/std_msgs/msg/Int8.idl diff --git a/ros2_interface/std_msgs/msg/Int8MultiArray.idl b/idls/ros2_interface/std_msgs/msg/Int8MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/Int8MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/Int8MultiArray.idl diff --git a/ros2_interface/std_msgs/msg/MultiArrayDimension.idl b/idls/ros2_interface/std_msgs/msg/MultiArrayDimension.idl similarity index 100% rename from ros2_interface/std_msgs/msg/MultiArrayDimension.idl rename to idls/ros2_interface/std_msgs/msg/MultiArrayDimension.idl diff --git a/ros2_interface/std_msgs/msg/MultiArrayLayout.idl b/idls/ros2_interface/std_msgs/msg/MultiArrayLayout.idl similarity index 100% rename from ros2_interface/std_msgs/msg/MultiArrayLayout.idl rename to idls/ros2_interface/std_msgs/msg/MultiArrayLayout.idl diff --git a/ros2_interface/std_msgs/msg/String.idl b/idls/ros2_interface/std_msgs/msg/String.idl similarity index 100% rename from ros2_interface/std_msgs/msg/String.idl rename to idls/ros2_interface/std_msgs/msg/String.idl diff --git a/ros2_interface/std_msgs/msg/UInt16.idl b/idls/ros2_interface/std_msgs/msg/UInt16.idl similarity index 100% rename from ros2_interface/std_msgs/msg/UInt16.idl rename to idls/ros2_interface/std_msgs/msg/UInt16.idl diff --git a/ros2_interface/std_msgs/msg/UInt16MultiArray.idl b/idls/ros2_interface/std_msgs/msg/UInt16MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/UInt16MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/UInt16MultiArray.idl diff --git a/ros2_interface/std_msgs/msg/UInt32.idl b/idls/ros2_interface/std_msgs/msg/UInt32.idl similarity index 100% rename from ros2_interface/std_msgs/msg/UInt32.idl rename to idls/ros2_interface/std_msgs/msg/UInt32.idl diff --git a/ros2_interface/std_msgs/msg/UInt32MultiArray.idl b/idls/ros2_interface/std_msgs/msg/UInt32MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/UInt32MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/UInt32MultiArray.idl diff --git a/ros2_interface/std_msgs/msg/UInt64.idl b/idls/ros2_interface/std_msgs/msg/UInt64.idl similarity index 100% rename from ros2_interface/std_msgs/msg/UInt64.idl rename to idls/ros2_interface/std_msgs/msg/UInt64.idl diff --git a/ros2_interface/std_msgs/msg/UInt64MultiArray.idl b/idls/ros2_interface/std_msgs/msg/UInt64MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/UInt64MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/UInt64MultiArray.idl diff --git a/ros2_interface/std_msgs/msg/UInt8.idl b/idls/ros2_interface/std_msgs/msg/UInt8.idl similarity index 100% rename from ros2_interface/std_msgs/msg/UInt8.idl rename to idls/ros2_interface/std_msgs/msg/UInt8.idl diff --git a/ros2_interface/std_msgs/msg/UInt8MultiArray.idl b/idls/ros2_interface/std_msgs/msg/UInt8MultiArray.idl similarity index 100% rename from ros2_interface/std_msgs/msg/UInt8MultiArray.idl rename to idls/ros2_interface/std_msgs/msg/UInt8MultiArray.idl diff --git a/ros2_interface/stereo_msgs/msg/DisparityImage.idl b/idls/ros2_interface/stereo_msgs/msg/DisparityImage.idl similarity index 100% rename from ros2_interface/stereo_msgs/msg/DisparityImage.idl rename to idls/ros2_interface/stereo_msgs/msg/DisparityImage.idl diff --git a/ros2_interface/test_msgs/msg/Builtins.idl b/idls/ros2_interface/test_msgs/msg/Builtins.idl similarity index 100% rename from ros2_interface/test_msgs/msg/Builtins.idl rename to idls/ros2_interface/test_msgs/msg/Builtins.idl diff --git a/ros2_interface/tf2_msgs/msg/TFMessage.idl b/idls/ros2_interface/tf2_msgs/msg/TFMessage.idl similarity index 100% rename from ros2_interface/tf2_msgs/msg/TFMessage.idl rename to idls/ros2_interface/tf2_msgs/msg/TFMessage.idl diff --git a/ros2_interface/trajectory_msgs/msg/JointTrajectory.idl b/idls/ros2_interface/trajectory_msgs/msg/JointTrajectory.idl similarity index 100% rename from ros2_interface/trajectory_msgs/msg/JointTrajectory.idl rename to idls/ros2_interface/trajectory_msgs/msg/JointTrajectory.idl diff --git a/ros2_interface/trajectory_msgs/msg/JointTrajectoryPoint.idl b/idls/ros2_interface/trajectory_msgs/msg/JointTrajectoryPoint.idl similarity index 100% rename from ros2_interface/trajectory_msgs/msg/JointTrajectoryPoint.idl rename to idls/ros2_interface/trajectory_msgs/msg/JointTrajectoryPoint.idl diff --git a/ros2_interface/trajectory_msgs/msg/MultiDOFJointTrajectory.idl b/idls/ros2_interface/trajectory_msgs/msg/MultiDOFJointTrajectory.idl similarity index 100% rename from ros2_interface/trajectory_msgs/msg/MultiDOFJointTrajectory.idl rename to idls/ros2_interface/trajectory_msgs/msg/MultiDOFJointTrajectory.idl diff --git a/ros2_interface/trajectory_msgs/msg/MultiDOFJointTrajectoryPoint.idl b/idls/ros2_interface/trajectory_msgs/msg/MultiDOFJointTrajectoryPoint.idl similarity index 100% rename from ros2_interface/trajectory_msgs/msg/MultiDOFJointTrajectoryPoint.idl rename to idls/ros2_interface/trajectory_msgs/msg/MultiDOFJointTrajectoryPoint.idl diff --git a/ros2_interface/type_description_interfaces/msg/Field.idl b/idls/ros2_interface/type_description_interfaces/msg/Field.idl similarity index 100% rename from ros2_interface/type_description_interfaces/msg/Field.idl rename to idls/ros2_interface/type_description_interfaces/msg/Field.idl diff --git a/ros2_interface/type_description_interfaces/msg/FieldType.idl b/idls/ros2_interface/type_description_interfaces/msg/FieldType.idl similarity index 100% rename from ros2_interface/type_description_interfaces/msg/FieldType.idl rename to idls/ros2_interface/type_description_interfaces/msg/FieldType.idl diff --git a/ros2_interface/type_description_interfaces/msg/IndividualTypeDescription.idl b/idls/ros2_interface/type_description_interfaces/msg/IndividualTypeDescription.idl similarity index 100% rename from ros2_interface/type_description_interfaces/msg/IndividualTypeDescription.idl rename to idls/ros2_interface/type_description_interfaces/msg/IndividualTypeDescription.idl diff --git a/ros2_interface/type_description_interfaces/msg/KeyValue.idl b/idls/ros2_interface/type_description_interfaces/msg/KeyValue.idl similarity index 100% rename from ros2_interface/type_description_interfaces/msg/KeyValue.idl rename to idls/ros2_interface/type_description_interfaces/msg/KeyValue.idl diff --git a/ros2_interface/type_description_interfaces/msg/TypeDescription.idl b/idls/ros2_interface/type_description_interfaces/msg/TypeDescription.idl similarity index 100% rename from ros2_interface/type_description_interfaces/msg/TypeDescription.idl rename to idls/ros2_interface/type_description_interfaces/msg/TypeDescription.idl diff --git a/ros2_interface/type_description_interfaces/msg/TypeSource.idl b/idls/ros2_interface/type_description_interfaces/msg/TypeSource.idl similarity index 100% rename from ros2_interface/type_description_interfaces/msg/TypeSource.idl rename to idls/ros2_interface/type_description_interfaces/msg/TypeSource.idl diff --git a/ros2_interface/unique_identifier_msgs/msg/UUID.idl b/idls/ros2_interface/unique_identifier_msgs/msg/UUID.idl similarity index 100% rename from ros2_interface/unique_identifier_msgs/msg/UUID.idl rename to idls/ros2_interface/unique_identifier_msgs/msg/UUID.idl diff --git a/ros2_interface/visualization_msgs/msg/ImageMarker.idl b/idls/ros2_interface/visualization_msgs/msg/ImageMarker.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/ImageMarker.idl rename to idls/ros2_interface/visualization_msgs/msg/ImageMarker.idl diff --git a/ros2_interface/visualization_msgs/msg/InteractiveMarker.idl b/idls/ros2_interface/visualization_msgs/msg/InteractiveMarker.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/InteractiveMarker.idl rename to idls/ros2_interface/visualization_msgs/msg/InteractiveMarker.idl diff --git a/ros2_interface/visualization_msgs/msg/InteractiveMarkerControl.idl b/idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerControl.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/InteractiveMarkerControl.idl rename to idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerControl.idl diff --git a/ros2_interface/visualization_msgs/msg/InteractiveMarkerFeedback.idl b/idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerFeedback.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/InteractiveMarkerFeedback.idl rename to idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerFeedback.idl diff --git a/ros2_interface/visualization_msgs/msg/InteractiveMarkerInit.idl b/idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerInit.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/InteractiveMarkerInit.idl rename to idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerInit.idl diff --git a/ros2_interface/visualization_msgs/msg/InteractiveMarkerPose.idl b/idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerPose.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/InteractiveMarkerPose.idl rename to idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerPose.idl diff --git a/ros2_interface/visualization_msgs/msg/InteractiveMarkerUpdate.idl b/idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerUpdate.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/InteractiveMarkerUpdate.idl rename to idls/ros2_interface/visualization_msgs/msg/InteractiveMarkerUpdate.idl diff --git a/ros2_interface/visualization_msgs/msg/Marker.idl b/idls/ros2_interface/visualization_msgs/msg/Marker.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/Marker.idl rename to idls/ros2_interface/visualization_msgs/msg/Marker.idl diff --git a/ros2_interface/visualization_msgs/msg/MarkerArray.idl b/idls/ros2_interface/visualization_msgs/msg/MarkerArray.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/MarkerArray.idl rename to idls/ros2_interface/visualization_msgs/msg/MarkerArray.idl diff --git a/ros2_interface/visualization_msgs/msg/MenuEntry.idl b/idls/ros2_interface/visualization_msgs/msg/MenuEntry.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/MenuEntry.idl rename to idls/ros2_interface/visualization_msgs/msg/MenuEntry.idl diff --git a/ros2_interface/visualization_msgs/msg/MeshFile.idl b/idls/ros2_interface/visualization_msgs/msg/MeshFile.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/MeshFile.idl rename to idls/ros2_interface/visualization_msgs/msg/MeshFile.idl diff --git a/ros2_interface/visualization_msgs/msg/UVCoordinate.idl b/idls/ros2_interface/visualization_msgs/msg/UVCoordinate.idl similarity index 100% rename from ros2_interface/visualization_msgs/msg/UVCoordinate.idl rename to idls/ros2_interface/visualization_msgs/msg/UVCoordinate.idl