Commit graph

27 commits

Author SHA1 Message Date
Tim-Philipp Müller
46ed0f0489 libs: fix 'inconsistent DLL linkage' warnings on Windows
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.

https://bugzilla.gnome.org/show_bug.cgi?id=797185
2018-09-23 23:23:01 +01:00
Nirbheek Chauhan
c389c59b22 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:14 +05:30
Tim-Philipp Müller
ce4698487e meson: add option to disable parse-launch pipeline string parser 2018-08-10 00:08:43 +01:00
Bastian Köcher
cd3e55c38e gstreamer: fix install dir for configure files
Nixos installs into a non-standard includedir.

https://bugzilla.gnome.org/show_bug.cgi?id=794856
2018-07-07 12:42:17 +02:00
Nirbheek Chauhan
4fb02fc85b 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:30:43 +05:30
Xavier Claessens
b00b1d5361 Meson: Use library() to build both static and shared libs
Meson supports building both static and shared libraries in a single
library() call. It has the advantage of reusing the same .o objects and
thus avoid double compilation.

https://bugzilla.gnome.org/show_bug.cgi?id=794627
2018-04-25 00:40:30 +01:00
Alessandro Decina
145eca289a meson: use gnome.mkenums_simple() to generate core enumtypes 2018-03-22 12:50:30 +00:00
Matthew Waters
86abf49c23 gst: add a promise object
An object that can be waited on and asked for asynchronous values.
In much the same way as promise/futures in js/java/etc

A callback can be installed for when the promise changes state.

Original idea by
Jan Schmidt <jan@centricular.com>

With contributions from
Nirbheek Chauhan <nirbheek@centricular.com>
Mathieu Duponchelle <mathieu@centricular.com>

https://bugzilla.gnome.org/show_bug.cgi?id=789843
2017-11-23 00:48:30 +11:00
Havard Graff
fee176d253 meson: remove vs_module_defs
The GST_EXPORT should handle it.
2017-10-05 09:35:41 +01:00
Tim-Philipp Müller
24880717cf meson: fix a few warnings 2017-08-07 11:06:58 +01:00
Tim-Philipp Müller
d93ebba58b meson: add option to disable tracer hooks 2017-07-05 13:27:48 +01:00
Tim-Philipp Müller
f6b42d1f56 meson: don't need config.h.meson any more
Meson does the largefile support automatically nowadays, and
can generate a config.h from configuration_data() without a
template as input.
2017-05-21 14:31:56 +01:00
Tim-Philipp Müller
dcfb222e05 meson: add gst-ptp-helper
https://bugzilla.gnome.org/show_bug.cgi?id=774418
2017-05-05 11:49:08 +01:00
Rico Tzschichholz
72e42f0ce9 meson: A couple for GIR-generation fixes 2017-04-13 10:05:53 +01:00
Thibault Saunier
d6dba3fd6f meson: Add an option to disable usage of libunwind
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=778193
2017-02-24 16:16:23 -03:00
Nirbheek Chauhan
cd9e154c73 meson: Fix build with latest upstream git
Trivial incorrect include_directories() call
2017-02-18 16:49:40 +05:30
Nirbheek Chauhan
9e5d1370c8 meson: Fix order of C source and header in mkenums
Otherwise gstenum_h dependencies don't get added properly to gst_dep and
we see racy build failures everywhere.
2016-12-22 23:39:39 +05:30
Tim-Philipp Müller
21d3f9a0e4 meson: use gnome.mkenums() with template files for enum file gen
Saves us a custom script. Template files are nicer than passing
multiline templating stuff through to glib-mkenums. And we can
get rid of our custom python script.
2016-12-22 11:35:04 +00:00
Nirbheek Chauhan
aefc8007c6 meson: Add several missing features from configure.ac
* -Wl,-Bsymbolic-functions
* HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID
* HAVE_POSIX_TIMERS
* HAVE_MONOTONIC_CLOCK
* HAVE_UINT128_T
* HAVE_LONG_LONG
* HAVE_PROCESS_H
* HAVE_GMP
* HAVE_GSL
* HAVE_DLADDR

Also, don't use prefix for checking functions, and only check msvc
functions on Windows.
2016-12-21 23:51:36 +05:30
Nirbheek Chauhan
ad592f86b6 meson: Add Autotools changes that weren't mirrored
commits:
a7d282d272
6fdb4df0f8
1aceebd67f
2016-11-28 19:28:27 +05:30
Thibault Saunier
a8d4857555 gst: Use libunwind/libdw to generate backtraces if avalaible
Making the gst_debug_print_trace function more generally useful.

API:
  + gst_debug_get_trace

https://bugzilla.gnome.org/show_bug.cgi?id=772555
2016-11-04 14:22:05 -03:00
Sebastian Dröge
28ff7fd272 gst: Also include the gstdynamictypefactory.c source file in the build 2016-11-02 10:12:58 +02:00
Sebastian Dröge
249fa68f47 gst: Install gstdynamictypefactory.h header file 2016-11-02 10:04:01 +02:00
Nirbheek Chauhan
f8e3637dc7 Revert "meson: Force gstenum_h to be built when using gst_dep"
This reverts commit cfc565e2d8.

The commit was redundant since gst_gen_sources already contains
gstenum_h. We're still investigating why some people are still seeing
a racy build failure.
2016-09-23 04:21:42 +05:30
Nirbheek Chauhan
cfc565e2d8 meson: Force gstenum_h to be built when using gst_dep
This forces gstenumtypes.h to be built whenever something uses gst_dep
as a subproject dependency. This is needed since gst/gst.h includes
gstenumtypes.h

Closes https://github.com/mesonbuild/meson/issues/714 which is not
actually a Meson bug.
2016-09-23 00:28:55 +05:30
Thibault Saunier
ed61bff072 meson: Allow others to build GIR files when using GStreamer as subproject
And add a way to disable the introspection and bump version to 1.9.2
2016-09-05 12:39:12 -03:00
Nirbheek Chauhan
b2f9808722 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Mathieu Duponchelle <mathieu.duponchelle@opencreed.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-19 21:26:14 +01:00