blob: e7bc54e5d047090aa2cdb823ef9ff4b892adb614 [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
Thomas Huthe0091132022-11-10 09:36:26 +010016if have_system or have_tools or have_ga
Philippe Mathieu-Daudé1935e0e2021-01-22 21:44:39 +010017 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',
Jonathan Cameron415442a2023-03-02 13:37:09 +000034 'cxl',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040035 'dump',
Andrew Melnychenkoe88899f2024-03-12 18:57:57 +080036 'ebpf',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040037 'error',
38 'introspect',
39 'job',
Pierre Morel5de1aff2023-10-16 20:39:06 +020040 'machine-common',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040041 'machine',
42 'machine-target',
43 'migration',
44 'misc',
45 'misc-target',
46 'net',
47 'pragma',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040048 'qom',
Pavel Dovgalyuk43d7e1d2020-10-03 20:13:14 +030049 'replay',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040050 'run-state',
51 'sockets',
Mark Kandab9f88dc2022-02-15 09:04:31 -060052 'stats',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040053 'trace',
54 'transaction',
Avihai Horona0359b52024-05-15 16:21:35 +030055 'vfio',
Laurent Viviera5ebce32022-08-11 08:24:39 -040056 'virtio',
Lukas Straub50186052020-12-28 16:08:41 +010057 'yank',
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040058]
Philippe Mathieu-Daudé9b45a022021-01-22 21:44:38 +010059if have_system
60 qapi_all_modules += [
Philippe Mathieu-Daudé7fdb3832021-01-22 21:44:40 +010061 'acpi',
62 'audio',
zhenwei pi14c9fd12023-03-01 18:58:36 +080063 'cryptodev',
Philippe Mathieu-Daudé9b45a022021-01-22 21:44:38 +010064 'qdev',
Philippe Mathieu-Daudé7fdb3832021-01-22 21:44:40 +010065 'pci',
Philippe Mathieu-Daudé7fdb3832021-01-22 21:44:40 +010066 'rocker',
67 'tpm',
Philippe Mathieu-Daudé9b45a022021-01-22 21:44:38 +010068 ]
69endif
Philippe Mathieu-Daudéc2651c02021-01-22 21:44:41 +010070if have_system or have_tools
71 qapi_all_modules += [
72 'ui',
73 ]
74endif
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040075
Paolo Bonzinia81df1b2020-08-19 08:44:56 -040076qapi_nonmodule_outputs = [
77 'qapi-introspect.c', 'qapi-introspect.h',
78 'qapi-types.c', 'qapi-types.h',
79 'qapi-visit.h', 'qapi-visit.c',
80 'qapi-commands.h', 'qapi-commands.c',
81 'qapi-init-commands.h', 'qapi-init-commands.c',
82 'qapi-events.h', 'qapi-events.c',
83 'qapi-emit-events.c', 'qapi-emit-events.h',
84]
85
86# First build all sources
87qapi_util_outputs = [
88 'qapi-builtin-types.c', 'qapi-builtin-visit.c',
89 'qapi-builtin-types.h', 'qapi-builtin-visit.h',
90]
91
92qapi_inputs = []
93qapi_specific_outputs = []
94foreach module : qapi_all_modules
95 qapi_inputs += [ files(module + '.json') ]
96 qapi_module_outputs = [
97 'qapi-types-@0@.c'.format(module),
98 'qapi-types-@0@.h'.format(module),
99 'qapi-visit-@0@.c'.format(module),
100 'qapi-visit-@0@.h'.format(module),
Paolo Bonzinia81df1b2020-08-19 08:44:56 -0400101 ]
Philippe Mathieu-Daudéa0e61802021-02-24 18:16:42 +0100102 if have_system or have_tools
103 qapi_module_outputs += [
104 'qapi-events-@0@.c'.format(module),
105 'qapi-events-@0@.h'.format(module),
106 'qapi-commands-@0@.c'.format(module),
107 'qapi-commands-@0@.h'.format(module),
Vladimir Sementsov-Ogievskiyb83a80e2022-01-26 17:11:27 +0100108 'qapi-commands-@0@.trace-events'.format(module),
Philippe Mathieu-Daudéa0e61802021-02-24 18:16:42 +0100109 ]
110 endif
Paolo Bonzinia81df1b2020-08-19 08:44:56 -0400111 if module.endswith('-target')
112 qapi_specific_outputs += qapi_module_outputs
113 else
114 qapi_util_outputs += qapi_module_outputs
115 endif
116endforeach
117
118qapi_files = custom_target('shared QAPI source files',
Peter Maydell4ac2ee12020-09-25 17:23:04 +0100119 output: qapi_util_outputs + qapi_specific_outputs + qapi_nonmodule_outputs,
Paolo Bonzinia81df1b2020-08-19 08:44:56 -0400120 input: [ files('qapi-schema.json') ],
Vladimir Sementsov-Ogievskiy761a1a42022-01-26 17:11:30 +0100121 command: [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ],
Paolo Bonzinia81df1b2020-08-19 08:44:56 -0400122 depend_files: [ qapi_inputs, qapi_gen_depends ])
123
124# Now go through all the outputs and add them to the right sourceset.
125# These loops must be synchronized with the output of the above custom target.
126
127i = 0
128foreach output : qapi_util_outputs
129 if output.endswith('.h')
130 genh += qapi_files[i]
131 endif
Vladimir Sementsov-Ogievskiyb83a80e2022-01-26 17:11:27 +0100132 if output.endswith('.trace-events')
133 qapi_trace_events += qapi_files[i]
134 endif
Paolo Bonzinia81df1b2020-08-19 08:44:56 -0400135 util_ss.add(qapi_files[i])
136 i = i + 1
137endforeach
138
Marc-André Lureau52425232019-08-15 12:01:26 +0400139foreach output : qapi_specific_outputs + qapi_nonmodule_outputs
140 if output.endswith('.h')
141 genh += qapi_files[i]
142 endif
Vladimir Sementsov-Ogievskiyb83a80e2022-01-26 17:11:27 +0100143 if output.endswith('.trace-events')
144 qapi_trace_events += qapi_files[i]
145 endif
Philippe Mathieu-Daudéc7b64942023-06-13 15:33:46 +0200146 specific_ss.add(when: 'CONFIG_SYSTEM_ONLY', if_true: qapi_files[i])
Marc-André Lureau52425232019-08-15 12:01:26 +0400147 i = i + 1
148endforeach