diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-12-10 10:38:44 -0800 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-12-16 10:08:34 -0800 |
| commit | e2c46bf8e41888ec9a2d7c80737a81f5af6e0095 (patch) | |
| tree | 52ffcc7b9223df10f18250d567050633bb578891 /mesonbuild/interpreter | |
| parent | 1fc6c70b32bf09446ef4d26c3c193b603611be3e (diff) | |
| download | meson-e2c46bf8e41888ec9a2d7c80737a81f5af6e0095.tar.gz | |
interpreter/compiler: Use typed_kwargs for include_directories string feature
This removes the use of interpreter.extract_incdirs since_strings, and
instead let's typed_kwargs do the work
Diffstat (limited to 'mesonbuild/interpreter')
| -rw-r--r-- | mesonbuild/interpreter/compiler.py | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/mesonbuild/interpreter/compiler.py b/mesonbuild/interpreter/compiler.py index d5b14afbb..6b5c6a741 100644 --- a/mesonbuild/interpreter/compiler.py +++ b/mesonbuild/interpreter/compiler.py @@ -47,7 +47,7 @@ if T.TYPE_CHECKING: class BaseCompileKW(TypedDict): no_builtin_args: bool - include_directories: T.List[build.IncludeDirs] + include_directories: T.List[T.Union[str, build.IncludeDirs]] args: T.List[str] class CompileKW(BaseCompileKW, ExtractRequired): @@ -165,14 +165,23 @@ _NO_BUILTIN_ARGS_KW = KwargInfo('no_builtin_args', bool, default=False) _NAME_KW = KwargInfo('name', str, default='') _WERROR_KW = KwargInfo('werror', bool, default=False, since='1.3.0') +_INCLUDE_DIRECTORIES_KW = INCLUDE_DIRECTORIES.evolve( + since_values={ContainerTypeInfo(list, str): '1.10.0'} +) + # Many of the compiler methods take this kwarg signature exactly, this allows # simplifying the `typed_kwargs` calls -_COMMON_KWS: T.List[KwargInfo] = [_ARGS_KW, _DEPENDENCIES_KW, INCLUDE_DIRECTORIES, _PREFIX_KW, _NO_BUILTIN_ARGS_KW] +_COMMON_KWS: T.List[KwargInfo] = [ + _ARGS_KW, _DEPENDENCIES_KW, _INCLUDE_DIRECTORIES_KW, _PREFIX_KW, + _NO_BUILTIN_ARGS_KW, +] # Common methods of compiles, links, runs, and similar -_COMPILES_KWS: T.List[KwargInfo] = [_NAME_KW, _ARGS_KW, _DEPENDENCIES_KW, INCLUDE_DIRECTORIES, _NO_BUILTIN_ARGS_KW, - _WERROR_KW, - REQUIRED_KW.evolve(since='1.5.0', default=False)] +_COMPILES_KWS: T.List[KwargInfo] = [ + _NAME_KW, _ARGS_KW, _DEPENDENCIES_KW, _INCLUDE_DIRECTORIES_KW, + _NO_BUILTIN_ARGS_KW, _WERROR_KW, + REQUIRED_KW.evolve(since='1.5.0', default=False), +] _HEADER_KWS: T.List[KwargInfo] = [REQUIRED_KW.evolve(since='0.50.0', default=False), *_COMMON_KWS] _HAS_REQUIRED_KW = REQUIRED_KW.evolve(since='1.3.0', default=False) @@ -226,7 +235,7 @@ class CompilerHolder(ObjectHolder['Compiler']): def _determine_args(self, kwargs: BaseCompileKW, mode: CompileCheckMode = CompileCheckMode.LINK) -> T.List[str]: args: T.List[str] = [] - for i in self.interpreter.extract_incdirs(kwargs, strings_since='1.10.0'): + for i in self.interpreter.extract_incdirs(kwargs): for idir in i.to_string_list(self.environment.get_source_dir(), self.environment.get_build_dir()): args.extend(self.compiler.get_include_args(idir, False)) if not kwargs['no_builtin_args']: @@ -673,15 +682,13 @@ class CompilerHolder(ObjectHolder['Compiler']): mlog.log('Library', mlog.bold(libname), 'skipped: feature', mlog.bold(feature), 'disabled') return self.notfound_library(libname) - include_directories = self.interpreter.extract_incdirs(kwargs, key='header_include_directories', strings_since='1.10.0') - # This could be done with a comprehension, but that confuses the type # checker, and having it check this seems valuable has_header_kwargs: 'HeaderKW' = { 'required': required, 'args': kwargs['header_args'], 'dependencies': kwargs['header_dependencies'], - 'include_directories': include_directories, + 'include_directories': kwargs['header_include_directories'], 'prefix': kwargs['header_prefix'], 'no_builtin_args': kwargs['header_no_builtin_args'], } @@ -878,7 +885,7 @@ class CompilerHolder(ObjectHolder['Compiler']): 'compiler.preprocess', KwargInfo('output', str, default='@PLAINNAME@.i'), KwargInfo('compile_args', ContainerTypeInfo(list, str), listify=True, default=[]), - INCLUDE_DIRECTORIES, + _INCLUDE_DIRECTORIES_KW, _DEPENDENCIES_KW.evolve(since='1.1.0'), _DEPENDS_KW.evolve(since='1.4.0'), ) @@ -906,7 +913,7 @@ class CompilerHolder(ObjectHolder['Compiler']): compiler, self.interpreter.backend, kwargs['compile_args'], - self.interpreter.extract_incdirs(kwargs, strings_since='1.10.0'), + self.interpreter.extract_incdirs(kwargs), kwargs['dependencies'], kwargs['depends']) self.interpreter.add_target(tg.name, tg) |
