From: Hollis B. <ho...@us...> - 2008-01-07 21:14:17
|
I always build my kernels with the O= option, since it allows me to build multiple architectures from the same sources. However, it looks like the kvm-userspace configure script can't handle this. It says --kerneldir should be the kernel *build* directory, but when I do that I get libkvm.c:21:23: warning: linux/kvm.h: No such file or directory because the build directory does not contain an include/linux symlink. When I specify the kernel *source* directory for --kerneldir, I get /home/hollisb/source/kvmppc.hg/include/linux/kvm.h:12:21: warning: asm/kvm.h: No such file or directory because the source directory doesn't contain an include/asm symlink. How can this work? -- Hollis Blanchard IBM Linux Technology Center |
From: Hollis B. <ho...@us...> - 2008-01-07 21:29:47
|
Create an "asm" symlink from libkvm into the kernel source directory. This allows one to use kernel trees built with the O= option. Signed-off-by: Hollis Blanchard <ho...@us...> --- This is all I can come up with... it should work by accident for user/ and qemu/ directories too, since they use "-I ../libkvm". diff --git a/configure b/configure --- a/configure +++ b/configure @@ -130,6 +130,8 @@ fi --arch="$arch" \ ${cross_prefix:+"--cross-prefix=$cross_prefix"}) +(cd libkvm; ln -sf "$kerneldir/include/asm-$arch" asm) + #configure qemu (cd qemu; ./configure --target-list=$target_exec \ --disable-kqemu \ diff --git a/libkvm/Makefile b/libkvm/Makefile --- a/libkvm/Makefile +++ b/libkvm/Makefile @@ -10,7 +10,7 @@ CFLAGS += $(autodepend-flags) -g -fomit- CFLAGS += $(autodepend-flags) -g -fomit-frame-pointer -Wall CFLAGS += $(call cc-option, -fno-stack-protector, "") CFLAGS += $(call cc-option, -fno-stack-protector-all, "") -CFLAGS += -I $(KERNELDIR)/include +CFLAGS += -I $(KERNELDIR)/include -I . LDFLAGS += $(CFLAGS) @@ -35,4 +35,4 @@ install: -include .*.d clean: - $(RM) *.o *.a .*.d + $(RM) *.o *.a .*.d asm -- Hollis Blanchard IBM Linux Technology Center |
From: Avi K. <av...@qu...> - 2008-01-08 13:50:24
|
Hollis Blanchard wrote: > Create an "asm" symlink from libkvm into the kernel source directory. > This allows one to use kernel trees built with the O= option. > > Applied, thanks. -- error compiling committee.c: too many arguments to function |
From: Jerone Y. <jy...@us...> - 2008-01-07 21:50:36
|
Whoops should have replied to this one. So this does not solve the issue. As it point it includes <KERNELDIR>/includes .. just you have to compile the kernel directory so that "include/asm" symlink in the kernel directory is made. This creates a symlink to the symlink and that symlnk which is already in include path -I $(KERNELDIR)/include What would probably be better is to add a check to see if <KERNEL_DIR>/include/asm is created. If it's not give the user an error to compile there kernel source. On Mon, 2008-01-07 at 15:29 -0600, Hollis Blanchard wrote: > Create an "asm" symlink from libkvm into the kernel source directory. > This allows one to use kernel trees built with the O= option. > > Signed-off-by: Hollis Blanchard <ho...@us...> > > --- > This is all I can come up with... it should work by accident for user/ > and qemu/ directories too, since they use "-I ../libkvm". > > diff --git a/configure b/configure > --- a/configure > +++ b/configure > @@ -130,6 +130,8 @@ fi > --arch="$arch" \ > ${cross_prefix:+"--cross-prefix=$cross_prefix"}) > > +(cd libkvm; ln -sf "$kerneldir/include/asm-$arch" asm) > + > #configure qemu > (cd qemu; ./configure --target-list=$target_exec \ > --disable-kqemu \ > diff --git a/libkvm/Makefile b/libkvm/Makefile > --- a/libkvm/Makefile > +++ b/libkvm/Makefile > @@ -10,7 +10,7 @@ CFLAGS += $(autodepend-flags) -g -fomit- > CFLAGS += $(autodepend-flags) -g -fomit-frame-pointer -Wall > CFLAGS += $(call cc-option, -fno-stack-protector, "") > CFLAGS += $(call cc-option, -fno-stack-protector-all, "") > -CFLAGS += -I $(KERNELDIR)/include > +CFLAGS += -I $(KERNELDIR)/include -I . > > LDFLAGS += $(CFLAGS) > > @@ -35,4 +35,4 @@ install: > -include .*.d > > clean: > - $(RM) *.o *.a .*.d > + $(RM) *.o *.a .*.d asm > |
From: Hollis B. <ho...@us...> - 2008-01-07 22:10:03
|
I'm having a hard time parsing this. Basically this patch is duplicating what Kbuild does: it is creating the appropriate asm symlink. The original problem was that kvm-userspace didn't have an asm symlink, so the patch does fix it. -- Hollis Blanchard IBM Linux Technology Center On Mon, 2008-01-07 at 15:50 -0600, Jerone Young wrote: > Whoops should have replied to this one. > > So this does not solve the issue. As it point it includes > <KERNELDIR>/includes .. just you have to compile the kernel directory so > that "include/asm" symlink in the kernel directory is made. I have already done this. The asm symlink is located at linux/objpowerpcsequoia/include/asm . > This creates a symlink to the symlink and that symlnk which is already > in include path -I $(KERNELDIR)/include It does not create a symlink to a symlink: the link is asm -> linux/include/asm-foo . > What would probably be better is to add a check to see if > <KERNEL_DIR>/include/asm is created. If it's not give the user an error > to compile there kernel source. The issue is not that I have not compiled the kernel tree. I HAVE compiled it, but I used the O= option when doing so. > On Mon, 2008-01-07 at 15:29 -0600, Hollis Blanchard wrote: > > Create an "asm" symlink from libkvm into the kernel source directory. > > This allows one to use kernel trees built with the O= option. > > > > Signed-off-by: Hollis Blanchard <ho...@us...> > > > > --- > > This is all I can come up with... it should work by accident for user/ > > and qemu/ directories too, since they use "-I ../libkvm". > > > > diff --git a/configure b/configure > > --- a/configure > > +++ b/configure > > @@ -130,6 +130,8 @@ fi > > --arch="$arch" \ > > ${cross_prefix:+"--cross-prefix=$cross_prefix"}) > > > > +(cd libkvm; ln -sf "$kerneldir/include/asm-$arch" asm) > > + > > #configure qemu > > (cd qemu; ./configure --target-list=$target_exec \ > > --disable-kqemu \ > > diff --git a/libkvm/Makefile b/libkvm/Makefile > > --- a/libkvm/Makefile > > +++ b/libkvm/Makefile > > @@ -10,7 +10,7 @@ CFLAGS += $(autodepend-flags) -g -fomit- > > CFLAGS += $(autodepend-flags) -g -fomit-frame-pointer -Wall > > CFLAGS += $(call cc-option, -fno-stack-protector, "") > > CFLAGS += $(call cc-option, -fno-stack-protector-all, "") > > -CFLAGS += -I $(KERNELDIR)/include > > +CFLAGS += -I $(KERNELDIR)/include -I . > > > > LDFLAGS += $(CFLAGS) > > > > @@ -35,4 +35,4 @@ install: > > -include .*.d > > > > clean: > > - $(RM) *.o *.a .*.d > > + $(RM) *.o *.a .*.d asm > > |
From: Jerone Y. <jy...@us...> - 2008-01-07 22:52:25
|
Sorry for the cryptic language ;-o No your right. I wasn't thinking about that. On Mon, 2008-01-07 at 16:07 -0600, Hollis Blanchard wrote: > I'm having a hard time parsing this. > > Basically this patch is duplicating what Kbuild does: it is creating the > appropriate asm symlink. The original problem was that kvm-userspace > didn't have an asm symlink, so the patch does fix it. > |
From: Jerone Y. <jy...@us...> - 2008-01-07 22:29:50
|
oh your problem is you must first build your kernel that you are pointing too. Or you can cheat and point "include/asm" where you need to point it. That solves the issue. It's all that userspace including kernel headers :-) On Mon, 2008-01-07 at 15:12 -0600, Hollis Blanchard wrote: > I always build my kernels with the O= option, since it allows me to > build multiple architectures from the same sources. > > However, it looks like the kvm-userspace configure script can't handle > this. It says --kerneldir should be the kernel *build* directory, but > when I do that I get > libkvm.c:21:23: warning: linux/kvm.h: No such file or directory > because the build directory does not contain an include/linux symlink. > > When I specify the kernel *source* directory for --kerneldir, I get > /home/hollisb/source/kvmppc.hg/include/linux/kvm.h:12:21: warning: asm/kvm.h: No such file or directory > because the source directory doesn't contain an include/asm symlink. > > How can this work? > |