[libvirt] PATCH: 7/11: Build libtool convenience libraries of all drivers

Daniel Veillard veillard at redhat.com
Thu Oct 30 14:49:50 UTC 2008

On Thu, Oct 30, 2008 at 01:39:33PM +0000, Daniel P. Berrange wrote:
> A while ago we introduced a libvirt_test.so which is identical to
> libvirt.so, but without the linker whitelist of symbols. This did
> impose a little overhead in the build process - it meant we compiled
> all source files twice.
> A future patch will want to compile drivers into individual libraries
> to allow dlopening, and it occurred to me that if we built some more
> libtool convenience libraries we could avoid the double compilation.
> The trick is that libvirt.la must not have any source files listed
> against it. It must only be used to link together other convenience
> libraries. So, I define a while set of libraries
>  - libvirt_util.la - generic code not related to drivers or libvirt API
>  - libvirt_driver.la - the libvirt public API and driver support code
>  - libvirt_driver_XXXX.la - one for each of qemu, xen, test, remote,
>                             openvz, lxc, storage, network
> These are all convenience libraries, so libtool will just build a local
> non-installed, static .a archive.
> Now, the actual things we care about
>  - libvirt.la - links to all of these convenience .la libraries together
>                 and adds the libvirt_sym.version script to filter symbols
>  - libvirt_test.la - the same, but with the version script
>  - libvirt_lxc - links to libvirt_util.la and libvirt_driver_lxc.la
>  - virsh - links to libvirt.la
> So the end result is that each source file is only ever compiled once,
> and each library/program just links to the .a files is actually needs.

  In principle it's fine, it's equivalent, but it's a bit complex.
Maybe this description should go somewhere in the HACKING file too
i assume we can still compile with --disable-shared and everything will
just build and link fine, just that the .la will be replaced with
good old .a and the binaries will have them statically linked in.
  I we can just double check this, +1


Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/

More information about the libvir-list mailing list