Commit graph

52 commits

Author SHA1 Message Date
Nirbheek Chauhan
337fee8388 ci: Add a gtk subproject for testing on windows and macos
The gstreamer-rs CI needs to build gtk to test the gtk4 plugin in
gst-plugins-rs. Formalize support for gtk in the monorepo, and disable
it by default because it's not an important dependency; unlike
libnice.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7372>
2024-08-17 16:07:34 +05:30
Nirbheek Chauhan
9cc363311d meson: Add an option to disable gst-full
Not all static-library build configurations need to use this, and the
CPU time and RAM needed by gst-full targets is quite significant.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7315>
2024-08-13 01:01:28 +00:00
Xavier Claessens
84b3a0950d build: Add missing common options that are yielding in subprojects
- Align `glib_debug`, `glib_assert` and `glib_checks` options with GLib,
  otherwise glib subproject won't inherit their value. Previous names
  and values are preserved using Meson's deprecation mechanism.
- Add `extra-checks` and `benchmarks` options in the main project so it
  can be inherited in GStreamer subprojects.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1165>
2024-06-27 15:53:46 +00:00
Detlev Casanova
3796ee2466 tests: Add virtme fluster tests
Set up a test suite that runs fluster in a virtual machine using virtme.
This test only runs when a kernel image path is set in the new
`virtme_kernel_image` meson option.

The kernel iimage must have support for visl.

The suite contains 4 tests, 1 for each supported codec in visl:
 - vp8
 - vp9
 - h.264
 - hevc

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5434>
2023-10-31 12:06:30 -04:00
Nirbheek Chauhan
fd4828bafe meson: Add a top-level option to enable webrtc
There are a bunch of plugins that you need for webrtc support, and
it's not obvious at all to users which those are.

With this commit, srtp, sctp and dtls options will be auto-enabled if
the webrtc option is enabled.

Requires meson 1.1

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5505>
2023-10-19 06:38:45 +00:00
Stéphane Cerveau
bdbf6e1c17 gst-full: register full features in a plugin
To offer the possibility to get information at plugin
level and get it from the registry, all the
full features are now registered in 'fullstaticfeatures'
meta plugin instead of NULL plugin.
In the case of gst-inspect, the features were not displayed
at plugin level because it was a NULL plugin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5421>
2023-10-05 11:40:45 +00:00
Xavier Claessens
42717a30f8 Meson: Set some options back to auto by default
Some options got enabled by default since that commit:
40371ff9c6

While the commit message example makes perfect sense to enable `bad` by
default, I don't think the same reasoning applies to libav, devtools,
ges and rtsp_server.

I think it is important to keep a build with `-Dauto_features=disabled`
minimal, especially not pulling external dependencies. For example, with
libav being enabled by default, Meson builds FFmpeg subproject even
when disabling auto features.

It is fine to keep `bad` enabled by default because itself has auto
features for every plugins, when auto features are disabled it only
build libraries that does not have external deps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5337>
2023-10-02 21:58:05 +00:00
Olivier Crête
48c43e5b7f gst-omx: Retire the whole package
The OpenMAX standard is long dead and even the Raspberry Pi OS
no longer supports it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4976>
2023-07-16 19:10:03 +00:00
Stéphane Cerveau
dd17beb681 gstreamer-full: add full static support
Allow a project to use gstreamer-full as a static library
and link to create a binary without dependencies.

Introduce the option 'gst-full-target-type' to
select the build type, dynamic(default) or static.

In gstreamer-full/static build configuration gstreamer (gst.c)
needs the symbol gst_init_static_plugins which is defined
in gstreamer-full.
All the tests and examples are linking with gstreamer but the
symbol gst_init_static_plugins is only defined in the gstreamer-full
library. gstreamer-full can not be built first as it needs to know what plugins
will be built.

One option would be to build all the examples and tests after
gstreamer-full as the tools.

Disable tools build in subprojects too as it will be built at the end of
build process.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4128>
2023-05-31 15:17:11 +00:00
Nirbheek Chauhan
beb21f9254 meson: Add a new option to control the source for build-tools
Similar to orc, allow distros to force bison, flex, nasm, etc, to be
provided by the system.

Needed by the Homebrew folks:
https://github.com/Homebrew/homebrew-core/pull/125996#discussion_r1166410216

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4428>
2023-04-28 15:21:10 +05:30
Xavier Claessens
484fa93fb1 doc: Disable by default
When hotdoc is installed it takes unreasonably long time to generate
documentation during meson setup.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4292>
2023-03-31 13:30:10 +00:00
Thibault Saunier
7997b27247 meson: Add package-name option
Subprojects already yeild it so we need to expose on toplevel project too

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3931>
2023-02-10 13:46:11 +00:00
Nirbheek Chauhan
40371ff9c6 meson: Reorganize meson options a bit
Enable core gstreamer subprojects bad, ugly, libav, ges, devtools by
default. Otherwise if, say, you do, -Dgst-plugins-bad:dtls=enabled and
openssl is not found, meson will disable the entire subproject. You
have to pass -Dbad=enabled -Dgst-plugins-bad:dtls=enabled to get the
expected behaviour.

