Commit graph

126 commits

Author SHA1 Message Date
Tim-Philipp Müller
b6411ae74c libs: fix API export/import and 'inconsistent linkage' on MSVC
For each lib we build export its own API in headers when we're
building it, otherwise import the API from the headers.

This fixes linker warnings on Windows when building with MSVC.

The problem was that we had defined all GST_*_API decorators
unconditionally to GST_EXPORT. This was intentional and only
supposed to be temporary, but caused linker warnings because
we tell the linker that we want to export all symbols even
those from externall DLLs, and when the linker notices that
they were in external DLLS and not present locally it warns.

What we need to do when building each library is: export
the library's own symbols and import all other symbols. To
this end we define e.g. BUILDING_GST_FOO and then we define
the GST_FOO_API decorator either to export or to import
symbols depending on whether BUILDING_GST_FOO is set or not.
That way external users of each library API automatically
get the import.

While we're at it, add new GST_API_EXPORT in config.h and use
that for GST_*_API decorators instead of GST_EXPORT.

The right export define depends on the toolchain and whether
we're using -fvisibility=hidden or not, so it's better to set it
to the right thing directly than hard-coding a compiler whitelist
in the public header.

We put the export define into config.h instead of passing it via the
command line to the compiler because it might contain spaces and brackets
and in the autotools scenario we'd have to pass that through multiple
layers of plumbing and Makefile/shell escaping and we're just not going
to be *that* lucky.

The export define is only used if we're compiling our lib, not by external
users of the lib headers, so it's not a problem to put it into config.h

Also, this means all .c files of libs need to include config.h
to get the export marker defined, so fix up a few that didn't
include config.h.

This commit depends on a common submodule commit that makes gst-glib-gen.mak
add an #include "config.h" to generated enum/marshal .c files for the
autotools build.

https://bugzilla.gnome.org/show_bug.cgi?id=797185
2018-09-24 14:45:56 +01:00
Tim-Philipp Müller
29c7f95884 meson: add glib-checks option to disable API guards and such
We want this enabled by default, also in releases, but people
may want to disable this for performance-critical workloads or
on embedded devices.
2018-09-19 12:02:19 +01:00
Nirbheek Chauhan
cea5e3fcdb meson: Maintain macOS ABI through dylib versioning
Requires Meson 0.48, but the feature will be ignored on older versions
so it's safe to add it without bumping the requirement.

Documentation:
https://github.com/mesonbuild/meson/blob/master/docs/markdown/Reference-manual.md#shared_library
2018-08-31 14:41:00 +05:30
Tim-Philipp Müller
7b8d74c15b meson: add options to disable gobject cast checks and glib asserts
... and define G_DISABLE_DEPRECATED for development versions,
like we do in autotools.
2018-08-18 21:32:11 +01:00
Nirbheek Chauhan
5177f7c7ee meson: host_system is 'ios' when building for iOS
The cross file sets this value, and we use 'ios' in Cerbero.
2018-08-17 04:07:24 +05:30
Nirbheek Chauhan
5c462b9b12 meson: Add an option for tests
This is needed because we don't always have gstreamer-check available,
for instance inside Cerbero on iOS.
2018-08-17 01:49:37 +05:30
Nirbheek Chauhan
546dd512e8 meson: Define HAVE_OSX on macOS and iOS
Needed by the shm, ladspa, and lv2 plugins. Same as Autotools.
2018-08-15 19:44:17 +05:30
Alessandro Decina
c9226e6e80 meson: enable applemedia 2018-08-03 12:51:28 +10:00
Nicolas Dufresne
d2ee9b16fa opencv: Fixup include to follow new standard
This uses the new path for OpenCV headers. OpenCV now have
master headers files per modules, which reduce the amount of
required includes. Note that HIGHGUI was included to get the
imgcodecs includes, which I fixed, though the master header is
missing the C headers, so I included that directly. All the
image stuff should be ported to C++ eventually. Finally, this
patch also update the header checks to reflect the modules that
are really being used.
2018-08-02 11:31:34 -04:00
Nirbheek Chauhan
b55dfb5313 Add feature options for almost all plugins
The only plugins remaining are those that haven't been ported to Meson
yet, and msdk. Also, the tests are still automagic.

