gnome: Guard all cflags passed to g-ir-scanner

While g-ir-scanner's compatible -I and -D flags cover what most dependencies
use, there's no guarantee that a dependency's cflags don't include more
exotic flags that conflict with the tool's own options.

For a real world example, mozjs-38 has '-include some-header-file.h', which
translates to '--include nclude another-file-to-scan.h' for the scanner;
unless for some reason there's an 'nclude' GIR available on the system,
the target will thus fail.

For this purpose, g-ir-scanner allows explicitly marking some flags as
preprocessor/compiler flags by guarding them with --cflags-begin and
--cflags-end. Make sure it is used this for all cflags, not only for
global and project flags.
pull/1919/head
Florian Müllner 8 years ago
parent 4b8dc3b746
commit a3dda095bc
  1. 13
      mesonbuild/modules/gnome.py

@ -459,10 +459,6 @@ class GnomeModule(ExtensionModule):
sanitize = compiler.get_options().get('b_sanitize')
if sanitize:
cflags += compilers.sanitizer_compile_args(sanitize)
if cflags:
scan_command += ['--cflags-begin']
scan_command += cflags
scan_command += ['--cflags-end']
if kwargs.get('symbol_prefix'):
sym_prefix = kwargs.pop('symbol_prefix')
if not isinstance(sym_prefix, str):
@ -525,9 +521,12 @@ class GnomeModule(ExtensionModule):
# ldflags will be misinterpreted by gir scanner (showing
# spurious dependencies) but building GStreamer fails if they
# are not used here.
cflags, ldflags, gi_includes = self._get_dependencies_flags(deps, state, depends,
use_gir_args=True)
scan_command += list(cflags)
dep_cflags, ldflags, gi_includes = self._get_dependencies_flags(deps, state, depends,
use_gir_args=True)
cflags += list(dep_cflags)
scan_command += ['--cflags-begin']
scan_command += cflags
scan_command += ['--cflags-end']
# need to put our output directory first as we need to use the
# generated libraries instead of any possibly installed system/prefix
# ones.

Loading…
Cancel
Save