diff --git a/subprojects/gst-plugins-bad/ext/opencv/meson.build b/subprojects/gst-plugins-bad/ext/opencv/meson.build index 37e20156eb..bd3a07d7b0 100644 --- a/subprojects/gst-plugins-bad/ext/opencv/meson.build +++ b/subprojects/gst-plugins-bad/ext/opencv/meson.build @@ -34,87 +34,7 @@ gstopencv_sources = [ 'gstcvtracker.cpp' ] -libopencv_headers = [ - 'opencv2/bgsegm.hpp', - 'opencv2/calib3d.hpp', - 'opencv2/core.hpp', - 'opencv2/imgproc.hpp', - 'opencv2/objdetect.hpp', - 'opencv2/opencv.hpp', - 'opencv2/video.hpp', - 'opencv2/tracking.hpp', -] - -libopencv4_headers = [ - 'opencv4/opencv2/bgsegm.hpp', - 'opencv4/opencv2/calib3d.hpp', - 'opencv4/opencv2/core.hpp', - 'opencv4/opencv2/imgproc.hpp', - 'opencv4/opencv2/objdetect.hpp', - 'opencv4/opencv2/opencv.hpp', - 'opencv4/opencv2/video.hpp', - 'opencv4/opencv2/tracking.hpp', -] - -gstopencv_cargs = ['-DGST_HAAR_CASCADES_DIR="@0@"'] - -opencv_dep = dependency('opencv', version : ['>= 3.0.0', '< 3.5.0'], required : false) -opencv_found = opencv_dep.found() - if opencv_found - foreach h : libopencv_headers - if not cxx.has_header(h) - message('Needed header "' + h + '" not found') - opencv_found = false - endif - endforeach -endif - -if not opencv_found - opencv_dep = dependency('opencv4', version : '>= 4.0.0', required : false) - opencv_found = opencv_dep.found() - if opencv_found - foreach h : libopencv4_headers - if not cxx.has_header(h) - message('Needed header "' + h + '" not found') - opencv_found = false - endif - endforeach - endif -endif - -if opencv_found - opencv_prefix = opencv_dep.get_variable('prefix') - gstopencv_cargs += ['-DOPENCV_PREFIX="' + opencv_prefix + '"'] - - # Check the data dir used by opencv for its xml data files - # Use prefix from pkg-config to be compatible with cross-compilation - r = run_command('test', '-d', opencv_prefix + '/share/opencv', check: false) - if r.returncode() == 0 - gstopencv_cargs += '-DOPENCV_PATH_NAME="opencv"' - else - r = run_command('test', '-d', opencv_prefix + '/share/OpenCV', check: false) - if r.returncode() == 0 - gstopencv_cargs += '-DOPENCV_PATH_NAME="OpenCV"' - else - r = run_command('test', '-d', opencv_prefix + '/share/opencv4', check: false) - if r.returncode() == 0 - gstopencv_cargs += '-DOPENCV_PATH_NAME="opencv4"' - else - message('Unable to detect OpenCV data directory') - opencv_found = false - endif - endif - endif -endif - -if opencv_found - # opencv4 seems to ship with .pc file that references non-existent include dir - # (/usr/include/opencv4/opencv instead of /usr/include/opencv4/opencv2) - # clang 10 complains about the following header in opencv4 - # /usr/include/opencv4/opencv2/flann/logger.h:83:36: error: format string is not a string literal [-Werror,-Wformat-nonliteral] - gstopencv_cargs += cxx.get_supported_arguments(['-Wno-missing-include-dirs', '-Wno-format-nonliteral']) - gstopencv = library('gstopencv', gstopencv_sources, cpp_args : gst_plugins_bad_args + gstopencv_cargs + [ '-DGST_USE_UNSTABLE_API' ], diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/opencv/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/opencv/meson.build index 4bacd8e151..3854588e41 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/opencv/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/opencv/meson.build @@ -1,3 +1,8 @@ +if get_option('opencv').disabled() + gstopencv_dep = disabler() + subdir_done() +endif + opencv_sources = [ 'gstopencvutils.cpp', 'gstopencvvideofilter.cpp', @@ -9,22 +14,66 @@ opencv_headers = [ 'gstopencvvideofilter.h', ] -if get_option('opencv').disabled() - gstopencv_dep = disabler() - subdir_done() +libopencv_headers = [ + 'opencv2/bgsegm.hpp', + 'opencv2/calib3d.hpp', + 'opencv2/core.hpp', + 'opencv2/imgproc.hpp', + 'opencv2/objdetect.hpp', + 'opencv2/opencv.hpp', + 'opencv2/video.hpp', + 'opencv2/tracking.hpp', +] + +gstopencv_cargs = ['-DGST_HAAR_CASCADES_DIR="@0@"'] + +opencv_dep = dependency('opencv', version : ['>= 3.0.0', '< 3.5.0'], required : false) +opencv_found = opencv_dep.found() +if not opencv_found + opencv_dep = dependency('opencv4', version : ['>= 4.0.0'], required : false) + opencv_found = opencv_dep.found() endif -opencv_dep = dependency('opencv', version : '>= 3.0.0', required : false) -if not opencv_dep.found() - opencv_dep = dependency('opencv4', version : '>= 4.0.0', required : false) +if opencv_found + foreach h : libopencv_headers + if not cxx.has_header(h, dependencies: opencv_dep) + message('Needed header "' + h + '" not found') + opencv_found = false + endif + endforeach endif -if opencv_dep.found() + +if opencv_found + opencv_prefix = opencv_dep.get_variable('prefix') + gstopencv_cargs += ['-DOPENCV_PREFIX="' + opencv_prefix + '"'] # opencv4 seems to ship with .pc file that references non-existent include dir # (/usr/include/opencv4/opencv instead of /usr/include/opencv4/opencv2) # clang 10 complains about the following header in opencv4 # /usr/include/opencv4/opencv2/flann/logger.h:83:36: error: format string is not a string literal [-Werror,-Wformat-nonliteral] - gstopencv_cargs = cxx.get_supported_arguments(['-Wno-missing-include-dirs', '-Wno-format-nonliteral']) + gstopencv_cargs += cxx.get_supported_arguments(['-Wno-missing-include-dirs', '-Wno-format-nonliteral']) + # Check the data dir used by opencv for its xml data files + # Use prefix from pkg-config to be compatible with cross-compilation + r = run_command('test', '-d', opencv_prefix + '/share/opencv', check: false) + if r.returncode() == 0 + gstopencv_cargs += '-DOPENCV_PATH_NAME="opencv"' + else + r = run_command('test', '-d', opencv_prefix + '/share/OpenCV', check: false) + if r.returncode() == 0 + gstopencv_cargs += '-DOPENCV_PATH_NAME="OpenCV"' + else + r = run_command('test', '-d', opencv_prefix + '/share/opencv4', check: false) + if r.returncode() == 0 + gstopencv_cargs += '-DOPENCV_PATH_NAME="opencv4"' + else + message('Unable to detect OpenCV data directory') + opencv_found = false + endif + endif + endif +endif + +if opencv_found pkg_name = 'gstreamer-opencv-1.0' gstopencv = library('gstopencv-' + api_version, opencv_sources, @@ -48,6 +97,4 @@ if opencv_dep.found() install_headers(opencv_headers, subdir : 'gstreamer-1.0/gst/opencv') elif get_option('opencv').enabled() error('OpenCV support enabled but required dependencies were not found.') -else - gstopencv_dep = disabler() endif