From bdd682152af73e1aa63de573dc3924484a0b0cfa Mon Sep 17 00:00:00 2001 From: Lukas Bulwahn Date: Thu, 19 Feb 2015 09:23:06 +0100 Subject: [PATCH] dwa-local-planner: improving linking in CMakeLists.txt I discovered the linking issue while investigating #291. Signed-off-by: Lukas Bulwahn --- ...ly-libraries-found-with-find_package.patch | 51 +++++++++++++++++++ .../navigation/dwa-local-planner_1.11.14.bb | 2 + 2 files changed, 53 insertions(+) create mode 100644 recipes-ros/navigation/dwa-local-planner/0001-link-only-libraries-found-with-find_package.patch diff --git a/recipes-ros/navigation/dwa-local-planner/0001-link-only-libraries-found-with-find_package.patch b/recipes-ros/navigation/dwa-local-planner/0001-link-only-libraries-found-with-find_package.patch new file mode 100644 index 0000000..36a6e45 --- /dev/null +++ b/recipes-ros/navigation/dwa-local-planner/0001-link-only-libraries-found-with-find_package.patch @@ -0,0 +1,51 @@ +From 2cb85fa4b189ea62bc918a5fc54bb6ba73a6e125 Mon Sep 17 00:00:00 2001 +From: Lukas Bulwahn +Date: Thu, 19 Feb 2015 08:18:03 +0100 +Subject: [PATCH] link only libraries found with find_package + +When cross-compiling dwa_local_planner with the OpenEmbedded layer +for ROS, meta-ros [1], I stumbled over the following issue. During +'Linking CXX shared library devel/lib/libdwa_local_planner.so', the +g++ call for this linking step includes amongst many other arguments +these two arguments in this order: + + -lbase_local_planner /[...]/sysroots/qemux86/opt/ros/hydro/lib/libbase_local_planner.so + +In the meta-ros setup, the linker aborts with: + .../sysroots/x86_64-linux/usr/libexec/i586-oe-linux/gcc/i586-oe-linux/4.9.1/ld: cannot find -lbase_local_planner + +The linking fails, because in the cross-compiling scenario, +-lbase_local_planner is not resolved. However, cmake and the +find_package command is set up such that the pathes are resolved +correctly in this setting. To use these correct pathes, the +link_target_libraries should not hard-code the library name, but +only use the libraries found with find_package. + +Probably, this has not been noticed before, as in the common setup, +find_package resolved to the hard-coded value. + +[1] https://github.com/bmwcarit/meta-ros/ + +Signed-off-by: Lukas Bulwahn + +Upstream-Status: Submitted [https://github.com/ros-planning/navigation/pull/311] +--- + dwa_local_planner/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dwa_local_planner/CMakeLists.txt b/dwa_local_planner/CMakeLists.txt +index e68286e..6e9a11a 100644 +--- a/dwa_local_planner/CMakeLists.txt ++++ b/dwa_local_planner/CMakeLists.txt +@@ -42,7 +42,7 @@ catkin_package( + ) + + add_library(dwa_local_planner src/dwa_planner.cpp src/dwa_planner_ros.cpp) +-target_link_libraries(dwa_local_planner base_local_planner ${catkin_LIBRARIES}) ++target_link_libraries(dwa_local_planner ${catkin_LIBRARIES}) + add_dependencies(dwa_local_planner dwa_local_planner_gencfg) + add_dependencies(dwa_local_planner nav_msgs_gencpp) + +-- +1.8.3.2 + diff --git a/recipes-ros/navigation/dwa-local-planner_1.11.14.bb b/recipes-ros/navigation/dwa-local-planner_1.11.14.bb index b094242..6bd829e 100644 --- a/recipes-ros/navigation/dwa-local-planner_1.11.14.bb +++ b/recipes-ros/navigation/dwa-local-planner_1.11.14.bb @@ -8,3 +8,5 @@ DEPENDS = "base-local-planner costmap-2d dynamic-reconfigure libeigen nav-core \ nav-msgs pluginlib pcl-conversions roscpp tf" require navigation.inc + +SRC_URI += "file://0001-link-only-libraries-found-with-find_package.patch;striplevel=2"