add the libvfio-user library as a submodule. build it as part of QEMU Signed-off-by: Elena Ufimtseva <elena.ufimts...@oracle.com> Signed-off-by: John G Johnson <john.g.john...@oracle.com> Signed-off-by: Jagannathan Raman <jag.ra...@oracle.com> --- configure | 11 +++++++++++ meson.build | 35 +++++++++++++++++++++++++++++++++++ .gitmodules | 3 +++ MAINTAINERS | 7 +++++++ hw/remote/meson.build | 2 ++ libvfio-user | 1 + 6 files changed, 59 insertions(+) create mode 160000 libvfio-user
diff --git a/configure b/configure index 49b5481..bc1c961 100755 --- a/configure +++ b/configure @@ -4297,6 +4297,17 @@ but not implemented on your system" fi ########################################## +# check for multiprocess + +case "$multiprocess" in + auto | enabled ) + if test "$git_submodules_action" != "ignore"; then + git_submodules="${git_submodules} libvfio-user" + fi + ;; +esac + +########################################## # End of CC checks # After here, no more $cc or $ld runs diff --git a/meson.build b/meson.build index 6e4d2d8..f2f9f86 100644 --- a/meson.build +++ b/meson.build @@ -1894,6 +1894,41 @@ if get_option('cfi') and slirp_opt == 'system' + ' Please configure with --enable-slirp=git') endif +vfiouser = not_found +if have_system and multiprocess_allowed + have_internal = fs.exists(meson.current_source_dir() / 'libvfio-user/Makefile') + + if not have_internal + error('libvfio-user source not found - please pull git submodule') + endif + + vfiouser_files = [ + 'libvfio-user/lib/dma.c', + 'libvfio-user/lib/irq.c', + 'libvfio-user/lib/libvfio-user.c', + 'libvfio-user/lib/migration.c', + 'libvfio-user/lib/pci.c', + 'libvfio-user/lib/pci_caps.c', + 'libvfio-user/lib/tran_sock.c', + ] + + vfiouser_inc = include_directories('libvfio-user/include', 'libvfio-user/lib') + + json_c = dependency('json-c', required: false) + if not json_c.found() + json_c = dependency('libjson-c') + endif + + libvfiouser = static_library('vfiouser', + build_by_default: false, + sources: vfiouser_files, + dependencies: json_c, + include_directories: vfiouser_inc) + + vfiouser = declare_dependency(link_with: libvfiouser, + include_directories: vfiouser_inc) +endif + fdt = not_found fdt_opt = get_option('fdt') if have_system diff --git a/.gitmodules b/.gitmodules index 08b1b48..a583a39 100644 --- a/.gitmodules +++ b/.gitmodules @@ -64,3 +64,6 @@ [submodule "roms/vbootrom"] path = roms/vbootrom url = https://gitlab.com/qemu-project/vbootrom.git +[submodule "libvfio-user"] + path = libvfio-user + url = https://github.com/nutanix/libvfio-user.git diff --git a/MAINTAINERS b/MAINTAINERS index aa4df6c..99646e7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3350,6 +3350,13 @@ F: semihosting/ F: include/semihosting/ F: tests/tcg/multiarch/arm-compat-semi/ +libvfio-user Library +M: Thanos Makatos <thanos.maka...@nutanix.com> +M: John Levon <john.le...@nutanix.com> +T: https://github.com/nutanix/libvfio-user.git +S: Maintained +F: libvfio-user/* + Multi-process QEMU M: Elena Ufimtseva <elena.ufimts...@oracle.com> M: Jagannathan Raman <jag.ra...@oracle.com> diff --git a/hw/remote/meson.build b/hw/remote/meson.build index e6a5574..fb35fb8 100644 --- a/hw/remote/meson.build +++ b/hw/remote/meson.build @@ -7,6 +7,8 @@ remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('remote-obj.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy.c')) remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('iohub.c')) +remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: vfiouser) + specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('memory.c')) specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy-memory-listener.c')) diff --git a/libvfio-user b/libvfio-user new file mode 160000 index 0000000..2a0a929 --- /dev/null +++ b/libvfio-user @@ -0,0 +1 @@ +Subproject commit 2a0a92912d598de871ab47c034432c5fa6546dc4 -- 1.8.3.1