[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] tools/configure: add options to pass EXTRA_CLFAGS



2012/3/15 Olaf Hering <olaf@xxxxxxxxx>:
> # HG changeset patch
> # User Olaf Hering <olaf@xxxxxxxxx>
> # Date 1331817547 -3600
> # Node ID 994ac398f4dc639ad0ca8aaabc4172ab72eb1358
> # Parent Â6dd1395c07cbc0f1408048f916bc6674dad19ef5
> tools/configure: add options to pass EXTRA_CLFAGS
>
> Currently qemu-xen gets build with CFLAGS only if CFLAGS was already in
> the environment during make invocation. If CFLAGS is in environment then
> make will append all of the various flags specified in xen Makefiles to
> this environment variable, which is then used in qemu configure. Since
> qemu-xen is not ready for compiler flags like -std=gnu99 compilation
> will fail. If CFLAGS is not in environment, then configure will use just
> "-O2 -g" because make does not export its own CFLAGS variable.
>
> From a distro perspective, its required to build libraries and binaries
> with certain global cflags. Up to the point when qemu-xen was imported
> it worked as expected by exporting CFLAGS before 'make tools'. Now
> qemu-upstream reuses these CFLAGS, but it cant deal with the result.
>
> This patch extends configure to recognize three environment variables
> which will be written to config/Tools.mk so they will be reused with
> each make invocation:
> ÂEXTRA_CFLAGS_XEN_TOOLS= specifies CFLAGS for the tools build.
> ÂEXTRA_CFLAGS_QEMU_TRADITIONAL= specifies CFLAGS for old qemu.
> ÂEXTRA_CFLAGS_QEMU_XEN= specifies CFLAGS for new qemu.
> The new feature can be used like this in a rpm xen.spec file:
>
> Â env \
> Â EXTRA_CFLAGS_XEN_TOOLS="${RPM_OPT_FLAGS}" \
> Â EXTRA_CFLAGS_QEMU_TRADITIONAL="${RPM_OPT_FLAGS}" \
> Â EXTRA_CFLAGS_QEMU_XEN="${RPM_OPT_FLAGS}" \
> Â ./configure \
> Â Â Â Â--libdir=%{_libdir} \
> Â Â Â Â--prefix=/usr
> Â make
>
> To make sure the EXTRA_CFLAGS appear first in the command line
> tools/Rules.mk must include config/Tools.mk before Config.mk.
>
> Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
>
> diff -r 6dd1395c07cb -r 994ac398f4dc config/Tools.mk.in
> --- a/config/Tools.mk.in
> +++ b/config/Tools.mk.in
> @@ -22,6 +22,10 @@ PREPEND_LIB Â Â Â Â := @PREPEND_LIB@
> ÂAPPEND_INCLUDES Â Â := @APPEND_INCLUDES@
> ÂAPPEND_LIB Â Â Â Â Â:= @APPEND_LIB@
>
> +CFLAGS Â Â Â Â Â Â Â Â Â Â Â Â+= @EXTRA_CFLAGS_XEN_TOOLS@
> +EXTRA_CFLAGS_QEMU_TRADITIONAL += @EXTRA_CFLAGS_QEMU_TRADITIONAL@
> +EXTRA_CFLAGS_QEMU_XEN Â Â Â Â += @EXTRA_CFLAGS_QEMU_XEN@
> +
> Â# Download GIT repositories via HTTP or GIT's own protocol?
> Â# GIT's protocol is faster and more robust, when it works at all (firewalls
> Â# may block it). We make it the default, but if your GIT repository downloads
> diff -r 6dd1395c07cb -r 994ac398f4dc tools/Makefile
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -122,6 +122,7 @@ subdir-all-qemu-xen-traditional-dir subd
> Â Â Â Âset -e; \
> Â Â Â Â Â Â Â Â$(buildmakevars2shellvars); \
> Â Â Â Â Â Â Â Âcd qemu-xen-traditional-dir; \
> + Â Â Â Â Â Â Â env CFLAGS="$(EXTRA_CFLAGS_QEMU_TRADITIONAL)" \
> Â Â Â Â Â Â Â Â$(QEMU_ROOT)/xen-setup $(IOEMU_CONFIGURE_CROSS); \
> Â Â Â Â Â Â Â Â$(MAKE) install
>
> @@ -146,6 +147,7 @@ subdir-all-qemu-xen-dir subdir-install-q
> Â Â Â Â Â Â Â Âsource=.; \
> Â Â Â Âfi; \
> Â Â Â Âcd qemu-xen-dir; \
> + Â Â Â env CFLAGS="$(EXTRA_CFLAGS_QEMU_XEN)" \
> Â Â Â Â$$source/configure --enable-xen --target-list=i386-softmmu \
> Â Â Â Â Â Â Â Â--source-path=$$source \
> Â Â Â Â Â Â Â Â--extra-cflags="-I$(XEN_ROOT)/tools/include \
> diff -r 6dd1395c07cb -r 994ac398f4dc tools/Rules.mk
> --- a/tools/Rules.mk
> +++ b/tools/Rules.mk
> @@ -3,8 +3,8 @@
> Â# `all' is the default target
> Âall:
>
> +include $(XEN_ROOT)/config/Tools.mk
> Âinclude $(XEN_ROOT)/Config.mk
> -include $(XEN_ROOT)/config/Tools.mk

Do we really need to change the order? User-defined flags should
appear after necessary tools build flags, if not a user might use some
flags that break the build without knowing.

> Âexport _INSTALL := $(INSTALL)
> ÂINSTALL = $(XEN_ROOT)/tools/cross-install
> diff -r 6dd1395c07cb -r 994ac398f4dc tools/configure.ac
> --- a/tools/configure.ac
> +++ b/tools/configure.ac
> @@ -55,6 +55,12 @@ AC_ARG_VAR([APPEND_INCLUDES],
> Â Â [List of include folders to append to CFLAGS (without -I)])
> ÂAC_ARG_VAR([APPEND_LIB],
> Â Â [List of library folders to append to LDFLAGS (without -L)])
> +AC_ARG_VAR([EXTRA_CFLAGS_XEN_TOOLS],
> + Â Â[Extra CFLAGS to build tools])
> +AC_ARG_VAR([EXTRA_CFLAGS_QEMU_TRADITIONAL],
> + Â Â[Extra CFLAGS to build qemu-traditional])
> +AC_ARG_VAR([EXTRA_CFLAGS_QEMU_XEN],
> + Â Â[Extra CFLAGS to build qemu-xen])

The change looks good to me in terms of configure modifications, but
I'm not sure of the names, shouldn't qemu-traditional be
qemu-xen(-traditional) and qemu-xen be qemu-(xen-)upstream?

> ÂAX_SET_FLAGS
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.