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

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


  • To: xen-devel@xxxxxxxxxxxxxxxxxxx
  • From: Olaf Hering <olaf@xxxxxxxxx>
  • Date: Thu, 15 Mar 2012 14:19:46 +0100
  • Delivery-date: Thu, 15 Mar 2012 13:20:26 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>

# 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
 
 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])
 
 AX_SET_FLAGS
 

_______________________________________________
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®.