kvm: configure: allow building against pristine kernel source directory
[kvm-userspace.git] / configure
blob304973622da67e11ba2dbe844f2da627082ce993
1 #!/bin/bash
3 prefix=/usr/local
4 kerneldir=/lib/modules/$(uname -r)/build
5 want_module=1
6 qemu_cc=
7 qemu_cflags=
8 qemu_ldflags=
9 qemu_opts=
10 cross_prefix=
11 arch=`uname -m`
12 target_exec=
14 usage() {
15 cat <<-EOF
16 Usage: $0 [options]
18 Options include:
19 --arch=ARCH architecture to compile for ($arch)
20 --cross-prefix=PREFIX prefix for cross compile
21 --prefix=PREFIX where to install things ($prefix)
22 --with-patched-kernel don't use external module
23 --kerneldir=DIR kernel build directory ($kerneldir)
24 --qemu-cc=CC specify compiler for qemu (must be gcc-3.x)
25 --qemu-cflags=CFLAGS CFLAGS to add to qemu configuration
26 --qemu-ldflags=LDFLAGS LDFLAGS to add to qemu configuration
28 Any additional option is given to qemu's configure verbatim; including:
30 --disable-gcc-check don't insist on gcc-3.x
31 CAUTION: this will break running without kvm
32 EOF
33 cd qemu
34 ./configure --help | egrep "enable-|disable-" \
35 | grep -v user | grep -v system | grep -v kqemu | grep -v kvm \
36 | sed -e "s/^ / /g" \
37 | sed -e"s/ enable/enable/g" | sed -e "s/ disable/disable/g"
38 exit 1
41 while [[ "$1" = -* ]]; do
42 opt="$1"; shift
43 arg=
44 if [[ "$opt" = *=* ]]; then
45 arg="${opt#*=}"
46 opt="${opt%%=*}"
48 case "$opt" in
49 --prefix)
50 prefix="$arg"
52 --kerneldir)
53 kerneldir="$arg"
55 --with-patched-kernel)
56 want_module=
58 --qemu-cc)
59 qemu_cc="$arg"
61 --qemu-cflags)
62 qemu_cflags="$arg"
64 --qemu-ldflags)
65 qemu_ldflags="$arg"
67 --arch)
68 arch="$arg"
70 --cross-prefix)
71 cross_prefix="$arg"
73 --help)
74 usage
77 qemu_opts="$qemu_opts $opt"
79 esac
80 done
83 #set kenel directory
84 libkvm_kerneldir="$kerneldir"
85 if (( want_module )); then
86 libkvm_kerneldir=$(readlink -f kernel)
89 #if arch is an x86 arch set to i386
90 if [[ $arch = i?86 ]]; then
91 arch="i386"
94 #set parameters compiling
95 if [ "$arch" = "i386" -o "$arch" = "x86_64" ]; then
96 target_exec="x86_64-softmmu"
97 qemu_cflags="$qemu_cflags -DCONFIG_X86"
100 if [ "$arch" = "ia64" ]; then
101 target_exec="ia64-softmmu"
104 #configure user dir
105 (cd user; ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
106 --arch="$arch" \
107 ${cross_prefix:+"--cross-prefix=$cross_prefix"})
109 (cd libkvm; ln -sf "$kerneldir/include/asm-$arch" asm)
111 #configure qemu
112 (cd qemu; ./configure --target-list=$target_exec \
113 --disable-kqemu \
114 --extra-cflags="-I $PWD/../libkvm $qemu_cflags" \
115 --extra-ldflags="-L $PWD/../libkvm $qemu_ldflags" \
116 --enable-kvm --kernel-path="$libkvm_kerneldir" \
117 --prefix="$prefix" \
118 ${qemu_cc:+"--cc=$qemu_cc"} \
119 ${cross_prefix:+"--cross-prefix=$cross_prefix"} \
120 ${cross_prefix:+"--cpu=$arch"} $qemu_opts
121 ) || usage
124 cat <<EOF > config.mak
125 ARCH=$arch
126 PREFIX=$prefix
127 KERNELDIR=$kerneldir
128 WANT_MODULE=$want_module
129 CROSS_COMPILE=$cross_prefix