menuconfig BR2_PACKAGE_OPENCV3
	bool "opencv3"
	select BR2_PACKAGE_ZLIB
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_WCHAR
	depends on !BR2_STATIC_LIBS # include dlfcn.h
	# Causes some toolchain failures on Xtensa
	depends on !BR2_xtensa
	depends on !BR2_PACKAGE_OPENCV
	help
	  OpenCV (Open Source Computer Vision) is a library of programming
	  functions for real time computer vision.

	  Note that the opencv_core module and the opencv_hal library
	  are always built and installed, not matter which other
	  modules are enabled below.

	  http://opencv.org/

if BR2_PACKAGE_OPENCV3

comment "OpenCV modules"

config BR2_PACKAGE_OPENCV3_LIB_CALIB3D
	bool "calib3d"
	select BR2_PACKAGE_OPENCV3_LIB_FEATURES2D
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	help
	  Include opencv_calib3d (camera calibration and 3d reconstruction) module
	  into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_FEATURES2D
	bool "features2d"
	select BR2_PACKAGE_OPENCV3_LIB_FLANN
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	select BR2_PACKAGE_OPENCV3_LIB_ML
	help
	  Include opencv_features2d (2d features framework) module into the OpenCV
	  build.

config BR2_PACKAGE_OPENCV3_LIB_FLANN
	bool "flann"
	# opencv_core dependency is already enabled
	help
	  Include opencv_flann (clustering and search in multi-dimensional spaces)
	  module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_HIGHGUI
	bool "highgui"
	select BR2_PACKAGE_OPENCV3_LIB_IMGCODECS
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	select BR2_PACKAGE_OPENCV3_LIB_VIDEOIO
	help
	  Include opencv_highgui (high-level gui and media i/o) module into the
	  OpenCV build.

if BR2_PACKAGE_OPENCV3_LIB_HIGHGUI

choice
	prompt "gui toolkit"
	help
	  GUI toolkit to be used by the opencv_highgui module.

config BR2_PACKAGE_OPENCV3_GUI_NONE
	bool "none"

config BR2_PACKAGE_OPENCV3_WITH_GTK
	bool "gtk2"
	depends on BR2_PACKAGE_LIBGTK2

comment "gtk2 support needs libgtk2"
	depends on BR2_USE_MMU # libgtk2 -> glib2
	depends on BR2_ARCH_HAS_ATOMICS # libgtk2 -> cairo
	depends on !BR2_PACKAGE_LIBGTK2

config BR2_PACKAGE_OPENCV3_WITH_GTK3
	bool "gtk3"
	depends on BR2_PACKAGE_LIBGTK3

comment "gtk3 support needs libgtk3"
	depends on BR2_USE_MMU # libgtk3 -> glib2
	depends on BR2_ARCH_HAS_ATOMICS # libgtk3 -> cairo
	depends on !BR2_PACKAGE_LIBGTK3

config BR2_PACKAGE_OPENCV3_WITH_QT
	bool "qt4"
	depends on BR2_PACKAGE_QT
	select BR2_PACKAGE_QT_STL
	select BR2_PACKAGE_QT_GUI_MODULE
	select BR2_PACKAGE_QT_TEST
	help
	  Use Qt4 with QtTest and QtGui modules and STL support, as GUI toolkit.

comment "qt4 support needs qt"
	depends on BR2_USE_MMU # qt
	depends on !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5

config BR2_PACKAGE_OPENCV3_WITH_QT5
	bool "qt5"
	depends on BR2_PACKAGE_QT5
	select BR2_PACKAGE_QT5BASE
	select BR2_PACKAGE_QT5BASE_CONCURRENT
	select BR2_PACKAGE_QT5BASE_GUI
	select BR2_PACKAGE_QT5BASE_WIDGETS
	help
	  Use Qt5 with base, concurrent, test, gui and widgets components, as GUI
	  toolkit.

comment "qt5 support needs qt5"
	depends on !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5

endchoice

config BR2_PACKAGE_OPENCV3_WITH_OPENGL
	bool "opengl support"
	# OpenGL support done using Qt5OpenGL, so depends on WITH_QT5
	depends on BR2_PACKAGE_OPENCV3_WITH_QT5
	# OpenGL support requires Qt5OpenGL with GL support, not GLES
	depends on BR2_PACKAGE_QT5_GL_AVAILABLE
	depends on BR2_PACKAGE_HAS_LIBGL
	select BR2_PACKAGE_QT5BASE_OPENGL
	help
	  Enable OpenGL for UI.

comment "opengl support needs an OpenGL provider"
	depends on BR2_PACKAGE_OPENCV3_WITH_QT5
	depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || \
		!BR2_PACKAGE_HAS_LIBGL

