blob: 840f1b0e195229c2c298f61b2f54df48a14dd791 [file] [log] [blame]
Paolo Bonzinia81df1b2020-08-19 08:44:56 -04001util_ss.add(files(
2 'opts-visitor.c',
3 'qapi-clone-visitor.c',
4 'qapi-dealloc-visitor.c',
Paolo Bonzini18fa3eb2021-07-18 08:49:22 +02005 'qapi-forward-visitor.c',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -04006 'qapi-util.c',
7 'qapi-visit-core.c',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -04008 'qobject-input-visitor.c',
9 'qobject-output-visitor.c',
10 'string-input-visitor.c',
11 'string-output-visitor.c',
12))
Daniel P. Berrangéf9429c62021-10-08 15:09:00 +010013if have_system
14 util_ss.add(files('qapi-type-helpers.c'))
15endif
Philippe Mathieu-Daudé1935e0e2021-01-22 21:44:39 +010016if have_system or have_tools
17 util_ss.add(files(
18 'qmp-dispatch.c',
19 'qmp-event.c',
20 'qmp-registry.c',
21 ))
22endif
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040023
24qapi_all_modules = [
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040025 'authz',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040026 'block',
Kevin Wolf5daa6bf2020-09-24 17:26:48 +020027 'block-core',
28 'block-export',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040029 'char',
30 'common',
Markus Armbruster6dd75472021-03-18 16:55:10 +010031 'compat',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040032 'control',
33 'crypto',
34 'dump',
35 'error',
36 'introspect',
37 'job',
38 'machine',
39 'machine-target',
40 'migration',
41 'misc',
42 'misc-target',
43 'net',
44 'pragma',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040045 'qom',
Pavel Dovgalyuk43d7e1d2020-10-03 20:13:14 +030046 'replay',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040047 'run-state',
48 'sockets',
Mark Kandab9f88dc2022-02-15 09:04:31 -060049 'stats',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040050 'trace',
51 'transaction',
Lukas Straub50186052020-12-28 16:08:41 +010052 'yank',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040053]
Philippe Mathieu-Daudé9b45a022021-01-22 21:44:38 +010054if have_system
55 qapi_all_modules += [
Philippe Mathieu-Daudé7fdb3832021-01-22 21:44:40 +010056 'acpi',
57 'audio',
Philippe Mathieu-Daudé9b45a022021-01-22 21:44:38 +010058 'qdev',
Philippe Mathieu-Daudé7fdb3832021-01-22 21:44:40 +010059 'pci',
60 'rdma',
61 'rocker',
62 'tpm',
Philippe Mathieu-Daudé9b45a022021-01-22 21:44:38 +010063 ]
64endif
Philippe Mathieu-Daudéc2651c02021-01-22 21:44:41 +010065if have_system or have_tools
66 qapi_all_modules += [
67 'ui',
68 ]
69endif
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040070
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040071qapi_nonmodule_outputs = [
72 'qapi-introspect.c', 'qapi-introspect.h',
73 'qapi-types.c', 'qapi-types.h',
74 'qapi-visit.h', 'qapi-visit.c',
75 'qapi-commands.h', 'qapi-commands.c',
76 'qapi-init-commands.h', 'qapi-init-commands.c',
77 'qapi-events.h', 'qapi-events.c',
78 'qapi-emit-events.c', 'qapi-emit-events.h',
79]
80
81# First build all sources
82qapi_util_outputs = [
83 'qapi-builtin-types.c', 'qapi-builtin-visit.c',
84 'qapi-builtin-types.h', 'qapi-builtin-visit.h',
85]
86
87qapi_inputs = []
88qapi_specific_outputs = []
89foreach module : qapi_all_modules
90 qapi_inputs += [ files(module + '.json') ]
91 qapi_module_outputs = [
92 'qapi-types-@0@.c'.format(module),
93 'qapi-types-@0@.h'.format(module),
94 'qapi-visit-@0@.c'.format(module),
95 'qapi-visit-@0@.h'.format(module),
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040096 ]
Philippe Mathieu-Daudéa0e61802021-02-24 18:16:42 +010097 if have_system or have_tools
98 qapi_module_outputs += [
99 'qapi-events-@0@.c'.format(module),
100 'qapi-events-@0@.h'.format(module),
101 'qapi-commands-@0@.c'.format(module),
102 'qapi-commands-@0@.h'.format(module),
Vladimir Sementsov-Ogievskiyb83a80e2022-01-26 17:11:27 +0100103 'qapi-commands-@0@.trace-events'.format(module),
Philippe Mathieu-Daudéa0e61802021-02-24 18:16:42 +0100104 ]
105 endif
Paolo Bonzinia81df1b2020-08-19 08:44:56 -0400106 if module.endswith('-target')
107 qapi_specific_outputs += qapi_module_outputs
108 else
109 qapi_util_outputs += qapi_module_outputs
110 endif
111endforeach
112
113qapi_files = custom_target('shared QAPI source files',
Peter Maydell4ac2ee12020-09-25 17:23:04 +0100114 output: qapi_util_outputs + qapi_specific_outputs + qapi_nonmodule_outputs,
Paolo Bonzinia81df1b2020-08-19 08:44:56 -0400115 input: [ files('qapi-schema.json') ],
Vladimir Sementsov-Ogievskiy761a1a42022-01-26 17:11:30 +0100116 command: [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ],
Paolo Bonzinia81df1b2020-08-19 08:44:56 -0400117 depend_files: [ qapi_inputs, qapi_gen_depends ])
118
119# Now go through all the outputs and add them to the right sourceset.
120# These loops must be synchronized with the output of the above custom target.
121
122i = 0
123foreach output : qapi_util_outputs
124 if output.endswith('.h')
125 genh += qapi_files[i]
126 endif
Vladimir Sementsov-Ogievskiyb83a80e2022-01-26 17:11:27 +0100127 if output.endswith('.trace-events')
128 qapi_trace_events += qapi_files[i]
129 endif
Paolo Bonzinia81df1b2020-08-19 08:44:56 -0400130 util_ss.add(qapi_files[i])
131 i = i + 1
132endforeach
133
Marc-André Lureau52425232019-08-15 12:01:26 +0400134foreach output : qapi_specific_outputs + qapi_nonmodule_outputs
135 if output.endswith('.h')
136 genh += qapi_files[i]
137 endif
Vladimir Sementsov-Ogievskiyb83a80e2022-01-26 17:11:27 +0100138 if output.endswith('.trace-events')
139 qapi_trace_events += qapi_files[i]
140 endif
Marc-André Lureau52425232019-08-15 12:01:26 +0400141 specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: qapi_files[i])
142 i = i + 1
143endforeach