2022-10-13 00:34:58 +00:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Nirbheek Chauhan <nirbheek@centricular.com>
Date: Wed, 21 Sep 2022 21:48:31 +0530
Subject: [PATCH] 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>
---
meson.build | 22 +++++++++++++++++++++-
meson_options.txt | 1 +
subprojects/orc.wrap | 3 +++
3 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
2022-12-20 16:35:35 +00:00
index bf8415d0aee8..0f0c601d96f0 100644
2022-10-13 00:34:58 +00:00
--- a/meson.build
+++ b/meson.build
@@ -126,7 +126,19 @@ elif build_system == 'darwin'
subproject('macos-bison-binary')
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(',')
if custom_subproj != ''
@@ -162,6 +174,14 @@ foreach sp : subprojects
subproj = subproject(project_name, required: is_required)
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()
plugins = subproj.get_variable('plugins', [])
all_plugins += plugins
diff --git a/meson_options.txt b/meson_options.txt
index 7a43f3443098..a2d4203c22ef 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -33,6 +33,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.''')
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.''')
+option('orc-source', type: 'combo', choices: ['system', 'subproject', 'auto'], value: 'subproject')
# License-related feature options
option('gpl', type: 'feature', value: 'disabled',
diff --git a/subprojects/orc.wrap b/subprojects/orc.wrap
index 690d8e368b38..a3b553a614fa 100644
--- a/subprojects/orc.wrap
+++ b/subprojects/orc.wrap
@@ -3,3 +3,6 @@ directory=orc
url=https://gitlab.freedesktop.org/gstreamer/orc.git
push-url=git@gitlab.freedesktop.org:gstreamer/orc.git
revision=887392103956a8733a750c4442e2664d5c26527d
+
+[provide]
+orc-0.4 = orc_dep