Commit Graph

594 Commits

Author SHA1 Message Date
Chun-wei Fan
ea6ac5f71e meson/Windows: Check whether system PCRE is a static build
Instead of hardcoding -DPCRE_STATIC into the CFLAGS of GLib, do the
following on Windows only (since PCRE_STATIC only matters on Windows):

-If there is no installed PCRE, use the included PCRE copy and
 enable -DPCRE_STATIC, as we did before.
-If there is a installed PCRE, check whether the PCRE build is a static
 or DLL build by checking the linkage against pcre_free() with
 PCRE_STATIC defined works.  If it does, enable -DPCRE_STATIC.
-On non-Windows builds, do not enable -DPCRE_STATIC

https://bugzilla.gnome.org/show_bug.cgi?id=783270
2017-08-17 18:26:02 +08:00
Chun-wei Fan
72528938b7 Meson: Check for HAVE_GOOD_PRINTF
The HAVE_GOOD_PRINTF config variable determines whether we are able to
use the CRT-supplied *printf() functions directly, by determining whether
the CRT-supplied vsnprintf() and snprintf() functions support C99 well
enough.

This means, we need to build the gnulib subdir as a static lib in GLib, and use
the gnulib *printf() functions when:

-We are on Windows
-The CRT's vsnprintf() and snprintf() is not sufficiently C99-compliant.

This will fix the problem when the *printf() functions cause a CRT
abort() call on pre-2015 Visual Studio builds at least, and ensures that
the Visual Studio 2015+ builds will pass the printf tests in GLib, since
the *printf() in Visual Studio 2015/2017's CRT does not support the %n
format specifier, nor the positional parameters (which requires
different _*printf_p*() functions), as indicated by
glib/tests/test-printf.c.

https://bugzilla.gnome.org/show_bug.cgi?id=783270
2017-08-17 17:46:37 +08:00
Chun-wei Fan
79b84ba3fc meson: Install msvc_recommended_pragmas.h on Windows
Copy the msvc_recommended_pragmas.h helper header when we build for
Windows, so that people developing/using GLib on Windows can make use
of them in Visual Studio, so that unwanted compiler noise can be
filtered out and code with potentially-problematic warnings can be
attended to.

https://bugzilla.gnome.org/show_bug.cgi?id=783270
2017-08-17 17:19:43 +08:00
Chun-wei Fan
32d6a76b98 build: Use Meson's find_library() for MSVC builds as needed
Some of the dependencies' build systems for Visual Studio do not provide a
pkg-config file upon build, so we use find_library() for them when the
corresponding pkg-config files are not found during Visual Studio builds,
so that one will not need to make up pkg-config files for them, which
could be error-prone.  These .lib names match the names that are built
with the officially supported build system that is used by their
respective Visual Studio support.

For ZLib, this will make gio-2.0.pc reflect on the zlib .lib based on
what is found, or whether we use the fallback/bundled ZLib, when we
don't have a pkg-config file for ZLib on MSVC.  We still need to depend
on Meson to be updated to put the correct link argument for linking ZLib
in the pkg-config case.

https://bugzilla.gnome.org/show_bug.cgi?id=783270
2017-08-17 17:17:59 +08:00
Nirbheek Chauhan
4c46869081 meson: Always define _GNU_SOURCE for pthread checks
Without this, GNU-specific symbols won't be defined and the compiler
check will pass because GCC will assume that you know what you're
doing since it doesn't know what the symbol prototype is and compiler
checks aren't built with -Wall -Werror.

This will then cause a build failure because the wrong prototype will
be used.
2017-08-14 21:49:22 +05:30
Emmanuele Bassi
50eeb24415 meson: Update the pthread feature checks
For GNU extensions, we need to define _GNU_SOURCE; but, more
importantly, we need to tell Meson to use the threadlib dependency when
compiling and linking the feature check.

This currently exposes a bug in Meson; see:

https://github.com/mesonbuild/meson/issues/2165

But once that's fixed, the check will work as intended.

https://bugzilla.gnome.org/show_bug.cgi?id=785955
2017-08-10 14:36:11 +01:00
Emmanuele Bassi
1a755a63e1 meson: Define _GNU_SOURCE as a project argument
We use it pretty much everywhere in order to get feature detection, and
that's also what the AC_USE_SYSTEM_EXTENSIONS m4 macro defines in the
Autotools build.

