public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* kernel module won't compile when using seperate build dir
@ 2008-05-07 10:40 James Pike
  2008-05-07 11:25 ` Fwd: " James Pike
  2008-05-07 16:43 ` David Mair
  0 siblings, 2 replies; 5+ messages in thread
From: James Pike @ 2008-05-07 10:40 UTC (permalink / raw)
  To: kvm-devel


[-- Attachment #1.1: Type: text/plain, Size: 627 bytes --]

Hi,

I compile my kernel with make O=/home/james/compile/linux-2.6.25.1

kvm detects this as the kernel directory. However when building in the
"kernel" directory of the project it fails (it tries to include
linux/compiler.h which is only in /usr/src/linux/..).

This used to work but started breaking in kvm-61 onwards. I want to use kvm
61 but I don't want to dirty up my kernel source tree if I can help it.

I tried appending the source directory to the include path with -I but this
lead to another missing include (asm/types.h), then I added /usr/include to
the path as well and .. well it just got worse.

Thanks, James

[-- Attachment #1.2: Type: text/html, Size: 677 bytes --]

[-- Attachment #2: Type: text/plain, Size: 320 bytes --]

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

[-- Attachment #3: Type: text/plain, Size: 158 bytes --]

_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

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

* Fwd: kernel module won't compile when using seperate build dir
  2008-05-07 10:40 kernel module won't compile when using seperate build dir James Pike
@ 2008-05-07 11:25 ` James Pike
  2008-05-07 11:49   ` James Pike
  2008-05-07 16:43 ` David Mair
  1 sibling, 1 reply; 5+ messages in thread
From: James Pike @ 2008-05-07 11:25 UTC (permalink / raw)
  To: kvm-devel


[-- Attachment #1.1: Type: text/plain, Size: 1041 bytes --]

Hi,

Here's a fix for the problem described below.. this fixes compilation when
the kernel build directory != kernel source directory.

It's very simple, please add it to the tree,

Thanks, James

---------- Forwarded message ----------
From: James Pike <jpike@blaggart.com>
Date: Wed, May 7, 2008 at 6:40 PM
Subject: kernel module won't compile when using seperate build dir
To: kvm-devel@lists.sourceforge.net


Hi,

I compile my kernel with make O=/home/james/compile/linux-2.6.25.1

kvm detects this as the kernel directory. However when building in the
"kernel" directory of the project it fails (it tries to include
linux/compiler.h which is only in /usr/src/linux/..).

This used to work but started breaking in kvm-61 onwards. I want to use kvm
61 but I don't want to dirty up my kernel source tree if I can help it.

I tried appending the source directory to the include path with -I but this
lead to another missing include (asm/types.h), then I added /usr/include to
the path as well and .. well it just got worse.

Thanks, James

[-- Attachment #1.2: Type: text/html, Size: 1319 bytes --]

[-- Attachment #2: kvm-68-build-dir.patch --]
[-- Type: application/octet-stream, Size: 1329 bytes --]

diff -urN kvm/configure kvm.new/configure
--- kvm/configure	2008-05-02 19:20:13.000000000 +0800
+++ kvm.new/configure	2008-05-07 19:15:05.000000000 +0800
@@ -1,7 +1,8 @@
 #!/bin/bash
 
 prefix=/usr/local
-kerneldir=/lib/modules/$(uname -r)/build
+kerneldir=$(readlink -f /lib/modules/$(uname -r)/build)
+kernelsrcdir=$(readlink -f /lib/modules/$(uname -r)/source)
 cc=gcc
 ld=ld
 objcopy=objcopy
@@ -129,6 +130,7 @@
 ARCH=$arch
 PREFIX=$prefix
 KERNELDIR=$kerneldir
+KERNELSRCDIR=$kernelsrcdir
 LIBKVM_KERNELDIR=$libkvm_kerneldir
 WANT_MODULE=$want_module
 CROSS_COMPILE=$cross_prefix
diff -urN kvm/kernel/Makefile kvm.new/kernel/Makefile
--- kvm/kernel/Makefile	2008-05-02 19:20:13.000000000 +0800
+++ kvm.new/kernel/Makefile	2008-05-07 19:15:16.000000000 +0800
@@ -14,6 +14,12 @@
 
 LINUX = ../linux-2.6
 
+ifeq ($(KERNELDIR),$(KERNELSRCDIR))
+LINUXINC := 
+else
+LINUXINC := -Iinclude2 -I$(KERNELSRCDIR)/include
+endif
+
 version = $(shell cd $(LINUX); git describe)
 
 _hack = mv $1 $1.orig && \
@@ -33,7 +39,7 @@
 all::
 #	include header priority 1) $LINUX 2) $KERNELDIR 3) include-compat
 	$(MAKE) -C $(KERNELDIR) M=`pwd` \
-		LINUXINCLUDE="-I`pwd`/include -Iinclude -I`pwd`/include-compat \
+		LINUXINCLUDE="-I`pwd`/include -Iinclude $(LINUXINC) -I`pwd`/include-compat \
 		-include include/linux/autoconf.h" \
 		"$$@"
 

[-- Attachment #3: Type: text/plain, Size: 320 bytes --]

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

[-- Attachment #4: Type: text/plain, Size: 158 bytes --]

_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

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

* Fwd: kernel module won't compile when using seperate build dir
  2008-05-07 11:25 ` Fwd: " James Pike
@ 2008-05-07 11:49   ` James Pike
  2008-05-11 14:40     ` Avi Kivity
  0 siblings, 1 reply; 5+ messages in thread
From: James Pike @ 2008-05-07 11:49 UTC (permalink / raw)
  To: kvm-devel


[-- Attachment #1.1: Type: text/plain, Size: 1309 bytes --]

Sorry that doesn't work.

This does.

James

---------- Forwarded message ----------
From: James Pike <jpike@blaggart.com>
Date: Wed, May 7, 2008 at 7:25 PM
Subject: Fwd: kernel module won't compile when using seperate build dir
To: kvm-devel@lists.sourceforge.net


Hi,

Here's a fix for the problem described below.. this fixes compilation when
the kernel build directory != kernel source directory.

It's very simple, please add it to the tree,

Thanks, James


---------- Forwarded message ----------
From: James Pike <jpike@blaggart.com>
Date: Wed, May 7, 2008 at 6:40 PM
Subject: kernel module won't compile when using seperate build dir
To: kvm-devel@lists.sourceforge.net


Hi,

I compile my kernel with make O=/home/james/compile/linux-2.6.25.1

kvm detects this as the kernel directory. However when building in the
"kernel" directory of the project it fails (it tries to include
linux/compiler.h which is only in /usr/src/linux/..).

This used to work but started breaking in kvm-61 onwards. I want to use kvm
61 but I don't want to dirty up my kernel source tree if I can help it.

I tried appending the source directory to the include path with -I but this
lead to another missing include (asm/types.h), then I added /usr/include to
the path as well and .. well it just got worse.

Thanks, James

[-- Attachment #1.2: Type: text/html, Size: 1886 bytes --]

[-- Attachment #2: kvm-68-build-dir.patch --]
[-- Type: application/octet-stream, Size: 1268 bytes --]

diff -urN kvm/configure kvm.new/configure
--- kvm/configure	2008-05-02 19:20:13.000000000 +0800
+++ kvm.new/configure	2008-05-07 19:34:28.000000000 +0800
@@ -2,6 +2,7 @@
 
 prefix=/usr/local
 kerneldir=/lib/modules/$(uname -r)/build
+kernelsrcdir=/lib/modules/$(uname -r)/source
 cc=gcc
 ld=ld
 objcopy=objcopy
@@ -129,6 +130,7 @@
 ARCH=$arch
 PREFIX=$prefix
 KERNELDIR=$kerneldir
+KERNELSRCDIR=$kernelsrcdir
 LIBKVM_KERNELDIR=$libkvm_kerneldir
 WANT_MODULE=$want_module
 CROSS_COMPILE=$cross_prefix
diff -urN kvm/kernel/Makefile kvm.new/kernel/Makefile
--- kvm/kernel/Makefile	2008-05-02 19:20:13.000000000 +0800
+++ kvm.new/kernel/Makefile	2008-05-07 19:37:47.000000000 +0800
@@ -14,6 +14,12 @@
 
 LINUX = ../linux-2.6
 
+ifeq ($(realpath $(KERNELDIR)),$(realpath $(KERNELSRCDIR)))
+LINUXINC := 
+else
+LINUXINC := -Iinclude2 -I$(KERNELSRCDIR)/include
+endif
+
 version = $(shell cd $(LINUX); git describe)
 
 _hack = mv $1 $1.orig && \
@@ -33,7 +39,7 @@
 all::
 #	include header priority 1) $LINUX 2) $KERNELDIR 3) include-compat
 	$(MAKE) -C $(KERNELDIR) M=`pwd` \
-		LINUXINCLUDE="-I`pwd`/include -Iinclude -I`pwd`/include-compat \
+		LINUXINCLUDE="-I`pwd`/include -Iinclude $(LINUXINC) -I`pwd`/include-compat \
 		-include include/linux/autoconf.h" \
 		"$$@"
 

[-- Attachment #3: Type: text/plain, Size: 320 bytes --]

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

[-- Attachment #4: Type: text/plain, Size: 158 bytes --]

_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

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

* Re: kernel module won't compile when using seperate build dir
  2008-05-07 10:40 kernel module won't compile when using seperate build dir James Pike
  2008-05-07 11:25 ` Fwd: " James Pike
@ 2008-05-07 16:43 ` David Mair
  1 sibling, 0 replies; 5+ messages in thread
From: David Mair @ 2008-05-07 16:43 UTC (permalink / raw)
  To: kvm-devel

James Pike wrote:
> Hi,
> 
> I compile my kernel with make O=/home/james/compile/linux-2.6.25.1
> 
> kvm detects this as the kernel directory. However when building in the
> "kernel" directory of the project it fails (it tries to include
> linux/compiler.h which is only in /usr/src/linux/..).
> 
> This used to work but started breaking in kvm-61 onwards. I want to use kvm
> 61 but I don't want to dirty up my kernel source tree if I can help it.
> 
> I tried appending the source directory to the include path with -I but this
> lead to another missing include (asm/types.h), then I added /usr/include to
> the path as well and .. well it just got worse.

James,

I have the same problem with recent kvm project kernel/Makefile. My kernel 
source is in /usr/src/linux. I hand patch kvm's kernel/Makefile every kvm 
project release as follows:

--- ../original/kernel/Makefile 2008-04-28 11:54:18.000000000 -0600
+++ Makefile    2008-04-28 11:59:36.000000000 -0600
@@ -9,7 +9,7 @@

  rpmrelease = devel

-LINUX = ../linux-2.6
+LINUX = /usr/src/linux

  version = $(shell cd $(LINUX); git describe)

@@ -27,7 +27,8 @@
  all::
  #      include header priority 1) $LINUX 2) $KERNELDIR 3) include-compat
         $(MAKE) -C $(KERNELDIR) M=`pwd` \
-               LINUXINCLUDE="-I`pwd`/include -Iinclude -I`pwd`/include-compat \
+               LINUXINCLUDE="-I`pwd`/include -Iinclude -I/usr/src/linux/include \
+               -I`pwd`/include-compat \
                 -include include/linux/autoconf.h" \
                 "$$@"

That's _not_ a portable patch at the very least due to the literal paths. It 
works for OpenSuSE 10.3 (a patched 2.6.17 kernel) and kvm at least up to kvm-68. 
Basically, the kernel source's include directory has to come earlier in the 
include path priority than kvm's kernel/include/compat. I can't remember if the 
change to the LINUX variable is actually necessary.

---
David.

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

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

* Re: Fwd: kernel module won't compile when using seperate build dir
  2008-05-07 11:49   ` James Pike
@ 2008-05-11 14:40     ` Avi Kivity
  0 siblings, 0 replies; 5+ messages in thread
From: Avi Kivity @ 2008-05-11 14:40 UTC (permalink / raw)
  To: James Pike; +Cc: kvm-devel

James Pike wrote:
> Sorry that doesn't work.
>
> This does.
>

> --- kvm/configure    2008-05-02 19:20:13.000000000 +0800
> +++ kvm.new/configure    2008-05-07 19:34:28.000000000 +0800
> @@ -2,6 +2,7 @@
>  
>  prefix=/usr/local
>  kerneldir=/lib/modules/$(uname -r)/build
> +kernelsrcdir=/lib/modules/$(uname -r)/source
>  cc=gcc
>  ld=ld
>  objcopy=objcopy

I don't think there is a guarantee that /source will be present, only 
/build.


-- 
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

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

end of thread, other threads:[~2008-05-11 14:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-07 10:40 kernel module won't compile when using seperate build dir James Pike
2008-05-07 11:25 ` Fwd: " James Pike
2008-05-07 11:49   ` James Pike
2008-05-11 14:40     ` Avi Kivity
2008-05-07 16:43 ` David Mair

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox