mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 15:36:14 +01:00
00d7568e4f
We're using the `install` argument for configure_file() all over the place. The support for an `install` argument for configure_file() was added in Meson 0.50, but we haven't bumped the minimum version of Meson we require, yet; which means we're getting compatibility warnings when using recent versions of Meson, and undefined behaviour when using older versions. The configure_file() object defaults to `install: false`, unless an install directory is used. This means that all instances of an `install` argument with an explicit `true` or `false` value can be removed, whereas all instances of `install` with a value determined from a configuration option must be turned into an explicit conditional.
173 lines
4.7 KiB
Meson
173 lines
4.7 KiB
Meson
gobject_install_headers = files(
|
||
'gobject-autocleanups.h',
|
||
'glib-types.h',
|
||
'gbinding.h',
|
||
'gboxed.h',
|
||
'gclosure.h',
|
||
'genums.h',
|
||
'gmarshal.h',
|
||
'gobject.h',
|
||
'gparam.h',
|
||
'gparamspecs.h',
|
||
'gsignal.h',
|
||
'gsourceclosure.h',
|
||
'gtype.h',
|
||
'gtypemodule.h',
|
||
'gtypeplugin.h',
|
||
'gvalue.h',
|
||
'gvaluearray.h',
|
||
'gvaluecollector.h',
|
||
'gvaluetypes.h',
|
||
'gobjectnotifyqueue.c', # sic
|
||
)
|
||
install_headers(gobject_install_headers, subdir : 'glib-2.0/gobject')
|
||
|
||
gobject_sources = files(
|
||
'gatomicarray.c',
|
||
'gbinding.c',
|
||
'gboxed.c',
|
||
'gclosure.c',
|
||
'genums.c',
|
||
'gmarshal.c',
|
||
'gobject.c',
|
||
'gparam.c',
|
||
'gparamspecs.c',
|
||
'gsignal.c',
|
||
'gsourceclosure.c',
|
||
'gtype.c',
|
||
'gtypemodule.c',
|
||
'gtypeplugin.c',
|
||
'gvalue.c',
|
||
'gvaluearray.c',
|
||
'gvaluetransform.c',
|
||
'gvaluetypes.c',
|
||
)
|
||
|
||
if host_system == 'windows'
|
||
gobject_win_rc = configure_file(
|
||
input: 'gobject.rc.in',
|
||
output: 'gobject.rc',
|
||
configuration: glibconfig_conf,
|
||
)
|
||
gobject_win_res = windows.compile_resources(gobject_win_rc)
|
||
gobject_sources += [gobject_win_res]
|
||
endif
|
||
|
||
if enable_dtrace
|
||
gobject_dtrace_obj = dtrace_obj_gen.process('gobject_probes.d')
|
||
gobject_dtrace_hdr = dtrace_hdr_gen.process('gobject_probes.d')
|
||
else
|
||
gobject_dtrace_obj = []
|
||
gobject_dtrace_hdr = []
|
||
endif
|
||
|
||
python_tools = [
|
||
'glib-genmarshal',
|
||
'glib-mkenums',
|
||
]
|
||
|
||
python_tools_conf = configuration_data()
|
||
python_tools_conf.set('VERSION', glib_version)
|
||
python_tools_conf.set('PYTHON', python_name)
|
||
|
||
foreach tool: python_tools
|
||
tool_bin = configure_file(
|
||
input : tool + '.in',
|
||
output : tool,
|
||
configuration : python_tools_conf,
|
||
install_dir : glib_bindir,
|
||
)
|
||
|
||
# Set variables for later use
|
||
set_variable(tool.underscorify(), tool_bin)
|
||
# Provide tools for others when we're a subproject and they use the Meson GNOME module
|
||
meson.override_find_program(tool, tool_bin)
|
||
endforeach
|
||
|
||
# Generate a header file containing the GObject enum types for the enums defined
|
||
# in libglib.
|
||
#
|
||
# For now, we only include gunicode.h here, since GScriptType is needed for
|
||
# Pango. More headers can be added as needed in future.
|
||
#
|
||
# We can't use gnome.mkenums() because the GNOME module looks for glib-mkenums
|
||
# in PATH, which means you can't bootstrap glib with its own glib-mkenums.
|
||
glib_enumtypes_input_headers = files(
|
||
'../glib/gunicode.h',
|
||
)
|
||
|
||
glib_enumtypes_h = custom_target('glib_enumtypes_h',
|
||
output : 'glib-enumtypes.h',
|
||
capture : true,
|
||
input : glib_enumtypes_input_headers,
|
||
install : true,
|
||
install_dir : join_paths(get_option('includedir'), 'glib-2.0/gobject'),
|
||
command : [python, glib_mkenums,
|
||
'--template', files('glib-enumtypes.h.template'),
|
||
'@INPUT@'])
|
||
|
||
glib_enumtypes_c = custom_target('glib_enumtypes_c',
|
||
output : 'glib-enumtypes.c',
|
||
capture : true,
|
||
input : glib_enumtypes_input_headers,
|
||
depends : [glib_enumtypes_h],
|
||
command : [python, glib_mkenums,
|
||
'--template', files('glib-enumtypes.c.template'),
|
||
'@INPUT@'])
|
||
|
||
glib_enumtypes_dep = declare_dependency(sources : [glib_enumtypes_h])
|
||
|
||
libgobject = library('gobject-2.0',
|
||
gobject_dtrace_obj, gobject_dtrace_hdr, glib_enumtypes_h, glib_enumtypes_c,
|
||
sources : gobject_sources,
|
||
version : library_version,
|
||
soversion : soversion,
|
||
darwin_versions : darwin_versions,
|
||
install : true,
|
||
include_directories : [configinc],
|
||
dependencies : [libffi_dep, libglib_dep],
|
||
c_args : ['-DG_LOG_DOMAIN="GLib-GObject"', '-DGOBJECT_COMPILATION'] + glib_hidden_visibility_args,
|
||
link_args : glib_link_flags,
|
||
)
|
||
|
||
pkg.generate(libgobject,
|
||
requires : ['glib-2.0'],
|
||
version : glib_version,
|
||
install_dir : glib_pkgconfigreldir,
|
||
filebase : 'gobject-2.0',
|
||
name : 'GObject',
|
||
description : 'GLib Type, Object, Parameter and Signal Library',
|
||
)
|
||
|
||
libgobject_dep = declare_dependency(link_with : libgobject,
|
||
include_directories : [gobjectinc],
|
||
dependencies : [libglib_dep, glib_enumtypes_dep])
|
||
|
||
executable('gobject-query', 'gobject-query.c',
|
||
install : true,
|
||
dependencies : [libglib_dep, libgobject_dep])
|
||
|
||
install_data('gobject_gdb.py', install_dir : join_paths(glib_pkgdatadir, 'gdb'))
|
||
gdb_conf = configuration_data()
|
||
gdb_conf.set('datadir', glib_datadir)
|
||
configure_file(
|
||
input: 'libgobject-gdb.py.in',
|
||
output: 'libgobject-2.0.so.@0@-gdb.py'.format(library_version),
|
||
configuration: gdb_conf,
|
||
install_dir: gdb_install_dir,
|
||
)
|
||
|
||
if enable_systemtap
|
||
gobject_stp = configure_file(input : 'gobject.stp.in',
|
||
output : '@0@.stp'.format(libgobject.full_path().split('/').get(-1)),
|
||
configuration : stp_cdata,
|
||
install_dir : tapset_install_dir,
|
||
)
|
||
endif
|
||
|
||
# Don’t build the tests unless we can run them (either natively or in an exe wrapper)
|
||
build_tests = not meson.is_cross_build() or (meson.is_cross_build() and meson.has_exe_wrapper())
|
||
if build_tests
|
||
subdir('tests')
|
||
endif
|