diff --git a/micro_ros_agent/CMakeLists.txt b/micro_ros_agent/CMakeLists.txt index d0b63c0..c06aeab 100644 --- a/micro_ros_agent/CMakeLists.txt +++ b/micro_ros_agent/CMakeLists.txt @@ -19,7 +19,15 @@ option(UROSAGENT_GENERATE_PROFILE ) set(CMAKE_C_CLANG_TIDY clang-tidy -checks=*) -project(micro_ros_agent LANGUAGES CXX) +option(MICROROSAGENT_SUPERBUILD "Enable superbuild compilation." ON) + +if(NOT MICROROSAGENT_SUPERBUILD) + project(micro_ros_agent LANGUAGES CXX) +else() + project(uagent_superbuild NONE) + include(${PROJECT_SOURCE_DIR}/cmake/SuperBuild.cmake) + return() +endif() find_package(ament_cmake REQUIRED) find_package(microxrcedds_agent REQUIRED) diff --git a/micro_ros_agent/cmake/SuperBuild.cmake b/micro_ros_agent/cmake/SuperBuild.cmake new file mode 100644 index 0000000..3721d6a --- /dev/null +++ b/micro_ros_agent/cmake/SuperBuild.cmake @@ -0,0 +1,66 @@ +# Copyright 2019 Proyectos y Sistemas de Mantenimiento SL (eProsima). +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +include(ExternalProject) + +unset(_deps) + +enable_language(C) +enable_language(CXX) + +unset(xrceagent_DIR CACHE) +find_package(xrceagent 2 EXACT QUIET) +if(NOT xrceagent_FOUND) + ExternalProject_Add(xrceagent + GIT_REPOSITORY + https://github.com/eProsima/Micro-XRCE-DDS-Agent.git + GIT_TAG + ros2 + PREFIX + ${PROJECT_BINARY_DIR}/agent + INSTALL_DIR + ${CMAKE_INSTALL_PREFIX} + CMAKE_CACHE_ARGS + -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER} + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} + -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} + -DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} + -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS} + -DCMAKE_INSTALL_PREFIX:PATH= + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DCMAKE_PREFIX_PATH:PATH= + -DUAGENT_USE_SYSTEM_FASTDDS:BOOL=ON + -DUAGENT_USE_SYSTEM_FASTCDR:BOOL=ON + -DUAGENT_CED_PROFILE:BOOL=OFF + -DUAGENT_P2P_PROFILE:BOOL=OFF + -DUAGENT_BUILD_EXECUTABLE:BOOL=OFF + -DUAGENT_ISOLATED_INSTALL:BOOL=OFF + ) +endif() + +# Main project. +ExternalProject_Add(micro_ros_agent + SOURCE_DIR + ${PROJECT_SOURCE_DIR} + BINARY_DIR + ${CMAKE_CURRENT_BINARY_DIR} + CMAKE_CACHE_ARGS + -DMICROROSAGENT_SUPERBUILD:BOOL=OFF + INSTALL_COMMAND + "" + DEPENDS + xrceagent + ) diff --git a/micro_ros_agent/package.xml b/micro_ros_agent/package.xml index fbdd317..ab2b1ba 100644 --- a/micro_ros_agent/package.xml +++ b/micro_ros_agent/package.xml @@ -2,9 +2,10 @@ micro_ros_agent - 0.0.1 - DDS-XCRE agent implementation - Borja Outerelo + 1.0.0 + micro-ROS Agent package + Pablo Garrido + Antonio Cuadros Apache License 2.0 ament_cmake @@ -14,7 +15,6 @@ ament_lint_auto ament_lint_common - microxrcedds_agent rmw rcutils rmw_fastrtps_shared_cpp