mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
Commit 073e1575 tried to set things up so that 1) generated files to be shipped in the tarball always live in srcdir, and 2) we have no files in SOURCES that depend on any other files with a literal $(srcdir) in the name, because that situation can cause confusing results for the make expansion of $@ depending on whether the file is found locally or via VPATH. But all my testing for that patch was done incrementally, where all the protocol.[ch] files had already been generated prior to the patch and were up-to-date in the srcdir, and thus I missed one case where $@ causes grief in a VPATH build from a fresh checkout: We have a pattern rule for generating remote_protocol.[ch], and what's more, the rule for protocol.c depends on protocol.h AND on the protocol.x file. The pattern for protocol.c is only satisfied via the VPATH lookup for protocol.x, and if protocol.h doesn't yet exist, the VPATH rule kicks in and we end up with a dependency on a file with $(srcdir) in the name. Based on make's rules for $@, this resulted in make building remote_protocol.h into srcdir (where we want it), then remote_protocol.c into builddir (oops, not so good for the tarball), and also causes the build to fail (the compiler can't find the .h if it lives in a different directory than the .c): CC remote/libvirt_driver_remote_la-remote_protocol.lo remote/remote_protocol.c:7:29: fatal error: remote_protocol.h: No such file or directory #include "remote_protocol.h" ^ compilation terminated. As before, the fix is to hard-code the output file to go into srcdir in spite of $@; but since this is in a pattern rule, we are forced to use $@ in the recipe, so the patch is a bit trickier than what was done in commit 073e1575. * src/Makefile.am (%protocol.c, %protocol.h): Force output to srcdir. Signed-off-by: Eric Blake <eblake@redhat.com>
…
…
LibVirt : simple API for virtualization Libvirt is a C toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes). It is free software available under the GNU Lesser General Public License. Virtualization of the Linux Operating System means the ability to run multiple instances of Operating Systems concurrently on a single hardware system where the basic resources are driven by a Linux instance. The library aim at providing long term stable C API initially for the Xen paravirtualization but should be able to integrate other virtualization mechanisms if needed. Daniel Veillard <veillard@redhat.com>
Description
Libvirt provides a portable, long term stable C API for managing the
virtualization technologies provided by many operating systems. It
includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware
vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER
Hypervisor.
Languages
C
94.8%
Python
2%
Meson
0.9%
Shell
0.8%
Dockerfile
0.6%
Other
0.8%