menuconfig BR2_PACKAGE_OPENCV
	bool "opencv-2.4"
	select BR2_PACKAGE_ZLIB
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_WCHAR
	help
	  OpenCV (Open Source Computer Vision) is a library of programming
	  functions for real time computer vision.

	  http://opencv.org/

if BR2_PACKAGE_OPENCV

comment "OpenCV modules"

config BR2_PACKAGE_OPENCV_LIB_CALIB3D
	bool "calib3d"
	default y
	help
	  Include opencv_calib3d module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_CONTRIB
	bool "contrib"
	default y
	help
	  Include opencv_contrib module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_FEATURES2D
	bool "features2d"
	default y
	help
	  Include opencv_features2d module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_FLANN
	bool "flann"
	default y
	help
	  Include opencv_flann module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_GPU
	bool "gpu"
	help
	  Include opencv_gpu module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_HIGHGUI
	bool "highgui"
	default y
	help
	  Include opencv_highgui module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_IMGPROC
	bool "imgproc"
	default y
	help
	  Include opencv_imgproc module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_LEGACY
	bool "legacy"
	default y
	help
	  Include opencv_legacy module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_ML
	bool "ml (machine learning)"
	default y
	help
	  Include opencv_ml module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_NONFREE
	bool "nonfree"
	help
	  Include opencv_nonfree module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_OBJDETECT
	bool "objdetect"
	default y
	help
	  Include opencv_objdetect module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_PHOTO
	bool "photo"
	default y
	help
	  Include opencv_photo module into the OpenCV build.

comment "opencv_python module requires numpy which is not yet available."

config BR2_PACKAGE_OPENCV_LIB_STITCHING
	bool "stitching"
	default y
	help
	  Include opencv_stitching module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_SUPERRES
	bool "superres"
	default y
	help
	  Include opencv_superres "super resolution" - module into the OpenCV
	  build.

config BR2_PACKAGE_OPENCV_LIB_TS
	bool "ts (touchscreen)"
	select BR2_PACKAGE_OPENCV_LIB_HIGHGUI
	default y
	help
	  Include opencv_ts module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_VIDEO
	bool "video"
	default y
	help
	  Include opencv_video module into the OpenCV build.

config BR2_PACKAGE_OPENCV_LIB_VIDEOSTAB
	bool "videostab"
	default y
	help
	  Include opencv_videostab module into the OpenCV build.

comment "Test sets"
config BR2_PACKAGE_OPENCV_BUILD_TESTS
	bool "build tests"

config BR2_PACKAGE_OPENCV_BUILD_PERF_TESTS
	bool "build performance tests"

comment "3rd party support"

config BR2_PACKAGE_OPENCV_WITH_FFMPEG
	bool "ffmpeg support"
	select BR2_PACKAGE_BZIP2
	select BR2_PACKAGE_FFMPEG
	select BR2_PACKAGE_FFMPEG_SWSCALE
	depends on !BR2_nios2 # ffmpeg
	help
	  Use ffmpeg from the target system.

choice
	prompt "gstreamer support"
	help
	  OpenCV prefers gstreamer-1 over gstreamer-0.10.

config BR2_PACKAGE_OPENCV_WITHOUT_GSTREAMER
	bool "none"

config BR2_PACKAGE_OPENCV_WITH_GSTREAMER
	bool "gstreamer-0.10"
	depends on BR2_USE_MMU # gstreamer -> libglib2
	depends on BR2_USE_WCHAR # gstreamer -> libglib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer -> libglib2
	select BR2_PACKAGE_GSTREAMER
	select BR2_PACKAGE_GST_PLUGINS_BASE
	select BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP

comment "gstreamer-0.10 support needs a toolchain w/ wchar, threads"
	depends on BR2_USE_MMU
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_OPENCV_WITH_GSTREAMER1
	bool "gstreamer-1.x"
	depends on BR2_USE_MMU # gstreamer1 -> libglib2
	depends on BR2_USE_WCHAR # gstreamer1 -> libglib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer1 -> libglib2
	select BR2_PACKAGE_GSTREAMER1
	select BR2_PACKAGE_GST1_PLUGINS_BASE
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP

comment "gstreamer-1.x support needs a toolchain w/ wchar, threads"
	depends on BR2_USE_MMU
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS

endchoice

config BR2_PACKAGE_OPENCV_WITH_GTK
	bool "gtk support"
	depends on BR2_PACKAGE_XORG7
	depends on BR2_USE_WCHAR # libgtk2 -> libglib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # libgtk2 -> libglib2
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_MMU # libgtk2 -> glib2
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz
	depends on BR2_PACKAGE_OPENCV_LIB_HIGHGUI
	select BR2_PACKAGE_LIBGTK2

config BR2_PACKAGE_OPENCV_WITH_JASPER
	bool "jpeg2000 support"
	select BR2_PACKAGE_JASPER
	help
	  Enable jpeg2000 support.

	  Note: this does not use the libjasper bundled with opencv,
	  but uses the libjasper package installed system-wide by
	  Buildroot.

config BR2_PACKAGE_OPENCV_WITH_JPEG
	bool "jpeg support"
	select BR2_PACKAGE_JPEG
	help
	  Use shared libjpeg from the target system.

config BR2_PACKAGE_OPENCV_WITH_PNG
	bool "png support"
	select BR2_PACKAGE_LIBPNG
	help
	  Use shared libpng from the target system.

config BR2_PACKAGE_OPENCV_WITH_QT
	bool "qt backend support"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_MMU # qt
	depends on BR2_PACKAGE_OPENCV_LIB_HIGHGUI
	select BR2_PACKAGE_QT
	select BR2_PACKAGE_QT_STL
	select BR2_PACKAGE_QT_GUI_MODULE
	select BR2_PACKAGE_QT_TEST
	help
	  Use Qt with QtTest module and STL support

config BR2_PACKAGE_OPENCV_WITH_TIFF
	bool "tiff support"
	select BR2_PACKAGE_TIFF
	help
	  Use shared libtiff from the target system.

config BR2_PACKAGE_OPENCV_WITH_V4L
	bool "v4l support"
	help
	  Enable Video 4 Linux support.

	  If the package libv4l is enabled, its support is automatically enabled.

comment "Install options"

config BR2_PACKAGE_OPENCV_INSTALL_DATA
	bool "install extra data"
	help
	  Install various data that is used by cv libraries and/or demo
	  applications, specifically for haarcascades and lbpcascades
	  features.

	  For further information: see OpenCV documentation.

endif # BR2_PACKAGE_OPENCV

comment "opencv needs a toolchain w/ C++, NPTL, wchar"
	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS_NPTL)
