Commit graph

152 commits

Author SHA1 Message Date
Xavier Claessens
1ec04817eb Allow Strawberry Perl on Windows with Meson >= 0.60.0
Meson now explicitly blacklists pkg-config.bat from Strawberry Perl and
thus building GStreamer on Windows has been fixed.

This allows for instance to build GStreamer on GitHub Action Windows
runners that have Strawberry Perl by default.

It is also useful when needing to build OpenSSL on the same Windows
machine because it requires Perl.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1263>
2021-10-31 20:07:39 +00:00
Xavier Claessens
99749956f0 Rename toplevel project to gstreamer-full
This generates better tarball names when doing "meson dist" on the top
level project. It is also consistent with that project providing
gstreamer-full library.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1230>
2021-10-22 12:38:46 -04:00
Tim-Philipp Müller
c5bc0bd7c4 meson: fix use of deprecated meson api meson.has_exe_wrapper()
Use meson.can_run_host_binaries() instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1183>
2021-10-20 11:20:44 +00:00
Tim-Philipp Müller
8dfab0b08c meson: update for meson.build_root() and .build_source() deprecation
-> use meson.project_build_root() or .global_build_root() instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1183>
2021-10-20 11:20:44 +00:00
Xavier Claessens
14115b714f Add initial meson devenv support
There is still a few things missing compared to gst-env.py, but it is
functional.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1162>
2021-10-19 16:18:43 +00:00
Tim-Philipp Müller
0a25f22f1b meson: bump meson requirement to >= 0.59
For monorepo build and ugly/bad, for advanced feature
option API like get_option('xyz').required(..) which
we use in combination with the 'gpl' option.

For rest of modules for consistency (people will likely
use newer features based on the top-level requirement).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1084>
2021-10-18 18:03:19 +01:00
Nirbheek Chauhan
40fb39502e meson: Define cpp_std in the top-level project()
Due to a bug, meson ignores ${lang}_std settings in default_options
for subprojects: https://github.com/mesonbuild/meson/issues/1889

This causes build failures when a subproject requires c++11 or c++14,
etc. Compilers that support those cpp_stds are very common, and all
the toolchains that we support include c++ compilers, so we can
add cpp_std=c++14 to the top-level.

This fixes the webrtc-audio-processing build on Linux, and harfbuzz on
macOS.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1133>
2021-10-17 09:36:09 +00:00
Thibault Saunier
08eac09c12 meson: Fix warning building GstGLEGL
We forgot to add the `GstGL` gir as a dependency which was properly
done for GstGLWayland and GstGLX11.

And document why we use a list for `all_libraries`

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1168>
2021-10-16 01:24:45 +00:00
Thibault Saunier
e436bf66e1 meson: Add info about 'gstreamer-full'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1093>
2021-10-15 19:28:29 -03:00
Thibault Saunier
8b7b068d53 meson: Streamline the way we detect when to build documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1093>
2021-10-15 19:28:29 -03:00
Thibault Saunier
4210ac43ec Use new libraries subprojects variables to statically link then
And also build the girs against `gstreamer-full` when possible. Also
making `gst_init_static_plugins` available from the bindings.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1093>
2021-10-15 19:27:30 -03:00
Thibault Saunier
1babccfe50 python: Fix using overrides when not building PyGObject
Since 547570cd79 we do not always build
PyGObject and our development environment is broken when trying to use
GStreamer python when built against system PyGObject with the following
error importing Gst in there:

```
12345678** (gst-plugin-scanner:710617): CRITICAL **: 11:45:02.343: can't find gi.repository.Gst
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/gi/repository/__init__.py", line 23, in <module>
    from ..importer import DynamicImporter
  File "/usr/lib64/python3.9/site-packages/gi/importer.py", line 33, in <module>
    from .overrides import load_overrides
ImportError: cannot import name 'load_overrides' from 'gi.overrides' (/var/home/thiblahute/devel/gstreamer/gstreamer/subprojects/gst-editing-services/bindings/python/gi/overrides/__init__.py)
Factory Details:
```

