kvm: user: consolidate $arch tests and allow $arch to be "<arch>-<processor>"
[qemu-kvm/fedora.git] / kvm / configure
blob1a279e7a3197c73615bb40565e07d0cf521b5a72
1 #!/bin/bash
3 prefix=/usr/local
4 kernelsourcedir=
5 kerneldir=/lib/modules/$(uname -r)/build
6 cc=gcc
7 ld=ld
8 objcopy=objcopy
9 want_module=1
10 qemu_cflags=
11 qemu_ldflags=
12 kvm_trace=
13 qemu_opts=()
14 cross_prefix=
15 arch=`uname -m`
16 target_exec=
18 usage() {
19 cat <<-EOF
20 Usage: $0 [options]
22 Options include:
23 --arch=ARCH architecture to compile for ($arch)
24 --cross-prefix=PREFIX prefix for cross compile
25 --prefix=PREFIX where to install things ($prefix)
26 --with-patched-kernel don't use external module
27 --with-kvm-trace Enable kvm_trace
28 --kerneldir=DIR kernel build directory ($kerneldir)
29 --qemu-cflags=CFLAGS CFLAGS to add to qemu configuration
30 --qemu-ldflags=LDFLAGS LDFLAGS to add to qemu configuration
32 Any additional option is given to qemu's configure verbatim; including:
34 EOF
35 cd qemu
36 ./configure --help | egrep "enable-|disable-" \
37 | grep -v user | grep -v system | grep -v kqemu | grep -v kvm \
38 | sed -e "s/^ / /g" \
39 | sed -e"s/ enable/enable/g" | sed -e "s/ disable/disable/g"
40 exit 1
43 while [[ "$1" = -* ]]; do
44 opt="$1"; shift
45 arg=
46 hasarg=
47 if [[ "$opt" = *=* ]]; then
48 arg="${opt#*=}"
49 opt="${opt%%=*}"
50 hasarg=1
52 case "$opt" in
53 --prefix)
54 prefix="$arg"
56 --kerneldir)
57 kerneldir="$arg"
59 --with-patched-kernel)
60 want_module=
62 --with-kvm-trace)
63 kvm_trace=y
65 --qemu-cflags)
66 qemu_cflags="$arg"
68 --qemu-ldflags)
69 qemu_ldflags="$arg"
71 --arch)
72 arch="$arg"
74 --cross-prefix)
75 cross_prefix="$arg"
77 --help)
78 usage
81 qemu_opts=("${qemu_opts[@]}" "$opt${hasarg:+=$arg}")
83 esac
84 done
87 #set kenel directory
88 libkvm_kerneldir=$(readlink -f kernel)
90 case $arch in
91 i?86*|x86_64*)
92 arch=${arch/#i?86/i386}
93 target_exec="x86_64-softmmu"
94 qemu_cflags="$qemu_cflags -DCONFIG_X86"
96 ia64*)
97 target_exec="ia64-softmmu"
99 powerpc*)
100 target_exec="ppcemb-softmmu"
101 qemu_cflags="$qemu_cflags -I $PWD/libfdt"
102 qemu_ldflags="$qemu_ldflags -L $PWD/libfdt"
104 esac
106 # see if we have split build and source directories
107 if [ -d "$kerneldir/include2" ]; then
108 kernelsourcedir=${kerneldir%/*}/source
111 #configure user dir
112 (cd user; ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
113 --arch="$arch" \
114 ${cross_prefix:+"--cross-prefix=$cross_prefix"})
116 #configure qemu
117 (cd qemu; ./configure --target-list=$target_exec \
118 --disable-kqemu \
119 --disable-gcc-check \
120 --extra-cflags="-I $PWD/../libkvm $qemu_cflags" \
121 --extra-ldflags="-L $PWD/../libkvm $qemu_ldflags" \
122 --kernel-path="$libkvm_kerneldir" \
123 --prefix="$prefix" \
124 ${cross_prefix:+"--cross-prefix=$cross_prefix"} \
125 ${cross_prefix:+"--cpu=$arch"} "${qemu_opts[@]}"
126 ) || usage
129 cat <<EOF > config.mak
130 ARCH=$arch
131 PREFIX=$prefix
132 KERNELDIR=$kerneldir
133 KERNELSOURCEDIR=$kernelsourcedir
134 LIBKVM_KERNELDIR=$libkvm_kerneldir
135 WANT_MODULE=$want_module
136 CROSS_COMPILE=$cross_prefix
137 CC=$cross_prefix$cc
138 LD=$cross_prefix$ld
139 OBJCOPY=$cross_prefix$objcopy
142 cat <<EOF > kernel/config.kbuild
143 EXT_CONFIG_KVM_TRACE=$kvm_trace