diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2020-12-04 17:01:45 -0800 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-01-04 12:20:58 -0800 |
commit | e81acbd6069e8c1ae8e3be7bb83ddc239009d42d (patch) | |
tree | b08545b2844650ed95e42ade00ecb1cd3fb85b88 /mesonbuild/modules | |
parent | 71db6b04a31707674ad776be1cf22f667056d56b (diff) | |
download | meson-e81acbd6069e8c1ae8e3be7bb83ddc239009d42d.zip meson-e81acbd6069e8c1ae8e3be7bb83ddc239009d42d.tar.gz meson-e81acbd6069e8c1ae8e3be7bb83ddc239009d42d.tar.bz2 |
Use a single coredata dictionary for options
This patches takes the options work to it's logical conclusion: A single
flat dictionary of OptionKey: UserOptions. This allows us to simplify a
large number of cases, as we don't need to check if an option is in this
dict or that one (or any of 5 or 6, actually).
Diffstat (limited to 'mesonbuild/modules')
-rw-r--r-- | mesonbuild/modules/cmake.py | 6 | ||||
-rw-r--r-- | mesonbuild/modules/gnome.py | 12 | ||||
-rw-r--r-- | mesonbuild/modules/hotdoc.py | 2 | ||||
-rw-r--r-- | mesonbuild/modules/i18n.py | 2 | ||||
-rw-r--r-- | mesonbuild/modules/pkgconfig.py | 10 | ||||
-rw-r--r-- | mesonbuild/modules/python.py | 2 | ||||
-rw-r--r-- | mesonbuild/modules/unstable_external_project.py | 7 |
7 files changed, 21 insertions, 20 deletions
diff --git a/mesonbuild/modules/cmake.py b/mesonbuild/modules/cmake.py index 35c85a7..f6afaf3 100644 --- a/mesonbuild/modules/cmake.py +++ b/mesonbuild/modules/cmake.py @@ -269,7 +269,7 @@ class CmakeModule(ExtensionModule): pkgroot = kwargs.get('install_dir', None) if pkgroot is None: - pkgroot = os.path.join(state.environment.coredata.get_builtin_option('libdir'), 'cmake', name) + pkgroot = os.path.join(state.environment.coredata.get_option(mesonlib.OptionKey('libdir')), 'cmake', name) if not isinstance(pkgroot, str): raise mesonlib.MesonException('Install_dir must be a string.') @@ -342,7 +342,7 @@ class CmakeModule(ExtensionModule): (ofile_path, ofile_fname) = os.path.split(os.path.join(state.subdir, '{}Config.cmake'.format(name))) ofile_abs = os.path.join(state.environment.build_dir, ofile_path, ofile_fname) - install_dir = kwargs.get('install_dir', os.path.join(state.environment.coredata.get_builtin_option('libdir'), 'cmake', name)) + install_dir = kwargs.get('install_dir', os.path.join(state.environment.coredata.get_option(mesonlib.OptionKey('libdir')), 'cmake', name)) if not isinstance(install_dir, str): raise mesonlib.MesonException('"install_dir" must be a string.') @@ -352,7 +352,7 @@ class CmakeModule(ExtensionModule): if not isinstance(conf, ConfigurationDataHolder): raise mesonlib.MesonException('Argument "configuration" is not of type configuration_data') - prefix = state.environment.coredata.get_builtin_option('prefix') + prefix = state.environment.coredata.get_option(mesonlib.OptionKey('prefix')) abs_install_dir = install_dir if not os.path.isabs(abs_install_dir): abs_install_dir = os.path.join(prefix, install_dir) diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index 565fd82..21570bd 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -212,7 +212,7 @@ class GnomeModule(ExtensionModule): if install_header: h_kwargs['install'] = install_header h_kwargs['install_dir'] = kwargs.get('install_dir', - state.environment.coredata.get_builtin_option('includedir')) + state.environment.coredata.get_option(mesonlib.OptionKey('includedir'))) target_h = GResourceHeaderTarget(args[0] + '_h', state.subdir, state.subproject, h_kwargs) rv = [target_c, target_h] return ModuleReturnValue(rv, rv) @@ -613,7 +613,7 @@ class GnomeModule(ExtensionModule): if state.project_args.get(lang): cflags += state.project_args[lang] if mesonlib.OptionKey('b_sanitize') in compiler.base_options: - sanitize = state.environment.coredata.base_options[mesonlib.OptionKey('b_sanitize')].value + sanitize = state.environment.coredata.options[mesonlib.OptionKey('b_sanitize')].value cflags += compiler.sanitizer_compile_args(sanitize) sanitize = sanitize.split(',') # These must be first in ldflags @@ -1175,7 +1175,7 @@ class GnomeModule(ExtensionModule): targets = [] install_header = kwargs.get('install_header', False) - install_dir = kwargs.get('install_dir', state.environment.coredata.get_builtin_option('includedir')) + install_dir = kwargs.get('install_dir', state.environment.coredata.get_option(mesonlib.OptionKey('includedir'))) output = namebase + '.c' # Added in https://gitlab.gnome.org/GNOME/glib/commit/e4d68c7b3e8b01ab1a4231bf6da21d045cb5a816 (2.55.2) @@ -1332,7 +1332,7 @@ class GnomeModule(ExtensionModule): custom_kwargs['install'] = install_header if 'install_dir' not in custom_kwargs: custom_kwargs['install_dir'] = \ - state.environment.coredata.get_builtin_option('includedir') + state.environment.coredata.get_option(mesonlib.OptionKey('includedir')) h_target = self._make_mkenum_custom_target(state, h_sources, h_output, h_cmd, custom_kwargs) @@ -1361,7 +1361,7 @@ class GnomeModule(ExtensionModule): custom_kwargs['install'] = install_header if 'install_dir' not in custom_kwargs: custom_kwargs['install_dir'] = \ - state.environment.coredata.get_builtin_option('includedir') + state.environment.coredata.get_option(mesonlib.OptionKey('includedir')) target = self._make_mkenum_custom_target(state, sources, basename, generic_cmd, custom_kwargs) return ModuleReturnValue(target, [target]) @@ -1691,7 +1691,7 @@ G_END_DECLS''' 'depends': vapi_depends, } install_dir = kwargs.get('install_dir', - os.path.join(state.environment.coredata.get_builtin_option('datadir'), + os.path.join(state.environment.coredata.get_option(mesonlib.OptionKey('datadir')), 'vala', 'vapi')) if kwargs.get('install'): custom_kwargs['install'] = kwargs['install'] diff --git a/mesonbuild/modules/hotdoc.py b/mesonbuild/modules/hotdoc.py index 5c04e27..ee756e7 100644 --- a/mesonbuild/modules/hotdoc.py +++ b/mesonbuild/modules/hotdoc.py @@ -326,7 +326,7 @@ class HotdocTargetBuilder: for path in self.include_paths.keys(): self.cmd.extend(['--include-path', path]) - if self.state.environment.coredata.get_builtin_option('werror', self.state.subproject): + if self.state.environment.coredata.get_option(mesonlib.OptionKey('werror', subproject=self.state.subproject)): self.cmd.append('--fatal-warning') self.generate_hotdoc_config() diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py index 2652e7d..d48f83b 100644 --- a/mesonbuild/modules/i18n.py +++ b/mesonbuild/modules/i18n.py @@ -172,7 +172,7 @@ class I18nModule(ExtensionModule): install = kwargs.get('install', True) if install: - install_dir = kwargs.get('install_dir', state.environment.coredata.get_builtin_option('localedir')) + install_dir = kwargs.get('install_dir', state.environment.coredata.get_option(mesonlib.OptionKey('localedir'))) script = state.environment.get_build_command() args = ['--internal', 'gettext', 'install', '--subdir=' + state.subdir, diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index 7e19d71..7d347a6 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -331,10 +331,10 @@ class PkgConfigModule(ExtensionModule): srcdir = PurePath(state.environment.get_source_dir()) else: outdir = state.environment.scratch_dir - prefix = PurePath(coredata.get_builtin_option('prefix')) + prefix = PurePath(coredata.get_option(mesonlib.OptionKey('prefix'))) # These always return paths relative to prefix - libdir = PurePath(coredata.get_builtin_option('libdir')) - incdir = PurePath(coredata.get_builtin_option('includedir')) + libdir = PurePath(coredata.get_option(mesonlib.OptionKey('libdir'))) + incdir = PurePath(coredata.get_option(mesonlib.OptionKey('includedir'))) fname = os.path.join(outdir, pcfile) with open(fname, 'w', encoding='utf-8') as ofile: if not dataonly: @@ -531,9 +531,9 @@ class PkgConfigModule(ExtensionModule): pkgroot = kwargs.get('install_dir', default_install_dir) if pkgroot is None: if mesonlib.is_freebsd(): - pkgroot = os.path.join(state.environment.coredata.get_builtin_option('prefix'), 'libdata', 'pkgconfig') + pkgroot = os.path.join(state.environment.coredata.get_option(mesonlib.OptionKey('prefix')), 'libdata', 'pkgconfig') else: - pkgroot = os.path.join(state.environment.coredata.get_builtin_option('libdir'), 'pkgconfig') + pkgroot = os.path.join(state.environment.coredata.get_option(mesonlib.OptionKey('libdir')), 'pkgconfig') if not isinstance(pkgroot, str): raise mesonlib.MesonException('Install_dir must be a string.') self.generate_pkgconfig_file(state, deps, subdirs, name, description, url, diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py index ff0df2f..564d181 100644 --- a/mesonbuild/modules/python.py +++ b/mesonbuild/modules/python.py @@ -288,7 +288,7 @@ class PythonInstallation(ExternalProgramHolder): ExternalProgramHolder.__init__(self, python, interpreter.subproject) self.interpreter = interpreter self.subproject = self.interpreter.subproject - prefix = self.interpreter.environment.coredata.get_builtin_option('prefix') + prefix = self.interpreter.environment.coredata.get_option(mesonlib.OptionKey('prefix')) self.variables = info['variables'] self.paths = info['paths'] install_paths = info['install_paths'] diff --git a/mesonbuild/modules/unstable_external_project.py b/mesonbuild/modules/unstable_external_project.py index 7bb761f..7249078 100644 --- a/mesonbuild/modules/unstable_external_project.py +++ b/mesonbuild/modules/unstable_external_project.py @@ -26,6 +26,7 @@ from ..interpreter import Interpreter, DependencyHolder, InstallDir from ..compilers.compilers import cflags_mapping, cexe_mapping from ..dependencies.base import InternalDependency, PkgConfigDependency from ..environment import Environment +from ..mesonlib import OptionKey class ExternalProject(InterpreterObject): def __init__(self, @@ -62,9 +63,9 @@ class ExternalProject(InterpreterObject): self.src_dir = Path(self.env.get_source_dir(), self.subdir) self.build_dir = Path(self.env.get_build_dir(), self.subdir, 'build') self.install_dir = Path(self.env.get_build_dir(), self.subdir, 'dist') - self.prefix = Path(self.env.coredata.get_builtin_option('prefix')) - self.libdir = Path(self.env.coredata.get_builtin_option('libdir')) - self.includedir = Path(self.env.coredata.get_builtin_option('includedir')) + self.prefix = Path(self.env.coredata.get_option(OptionKey('prefix'))) + self.libdir = Path(self.env.coredata.get_option(OptionKey('libdir'))) + self.includedir = Path(self.env.coredata.get_option(OptionKey('includedir'))) # On Windows if the prefix is "c:/foo" and DESTDIR is "c:/bar", `make` # will install files into "c:/bar/c:/foo" which is an invalid path. |