endif # BR2_PACKAGE_OPENCV3_LIB_HIGHGUI


config BR2_PACKAGE_OPENCV3_LIB_IMGCODECS
	bool "imgcodecs"
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	help
	  Include opencv_imgcodecs (image codecs) module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	bool "imgproc"
	# opencv_core dependency is already enabled
	help
	  Include opencv_imgproc (image processing) module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_ML
	bool "ml"
	# opencv_core dependency is already enabled
	help
	  Include opencv_ml (machine learning) module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_OBJDETECT
	bool "objdetect"
	# opencv_core dependency is already enabled
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	select BR2_PACKAGE_OPENCV3_LIB_ML
	help
	  Include opencv_objdetect (object detection) module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_PHOTO
	bool "photo"
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	help
	  Include opencv_photo (computational photography) module into the OpenCV
	  build.

config BR2_PACKAGE_OPENCV3_LIB_PYTHON
	bool "python"
	depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3
	depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 \
		|| BR2_mips || BR2_mipsel || BR2_powerpc || BR2_powerpc64 \
		|| BR2_sh || BR2_x86_64 # python-numpy
	depends on !BR2_TOOLCHAIN_USES_UCLIBC || BR2_i386 || BR2_x86_64 # python-numpy
	select BR2_PACKAGE_PYTHON_NUMPY
	help
	  Include opencv_python module into the OpenCV build.
	  No python example is installed.

config BR2_PACKAGE_OPENCV3_LIB_SHAPE
	bool "shape"
	# opencv_core dependency is already enabled
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	select BR2_PACKAGE_OPENCV3_LIB_VIDEO
	help
	  Include opencv_shape (shape descriptors and matchers) module into the
	  OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_STITCHING
	bool "stitching"
	select BR2_PACKAGE_OPENCV3_LIB_CALIB3D
	select BR2_PACKAGE_OPENCV3_LIB_FEATURES2D
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	select BR2_PACKAGE_OPENCV3_LIB_OBJDETECT
	help
	  Include opencv_stitching (images stitching) module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_SUPERRES
	bool "superres"
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	select BR2_PACKAGE_OPENCV3_LIB_VIDEO
	help
	  Include opencv_superres (super resolution) module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_TS
	bool "ts"
	# opencv_core dependency is already enabled
	select BR2_PACKAGE_OPENCV3_LIB_HIGHGUI
	select BR2_PACKAGE_OPENCV3_LIB_IMGCODECS
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	select BR2_PACKAGE_OPENCV3_LIB_VIDEOIO
	help
	  Include opencv_ts (test) module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_VIDEOIO
	bool "videoio"
	select BR2_PACKAGE_OPENCV3_LIB_IMGCODECS
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	help
	  Include opencv_videoio (media i/o) module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_VIDEO
	bool "video"
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	help
	  Include opencv_video (video analysis) module into the OpenCV build.

config BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB
	bool "videostab"
	select BR2_PACKAGE_OPENCV3_LIB_CALIB3D
	select BR2_PACKAGE_OPENCV3_LIB_FEATURES2D
	select BR2_PACKAGE_OPENCV3_LIB_IMGPROC
	select BR2_PACKAGE_OPENCV3_LIB_PHOTO
	select BR2_PACKAGE_OPENCV3_LIB_VIDEO
	help
	  Include opencv_videostab (video stabilization) module into the OpenCV
	  build.

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

config BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS
	bool "build performance tests"

comment "3rd party support"

config BR2_PACKAGE_OPENCV3_WITH_FFMPEG
	bool "ffmpeg support"
	select BR2_PACKAGE_BZIP2
	select BR2_PACKAGE_FFMPEG
	select BR2_PACKAGE_FFMPEG_SWSCALE
	help
	  Use ffmpeg from the target system.

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

config BR2_PACKAGE_OPENCV3_WITHOUT_GSTREAMER
	bool "none"

config BR2_PACKAGE_OPENCV3_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_OPENCV3_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_OPENCV3_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_OPENCV3_WITH_JPEG
	bool "jpeg support"
	select BR2_PACKAGE_JPEG
	help
	  Use shared libjpeg from the target system.

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

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

config BR2_PACKAGE_OPENCV3_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_OPENCV3_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_OPENCV3

comment "opencv3 needs a toolchain w/ C++, NPTL, wchar, dynamic library"
	depends on !BR2_xtensa
	depends on !BR2_INSTALL_LIBSTDCPP || \
		!BR2_USE_WCHAR || \
		!BR2_TOOLCHAIN_HAS_THREADS_NPTL || \
		BR2_STATIC_LIBS
