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', 36a81df1b6SPaolo Bonzini 'error', 37a81df1b6SPaolo Bonzini 'introspect', 38a81df1b6SPaolo Bonzini 'job', 39a81df1b6SPaolo Bonzini 'machine', 40a81df1b6SPaolo Bonzini 'machine-target', 41a81df1b6SPaolo Bonzini 'migration', 42a81df1b6SPaolo Bonzini 'misc', 43a81df1b6SPaolo Bonzini 'misc-target', 44a81df1b6SPaolo Bonzini 'net', 45a81df1b6SPaolo Bonzini 'pragma', 46a81df1b6SPaolo Bonzini 'qom', 4743d7e1d7SPavel Dovgalyuk 'replay', 48a81df1b6SPaolo Bonzini 'run-state', 49a81df1b6SPaolo Bonzini 'sockets', 50b9f88dc0SMark Kanda 'stats', 51a81df1b6SPaolo Bonzini 'trace', 52a81df1b6SPaolo Bonzini 'transaction', 53a5ebce38SLaurent Vivier 'virtio', 5450186051SLukas Straub 'yank', 55a81df1b6SPaolo Bonzini] 569b45a025SPhilippe Mathieu-Daudéif have_system 579b45a025SPhilippe Mathieu-Daudé qapi_all_modules += [ 587fdb383dSPhilippe Mathieu-Daudé 'acpi', 597fdb383dSPhilippe Mathieu-Daudé 'audio', 6014c9fd16Szhenwei pi 'cryptodev', 619b45a025SPhilippe Mathieu-Daudé 'qdev', 627fdb383dSPhilippe Mathieu-Daudé 'pci', 637fdb383dSPhilippe Mathieu-Daudé 'rdma', 647fdb383dSPhilippe Mathieu-Daudé 'rocker', 657fdb383dSPhilippe Mathieu-Daudé 'tpm', 669b45a025SPhilippe Mathieu-Daudé ] 679b45a025SPhilippe Mathieu-Daudéendif 68c2651c0eSPhilippe Mathieu-Daudéif have_system or have_tools 69c2651c0eSPhilippe Mathieu-Daudé qapi_all_modules += [ 70c2651c0eSPhilippe Mathieu-Daudé 'ui', 71c2651c0eSPhilippe Mathieu-Daudé ] 72c2651c0eSPhilippe Mathieu-Daudéendif 73a81df1b6SPaolo Bonzini 74a81df1b6SPaolo Bonziniqapi_nonmodule_outputs = [ 75a81df1b6SPaolo Bonzini 'qapi-introspect.c', 'qapi-introspect.h', 76a81df1b6SPaolo Bonzini 'qapi-types.c', 'qapi-types.h', 77a81df1b6SPaolo Bonzini 'qapi-visit.h', 'qapi-visit.c', 78a81df1b6SPaolo Bonzini 'qapi-commands.h', 'qapi-commands.c', 79a81df1b6SPaolo Bonzini 'qapi-init-commands.h', 'qapi-init-commands.c', 80a81df1b6SPaolo Bonzini 'qapi-events.h', 'qapi-events.c', 81a81df1b6SPaolo Bonzini 'qapi-emit-events.c', 'qapi-emit-events.h', 82a81df1b6SPaolo Bonzini] 83a81df1b6SPaolo Bonzini 84a81df1b6SPaolo Bonzini# First build all sources 85a81df1b6SPaolo Bonziniqapi_util_outputs = [ 86a81df1b6SPaolo Bonzini 'qapi-builtin-types.c', 'qapi-builtin-visit.c', 87a81df1b6SPaolo Bonzini 'qapi-builtin-types.h', 'qapi-builtin-visit.h', 88a81df1b6SPaolo Bonzini] 89a81df1b6SPaolo Bonzini 90a81df1b6SPaolo Bonziniqapi_inputs = [] 91a81df1b6SPaolo Bonziniqapi_specific_outputs = [] 92a81df1b6SPaolo Bonziniforeach module : qapi_all_modules 93a81df1b6SPaolo Bonzini qapi_inputs += [ files(module + '.json') ] 94a81df1b6SPaolo Bonzini qapi_module_outputs = [ 95a81df1b6SPaolo Bonzini 'qapi-types-@0@.c'.format(module), 96a81df1b6SPaolo Bonzini 'qapi-types-@0@.h'.format(module), 97a81df1b6SPaolo Bonzini 'qapi-visit-@0@.c'.format(module), 98a81df1b6SPaolo Bonzini 'qapi-visit-@0@.h'.format(module), 99a0e61807SPhilippe Mathieu-Daudé ] 100a0e61807SPhilippe Mathieu-Daudé if have_system or have_tools 101a0e61807SPhilippe Mathieu-Daudé qapi_module_outputs += [ 102a81df1b6SPaolo Bonzini 'qapi-events-@0@.c'.format(module), 103a81df1b6SPaolo Bonzini 'qapi-events-@0@.h'.format(module), 104a81df1b6SPaolo Bonzini 'qapi-commands-@0@.c'.format(module), 105a81df1b6SPaolo Bonzini 'qapi-commands-@0@.h'.format(module), 106b83a80e8SVladimir Sementsov-Ogievskiy 'qapi-commands-@0@.trace-events'.format(module), 107a81df1b6SPaolo Bonzini ] 108a0e61807SPhilippe Mathieu-Daudé endif 109a81df1b6SPaolo Bonzini if module.endswith('-target') 110a81df1b6SPaolo Bonzini qapi_specific_outputs += qapi_module_outputs 111a81df1b6SPaolo Bonzini else 112a81df1b6SPaolo Bonzini qapi_util_outputs += qapi_module_outputs 113a81df1b6SPaolo Bonzini endif 114a81df1b6SPaolo Bonziniendforeach 115a81df1b6SPaolo Bonzini 116a81df1b6SPaolo Bonziniqapi_files = custom_target('shared QAPI source files', 1174ac2ee19SPeter Maydell output: qapi_util_outputs + qapi_specific_outputs + qapi_nonmodule_outputs, 118a81df1b6SPaolo Bonzini input: [ files('qapi-schema.json') ], 119761a1a48SVladimir Sementsov-Ogievskiy command: [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ], 120a81df1b6SPaolo Bonzini depend_files: [ qapi_inputs, qapi_gen_depends ]) 121a81df1b6SPaolo Bonzini 122a81df1b6SPaolo Bonzini# Now go through all the outputs and add them to the right sourceset. 123a81df1b6SPaolo Bonzini# These loops must be synchronized with the output of the above custom target. 124a81df1b6SPaolo Bonzini 125a81df1b6SPaolo Bonzinii = 0 126a81df1b6SPaolo Bonziniforeach output : qapi_util_outputs 127a81df1b6SPaolo Bonzini if output.endswith('.h') 128a81df1b6SPaolo Bonzini genh += qapi_files[i] 129a81df1b6SPaolo Bonzini endif 130b83a80e8SVladimir Sementsov-Ogievskiy if output.endswith('.trace-events') 131b83a80e8SVladimir Sementsov-Ogievskiy qapi_trace_events += qapi_files[i] 132b83a80e8SVladimir Sementsov-Ogievskiy endif 133a81df1b6SPaolo Bonzini util_ss.add(qapi_files[i]) 134a81df1b6SPaolo Bonzini i = i + 1 135a81df1b6SPaolo Bonziniendforeach 136a81df1b6SPaolo Bonzini 1375242523bSMarc-André Lureauforeach output : qapi_specific_outputs + qapi_nonmodule_outputs 1385242523bSMarc-André Lureau if output.endswith('.h') 1395242523bSMarc-André Lureau genh += qapi_files[i] 1405242523bSMarc-André Lureau endif 141b83a80e8SVladimir Sementsov-Ogievskiy if output.endswith('.trace-events') 142b83a80e8SVladimir Sementsov-Ogievskiy qapi_trace_events += qapi_files[i] 143b83a80e8SVladimir Sementsov-Ogievskiy endif 144*c7b64948SPhilippe Mathieu-Daudé specific_ss.add(when: 'CONFIG_SYSTEM_ONLY', if_true: qapi_files[i]) 1455242523bSMarc-André Lureau i = i + 1 1465242523bSMarc-André Lureauendforeach 147