meson: Add a new option to control the source for orc

Previously we were unconditionally cloning the orc subproject because
we want the developer environment to use the latest orc. However, some
people want to use the system orc instead, or want to auto-detect
which to use, with the system orc getting preference. This requires
adding a new option to select that. See discussion at:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2556

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1282

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3062>
This commit is contained in:
Nirbheek Chauhan 2022-09-21 21:48:31 +05:30 committed by GStreamer Marge Bot
parent 0e73b36870
commit 6caa8524dd
3 changed files with 25 additions and 1 deletions

View file

@ -119,7 +119,19 @@ elif build_system == 'darwin'
subproject('macos-bison-binary') subproject('macos-bison-binary')
endif endif
orc_subproject = subproject('orc', required: get_option('orc')) orc_option = get_option('orc')
# There is a check below to keep this in sync with subprojects/gst-plugins-base/meson.build
orc_req = '>= 0.4.24'
orc_source_option = get_option('orc-source')
orc_subproject = disabler()
if orc_option.allowed()
if orc_source_option == 'subproject'
orc_subproject = subproject('orc', required: orc_option)
else
dependency('orc-0.4', version: orc_req, required: orc_option,
allow_fallback: orc_source_option == 'auto')
endif
endif
foreach custom_subproj: get_option('custom_subprojects').split(',') foreach custom_subproj: get_option('custom_subprojects').split(',')
if custom_subproj != '' if custom_subproj != ''
@ -157,6 +169,14 @@ foreach sp : subprojects
subproj = subproject(project_name, required: is_required, default_options: default_options) subproj = subproject(project_name, required: is_required, default_options: default_options)
endif endif
if project_name == 'gst-plugins-base'
gst_base_orc_req = subproj.get_variable('orc_req', '')
if gst_base_orc_req != orc_req
error('orc_req is "@0@" but it should be "@1@" from subprojects/gst-plugins-base/meson.build'
.format(orc_req, gst_base_orc_req))
endif
endif
if subproj.found() if subproj.found()
plugins = subproj.get_variable('gst_plugins', []) plugins = subproj.get_variable('gst_plugins', [])
legacy_plugins = subproj.get_variable('plugins', []) legacy_plugins = subproj.get_variable('plugins', [])

View file

@ -38,6 +38,7 @@ option('gst-full-device-providers', type : 'string', value : '',
description : '''List of device providers to expose in gstreamer-full's ABI with the syntax plugin1:dp1;plugin2:dp1:dp2. By default '' will export all device provider of the enabled plugin.''') description : '''List of device providers to expose in gstreamer-full's ABI with the syntax plugin1:dp1;plugin2:dp1:dp2. By default '' will export all device provider of the enabled plugin.''')
option('gst-full-dynamic-types', type : 'string', value : '', option('gst-full-dynamic-types', type : 'string', value : '',
description : '''List of dynamic types to expose in gstreamer-full's ABI with the syntax plugin:dt1,dt2. By default '' will export all device provider of the enabled plugin.''') description : '''List of dynamic types to expose in gstreamer-full's ABI with the syntax plugin:dt1,dt2. By default '' will export all device provider of the enabled plugin.''')
option('orc-source', type: 'combo', choices: ['system', 'subproject', 'auto'], value: 'subproject')
# License-related feature options # License-related feature options
option('gpl', type: 'feature', value: 'disabled', option('gpl', type: 'feature', value: 'disabled',

View file

@ -3,3 +3,6 @@ directory=orc
url=https://gitlab.freedesktop.org/gstreamer/orc.git url=https://gitlab.freedesktop.org/gstreamer/orc.git
push-url=git@gitlab.freedesktop.org:gstreamer/orc.git push-url=git@gitlab.freedesktop.org:gstreamer/orc.git
revision=8ef6d657ccc1e98476ebc5d101c6729e6b916f78 revision=8ef6d657ccc1e98476ebc5d101c6729e6b916f78
[provide]
orc-0.4 = orc_dep