a2afd56594
Starting with the 2.4.6 release, OpenCV supports either Qt4 or Qt5 as GUI toolkit, so add Qt5 in the GUI toolkit choice. When Qt4 is enabled (and thus Qt5 is hidden and disabled), no need to show a comment stating "Qt5 support needs Qt5", because Qt5 is not selectable. Conversely, when Qt5 is enabled and Qt4 is not, then no need to show a comment stating "Qt4 support needs Qt4", because enabling Qt4 would disable Qt5. So, we only show the comments when neither toolkit is enabled. Signed-off-by: Samuel Martin <s.martin49@gmail.com> Cc: "Yann E. MORIN" <yann.morin.1998@free.fr> [yann.morin.1998@free.fr: split-out the Qt5 hunk from the switch-selects-to-depends hunk] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
350 lines
10 KiB
Makefile
350 lines
10 KiB
Makefile
################################################################################
|
|
#
|
|
# opencv
|
|
#
|
|
################################################################################
|
|
|
|
OPENCV_VERSION = 3.0.0
|
|
OPENCV_SITE = $(call github,itseez,opencv,$(OPENCV_VERSION))
|
|
OPENCV_INSTALL_STAGING = YES
|
|
OPENCV_LICENSE = BSD-3c
|
|
OPENCV_LICENSE_FILES = LICENSE
|
|
|
|
# OpenCV component options
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_DOCS=OFF \
|
|
-DBUILD_PERF_TESTS=$(if $(BR2_PACKAGE_OPENCV_BUILD_PERF_TESTS),ON,OFF) \
|
|
-DBUILD_TESTS=$(if $(BR2_PACKAGE_OPENCV_BUILD_TESTS),ON,OFF) \
|
|
-DBUILD_WITH_DEBUG_INFO=OFF
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_BUILD_TESTS)$(BR2_PACKAGE_OPENCV_BUILD_PERF_TESTS),)
|
|
OPENCV_CONF_OPTS += -DINSTALL_TEST=OFF
|
|
else
|
|
OPENCV_CONF_OPTS += -DINSTALL_TEST=ON
|
|
endif
|
|
|
|
# OpenCV build options
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_WITH_STATIC_CRT=OFF \
|
|
-DENABLE_COVERAGE=OFF \
|
|
-DENABLE_FAST_MATH=ON \
|
|
-DENABLE_IMPL_COLLECTION=OFF \
|
|
-DENABLE_NOISY_WARNINGS=OFF \
|
|
-DENABLE_OMIT_FRAME_POINTER=ON \
|
|
-DENABLE_PRECOMPILED_HEADERS=OFF \
|
|
-DENABLE_PROFILING=OFF \
|
|
-DOPENCV_WARNINGS_ARE_ERRORS=OFF
|
|
|
|
# OpenCV link options
|
|
OPENCV_CONF_OPTS += \
|
|
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \
|
|
-DCMAKE_SKIP_RPATH=OFF \
|
|
-DCMAKE_USE_RELATIVE_PATHS=OFF
|
|
|
|
# OpenCV packaging options:
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_PACKAGE=OFF \
|
|
-DENABLE_SOLUTION_FOLDERS=OFF \
|
|
-DINSTALL_CREATE_DISTRIB=OFF
|
|
|
|
# OpenCV module selection
|
|
# * Modules on:
|
|
# - core: if not set, opencv does not build anything
|
|
# - hal: core's dependency
|
|
# * Modules off:
|
|
# - android*: android stuff
|
|
# - apps: programs for training classifiers
|
|
# - java: java bindings
|
|
# - viz: missing VTK dependency
|
|
# - world: all-in-one module
|
|
#
|
|
# * Contrib modules from [1] are disabled:
|
|
# - opencv_contrib package is not available in Buildroot;
|
|
# - OPENCV_EXTRA_MODULES_PATH is not set.
|
|
#
|
|
# [1] https://github.com/Itseez/opencv_contrib
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_opencv_androidcamera=OFF \
|
|
-DBUILD_opencv_apps=OFF \
|
|
-DBUILD_opencv_calib3d=$(if $(BR2_PACKAGE_OPENCV_LIB_CALIB3D),ON,OFF) \
|
|
-DBUILD_opencv_core=ON \
|
|
-DBUILD_opencv_features2d=$(if $(BR2_PACKAGE_OPENCV_LIB_FEATURES2D),ON,OFF) \
|
|
-DBUILD_opencv_flann=$(if $(BR2_PACKAGE_OPENCV_LIB_FLANN),ON,OFF) \
|
|
-DBUILD_opencv_hal=ON \
|
|
-DBUILD_opencv_highgui=$(if $(BR2_PACKAGE_OPENCV_LIB_HIGHGUI),ON,OFF) \
|
|
-DBUILD_opencv_imgcodecs=$(if $(BR2_PACKAGE_OPENCV_LIB_IMGCODECS),ON,OFF) \
|
|
-DBUILD_opencv_imgproc=$(if $(BR2_PACKAGE_OPENCV_LIB_IMGPROC),ON,OFF) \
|
|
-DBUILD_opencv_java=OFF \
|
|
-DBUILD_opencv_ml=$(if $(BR2_PACKAGE_OPENCV_LIB_ML),ON,OFF) \
|
|
-DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV_LIB_OBJDETECT),ON,OFF) \
|
|
-DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV_LIB_PHOTO),ON,OFF) \
|
|
-DBUILD_opencv_shape=$(if $(BR2_PACKAGE_OPENCV_LIB_SHAPE),ON,OFF) \
|
|
-DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV_LIB_STITCHING),ON,OFF) \
|
|
-DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV_LIB_SUPERRES),ON,OFF) \
|
|
-DBUILD_opencv_ts=$(if $(BR2_PACKAGE_OPENCV_LIB_TS),ON,OFF) \
|
|
-DBUILD_opencv_video=$(if $(BR2_PACKAGE_OPENCV_LIB_VIDEO),ON,OFF) \
|
|
-DBUILD_opencv_videoio=$(if $(BR2_PACKAGE_OPENCV_LIB_VIDEOIO),ON,OFF) \
|
|
-DBUILD_opencv_videostab=$(if $(BR2_PACKAGE_OPENCV_LIB_VIDEOSTAB),ON,OFF) \
|
|
-DBUILD_opencv_viz=OFF \
|
|
-DBUILD_opencv_world=OFF
|
|
|
|
# Hardware support options.
|
|
#
|
|
# * PowerPC support is turned off since its only effect is altering CFLAGS,
|
|
# adding '-mcpu=G3 -mtune=G5' to them, which is already handled by Buildroot.
|
|
# * fma3 and popcnt support is disabled because according to gcc manual [2], it
|
|
# is only available on x86_64 haswell, broadwell and knl architecture.
|
|
#
|
|
# [2] https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/x86-Options.html#x86-Options
|
|
OPENCV_CONF_OPTS += \
|
|
-DENABLE_AVX=$(if $(BR2_X86_CPU_HAS_AVX),ON,OFF) \
|
|
-DENABLE_AVX2=$(if $(BR2_X86_CPU_HAS_AVX2),ON,OFF) \
|
|
-DENABLE_FMA3=OFF \
|
|
-DENABLE_POPCNT=OFF \
|
|
-DENABLE_POWERPC=OFF \
|
|
-DENABLE_SSE=$(if $(BR2_X86_CPU_HAS_SSE),ON,OFF) \
|
|
-DENABLE_SSE2=$(if $(BR2_X86_CPU_HAS_SSE2),ON,OFF) \
|
|
-DENABLE_SSE3=$(if $(BR2_X86_CPU_HAS_SSE3),ON,OFF) \
|
|
-DENABLE_SSE41=$(if $(BR2_X86_CPU_HAS_SSE4),ON,OFF) \
|
|
-DENABLE_SSE42=$(if $(BR2_X86_CPU_HAS_SSE42),ON,OFF) \
|
|
-DENABLE_SSSE3=$(if $(BR2_X86_CPU_HAS_SSSE3),ON,OFF)
|
|
|
|
# Cuda stuff
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_CUDA_STUBS=OFF \
|
|
-DBUILD_opencv_cudaarithm=OFF \
|
|
-DBUILD_opencv_cudabgsegm=OFF \
|
|
-DBUILD_opencv_cudacodec=OFF \
|
|
-DBUILD_opencv_cudafeatures2d=OFF \
|
|
-DBUILD_opencv_cudafilters=OFF \
|
|
-DBUILD_opencv_cudaimgproc=OFF \
|
|
-DBUILD_opencv_cudalegacy=OFF \
|
|
-DBUILD_opencv_cudaobjdetect=OFF \
|
|
-DBUILD_opencv_cudaoptflow=OFF \
|
|
-DBUILD_opencv_cudastereo=OFF \
|
|
-DBUILD_opencv_cudawarping=OFF \
|
|
-DBUILD_opencv_cudev=OFF \
|
|
-DWITH_CUBLAS=OFF \
|
|
-DWITH_CUDA=OFF \
|
|
-DWITH_CUFFT=OFF
|
|
|
|
# NVidia stuff
|
|
OPENCV_CONF_OPTS += -DWITH_NVCUVID=OFF
|
|
|
|
# AMD stuff
|
|
OPENCV_CONF_OPTS += \
|
|
-DWITH_OPENCLAMDBLAS=OFF \
|
|
-DWITH_OPENCLAMDFFT=OFF
|
|
|
|
# Intel stuff
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_WITH_DYNAMIC_IPP=OFF \
|
|
-DWITH_INTELPERC=OFF \
|
|
-DWITH_IPP=OFF \
|
|
-DWITH_IPP_A=OFF \
|
|
-DWITH_TBB=OFF
|
|
|
|
# Smartek stuff
|
|
OPENCV_CONF_OPTS += -DWITH_GIGEAPI=OFF
|
|
|
|
# Prosilica stuff
|
|
OPENCV_CONF_OPTS += -DWITH_PVAPI=OFF
|
|
|
|
# Ximea stuff
|
|
OPENCV_CONF_OPTS += -DWITH_XIMEA=OFF
|
|
|
|
# Non-Linux support (Android options) must remain OFF:
|
|
OPENCV_CONF_OPTS += \
|
|
-DANDROID=OFF \
|
|
-DBUILD_ANDROID_CAMERA_WRAPPER=OFF \
|
|
-DBUILD_ANDROID_EXAMPLES=OFF \
|
|
-DBUILD_ANDROID_SERVICE=OFF \
|
|
-DBUILD_FAT_JAVA_LIB=OFF \
|
|
-DINSTALL_ANDROID_EXAMPLES=OFF \
|
|
-DWITH_ANDROID_CAMERA=OFF
|
|
|
|
# Non-Linux support (Mac OSX options) must remain OFF:
|
|
OPENCV_CONF_OPTS += \
|
|
-DWITH_AVFOUNDATION=OFF \
|
|
-DWITH_CARBON=OFF \
|
|
-DWITH_QUICKTIME=OFF
|
|
|
|
# Non-Linux support (Windows options) must remain OFF:
|
|
OPENCV_CONF_OPTS += \
|
|
-DWITH_CSTRIPES=OFF \
|
|
-DWITH_DSHOW=OFF \
|
|
-DWITH_MSMF=OFF \
|
|
-DWITH_PTHREADS_PF=OFF \
|
|
-DWITH_VFW=OFF \
|
|
-DWITH_VIDEOINPUT=OFF \
|
|
-DWITH_WIN32UI=OFF
|
|
|
|
# Software/3rd-party support options:
|
|
# - disable all examples
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_EXAMPLES=OFF \
|
|
-DBUILD_JASPER=OFF \
|
|
-DBUILD_JPEG=OFF \
|
|
-DBUILD_OPENEXR=OFF \
|
|
-DBUILD_PNG=OFF \
|
|
-DBUILD_TIFF=OFF \
|
|
-DBUILD_ZLIB=OFF \
|
|
-DINSTALL_C_EXAMPLES=OFF \
|
|
-DINSTALL_PYTHON_EXAMPLES=OFF \
|
|
-DINSTALL_TO_MANGLED_PATHS=OFF
|
|
|
|
# Disabled features (mostly because they are not available in Buildroot), but
|
|
# - eigen: OpenCV does not use it, not take any benefit from it.
|
|
OPENCV_CONF_OPTS += \
|
|
-DWITH_1394=OFF \
|
|
-DWITH_CLP=OFF \
|
|
-DWITH_EIGEN=OFF \
|
|
-DWITH_GDAL=OFF \
|
|
-DWITH_GPHOTO2=OFF \
|
|
-DWITH_OPENCL=OFF \
|
|
-DWITH_OPENCL_SVM=OFF \
|
|
-DWITH_OPENEXR=OFF \
|
|
-DWITH_OPENGL=OFF \
|
|
-DWITH_OPENMP=OFF \
|
|
-DWITH_OPENNI2=OFF \
|
|
-DWITH_OPENNI=OFF \
|
|
-DWITH_UNICAP=OFF \
|
|
-DWITH_VTK=OFF \
|
|
-DWITH_WEBP=OFF \
|
|
-DWITH_XINE=OFF
|
|
|
|
OPENCV_DEPENDENCIES += zlib
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_FFMPEG),y)
|
|
OPENCV_CONF_OPTS += -DWITH_FFMPEG=ON
|
|
OPENCV_DEPENDENCIES += ffmpeg bzip2
|
|
else
|
|
OPENCV_CONF_OPTS += -DWITH_FFMPEG=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_GSTREAMER),y)
|
|
OPENCV_CONF_OPTS += -DWITH_GSTREAMER_0_10=ON
|
|
OPENCV_DEPENDENCIES += gstreamer gst-plugins-base
|
|
else
|
|
OPENCV_CONF_OPTS += -DWITH_GSTREAMER_0_10=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_GSTREAMER1),y)
|
|
OPENCV_CONF_OPTS += -DWITH_GSTREAMER=ON
|
|
OPENCV_DEPENDENCIES += gstreamer1 gst1-plugins-base
|
|
else
|
|
OPENCV_CONF_OPTS += -DWITH_GSTREAMER=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_GTK),y)
|
|
OPENCV_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=ON
|
|
OPENCV_DEPENDENCIES += libgtk2
|
|
else
|
|
OPENCV_CONF_OPTS += -DWITH_GTK=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_JASPER),y)
|
|
OPENCV_CONF_OPTS += -DWITH_JASPER=ON
|
|
OPENCV_DEPENDENCIES += jasper
|
|
else
|
|
OPENCV_CONF_OPTS += -DWITH_JASPER=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_JPEG),y)
|
|
OPENCV_CONF_OPTS += -DWITH_JPEG=ON
|
|
OPENCV_DEPENDENCIES += jpeg
|
|
else
|
|
OPENCV_CONF_OPTS += -DWITH_JPEG=OFF
|
|
endif
|
|
|
|
OPENCV_CONF_OPTS += -DWITH_OPENMP=$(if $(BR2_GCC_ENABLE_OPENMP),ON,OFF)
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_PNG),y)
|
|
OPENCV_CONF_OPTS += -DWITH_PNG=ON
|
|
OPENCV_DEPENDENCIES += libpng
|
|
else
|
|
OPENCV_CONF_OPTS += -DWITH_PNG=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_QT)$(BR2_PACKAGE_OPENCV_WITH_QT5),)
|
|
OPENCV_CONF_OPTS += -DWITH_QT=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_QT),y)
|
|
OPENCV_CONF_OPTS += -DWITH_QT=4
|
|
OPENCV_DEPENDENCIES += qt
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_QT5),y)
|
|
OPENCV_CONF_OPTS += -DWITH_QT=5
|
|
OPENCV_DEPENDENCIES += qt5base
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_TIFF),y)
|
|
OPENCV_CONF_OPTS += -DWITH_TIFF=ON
|
|
OPENCV_DEPENDENCIES += tiff
|
|
else
|
|
OPENCV_CONF_OPTS += -DWITH_TIFF=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_WITH_V4L),y)
|
|
OPENCV_CONF_OPTS += \
|
|
-DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF) \
|
|
-DWITH_V4L=ON
|
|
OPENCV_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l)
|
|
else
|
|
OPENCV_CONF_OPTS += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENCV_LIB_PYTHON),y)
|
|
ifeq ($(BR2_PACKAGE_PYTHON),y)
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_opencv_python2=ON \
|
|
-DBUILD_opencv_python3=OFF \
|
|
-DPYTHON2_EXECUTABLE=$(HOST_DIR)/usr/bin/python2 \
|
|
-DPYTHON2_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) \
|
|
-DPYTHON2_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON_VERSION_MAJOR).so \
|
|
-DPYTHON2_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/numpy/core/include \
|
|
-DPYTHON2_PACKAGES_PATH=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \
|
|
-DPYTHON2_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION)
|
|
OPENCV_DEPENDENCIES += python
|
|
else
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_opencv_python2=OFF \
|
|
-DBUILD_opencv_python3=ON \
|
|
-DPYTHON3_EXECUTABLE=$(HOST_DIR)/usr/bin/python3 \
|
|
-DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)m \
|
|
-DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR)m.so \
|
|
-DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \
|
|
-DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \
|
|
-DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION)
|
|
OPENCV_DEPENDENCIES += python3
|
|
endif
|
|
OPENCV_DEPENDENCIES += python-numpy
|
|
else
|
|
OPENCV_CONF_OPTS += \
|
|
-DBUILD_opencv_python2=OFF \
|
|
-DBUILD_opencv_python3=OFF
|
|
endif
|
|
|
|
# Installation hooks:
|
|
define OPENCV_CLEAN_INSTALL_DOC
|
|
$(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/doc
|
|
endef
|
|
OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DOC
|
|
|
|
define OPENCV_CLEAN_INSTALL_CMAKE
|
|
$(RM) -f $(TARGET_DIR)/usr/share/OpenCV/OpenCVConfig*.cmake
|
|
endef
|
|
OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_CMAKE
|
|
|
|
ifneq ($(BR2_PACKAGE_OPENCV_INSTALL_DATA),y)
|
|
define OPENCV_CLEAN_INSTALL_DATA
|
|
$(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/haarcascades \
|
|
$(TARGET_DIR)/usr/share/OpenCV/lbpcascades
|
|
endef
|
|
OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DATA
|
|
endif
|
|
|
|
$(eval $(cmake-package))
|