Commit graph

32 commits

Author SHA1 Message Date
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
77d2774f1b build: Remove unused functions
fgetpos, fsetpos, mmap, posix_memalign. None of these are used anywhere
in the codebase.
2016-12-21 23:51:36 +05:30
Nirbheek Chauhan
97f39cae63 meson: Derive defines from header/function names
This is what Autoconf already does for us, so just do this. Avoids
people making typos while adding header or function checks. Because we
use a config.h.meson, such typos won't even be noticed.

Also, starting from Meson 0.36.0, the XCode 8 workaround that we use for
clock_gettime is no longer needed.
2016-12-21 23:51:36 +05:30
Nirbheek Chauhan
4d179024f0 meson: Don't search for python3 twice 2016-12-17 00:00:11 +05:30
Thibault Saunier
bd5d43e8f9 meson: Support building with Gst debug disabled 2016-12-09 17:57:10 -03:00
Nirbheek Chauhan
d8e8e92176 libcheck: Update the compatibility code and checks
This brings us up-to-speed with the latest compatibility code from upstream
check git. For completeness, we do all the checks that upstream check does, but
we skip the snprintf/vsnprintf code because it's not straightforward (involves
running code and that is bad for cross-compilation) and not necessary for the
platforms we support anyway.

If someone really wants this, they can uncomment this and copy the relevant
checks from the check git repository.

https://bugzilla.gnome.org/show_bug.cgi?id=775870
2016-12-09 15:31:01 +05:30
Thibault Saunier
469d53edf5 meson: Set default debug level to ERROR when running from git 2016-11-29 10:34:20 -03:00
Ting-Wei Lan
ec2e213c50 meson: Support execinfo.h on FreeBSD by using -lexecinfo
FreeBSD supports execinfo.h and backtrace* functions, but
using them requires linking with -lexecinfo.

Requires sufficiently-new meson with #1053 fixed (post-0.36).

https://bugzilla.gnome.org/show_bug.cgi?id=774424
2016-11-25 19:28:04 +00:00
Scott D Phillips
7b29403e06 meson: add_global_arguments -> add_project_arguments
https://bugzilla.gnome.org/show_bug.cgi?id=774656
2016-11-18 09:30:12 +00:00
Thibault Saunier
ae608845ca meson: require meson 0.36 and use new pic arg on static libs
Removes a meson warning and some special casing we had.
2016-11-14 19:21:13 +00:00
Scott D Phillips
03286b7b7e 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:14:55 +00:00
Thibault Saunier
c67958aed9 meson: Unset the plugin paths to generate the .gir files
Avoiding problems when using subproject:

    Failed to load plugin 'something.so: file too short
2016-11-04 14:37:43 -03:00
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
Tim-Philipp Müller
c570df71e5 meson: update version 2016-11-01 18:08:18 +00:00
Nirbheek Chauhan
9154132135 meson: Add an option to explicitly disable gtk-doc
Similar to how Autotools provides an option, default is 'enabled'.
2016-10-25 12:21:07 +05:30
Thibault Saunier
c0bfb1b524 Revert "meson: Use the new pic argument on static libs"
This reverts commit a5752240a1.

pic was added after 0.35 and will be present in 0.36 (meson
documentation was wrong).
2016-10-20 17:19:25 -03:00
Thibault Saunier
a5752240a1 meson: Use the new pic argument on static libs
We depend on meson 0.35 which makes it simpler to handle

Removes a meson warning
2016-10-20 16:04:42 -03:00
Nirbheek Chauhan
c57cb35ae6 build: Apply XCode 8 workaround for iOS too
clock_gettime was also added for iOS 10.0, so don't use it if we're
targetting an older version. That would've caused the symbol to not be
found at runtime on older devices.
2016-10-18 11:24:57 +05:30
Nirbheek Chauhan
df5ac34dec meson: Don't use c_std=c99
Just use the default c_std used by the compiler. With GCC on Linux this
is gnu89.

Tons of errors related to time.h, signal.h, etc when using c99:

