@typed_pos_args('install_headers', varargs=(str, mesonlib.File))
@typed_kwargs('install_headers', KwargInfo('install_dir', (str, NoneType)), KwargInfo('subdir', (str, NoneType)), INSTALL_MODE_KW.evolve(since='0.47.0'))
def func_install_headers(self, node: mparser.BaseNode, args: T.Tuple[T.List['mesonlib.FileOrString']], kwargs: 'kwargs.FuncInstallHeaders') -> build.Headers:
    source_files = self.source_strings_to_files(args[0])
    install_subdir = kwargs['subdir']
    if (install_subdir is not None):
        if (kwargs['install_dir'] is not None):
            raise InterpreterException('install_headers: cannot specify both "install_dir" and "subdir". Use only "install_dir".')
        if os.path.isabs(install_subdir):
            mlog.deprecation('Subdir keyword must not be an absolute path. This will be a hard error in the next release.')
    h = build.Headers(source_files, install_subdir, kwargs['install_dir'], kwargs['install_mode'], self.subproject)
    self.build.headers.append(h)
    return h
@typed_pos_args('install_headers', varargs=(str, mesonlib.File))
@typed_kwargs('install_headers', KwargInfo('install_dir', (str, NoneType)), KwargInfo('subdir', (str, NoneType)), INSTALL_MODE_KW.evolve(since='0.47.0'))
def func_install_headers(self, node: mparser.BaseNode, args: T.Tuple[T.List['mesonlib.FileOrString']], kwargs: 'kwargs.FuncInstallHeaders') -> build.Headers:
    source_files = self.source_strings_to_files(args[0])
    install_subdir = kwargs['subdir']
    if (install_subdir is not None):
        if (kwargs['install_dir'] is not None):
            raise InterpreterException('install_headers: cannot specify both "install_dir" and "subdir". Use only "install_dir".')
        if os.path.isabs(install_subdir):
            mlog.deprecation('Subdir keyword must not be an absolute path. This will be a hard error in the next release.')
    h = build.Headers(source_files, install_subdir, kwargs['install_dir'], kwargs['install_mode'], self.subproject)
    self.build.headers.append(h)
    return h