modules/qt: Make use of the default=[] availability

pull/8822/head
Dylan Baker 4 years ago
parent ffa83f7f8a
commit 61ddceb3b9
  1. 73
      mesonbuild/modules/qt.py

@ -244,7 +244,7 @@ class QtBaseModule(ExtensionModule):
'qt.compile_resources', 'qt.compile_resources',
KwargInfo('name', str), KwargInfo('name', str),
KwargInfo('sources', ContainerTypeInfo(list, (File, str), allow_empty=False), listify=True, required=True), KwargInfo('sources', ContainerTypeInfo(list, (File, str), allow_empty=False), listify=True, required=True),
KwargInfo('extra_args', ContainerTypeInfo(list, str), listify=True), KwargInfo('extra_args', ContainerTypeInfo(list, str), listify=True, default=[]),
KwargInfo('method', str, default='auto') KwargInfo('method', str, default='auto')
) )
def compile_resources(self, state: 'ModuleState', args: T.Tuple, kwargs: 'ResourceCompilerKwArgs') -> ModuleReturnValue: def compile_resources(self, state: 'ModuleState', args: T.Tuple, kwargs: 'ResourceCompilerKwArgs') -> ModuleReturnValue:
@ -309,7 +309,7 @@ class QtBaseModule(ExtensionModule):
@typed_kwargs( @typed_kwargs(
'qt.compile_ui', 'qt.compile_ui',
KwargInfo('sources', ContainerTypeInfo(list, (File, str), allow_empty=False), listify=True, required=True), KwargInfo('sources', ContainerTypeInfo(list, (File, str), allow_empty=False), listify=True, required=True),
KwargInfo('extra_args', ContainerTypeInfo(list, str), listify=True), KwargInfo('extra_args', ContainerTypeInfo(list, str), listify=True, default=[]),
KwargInfo('method', str, default='auto') KwargInfo('method', str, default='auto')
) )
def compile_ui(self, state: 'ModuleState', args: T.Tuple, kwargs: 'ResourceCompilerKwArgs') -> ModuleReturnValue: def compile_ui(self, state: 'ModuleState', args: T.Tuple, kwargs: 'ResourceCompilerKwArgs') -> ModuleReturnValue:
@ -332,12 +332,12 @@ class QtBaseModule(ExtensionModule):
@noPosargs @noPosargs
@typed_kwargs( @typed_kwargs(
'qt.compile_moc', 'qt.compile_moc',
KwargInfo('sources', ContainerTypeInfo(list, (File, str)), listify=True), KwargInfo('sources', ContainerTypeInfo(list, (File, str)), listify=True, default=[]),
KwargInfo('headers', ContainerTypeInfo(list, (File, str)), listify=True), KwargInfo('headers', ContainerTypeInfo(list, (File, str)), listify=True, default=[]),
KwargInfo('extra_args', ContainerTypeInfo(list, str), listify=True), KwargInfo('extra_args', ContainerTypeInfo(list, str), listify=True, default=[]),
KwargInfo('method', str, default='auto'), KwargInfo('method', str, default='auto'),
KwargInfo('include_directories', ContainerTypeInfo(list, IncludeDirsHolder), listify=True), KwargInfo('include_directories', ContainerTypeInfo(list, IncludeDirsHolder), listify=True, default=[]),
KwargInfo('dependencies', ContainerTypeInfo(list, (DependencyHolder, ExternalLibraryHolder)), listify=True), KwargInfo('dependencies', ContainerTypeInfo(list, (DependencyHolder, ExternalLibraryHolder)), listify=True, default=[]),
) )
def compile_moc(self, state: 'ModuleState', args: T.Tuple, kwargs: 'MocCompilerKwArgs') -> ModuleReturnValue: def compile_moc(self, state: 'ModuleState', args: T.Tuple, kwargs: 'MocCompilerKwArgs') -> ModuleReturnValue:
self._detect_tools(state, kwargs['method']) self._detect_tools(state, kwargs['method'])
@ -349,16 +349,14 @@ class QtBaseModule(ExtensionModule):
if not (kwargs['headers'] or kwargs['sources']): if not (kwargs['headers'] or kwargs['sources']):
raise build.InvalidArguments('At least one of the "headers" or "sources" keyword arguments must be provied and not empty') raise build.InvalidArguments('At least one of the "headers" or "sources" keyword arguments must be provied and not empty')
inc = state.get_include_args(include_dirs=kwargs['include_directories'] or []) inc = state.get_include_args(include_dirs=kwargs['include_directories'])
compile_args: T.List[str] = [] compile_args: T.List[str] = []
if kwargs['dependencies']: for dep in unholder(kwargs['dependencies']):
for dep in unholder(kwargs['dependencies']): compile_args.extend([a for a in dep.get_all_compile_args() if a.startswith(('-I', '-D'))])
compile_args.extend([a for a in dep.get_all_compile_args() if a.startswith(('-I', '-D'))])
output: T.List[build.GeneratedList] = [] output: T.List[build.GeneratedList] = []
extra_args: T.List[str] = kwargs['extra_args'] or [] arguments = kwargs['extra_args'] + inc + compile_args + ['@INPUT@', '-o', '@OUTPUT@']
arguments = extra_args + inc + compile_args + ['@INPUT@', '-o', '@OUTPUT@']
if kwargs['headers']: if kwargs['headers']:
moc_kwargs = {'output': 'moc_@BASENAME@.cpp', moc_kwargs = {'output': 'moc_@BASENAME@.cpp',
'arguments': arguments} 'arguments': arguments}
@ -376,35 +374,52 @@ class QtBaseModule(ExtensionModule):
@FeatureNewKwargs('qt.preprocess', '0.44.0', ['moc_extra_arguments']) @FeatureNewKwargs('qt.preprocess', '0.44.0', ['moc_extra_arguments'])
@FeatureNewKwargs('qt.preprocess', '0.49.0', ['rcc_extra_arguments']) @FeatureNewKwargs('qt.preprocess', '0.49.0', ['rcc_extra_arguments'])
@FeatureDeprecatedKwargs('qt.preprocess', '0.59.0', ['sources']) @FeatureDeprecatedKwargs('qt.preprocess', '0.59.0', ['sources'])
@permittedKwargs({'moc_headers', 'moc_sources', 'uic_extra_arguments', 'moc_extra_arguments', 'rcc_extra_arguments', 'include_directories', 'dependencies', 'ui_files', 'qresources', 'method'})
# We can't use typed_pos_args here, the signature is ambiguious # We can't use typed_pos_args here, the signature is ambiguious
def preprocess(self, state: 'ModuleState', args: T.List[str], kwargs): @typed_kwargs(
rcc_files, ui_files, moc_headers, moc_sources, uic_extra_arguments, moc_extra_arguments, rcc_extra_arguments, sources, include_directories, dependencies \ 'qt.preprocess',
= [extract_as_list(kwargs, c, pop=True) for c in ['qresources', 'ui_files', 'moc_headers', 'moc_sources', 'uic_extra_arguments', 'moc_extra_arguments', 'rcc_extra_arguments', 'sources', 'include_directories', 'dependencies']] KwargInfo('sources', ContainerTypeInfo(list, (File, str)), listify=True, default=[]),
KwargInfo('qresources', ContainerTypeInfo(list, (File, str)), listify=True, default=[]),
KwargInfo('ui_files', ContainerTypeInfo(list, (File, str)), listify=True, default=[]),
KwargInfo('moc_sources', ContainerTypeInfo(list, (File, str)), listify=True, default=[]),
KwargInfo('moc_headers', ContainerTypeInfo(list, (File, str)), listify=True, default=[]),
KwargInfo('moc_extra_arguments', ContainerTypeInfo(list, str), listify=True, default=[]),
KwargInfo('rcc_extra_arguments', ContainerTypeInfo(list, str), listify=True, default=[]),
KwargInfo('uic_extra_arguments', ContainerTypeInfo(list, str), listify=True, default=[]),
KwargInfo('method', str, default='auto'),
KwargInfo('include_directories', ContainerTypeInfo(list, IncludeDirsHolder), listify=True, default=[]),
KwargInfo('dependencies', ContainerTypeInfo(list, (DependencyHolder, ExternalLibraryHolder)), listify=True, default=[]),
)
def preprocess(self, state: 'ModuleState', args: T.List[T.Union[str, File]], kwargs: 'PreprocessKwArgs') -> ModuleReturnValue:
_sources = args[1:] _sources = args[1:]
if _sources: if _sources:
FeatureDeprecated.single_use('qt.preprocess positional sources', '0.59', state.subproject) FeatureDeprecated.single_use('qt.preprocess positional sources', '0.59', state.subproject)
sources.extend(_sources) sources = _sources + kwargs['sources']
method = kwargs.get('method', 'auto') for s in sources:
if not isinstance(s, (str, File)):
raise build.InvalidArguments('Variadic arguments to qt.preprocess must be Strings or Files')
method = kwargs['method']
if rcc_files: if kwargs['qresources']:
# custom output name set? -> one output file, multiple otherwise # custom output name set? -> one output file, multiple otherwise
rcc_kwargs: 'ResourceCompilerKwArgs' = {'sources': rcc_files, 'extra_args': rcc_extra_arguments, 'method': method} rcc_kwargs: 'ResourceCompilerKwArgs' = {'sources': kwargs['qresources'], 'extra_args': kwargs['rcc_extra_arguments'], 'method': method}
if args: if args:
if not isinstance(args[0], str):
raise build.InvalidArguments('First argument to qt.preprocess must be a string')
rcc_kwargs['name'] = args[0] rcc_kwargs['name'] = args[0]
sources.extend(self.compile_resources(state, tuple(), rcc_kwargs).return_value) sources.extend(self.compile_resources(state, tuple(), rcc_kwargs).return_value)
if ui_files: if kwargs['ui_files']:
ui_kwargs: 'UICompilerKwArgs' = {'sources': ui_files, 'extra_args': uic_extra_arguments, 'method': method} ui_kwargs: 'UICompilerKwArgs' = {'sources': kwargs['ui_files'], 'extra_args': kwargs['uic_extra_arguments'], 'method': method}
sources.extend(self.compile_ui(state, tuple(), ui_kwargs).return_value) sources.extend(self.compile_ui(state, tuple(), ui_kwargs).return_value)
if moc_headers or moc_sources: if kwargs['moc_headers'] or kwargs['moc_sources']:
moc_kwargs: 'MocCompilerKwArgs' = { moc_kwargs: 'MocCompilerKwArgs' = {
'extra_args': moc_extra_arguments, 'extra_args': kwargs['moc_extra_arguments'],
'sources': moc_sources, 'sources': kwargs['moc_sources'],
'headers': moc_sources, 'headers': kwargs['moc_headers'],
'include_directories': include_directories, 'include_directories': kwargs['include_directories'],
'dependencies': dependencies 'dependencies': kwargs['dependencies'],
'method': method,
} }
sources.extend(self.compile_moc(state, tuple(), moc_kwargs).return_value) sources.extend(self.compile_moc(state, tuple(), moc_kwargs).return_value)

Loading…
Cancel
Save