glib/meson_options.txt

155 lines
4.3 KiB
Meson
Raw Normal View History

option('runtime_libdir',
type : 'string',
value : '',
description : 'install runtime libraries relative to libdir',
deprecated: true)
option('charsetalias_dir',
type : 'string',
value : '',
description : 'directory for charset.alias dir (default to \'libdir\' if unset)')
option('gio_module_dir',
type : 'string',
value : '',
description : 'load gio modules from this directory (default to \'libdir/gio/modules\' if unset)')
# FIXME: Deliberately not named runstatedir to avoid colliding with
# https://github.com/mesonbuild/meson/issues/4141; port to that when Meson
# supports it
option('runtime_dir',
type: 'string',
value: '',
description: 'Directory for transient runtime state [default: /run]')
option('selinux',
type : 'feature',
value : 'auto',
description : 'build with selinux support')
option('xattr',
type : 'boolean',
value : true,
description : 'build with xattr support')
option('libmount',
type : 'feature',
value : 'auto',
description : 'build with libmount support')
Add a gnutls backend for GHmac For RHEL we want apps to use FIPS-certified crypto libraries, and HMAC apparently counts as "keyed" and hence needs to be validated. Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1630260 Replaces: https://gitlab.gnome.org/GNOME/glib/merge_requests/897 This is a build-time option that backs the GHmac API with GnuTLS. Most distributors ship glib-networking built with GnuTLS, and most apps use glib-networking, so this isn't a net-new library in most cases. ======================================================================= mcatanzaro note: I've updated Colin's original patch with several enhancements: Implement g_hmac_copy() using gnutls_hmac_copy(), which didn't exist when Colin developed this patch. Removed use of GSlice Better error checking in g_hmac_new(). It is possible for gnutls_hmac_init() to fail if running in FIPS mode and an MD5 digest is requested. In this case, we should return NULL rather than returning a broken GHmac with a NULL gnutls_hmac_hd_t. This was leading to a later null pointer dereference inside gnutls_hmac_update(). Applications are responsible for checking to ensure the return value of g_hmac_new() is not NULL since it is annotated as nullable. Added documentation to indicate this possibility. Properly handle length -1 in g_hmac_update(). This means we've been given a NUL-terminated string and should use strlen(). GnuTLS doesn't accept -1, so let's call strlen() ourselves. Crash the application with g_error() if gnutls_hmac() fails for any reason. This is necessary because g_hmac_update() is not fallible, so we have no way to indicate error. Crashing seems better than returning the wrong result later when g_hmac_get_string() or g_hmac_get_digest() is later called. (Those functions are also not fallible.) Fortunately, I don't think this error should actually be hit in practice. https://gitlab.gnome.org/GNOME/glib/-/merge_requests/903
2019-06-07 19:36:54 +00:00
option('gnutls',
type : 'boolean',
value : false,
description : 'build with gnutls support')
option('man',
type : 'boolean',
value : false,
description : 'generate man pages (requires xsltproc)',
deprecated : 'man-pages')
option('man-pages',
type : 'feature',
value : 'auto',
description : 'generate man pages (requires rst2man)',
deprecated : { 'true': 'enabled', 'false': 'disabled' })
option('dtrace',
type : 'boolean',
value : false,
description : 'include tracing support for dtrace')
option('systemtap',
type : 'boolean',
value : false,
description : 'include tracing support for systemtap')
option('tapset_install_dir',
type : 'string',
value : '',
description : 'path where systemtap tapsets are installed')
option('sysprof',
type : 'feature',
value : 'disabled',
description : 'include tracing support for sysprof')
option('documentation',
type : 'boolean',
value : false,
description : 'Build API reference and tools documentation')
option('gtk_doc',
type : 'boolean',
value : false,
description : 'use gtk-doc to build documentation',
deprecated : 'documentation')
option('bsymbolic_functions',
type : 'boolean',
value : true,
description : 'link with -Bsymbolic-functions if supported')
option('force_posix_threads',
type : 'boolean',
value : false,
description : 'Also use posix threads in case the platform defaults to another implementation (on Windows for example)')
2019-04-27 17:04:26 +02:00
option('tests',
type : 'boolean',
value : true,
description : 'build tests')
option('installed_tests',
type : 'boolean',
value : false,
description : 'enable installed tests')
option('nls',
type : 'feature',
value : 'auto',
yield: true,
description : 'Enable native language support (translations)')
2019-03-13 11:47:36 +00:00
option('oss_fuzz',
type : 'feature',
value : 'disabled',
description : 'Indicate oss-fuzz build environment')
option('glib_debug',
type : 'feature',
value : 'auto',
yield : true,
description : 'Enable GLib debug infrastructure (see docs/macros.txt)')
option('glib_assert',
type : 'boolean',
value : true,
yield : true,
description : 'Enable GLib assertion (see docs/macros.txt)')
option('glib_checks',
type : 'boolean',
value : true,
yield : true,
description : 'Enable GLib checks such as API guards (see docs/macros.txt)')
option('libelf',
type : 'feature',
value : 'auto',
description : 'Enable support for listing and extracting from ELF resource files with gresource tool')
gio: Optionally install trigger executables to architecture-specific paths In Debian-style multiarch (libdir = lib/x86_64-linux-gnu or similar), Red-Hat-style multilib (libdir = lib64 or lib) and Arch-style multilib (libdir = lib or lib32), we have to run a separate version of gio-querymodules to discover 32- or 64-bit modules on x86. Installing modules in the directory used for each word size needs to trigger recompilation of the correct modules list. Debian, Fedora and Arch currently all have patches to facilitate this: Debian moves gio-querymodules into ${libdir}/glib-2.0 and provides a compat symlink in ${bindir}, while Fedora and Arch rename one or both of the gio-querymodules executables to give it a -32 or -64 suffix. We can avoid the need for these patches by making this a build option. Doing this upstream has the advantage that the pkg-config metadata for each architecture points to the correct executable and is in sync with reality. I'm using Debian's installation scheme with a separate directory here, because the word-size suffix used in Fedora and Arch only works for the common case of 32- and 64-bit multilib, and does not cover scenarios where there can be more than one ABI with the same word size, such as multiarch cross-compilation or alternative ABIs like x32. Now that we have this infrastructure, it's also convenient to use it for glib-compile-schemas. This works with /usr/share, so it only needs to be run for one architecture (typically the system's primary architecture), but using /usr/bin/glib-compile-schemas for the trigger would result in either primary and secondary architectures trying to overwrite each other's /usr/bin/glib-compile-schemas binaries, or a circular dependency (the GLib library would have to depend on a common package that contains glib-compile-schemas, but glib-compile-schemas depends on the GLib library). Installing a glib-compile-schemas binary in an architecture-specific location alongside each GLib library bypasses this problem. Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-07-14 14:24:33 +01:00
option('multiarch',
type : 'boolean',
value : false,
description : 'Install some helper executables in per-architecture locations')
option('gir_dir_prefix',
type: 'string',
description: 'Intermediate prefix for gir installation under ${prefix}')
option('introspection',
type: 'feature',
value: 'auto',
description: 'Enable generating introspection data (requires gobject-introspection)')