qemu-cr16/qapi/meson.build
Daniel P. Berrangé a78a91feee qapi: expose rtc-reset-reinjection command unconditionally
This removes the TARGET_I386 condition from the rtc-reset-reinjection
command. This requires providing a QMP command stub for non-i386 target.
This in turn requires moving the command out of misc-target.json, since
that will trigger symbol poisoning errors when built from target
independent code.

Rather than putting the command into misc.json, it is proposed to create
misc-$TARGET.json files to hold commands whose impl is conceptually
only applicable to a single target. This gives an obvious docs hint to
consumers that the command is only useful in relation a specific target,
while misc.json is for commands applicable to 2 or more targets.

The current impl of qmp_rtc_reset_reinject() is a no-op if the i386
RTC is disabled in Kconfig, or if the running machine type lack any
RTC device.

The stub impl for non-i386 targets retains this no-op behaviour.
However, it is now reporting an Error mentioning this command is not
available for current target.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250522190542.588267-2-pierrick.bouvier@linaro.org>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
2025-05-28 18:26:23 +02:00

150 lines
3.3 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',
'cxl',
'dump',
'ebpf',
'error',
'introspect',
'job',
'machine-common',
'machine',
'machine-target',
'migration',
'misc',
'misc-target',
'net',
'pragma',
'qom',
'replay',
'run-state',
'sockets',
'stats',
'trace',
'transaction',
'vfio',
'virtio',
'yank',
]
if have_system
qapi_all_modules += [
'acpi',
'audio',
'cryptodev',
'qdev',
'pci',
'rocker',
'misc-i386',
'tpm',
'uefi',
]
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_SYSTEM_ONLY', if_true: qapi_files[i])
i = i + 1
endforeach