Commit graph

70 commits

Author SHA1 Message Date
Tim-Philipp Müller
dc29bc4e13 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 08:45:34 +01:00
Seungha Yang
cfc8d7ec9e meson: Specify encoding to UTF-8 when building with MSVC
Fix build on some non-US locale Windows systems

Error:
  gst-plugins-base/tools/gst-device-monitor.c(278): error C2001

https://bugzilla.gnome.org/show_bug.cgi?id=797186
2018-09-21 18:39:02 +01:00
Tim-Philipp Müller
c0c112a45c 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 11:42:14 +01:00
Nirbheek Chauhan
a9cab426d0 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:40:43 +05:30
Tim-Philipp Müller
73828a1a5c meson: move gmodule check to top-level
It's also needed by the generic/states test and the variable
is currently checked as part of the opengl lib tests so wouldn't
be available if opengl was disabled.
2018-08-16 10:58:47 +01:00
Tim-Philipp Müller
7be5b7b99e meson: add build options to disable tools and tests 2018-08-12 18:12:35 +01:00
Tim-Philipp Müller
c9f975ea0c 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-12 00:13:31 +01:00
Alessandro Decina
06b8792a5f gl/meson: OSX support (CGL and Cocoa)
[Matthew Waters]: minor additions such as -fobjc-arc and relying on
dependency rather than cc.find_library()
2018-08-03 12:53:10 +10:00
Nirbheek Chauhan
be79f74c4d meson: Fix build with x11 dependency is disabled
gtk_x11_dep is used unconditionally in tests/icles/meson.build
2018-07-31 23:32:42 +05:30
Nirbheek Chauhan
eadedc68f8 meson: Add feature options for all plugins
GL dependency detection is still automagic.

https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 18:42:11 +05:30
Tim-Philipp Müller
75b7ba5481 meson: rename gtkdoc option to gtk_doc 2018-05-21 23:12:22 +01:00
Tim-Philipp Müller
d3bd3e0400 meson: add install_plugins_helper option 2018-05-21 11:35:05 +01:00
Tim-Philipp Müller
e87eb9537d meson: use cdata.set_quoted() in more places 2018-05-20 14:38:37 +01:00
Tim-Philipp Müller
39e1dd0bbf meson: add 'nls' option to disable translations
And enable by default. Was implicitly disabled because
ENABLE_NLS was not defined.
2018-05-20 14:27:59 +01:00
Nirbheek Chauhan
1e1a5d658e 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 and use array types for some
options.
2018-05-05 20:30:52 +05:30
Xavier Claessens
201e7c7803 Meson: Generate pc file for all plugins in base
https://bugzilla.gnome.org/show_bug.cgi?id=794568
2018-04-25 11:05:56 +01:00
Tim-Philipp Müller
447942c63d meson: use -Wl,-Bsymbolic-functions where supported
Just like the autotools build.
2018-04-25 10:57:48 +01:00
Mathieu Duponchelle
d767773a47 meson: move some dependency checks to the top level
The newly-added build definitions for test/icles relied
on dependencies that were only defined when the examples
are enabled, thus breaking meson build -Ddisable_examples=true
2018-04-18 17:24:35 +02:00
Alessandro Decina
345aa2cd9e meson: libs: use gnome.mkenums_simple() to generate enumtypes files
This way we no longer need custom wrapper scripts or template files.
2018-03-22 13:15:35 +00:00
Nicolas Dufresne
8ee306eb3f allocators: Add DMABuf synchronization
When doing CPU Access, some architecture may require caches to be
synchronize before use. Otherwise, some visual artifact may be
visible, as the CPU modification may still resides in cache.

