xref: /qemu/qapi/meson.build (revision 50aa3d0984d8a4a9c39d34e2f81e8a70674462e4)
1a81df1b6SPaolo Bonziniutil_ss.add(files(
2a81df1b6SPaolo Bonzini  'opts-visitor.c',
3a81df1b6SPaolo Bonzini  'qapi-clone-visitor.c',
4a81df1b6SPaolo Bonzini  'qapi-dealloc-visitor.c',
518fa3ebcSPaolo Bonzini  'qapi-forward-visitor.c',
6a81df1b6SPaolo Bonzini  'qapi-util.c',
7a81df1b6SPaolo Bonzini  'qapi-visit-core.c',
8a81df1b6SPaolo Bonzini  'qobject-input-visitor.c',
9a81df1b6SPaolo Bonzini  'qobject-output-visitor.c',
10a81df1b6SPaolo Bonzini  'string-input-visitor.c',
11a81df1b6SPaolo Bonzini  'string-output-visitor.c',
12a81df1b6SPaolo Bonzini))
13f9429c67SDaniel P. Berrangéif have_system
14f9429c67SDaniel P. Berrangé  util_ss.add(files('qapi-type-helpers.c'))
15f9429c67SDaniel P. Berrangéendif
16e0091133SThomas Huthif have_system or have_tools or have_ga
171935e0e4SPhilippe Mathieu-Daudé  util_ss.add(files(
181935e0e4SPhilippe Mathieu-Daudé    'qmp-dispatch.c',
191935e0e4SPhilippe Mathieu-Daudé    'qmp-event.c',
201935e0e4SPhilippe Mathieu-Daudé    'qmp-registry.c',
211935e0e4SPhilippe Mathieu-Daudé  ))
221935e0e4SPhilippe Mathieu-Daudéendif
23a81df1b6SPaolo Bonzini
24a81df1b6SPaolo Bonziniqapi_all_modules = [
25a81df1b6SPaolo Bonzini  'authz',
26a81df1b6SPaolo Bonzini  'block',
275daa6bfdSKevin Wolf  'block-core',
285daa6bfdSKevin Wolf  'block-export',
29a81df1b6SPaolo Bonzini  'char',
30a81df1b6SPaolo Bonzini  'common',
316dd75472SMarkus Armbruster  'compat',
32a81df1b6SPaolo Bonzini  'control',
33a81df1b6SPaolo Bonzini  'crypto',
34415442a1SJonathan Cameron  'cxl',
35a81df1b6SPaolo Bonzini  'dump',
36e88899faSAndrew Melnychenko  'ebpf',
37a81df1b6SPaolo Bonzini  'error',
38a81df1b6SPaolo Bonzini  'introspect',
39a81df1b6SPaolo Bonzini  'job',
405de1aff2SPierre Morel  'machine-common',
41a81df1b6SPaolo Bonzini  'machine',
42a81df1b6SPaolo Bonzini  'machine-target',
43a81df1b6SPaolo Bonzini  'migration',
44a81df1b6SPaolo Bonzini  'misc',
45a81df1b6SPaolo Bonzini  'misc-target',
46a81df1b6SPaolo Bonzini  'net',
47a81df1b6SPaolo Bonzini  'pragma',
48a81df1b6SPaolo Bonzini  'qom',
4943d7e1d7SPavel Dovgalyuk  'replay',
50a81df1b6SPaolo Bonzini  'run-state',
51a81df1b6SPaolo Bonzini  'sockets',
52b9f88dc0SMark Kanda  'stats',
53a81df1b6SPaolo Bonzini  'trace',
54a81df1b6SPaolo Bonzini  'transaction',
55a0359b56SAvihai Horon  'vfio',
56a5ebce38SLaurent Vivier  'virtio',
5750186051SLukas Straub  'yank',
58a81df1b6SPaolo Bonzini]
599b45a025SPhilippe Mathieu-Daudéif have_system
609b45a025SPhilippe Mathieu-Daudé  qapi_all_modules += [
617fdb383dSPhilippe Mathieu-Daudé    'acpi',
627fdb383dSPhilippe Mathieu-Daudé    'audio',
6314c9fd16Szhenwei pi    'cryptodev',
649b45a025SPhilippe Mathieu-Daudé    'qdev',
657fdb383dSPhilippe Mathieu-Daudé    'pci',
667fdb383dSPhilippe Mathieu-Daudé    'rocker',
677fdb383dSPhilippe Mathieu-Daudé    'tpm',
68*12058948SGerd Hoffmann    'uefi',
699b45a025SPhilippe Mathieu-Daudé  ]
709b45a025SPhilippe Mathieu-Daudéendif
71c2651c0eSPhilippe Mathieu-Daudéif have_system or have_tools
72c2651c0eSPhilippe Mathieu-Daudé  qapi_all_modules += [
73c2651c0eSPhilippe Mathieu-Daudé    'ui',
74c2651c0eSPhilippe Mathieu-Daudé  ]
75c2651c0eSPhilippe Mathieu-Daudéendif
76a81df1b6SPaolo Bonzini
77a81df1b6SPaolo Bonziniqapi_nonmodule_outputs = [
78a81df1b6SPaolo Bonzini  'qapi-introspect.c', 'qapi-introspect.h',
79a81df1b6SPaolo Bonzini  'qapi-types.c', 'qapi-types.h',
80a81df1b6SPaolo Bonzini  'qapi-visit.h', 'qapi-visit.c',
81a81df1b6SPaolo Bonzini  'qapi-commands.h', 'qapi-commands.c',
82a81df1b6SPaolo Bonzini  'qapi-init-commands.h', 'qapi-init-commands.c',
83a81df1b6SPaolo Bonzini  'qapi-events.h', 'qapi-events.c',
84a81df1b6SPaolo Bonzini  'qapi-emit-events.c', 'qapi-emit-events.h',
85a81df1b6SPaolo Bonzini]
86a81df1b6SPaolo Bonzini
87a81df1b6SPaolo Bonzini# First build all sources
88a81df1b6SPaolo Bonziniqapi_util_outputs = [
89a81df1b6SPaolo Bonzini  'qapi-builtin-types.c', 'qapi-builtin-visit.c',
90a81df1b6SPaolo Bonzini  'qapi-builtin-types.h', 'qapi-builtin-visit.h',
91a81df1b6SPaolo Bonzini]
92a81df1b6SPaolo Bonzini
93a81df1b6SPaolo Bonziniqapi_inputs = []
94a81df1b6SPaolo Bonziniqapi_specific_outputs = []
95a81df1b6SPaolo Bonziniforeach module : qapi_all_modules
96a81df1b6SPaolo Bonzini  qapi_inputs += [ files(module + '.json') ]
97a81df1b6SPaolo Bonzini  qapi_module_outputs = [
98a81df1b6SPaolo Bonzini    'qapi-types-@0@.c'.format(module),
99a81df1b6SPaolo Bonzini    'qapi-types-@0@.h'.format(module),
100a81df1b6SPaolo Bonzini    'qapi-visit-@0@.c'.format(module),
101a81df1b6SPaolo Bonzini    'qapi-visit-@0@.h'.format(module),
102a0e61807SPhilippe Mathieu-Daudé  ]
103a0e61807SPhilippe Mathieu-Daudé  if have_system or have_tools
104a0e61807SPhilippe Mathieu-Daudé    qapi_module_outputs += [
105a81df1b6SPaolo Bonzini      'qapi-events-@0@.c'.format(module),
106a81df1b6SPaolo Bonzini      'qapi-events-@0@.h'.format(module),
107a81df1b6SPaolo Bonzini      'qapi-commands-@0@.c'.format(module),
108a81df1b6SPaolo Bonzini      'qapi-commands-@0@.h'.format(module),
109b83a80e8SVladimir Sementsov-Ogievskiy      'qapi-commands-@0@.trace-events'.format(module),
110a81df1b6SPaolo Bonzini    ]
111a0e61807SPhilippe Mathieu-Daudé  endif
112a81df1b6SPaolo Bonzini  if module.endswith('-target')
113a81df1b6SPaolo Bonzini    qapi_specific_outputs += qapi_module_outputs
114a81df1b6SPaolo Bonzini  else
115a81df1b6SPaolo Bonzini    qapi_util_outputs += qapi_module_outputs
116a81df1b6SPaolo Bonzini  endif
117a81df1b6SPaolo Bonziniendforeach
118a81df1b6SPaolo Bonzini
119a81df1b6SPaolo Bonziniqapi_files = custom_target('shared QAPI source files',
1204ac2ee19SPeter Maydell  output: qapi_util_outputs + qapi_specific_outputs + qapi_nonmodule_outputs,
121a81df1b6SPaolo Bonzini  input: [ files('qapi-schema.json') ],
122761a1a48SVladimir Sementsov-Ogievskiy  command: [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ],
123a81df1b6SPaolo Bonzini  depend_files: [ qapi_inputs, qapi_gen_depends ])
124a81df1b6SPaolo Bonzini
125a81df1b6SPaolo Bonzini# Now go through all the outputs and add them to the right sourceset.
126a81df1b6SPaolo Bonzini# These loops must be synchronized with the output of the above custom target.
127a81df1b6SPaolo Bonzini
128a81df1b6SPaolo Bonzinii = 0
129a81df1b6SPaolo Bonziniforeach output : qapi_util_outputs
130a81df1b6SPaolo Bonzini  if output.endswith('.h')
131a81df1b6SPaolo Bonzini    genh += qapi_files[i]
132a81df1b6SPaolo Bonzini  endif
133b83a80e8SVladimir Sementsov-Ogievskiy  if output.endswith('.trace-events')
134b83a80e8SVladimir Sementsov-Ogievskiy    qapi_trace_events += qapi_files[i]
135b83a80e8SVladimir Sementsov-Ogievskiy  endif
136a81df1b6SPaolo Bonzini  util_ss.add(qapi_files[i])
137a81df1b6SPaolo Bonzini  i = i + 1
138a81df1b6SPaolo Bonziniendforeach
139a81df1b6SPaolo Bonzini
1405242523bSMarc-André Lureauforeach output : qapi_specific_outputs + qapi_nonmodule_outputs
1415242523bSMarc-André Lureau  if output.endswith('.h')
1425242523bSMarc-André Lureau    genh += qapi_files[i]
1435242523bSMarc-André Lureau  endif
144b83a80e8SVladimir Sementsov-Ogievskiy  if output.endswith('.trace-events')
145b83a80e8SVladimir Sementsov-Ogievskiy    qapi_trace_events += qapi_files[i]
146b83a80e8SVladimir Sementsov-Ogievskiy  endif
147c7b64948SPhilippe Mathieu-Daudé  specific_ss.add(when: 'CONFIG_SYSTEM_ONLY', if_true: qapi_files[i])
1485242523bSMarc-André Lureau  i = i + 1
1495242523bSMarc-André Lureauendforeach
150