All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] build: introduce target CONFIG_ variables and use them for kvm
@ 2012-06-20 14:44 Anthony Liguori
  2012-06-20 14:51 ` Andreas Färber
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Anthony Liguori @ 2012-06-20 14:44 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori, Andreas Faerber, Peter Maydell

This avoids the problem associated with having multiple target specific files
in a single directory with the current build system.

We can eventually get rid of the hw/$BASE_ARCH/Makefiles.obj files too

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
I tried to add a nice comment to the config-target.mak that described how to
use these macros but that upset the header generation script.

So I left this out of this patch.
---
 configure             |   30 ++++++++++++++++++++----------
 hw/Makefile.objs      |    2 ++
 hw/i386/Makefile.objs |    1 -
 hw/kvm/Makefile.objs  |    2 +-
 4 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/configure b/configure
index b68c0ca..f07c464 100755
--- a/configure
+++ b/configure
@@ -3684,19 +3684,29 @@ case "$target_arch2" in
   ;;
 esac
 
-echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak
-echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak
-echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak
-echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak
-echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
-target_arch_name="`echo $TARGET_ARCH | LC_ALL=C tr '[a-z]' '[A-Z]'`"
-echo "TARGET_$target_arch_name=y" >> $config_target_mak
-echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
-echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
+upper() {
+    echo "$@" | LC_ALL=C tr '[a-z]' '[A-Z]'
+}
+
+target_arch_name="`upper $TARGET_ARCH`"
 if [ "$TARGET_ABI_DIR" = "" ]; then
   TARGET_ABI_DIR=$TARGET_ARCH
 fi
-echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
+
+cat <<EOF >> $config_target_mak
+TARGET_SHORT_ALIGNMENT=$target_short_alignment
+TARGET_INT_ALIGNMENT=$target_int_alignment
+TARGET_LONG_ALIGNMENT=$target_long_alignment
+TARGET_LLONG_ALIGNMENT=$target_llong_alignment
+TARGET_ARCH=$TARGET_ARCH
+TARGET_$target_arch_name=y
+TARGET_ARCH2=$target_arch2
+TARGET_BASE_ARCH=$TARGET_BASE_ARCH
+TARGET_ABI_DIR=$TARGET_ABI_DIR
+CONFIG_`upper $TARGET_BASE_ARCH`=y
+CONFIG_`upper $TARGET_ARCH`=y
+EOF
+
 case "$target_arch2" in
   i386|x86_64)
     if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
diff --git a/hw/Makefile.objs b/hw/Makefile.objs
index 3d77259..cee0e06 100644
--- a/hw/Makefile.objs
+++ b/hw/Makefile.objs
@@ -166,6 +166,8 @@ obj-$(CONFIG_VGA) += vga.o
 obj-$(CONFIG_SOFTMMU) += device-hotplug.o
 obj-$(CONFIG_XEN) += xen_domainbuild.o xen_machine_pv.o
 
+obj-$(CONFIG_KVM) += kvm/
+
 # Inter-VM PCI shared memory
 ifeq ($(CONFIG_PCI), y)
 obj-$(CONFIG_KVM) += ivshmem.o
diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
index eb171b7..14738e5 100644
--- a/hw/i386/Makefile.objs
+++ b/hw/i386/Makefile.objs
@@ -7,7 +7,6 @@ obj-y += debugcon.o multiboot.o
 obj-y += pc_piix.o
 obj-y += pc_sysfw.o
 obj-$(CONFIG_XEN) += xen_platform.o xen_apic.o
-obj-y += kvm/
 obj-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
 
 obj-y := $(addprefix ../,$(obj-y))
diff --git a/hw/kvm/Makefile.objs b/hw/kvm/Makefile.objs
index 226497a..cf734ba 100644
--- a/hw/kvm/Makefile.objs
+++ b/hw/kvm/Makefile.objs
@@ -1 +1 @@
-obj-$(CONFIG_KVM) += clock.o apic.o i8259.o ioapic.o i8254.o
+obj-$(CONFIG_I386) += clock.o apic.o i8259.o ioapic.o i8254.o
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH] build: introduce target CONFIG_ variables and use them for kvm
@ 2012-06-21 12:31 Paolo Bonzini
  2012-06-21 13:06 ` Anthony Liguori
  2012-06-23  7:53 ` Paolo Bonzini
  0 siblings, 2 replies; 17+ messages in thread
From: Paolo Bonzini @ 2012-06-21 12:31 UTC (permalink / raw)
  To: qemu-devel, Anthony Liguori

(Sorry for breaking the thread).

> This avoids the problem associated with having multiple target specific files
> in a single directory with the current build system.

What is exactly the problem?

I saw something about dependencies, I think that should be solved with
something like

$(foreach var, $(nested-vars), $(eval -include $(patsubst %.o, %.d, $($(var)))))

at the very end of unnest-vars.

> We can eventually get rid of the hw/$BASE_ARCH/Makefiles.obj files too

The goal should be to limit hw/$BASE_ARCH/Makefile.objs to hardware
that is CPU-dependent and to board descriptions.

I _think_ (but I don't have a checkout at hand) that hardware like
virtio can use obj-$(CONFIG_VIRTIO) while staying in hw/Makefile.objs,
but it should really be the only case of target-dependent file in hw/.
 Everything else in hw/$BASE_ARCH should move to target-$BASE_ARCH/hw.
 The steps should be as follows:

1) Identify more groups of hardware that can be moved from
hw/$BASE_ARCH to libhw. Move them.

2) At this point, hw/$BASE_ARCH/Makefile.objs should only refer to a)
boards b) hardware that is CPU dependent c) KVM device models with
host dependencies. Move the sources to hw/$BASE_ARCH, possibly
hw/$BASE_ARCH/kvm, and remove the addprefix invocations from
hw/$BASE_ARCH/Makefile.objs.

3) Move hw/$BASE_ARCH to target-$BASE_ARCH/hw.

I think CONFIG_$BASE_ARCH is a bad idea because it violates the
modularity that Juan introduced together with the config-devices.mak
files.

Paolo

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2012-07-31 17:28 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-20 14:44 [Qemu-devel] [PATCH] build: introduce target CONFIG_ variables and use them for kvm Anthony Liguori
2012-06-20 14:51 ` Andreas Färber
2012-06-20 15:01   ` Peter Maydell
2012-06-20 15:04     ` Andreas Färber
2012-06-20 15:07       ` Peter Maydell
2012-06-20 15:23         ` Andreas Färber
2012-06-20 15:20   ` Anthony Liguori
2012-06-20 15:09 ` Peter Maydell
     [not found] ` <CAFEAcA-MgQuEfca7bPtUrN-wwN0KVCvXWpcs8Y4tdWL+CbcGFw@mail.gmail.com>
     [not found]   ` <4FEDA01B.8010502@suse.de>
2012-07-01 14:10     ` Paolo Bonzini
     [not found]   ` <4FEDB5F0.1070407@codemonkey.ws>
2012-07-23 14:21     ` Peter Maydell
2012-07-31 17:28       ` Peter Maydell
2012-06-21 12:31 Paolo Bonzini
2012-06-21 13:06 ` Anthony Liguori
2012-06-23  7:53 ` Paolo Bonzini
2012-06-23 10:30   ` Peter Maydell
2012-07-01 13:37     ` Paolo Bonzini
2012-07-01 13:49       ` Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.