[Buildroot] [PATCH v2] opencv: Replace absolute path of static library with -l$library_name

Vicente Olivert Riera Vincent.Riera at imgtec.com
Wed Oct 1 12:44:10 UTC 2014


Some opencv modules are forced to build statically (for instance the
"ts" module) because they have a line like this one in their
CMakeLists.txt file:

  set(OPENCV_MODULE_TYPE STATIC)

That makes a static library get installed and also listed in the "Libs:"
line of the pkgconfig file (opencv.pc) along with all the shared
libraries. That can cause link failures in other packages which link to
opencv, for instance the gst1-plugins-bad package. Here is an example of
the link failure:

  CXXLD    libgstopencv.la

*** Warning: Linking the shared library libgstopencv.la against the
*** static library /usr/lib/libopencv_ts.a is not portable!
mips-linux-gnu-g++: error: /usr/lib/libopencv_ts.a: No such file or
directory
make[4]: *** [libgstopencv.la] Error 1

The solution is to not list the static library in the "Libs:" line of
the pkgconfig file and add '-lopencv_ts' instead.

This issue has been reported upstream:
  http://code.opencv.org/issues/3931

Fixes:
  http://autobuild.buildroot.net/results/e8a/e8a859276db34aff87ef181b0cce98916b0afc90/

Signed-off-by: Vicente Olivert Riera <Vincent.Riera at imgtec.com>
---
 package/opencv/opencv.mk |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/package/opencv/opencv.mk b/package/opencv/opencv.mk
index 628624a..949dbfd 100644
--- a/package/opencv/opencv.mk
+++ b/package/opencv/opencv.mk
@@ -247,4 +247,12 @@ endef
 OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DATA
 endif
 
+ifeq ($(BR2_PACKAGE_OPENCV_LIB_TS),y)
+define OPENCV_FIX_PC_FILE_LIBS
+	$(SED) '/^Libs:/s/$${exec_prefix}\/lib\/libopencv_ts.a/-lopencv_ts/' \
+	       $(STAGING_DIR)/usr/lib/pkgconfig/opencv.pc
+endef
+OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_FIX_PC_FILE_LIBS
+endif
+
 $(eval $(cmake-package))
-- 
1.7.1



More information about the buildroot mailing list