libvirt/src/util/meson.build
Dmitrii Shcherbakov 59c1bc3a0e Add a PCI/PCIe device VPD Parser
Add support for deserializing the binary PCI/PCIe VPD format and storing
results in memory.

The VPD format is specified in "I.3. VPD Definitions" in PCI specs
(2.2+) and "6.28.1 VPD Format" PCIe 4.0. As section 6.28 in PCIe 4.0
notes, the PCI Local Bus and PCIe VPD formats are binary compatible
and PCIe 4.0 merely started incorporating what was already present in
PCI specs.

Linux kernel exposes a binary blob in the VPD format via sysfs since
v2.6.26 (commit 94e6108803469a37ee1e3c92dafdd1d59298602f) which requires
a parser to interpret.

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dmitrii Shcherbakov <dmitrii.shcherbakov@canonical.com>
2021-10-21 17:34:04 +01:00

220 lines
4.0 KiB
Meson

util_sources = [
'glibcompat.c',
'viralloc.c',
'virarch.c',
'virarptable.c',
'viraudit.c',
'virauth.c',
'virauthconfig.c',
'virbitmap.c',
'virbpf.c',
'virbuffer.c',
'vircgroup.c',
'vircgroupbackend.c',
'vircgroupv1.c',
'vircgroupv2.c',
'vircgroupv2devices.c',
'vircommand.c',
'virconf.c',
'vircrypto.c',
'virdaemon.c',
'virdevmapper.c',
'virdnsmasq.c',
'virebtables.c',
'virenum.c',
'vireventglib.c',
'vireventglibwatch.c',
'vireventthread.c',
'virfcp.c',
'virfdstream.c',
'virfile.c',
'virfilecache.c',
'virfirewall.c',
'virfirewalld.c',
'virfirmware.c',
'virgdbus.c',
'virgettext.c',
'virgic.c',
'virglibutil.c',
'virhash.c',
'virhashcode.c',
'virhook.c',
'virhostcpu.c',
'virhostmem.c',
'virhostuptime.c',
'viridentity.c',
'virinitctl.c',
'viriptables.c',
'viriscsi.c',
'virjson.c',
'virkeycode.c',
'virkmod.c',
'virlease.c',
'virlockspace.c',
'virlog.c',
'virmacaddr.c',
'virmacmap.c',
'virmdev.c',
'virmodule.c',
'virnetdev.c',
'virnetdevbandwidth.c',
'virnetdevbridge.c',
'virnetdevip.c',
'virnetdevmacvlan.c',
'virnetdevmidonet.c',
'virnetdevopenvswitch.c',
'virnetdevtap.c',
'virnetdevveth.c',
'virnetdevvlan.c',
'virnetdevvportprofile.c',
'virnetlink.c',
'virnodesuspend.c',
'virnuma.c',
'virnvme.c',
'virobject.c',
'virpci.c',
'virperf.c',
'virpidfile.c',
'virpolkit.c',
'virportallocator.c',
'virprocess.c',
'virqemu.c',
'virrandom.c',
'virresctrl.c',
'virrotatingfile.c',
'virscsi.c',
'virscsihost.c',
'virscsivhost.c',
'virseclabel.c',
'virsecret.c',
'virsecureerase.c',
'virsocket.c',
'virsocketaddr.c',
'virstoragefile.c',
'virstring.c',
'virsysinfo.c',
'virsystemd.c',
'virthread.c',
'virthreadjob.c',
'virthreadpool.c',
'virtime.c',
'virtpm.c',
'virtypedparam.c',
'viruri.c',
'virusb.c',
'virutil.c',
'viruuid.c',
'virvhba.c',
'virpcivpd.c',
'virvsock.c',
'virxml.c',
]
util_public_sources = files(
'virerror.c',
'virevent.c',
'virtypedparam-public.c',
)
keycode_gen_sources = []
keycode_list = [
'atset1',
'atset2',
'atset3',
'linux',
'osx',
'qnum',
'usb',
'win32',
'xtkbd',
]
keyname_list = [
'linux',
'osx',
'win32',
]
keymap_gen_prog = find_program('@0@/src/keycodemapdb/tools/keymap-gen'.format(meson.source_root()))
keymap_src_file = '@0@/src/keycodemapdb/data/keymaps.csv'.format(meson.source_root())
foreach name : keycode_list
keycode_gen_sources += custom_target(
'virt_keycode_@0@'.format(name),
input: keymap_src_file,
output: 'virkeycodetable_@0@.h'.format(name),
command: [
meson_python_prog, python3_prog, keymap_gen_prog, 'code-table',
'--lang', 'stdc',
'--varname', 'virKeyCodeTable_@0@'.format(name),
'@INPUT@', name,
],
capture: true,
)
endforeach
foreach name : keyname_list
keycode_gen_sources += custom_target(
'keyname_@0@'.format(name),
input: keymap_src_file,
output: 'virkeynametable_@0@.h'.format(name),
command: [
meson_python_prog, python3_prog, keymap_gen_prog, 'name-table',
'--lang', 'stdc',
'--varname', 'virKeyNameTable_@0@'.format(name),
'@INPUT@', name,
],
capture: true,
)
endforeach
keycode_dep = declare_dependency(
sources: keycode_gen_sources,
)
io_helper_sources = [
'iohelper.c',
]
virt_util_lib = static_library(
'virt_util',
[
util_sources,
util_public_sources,
keycode_gen_sources,
dtrace_gen_headers,
],
dependencies: [
acl_dep,
audit_dep,
capng_dep,
devmapper_dep,
gnutls_dep,
intl_dep,
libm_dep,
libnl_dep,
libutil_dep,
numactl_dep,
secdriver_dep,
src_dep,
thread_dep,
win32_dep,
yajl_dep,
],
)
libvirt_libs += virt_util_lib
if conf.has('WITH_LIBVIRTD')
virt_helpers += {
'name': 'libvirt_iohelper',
'sources': [
files(io_helper_sources),
dtrace_gen_headers,
],
}
endif
util_inc_dir = include_directories('.')