diff options
author | Tim-Philipp Müller <tim@centricular.com> | 2020-07-09 19:07:30 +0300 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2020-07-10 19:37:28 +0300 |
commit | 4a4de61c23db9296b3ac6ac41eac9786c8bd9796 (patch) | |
tree | b0950bb9b231fb1478b94818035eff4f73639988 /sys | |
parent | 84dbf94313936b3c7a9bceddd956517e7f147f6c (diff) |
rpicamsrc: hook up to build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>
Diffstat (limited to 'sys')
-rw-r--r-- | sys/meson.build | 1 | ||||
-rw-r--r-- | sys/rpicamsrc/gstrpicamsrc.c | 12 | ||||
-rw-r--r-- | sys/rpicamsrc/gstrpicamsrcdeviceprovider.c | 4 | ||||
-rw-r--r-- | sys/rpicamsrc/gstrpicamsrcdeviceprovider.h | 4 | ||||
-rw-r--r-- | sys/rpicamsrc/meson.build | 59 |
5 files changed, 58 insertions, 22 deletions
diff --git a/sys/meson.build b/sys/meson.build index c5c8d640e..d3370152e 100644 --- a/sys/meson.build +++ b/sys/meson.build @@ -3,6 +3,7 @@ subdir('oss') subdir('oss4') subdir('osxaudio') subdir('osxvideo') +subdir('rpicamsrc') subdir('v4l2') subdir('waveform') subdir('ximage') diff --git a/sys/rpicamsrc/gstrpicamsrc.c b/sys/rpicamsrc/gstrpicamsrc.c index 544efe346..eb57f25d5 100644 --- a/sys/rpicamsrc/gstrpicamsrc.c +++ b/sys/rpicamsrc/gstrpicamsrc.c @@ -1455,23 +1455,21 @@ static gboolean plugin_init (GstPlugin * plugin) { gboolean ret; + GST_DEBUG_CATEGORY_INIT (gst_rpi_cam_src_debug, "rpicamsrc", 0, "rpicamsrc debug"); + ret = gst_element_register (plugin, "rpicamsrc", GST_RANK_NONE, GST_TYPE_RPICAMSRC); -#if GST_CHECK_VERSION (1,4,0) + ret &= gst_device_provider_register (plugin, "rpicamsrcdeviceprovider", GST_RANK_PRIMARY, GST_TYPE_RPICAMSRC_DEVICE_PROVIDER); -#endif + return ret; } -#ifndef PACKAGE -#define PACKAGE "gstrpicamsrc" -#endif - GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, rpicamsrc, "Raspberry Pi Camera Source", - plugin_init, VERSION, "LGPL", "GStreamer", "http://gstreamer.net/") + plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN) diff --git a/sys/rpicamsrc/gstrpicamsrcdeviceprovider.c b/sys/rpicamsrc/gstrpicamsrcdeviceprovider.c index ff8083227..1d2077a0f 100644 --- a/sys/rpicamsrc/gstrpicamsrcdeviceprovider.c +++ b/sys/rpicamsrc/gstrpicamsrcdeviceprovider.c @@ -25,8 +25,6 @@ #include <string.h> -#if GST_CHECK_VERSION (1,4,0) - #include "RaspiCapture.h" /* FIXME: translations */ @@ -145,5 +143,3 @@ gst_rpi_cam_src_device_new (void) return device; } - -#endif /* GST_CHECK_VERSION (1,4,0) */ diff --git a/sys/rpicamsrc/gstrpicamsrcdeviceprovider.h b/sys/rpicamsrc/gstrpicamsrcdeviceprovider.h index cd5e9aad3..d4ed19cea 100644 --- a/sys/rpicamsrc/gstrpicamsrcdeviceprovider.h +++ b/sys/rpicamsrc/gstrpicamsrcdeviceprovider.h @@ -26,8 +26,6 @@ #include <gst/gst.h> -#if GST_CHECK_VERSION (1,4,0) - G_BEGIN_DECLS typedef struct _GstRpiCamSrcDeviceProvider GstRpiCamSrcDeviceProvider; @@ -74,6 +72,4 @@ GType gst_rpi_cam_src_device_get_type (void); G_END_DECLS -#endif /* GST_CHECK_VERSION (1,4,0) */ - #endif /* __GST_RPICAMSRC_DEVICE_PROVIDER_H__ */ diff --git a/sys/rpicamsrc/meson.build b/sys/rpicamsrc/meson.build index c3a1651ab..a71be6f86 100644 --- a/sys/rpicamsrc/meson.build +++ b/sys/rpicamsrc/meson.build @@ -7,7 +7,48 @@ rpicamsrc_sources = [ 'RaspiCLI.c', ] -# glib-mkenums +if host_system != 'linux' or (host_cpu != 'arm' and host_cpu != 'aarch64') + assert(not get_option('rpicamsrc').enabled()) + 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 + +mmal_deps = [] +foreach rpi_lib : ['mmal_core', 'mmal_util', 'mmal_vc_client', 'vcos', '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 + gnome = import('gnome') enums = gnome.mkenums_simple('gstrpicam-enum-types', @@ -15,10 +56,14 @@ enums = gnome.mkenums_simple('gstrpicam-enum-types', identifier_prefix: 'GstRpiCamSrc', symbol_prefix: 'gst_rpi_cam_src') -library('gstrpicamsrc', +# we might need '-Wl,--no-as-needed' or b_asneeded=false on ubuntu, tbd +gstrpicamsrc = library('gstrpicamsrc', rpicamsrc_sources, enums, - c_args : gst_rpicamsrc_args, - include_directories : config_inc, - dependencies : [gst_dep, gstbase_dep, gstvideo_dep] + mmal_deps, - install : true, - install_dir : plugins_install_dir) + c_args: [gst_plugins_good_args, rpi_inc_args], + include_directories: [configinc, libsinc], + dependencies: [gst_dep, gstbase_dep, gstvideo_dep] + mmal_deps, + install_dir: plugins_install_dir, + install: true) + +pkgconfig.generate(gstrpicamsrc, install_dir: plugins_pkgconfig_install_dir) +plugins += [gstrpicamsrc] |