Also move options that are not for selection subprojects out of the
section, add a qt6 option, and improve the description for some
options.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3708>
2023-01-25 11:38:52 +00:00
Nirbheek Chauhan
6caa8524dd 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>
2022-09-22 22:31:21 +00:00
Camilo Celis Guzman
fc31be0917 meson_options: declare glib and gobject checks at top level
This makes it easier to specify this features for all subprojects.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2238>
2022-04-19 13:29:03 +00:00
Matthew Waters
bd5d24822a build/fuzzing: integrate fuzz targets into the build system
Currently disabled but may be enabled later.

Updates the existing fuzzing to use shared libraries as that's easier
for meson to deal with if there is a mix of static and shared libraries
on the system.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2123>
2022-04-07 08:17:35 +10:00
Thibault Saunier
2952a73f40 tools: Add support for building gstreamer tools against gst-full
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1581>
2022-03-30 17:43:17 +00:00
Tim-Philipp Müller
d4bdbeaa0d meson: add 'gpl' option and only build plugins with (A)GPL deps if explicitly enabled
Require explicit opt-in to build plugins with (A)GPL dependencies.

Keep ugly/bad options on 'auto' for now so cerbero doesn't fail.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1084>
2021-10-18 18:03:19 +01:00
Thibault Saunier
bcd3ffa8b2 Cleanup root directory from misc files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/891>
2021-09-24 16:21:18 -03:00
Stéphane Cerveau
b6f61768d3 gst-full: add 'gst-full-' features options
These options allow to select a set of features from a given
plugin with the following syntax:

-Dgst-full-plugins=plugin1;plugin10
-Dgst-full-elements=plugin2:element1,element2
-Dgst-full-typefind-functions=plugins3:func
-Dgst-full-device-providers=plugin4,dp1
-Dgst-full-dynamic-types=plugin5:dt1

By default all the enabled plugin are registered and
gst-full-plugins will allow to include only a set of plugin

If a feature(element, typefind etc.) is selected from a plugin,
the plugin is removed from the plugins list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199>
2020-12-11 12:50:16 +00:00
Stéphane Cerveau
d5dcbdb51b gst-full: use a default version script
Use a default version script instead of
Bsymbolic to get rid of x264 and ffmpeg
symbol relocation issue.

https://gitlab.freedesktop.org/gstreamer/gst-build/-/issues/108

Export only glib and gstreamer symbols.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/204>
2020-10-14 16:05:13 +02:00
Guillaume Desmottes
89faf739c9 meson: add gst-full-version-script option
Can be used to control the exact symbols exported, or not, in
libgstreamer-full.

This is useful when building a tailored libgstreamer-full aimed
to be run with some specific binaries. By using such version script
one can reduce the size of the generated lib by letting the linker
garbage collect all the unused APIs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/195>
2020-10-06 12:54:19 +00:00
Stéphane Cerveau
c96dcd2698 meson: make good and base optional
Be able to disable the base/good build on demand
By default its always enabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/178>
2020-10-06 09:48:20 +02:00
Nicolas Dufresne
9e8ce49ac4 meson: Add qt5 feature
This allow disabling qt5 across GStreamer with a single configuration.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/190>
2020-09-19 00:25:18 +00:00
Nirbheek Chauhan
237f5cc4ee Add glib-networking as a subproject when glib is a subproject
We need gio modules for tls when building gstwebrtcbin, gstsoup, etc.

Control it via a new 'tls' option, since it requires either gnutls or
openssl.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/180>
2020-08-03 18:52:20 +00:00
Nirbheek Chauhan
5234b05f92 meson_options.txt: Add an option to enable/disable tests
All subproject options yield to this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/157>
2020-06-11 13:19:18 +05:30
Tim-Philipp Müller
8ecede2ff1 meson_options: disable gtk_doc by default
We don't need to build documentation for
gtk-doc using subprojects, not by default
at least, and our 'auto' option would
override the subproject 'disabled' default
in libnice's case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/155>
2020-06-05 10:40:29 +01:00
Xavier Claessens
35285c51b8 Add gstreamer-full library containing all plugins and their deps
When building with -Ddefault_library=static, also build a single library
containing all built plugins. Any external dependencies are still
dynamically linked.