https://bugzilla.gnome.org/show_bug.cgi?id=785955
2017-08-10 14:36:11 +01:00
Matthias Clasen
47e10489c5 2.53.5 2017-08-07 12:35:17 -04:00
Emmanuele Bassi
bfd307855b meson: Allow toggling internal/system PCRE dependency
We don't always want to build GLib with a dependency on the system's
PCRE. The Autotools build allows this, and so should the Meson build.
2017-07-21 14:04:49 +01:00
Christoph Reiter
be7c3ae611 meson: set glib_extension in glibconfig.h to match the autotools output
https://bugzilla.gnome.org/show_bug.cgi?id=784995
2017-07-19 16:39:44 +02:00
Christoph Reiter
cb0c224e94 meson: use set_quoted() instead of quoting manually
https://bugzilla.gnome.org/show_bug.cgi?id=784995
2017-07-19 16:39:14 +02:00
Christoph Reiter
ab6e425574 meson: define G_PID_FORMAT
https://bugzilla.gnome.org/show_bug.cgi?id=784995
2017-07-19 16:38:37 +02:00
Tim-Philipp Müller
2ac8079b94 meson: fix unit tests and "Invalid byte sequence in conversion input"
Check if strerror_r returns a char * and define STRERROR_R_CHAR_P
if so, which is needed by g_strerror() since c8e268b

https://bugzilla.gnome.org/show_bug.cgi?id=784000
2017-07-19 10:34:45 +01:00
Emmanuele Bassi
3c03cc8f68 meson: Simplify the use of built tools
The Meson build has fallen a bit behind the Autotools one, when it comes
to the internally built tools like glib-mkenums and glib-genmarshals.

We don't need to generate gmarshal.strings any more, and since the
glib-genmarshal tool is now written in Python it can also be used when
cross-compiling, and without indirection, just like we use glib-mkenums.

We can also coalesce various rules into a simple array iteration, with
minimal changes to glib-mkenums, thus making the build a bit more
resilient and without unnecessary duplication.
2017-07-17 11:05:07 +01:00
Chun-wei Fan
5ba3b4022e meson.build: Improve checks for va_copy() and __va_copy()
On Visual Studio, the compilation of the check program for va_copy() and
__va_copy() succeeds even though they may not be really available.  So,
make sure we include msvc_recommended_pragmas.h which helps us to detect
this situation by bailing out when warning C4013 (which means this
function is really not available) is encountered.

Also make sure that on Visual Studio builds we always include
msvc_recommended_pragmas.h is included so that it helps us to find out
problems in the build, and update comments for dirent.h and sys/time.h
as they are not shipped with any Visual Studio.

https://bugzilla.gnome.org/show_bug.cgi?id=783270
2017-07-17 14:50:55 +08:00
Emmanuele Bassi
1eda0627f3 meson: Use the appropriate libdir-relative paths 2017-07-14 14:21:57 +01:00
Emmanuele Bassi
065a8a488a meson: Use the appropriate interface and binary ages
We need to build them out of the project version, and then propagate
them.
2017-07-14 14:21:57 +01:00
Emmanuele Bassi
37ff4189fd meson: Sync the version with Autotools 2017-07-14 14:21:57 +01:00
Tim-Philipp Müller
4268372fae meson: error out if atomic ops would be available with -march=i486
Same as autotools build.
2017-07-13 19:03:39 -04:00
Thibault Saunier
0689231bd6 meson: Fix the build defining HAVE_RTLD_X
Otherwise RTLD_XXX get redefined.

https://bugzilla.gnome.org/show_bug.cgi?id=784133
2017-07-13 19:03:39 -04:00
Thibault Saunier
1d30c9eebc meson: Defining MAJOR_IN_ as done by AC_HEADER_MAJOR
https://bugzilla.gnome.org/show_bug.cgi?id=784133
2017-07-13 19:03:39 -04:00
Tim-Philipp Müller
03eac5fac5 meson: rebase on top of master ~2.53.1
From 2.51.2
2017-07-13 19:03:39 -04:00
Tim-Philipp Müller
2e9fd74b25 meson: add tests/gobject and tests/refcount 2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
dd8ff54736 meson: Use Python port of glib-mkenums
This reduces the build-time dependencies of glib to only Python 3,
Meson, and git. Git is also optional if you provide a tarball in
which the subproject directories already exist.

