xref: /qemu/qapi/meson.build (revision a0e61807a3492b57f10d78e97fed97a0d3b21933)
1a81df1b6SPaolo Bonziniutil_ss.add(files(
2a81df1b6SPaolo Bonzini  'opts-visitor.c',
3a81df1b6SPaolo Bonzini  'qapi-clone-visitor.c',
4a81df1b6SPaolo Bonzini  'qapi-dealloc-visitor.c',
5a81df1b6SPaolo Bonzini  'qapi-util.c',
6a81df1b6SPaolo Bonzini  'qapi-visit-core.c',
7a81df1b6SPaolo Bonzini  'qobject-input-visitor.c',
8a81df1b6SPaolo Bonzini  'qobject-output-visitor.c',
9a81df1b6SPaolo Bonzini  'string-input-visitor.c',
10a81df1b6SPaolo Bonzini  'string-output-visitor.c',
11a81df1b6SPaolo Bonzini))
121935e0e4SPhilippe Mathieu-Daudéif have_system or have_tools
131935e0e4SPhilippe Mathieu-Daudé  util_ss.add(files(
141935e0e4SPhilippe Mathieu-Daudé    'qmp-dispatch.c',
151935e0e4SPhilippe Mathieu-Daudé    'qmp-event.c',
161935e0e4SPhilippe Mathieu-Daudé    'qmp-registry.c',
171935e0e4SPhilippe Mathieu-Daudé  ))
181935e0e4SPhilippe Mathieu-Daudéendif
19a81df1b6SPaolo Bonzini
20a81df1b6SPaolo Bonziniqapi_all_modules = [
21a81df1b6SPaolo Bonzini  'authz',
22a81df1b6SPaolo Bonzini  'block',
235daa6bfdSKevin Wolf  'block-core',
245daa6bfdSKevin Wolf  'block-export',
25a81df1b6SPaolo Bonzini  'char',
26a81df1b6SPaolo Bonzini  'common',
27a81df1b6SPaolo Bonzini  'control',
28a81df1b6SPaolo Bonzini  'crypto',
29a81df1b6SPaolo Bonzini  'dump',
30a81df1b6SPaolo Bonzini  'error',
31a81df1b6SPaolo Bonzini  'introspect',
32a81df1b6SPaolo Bonzini  'job',
33a81df1b6SPaolo Bonzini  'machine',
34a81df1b6SPaolo Bonzini  'machine-target',
35a81df1b6SPaolo Bonzini  'migration',
36a81df1b6SPaolo Bonzini  'misc',
37a81df1b6SPaolo Bonzini  'misc-target',
38a81df1b6SPaolo Bonzini  'net',
39a81df1b6SPaolo Bonzini  'pragma',
40a81df1b6SPaolo Bonzini  'qom',
4143d7e1d7SPavel Dovgalyuk  'replay',
42a81df1b6SPaolo Bonzini  'run-state',
43a81df1b6SPaolo Bonzini  'sockets',
44a81df1b6SPaolo Bonzini  'trace',
45a81df1b6SPaolo Bonzini  'transaction',
4650186051SLukas Straub  'yank',
47a81df1b6SPaolo Bonzini]
489b45a025SPhilippe Mathieu-Daudéif have_system
499b45a025SPhilippe Mathieu-Daudé  qapi_all_modules += [
507fdb383dSPhilippe Mathieu-Daudé    'acpi',
517fdb383dSPhilippe Mathieu-Daudé    'audio',
529b45a025SPhilippe Mathieu-Daudé    'qdev',
537fdb383dSPhilippe Mathieu-Daudé    'pci',
547fdb383dSPhilippe Mathieu-Daudé    'rdma',
557fdb383dSPhilippe Mathieu-Daudé    'rocker',
567fdb383dSPhilippe Mathieu-Daudé    'tpm',
579b45a025SPhilippe Mathieu-Daudé  ]
589b45a025SPhilippe Mathieu-Daudéendif
59c2651c0eSPhilippe Mathieu-Daudéif have_system or have_tools
60c2651c0eSPhilippe Mathieu-Daudé  qapi_all_modules += [
61c2651c0eSPhilippe Mathieu-Daudé    'ui',
62c2651c0eSPhilippe Mathieu-Daudé  ]
63c2651c0eSPhilippe Mathieu-Daudéendif
64a81df1b6SPaolo Bonzini
65a81df1b6SPaolo Bonziniqapi_storage_daemon_modules = [
66a81df1b6SPaolo Bonzini  'block-core',
675daa6bfdSKevin Wolf  'block-export',
68a81df1b6SPaolo Bonzini  'char',
69a81df1b6SPaolo Bonzini  'common',
70a81df1b6SPaolo Bonzini  'control',
71a81df1b6SPaolo Bonzini  'crypto',
72a81df1b6SPaolo Bonzini  'introspect',
73a81df1b6SPaolo Bonzini  'job',
74a81df1b6SPaolo Bonzini  'qom',
75a81df1b6SPaolo Bonzini  'sockets',
76a81df1b6SPaolo Bonzini  'pragma',
77a81df1b6SPaolo Bonzini  'transaction',
78a81df1b6SPaolo Bonzini]
79a81df1b6SPaolo Bonzini
80a81df1b6SPaolo Bonziniqapi_nonmodule_outputs = [
81a81df1b6SPaolo Bonzini  'qapi-introspect.c', 'qapi-introspect.h',
82a81df1b6SPaolo Bonzini  'qapi-types.c', 'qapi-types.h',
83a81df1b6SPaolo Bonzini  'qapi-visit.h', 'qapi-visit.c',
84a81df1b6SPaolo Bonzini  'qapi-commands.h', 'qapi-commands.c',
85a81df1b6SPaolo Bonzini  'qapi-init-commands.h', 'qapi-init-commands.c',
86a81df1b6SPaolo Bonzini  'qapi-events.h', 'qapi-events.c',
87a81df1b6SPaolo Bonzini  'qapi-emit-events.c', 'qapi-emit-events.h',
88a81df1b6SPaolo Bonzini]
89a81df1b6SPaolo Bonzini
90a81df1b6SPaolo Bonzini# First build all sources
91a81df1b6SPaolo Bonziniqapi_util_outputs = [
92a81df1b6SPaolo Bonzini  'qapi-builtin-types.c', 'qapi-builtin-visit.c',
93a81df1b6SPaolo Bonzini  'qapi-builtin-types.h', 'qapi-builtin-visit.h',
94a81df1b6SPaolo Bonzini]
95a81df1b6SPaolo Bonzini
96a81df1b6SPaolo Bonziniqapi_inputs = []
97a81df1b6SPaolo Bonziniqapi_specific_outputs = []
98a81df1b6SPaolo Bonziniforeach module : qapi_all_modules
99a81df1b6SPaolo Bonzini  qapi_inputs += [ files(module + '.json') ]
100a81df1b6SPaolo Bonzini  qapi_module_outputs = [
101a81df1b6SPaolo Bonzini    'qapi-types-@0@.c'.format(module),
102a81df1b6SPaolo Bonzini    'qapi-types-@0@.h'.format(module),
103a81df1b6SPaolo Bonzini    'qapi-visit-@0@.c'.format(module),
104a81df1b6SPaolo Bonzini    'qapi-visit-@0@.h'.format(module),
105*a0e61807SPhilippe Mathieu-Daudé  ]
106*a0e61807SPhilippe Mathieu-Daudé  if have_system or have_tools
107*a0e61807SPhilippe Mathieu-Daudé    qapi_module_outputs += [
108a81df1b6SPaolo Bonzini      'qapi-events-@0@.c'.format(module),
109a81df1b6SPaolo Bonzini      'qapi-events-@0@.h'.format(module),
110a81df1b6SPaolo Bonzini      'qapi-commands-@0@.c'.format(module),
111a81df1b6SPaolo Bonzini      'qapi-commands-@0@.h'.format(module),
112a81df1b6SPaolo Bonzini    ]
113*a0e61807SPhilippe Mathieu-Daudé  endif
114a81df1b6SPaolo Bonzini  if module.endswith('-target')
115a81df1b6SPaolo Bonzini    qapi_specific_outputs += qapi_module_outputs
116a81df1b6SPaolo Bonzini  else
117a81df1b6SPaolo Bonzini    qapi_util_outputs += qapi_module_outputs
118a81df1b6SPaolo Bonzini  endif
119a81df1b6SPaolo Bonziniendforeach
120a81df1b6SPaolo Bonzini
121a81df1b6SPaolo Bonziniqapi_files = custom_target('shared QAPI source files',
1224ac2ee19SPeter Maydell  output: qapi_util_outputs + qapi_specific_outputs + qapi_nonmodule_outputs,
123a81df1b6SPaolo Bonzini  input: [ files('qapi-schema.json') ],
124a81df1b6SPaolo Bonzini  command: [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ],
125a81df1b6SPaolo Bonzini  depend_files: [ qapi_inputs, qapi_gen_depends ])
126a81df1b6SPaolo Bonzini
127a81df1b6SPaolo Bonzini# Now go through all the outputs and add them to the right sourceset.
128a81df1b6SPaolo Bonzini# These loops must be synchronized with the output of the above custom target.
129a81df1b6SPaolo Bonzini
130a81df1b6SPaolo Bonzinii = 0
131a81df1b6SPaolo Bonziniforeach output : qapi_util_outputs
132a81df1b6SPaolo Bonzini  if output.endswith('.h')
133a81df1b6SPaolo Bonzini    genh += qapi_files[i]
134a81df1b6SPaolo Bonzini  endif
135a81df1b6SPaolo Bonzini  util_ss.add(qapi_files[i])
136a81df1b6SPaolo Bonzini  i = i + 1
137a81df1b6SPaolo Bonziniendforeach
138a81df1b6SPaolo Bonzini
1395242523bSMarc-André Lureauforeach output : qapi_specific_outputs + qapi_nonmodule_outputs
1405242523bSMarc-André Lureau  if output.endswith('.h')
1415242523bSMarc-André Lureau    genh += qapi_files[i]
1425242523bSMarc-André Lureau  endif
1435242523bSMarc-André Lureau  specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: qapi_files[i])
1445242523bSMarc-André Lureau  i = i + 1
1455242523bSMarc-André Lureauendforeach
146