diff options
-rw-r--r-- | mesonbuild/modules/gnome.py | 29 | ||||
-rw-r--r-- | test cases/frameworks/7 gnome/genmarshal/meson.build | 10 |
2 files changed, 25 insertions, 14 deletions
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index 5f0f737..edd3f93 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -535,10 +535,11 @@ class GnomeModule: 'Sources keyword argument must be a string or array.') cmd = ['glib-genmarshal'] - known_kwargs = ['body', 'header', 'internal', 'nostdinc', - 'skip-source', 'stdinc', 'valist-marshallers'] - known_custom_target_kwargs = ['install', 'install_dir', 'build_always', - 'depends', 'depend_files'] + known_kwargs = ['internal', 'nostdinc', 'skip-source', 'stdinc', + 'valist-marshallers'] + known_custom_target_kwargs = ['build_always', 'depends', + 'depend_files', 'install_dir', + 'install_header'] for arg, value in kwargs.items(): if arg == 'prefix': cmd += ['--prefix', value] @@ -548,18 +549,30 @@ class GnomeModule: raise MesonException( 'Genmarshal does not take a %s keyword argument.' % ( arg, )) - cmd += ['@INPUT@'] + + install_header = kwargs.pop('install_header', False) + install_dir = kwargs.pop('install_dir', None) custom_kwargs = { 'input': sources, - 'output': output, 'capture': True, - 'command': cmd } for arg in known_custom_target_kwargs: if arg in kwargs: custom_kwargs[arg] = kwargs[arg] - return build.CustomTarget(output, state.subdir, custom_kwargs) + + custom_kwargs['command'] = cmd + ['--header', '--body', '@INPUT@'] + custom_kwargs['output'] = output + '.c' + body = build.CustomTarget(output + '_c', state.subdir, custom_kwargs) + + custom_kwargs['install'] = install_header + if install_dir is not None: + custom_kwargs['install_dir'] = install_dir + custom_kwargs['command'] = cmd + ['--header', '@INPUT@'] + custom_kwargs['output'] = output + '.h' + header = build.CustomTarget(output + '_h', state.subdir, custom_kwargs) + + return [body, header] def initialize(): diff --git a/test cases/frameworks/7 gnome/genmarshal/meson.build b/test cases/frameworks/7 gnome/genmarshal/meson.build index 8cebb85..4a1a7f9 100644 --- a/test cases/frameworks/7 gnome/genmarshal/meson.build +++ b/test cases/frameworks/7 gnome/genmarshal/meson.build @@ -1,12 +1,10 @@ -marshaller_h = gnome.genmarshal('marshaller.h', +marshallers = gnome.genmarshal('marshaller', sources : 'marshaller.list', -header : true, -install : true, +install_header : true, install_dir : get_option('includedir')) -marshaller_c = gnome.genmarshal('marshaller.c', -sources : 'marshaller.list', -body : true) +marshaller_c = marshallers[0] +marshaller_h = marshallers[1] genmarshalexe = executable('genmarshalprog', 'main.c', marshaller_c, marshaller_h, dependencies : gobj) |