[libvirt] PATCH: 2/4: Restructure sources files in Makefile.am
Daniel Veillard
veillard at redhat.com
Wed Aug 13 15:22:58 UTC 2008
On Wed, Aug 13, 2008 at 03:17:09PM +0100, Daniel P. Berrange wrote:
> Over time we've added lots of general purpose source code files, as wel
> as making more of the existing ones conditionally compiled. We've done
> this by adding lots of #ifdef WITH_XXXX macros across the various
> source files. This is becoming rather a minefield with soo many conditionals
> sprinkled throughout the code.
>
> With all the recent re-factoring we now have very good separation between
> generic code, and driver specific code - each typically being in separate
> files. Thus it is now practical to remove the vast majority of the macros
> and just do the conditional compilation via the Makefile.am.
>
> The patch is not entirely clear - the resulting Makefile.am is much easier
> to review. It is structured in two section, first we declare variables
> for groups of source code files - eg generic helper files, generic domain
> XML files, generic network XML files, and then per-driver files.
In general this sounds good,
I don't like automake conditionals too much, but in that case yes, that's
logical.
[...]
> In removing the unneeded WITH_XXX macros from header/sources I noticed that
> a bunch of our header files have
>
> #ifdef __cplusplus
> extern "C" {
> #endif
>
> With is irrelevant since we're not using C++ anywhere - indeed some of the
> files even had the corresponding '}' missing, so clearly this is never
> actually used during compilation. Removing this fixes bogus indentation
> in some of the header files
Well it should be kept in the public headers, but right internally
it's just remains of cut and paste.
> I've tested this all by running configure --without-XXX for each hypervisor
> driver in turn, and it seemed to work in all cases. The only thing I didn't
> test is MinGW. I think I really need to add a MinGW based build to the
> nightly build system, so we can sanity check that nightly
> --- a/configure.in Tue Aug 12 22:21:25 2008 +0100
> +++ b/configure.in Tue Aug 12 22:21:47 2008 +0100
> @@ -241,27 +241,35 @@
> LIBVIRT_FEATURES=
> WITH_XEN=0
>
> -if test "$with_openvz" = "yes" ; then
> +if test "$with_openvz" = "yes"; then
hum, unrelated :-)
> -if test "$with_qemu" = "yes" ; then
> +if test "$with_qemu" = "yes" -o "$with_lxc" = "yes" ; then
> AC_CHECK_HEADERS([linux/param.h linux/sockios.h linux/if_bridge.h linux/if_tun.h],,
> AC_MSG_ERROR([You must install kernel-headers in order to compile libvirt]))
> fi
oh, good point !
[...]
> +if WITH_REMOTE
> +libvirt_la_SOURCES += $(REMOTE_DRIVER_SOURCES)
> +endif
I'm wondering about += portability, but I think this is widely used
and really clarifies the resulting Makefile.am
the other solution
libvirt_la_SOURCES =
....
if WITH_REMOTE
$(REMOTE_DRIVER_SOURCES)
endif
if WITH_XEN
....
might be a bit more portable but messes the structure,
No other comment, everything else is small bugs, the cleanup of headers
and reindent,
Fine by me, +1
Daniel
--
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard | virtualization library http://libvirt.org/
veillard at redhat.com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
More information about the libvir-list
mailing list