diff --git a/CMakeLists.txt b/CMakeLists.txt index 70a0c3f..f4e919f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ find_package(Boost REQUIRED) include_directories(SYSTEM ${Boost_INCLUDE_DIR}) find_package(console_bridge REQUIRED) -find_package(urdfdom_headers 0.4 REQUIRED) +find_package(urdfdom_headers REQUIRED) find_package(catkin REQUIRED COMPONENTS cmake_modules urdfdom_py) @@ -14,11 +14,23 @@ find_package(TinyXML REQUIRED) include_directories(include ${TinyXML_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS} ${console_bridge_INCLUDE_DIRS} ${urdfdom_headers_INCLUDE_DIRS}) link_directories(${catkin_LIBRARY_DIRS}) + +### Maintain compatibility to old urdfdom_headers (version < 4.0) +if( "0.4.0" VERSION_GREATER "${urdfdom_headers_VERSION}") + set(HAVE_URDFDOM_4 0) +else() + set(HAVE_URDFDOM_4 1) +endif() +set(generated_compat_header "${CATKIN_DEVEL_PREFIX}/include/${PROJECT_NAME}/urdfdom_compatibility.h") +include_directories("${CATKIN_DEVEL_PREFIX}/include") +configure_file(urdfdom_compatibility.h.in "${generated_compat_header}" @ONLY) + + catkin_python_setup() catkin_package( LIBRARIES ${PROJECT_NAME} - INCLUDE_DIRS include ${TinyXML_INCLUDE_DIRS} + INCLUDE_DIRS include ${TinyXML_INCLUDE_DIRS} ${CATKIN_DEVEL_PREFIX}/include DEPENDS console_bridge urdfdom_headers urdfdom_py ) @@ -36,6 +48,7 @@ install(DIRECTORY include/${PROJECT_NAME}/ DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} FILES_MATCHING PATTERN "*.h" ) +install(FILES ${generated_compat_header} DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}) install(PROGRAMS scripts/display_srdf diff --git a/include/srdfdom/model.h b/include/srdfdom/model.h index 51a81c1..68ff337 100644 --- a/include/srdfdom/model.h +++ b/include/srdfdom/model.h @@ -42,6 +42,7 @@ #include #include #include +#include #include #include diff --git a/package.xml b/package.xml index c1d20cd..7ed0d00 100644 --- a/package.xml +++ b/package.xml @@ -16,13 +16,13 @@ boost cmake_modules libconsole-bridge-dev - liburdfdom-headers-dev + liburdfdom-headers-dev urdfdom_py tinyxml boost libconsole-bridge-dev - liburdfdom-headers-dev + liburdfdom-headers-dev tinyxml urdfdom_py diff --git a/urdfdom_compatibility.h.in b/urdfdom_compatibility.h.in new file mode 100644 index 0000000..c096394 --- /dev/null +++ b/urdfdom_compatibility.h.in @@ -0,0 +1,78 @@ +/********************************************************************* +* Software License Agreement (BSD License) +* +* Copyright (c) 2016, CITEC, Bielefeld University +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above +* copyright notice, this list of conditions and the following +* disclaimer in the documentation and/or other materials provided +* with the distribution. +* * Neither the name of the Willow Garage nor the names of its +* contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +*********************************************************************/ + +/* Robert Haschke */ + +#ifndef SRDF_URDFDOM_COMPATIBILITY_ +#define SRDF_URDFDOM_COMPATIBILITY_ + +// This code is only activated when urdfdom's type forwards were not available +// at cmake configuration time + +#if @HAVE_URDFDOM_4@ == 0 + +#include +#include + +#define URDF_TYPEDEF_CLASS_POINTER(Class) \ +class Class; \ +typedef boost::shared_ptr Class##SharedPtr; \ +typedef boost::shared_ptr Class##ConstSharedPtr; \ +typedef boost::weak_ptr Class##WeakPtr + +namespace urdf { +URDF_TYPEDEF_CLASS_POINTER(Box); +URDF_TYPEDEF_CLASS_POINTER(Collision); +URDF_TYPEDEF_CLASS_POINTER(Cylinder); +URDF_TYPEDEF_CLASS_POINTER(Geometry); +URDF_TYPEDEF_CLASS_POINTER(Inertial); + +URDF_TYPEDEF_CLASS_POINTER(Joint); +URDF_TYPEDEF_CLASS_POINTER(JointCalibration); +URDF_TYPEDEF_CLASS_POINTER(JointDynamics); +URDF_TYPEDEF_CLASS_POINTER(JointLimits); +URDF_TYPEDEF_CLASS_POINTER(JointMimic); +URDF_TYPEDEF_CLASS_POINTER(JointSafety); + +URDF_TYPEDEF_CLASS_POINTER(Link); +URDF_TYPEDEF_CLASS_POINTER(Material); +URDF_TYPEDEF_CLASS_POINTER(Mesh); +URDF_TYPEDEF_CLASS_POINTER(Sphere); +URDF_TYPEDEF_CLASS_POINTER(Visual); +} + +#undef URDF_TYPEDEF_CLASS_POINTER + +#endif +#endif // SRDF_URDFDOM_COMPATIBILITY_