From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Graf Subject: [PATCH] Make KVM compile on split source/object kernel configurations Date: Mon, 15 Sep 2008 16:19:58 +0200 Message-ID: <48CE6F0E.6020601@suse.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020007030907060504060202" Cc: alexey.eremenko@qumranet.com To: kvm@vger.kernel.org Return-path: Received: from ns2.suse.de ([195.135.220.15]:33501 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752974AbYIOOUA (ORCPT ); Mon, 15 Sep 2008 10:20:00 -0400 Sender: kvm-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------020007030907060504060202 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit KVM as is assumes that the kernel obj dir and the kernel source dir are at the same location. This is true for most self-built vanilla kernels, but some distributions split these up (e.g. SUSE). To keep compatible and have users have a good experience on building KVM on any distribution, this patch attempts to rebuild the logic from the kernel Makefile as closely as possible. With it I successfully built KVM on a current SUSE system. Signed-off-by: Alexander Graf Please check and see if it breaks the build process for anyone else. Building with IA64 on SUSE-kernels is still broken due to similar but separate problems. --------------020007030907060504060202 Content-Type: text/x-patch; name="kvm-split-source-obj.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="kvm-split-source-obj.diff" diff --git a/configure b/configure index 3bb10ce..5e9cbab 100755 --- a/configure +++ b/configure @@ -1,6 +1,7 @@ #!/bin/bash prefix=/usr/local +kernelsourcedir= kerneldir=/lib/modules/$(uname -r)/build cc=gcc ld=ld @@ -102,6 +103,11 @@ if [ "$arch" = "powerpc" ]; then qemu_ldflags="$qemu_ldflags -L $PWD/libfdt" fi +# see if we have split build and source directories +if [ -d "$kerneldir/include2" ]; then + kernelsourcedir=${kerneldir%/*}/source +fi + #configure user dir (cd user; ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \ --arch="$arch" \ @@ -124,6 +130,7 @@ cat < config.mak ARCH=$arch PREFIX=$prefix KERNELDIR=$kerneldir +KERNELSOURCEDIR=$kernelsourcedir LIBKVM_KERNELDIR=$libkvm_kerneldir WANT_MODULE=$want_module CROSS_COMPILE=$cross_prefix diff --git a/kernel/Makefile b/kernel/Makefile index 3f5f6da..d2cf89c 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -36,7 +36,9 @@ hack-files = $(hack-files-$(ARCH_DIR)) all:: header-link prerequisite # include header priority 1) $LINUX 2) $KERNELDIR 3) include-compat $(MAKE) -C $(KERNELDIR) M=`pwd` \ - LINUXINCLUDE="-I`pwd`/include -Iinclude -Iarch/${ARCH_DIR}/include -I`pwd`/include-compat \ + LINUXINCLUDE="-I`pwd`/include -Iinclude \ + $(if $(KERNELSOURCEDIR),-Iinclude2 -I$(KERNELSOURCEDIR)/include) \ + -Iarch/${ARCH_DIR}/include -I`pwd`/include-compat \ -include include/linux/autoconf.h \ -include `pwd`/$(ARCH_DIR)/external-module-compat.h" "$$@" --------------020007030907060504060202--