kvm: qemu: work around dhclient brokenness
[kvm-userspace.git] / kernel / Makefile
blobe5f43a2ef0a9b82b4018ee9f061a6139ea90a306
1 include ../config.mak
3 ARCH_DIR = $(if $(filter $(ARCH),x86_64 i386),x86,$(ARCH))
4 ARCH_CONFIG := $(shell echo $(ARCH_DIR) | tr '[:lower:]' '[:upper:]')
6 KVERREL = $(patsubst /lib/modules/%/build,%,$(KERNELDIR))
8 DESTDIR=
10 MAKEFILE_PRE = $(ARCH_DIR)/Makefile.pre
12 INSTALLDIR = $(patsubst %/build,%/extra,$(KERNELDIR))
13 ORIGMODDIR = $(patsubst %/build,%/kernel,$(KERNELDIR))
15 rpmrelease = devel
17 LINUX = ../linux-2.6
19 version = $(shell cd $(LINUX); git describe)
21 _hack = mv $1 $1.orig && \
22 gawk -v version=$(version) -f hack-module.awk $1.orig \
23 | sed '/\#include/! s/\blapic\b/l_apic/g' > $1 && rm $1.orig
25 unifdef = mv $1 $1.orig && \
26 unifdef -DCONFIG_$(ARCH_CONFIG) $1.orig > $1; \
27 [ $$? -le 1 ] && rm $1.orig
29 hack = $(call _hack,$T/$(strip $1))
31 hack-files-x86 = kvm_main.c mmu.c vmx.c svm.c x86.c irq.h lapic.c i8254.c
32 hack-files-ia64 =
34 hack-files = $(hack-files-$(ARCH_DIR))
36 all:: header-link prerequisite
37 # include header priority 1) $LINUX 2) $KERNELDIR 3) include-compat
38 $(MAKE) -C $(KERNELDIR) M=`pwd` \
39 LINUXINCLUDE="-I`pwd`/include -Iinclude -I`pwd`/include-compat \
40 -include include/linux/autoconf.h \
41 -include `pwd`/$(ARCH_DIR)/external-module-compat.h"
42 "$$@"
44 sync: header-sync source-sync header-link
46 header-link:
47 rm -f include/asm
48 ln -sf asm-$(ARCH_DIR) include/asm
49 ln -sf asm-$(ARCH_DIR) include-compat/asm
51 T = $(subst -sync,,$@)-tmp
53 header-sync:
54 rm -rf $T
55 rsync -R \
56 "$(LINUX)"/./include/linux/kvm*.h \
57 "$(LINUX)"/./include/asm-*/kvm*.h \
58 $T/
60 set -e && for i in $(find $T -name '*.h'); do \
61 $(call unifdef,$$i); done
62 $(call hack, include/linux/kvm.h)
63 set -e && for i in $$(find $T -type f -printf '%P '); \
64 do mkdir -p $$(dirname $$i); cmp -s $$i $T/$$i || cp $T/$$i $$i; done
65 rm -rf $T
67 source-sync:
68 rm -rf $T
69 rsync --exclude='*.mod.c' -R \
70 "$(LINUX)"/arch/$(ARCH_DIR)/kvm/./*.[cSh] \
71 "$(LINUX)"/virt/kvm/./*.[cSh] \
72 $T/
74 set -e && for i in $(find $T -name '*.c'); do \
75 $(call unifdef,$$i); done
77 for i in $(hack-files); \
78 do $(call hack, $$i); done
80 for i in $$(find $T -type f -printf '%P '); \
81 do cmp -s $(ARCH_DIR)/$$i $T/$$i || cp $T/$$i $(ARCH_DIR)/$$i; done
82 rm -rf $T
84 include $(MAKEFILE_PRE)
86 install:
87 mkdir -p $(DESTDIR)/$(INSTALLDIR)
88 cp $(ARCH_DIR)/*.ko $(DESTDIR)/$(INSTALLDIR)
89 for i in $(ORIGMODDIR)/drivers/kvm/*.ko \
90 $(ORIGMODDIR)/arch/$(ARCH_DIR)/kvm/*.ko; do \
91 if [ -f "$$i" ]; then mv "$$i" "$$i.orig"; fi; \
92 done
93 /sbin/depmod -a
95 tmpspec = .tmp.kvm-kmod.spec
97 rpm-topdir := $$(pwd)/../rpmtop
99 RPMDIR = $(rpm-topdir)/RPMS
101 rpm: all
102 mkdir -p $(rpm-topdir)/BUILD $(RPMDIR)/$$(uname -i)
103 sed 's/^Release:.*/Release: $(rpmrelease)/; s/^%define kverrel.*/%define kverrel $(KVERREL)/' \
104 kvm-kmod.spec > $(tmpspec)
105 rpmbuild --define="kverrel $(KVERREL)" \
106 --define="objdir $$(pwd)/$(ARCH_DIR)" \
107 --define="_rpmdir $(RPMDIR)" \
108 --define="_topdir $(rpm-topdir)" \
109 -bb $(tmpspec)
111 clean:
112 $(MAKE) -C $(KERNELDIR) M=`pwd` $@