Add Generator.process_files to reduce code duplication.

pull/1250/head
Elliott Sales de Andrade 8 years ago committed by Jussi Pakkanen
parent 6f5a5622b9
commit 18c38df875
  1. 9
      mesonbuild/build.py
  2. 7
      mesonbuild/interpreter.py
  3. 9
      mesonbuild/modules/qt4.py
  4. 9
      mesonbuild/modules/qt5.py
  5. 4
      mesonbuild/modules/windows.py

@ -911,6 +911,15 @@ class Generator():
def get_arglist(self):
return self.arglist
def process_files(self, name, files, state, extra_args=[]):
output = GeneratedList(self, extra_args=extra_args)
for f in files:
if not isinstance(f, str):
raise InvalidArguments('{} arguments must be strings.'.format(name))
output.add_file(os.path.join(state.subdir, f))
return output
class GeneratedList():
def __init__(self, generator, extra_args=[]):
if hasattr(generator, 'held_object'):

@ -318,11 +318,10 @@ class GeneratorHolder(InterpreterObject):
self.methods.update({'process' : self.process_method})
def process_method(self, args, kwargs):
check_stringlist(args)
extras = mesonlib.stringlistify(kwargs.get('extra_args', []))
gl = GeneratedListHolder(self, extras)
[gl.add_file(os.path.join(self.interpreter.subdir, a)) for a in args]
return gl
gl = self.held_object.process_files('Generator', args, self.interpreter, extra_args=extras)
return GeneratedListHolder(gl)
class GeneratedListHolder(InterpreterObject):
def __init__(self, arg1, extra_args=[]):

@ -140,22 +140,19 @@ class Qt4Module():
ui_kwargs = {'output' : 'ui_@BASENAME@.h',
'arguments' : ['-o', '@OUTPUT@', '@INPUT@']}
ui_gen = build.Generator([self.uic], ui_kwargs)
ui_output = build.GeneratedList(ui_gen)
[ui_output.add_file(os.path.join(state.subdir, a)) for a in ui_files]
ui_output = ui_gen.process_files('Qt4 ui', ui_files, state)
sources.append(ui_output)
if len(moc_headers) > 0:
moc_kwargs = {'output' : 'moc_@BASENAME@.cpp',
'arguments' : ['@INPUT@', '-o', '@OUTPUT@']}
moc_gen = build.Generator([self.moc], moc_kwargs)
moc_output = build.GeneratedList(moc_gen)
[moc_output.add_file(os.path.join(state.subdir, a)) for a in moc_headers]
moc_output = moc_gen.process_files('Qt4 moc header', moc_headers, state)
sources.append(moc_output)
if len(moc_sources) > 0:
moc_kwargs = {'output' : '@BASENAME@.moc',
'arguments' : ['@INPUT@', '-o', '@OUTPUT@']}
moc_gen = build.Generator([self.moc], moc_kwargs)
moc_output = build.GeneratedList(moc_gen)
[moc_output.add_file(os.path.join(state.subdir, a)) for a in moc_sources]
moc_output = moc_gen.process_files('Qt4 moc source', moc_sources, state)
sources.append(moc_output)
return sources

@ -146,22 +146,19 @@ class Qt5Module():
ui_kwargs = {'output' : 'ui_@BASENAME@.h',
'arguments' : ['-o', '@OUTPUT@', '@INPUT@']}
ui_gen = build.Generator([self.uic], ui_kwargs)
ui_output = build.GeneratedList(ui_gen)
[ui_output.add_file(os.path.join(state.subdir, a)) for a in ui_files]
ui_output = ui_gen.process_files('Qt5 ui', ui_files, state)
sources.append(ui_output)
if len(moc_headers) > 0:
moc_kwargs = {'output' : 'moc_@BASENAME@.cpp',
'arguments' : ['@INPUT@', '-o', '@OUTPUT@']}
moc_gen = build.Generator([self.moc], moc_kwargs)
moc_output = build.GeneratedList(moc_gen)
[moc_output.add_file(os.path.join(state.subdir, a)) for a in moc_headers]
moc_output = moc_gen.process_files('Qt5 moc header', moc_headers, state)
sources.append(moc_output)
if len(moc_sources) > 0:
moc_kwargs = {'output' : '@BASENAME@.moc',
'arguments' : ['@INPUT@', '-o', '@OUTPUT@']}
moc_gen = build.Generator([self.moc], moc_kwargs)
moc_output = build.GeneratedList(moc_gen)
[moc_output.add_file(os.path.join(state.subdir, a)) for a in moc_sources]
moc_output = moc_gen.process_files('Qt5 moc source', moc_sources, state)
sources.append(moc_output)
return sources

@ -40,12 +40,10 @@ class WindowsModule:
suffix = 'o'
if not rescomp.found():
raise MesonException('Could not find Windows resource compiler %s.' % ' '.join(rescomp.get_command()))
res_files = mesonlib.stringlistify(args)
res_kwargs = {'output' : '@BASENAME@.' + suffix,
'arguments': res_args}
res_gen = build.Generator([rescomp], res_kwargs)
res_output = build.GeneratedList(res_gen)
[res_output.add_file(os.path.join(state.subdir, a)) for a in res_files]
res_output = res_gen.process_files('Windows resource', args, state)
return res_output
def initialize():

Loading…
Cancel
Save