mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +00:00
meson: Rework opencv plugin checks
a) Use get_pkgconfig_variable() to get the opencv prefix b) Place an upper limit on the opencv version c) Ensure that headers are available (b) and (c) just copy what the configure.ac checks do.
This commit is contained in:
parent
57bb47f3f7
commit
2160e0e2bd
2 changed files with 51 additions and 16 deletions
|
@ -1,4 +1,4 @@
|
|||
opencv_sources = [
|
||||
gstopencv_sources = [
|
||||
'gstcvdilate.cpp',
|
||||
'gstcvdilateerode.cpp',
|
||||
'gstcvequalizehist.cpp',
|
||||
|
@ -23,27 +23,61 @@ opencv_sources = [
|
|||
'motioncells_wrapper.cpp'
|
||||
]
|
||||
|
||||
opencv_cargs = ['-DGST_HAAR_CASCADES_DIR="@0@"']
|
||||
runcmd = run_command('pkg-config', '--variable=prefix', 'opencv')
|
||||
if runcmd.returncode() == 0
|
||||
opencv_cargs += '-DOPENCV_PREFIX="' + runcmd.stdout().strip() + '"'
|
||||
libopencv2_headers = [
|
||||
'opencv2/core/core_c.h',
|
||||
'opencv2/core/version.hpp',
|
||||
'opencv2/highgui/highgui_c.h',
|
||||
'opencv2/imgproc/imgproc.hpp',
|
||||
'opencv2/imgproc/imgproc_c.h',
|
||||
'opencv2/objdetect/objdetect.hpp',
|
||||
'opencv2/video/background_segm.hpp',
|
||||
]
|
||||
|
||||
gstopencv_cargs = ['-DGST_HAAR_CASCADES_DIR="@0@"']
|
||||
|
||||
# First, check for the upper version limit and ensure it isn't found
|
||||
# FIXME: When 0.37.0 is released, change this to use many-version-conditions
|
||||
opencv3_dep = dependency('opencv', version : '>3.1.0', required : false)
|
||||
# Then, check if the lower version limit is found
|
||||
opencv2_dep = dependency('opencv', version : '>=2.3.0', required : false)
|
||||
|
||||
opencv2_found = false
|
||||
if opencv3_dep.found()
|
||||
message('OpenCV version is too new: \'' + opencv3_dep.version() + '\' (need <= 3.1.0)')
|
||||
elif opencv2_dep.found()
|
||||
message('OpenCV found, version is \'' + opencv2_dep.version() + '\'')
|
||||
opencv2_found = true
|
||||
foreach h : libopencv2_headers
|
||||
if not cxx.has_header(h)
|
||||
message('Needed header "' + h + '" not found')
|
||||
opencv2_found = false
|
||||
endif
|
||||
endforeach
|
||||
endif
|
||||
|
||||
r = run_command('test', '-d', '/usr/share/opencv')
|
||||
if r.returncode() == 0
|
||||
opencv_cargs += '-DOPENCV_PATH_NAME="opencv"'
|
||||
else
|
||||
opencv_cargs += '-DOPENCV_PATH_NAME="OpenCv"'
|
||||
endif
|
||||
if opencv2_found
|
||||
opencv2_prefix = opencv2_dep.get_pkgconfig_variable('prefix')
|
||||
gstopencv_cargs += ['-DOPENCV_PREFIX="' + opencv2_prefix + '"']
|
||||
|
||||
opencv_dep = dependency('opencv', version : '>= 2.3.0', required : false)
|
||||
if opencv_dep.found()
|
||||
# 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', opencv2_prefix + '/share/opencv')
|
||||
if r.returncode() == 0
|
||||
gstopencv_cargs += '-DOPENCV_PATH_NAME="opencv"'
|
||||
else
|
||||
r = run_command('test', '-d', opencv2_prefix + '/share/OpenCV')
|
||||
if r.returncode() == 0
|
||||
gstopencv_cargs += '-DOPENCV_PATH_NAME="OpenCv"'
|
||||
else
|
||||
error('Unable to detect OpenCV data directory')
|
||||
endif
|
||||
endif
|
||||
gstopencv = library('gstopencv',
|
||||
opencv_sources,
|
||||
cpp_args : gst_plugins_bad_args + opencv_cargs + [ '-DGST_USE_UNSTABLE_API' ],
|
||||
gstopencv_sources,
|
||||
cpp_args : gst_plugins_bad_args + gstopencv_cargs + [ '-DGST_USE_UNSTABLE_API' ],
|
||||
link_args : noseh_link_args,
|
||||
include_directories : [configinc],
|
||||
dependencies : [gstbase_dep, gstvideo_dep, opencv_dep, gstopencv_dep],
|
||||
dependencies : [gstbase_dep, gstvideo_dep, opencv2_dep, gstopencv_dep],
|
||||
install : true,
|
||||
install_dir : plugins_install_dir,
|
||||
)
|
||||
|
|
|
@ -27,6 +27,7 @@ libversion = '@0@.@1@.0'.format(soversion, gst_version_minor.to_int() * 100 + gs
|
|||
plugins_install_dir = '@0@/gstreamer-1.0'.format(get_option('libdir'))
|
||||
|
||||
cc = meson.get_compiler('c')
|
||||
cxx = meson.get_compiler('cpp')
|
||||
|
||||
if cc.get_id() == 'msvc'
|
||||
# Ignore several spurious warnings for things gstreamer does very commonly
|
||||
|
|
Loading…
Reference in a new issue