The Python port was done by Jussi Pakkanen on bugzilla:
https://bugzilla.gnome.org/show_bug.cgi?id=779332

This version contains some fixes from that and also changes all
instances of `@` to `\u0040` because Meson does not yet provide a
configure_file() mode that ignores unknown @MACRO@ values.
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
ee94ad776e meson: Use proxy-libintl if gettext is not found
This is a stub-only library that can be used while building against
MSVC and contains no i18n machinery at all.

The dependencies added indirectly use the libintl.h header, and when
built as a subproject, the header won't be in a path known the
pre-processor.
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
fb1f52e32f meson: Only require libmount on Linux
It's not available on other platforms, so don't require the user to
explicitly disable it there.
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
eb07a2c87d meson: Allow using libffi and zlib as subprojects
Also use the python3 module to find python3, and require Meson 0.37.1
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
2f792f6484 meson: Print output for more compiler checks
When no 'name:' kwarg is specified for cc.run, no output is printed.

This makes it difficult to figure out what is causing a pause in the
configure process.
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
88e437873a meson: Detect with-docs and with-man automatically
By default, only build man pages and gtk-doc if the build-deps were
found. To force-enable, pass -Dwith-docs=yes and -Dwith-man=yes.

Also use a foreach loop for man pages instead of listing them all
manually
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
5549a1d0c3 meson: Rebase and update to 2.51.2 2017-07-13 19:03:39 -04:00
Tim-Philipp Müller
2f29ee1735 meson: add -fvisibility=hidden explicitly to selected targets
Don't use it project-wide for building everything. Otherwise
symbols for shared modules won't be exposed, e.g. in the
resourceplugin used by the gio resource unit test.
2017-07-13 19:03:39 -04:00
Tim-Philipp Müller
1224ff0c39 meson: use add_project_arguments() instead of add_global_arguments()
add_global_arguments() doesn't work if the project is used as a
subproject.
2017-07-13 19:03:39 -04:00
Tim-Philipp Müller
d29f022b0b meson: add support for dtrace/systemtap
Still at least one FIXME. And untested so far. It builds.
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
5afc6600e8 meson: Add missing termios.h check
Same change as d1d1aba3b4

https://bugzilla.gnome.org/show_bug.cgi?id=775517
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
9096bde3ce build: Remove function checks for unused functions
These were removed several years ago.
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
70021b0e83 meson: Derive defines from header, struct, function names
This is what Autoconf macros do too, so no need to hard-code the names.
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
e2da3cb599 meson: Port to latest master (2.51.0)
Also remove headers from some gio sources. Headers do not need to be
added to the list of sources.

+ various smaller self-explanatory fixes.
2017-07-13 19:03:39 -04:00
Patrick Griffis
d10be6102f meson: Minor modernizations 2017-07-13 19:03:39 -04:00
Patrick Griffis
0df9aab053 meson: Build all docs 2017-07-13 19:03:39 -04:00
Patrick Griffis
c61a72f4bc meson: Match soname version of autotools 2017-07-13 19:03:39 -04:00
Patrick Griffis
a690e2a375 meson: More build fixes
- Fix installing various data files
- Build translations
2017-07-13 19:03:39 -04:00
Nirbheek Chauhan
fe2a9887a8 meson: Improve MSVC and MinGW support and fix dependencies everywhere
Disable gio tests on Windows, fix .gitignore to not ignore
config.h.meson, and add more things to it.

Rename the library file naming and versioning to match what Autotools
outputs, e.g., libglib-2.0.so.0.5000.2 on Linux, libglib-2.0-0.dll  and
glib-2.0-0.dll on Windows with MSVC.

Several more tiny fixes, more executables built and installed, install
pkg-config and m4 files, fix building of gobject tests.

Changes to gdbus-codegen to support out-of-tree builds without
environment variables set (which you can't in Meson). We now add the
build directory to the Python module search path.
2017-07-13 19:03:39 -04:00
Tim-Philipp Müller
213957970e meson: Fix glib, add gobject, gio, gthread, gmodule, etc
Several small fixes to the build files.

Lots of tests have also been added, and glib tests pass now.
2017-07-13 19:03:39 -04:00
Jussi Pakkanen
98e641424b meson: initial glib build
https://mail.gnome.org/archives/gtk-devel-list/2013-August/msg00001.html
2017-07-13 19:03:39 -04:00