FAILED: libs/gst/check/libcheck/check@sta/check_run.c.o
cc  '-Ilibs/gst/check/libcheck/check@sta' '-fdiagnostics-color=always' '-I../libs/gst/check/libcheck' '-Ilibs/gst/check/libcheck' '-I.' '-I../.' '-Ilibs/gst/check/libcheck/..' '-I../libs/gst/check/libcheck/..' '-pipe' '-Wall' '-Winvalid-pch' '-std=c99' '-DHAVE_CONFIG_H' '-fPIC' '-O2' '-g' '-fPIC' '-MMD' '-MQ' 'libs/gst/check/libcheck/check@sta/check_run.c.o' '-MF' 'libs/gst/check/libcheck/check@sta/check_run.c.o.d' -o 'libs/gst/check/libcheck/check@sta/check_run.c.o' -c ../libs/gst/check/libcheck/check_run.c
In file included from ../libs/gst/check/libcheck/check_run.c:21:0:
../libs/gst/check/libcheck/libcompat.h:167:18: warning: ‘struct itimerspec’ declared inside parameter list will not be visible outside of this definition or declaration
     const struct itimerspec *new_value, struct itimerspec *old_value);
                  ^~~~~~~~~~
../libs/gst/check/libcheck/check_run.c:98:25: error: array type has incomplete element type ‘struct sigaction’
 static struct sigaction old_action[3];
                         ^~~~~~~~~~
../libs/gst/check/libcheck/check_run.c:99:25: error: array type has incomplete element type ‘struct sigaction’
 static struct sigaction new_action[3];
                         ^~~~~~~~~~

[...]

ninja: build stopped: subcommand failed.

The change was originally made because gnu99 was causing issues on OS X.
2016-10-15 22:02:15 +05:30
Thibault Saunier
2be7e4758b meson: Make use of new environment object and set plugin path to builddir
- Properly set where to find gst-plugin-scanner
- Use GST_LOADING_WHITELIST so that only core plugins are used

Bump meson requirement to 0.35
2016-10-14 17:30:00 +02:00
Nirbheek Chauhan
6c1bc80d27 build: Fix clock_gettime check with XCode 8
With XCode 8, clock_gettime will be incorrectly detected as being
available regardless of what OS X version we're targetting because the
symbol is available in the .tbd library as a weak symbol.
See: https://github.com/Homebrew/homebrew-core/issues/3727#issue-170086273

It's only starting from macOS 10.12 that clock_gettime is actually
available, so we can unconditionally disable it when targetting older
versions. We cannot simply do AC_CHECK_FUNCS with -Wl,-no_weak_imports
because the autoconf check does its own prototype declaration that
doesn't trigger that compiler flag.

https://bugzilla.gnome.org/show_bug.cgi?id=772451
2016-10-13 03:40:04 +05:30
Thibault Saunier
ba3cde30bf meson: Setup pre-commit hooks when configuring 2016-09-30 11:34:06 -03:00
Tim-Philipp Müller
b1d1d36b2a meson: update version 2016-09-30 11:40:52 +01:00
Tim-Philipp Müller
9791669ac3 meson: tracers: signal availability of libunwind and backtrace() to code
Not setting cdata here on purpose because of .. complications.
2016-09-27 18:24:02 +01:00
Thibault Saunier
c4aed66eff meson: Build tracers 2016-09-26 18:27:00 -03:00
Tim-Philipp Müller
e04d2f230d meson: remove incorrect and unneeded check for ptrdiff_t
Need to include stddef.h for it, so this would've worked:
if cc.has_type('ptrdiff_t', prefix: '#include <stddef.h>')
2016-09-24 18:22:26 +01:00
Nirbheek Chauhan
b6e69ffdfb gstconfig: Use __declspec when built with MinGW and linking with MSVC
Earlier we were only using __declspec(dllexport/import) when we were
built with MSVC because when built with MinGW and linking with MinGW we
don't need it (and we get linker errors because of it).

However, when we're built with MinGW and someone wants to link to us
with MSVC, we still need the prototypes to have __declspec(dllimport)
since MSVC cannot do auto-import like GCC can.

https://bugzilla.gnome.org/show_bug.cgi?id=771029
2016-09-13 13:46:19 +05:30
Thibault Saunier
7315a07bc8 meson: Fix building with meson 0.34 2016-09-05 18:07:49 -03:00
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
22b892b44f gstconfig: Decide GST_EXPORT declaration style at build time
We only use GST_EXPORT consistently when building with MSVC by using the
visual studio definitions files (win32/common/*.def), so always disable
it when building with Autotools and only enable it with Meson when
building with MSVC.

This allows you to use MinGW to link to a GStreamer built with MSVC and
get the correct function prototypes to find functions and variables in
DLLs.
2016-08-26 15:20:50 +01:00
Thibault Saunier
d18fff7ff5 meson: doc: Fix building documentation when using subprojects
and check the presence of gtk-doc before building the documentation
2016-08-25 15:10:33 -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