Merge pull request #3578 from MathieuDuponchelle/mkenums_gen_templates

gnome/mkenums: allow passing generated files as templates
pull/3403/merge
Jussi Pakkanen 7 years ago committed by GitHub
commit c8256a30a0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      mesonbuild/modules/gnome.py
  2. 27
      test cases/frameworks/7 gnome/mkenums/meson.build

@ -1014,12 +1014,16 @@ This will become a hard error in the future.''')
raise AssertionError("sources should've already been handled") raise AssertionError("sources should've already been handled")
elif arg == 'c_template': elif arg == 'c_template':
c_template = value c_template = value
if isinstance(c_template, mesonlib.File):
c_template = c_template.absolute_path(state.environment.source_dir, state.environment.build_dir)
if 'template' in kwargs: if 'template' in kwargs:
raise MesonException('Mkenums does not accept both ' raise MesonException('Mkenums does not accept both '
'c_template and template keyword ' 'c_template and template keyword '
'arguments at the same time.') 'arguments at the same time.')
elif arg == 'h_template': elif arg == 'h_template':
h_template = value h_template = value
if isinstance(h_template, mesonlib.File):
h_template = h_template.absolute_path(state.environment.source_dir, state.environment.build_dir)
if 'template' in kwargs: if 'template' in kwargs:
raise MesonException('Mkenums does not accept both ' raise MesonException('Mkenums does not accept both '
'h_template and template keyword ' 'h_template and template keyword '
@ -1040,7 +1044,7 @@ This will become a hard error in the future.''')
targets = [] targets = []
if h_template is not None: if h_template is not None:
h_output = os.path.splitext(h_template)[0] h_output = os.path.basename(os.path.splitext(h_template)[0])
# We always set template as the first element in the source array # We always set template as the first element in the source array
# so --template consumes it. # so --template consumes it.
h_cmd = cmd + ['--template', '@INPUT@'] h_cmd = cmd + ['--template', '@INPUT@']
@ -1055,7 +1059,7 @@ This will become a hard error in the future.''')
targets.append(h_target) targets.append(h_target)
if c_template is not None: if c_template is not None:
c_output = os.path.splitext(c_template)[0] c_output = os.path.basename(os.path.splitext(c_template)[0])
# We always set template as the first element in the source array # We always set template as the first element in the source array
# so --template consumes it. # so --template consumes it.
c_cmd = cmd + ['--template', '@INPUT@'] c_cmd = cmd + ['--template', '@INPUT@']

@ -127,3 +127,30 @@ enums5 = gnome.mkenums_simple('enums5', sources : 'meson-sample.h',
decorator : 'MESON_EXPORT', decorator : 'MESON_EXPORT',
header_prefix : '#include "meson-decls.h"') header_prefix : '#include "meson-decls.h"')
enumexe5 = executable('enumprog5', main, enums5, dependencies : gobj) enumexe5 = executable('enumprog5', main, enums5, dependencies : gobj)
# Generate template then use as input to mkenums
# Simple trick to copy the file without substitutions, can be
# removed when https://github.com/mesonbuild/meson/pull/3383 is fixed
gen_h_template = configure_file(input: 'enums.h.in',
output: 'enums6.h.in',
configuration: configuration_data(),
format: 'cmake')
enums_h6 = gnome.mkenums('enums6',
sources : 'meson-sample.h',
h_template : gen_h_template,
ftail : '/* trailing header file info */',
install_header : true,
install_dir : get_option('includedir'))
conf = configuration_data()
conf.set('ENUM_FILE', 'enums6.h')
main = configure_file(
input : 'main.c',
output : 'main6.c',
configuration : conf)
enumexe6 = executable('enumprog6', main, enums_c2, enums_h6,
dependencies : gobj)
test('enum test 4', enumexe6)

Loading…
Cancel
Save