https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 19:04:38 +05:30
Nirbheek Chauhan
7ef303fa28 meson: Add feature options for many plugins
The rest will be converted later, these are necessary for gst-build to
set options correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 18:43:52 +05:30
Tim-Philipp Müller
b0404761f0 meson: add 'nls' option to disable translations
And enable by default. Was implicitly disabled because
ENABLE_NLS was not defined.
2018-05-21 12:07:04 +01:00
Nirbheek Chauhan
feac77ace3 meson: Update option names to omit disable_ and with- prefixes
Also yield common options to the outer project (gst-build in our case)
so that they don't have to be set manually.
2018-05-05 20:06:39 +05:30
Xavier Claessens
83d0623293 Meson: Generate pc file for all plugins in bad
https://bugzilla.gnome.org/show_bug.cgi?id=794568
2018-04-25 11:08:09 +01:00
Tim-Philipp Müller
87368e98b4 meson: use -Wl,-Bsymbolic-functions where supported
Just like the autotools build.
2018-04-25 11:00:00 +01:00
Tim-Philipp Müller
b647888dc8 meson: webrtc: use gnome.mkenums_simple() to generate enumtypes files 2018-03-22 14:34:17 +00:00
Alessandro Decina
f49134095c meson: use gnome.mkenums_simple() to generate enumtypes files
Means we no longer need our custom scripts, nor template files.
2018-03-22 14:34:05 +00:00
Tim-Philipp Müller
ce0d902d39 Back to development 2018-03-20 09:39:17 +00:00
Tim-Philipp Müller
48cde372d6 Release 1.14.0 2018-03-19 20:24:08 +00:00
Tim-Philipp Müller
84da104b06 Release 1.13.91 2018-03-13 19:22:13 +00:00
Tim-Philipp Müller
076809ebd5 Release 1.13.90 2018-03-03 22:39:39 +00:00
Mathieu Duponchelle
47208072bf meson: enable more warnings 2018-03-01 18:44:30 +01:00
Tim-Philipp Müller
a0cc9d1af0 Remove schroedinger plugin
No upstream (website disappeared), no maintainer, and
pretty much a fringe format anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=776215
2018-03-01 15:24:39 +00:00
Tim-Philipp Müller
9af73aa1d1 meson: simplify GST_DISABLE_GST_DEBUG check and don't use add_global_*
add_global_arguments() can't be used in subprojects. It's
entirely possible that -bad is a subproject but gstreamer
is picked up from an installed location, so we should
really use add_project_arguments() in both cases.
2018-02-21 19:46:04 +00:00
Justin Kim
2169c8807b meson: Use .dylib suffix if darwin
For Mac OS, GST_EXTRA_MODULE_SUFFIX should be set as '.dylib'.

https://bugzilla.gnome.org/show_bug.cgi?id=793585
2018-02-21 15:05:42 +00:00
Tim-Philipp Müller
c282f4148c Back to development 2018-02-15 19:44:23 +00:00
Tim-Philipp Müller
89a3d9e53e Release 1.13.1 2018-02-15 18:52:07 +00:00
Tim-Philipp Müller
34276dc373 meson: make version numbers ints and fix int/string comparison
WARNING: Trying to compare values of different types (str, int).
The result of this is undefined and will become a hard error
in a future Meson release.
2018-02-08 19:13:35 +00:00
Tim-Philipp Müller
f75c7823dd meson: use -fno-strict-aliasing where supported
https://bugzilla.gnome.org/show_bug.cgi?id=769183
2018-01-30 20:35:10 +00:00
Tim-Philipp Müller
cfe030ad1b meosn: curl: also check for and use libssh2 if available 2018-01-22 18:55:06 +00:00
Tim-Philipp Müller
ef557b5667 meson: skip translations if gettext is not available 2017-12-26 13:52:18 +01:00
Tim-Philipp Müller
27e1e515a4 meson: gl: fix build of openglmixers plugin 2017-12-19 17:34:50 +00:00
Tim-Philipp Müller
b680870c32 meson: fix dependency type name to check for 2017-12-19 15:14:07 +00:00
Tim-Philipp Müller
b7bfcc32d1 meson: fix build with GstGL from gst-plugins-base as subproject
- use right fallback variable
- get platform/winsys variables from subproject instead of pkg-config

