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
))
10 MAKEFILE_PRE
= $(ARCH_DIR
)/Makefile.pre
12 INSTALLDIR
= $(patsubst %/build
,%/extra
,$(KERNELDIR
))
13 ORIGMODDIR
= $(patsubst %/build
,%/kernel
,$(KERNELDIR
))
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
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"
44 sync
: header-sync source-sync header-link
48 ln
-sf asm-
$(ARCH_DIR
) include/asm
49 ln
-sf asm-
$(ARCH_DIR
) include-compat
/asm
51 T
= $(subst -sync
,,$@
)-tmp
56 "$(LINUX)"/.
/include/linux
/kvm
*.h \
57 "$(LINUX)"/.
/include/asm-
*/kvm
*.h \
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
69 rsync
--exclude
='*.mod.c' -R \
70 "$(LINUX)"/arch
/$(ARCH_DIR
)/kvm
/.
/*.
[cSh
] \
71 "$(LINUX)"/virt
/kvm
/.
/*.
[cSh
] \
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
84 include $(MAKEFILE_PRE
)
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
; \
95 tmpspec
= .tmp.kvm-kmod.spec
97 rpm-topdir
:= $$(pwd
)/..
/rpmtop
99 RPMDIR
= $(rpm-topdir
)/RPMS
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)" \
112 $(MAKE
) -C
$(KERNELDIR
) M
=`pwd` $@