package/opencv: define modules inter-dependencies
authorSamuel Martin <s.martin49@gmail.com>
Thu, 25 Jun 2015 19:59:45 +0000 (21:59 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Fri, 26 Jun 2015 18:42:04 +0000 (20:42 +0200)
OpenCV allows to enable/disable the selection of modules (a.k.a.
opencv libraries). These modules depend one on the others; these
dependencies are already handled by the build-system (CMake).

However, the way we handled them in Buildroot was not really clean.
For each opencv module, there is a kconfig option, but we forced the
corresponding CMake config option without checking for the modules'
dependencies.

This patch replicates the modules' dependency relations in the
Config.in, so that the selection of the user will actually be built.

Signed-off-by: Samuel Martin <s.martin49@gmail.com>
Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Cc: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/opencv/Config.in

index b327864fc9d7636bfc23bfc886b63e5bb23f6717..6b1ffcfe2d0391b33c9c25b7a5d0279c6c42e12b 100644 (file)
@@ -22,54 +22,70 @@ comment "OpenCV modules"
 config BR2_PACKAGE_OPENCV_LIB_CALIB3D
        bool "calib3d"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
        help
          Include opencv_calib3d module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_FEATURES2D
        bool "features2d"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_FLANN
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+       select BR2_PACKAGE_OPENCV_LIB_ML
        help
          Include opencv_features2d module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_FLANN
        bool "flann"
        default y
+       # opencv_core dependency is already enabled
        help
          Include opencv_flann module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_HIGHGUI
        bool "highgui"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_IMGCODECS
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+       select BR2_PACKAGE_OPENCV_LIB_VIDEOIO
        help
          Include opencv_highgui module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_IMGCODECS
        bool "imgcodecs"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
        help
          Include opencv_imgcodecs module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_IMGPROC
        bool "imgproc"
        default y
+       # opencv_core dependency is already enabled
        help
          Include opencv_imgproc module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_ML
        bool "ml"
        default y
+       # opencv_core dependency is already enabled
        help
          Include opencv_ml module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_OBJDETECT
        bool "objdetect"
        default y
+       # opencv_core dependency is already enabled
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+       select BR2_PACKAGE_OPENCV_LIB_ML
        help
          Include opencv_objdetect module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_PHOTO
        bool "photo"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
        help
          Include opencv_photo module into the OpenCV build.
 
@@ -78,44 +94,65 @@ comment "opencv_python module requires numpy which is not yet available."
 config BR2_PACKAGE_OPENCV_LIB_SHAPE
        bool "shape (shape descriptors and matchers)"
        default y
+       # opencv_core dependency is already enabled
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+       select BR2_PACKAGE_OPENCV_LIB_VIDEO
        help
          Include opencv_shape module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_STITCHING
        bool "stitching"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_CALIB3D
+       select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+       select BR2_PACKAGE_OPENCV_LIB_OBJDETECT
        help
          Include opencv_stitching module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_SUPERRES
        bool "superres"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+       select BR2_PACKAGE_OPENCV_LIB_VIDEO
        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
+       # opencv_core dependency is already enabled
+       select BR2_PACKAGE_OPENCV_LIB_HIGHGUI
+       select BR2_PACKAGE_OPENCV_LIB_IMGCODECS
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+       select BR2_PACKAGE_OPENCV_LIB_VIDEOIO
        help
          Include opencv_ts module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_VIDEOIO
        bool "videoio (media i/o)"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_IMGCODECS
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
        help
          Include opencv_videoio module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_VIDEO
        bool "video"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
        help
          Include opencv_video module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_VIDEOSTAB
        bool "videostab"
        default y
+       select BR2_PACKAGE_OPENCV_LIB_CALIB3D
+       select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
+       select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+       select BR2_PACKAGE_OPENCV_LIB_PHOTO
+       select BR2_PACKAGE_OPENCV_LIB_VIDEO
        help
          Include opencv_videostab module into the OpenCV build.