[Buildroot] [PATCH v5] package: add opencv
Peter Korsgaard
jacmet at uclibc.org
Mon Oct 24 13:35:32 UTC 2011
>>>>> "Samuel" == Samuel Martin <s.martin49 at gmail.com> writes:
Samuel> OpenCV is a free, open-source, cross-platform computer vision library
Samuel> Changelog:
Samuel> v1: initial submission
Samuel> v2: changes according to Thomas Petazonni's review:
Samuel> - remove obvious unneeded options
Samuel> - typo and style fixes
Samuel> - do not use 3RDPARTY_LIBS
Samuel> v3: changes according to Thomas Petazonni's review:
Samuel> - typo and style fixes
Samuel> - remove host package (not needed)
Samuel> v4: update CMAKETARGET call to follow the infra.
Samuel> v5: - add post install hooks (following Mike Davies' remarks):
Samuel> - do not install doc
Samuel> - do not install OpenCVConfig.cmake in the target
Samuel> - optionally install data in the target
Samuel> - remove the 'Build examples' option (only install source files)
Samuel> - disable precompiled header usage (automacally disabled when
Samuel> compiler size optimization is set)
Thanks, committed with some changes (see below)
Samuel> +menuconfig BR2_PACKAGE_OPENCV
I prefer config rather than yet another submenu.
Samuel> + bool "opencv"
Samuel> + select BR2_PACKAGE_ZLIB
opencv uses C++ and needs wchar, so you need to depend on
BR2_INSTALL_LIBSTDCPP / show a comment when they aren't available in the
toolchain.
Samuel> + help
Samuel> + OpenCV (Open Source Computer Vision) is a library of programming
Samuel> + functions for real time computer vision.
Samuel> +
Samuel> + http://opencv.willowgarage.com/wiki/
Samuel> +
Samuel> +if BR2_PACKAGE_OPENCV
Samuel> +
Samuel> +comment "Built targets"
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_BUILD_NEW_PYTHON_SUPPORT
Samuel> + bool "Python support"
Samuel> + select BR2_PACKAGE_PYTHON
This should only be shown if python is enabled already, similar to the
gtk/qt options. It imho also belongs down there.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_BUILD_TESTS
Samuel> + bool "Tests"
config descriptions are normally in lower case.
Samuel> +
Samuel> +comment "Install options"
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_INSTALL_DATA
Samuel> + bool "Install data"
I made this "install extra data" to make it clear that this isn't
necessarily needed.
Samuel> + help
Samuel> + Install various data that is used by cv libraries and/or demo
Samuel> + applications, specifically for haarcascades and lbpcascades features.
Samuel> +
Samuel> + For further information: see OpenCV documentation.
Samuel> +
Samuel> +comment "Build options"
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_FFMPEG
Samuel> + bool "FFMPEG support"
Samuel> + select BR2_PACKAGE_FFMPEG
Samuel> + select BR2_PACKAGE_FFMPEG_SWSCALE
Samuel> + help
Samuel> + Use ffmpeg from the target system.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_GSTREAMER
Samuel> + bool "Gstreamer support"
Samuel> + select BR2_PACKAGE_GSTREAMER
Samuel> + select BR2_PACKAGE_GST_PLUGINS_BASE
Samuel> + select BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_GTK
Samuel> + bool "GTK support"
Samuel> + depends on BR2_PACKAGE_LIBGTK2 && BR2_PACKAGE_LIBGLIB2
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_JPEG
Samuel> + bool "JPEG support"
Samuel> + select BR2_PACKAGE_JPEG
Samuel> + help
Samuel> + Use shared libjpeg from the target system.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_PNG
Samuel> + bool "PNG support"
Samuel> + select BR2_PACKAGE_LIBPNG
Samuel> + help
Samuel> + Use shared libpng from the target system.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_QT
Samuel> + bool "Qt Backend support"
Samuel> + select BR2_PACKAGE_QT
I moved this up under gtk.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_TIFF
Samuel> + bool "TIFF support"
Samuel> + select BR2_PACKAGE_TIFF
Samuel> + help
Samuel> + Use shared libtiff from the target system.
Samuel> +
Samuel> +config BR2_PACKAGE_OPENCV_WITH_V4L
Samuel> + bool "Video 4 Linux support"
Samuel> + select BR2_PACKAGE_LIBV4L
libv4l needs largefile support, so you need to depend on that / show a
comment if not available.
Samuel> + default y
Samuel> +
Samuel> +endif
Samuel> diff --git a/package/opencv/opencv.mk b/package/opencv/opencv.mk
Samuel> new file mode 100644
Samuel> index 0000000..48add1e
Samuel> --- /dev/null
Samuel> +++ b/package/opencv/opencv.mk
Samuel> @@ -0,0 +1,80 @@
Samuel> +#############################################################
Samuel> +#
Samuel> +# OpenCV (Open Source Computer Vision)
Samuel> +#
Samuel> +#############################################################
Samuel> +OPENCV_SERIES = 2.3
Samuel> +OPENCV_VERSION = $(OPENCV_SERIES).0
Samuel> +OPENCV_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/project/opencvlibrary/opencv-unix/$(OPENCV_SERIES)
Samuel> +OPENCV_SOURCE = OpenCV-$(OPENCV_VERSION).tar.bz2
Samuel> +OPENCV_INSTALL_STAGING = YES
Samuel> +
Samuel> +# Build type
Samuel> +OPENCV_CONF_OPT += -DCMAKE_BUILD_TYPE=$(if $(BR2_ENABLE_DEBUG),Debug,Release)
While this works it looks quite different than other packages - We
normally do:
OPENCV_CONF_OPT += \
blah=.. \
blih=.. \
bloh=..
ifeq ($(BR2_PACKAGE_BLAH))
OPENCV_CONF_OPT += BLAH=on
OPENCV_DEPENDENCIES += blah
else
OPENCV_CONF_OPT += BLAH=OFF
endif
..
I've rewritten it to use that form.
Samuel> +define OPENCV_CLEAN_INSTALL_DOC
Samuel> + $(RM) -fr $(TARGET_DIR)/usr/share/opencv/doc
Samuel> +endef
This should only be done if BR2_HAVE_DOCUMENTATION isn't enabled.
Samuel> +
Samuel> +define OPENCV_CLEAN_INSTALL_CMAKE
Samuel> + $(RM) -fr $(TARGET_DIR)/usr/share/opencv/*.cmake
Samuel> +endef
This should only be done if cmake for the target isn't enabled.
Samuel> +
Samuel> +define OPENCV_CLEAN_INSTALL_DATA
Samuel> + $(RM) -fr $(TARGET_DIR)/usr/share/opencv/haarcascades \
Samuel> + $(TARGET_DIR)/usr/share/opencv/lbpcascades
Samuel> +endef
Samuel> +
Samuel> +OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DOC OPENCV_CLEAN_INSTALL_CMAKE
Samuel> +OPENCV_POST_INSTALL_TARGET_HOOKS += $(if $(BR2_PACKAGE_OPENCV_INSTALL_DATA),,OPENCV_CLEAN_INSTALL_DATA)
Samuel> +
Samuel> +OPENCV_POST_INSTALL_STAGING_HOOKS += OPENCV_CLEAN_INSTALL_DOC
Samuel> +OPENCV_POST_INSTALL_STAGING_HOOKS += $(if $(BR2_PACKAGE_OPENCV_INSTALL_DATA),,OPENCV_CLEAN_INSTALL_DATA)
It doesn't make sense to run these target hooks when staging gets
installed.
--
Bye, Peter Korsgaard
More information about the buildroot
mailing list