Makefile: Fix compilation for non-standard host kernel path
PATCH 1/1 Makefile: Fix compilation for non-standard host kernel path
Set up host kernel include paths specified by --kerneldir
When host kernel headers are placed in non-standard paths, theKVM_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
--- Makefile.target | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
Makefile.target +5 -2
@@ -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
Signature · 10 lines
1.6.2.5 -- Prerna Saxena Linux Technology Centre, IBM Systems and Technology Lab, Bangalore, India
Quoted 5 lines · Prerna Saxena
Set up host kernel include paths specified by --kerneldir
When host kernel headers are placed in non-standard paths, the
KVM_CFLAGSare presently invoked only for a few .c files (kvm*.c,vhost*.c) and not for other files likemachine.c,cpus.c
..etc which also depend onlinux/kvm.h
I think that's a bug. What's the dependency of machine.c and cpus.c?
Regards,
Anthony Liguori
Quoted 28 lines
Signed-off-by Prerna Saxena <[email protected]>--- Makefile.target | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)Makefile.target +5
-2@@ -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
Quoted 10 lines · Anthony Liguori
Quoted 6 lines · Prerna Saxena
Set up host kernel include paths specified by --kerneldir
When host kernel headers are placed in non-standard paths, the
KVM_CFLAGSare presently invoked only for a few .c files (kvm*.c,vhost*.c) and not for other files likemachine.c,cpus.c..etc which also depend onlinux/kvm.hI think that's a bug. What's the dependency of
machine.candcpus.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,
Signature · 5 lines
Prerna Saxena Linux Technology Centre, IBM Systems and Technology Lab, Bangalore, India