With contributions from Thibault Saunier.
2017-12-19 15:07:48 +00:00
Tim-Philipp Müller
06e4403fdb gl: update plugins to use GstGL from -base 2017-12-19 12:02:31 +00:00
Nirbheek Chauhan
a07248aec4 meson: Use cdata.set_quoted and set LIBDIR correctly
LIBDIR must include the prefix. Also use set_quoted instead of
manually quoting because it's clearer what the intention is.

https://bugzilla.gnome.org/show_bug.cgi?id=791751
2017-12-19 01:14:03 +05:30
Havard Graff
22f0f11abf meson: remove vs_module_defs
The GST_EXPORT should handle it.
2017-10-05 13:57:48 +01:00
George Kiagiadakis
282b682cab tests: ipcpipeline: provide pipe2() on systems that don't have it
https://bugzilla.gnome.org/show_bug.cgi?id=786763
2017-08-31 15:09:24 +03:00
Tim-Philipp Müller
57b542c5e5 meson: hide symbols by default unless explicitly exported 2017-08-11 13:59:04 +01:00
Tim-Philipp Müller
e0c1edcf56 meson: add translations 2017-07-15 12:52:38 +01:00
Nirbheek Chauhan
7e6a44388b meson: Set python3 before plugin subdir()s
It's used by the msdk plugin
2017-07-07 17:07:31 +05:30
Tim-Philipp Müller
151aa9ee2a meson: find python3 via python3 module
https://bugzilla.gnome.org/show_bug.cgi?id=783198
2017-07-07 11:59:03 +01:00
Thibault Saunier
d9c61ff4aa meson: Allow using glib as a subproject 2017-06-28 11:40:17 -04:00
Tim-Philipp Müller
4f9163c06c meson: fix with-package-name option
https://bugzilla.gnome.org/show_bug.cgi?id=784082
2017-06-26 09:52:24 +01:00
Mathieu Duponchelle
794ada056a tests: start porting to meson
Incomplete port, to get the ball rolling

https://bugzilla.gnome.org/show_bug.cgi?id=782962
2017-06-07 20:21:17 +02:00
Tim-Philipp Müller
c402496916 Require wildmidi >= 0.4
https://bugzilla.gnome.org/show_bug.cgi?id=768576
2017-05-23 09:58:08 +01:00
Tim-Philipp Müller
bd22e10799 meson: don't need config.h.meson any longer 2017-05-21 18:03:02 +01:00
Tim-Philipp Müller
918ad83e46 meson: add options to set package name and origin
https://bugzilla.gnome.org/show_bug.cgi?id=782172
2017-05-20 15:04:45 +01:00
Nicolas Dufresne
60fa3cab5b Bump and update for meson 0.40.1
This patch bumps the required meson to 0.40.1 as gstreamer core just
did, and cleanup some code to use a feature from 0.37 that allow
specifying version range when checking dependency.

https://bugzilla.gnome.org/show_bug.cgi?id=780654
2017-05-09 13:18:45 -04:00
Scott D Phillips
0309b20098 meson: Ignore msvc warnings in C++ as well
We were only ignoring the listed msvc warnings for C language
files and not C++. This was working by the coincidence that we did
not have any instances of these warnings in C++ files. Lately the
build of decklink has been fixed on windows, and it has an
instance of one of these warnings in a C++ file.