A monolithic library is easier to distribute, and in some envs like
Android is required.
2020-03-04 08:23:52 -05:00
Nirbheek Chauhan
6dfcecb16a Disable vaapi feature by default
Having vaapi decoders/encoders accidentally available by default often
causes strange test failures or weird behaviour since the plugins are
sometimes buggy or have different behaviour.
2020-03-02 11:11:47 +05:30
Nirbheek Chauhan
7f231c2d8a Disable rust feature option by default
The only requirement for the rust plugins is that a rust toolchain be
present on the system. This is problematic:

1. This means gst-build on Windows is broken by default if you have
   a Rust toolchain, since glib can't be used uninstalled
2. No output is printed on Windows at all while the rust plugins are
   being built. `custom_target()`'s `console:` keyword argument seems
   to be broken on some Windows shells.
3. Even on Linux/macOS having this enabled by default is problematic
   since it more than doubles the total build time.
4. The biggest issue with having it enabled by default is that it does
   not dependency tracking, so we always run `cargo`, which might
   update crates. This increases friction when you're working on
   unrelated code.
2020-03-02 11:05:41 +05:30
Guillaume Desmottes
20fc4b92b8 add gst-plugins-rs
Fix 
2019-12-24 09:25:40 +05:30
Stephan Hesse
1ee4c316c1 instead of 'examples' use 'gst-examples' as option to build the respective subproject
we want to do this because the other "examples" in plugins (tests etc) need  a lot deps (qt5 etc)
that are not needed by gst-examples itself.
2019-11-02 17:28:22 +01:00
Xavier Claessens
0633b417f7 Add back gtk_doc option
This is needed to disable gtk_doc in subprojects that have that option
yielding.
2019-09-18 11:27:59 -04:00
Thibault Saunier
3d24de2f24 Build documentation with hotdoc 2019-05-13 11:42:15 -04:00
Mathieu Duponchelle
d3029ec0d6 add libnice as a top-level subproject.
When relying on a system-wide libnice, we end up not building
the nice elements, which means we can't use them, and by extension
webrtcbin, in the uninstalled environment.

This also introduces a way to avoid checking the version of
a given subproject, and makes use of it for libnice and pygobject,
which only passed the version check by chance, as its current
major version is 3.
2019-04-05 15:27:37 +02:00
Seungha Yang
50037dd1eb Add an orc wrap file for using orc subproject
Depending on the newly added 'orc' meson option, this make possible
to use orc subproject on gst-build.
2019-01-29 11:50:03 +09:00
Xavier Claessens
636abc351b Add 'nls' common option 2018-11-27 09:28:36 -05:00
Nicolas Dufresne
6bb5408f1b Revert "Updated after gst-libav got moved to gst-ffmpeg"
This reverts commit d027bf7401.
2018-11-06 06:02:34 -05:00
Nicolas Dufresne
d027bf7401 Updated after gst-libav got moved to gst-ffmpeg 2018-11-06 05:34:52 -05:00
Nirbheek Chauhan
eaf17bfff4 Convert common meson options to feature options
These changes have been mirrored in all subproject repositories.

https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 15:24:06 +05:30
Tim-Philipp Müller
52859fba5c Disable gst-sharp by default, as it is not guaranteed to build
Can be re-enabled again if we check for all direct and
indirect hard deps before including it.

subprojects\gtk-sharp\Source\meson.build:40:0: ERROR: Program(s) ['gacutil'] not found or not executable
2018-07-13 00:11:41 +01:00
Thibault Saunier
3d47163919 Use new 'feature' option and dictionnary
Simplifying the build definition, making its options more flexible and
it is now simpler to read.

On a side not we want https://github.com/mesonbuild/meson/issues/3880
to simplify that again.

https://bugzilla.gnome.org/show_bug.cgi?id=796798
2018-07-12 12:15:30 -04:00
Tim-Philipp Müller
3544675ad1 meson: rename gtkdoc option to gtk_doc 2018-05-21 23:08:43 +01:00
Nirbheek Chauhan
f164b8d93f meson: Update option names to omit prefixes
Also, common options are now consistent across all gstreamer modules,
and are inherited automatically.
2018-05-05 20:30:29 +05:30
Thibault Saunier
f7c192a440 Add csharp/gstreamer-sharp support 2017-09-06 13:48:10 -03:00
Thibault Saunier
c071855c48 Allow disabling introspection from toplevel gst-build
https://bugzilla.gnome.org/show_bug.cgi?id=781148
2017-04-11 12:05:20 -03:00
Mathieu Duponchelle
95d525f43a Enable custom subprojects option 2017-03-08 00:36:03 +01:00
Scott D Phillips
a6ae14b612 add gstreamer-vaapi as a possible subproject
https://bugzilla.gnome.org/show_bug.cgi?id=778407
2017-02-09 16:15:31 -03:00
Matthew Waters
45d7f5f337 add gst-omx as a possible subproject 2017-01-18 16:25:52 +11:00
Tim-Philipp Müller
0b560fb187 Add gst-rtsp-server 2016-10-27 00:30:32 +01:00