From aac5b484764e1ef25f64d474a748406a6bd99a8a Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Wed, 10 Dec 2025 10:45:29 -0800 Subject: build: cleanup include_directories code With the previous change the build layer no longer needs to be concerned about strings --- mesonbuild/build.py | 13 ++++--------- mesonbuild/interpreter/interpreter.py | 3 +-- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/mesonbuild/build.py b/mesonbuild/build.py index a28678c22..2abe49686 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1285,8 +1285,7 @@ class BuildTarget(Target): self.process_link_depends(kwargs.get('link_depends', [])) # Target-specific include dirs must be added BEFORE include dirs from # internal deps (added inside self.add_deps()) to override them. - inclist = extract_as_list(kwargs, 'include_directories') - self.add_include_dirs(inclist) + self.add_include_dirs(kwargs.get('include_directories', [])) # Add dependencies (which also have include_directories) deplist = extract_as_list(kwargs, 'dependencies') self.add_deps(deplist) @@ -1587,15 +1586,11 @@ class BuildTarget(Target): mlog.warning(msg + ' This will fail in cross build.') def add_include_dirs(self, args: T.Sequence['IncludeDirs'], set_is_system: str = 'preserve') -> None: - ids: T.List['IncludeDirs'] = [] - for a in args: - if not isinstance(a, IncludeDirs): - raise InvalidArguments('Include directory to be added is not an include directory object.') - ids.append(a) if set_is_system != 'preserve': is_system = set_is_system == 'system' - ids = [IncludeDirs(x.get_curdir(), x.get_incdirs(), is_system, x.get_extra_build_dirs()) for x in ids] - self.include_dirs += ids + self.include_dirs.extend([IncludeDirs(x.get_curdir(), x.get_incdirs(), is_system, x.get_extra_build_dirs()) for x in args]) + else: + self.include_dirs.extend(args) def get_aliases(self) -> T.List[T.Tuple[str, str, str]]: return [] diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 10970b552..3a0cae041 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -3473,6 +3473,7 @@ class Interpreter(InterpreterBase, HoldableObject): if targetclass is not build.Jar: self.check_for_jar_sources(sources, targetclass) + kwargs['include_directories'] = self.extract_incdirs(kwargs['include_directories']) kwargs['d_import_dirs'] = self.extract_incdirs(kwargs['d_import_dirs'], True) missing: T.List[str] = [] for each in itertools.chain(kwargs['c_pch'] or [], kwargs['cpp_pch'] or []): @@ -3517,8 +3518,6 @@ class Interpreter(InterpreterBase, HoldableObject): node=node) outputs.update(o) - kwargs['include_directories'] = self.extract_incdirs(kwargs['include_directories']) - if targetclass is build.Executable: kwargs = T.cast('kwtypes.Executable', kwargs) if kwargs['gui_app'] is not None: -- cgit v1.2.3