Message ID | 4C2DCA61.2080501@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On 07/02/2010 06:15 AM, Prerna Saxena wrote: > Set up host kernel include paths specified by --kerneldir > > When host kernel headers are placed in non-standard paths, the > KVM_CFLAGS are presently invoked only for a few .c files > (kvm*.c,vhost*.c) and not for other files like machine.c, cpus.c > ..etc which also depend on linux/kvm.h I think that's a bug. What's the dependency of machine.c and cpus.c? Regards, Anthony Liguori > > Signed-off-by: Prerna Saxena <prerna@linux.vnet.ibm.com> > --- > Makefile.target | 7 +++++-- > 1 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/Makefile.target b/Makefile.target > index d58b201..b433112 100644 > --- a/Makefile.target > +++ b/Makefile.target > @@ -29,12 +29,15 @@ QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF) > endif > endif > > +# Set up host kernel include paths specified by --kerneldir > +ifdef CONFIG_KVM > +QEMU_CFLAGS+=$(KVM_CFLAGS) > +endif > + > PROGS=$(QEMU_PROG) > > LIBS+=-lm > > -kvm.o kvm-all.o vhost.o vhost_net.o: QEMU_CFLAGS+=$(KVM_CFLAGS) > - > config-target.h: config-target.h-timestamp > config-target.h-timestamp: config-target.mak >
On 07/07/2010 01:10 AM, Anthony Liguori wrote: > On 07/02/2010 06:15 AM, Prerna Saxena wrote: >> Set up host kernel include paths specified by --kerneldir >> >> When host kernel headers are placed in non-standard paths, the >> KVM_CFLAGS are presently invoked only for a few .c files >> (kvm*.c,vhost*.c) and not for other files like machine.c, cpus.c >> ..etc which also depend on linux/kvm.h > > I think that's a bug. What's the dependency of machine.c and cpus.c? > Both machine.d and cpus.d depend on qemu/kvm.h, which in turn needs linux/kvm.h I am running a custom-compiled kernel for which the headers are placed separately. I pass the kernel source directory to my configure script as follows : [usr@zephyr ~]$ configure --prefix=/home/bloat/qemu-git/qemu-bin --enable-kvm --target-list=i386-softmmu,x86_64-softmmu --enable-profiler --disable-docs --kerneldir=/home/bloat/kernels/linux-2.6.35-rc3 [usr@zephyr ~]$ make -j2 This is one of the errors I get : (similar ones are flagged for machine.o and cpus.o) CC i386-softmmu/arch_init.o In file included from /home/bloat/qemu-git/qemu/arch_init.c:38: /home/bloat/qemu-git/qemu/kvm.h:22:23: error: linux/kvm.h: No such file or directory make[1]: *** [arch_init.o] Error 1 This is because the location of kernel headers is not passed as a '-I' switch to gcc. IMO adding the KVM_CFLAGS to QEMU_CFLAGS would be required for such cases. Regards,
diff --git a/Makefile.target b/Makefile.target index d58b201..b433112 100644 --- a/Makefile.target +++ b/Makefile.target @@ -29,12 +29,15 @@ QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF) endif endif +# Set up host kernel include paths specified by --kerneldir +ifdef CONFIG_KVM +QEMU_CFLAGS+=$(KVM_CFLAGS) +endif + PROGS=$(QEMU_PROG) LIBS+=-lm -kvm.o kvm-all.o vhost.o vhost_net.o: QEMU_CFLAGS+=$(KVM_CFLAGS) - config-target.h: config-target.h-timestamp config-target.h-timestamp: config-target.mak
Set up host kernel include paths specified by --kerneldir When host kernel headers are placed in non-standard paths, the KVM_CFLAGS are presently invoked only for a few .c files (kvm*.c,vhost*.c) and not for other files like machine.c, cpus.c ..etc which also depend on linux/kvm.h Signed-off-by: Prerna Saxena <prerna@linux.vnet.ibm.com> --- Makefile.target | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)