From 2c3b5810810d258dd6a9e9f7a89f98ceb5e3943c Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Tue, 20 Sep 2016 23:03:00 +0200 Subject: [PATCH 1/3] Revert "require version 0.4 of urdfdom_headers (#24)" This reverts commit 701f77d87b6037e45f6aeba83e9ef55631821d16. --- CMakeLists.txt | 2 +- package.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 70a0c3f..a28ecea 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) 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 From 76faf45d2cd933f578484f3b2b2ae96b05eae6af Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Tue, 20 Sep 2016 23:05:34 +0200 Subject: [PATCH 2/3] urdfdom compatibility * test for existence of urdf typedef * if not existing, activate compatibility header --- CMakeLists.txt | 24 +++++++++++- include/srdfdom/model.h | 1 + urdfdom_compatibility.h.in | 78 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 urdfdom_compatibility.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt index a28ecea..94e039a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,11 +14,32 @@ 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) +# check for existence of type urdf::LinkSharedPtr +include(CheckCXXSourceCompiles) +check_cxx_source_compiles(" +#include + +int main(int argc, char** argv) +{ + urdf::LinkSharedPtr l; + return 0; +} +" HAVE_URDFDOM_4) +if(NOT HAVE_URDFDOM_4) + set(HAVE_URDFDOM_4 "0") +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 +57,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/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_ From 6b629bfb51fe58ad3d9b506b8423f874f8297b99 Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Thu, 22 Sep 2016 12:50:09 +0200 Subject: [PATCH 3/3] applied simplificationn suggested by @v4hn --- CMakeLists.txt | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 94e039a..f4e919f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,19 +16,10 @@ link_directories(${catkin_LIBRARY_DIRS}) ### Maintain compatibility to old urdfdom_headers (version < 4.0) -# check for existence of type urdf::LinkSharedPtr -include(CheckCXXSourceCompiles) -check_cxx_source_compiles(" -#include - -int main(int argc, char** argv) -{ - urdf::LinkSharedPtr l; - return 0; -} -" HAVE_URDFDOM_4) -if(NOT HAVE_URDFDOM_4) - set(HAVE_URDFDOM_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")