The approach to fixing it is to implement override `gi` in
`gst-python/gi/` which we add to `PYTHONPATH`) and in there reset the
`gi` module to the right place and we get overrides from paths from
`_GI_OVERRIDES_PATH` we set in `gst-env.py` which points to all the
overrides that will be installed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1155>
2021-10-15 20:51:41 +00:00
Bastien Nocera
547570cd79 build: Disable pygobject submodule if system version exists
If pygobject is available on the system, its version is new enough,
don't build the older pygobject and rely on that system one.

This fixes totem not being able to use libpeas' Python support.

** (totem:544972): WARNING **: 12:04:05.407: Error initializing Python Plugin Loader: PyGObject initialization failed
ImportError: could not import gobject (version mismatch, 3.40.1 is required, found 3.38.1)

Closes: 
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1135>
2021-10-13 14:17:13 +00:00
Tim-Philipp Müller
f1a169f39d Back to development
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/925>
2021-09-26 01:07:02 +01:00
Tim-Philipp Müller
d1d8223d52 meson: fix up version
(Sync with other subprojects, we'll go back to dev in a separate commit).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/924>
2021-09-26 00:02:33 +01:00
Nicolas Dufresne
3037fde5eb Move commit gst-indent hook to the root
This renable at meson setup time the installation of the gst-indent
commit hook. The hooks were kept from gst-devtools as this set supports
both C checks and Python checks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/904>
2021-09-24 17:47:01 -03:00
Thibault Saunier
fba2402ac3 Remove git-update and git-worktree as they do not make sense anymore
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/891>
2021-09-24 16:21:18 -03:00
Nirbheek Chauhan
c99e3b312a meson: Don't use add_global_arguments when a subproject
This is the correct fix for https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/236

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/259>
2021-08-30 17:23:05 +05:30
Nirbheek Chauhan
06869815fd Revert "Meson: Avoid using add_global_arguments() when gst-build is a subproject"
This reverts commit ebcca1e5ea.

/utf-8 is needed to deal with subprojects that we do not control.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/259>
2021-08-30 17:21:44 +05:30
Nirbheek Chauhan
afd11f3383 New subproject macos-bison-binary to provide bison on macOS
The version of bison that ships with macOS is too old, so we need to
provide our own version of it.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/257>
2021-08-28 23:44:52 +05:30
Olivier Crete
879126a31c Allow running gst-uninstalled when gst-build is a subproject
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/222>
2021-08-27 12:44:25 +00:00
Xavier Claessens
ebcca1e5ea Meson: Avoid using add_global_arguments() when gst-build is a subproject
Meson only allows the main project to use it. We already set that flag
in all GStreamer modules just like warning flags.

Fixes: 
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/236>
2021-08-12 14:17:30 +00:00
Tim-Philipp Müller
723478b6be Back to development 2021-06-01 15:34:41 +01:00
Tim-Philipp Müller
3804f23e3f Release 1.19.1 2021-06-01 00:17:06 +01:00
Stéphane Cerveau
cb74a24fbd gstreamer-full: error about introspection
The introspection feature is not supported yet
in static build.
Needs
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/167/diffs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/242>
2021-05-04 11:41:46 +02: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
52e7b2a8e0 gst-full: fix static build on Windows host
Static build needs a version script which is
not available on Windows.
Need to implement use of def file.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/226>
2020-11-23 17:32:08 +01:00
Nirbheek Chauhan
81c3c9175b meson: Do not add MSVC warnings flags globally
These get added to *all* subprojects, including ones we do not
maintain such as ffmpeg which then emits thousands of warnings that
completely overwhelm the compile output.

We will add these in each gstreamer subproject separately.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/223>
2020-11-04 18:41:36 +05:30
Stéphane Cerveau
94260955ba gst-full: add warning for gst_init_static_plugins
As some compiler might not supported -Wl,--undefined
add a warning to the meson configure stage.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/211>
2020-10-28 14:15:52 +00:00
Stéphane Cerveau
a4f711e9e5 gst-full: add linker flag to keep gst_init_static_plugins
In a fully static link where an app link with gstreamer-full
the gst_init_static_plugins can be discarded because
no one references it.
Indeed the symbol is looked up by gst_init to call if it exists
and so it is not clearly referenced.

In order to avoid this issue, we use the linker flag
--undefined=gst_init_static_plugins to keep
the symbol.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/207>
2020-10-21 15:44:59 +02:00
Stéphane Cerveau
f82527519c gst-full: use '-Wl,-Bsymbolic-functions' to reduce footprint
As most of the gst/glib modules, use this linker flag
to reduce footprint.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/204>
2020-10-14 16:05:13 +02:00
Stéphane Cerveau
751aacd8fc Revert "gstreamer-full: Fix link with x264"
This reverts commit e236d4f71a.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/204>
2020-10-14 16:05:13 +02:00
Stéphane Cerveau
bda7145460 gstreamer-full: add unit test
This test allows to test gstreamer-full behaviour

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/203>
2020-10-12 10:27:55 +02:00
Xavier Claessens
b25e471eaf gstfull: Also include 'sources' from dependencies
It contains generated headers like mkenums.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/203>
2020-10-12 10:27:55 +02:00
Xavier Claessens
8a9d21ce18 gst-full: Add missing include directories to use it in subprojects
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/203>
2020-10-12 10:27:55 +02:00
Stéphane Cerveau
b4256c219d gst-full: declare dependency
Declare the gstreamer-full dependency which can be used
later by 3rd party applications.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/203>
2020-10-12 10:27:55 +02:00
Stéphane Cerveau
30ea94f40c meson: move custom_subproject definition for gst-full
In order to let any subproject to use gstreamer-full
declare the subprojects after gstreamer-full definition.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/203>
2020-10-12 10:27:55 +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
Xavier Claessens
4dc93ef130 gst-full: Remove gstinitstaticplugins.h
That header is not needed any more because gst_init() now calls
gst_init_static_plugins() automatically when available.

This is an API break compared to 1.18, but release notes made it clear
it was an experimental feature.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/191>
2020-10-05 17:17:46 -04:00
Nirbheek Chauhan
debe544d3f windows: Detect Strawberry Perl and error out early
This is going to fail during the compile phase because Strawberry Perl
ships with its own pkg-config and pkgconfig files for zlib/libffi with
unusable values.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/197>
2020-10-01 23:11:24 +05:30
Tim-Philipp Müller
be984e88db Back to development 2020-09-08 16:59:25 +01:00
Tim-Philipp Müller
32d3a2544d Release 1.18.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/186>
2020-09-08 09:59:40 +01:00
Tim-Philipp Müller
dd2bf7996c Release 1.17.90 2020-08-20 16:17:01 +01: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
Stéphane Cerveau
e236d4f71a gstreamer-full: Fix link with x264
If a static build is requested and x264 plugin has been enabled
the full link fails with:

/usr/bin/ld: subprojects/x264/libx264.a(cabac-a.o): relocation
R_X86_64_PC32 against symbol `x264_cabac_range_lps' can not be used when
making a shared object; recompile with -fPIC

Fixes 

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/169>
2020-07-22 12:40:00 +02:00
Tim-Philipp Müller
80976dea2c Fix up update-orc-dist target for the case where there are no orc targets
See https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/168#note_561914

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/173>
2020-07-08 11:29:40 +01:00
Tim-Philipp Müller
02995c8417 meson: clean up workaround for older meson versions that's no longer needed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/172>
2020-07-07 18:48:49 +00:00
Tim-Philipp Müller
ebf79cf723 Add update-orc-dist target
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/168>
2020-07-04 15:01:08 +01:00
Tim-Philipp Müller
45a09d4a81 Back to development 2020-07-03 02:04:31 +01:00