forked from mirror/qemu
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
3.2 KiB
Meson
145 lines
3.2 KiB
Meson
util_ss.add(files(
|
|
'opts-visitor.c',
|
|
'qapi-clone-visitor.c',
|
|
'qapi-dealloc-visitor.c',
|
|
'qapi-forward-visitor.c',
|
|
'qapi-util.c',
|
|
'qapi-visit-core.c',
|
|
'qobject-input-visitor.c',
|
|
'qobject-output-visitor.c',
|
|
'string-input-visitor.c',
|
|
'string-output-visitor.c',
|
|
))
|
|
if have_system
|
|
util_ss.add(files('qapi-type-helpers.c'))
|
|
endif
|
|
if have_system or have_tools or have_ga
|
|
util_ss.add(files(
|
|
'qmp-dispatch.c',
|
|
'qmp-event.c',
|
|
'qmp-registry.c',
|
|
))
|
|
endif
|
|
|
|
qapi_all_modules = [
|
|
'authz',
|
|
'block',
|
|
'block-core',
|
|
'block-export',
|
|
'char',
|
|
'common',
|
|
'compat',
|
|
'control',
|
|
'crypto',
|
|
'dump',
|
|
'error',
|
|
'introspect',
|
|
'job',
|
|
'machine',
|
|
'machine-target',
|
|
'migration',
|
|
'misc',
|
|
'misc-target',
|
|
'net',
|
|
'pragma',
|
|
'qom',
|
|
'replay',
|
|
'run-state',
|
|
'sockets',
|
|
'stats',
|
|
'trace',
|
|
'transaction',
|
|
'virtio',
|
|
'yank',
|
|
]
|
|
if have_system
|
|
qapi_all_modules += [
|
|
'acpi',
|
|
'audio',
|
|
'qdev',
|
|
'pci',
|
|
'rdma',
|
|
'rocker',
|
|
'tpm',
|
|
]
|
|
endif
|
|
if have_system or have_tools
|
|
qapi_all_modules += [
|
|
'ui',
|
|
]
|
|
endif
|
|
|
|
qapi_nonmodule_outputs = [
|
|
'qapi-introspect.c', 'qapi-introspect.h',
|
|
'qapi-types.c', 'qapi-types.h',
|
|
'qapi-visit.h', 'qapi-visit.c',
|
|
'qapi-commands.h', 'qapi-commands.c',
|
|
'qapi-init-commands.h', 'qapi-init-commands.c',
|
|
'qapi-events.h', 'qapi-events.c',
|
|
'qapi-emit-events.c', 'qapi-emit-events.h',
|
|
]
|
|
|
|
# First build all sources
|
|
qapi_util_outputs = [
|
|
'qapi-builtin-types.c', 'qapi-builtin-visit.c',
|
|
'qapi-builtin-types.h', 'qapi-builtin-visit.h',
|
|
]
|
|
|
|
qapi_inputs = []
|
|
qapi_specific_outputs = []
|
|
foreach module : qapi_all_modules
|
|
qapi_inputs += [ files(module + '.json') ]
|
|
qapi_module_outputs = [
|
|
'qapi-types-@0@.c'.format(module),
|
|
'qapi-types-@0@.h'.format(module),
|
|
'qapi-visit-@0@.c'.format(module),
|
|
'qapi-visit-@0@.h'.format(module),
|
|
]
|
|
if have_system or have_tools
|
|
qapi_module_outputs += [
|
|
'qapi-events-@0@.c'.format(module),
|
|
'qapi-events-@0@.h'.format(module),
|
|
'qapi-commands-@0@.c'.format(module),
|
|
'qapi-commands-@0@.h'.format(module),
|
|
'qapi-commands-@0@.trace-events'.format(module),
|
|
]
|
|
endif
|
|
if module.endswith('-target')
|
|
qapi_specific_outputs += qapi_module_outputs
|
|
else
|
|
qapi_util_outputs += qapi_module_outputs
|
|
endif
|
|
endforeach
|
|
|
|
qapi_files = custom_target('shared QAPI source files',
|
|
output: qapi_util_outputs + qapi_specific_outputs + qapi_nonmodule_outputs,
|
|
input: [ files('qapi-schema.json') ],
|
|
command: [ qapi_gen, '-o', 'qapi', '-b', '@INPUT0@' ],
|
|
depend_files: [ qapi_inputs, qapi_gen_depends ])
|
|
|
|
# Now go through all the outputs and add them to the right sourceset.
|
|
# These loops must be synchronized with the output of the above custom target.
|
|
|
|
i = 0
|
|
foreach output : qapi_util_outputs
|
|
if output.endswith('.h')
|
|
genh += qapi_files[i]
|
|
endif
|
|
if output.endswith('.trace-events')
|
|
qapi_trace_events += qapi_files[i]
|
|
endif
|
|
util_ss.add(qapi_files[i])
|
|
i = i + 1
|
|
endforeach
|
|
|
|
foreach output : qapi_specific_outputs + qapi_nonmodule_outputs
|
|
if output.endswith('.h')
|
|
genh += qapi_files[i]
|
|
endif
|
|
if output.endswith('.trace-events')
|
|
qapi_trace_events += qapi_files[i]
|
|
endif
|
|
specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: qapi_files[i])
|
|
i = i + 1
|
|
endforeach
|