https://bugzilla.gnome.org/show_bug.cgi?id=782345
2017-05-08 19:18:03 +01:00
Sebastian Dröge
09fe080e6a Back to development 2017-05-04 18:59:14 +03:00
Sebastian Dröge
da5b0d7ad3 Release 1.12.0 2017-05-04 15:39:05 +03:00
Sebastian Dröge
b73339d751 Release 1.11.91 2017-04-27 17:30:38 +03:00
Sebastian Dröge
75acc1afad Release 1.11.90 2017-04-07 16:32:24 +03:00
Nirbheek Chauhan
ddcd7735b6 meson: Build mpeg2enc and mplex when available 2017-03-23 02:48:39 +05:30
Sebastian Dröge
46d7470e6e meson: Update version 2017-02-24 15:59:44 +02:00
Thibault Saunier
cea4346d84 meson: Build GIR files 2017-01-23 12:48:53 -03:00
Tim-Philipp Müller
96a374ebce meson: bump version 2017-01-13 12:39:21 +00:00
Tim-Philipp Müller
3ecf1d8fd1 meson: build decklink plugin 2017-01-05 20:34:14 +00:00
Thibault Saunier
eb728ad13b meson: Support building without Gst debug 2017-01-05 09:52:47 -03:00
Sebastian Dröge
9b5de05399 Remove various unported plugins
If they were not ported after 4+ years it seems unlikely that anybody is
ever going to need them again. They're still in the GIT history if
needed.

https://bugzilla.gnome.org/show_bug.cgi?id=774530
2016-12-21 11:17:11 +02:00
Nirbheek Chauhan
2160e0e2bd meson: Rework opencv plugin checks
a) Use get_pkgconfig_variable() to get the opencv prefix
b) Place an upper limit on the opencv version
c) Ensure that headers are available

(b) and (c) just copy what the configure.ac checks do.
2016-11-29 02:00:52 +05:30
Scott D Phillips
62fb78d084 meson: add_global_arguments -> add_project_arguments
https://bugzilla.gnome.org/show_bug.cgi?id=774656
2016-11-18 09:39:59 +00:00
Matthew Waters
b69dadcc61 meson: wayland: move dep checks to the lib
Moves them closer to where they are used.  We don't want every check in
the main meson.build file.
2016-11-17 15:16:18 +11:00
Thibault Saunier
c38d3a41e2 meson: Build waylandsink
https://bugzilla.gnome.org/show_bug.cgi?id=774493
2016-11-15 18:33:25 -03:00
Scott D Phillips
ba2908aa2c meson: don't add_global_arguments when being built as a subproject
https://bugzilla.gnome.org/show_bug.cgi?id=773568
2016-11-11 16:55:38 +00:00
Tim-Philipp Müller
92384493c1 meson: update version 2016-11-01 18:10:23 +00:00
Nirbheek Chauhan
27df1b6c90 meson: Don't warn about C4146 with MSVC
The error is:

unary minus operator applied to unsigned type, result still unsigned

This is a commonly-done operation in gstreamer and it's done on purpose.
It's just noise.
2016-10-27 23:06:25 +05:30
Scott D Phillips
7ce5fabc82 meson: Remove gstreamer-check-1.0 dependency
It will later be added under tests/check

https://bugzilla.gnome.org/show_bug.cgi?id=773114
2016-10-21 06:05:19 -03:00
Nirbheek Chauhan
7c7e0a6a6d meson: Don't set c_std to gnu99
Use the default for each compiler on every platform instead. This
improves our compatibility with compilers that don't have gnu99 as
a c_std.
2016-10-15 22:19:02 +05:30
Thibault Saunier
712c1b3c68 meson: Setup pre-commit hooks when configuring 2016-09-30 11:38:24 -03:00
Tim-Philipp Müller
dd118c4737 meson: update version 2016-09-30 11:43:29 +01:00
Thibault Saunier
f5c547063c meson: Fix building with meson 0.34 when using subprojects
When using subproject meson.source_root() returns the root
directory of the toplevel project which break build.

Upstream meson bug: https://github.com/mesonbuild/meson/issues/722
2016-09-05 22:32:55 -03:00
Thibault Saunier
ee46fba6c1 meson: Bump version to 1.9.2 2016-09-05 12:22:17 -03:00
Thibault Saunier
50473d77cc meson: Make mpegts lib build when using subprojects
The headers passed as parametter are relative to the build dir
basically "../subproject/gst-plugins-bad/gst-libs/gst/mpegts/XXX.h"
but that does not match what is needed at build time when building as
subproject, also we always add current dir as include_dir so we are
safe including directly.

And link mpegtsdemux against the 'math' library as it is needed.
2016-08-25 15:17:17 -03:00
Nirbheek Chauhan
42af2d66d8 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Matej Knopp <matej.knopp@gmail.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:35:54 +01:00