1util_ss.add(files( 2 'opts-visitor.c', 3 'qapi-clone-visitor.c', 4 'qapi-dealloc-visitor.c', 5 'qapi-forward-visitor.c', 6 'qapi-util.c', 7 'qapi-visit-core.c', 8 'qobject-input-visitor.c', 9 'qobject-output-visitor.c', 10 'string-input-visitor.c', 11 'string-output-visitor.c', 12)) 13if have_system 14 util_ss.add(files('qapi-type-helpers.c')) 15endif 16if have_system or have_tools or have_ga 17 util_ss.add(files( 18 'qmp-dispatch.c', 19 'qmp-event.c', 20 'qmp-registry.c', 21 )) 22endif 23 24qapi_all_modules = [ 25 'authz', 26 'block', 27 'block-core', 28 'block-export', 29 'char', 30 'common', 31 'compat', 32 'control', 33 'crypto', 34 'cxl', 35 'dump', 36 'ebpf', 37 'error', 38 'introspect', 39 'job', 40 'machine-common', 41 'machine', 42 'machine-s390x', 43 'migration', 44 'misc', 45 'net', 46 'pragma', 47 'qom', 48 'replay', 49 'run-state', 50 'sockets', 51 'stats', 52 'trace', 53 'transaction', 54 'vfio', 55 'virtio', 56 'yank', 57] 58if have_system 59 qapi_all_modules += [ 60 'accelerator', 61 'acpi', 62 'audio', 63 'cryptodev', 64 'qdev', 65 'pci', 66 'rocker', 67 'misc-arm', 68 'misc-i386', 69 'tpm', 70 'uefi', 71 ] 72endif 73if have_system or have_tools 74 qapi_all_modules += [ 75 'ui', 76 ] 77endif 78 79qapi_nonmodule_outputs = [ 80 'qapi-introspect.c', 'qapi-introspect.h', 81 'qapi-types.c', 'qapi-types.h', 82 'qapi-visit.h', 'qapi-visit.c', 83 'qapi-commands.h', 'qapi-commands.c', 84 'qapi-init-commands.h', 'qapi-init-commands.c', 85 'qapi-events.h', 'qapi-events.c', 86 'qapi-emit-events.c', 'qapi-emit-events.h', 87] 88 89qapi_outputs = qapi_nonmodule_outputs + [ 90 'qapi-builtin-types.c', 'qapi-builtin-visit.c', 91 'qapi-builtin-types.h', 'qapi-builtin-visit.h', 92] 93 94qapi_inputs = [] 95foreach module : qapi_all_modules 96 qapi_inputs += [ files(module + '.json') ] 97 qapi_module_outputs = [ 98 'qapi-types-@0@.c'.format(module), 99 'qapi-types-@0@.h'.format(module), 100 'qapi-visit-@0@.c'.format(module), 101 'qapi-visit-@0@.h'.format(module), 102 ] 103 if have_system or have_tools 104 qapi_module_outputs += [ 105 'qapi-events-@0@.c'.format(module), 106 'qapi-events-@0@.h'.format(module), 107 'qapi-commands-@0@.c'.format(module), 108 'qapi-commands-@0@.h'.format(module), 109 'qapi-commands-@0@.trace-events'.format(module), 110 ] 111 endif 112 qapi_outputs += qapi_module_outputs 113endforeach 114 115qapi_files = custom_target('shared QAPI source files', 116 output: qapi_outputs, 117 input: [ files('qapi-schema.json') ], 118 command: [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ], 119 depend_files: [ qapi_inputs, qapi_gen_depends ]) 120 121i = 0 122foreach output : qapi_outputs 123 if output.endswith('.h') 124 genh += qapi_files[i] 125 endif 126 if output.endswith('.trace-events') 127 qapi_trace_events += qapi_files[i] 128 endif 129 util_ss.add(qapi_files[i]) 130 i = i + 1 131endforeach 132