mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-29 19:50:40 +00:00
1257e50d49
Could only test on rpi 3b+ Close #839 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/875>
86 lines
2.5 KiB
Meson
86 lines
2.5 KiB
Meson
rpicamsrc_sources = [
|
|
'gstrpicamsrc.c',
|
|
'gstrpicamsrcdeviceprovider.c',
|
|
'RaspiCapture.c',
|
|
'RaspiCamControl.c',
|
|
'RaspiPreview.c',
|
|
'RaspiCLI.c',
|
|
]
|
|
|
|
if host_system != 'linux' or (host_cpu != 'arm' and host_cpu != 'aarch64')
|
|
assert(not get_option('rpicamsrc').enabled(), 'rpicamsrc was enabled by options but will not be built')
|
|
subdir_done()
|
|
endif
|
|
|
|
if get_option('rpicamsrc').disabled()
|
|
subdir_done()
|
|
endif
|
|
|
|
rpi_inc_path = get_option('rpi-header-dir')
|
|
rpi_lib_path = get_option('rpi-lib-dir')
|
|
|
|
rpi_inc_args = [
|
|
'-I' + rpi_inc_path,
|
|
'-I' + join_paths(rpi_inc_path, 'interface', 'vcos', 'pthreads'),
|
|
'-I' + join_paths(rpi_inc_path, 'interface', 'vmcs_host', 'linux'),
|
|
]
|
|
|
|
if not cc.has_header('bcm_host.h', args: rpi_inc_args)
|
|
if get_option('rpicamsrc').enabled()
|
|
error('Could not find bcm_host.h. Please pass the location of this header via -Drpi-header-dir=/path')
|
|
else
|
|
subdir_done()
|
|
endif
|
|
endif
|
|
|
|
thread_dep = dependency('threads')
|
|
rt_dep = cxx.find_library('rt', required : false)
|
|
|
|
mmal_deps = [thread_dep, rt_dep]
|
|
foreach rpi_lib : ['mmal_core', 'mmal_util', 'mmal_vc_client', 'vcos', 'vchostif', 'vchiq_arm', 'bcm_host']
|
|
l = cc.find_library(rpi_lib, dirs: rpi_lib_path, required: false)
|
|
if not l.found()
|
|
if get_option('rpicamsrc').enabled()
|
|
error('''
|
|
Could not find lib@0@ in standard library paths and @1@.
|
|
Please pass the location of these libs via -Dwith-rpi-lib-dir=/path.
|
|
'''.format(rpi_lib, rpi_lib_path))
|
|
else
|
|
subdir_done()
|
|
endif
|
|
endif
|
|
mmal_deps += [l]
|
|
endforeach
|
|
|
|
rpi_warn_flags = cc.get_supported_arguments([
|
|
# vcos/mmal headers
|
|
'-Wno-redundant-decls',
|
|
# RaspiCapture.c + RaspiCamControl.c
|
|
'-Wno-discarded-qualifiers',
|
|
'-Wno-declaration-after-statement',
|
|
'-Wno-missing-prototypes',
|
|
'-Wno-missing-declarations',
|
|
'-Wno-stringop-truncation',
|
|
])
|
|
|
|
rpi_link_flags = cc.get_supported_link_arguments(['-Wl,--no-as-needed'])
|
|
|
|
gnome = import('gnome')
|
|
|
|
enums = gnome.mkenums_simple('gstrpicam-enum-types',
|
|
sources: 'gstrpicam_types.h',
|
|
identifier_prefix: 'GstRpiCamSrc',
|
|
symbol_prefix: 'gst_rpi_cam_src')
|
|
|
|
gstrpicamsrc = library('gstrpicamsrc',
|
|
rpicamsrc_sources, enums,
|
|
c_args: [gst_plugins_good_args, rpi_inc_args, rpi_warn_flags],
|
|
link_args: rpi_link_flags,
|
|
include_directories: [configinc, libsinc],
|
|
dependencies: [gst_dep, gstbase_dep, gstvideo_dep] + mmal_deps,
|
|
override_options: ['b_asneeded=false'],
|
|
install_dir: plugins_install_dir,
|
|
install: true)
|
|
|
|
pkgconfig.generate(gstrpicamsrc, install_dir: plugins_pkgconfig_install_dir)
|
|
plugins += [gstrpicamsrc]
|