https://bugzilla.gnome.org/show_bug.cgi?id=794216
2018-03-21 15:58:06 -04:00
Tim-Philipp Müller
694da6b476 Back to development 2018-03-20 09:15:38 +00:00
Tim-Philipp Müller
46fc41f1a8 Release 1.14.0 2018-03-19 20:15:03 +00:00
Tim-Philipp Müller
abcb96b698 Release 1.13.91 2018-03-13 19:13:19 +00:00
Tim-Philipp Müller
7d18a97273 Release 1.13.90 2018-03-03 22:07:25 +00:00
Mathieu Duponchelle
dc17ac5516 meson: enable more warnings
https://bugzilla.gnome.org/show_bug.cgi?id=793960
2018-03-01 18:39:09 +01:00
Tim-Philipp Müller
8292ab8236 Back to development 2018-02-15 19:44:17 +00:00
Tim-Philipp Müller
a009168b0e Release 1.13.1 2018-02-15 17:01:15 +00:00
Tim-Philipp Müller
5b970a75fa 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 17:18:32 +00:00
Tim-Philipp Müller
dbae19773a meson: use -fno-strict-aliasing if supported
https://bugzilla.gnome.org/show_bug.cgi?id=769183
2018-01-30 20:33:39 +00:00
Tim-Philipp Müller
c443e33a3a meson: use built-in pic kwarg when building static helper libs
instead of passing -fPIC manually.
2018-01-30 20:33:17 +00:00
Tim-Philipp Müller
5e04350ac1 meson: skip translations if gettext is not available 2017-12-26 13:49:25 +01:00
Havard Graff
43985b363d meson: remove vs_module_defs
GST_EXPORT should handle it.
2017-10-05 13:53:14 +01:00
Tim-Philipp Müller
94d2e4c223 meson: hide symbols by default unless explicitly exported 2017-08-10 14:01:19 +01:00
Tim-Philipp Müller
8ec88f5d32 meson: add translations 2017-07-15 12:45:35 +01:00
Tim-Philipp Müller
82e77844c2 meson: find python3 via python3 module
https://bugzilla.gnome.org/show_bug.cgi?id=783198
2017-07-07 11:56:40 +01:00
Thibault Saunier
6441df09e9 meson: Allow using glib as a subproject 2017-06-28 11:31:25 -04:00
Tim-Philipp Müller
7890c0f7e8 meson: fix with-package-name option
https://bugzilla.gnome.org/show_bug.cgi?id=784082
2017-06-26 09:44:51 +01:00
Tim-Philipp Müller
e774d1ca4b meson: use dep.get_pkgconfig_variable()
instead of calling pkg-config ourselves.
2017-06-05 23:57:48 +01:00
Tim-Philipp Müller
aa69b69e63 meson: don't need config.h.meson any longer 2017-05-21 17:35:36 +01:00
Tim-Philipp Müller
74d974817f meson: make C++ compiler optional
It's only used to check our headers are C++ clean and
for the Qt example.
2017-05-21 09:37:14 +01:00
Tim-Philipp Müller
7fb0aeac10 meson: add options to set package name and origin
https://bugzilla.gnome.org/show_bug.cgi?id=782172
2017-05-20 14:46:51 +01:00
Tim-Philipp Müller
60e9629860 g-i: no need to load registry in g-i scanner 2017-05-04 23:55:20 +01:00
Sebastian Dröge
cbb900ac66 Back to development 2017-05-04 18:59:14 +03:00
Sebastian Dröge
112cc33d6a Release 1.12.0 2017-05-04 15:37:27 +03:00
Sebastian Dröge
1debd803de Release 1.11.91 2017-04-27 17:25:49 +03:00
Sebastian Dröge
910b2ca6d2 Release 1.11.90 2017-04-07 16:31:10 +03:00
Sebastian Dröge
f6f4ae19c2 meson: Update version 2017-02-24 15:59:38 +02:00
Tim-Philipp Müller
3bf38e4e1b meson: bump version 2017-01-13 12:38:52 +00:00
Thibault Saunier
6f50b59a20 meson:doc: Build libraries documentations 2016-12-16 11:27:31 -03:00
Thibault Saunier
c2d3c98340 meson: Support building without Gst debug 2016-12-09 18:29:47 -03:00