project('gobject-introspection', 'c') copyfile = find_program('copyfile.py') copyfile_gen = generator(copyfile, output: '@BASENAME@Gen.xml', arguments : ['@INPUT@', '@OUTPUT@']) glib = dependency('glib-2.0', required: false) if not glib.found() error('MESON_SKIP_TEST glib not found.') endif gir = dependency('gobject-introspection-1.0', required: false) if not gir.found() error('MESON_SKIP_TEST gobject-introspection not found.') endif python3 = import('python3') py3 = python3.find_python() if run_command(py3, '-c', 'import gi;', check: false).returncode() != 0 error('MESON_SKIP_TEST python3-gi not found') endif cc = meson.get_compiler('c') add_global_arguments('-DMESON_TEST_1', language : 'c') if cc.get_id() == 'intel' # Ignore invalid GCC pragma warnings from glib # https://bugzilla.gnome.org/show_bug.cgi?id=776562 add_global_arguments('-wd2282', language : 'c') endif py3 = import('python3').find_python() pycode = '''import os, sys if "MESON_UNIT_TEST_PRETEND_GLIB_OLD" in os.environ: sys.exit(0) sys.exit(1) ''' pretend_glib_old = false res = run_command(py3, '-c', pycode, check: false) if res.returncode() == 0 pretend_glib_old = true endif gnome = import('gnome') gio = dependency('gio-2.0') giounix = dependency('gio-unix-2.0') glib = dependency('glib-2.0') gobj = dependency('gobject-2.0') gir = dependency('gobject-introspection-1.0') gmod = dependency('gmodule-2.0') # GLib >= 2.76 removed slice allocator which causes a leak in g-i to now be # visible to asan. The leak should be fixed in g-i >= 1.76.2: # https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/411 if get_option('b_sanitize') != 'none' and \ gir.version().version_compare('<=1.76.1') and \ glib.version().version_compare('>=2.76') error('MESON_SKIP_TEST gobject-introspection >=1.76.2 is required with address sanitizer.') endif # Test that static deps don't error out when static libraries aren't found glib_static = dependency('glib-2.0', static : true) subdir('resources-data') subdir('resources') subdir('gir') subdir('schemas') subdir('gdbus') subdir('mkenums') subdir('genmarshal')